{"version":3,"sources":["components/Panel/panel.module.scss","screens/Home/components/MainSection/mainSection.module.scss","screens/ConfirmOrder/components/Card/card.module.scss","components/Field/field.module.scss","components/Card/card.module.scss","screens/Success/success.module.scss","screens/Failure/failure.module.scss","screens/layouts/modal.module.scss","components/ChangeLanguage/Arrow.svg","components/Checkbox/checkbox.module.scss","components/Switcher/switcher.module.scss","screens/Home/components/Question/question.module.scss","screens/NoMatchPage/nomatchpage.module.scss","components/Button/button.module.scss","screens/Home/components/QuestionsSection/questionsSection.module.scss","components/Header/header.module.scss","components/Forms/number-approved.svg","components/Panel/spoiler-btn.svg","components/Input/input.module.scss","components/ChangeLanguage/Rus.svg","components/ChangeLanguage/Eng.svg","components/ChangeLanguage/Zh.svg","components/Header/logo.svg","components/Header/list.svg","components/Footer/logo.svg","components/MultiSelect/arrow_down.svg","screens/Home/img/people.svg","screens/Home/img/step1.svg","screens/Home/img/step2.svg","screens/Home/img/step3.svg","screens/Home/img/step4.svg","screens/Order/order.module.scss","screens/Orders/orders.module.scss","screens/EducationalLicense/icon_license.png","screens/EducationalLicense/icon_license2.png","screens/LicenseRegistry/icon_registry.png","screens/layouts/ErrorBoundary.module.scss","screens/layouts/close.svg","components/Footer/footer.module.scss","screens/Politics/politics.module.scss","components/Forms/Passport.js","components/Forms/PatientForm.js","models/ProductModel.js","models/PlaceModel.js","models/OrderModel.js","api/getGeneralApiProblem.js","api/api.js","models/OrderStore.js","models/PatientModel.js","models/PatientStore.js","models/PlaceStore.js","context/socket.js","models/UserModel.js","i18n/i18n.js","models/UserStore.js","models/ToastModel.js","models/ToastStore.js","models/ReferralModel.js","models/ReferralStore.js","models/ProductStore.js","models/RootStore.js","models/RootStoreContext.js","models/storage.js","models/setupRootStore.js","models/withEnvironment.js","components/Checkbox/Checkbox.js","components/Forms/ApproveNumberForm.js","components/Forms/ChooseTestPlace.js","hoc/FieldEnhancer.js","components/Panel/Panel.js","components/Switcher/Switcher.js","components/Forms/validattionCnfg.js","components/Forms/ScrollToError.js","components/Forms/MainForm.js","components/Forms/PayChoose.js","components/Button/Button.js","components/Field/Field.js","components/Input/Input.js","components/Card/Card.js","components/ChangeLanguage/ChangeLanguage.js","components/Header/Header.js","components/Attention/Attention.js","components/Footer/Footer.js","components/Toast/Toast.js","components/Select/Select.js","components/MultiSelect/MultiSelect.jsx","screens/Home/components/MainSection/MainSection.js","screens/Home/components/ServicesSection/ServicesSection.js","screens/Home/components/StepsSection/StepsSection.jsx","screens/Home/components/Question/Question.jsx","screens/Home/components/QuestionsSection/QuestionsSection.jsx","screens/Home/Home.js","screens/Orders/Table.js","screens/Orders/Orders.js","screens/Order/Order.js","screens/Politics/PrivacyPolicyRU.js","screens/Politics/PrivacyPolicyENG.js","screens/Politics/PrivacyPolicy.js","screens/Politics/TermOfUseRU.js","screens/Politics/TermOfUseENG.js","screens/Politics/TermOfUse.js","screens/ConfirmOrder/components/Card/PatientCard.js","screens/ConfirmOrder/Order.js","screens/NoMatchPage/NoMatchPage.js","screens/Success/Success.js","screens/Failure/Failure.js","screens/EducationalLicense/EducationalLicense.js","screens/LicenseRegistry/LicenseRegistry.js","routes/Routes.js","screens/layouts/ErrorBoundary.js","screens/layouts/DefaultLayout.js","routes/Route.js","App.js","serviceWorker.js","index.js","screens/Home/components/StepsSection/stepsSection.module.scss","screens/ConfirmOrder/order.module.scss","components/Forms/form.module.scss","screens/Home/components/ServicesSection/servicesSection.module.scss","screens/Home/home.module.scss","components/ChangeLanguage/change-language.module.scss","components/Forms/main-form.module.scss","components/Attention/attention.module.scss"],"names":["module","exports","documentTypes","PASSPORT_RUSSIA","PASSPORT_INTER_RUSSIA","RESIDENCE","BIRTH_CERTIFICATE","FOREIGN_PASSPORT","documentAttributesShow","series","num","issueDate","issuedBy","snils","Passport","props","EnhancedField","EnhancedSelect","index","style","t","useTranslation","values","useFormikContext","options","Object","keys","map","key","label","value","getDocName","find","patients","documentTypeId","className","coll","component","name","i18","attribute","mask","FormSpy","orderTypes","initialValuesPatient","setFieldValue","React","useEffect","product","firstName","lastName","engFromCyrillic","cyrillicToTranslit","transform","toUpperCase","PatientForm","withTranslation","EnhancedMultiSelect","products","i18n","useState","setOrderTypes","genderOptions","productsValues","language","nameEn","id","render","arrayHelpers","Fragment","_item","patientForm","patientTitle","cn","row","autoComplete","placeholder","disabled","filter","Boolean","length","o","noOptionsMessage","btnsWrapper","onClick","replace","uitype","remove","push","ProductModel","types","model","identifier","string","price","number","nameForCheck","samplingCode","maybeNull","samplingPrice","productCode","PlaceModel","onlyTerminal","boolean","infoRus","maybe","infoEng","infoFullRus","infoFullEng","array","reference","show","onlyOnlinePayment","cloudPayments","cloudPublicId","robokassa","OrderModel","paid","place","late","createdAt","optional","paymentMethod","enumeration","sum","views","self","getRoot","patientStore","patient","order","getGeneralApiProblem","response","problem","kind","temporary","data","status","message","Api","this","setup","storage","localStorage","getItem","token","JSON","parse","userStore","user","jwt","apisauce","create","baseURL","process","timeout","headers","Accept","Authorization","a","get","err","username","email","post","ok","params","result","convertOrder","raw","toString","String","created_at","rawOrder","resultOrder","rawOrders","resultOrders","orders","convertReferral","referralId","patientRaw","rawReferrals","resultReferrals","referrals","resultReferral","referral","convertPlace","Robokassa","CloudPayments","rawPlaces","resultPlaces","places","OrderStore","pending","error","currentOrder","safeReference","actions","afterCreate","setCurrentOrder","d","Date","toISOString","add","flow","createOrder","addOrderPatients","toastStore","addError","getOrders","rememberCurrentOrder","getOrderById","isPresent","totalForPatientWithDiscount","patientsProducts","countSamplings","countDiscountForPatient","discount","PatientModel","middleName","firstNameLastNameEng","dateOfBirth","passport","address","workOrStudyPlace","flightNumber","sex","referralStore","PatientStore","clean","patientIndex","findIndex","p","PlaceStore","getPlaces","savePlaces","forEach","productStore","placesModels","c","connection","socketio","connect","auth","socket","SocketContext","createContext","UserModel","isAuthorized","getLanguage","window","navigator","slice","toLowerCase","resources","en","translation","eng","ru","rus","zh","use","initReactI18next","init","lng","interpolation","escapeValue","UserStore","sucess","checkMe","setLanguage","LogRocket","identify","setItem","sendCode","addSuccess","checkCode","smsCode","clearUser","getUser","ToastModel","type","ToastStore","toasts","pop","success","successModel","errorModel","ReferralModel","ReferralStore","getRefferals","getReferralById","addPatientReferral","addReferrallsForOrder","getReferralsByOrderId","orderId","ProductStore","item","resolved","resolveIdentifier","assign","RootStoreModel","orderStore","placeStore","RootStore","RootStoreContext","RootStoreProvider","Provider","useStores","useContext","load","almostThere","save","stringify","setupRootStore","rootStore","setupLogRocketReact","Sentry","dsn","integrations","Integrations","BrowserTracing","tracesSampleRate","console","log","onSnapshot","snapshot","Checkbox","onChange","checked","children","container","checkbox","checkmark","STATUSES","ApproveNumberForm","observer","phoneNumberApproved","timer","changeTimer","phoneNumber","changePhoneNumber","changeEmail","code","changeCode","changeStatus","iamAgree","changeIamAgree","emailExist","changeEmailExist","codeValue","onChangeEmail","timerId","setInterval","val","clearInterval","onChangeCode","Number","parseInt","resetNumber","renderChangeNumber","wrap","top","header","phoneNumb","flags","labels","i18next","emailWrap","noEmailText","labelClassName","useMemo","txt","isDisabled","undefined","test","codeFilingWrapper","enterCodePhone","sendAgainBtn","sendAgainTxt","changeNumber","numbeApprovedTxt","src","numberApproved","approveTxt","e","target","link","open","ChooseTestPlace","numberRef","center","color","height","width","visible","placesToShow","sort","b","cardsWrapper","Card","choosed","current","scrollIntoView","FieldEnhancer","Component","field","form","componentProps","isError","getIn","touched","errors","onBlur","setFieldTouched","Panel","title","shouldBeClosed","withoutSpoiler","toggleShow","s","panel","panelHead","panelTitle","panelSpoiler","spoilerBtn","panelContent","panelContentShow","PAY_METHODS","Switcher","changeChoosen","classNameGen","switchEl","switcher","ENG_LETTERS_REG_EXP","isRequired","docId","fieldName","validateDate","split","day","month","year","validattionCnfg","yup","oneOf","required","min","of","validProducts","max","when","is","then","matches","ScrollToError","firstError","el","document","getElementsByName","block","behavior","MainForm","useParams","offline","placeId","productId","redirect","setRedirect","placePending","isPending","formikRef","useRef","createRef","passportNumber","passportAuthority","initialValues","Input","Select","MultiSelect","paymentTouched","setPaymentTouched","onSubmit","resetForm","body","getCn","isOk","step","getPlaceName","validationSchema","validateOnChange","validateOnBlur","enableReinitialize","innerRef","r","handleSubmit","isValid","isSubmitting","productsForPlace","useCallback","productCodes","i","indexOf","renderSteps","steps","testPlaceId","main","head","headInner","ref","onNextStep","dirty","to","PayChoose","selectedProducts","flat","totalPriceWithDiscount","reduce","acc","cur","totalDiscount","totalPriceByPatient","wrapper","payChoose","mgRight50","onlyOffline","econom","input","Button","btn","Field","cstmSpan","cloneElement","cmp","error_msg","showInfoFull","placeName","placeInfo","placeInfoFull","card","subTextPlace","time","dangerouslySetInnerHTML","__html","marked","fullInfo","LANGS","flag","Rus","langFlag","Eng","Zh","ChangeLanguage","currentLang","isOpen","changeIsOpen","langRef","handleClick","contains","lang","langList","changeLang","addEventListener","removeEventListener","langName","changeLanguage","Arrow","rotate","langPicker","Header","changeModal","headerListRef","history","useHistory","showUserMenu","toggleShowUserMenu","location","useLocation","headerWrapper","logo","alt","mdV","leftPart","links","exact","rightPart","arrowImg","subMenu","subMenu_item","login","smV","smVTop","List","list","Attention","attention","attentionWarning","notemperatureLeft","before","Footer","footer","href","copy","Toast","showMessage","toast","Error","colourStyles","control","border","display","valueContainer","styles","padding","cacheOptions","isMulti","setIsOpen","selectedOptions","setSelectedOptions","countSelected","setCountSelected","optionsIds","selectedOptionsIds","every","includes","selected","isEmptyArray","cleanValues","onOptionClicked","newState","currentPlaceholder","isSelected","Label","onClickAway","DropDownContainer","state","DropDownHeader","DropDownList","NoOptionsMessage","DropDownListContainer","option","ListItem","Tags","entries","v","Tag","TitleTag","CloseTag","styled","arrowDown","calc","x","y","innerHeight","innerWidth","trans","MainSection","useSpring","xys","config","mass","tension","friction","set","isHover","setIsHover","userAgent","styleHome","onMouseOver","onMouseLeave","div","onMouseMove","clientX","clientY","interpolate","peopleImg","ServicesSection","xmlns","viewBox","fill","StepsSection","step1Img","step2Img","step3Img","step4Img","Question","isActive","setActive","question","answer","QuestionsSection","questions","Home","Table","containerTable","table","topBorder","pdLeft","trWrapper","tableItem","getpaymentMethod","isPaid","getPaid","Orders","loading","setLoading","loadData","customLoading","tableMain","Order","PrivacyPolicyRU","section","origin","PrivacyPolicyENG","PrivacyPolicy","curLanguage","changeCurLanguage","TermOfUseRU","TermOfUseEng","TermOfUse","NEED_PROPS","humanize","ProductListItem","PatientProducts","PatientCard","pickedArray","pickAndSortProps","info","infoElement","infoKey","infoValue","formattedDate","date","getMonth","getDate","getFullYear","ConfirmOrder","mounted","scrollTo","on","loader","currentProduct","currentProducts","isOnline","redirectToPay","pay","getLink","paymentUrl","Helmet","mainInner","placeTestTitle","patientsTitle","patientsList","size","itemsForCheck","quantity","itemsForCheckUniq","curr","dublicates","idx","items","amount","measurementUnit","vat","method","object","itemsPrice","alert","CustomerReceipt","Items","taxationSystem","amounts","electronic","calculationPlace","comment","description","invoiceId","publicId","NoMatchPage","Success","urlParams","URLSearchParams","search","InvId","OutSum","Failure","EducationalLicense","flexDirection","gap","alignItems","license","fontSize","license2","LicenseRegistry","icon","Routes","path","isPrivate","ErrorBoundary","hasError","try","setState","captureException","prevProps","pathname","count","DefaultLayout","MODALS_COMPONENTS","LOG_IN","madalInner","madalHead","PRIVACY","TERMOFUSE","EDUCATIONAL_LICENSE","LICENSE_REGISTRY","modal","ModalComponent","ariaHideApp","onRequestClose","close","RouteWrapper","rest","authenticated","content","App","setRootStore","hostname","match","ReactDOM","StrictMode","getElementById","serviceWorker","ready","registration","unregister","catch"],"mappings":"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","file":"static/js/main.c5fb5b3b.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"panel\":\"panel_panel__3lgOD\",\"panelContent\":\"panel_panelContent__2UwZR\",\"panelContentShow\":\"panel_panelContentShow__2SO9W\",\"panelTitle\":\"panel_panelTitle__3ldeY\",\"panelHead\":\"panel_panelHead__1tPv3\",\"panelSpoiler\":\"panel_panelSpoiler__2mCAY\",\"panelSpoiler--hide\":\"panel_panelSpoiler--hide__2MHzI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main-section\":\"mainSection_main-section__1z_Gb\",\"mobile-logo\":\"mainSection_mobile-logo__1rIX1\",\"col-about\":\"mainSection_col-about__3sjK_\",\"col-img\":\"mainSection_col-img__rEJsy\",\"m-sub-title\":\"mainSection_m-sub-title__2uE6K\",\"m-row\":\"mainSection_m-row__1rJL3\",\"hover\":\"mainSection_hover__1JyMx\",\"hover-text\":\"mainSection_hover-text__3vPFT\",\"hidden\":\"mainSection_hidden__2qYqK\",\"visible\":\"mainSection_visible__3y7kd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"infoElement\":\"card_infoElement__M05fO\",\"product\":\"card_product__2tq1S\",\"infoKey\":\"card_infoKey__ChZza\",\"title\":\"card_title__1UyFK\",\"card\":\"card_card__2jNI0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"error_msg\":\"field_error_msg__2N1TL\",\"label--error\":\"field_label--error___jWjg\",\"placeholder\":\"field_placeholder__1-YNb\",\"cmp\":\"field_cmp__1jQFv\",\"cmp--disabled\":\"field_cmp--disabled__2HKrN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"card\":\"card_card__2l2sh\",\"card--choosed\":\"card_card--choosed__3XDPv\",\"place\":\"card_place__rCbbX\",\"subTextPlace\":\"card_subTextPlace__qnJMD\",\"time\":\"card_time__3ZVtZ\",\"fullInfo\":\"card_fullInfo__2_kFB\",\"moreInfo2\":\"card_moreInfo2__3u_g4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"success-inner\":\"success_success-inner__DG7fE\",\"success-title\":\"success_success-title__3jO-v\",\"success-info\":\"success_success-info__2fPnL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"failure-inner\":\"failure_failure-inner__2w913\",\"failure-title\":\"failure_failure-title__2QZRj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"close\":\"modal_close__3WIgc\",\"loginModal\":\"modal_loginModal__1f_Yl\",\"madalHead\":\"modal_madalHead___fzw_\",\"madalInner\":\"modal_madalInner__OQ8hp\",\"EDUCATIONAL_LICENSE\":\"modal_EDUCATIONAL_LICENSE__KI172\",\"LICENSE_REGISTRY\":\"modal_LICENSE_REGISTRY__2H4Ov\",\"TERMOFUSE\":\"modal_TERMOFUSE__3RFJ1\",\"PRIVACY\":\"modal_PRIVACY__3fz2e\",\"LOG_IN\":\"modal_LOG_IN__A4jIn\"};","module.exports = __webpack_public_path__ + \"static/media/Arrow.3bbc6a88.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"checkbox_container__1yLjj\",\"checkmark\":\"checkbox_checkmark__2Rvo_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"switcher\":\"switcher_switcher__nXCMB\",\"switchEl\":\"switcher_switchEl__k06xU\",\"switchEl--choosen\":\"switcher_switchEl--choosen__2M1Mv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"questions__head\":\"question_questions__head___xs0D\",\"questions__body-answer\":\"question_questions__body-answer__146jE\",\"question_open\":\"question_question_open__33LMn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"page-404\":\"nomatchpage_page-404__2bcHf\",\"page-404__m\":\"nomatchpage_page-404__m__eT3lA\",\"page-404__text\":\"nomatchpage_page-404__text__f2Hs-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btn\":\"button_btn__3i5NC\",\"btn--gray\":\"button_btn--gray__3K9HQ\",\"btn--green\":\"button_btn--green__1YcAW\",\"btn--disabled\":\"button_btn--disabled__1KbCs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"questions\":\"questionsSection_questions__3NS31\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header_header__3fn4i\",\"headerWrapper\":\"header_headerWrapper__gwXTz\",\"links\":\"header_links__3ZOig\",\"link\":\"header_link__3Qf43\",\"link_active\":\"header_link_active__5FK9T\",\"leftPart\":\"header_leftPart__x0MOZ\",\"rightPart\":\"header_rightPart__1o679\",\"login\":\"header_login__1w_uw\",\"logo\":\"header_logo__14tHM\",\"mdV\":\"header_mdV__2EJWc\",\"smV\":\"header_smV__1vv98\",\"list\":\"header_list__xbXjj\",\"rotate\":\"header_rotate__zvtaO\",\"linkActive\":\"header_linkActive__rEb66\",\"number\":\"header_number__2GaAg\",\"user\":\"header_user__22wDI\",\"subMenu\":\"header_subMenu__PhUmu\",\"subMenu_item\":\"header_subMenu_item__1I2FB\",\"arrowImg\":\"header_arrowImg__14d39\",\"arrowImg--rotate\":\"header_arrowImg--rotate__1pffr\",\"smVTop\":\"header_smVTop__7097a\"};","module.exports = __webpack_public_path__ + \"static/media/number-approved.5ca84c11.svg\";","module.exports = __webpack_public_path__ + \"static/media/spoiler-btn.78fdaa8f.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"input_input__2NaO-\"};","module.exports = __webpack_public_path__ + \"static/media/Rus.baae2e6c.svg\";","module.exports = __webpack_public_path__ + \"static/media/Eng.18d7d24b.svg\";","module.exports = __webpack_public_path__ + \"static/media/Zh.51cb78b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo.05189b21.svg\";","module.exports = __webpack_public_path__ + \"static/media/list.cff06588.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo.05189b21.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow_down.324c5748.svg\";","module.exports = __webpack_public_path__ + \"static/media/people.8f506607.svg\";","module.exports = __webpack_public_path__ + \"static/media/step1.de39abfd.svg\";","module.exports = __webpack_public_path__ + \"static/media/step2.79df3e4b.svg\";","module.exports = __webpack_public_path__ + \"static/media/step3.b5998a9e.svg\";","module.exports = __webpack_public_path__ + \"static/media/step4.d429a234.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mainInner\":\"order_mainInner__3Jf80\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"orders_main__1f9AG\",\"tableMain\":\"orders_tableMain__jGRLK\",\"containerTable\":\"orders_containerTable__1tXEn\",\"table\":\"orders_table__3dKad\",\"title\":\"orders_title__1o3DD\",\"tableItem\":\"orders_tableItem__AqlG9\",\"tableItem--offline\":\"orders_tableItem--offline__3HrbS\",\"tableItem--online\":\"orders_tableItem--online__iB_7p\",\"tableItem--paid\":\"orders_tableItem--paid__X-rd9\",\"tableItem--pay\":\"orders_tableItem--pay__3jx1q\",\"tableItem--unpaid\":\"orders_tableItem--unpaid__2r-Pz\",\"trWrapper\":\"orders_trWrapper__1vMgM\",\"pdLeft\":\"orders_pdLeft__1D7sa\",\"input\":\"orders_input__3vnhL\",\"topBorder\":\"orders_topBorder__3_B8p\",\"tableWrapper\":\"orders_tableWrapper__3O5uG\"};","module.exports = __webpack_public_path__ + \"static/media/icon_license.645e48cb.png\";","module.exports = __webpack_public_path__ + \"static/media/icon_license2.1720e8b3.png\";","module.exports = __webpack_public_path__ + \"static/media/icon_registry.47badf7c.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ErrorBoundary_container__1pnLz\"};","module.exports = __webpack_public_path__ + \"static/media/close.dd738f61.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"footer_footer__11BbJ\",\"row\":\"footer_row__1mMwO\",\"lang-col\":\"footer_lang-col__1ifxd\",\"logo-col\":\"footer_logo-col__3Ornh\",\"main-col\":\"footer_main-col__1VCxM\",\"tt\":\"footer_tt__2XzSd\",\"nav\":\"footer_nav__3RXd3\",\"icon-phone\":\"footer_icon-phone__16wQL\",\"icon-envelope\":\"footer_icon-envelope__25LIz\",\"copy\":\"footer_copy__2_NRg\",\"nav-info\":\"footer_nav-info__1_VAA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"section\":\"politics_section__3BbGv\",\"wrap\":\"politics_wrap__2XP09\"};","/* eslint-disable no-undef */\nimport React from \"react\";\nimport { Field } from \"formik\";\nimport { useTranslation } from \"react-i18next\";\nimport { useFormikContext } from \"formik\";\n\nexport const documentTypes = {\n PASSPORT_RUSSIA: 1,\n PASSPORT_INTER_RUSSIA: 2,\n RESIDENCE: 7,\n BIRTH_CERTIFICATE: 9,\n FOREIGN_PASSPORT: 10,\n};\n\nexport const documentAttributesShow = {\n PASSPORT_RUSSIA: {\n series: true,\n num: true,\n issueDate: true,\n issuedBy: true,\n snils: true,\n },\n PASSPORT_INTER_RUSSIA: {\n series: true,\n num: true,\n issueDate: true,\n issuedBy: true,\n snils: true,\n },\n RESIDENCE: {\n series: true,\n num: true,\n issueDate: true,\n issuedBy: false\n },\n BIRTH_CERTIFICATE: {\n series: true,\n num: true,\n issueDate: true,\n issuedBy: true,\n snils: true,\n },\n FOREIGN_PASSPORT: {\n series: false,\n num: true,\n issueDate: true,\n issuedBy: false,\n },\n};\n\nexport const getDocNameById = (id) => {\n return Object.keys(documentTypes).find(\n (key) =>\n documentTypes[key] === +id,\n );\n};\n\nexport const Passport = (props) => {\n const { EnhancedField, EnhancedSelect, index, style } = props;\n const { t } = useTranslation();\n const { values } = useFormikContext();\n\n const options = Object.keys(documentTypes).map((key) => {\n return { label: t(key), value: documentTypes[key] };\n });\n const documentAttributes = [\"series\", \"num\", \"issueDate\", \"issuedBy\", \"snils\"];\n\n const getDocName = () => {\n return Object.keys(documentTypes).find(\n (key) =>\n documentTypes[key] === +values.patients[index].documentTypeId,\n );\n };\n\n return (\n <>\n
\n \n
\n {documentAttributes.map(\n (attribute) => {\n const props = {};\n if (attribute === 'issueDate') props.mask = \"99.99.9999\";\n return (documentAttributesShow[getDocName()] &&\n documentAttributesShow[getDocName()][attribute] && (\n
\n \n
)\n )\n },\n )}\n \n );\n};\n","import React from \"react\";\nimport cn from \"classnames\";\nimport cyrillicToTranslit from \"cyrillic-to-translit-js\";\nimport { FieldArray, Field, useFormikContext } from \"formik\";\nimport { withTranslation } from \"react-i18next\";\n\nimport { Button } from \"..\";\nimport { Passport } from \"./Passport\"\n\nimport style from \"./form.module.scss\";\n\nconst FormSpy = ({ value, index, orderTypes, initialValuesPatient }) => {\n const { setFieldValue } = useFormikContext();\n\n React.useEffect(() => {\n setFieldValue(`patients.${index}.product`, initialValuesPatient.product || '');\n }, [index, initialValuesPatient.product, orderTypes, setFieldValue]);\n\n React.useEffect(() => {\n if (!value.firstName && !value.lastName) return;\n const engFromCyrillic = cyrillicToTranslit()\n .transform(`${value.firstName} ${value.lastName}`)\n .toUpperCase();\n setFieldValue(`patients.${index}.firstNameLastNameEng`, engFromCyrillic);\n }, [value.firstName, value.lastName, index, setFieldValue]);\n return null;\n};\n\nconst Form = ({\n patients = [],\n t,\n initialValuesPatient,\n EnhancedField,\n EnhancedSelect,\n EnhancedMultiSelect,\n products,\n i18n,\n}) => {\n const [orderTypes, setOrderTypes] = React.useState([]);\n const genderOptions = (t) => {\n return [\n { label: t(\"gender_man\"), value: \"man\" },\n { label: t(\"gender_woman\"), value: \"female\" },\n ];\n };\n React.useEffect(() => {\n const productsValues = products?.map((product) => ({\n label: i18n.language === \"en\" ? product.nameEn : product.name,\n value: product.id,\n }));\n setOrderTypes(productsValues || []);\n }, [i18n.language, products]);\n return (\n {\n return (\n \n {patients.map((_item, index) => (\n
\n \n
\n {t(\"patientNumber\")} №{index + 1}\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n o.value === initialValuesPatient.product?.[0]) : orderTypes}\n noOptionsMessage={() => t(\"noProducts\")}\n />\n
\n
\n
\n {index === 0 ? (\n \n arrayHelpers.replace(index, initialValuesPatient)\n }\n uitype=\"gray\"\n >\n {t(\"clear\")}\n \n ) : (\n arrayHelpers.remove(index)}\n uitype=\"gray\"\n >\n {t(\"delete\")}\n \n )}\n {index === patients.length - 1 && (\n arrayHelpers.push(initialValuesPatient)}\n >\n {t(\"addPatient\")}\n \n )}\n
\n \n ))}\n
\n );\n }}\n />\n );\n};\n\nexport const PatientForm = withTranslation()(Form);\n","import { types } from \"mobx-state-tree\";\n\nexport const ProductModel = types\n .model(\"Order\", {\n id: types.identifier,\n name: types.string,\n nameEn: types.string,\n price: types.number,\n nameForCheck: types.string,\n samplingCode: types.maybeNull(types.string),\n samplingPrice: 250,\n productCode: types.maybeNull(types.string),\n // place: types.array(types.reference(types.late(() => PlaceModel))),\n })\n","import { types } from \"mobx-state-tree\";\nimport { ProductModel } from \"./ProductModel\";\n\nexport const PlaceModel = types.model(\"Order\", {\n id: types.identifier,\n name: types.string,\n nameEn: types.string,\n onlyTerminal: types.boolean,\n infoRus: types.maybe(types.string, \"\"),\n infoEng: types.maybe(types.string, \"\"),\n infoFullRus: types.maybe(types.string, \"\"),\n infoFullEng: types.maybe(types.string, \"\"),\n products: types.array(types.reference(ProductModel)),\n show: types.boolean,\n onlyOnlinePayment: types.maybeNull(types.boolean),\n cloudPayments: types.maybeNull(types.boolean),\n cloudPublicId: types.maybeNull(types.string),\n robokassa: types.maybeNull(types.boolean),\n});\n// .actions(() => {})\n// .views(() => {});\n","import { types, getRoot } from \"mobx-state-tree\";\nimport { PlaceModel } from \"./PlaceModel\";\n\nexport const OrderModel = types\n .model(\"Order\", {\n id: types.identifier,\n paid: types.maybeNull(types.string, null),\n place: types.maybeNull(types.reference(types.late(() => PlaceModel))),\n createdAt: types.optional(types.string, \"\"),\n paymentMethod: types.enumeration(\"PAY_METHODS\", [\"online\", \"offline\"]),\n sum: types.number,\n })\n .views((self) => {\n return {\n get patients() {\n return getRoot(self).patientStore.patients.filter(\n (patient) => patient.order?.id === self.id,\n );\n },\n };\n });\n","export function getGeneralApiProblem(response) {\n switch (response.problem) {\n case \"CONNECTION_ERROR\":\n return { kind: \"cannot-connect\", temporary: true, data: response };\n case \"NETWORK_ERROR\":\n return { kind: \"cannot-connect\", temporary: true, data: response };\n case \"TIMEOUT_ERROR\":\n return { kind: \"timeout\", temporary: true, data: response };\n case \"SERVER_ERROR\":\n return { kind: \"server\" };\n case \"UNKNOWN_ERROR\":\n return { kind: \"unknown\", temporary: true, data: response };\n case \"CLIENT_ERROR\":\n switch (response.status) {\n case 401:\n return { kind: \"unauthorized\" };\n case 403:\n return { kind: \"forbidden\" };\n case 404:\n return { kind: \"not-found\" };\n case 429:\n return {\n kind: \"Too Many Requests\",\n data: \"Too Many Requests / Превышен лимит запросов\",\n };\n default:\n return { kind: \"rejected\", data: response.data.message };\n }\n case \"CANCEL_ERROR\":\n return null;\n default:\n return null;\n }\n}\n","import { create } from \"apisauce\";\nimport { getGeneralApiProblem } from \"./getGeneralApiProblem\";\nconst { REACT_APP_API } = process.env;\nexport class Api {\n constructor() {\n this.setup();\n }\n setup() {\n const storage = localStorage.getItem(\"root\");\n const token = storage ? JSON.parse(storage).userStore.user.jwt : null;\n this.apisauce = create({\n baseURL: REACT_APP_API,\n timeout: 10000,\n headers: {\n Accept: \"application/json\",\n Authorization: token ? `Bearer ${token}` : \"\",\n },\n });\n }\n\n\n async pay(id) {\n const response = await this.apisauce.get(`/orders/pay/${id}`);\n try {\n return { kind: \"ok\", data: response.data };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async getMe() {\n const response = await this.apisauce.get(\"/users/me\");\n\n try {\n return { kind: \"ok\", data: response };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async sendCode(username, email) {\n const response = await this.apisauce.post(\"/auth/sms-login\", {\n username,\n email: email,\n });\n\n if (!response.ok) {\n const problem = getGeneralApiProblem(response);\n if (problem) return problem;\n }\n\n try {\n return { kind: \"ok\", data: response };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async checkCode(params) {\n try {\n const result = await this.apisauce.post(\"/auth/sms-login\", params);\n if (result.ok) {\n return {\n kind: \"ok\",\n data: result.data,\n };\n }\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async createOrder(order) {\n const response = await this.apisauce.post(\"/orders\", order);\n\n if (!response.ok) {\n const problem = getGeneralApiProblem(response);\n if (problem) return problem;\n }\n\n const convertOrder = (raw) => {\n return {\n id: raw.id.toString(),\n place: String(raw.place),\n patients: raw.patients,\n paymentMethod: raw.paymentMethod,\n paid: raw.paid,\n createdAt: raw.created_at,\n sum: raw.sum,\n documentTypeId: raw.documentTypeId,\n series: raw.series,\n num: raw.num,\n issueDate: raw.issueDate,\n issuedBy: raw.issuedBy,\n };\n };\n\n const rawOrder = response.data;\n const resultOrder = convertOrder(rawOrder);\n\n try {\n return { kind: \"ok\", order: resultOrder };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async getOrders() {\n const response = await this.apisauce.get(\"/orders\");\n if (!response.ok) {\n const problem = getGeneralApiProblem(response);\n if (problem) return problem;\n }\n\n const convertOrder = (raw) => {\n return {\n id: raw.id.toString(),\n patients: raw.patients,\n paymentMethod: raw.paymentMethod,\n place: String(raw.place) || \"\",\n paid: raw.paid,\n createdAt: raw.created_at,\n sum: raw.sum,\n };\n };\n\n try {\n const rawOrders = response.data;\n const resultOrders = rawOrders.map(convertOrder);\n return { kind: \"ok\", orders: resultOrders };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async getOrderById(id) {\n const response = await this.apisauce.get(`/orders/${id}`);\n if (!response.ok) {\n const problem = getGeneralApiProblem(response);\n if (problem) return problem;\n }\n\n const convertOrder = (raw) => {\n return {\n id: raw.id.toString(),\n patients: raw.patients,\n paymentMethod: raw.paymentMethod,\n place: String(raw.place) || \"\",\n paid: raw.paid,\n createdAt: raw.created_at,\n sum: raw.sum,\n };\n };\n\n try {\n const rawOrders = response.data;\n const resultOrder = convertOrder(rawOrders);\n return { kind: \"ok\", order: resultOrder };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async getRefferals() {\n const response = await this.apisauce.get(\"/referrals\");\n\n if (!response.ok) {\n const problem = getGeneralApiProblem(response);\n if (problem) return problem;\n }\n\n const convertReferral = (raw) => {\n return {\n id: raw.id.toString(),\n referralId: raw.referralId.toString(),\n patient: raw.patient.id.toString(),\n patientRaw: raw.patient,\n };\n };\n\n try {\n const rawReferrals = response.data;\n const resultReferrals = rawReferrals.map(convertReferral);\n return { kind: \"ok\", referrals: resultReferrals };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async getReferralById(id) {\n const response = await this.apisauce.get(`/referrals/${id}`);\n\n if (!response.ok) {\n const problem = getGeneralApiProblem(response);\n if (problem) return problem;\n }\n const convertReferral = (raw) => {\n return {\n id: raw.id.toString(),\n referralId: raw.referralId.toString(),\n patient: raw.patient.toString(),\n };\n };\n\n try {\n const rawReferrals = response.data;\n const resultReferral = convertReferral(rawReferrals);\n return { kind: \"ok\", referral: resultReferral };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async getReferralsByOrderId(id) {\n const response = await this.apisauce.get(`orders/${id}/referrals`);\n\n if (!response.ok) {\n const problem = getGeneralApiProblem(response);\n if (problem) return problem;\n }\n const convertReferral = (raw) => {\n return {\n id: raw.id.toString(),\n referralId: raw.referralId.toString(),\n patient: raw.patient.toString(),\n };\n };\n\n const rawReferrals = response.data;\n // if (Array.isArray(rawReferrals) && !rawReferrals[0]) return\n\n try {\n const resultReferrals = rawReferrals.map(convertReferral);\n return { kind: \"ok\", referrals: resultReferrals };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n\n async getPlaces() {\n // make the api call\n const response = await this.apisauce.get(`/places`);\n\n // the typical ways to die when calling an api\n if (!response.ok) {\n const problem = getGeneralApiProblem(response);\n if (problem) return problem;\n }\n\n const convertPlace = (raw) => {\n return {\n id: raw.id.toString(),\n name: raw.name,\n nameEn: raw.nameEn,\n onlyTerminal: raw.onlyTerminal || false,\n infoRus: raw.infoRus || \"\",\n infoEng: raw.infoEng || \"\",\n infoFullRus: raw.infoFullRus || \"\",\n infoFullEng: raw.infoFullEng || \"\",\n products: raw.products,\n show: raw.show,\n onlyOnlinePayment: raw.onlyOnlinePayment,\n robokassa: raw.Robokassa,\n cloudPayments: raw.CloudPayments,\n cloudPublicId: raw.cloudPublicId,\n };\n };\n // transform the data into the format we are expecting\n try {\n const rawPlaces = response.data;\n const resultPlaces = rawPlaces.map(convertPlace);\n return { kind: \"ok\", places: resultPlaces };\n } catch (err) {\n return { kind: \"bad-data\", err };\n }\n }\n}\n","import { types, flow, getRoot } from \"mobx-state-tree\";\nimport { OrderModel } from \"./OrderModel\";\nimport { Api } from \"../api/api\";\n\nexport const OrderStore = types\n .model(\"OrderStore\", {\n orders: types.optional(types.array(OrderModel), []),\n pending: types.optional(types.boolean, true),\n error: types.optional(types.string, \"\"),\n currentOrder: types.maybeNull(types.safeReference(OrderModel, null)),\n })\n .actions((self) => ({\n afterCreate() {\n self.currentOrder = null;\n self.error = \"\";\n },\n setCurrentOrder(id) {\n self.currentOrder = id;\n },\n paid(id) {\n const d = new Date();\n self.orders = self.orders.map((order) =>\n order.id === id ? { ...order, paid: d.toISOString() } : order,\n );\n },\n add: flow(function* (order) {\n self.currentOrder = null;\n self.pending = true;\n const result = yield new Api().createOrder(order);\n if (result.kind === \"ok\") {\n getRoot(self).patientStore.addOrderPatients({ ...result.order });\n self.orders.push(OrderModel.create({ ...result.order }));\n self.setCurrentOrder(result.order.id);\n self.pending = false;\n } else {\n getRoot(self).toastStore.addError(result.kind);\n self.pending = false;\n }\n }),\n getOrders: flow(function* getOrders() {\n self.error = \"\";\n self.pending = true;\n const rememberCurrentOrder = self.currentOrder;\n const result = yield new Api().getOrders();\n if (result.kind === \"ok\") {\n self.orders = [];\n for (let order of result.orders) {\n getRoot(self).patientStore.addOrderPatients({ ...order });\n self.orders.push(OrderModel.create({ ...order }));\n }\n if (rememberCurrentOrder) self.setCurrentOrder(rememberCurrentOrder.id);\n } else {\n self.error = result.kind;\n }\n self.pending = false;\n }),\n getOrderById: flow(function* getOrderById(id) {\n // const currentOrderId = self.currentOrder?.id;\n self.error = \"\";\n let order = self.orders.find((order) => order.id === id);\n if (order && order.patients.length > 0) {\n // self.currentOrder = order.id;\n } else {\n self.pending = true;\n const result = yield new Api().getOrderById(id);\n if (result.kind === \"ok\") {\n const resultOrder = OrderModel.create({\n ...result.order,\n });\n const isPresent = self.orders.find((o) => o.id === id);\n if (isPresent)\n self.orders = self.orders.map((order) =>\n order.id === id ? resultOrder : order,\n );\n if (!isPresent) self.orders.push(resultOrder);\n getRoot(self).patientStore.addOrderPatients({\n ...result.order,\n });\n self.setCurrentOrder(id);\n } else {\n getRoot(self).toastStore.addError(result.kind);\n }\n self.pending = false;\n }\n }),\n }));\n","import { types, getRoot } from \"mobx-state-tree\";\nimport { ProductModel } from \"./ProductModel\";\nimport { OrderModel } from \"./OrderModel\";\n\nexport const totalForPatientWithDiscount = (patientsProducts) => {\n const countSamplings = {};\n let sum = 0;\n for (let product of patientsProducts) {\n countSamplings[product.samplingCode] =\n countSamplings[product.samplingCode] + 1 || 1;\n sum = sum + product.price;\n if (countSamplings[product.samplingCode] > 1) {\n sum = sum - product.samplingPrice;\n }\n }\n return sum;\n};\n\nexport const countDiscountForPatient = (patientsProducts) => {\n const countSamplings = {};\n let discount = 0;\n for (let product of patientsProducts) {\n countSamplings[product.samplingCode] =\n countSamplings[product.samplingCode] + 1 || 1;\n if (countSamplings[product.samplingCode] > 1) {\n discount = discount + 250;\n }\n }\n return discount;\n};\n\nexport const PatientModel = types\n .model(\"Patient\")\n .props({\n id: types.identifier,\n lastName: types.string,\n firstName: types.string,\n middleName: types.string,\n firstNameLastNameEng: types.string,\n dateOfBirth: types.string,\n passport: types.string,\n address: types.string,\n workOrStudyPlace: types.string,\n flightNumber: types.string,\n sex: types.string,\n order: types.maybeNull(types.reference(types.late(() => OrderModel))),\n product: types.maybeNull(types.reference(types.late(() => ProductModel))),\n products: types.maybeNull(types.array(types.reference(types.late(() => ProductModel)))),\n documentTypeId: types.maybeNull(types.number),\n series: types.maybeNull(types.string),\n num: types.maybeNull(types.string),\n issueDate: types.maybeNull(types.string),\n issuedBy: types.maybeNull(types.string),\n })\n .actions((self) => ({})) // eslint-disable-line\n .views((self) => ({\n get referral() {\n return getRoot(self).referralStore?.referrals?.find(\n (referral) => referral.patient?.id === self.id,\n ) || null;\n },\n get totalWithDiscount() {\n return totalForPatientWithDiscount(self.products);\n },\n get countDiscount() {\n return countDiscountForPatient(self.product);\n }\n })); // eslint-disable-line\n","import { types } from \"mobx-state-tree\";\nimport { PatientModel } from \"./PatientModel\";\n\nexport const PatientStore = types\n .model(\"PatientStore\")\n .props({\n patients: types.optional(types.array(PatientModel), []),\n })\n .actions((self) => ({\n afterCreate() {\n self.clean();\n },\n clean() {\n self.patients = [];\n },\n add(values) {\n const patientIndex = self.patients.findIndex(\n (patient) => values.id === patient.id,\n );\n const patient = PatientModel.create(values);\n if (patientIndex !== -1) {\n self.patients = self.patients.map((p, index) =>\n index === patientIndex ? patient : p,\n );\n } else {\n self.patients.push(patient);\n }\n },\n addOrderPatients(order) {\n order.patients.map((patient) => {\n self.add({\n ...patient,\n order: order.id.toString(),\n product: patient?.product?.toString(),\n products: patient?.products?.map((product) => product.id.toString()),\n id: patient.id.toString(),\n referral: patient.referral ? patient?.referral?.toString() : null,\n });\n }\n );\n },\n }));\n","import { types, flow, getRoot } from \"mobx-state-tree\";\nimport { PlaceModel } from \"./PlaceModel\";\n\nimport { Api } from \"../api/api\";\n\nexport const PlaceStore = types\n .model(\"PlaceStore\", {\n places: types.optional(types.array(PlaceModel), []),\n pending: types.optional(types.boolean, true),\n })\n .actions((self) => ({\n afterCreate() {\n self.pending = true;\n // if (self.places.length > 0) return\n this.getPlaces();\n },\n savePlaces(places) {\n self.places = [];\n places.forEach((place) => {\n place.products.forEach((product) => {\n getRoot(self).productStore.add({\n ...product,\n id: product.id.toString(),\n });\n });\n });\n const placesModels = places.map((c) =>\n PlaceModel.create({\n ...c,\n products: c.products.map((p) => p.id.toString()),\n }),\n );\n self.places.replace(placesModels);\n },\n getPlaces: flow(function* getPlaces() {\n const result = yield new Api().getPlaces();\n if (result.kind === \"ok\") {\n self.savePlaces(result.places);\n self.pending = false;\n } else {\n self.pending = false;\n getRoot(self).toastStore.addError(result.kind);\n }\n }),\n }));\n","import React from \"react\";\nimport socketio from \"socket.io-client\";\nconst { REACT_APP_API } = process.env;\n\nconst storage = localStorage.getItem(\"root\");\nconst username = storage ? JSON.parse(storage).userStore.user.username : null;\nconst connection = socketio.connect(REACT_APP_API);\nconnection.auth = { username: username };\nexport const socket = connection\nexport const SocketContext = React.createContext(socket);\n","import { types } from \"mobx-state-tree\";\n\nexport const UserModel = types\n .model(\"User\", {\n jwt: types.optional(types.string, \"\"),\n username: types.optional(types.string, \"\"),\n email: types.optional(types.string, \"\"),\n })\n .actions((self) => ({\n isAuthorized() {\n return self.jwt;\n },\n }));\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport rus from \"./rus.json\";\nimport eng from \"./eng.json\";\nimport zh from \"./zh.json\";\n\nexport const getLanguage = () => {\n const language = window.navigator.language.slice(0, 2).toLowerCase();\n switch (language) {\n case \"ru\":\n return \"ru\";\n case \"en\":\n return \"en\";\n case \"uz\":\n return \"ru\";\n case \"tg\":\n return \"ru\";\n case \"kk\":\n return \"ru\";\n case \"uk\":\n return \"ru\";\n case \"be\":\n return \"ru\";\n case \"hy\":\n return \"ru\";\n case \"ro\":\n return \"ru\";\n case \"az\":\n return \"ru\";\n case \"ky\":\n return \"ru\";\n case \"zh\":\n return \"zh\";\n default:\n return \"en\";\n }\n};\n\nconst resources = {\n en: {\n translation: eng,\n },\n ru: {\n translation: rus,\n },\n zh: {\n translation: zh,\n },\n};\n\ni18n.use(initReactI18next).init({\n resources,\n lng: localStorage.getItem(\"lang\") || getLanguage(),\n\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n});\n\nexport default i18n;\n","import { types, flow, getRoot } from \"mobx-state-tree\";\nimport LogRocket from \"logrocket\";\nimport { socket } from \"../context/socket\"\n// import * as storage from \"./storage\";\nimport { UserModel } from \"./UserModel\";\nimport { Api } from \"../api/api\";\nimport { getLanguage } from \"../i18n/i18n.js\";\n\nexport const UserStore = types\n .model(\"UserStore\", {\n user: types.optional(UserModel, {}),\n pending: types.optional(types.boolean, false),\n error: types.optional(types.string, \"\"),\n sucess: types.optional(types.string, \"\"),\n language: types.maybe(\n types.enumeration(\"Language\", [\"ru\", \"en\", \"zh\"]),\n \"\",\n ),\n })\n .views((self) => ({\n get authenticated() {\n return self.user.jwt ? true : false;\n },\n }))\n .actions((self) => ({\n afterCreate() {\n self.checkMe();\n self.setLanguage(localStorage.getItem(\"lang\") || getLanguage());\n LogRocket.identify(self.user?.username);\n },\n setLanguage(language) {\n self.language = language;\n localStorage.setItem(\"lang\", self.language);\n },\n // checkMe: flow(function* me() {\n checkMe() {\n // const result = yield new Api().getMe();\n LogRocket.identify(self.user?.username);\n // if (result?.data?.ok) {\n // getRoot(self).toastStore.addsuccess(self.user.username);\n // } else {\n // // self.clearUser();\n // }\n },\n\n sendCode: flow(function* sendCode(username, email) {\n self.error = \"\";\n self.pending = true;\n const result = yield new Api().sendCode(username, email);\n self.pending = false;\n if (result && result.kind === \"ok\") {\n getRoot(self).toastStore.addSuccess(\n \"Звонок с кодом заказан / Code sent by call\",\n );\n } else {\n getRoot(self).toastStore.addError(result.data?.problem);\n }\n }),\n checkCode: flow(function* checkCode(username, smsCode, email) {\n self.error = \"\";\n const result = yield new Api().checkCode({ username, smsCode, email });\n self.pending = false;\n if (result && result.kind === \"ok\") {\n self.user = {\n jwt: result.data.jwt,\n username: result.data.username,\n };\n socket.auth = { username: username };\n LogRocket.identify(result.data.username);\n } else {\n self.error = \"invalid_sms_code\";\n }\n }),\n clearUser: () => {\n self.user = {\n jwt: \"\",\n username: \"\",\n error: \"\",\n pending: false,\n };\n // storage.clear();\n },\n getUser: () => {\n return self.user.username;\n },\n }));\n","import { types } from \"mobx-state-tree\";\n\nexport const ToastModel = types.model(\"ToastModel\", {\n message: types.string,\n type: types.string,\n});\n","import { types } from \"mobx-state-tree\";\nimport { values } from \"mobx\";\nimport { ToastModel } from \"./ToastModel\";\n\nexport const ToastStore = types\n .model(\"ToastStore\", {\n toasts: types.optional(types.array(ToastModel), []),\n })\n .views((self) => ({\n get showMessage() {\n return values(self.toasts)[values(self.toasts).length - 1];\n },\n }))\n .actions((self) => ({\n afterCreate() {\n self.toasts = [];\n },\n remove: () => {\n self.toasts.pop();\n },\n addSuccess(success) {\n if (!success) return;\n const successModel = ToastModel.create({\n type: \"success\",\n message: success,\n });\n self.toasts.push(successModel);\n },\n addError(error) {\n if (!error) return;\n const errorModel = ToastModel.create({ type: \"error\", message: error });\n self.toasts.push(errorModel);\n },\n }));\n","import { types } from \"mobx-state-tree\";\nimport { PatientModel } from \"./PatientModel\";\n\nexport const ReferralModel = types.model(\"ReferralModel\", {\n id: types.identifier,\n referralId: types.string,\n patient: types.maybeNull(types.reference(types.late(() => PatientModel))),\n});\n","import { types, flow, getRoot } from \"mobx-state-tree\";\nimport { ReferralModel } from \"./ReferralModel\";\n\nimport { Api } from \"../api/api\";\n\nexport const ReferralStore = types\n .model(\"ReferralStore\")\n .props({\n referrals: types.optional(types.array(ReferralModel), []),\n pending: types.optional(types.boolean, true),\n })\n .actions((self) => ({\n afterCreate() {\n self.referrals = []\n },\n getRefferals: flow(function* getRefferals() {\n self.pending = true;\n const result = yield new Api().getRefferals();\n if (result.kind === \"ok\") {\n self.referrals = [];\n self.referrals = result.referrals.map((referral) =>\n ReferralModel.create(referral),\n );\n result.referrals.map((referral) => {\n getRoot(self).patientStore.add({ ...referral.patientRaw, id: referral.patientRaw.id.toString() });\n });\n self.pending = false;\n } else {\n self.pending = false;\n getRoot(self).toastStore.addError(result.kind);\n }\n }),\n getReferralById: flow(function* getReferralById(id) {\n self.pending = true;\n const result = yield new Api().getReferralById(id);\n if (result.kind === \"ok\") {\n self.referrals = result.referrals.map((referral) =>\n ReferralModel.create(referral),\n );\n self.pending = false;\n } else {\n self.pending = false;\n getRoot(self).toastStore.addError(result.kind);\n }\n }),\n add(values) {\n const referral = ReferralModel.create({...values, id: values.id.toString()});\n self.referrals.push(referral);\n },\n addPatientReferral(patient) {\n self.add({ patient: patient.id.toString(), ...patient.referral });\n },\n addReferrallsForOrder(referrals) {\n referrals.forEach((referral) => self.add(referral));\n },\n getReferralsByOrderId: flow(function* getReferralsByOrderId(orderId) {\n self.pending = true;\n const result = yield new Api().getReferralsByOrderId(orderId);\n if (result.kind === \"ok\") {\n self.addReferrallsForOrder(result.referrals)\n // result.referrals.forEach((referral) => self.add(referral));\n } else {\n getRoot(self).toastStore.addError(result.kind);\n }\n }),\n }));\n","import { types, resolveIdentifier } from \"mobx-state-tree\";\nimport { ProductModel } from \"./ProductModel\";\n\nexport const ProductStore = types\n .model(\"OrderStore\", {\n products: types.optional(types.array(ProductModel), []),\n })\n .actions((self) => ({\n add(item) {\n const resolved = resolveIdentifier(ProductModel, self, item.id)\n if (resolved) {\n Object.assign(resolved, item)\n return;\n };\n self.products.push(ProductModel.create({...item}))\n }\n }))\n","import { types } from \"mobx-state-tree\";\nimport { OrderStore } from \"./OrderStore\";\nimport { PatientStore } from \"./PatientStore\";\nimport { PlaceStore } from \"./PlaceStore\";\nimport { UserStore } from \"./UserStore\";\nimport { ToastStore } from \"./ToastStore\";\nimport { ReferralStore } from \"./ReferralStore\";\nimport { ProductStore } from \"./ProductStore\";\n\nexport const RootStoreModel = types.model(\"RootStore\").props({\n orderStore: types.optional(OrderStore, {}),\n patientStore: types.optional(PatientStore, {}),\n placeStore: types.optional(PlaceStore, {}),\n userStore: types.optional(UserStore, {}),\n productStore: types.optional(ProductStore, {}),\n toastStore: types.optional(ToastStore, {}),\n referralStore: types.optional(ReferralStore, {}),\n});\n\nexport const RootStore = RootStoreModel;\n","import { createContext, useContext } from \"react\";\nimport { RootStore } from \"./RootStore\";\n\n/**\n * Create a context we can use to\n * - Provide access to our stores from our root component\n * - Consume stores in our screens (or other components, though it's\n * preferable to just connect screens)\n */\n\nconst RootStoreContext = createContext(RootStore);\n\n// const RootStoreContext = createContext(\n// RootStore.create({\n// placeStore: {},\n// patientsStore: {},\n// ordersStore: {},\n// userStore: {},\n// toastStore: {},\n// }),\n// );\n\n/**\n * The provider our root component will use to expose the root store\n */\nexport const RootStoreProvider = RootStoreContext.Provider;\n\n/**\n * A hook that screens can use to gain access to our stores, with\n * `const { someStore, someOtherStore } = useStores()`,\n * or less likely: `const rootStore = useStores()`\n */\nexport const useStores = () => useContext(RootStoreContext);\n","// import AsyncStorage from \"@react-native-community/async-storage\"\n\n/**\n * Loads a string from storage.\n *\n * @param key The key to fetch.\n */\nexport async function loadString(key) {\n try {\n return await localStorage.getItem(key);\n } catch {\n // not sure why this would fail... even reading the RN docs I'm unclear\n return null;\n }\n}\n\n/**\n * Saves a string to storage.\n *\n * @param key The key to fetch.\n * @param value The value to store.\n */\nexport async function saveString(key, value) {\n try {\n await localStorage.setItem(key, value);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Loads something from storage and runs it thru JSON.parse.\n *\n * @param key The key to fetch.\n */\nexport async function load(key) {\n try {\n const almostThere = await localStorage.getItem(key);\n return JSON.parse(almostThere);\n } catch {\n return null;\n }\n}\n\n/**\n * Saves an object to storage.\n *\n * @param key The key to fetch.\n * @param value The value to store.\n */\nexport async function save(key, value) {\n try {\n await localStorage.setItem(key, JSON.stringify(value));\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Removes something from storage.\n *\n * @param key The key to kill.\n */\nexport async function remove(key) {\n try {\n await localStorage.removeItem(key);\n } catch {}\n}\n\n/**\n * Burn it all to the ground.\n */\nexport async function clear() {\n try {\n await localStorage.clear();\n } catch {}\n}\n","import { onSnapshot } from \"mobx-state-tree\";\nimport { RootStoreModel, RootStore } from \"./RootStore\";\nimport { Environment } from \"./Environment\";\nimport LogRocket from \"logrocket\";\nimport * as Sentry from \"@sentry/react\";\nimport { Integrations } from \"@sentry/tracing\";\nimport * as storage from \"./storage\";\nimport setupLogRocketReact from \"logrocket-react\";\n\n/**\n * The key we'll be saving our state as within async storage.\n */\nconst ROOT_STATE_STORAGE_KEY = \"root\";\n\n/**\n * Setup the environment that all the models will be sharing.\n *\n * The environment includes other functions that will be picked from some\n * of the models that get created later. This is how we loosly couple things\n * like events between models.\n */\nexport async function createEnvironment() {\n const env = new Environment();\n await env.setup();\n return env;\n}\n\n/**\n * Setup the root state.\n */\nexport async function setupRootStore() {\n let rootStore = RootStore;\n let data;\n\n LogRocket.init(\"m8xxdp/labarhime\");\n setupLogRocketReact(LogRocket);\n Sentry.init({\n dsn:\n \"https://0dd69e2d23cd4058a83fbdd15cb5b6ad@o484821.ingest.sentry.io/5542283\",\n integrations: [new Integrations.BrowserTracing()],\n // We recommend adjusting this value in production, or using tracesSampler\n // for finer control\n tracesSampleRate: 1.0,\n });\n // prepare the environment that will be associated with the RootStore.\n // const env = await createEnvironment();\n try {\n // load data from storage\n data = await storage.load(ROOT_STATE_STORAGE_KEY);\n rootStore = RootStoreModel.create(data || {});\n } catch (e) {\n // if there's any problems loading, then let's at least fallback to an empty state\n // instead of crashing.\n console.log(\"error root store\", e);\n rootStore = RootStoreModel.create({});\n\n // but please inform us what happened\n // __DEV__ && console.tron.error(e.message, null)\n }\n\n // reactotron logging\n // if (__DEV__) {\n // env.reactotron.setRootStore(rootStore, data)\n // }\n\n // track changes & save to storage\n onSnapshot(rootStore, (snapshot) =>\n storage.save(ROOT_STATE_STORAGE_KEY, snapshot),\n );\n\n return rootStore;\n}\n","import { getEnv } from \"mobx-state-tree\";\nimport { Environment } from \"./Environment\";\n\n/**\n * Adds a environment property to the node for accessing our\n * Environment in strongly typed.\n */\nexport const withEnvironment = () => ({\n views: {\n /**\n * The environment.\n */\n get environment() {\n return getEnv(Environment);\n },\n },\n});\n","import React from \"react\";\n\nimport style from \"./checkbox.module.scss\";\n\nexport const Checkbox = ({ onChange, checked, children }) => (\n \n);\n","import React from \"react\";\nimport { ReactSVG } from \"react-svg\";\nimport i18next from \"i18next\";\nimport { useTranslation } from \"react-i18next\";\nimport cn from \"classnames\";\nimport PhoneInput from \"react-phone-number-input\";\nimport \"react-phone-number-input/style.css\";\nimport flags from \"react-phone-number-input/flags\";\nimport ru from \"react-phone-number-input/locale/ru\";\nimport en from \"react-phone-number-input/locale/en\";\n\nimport { useStores } from \"../../models\";\n\nimport { Input, Button } from \"..\";\n\nimport style from \"./form.module.scss\";\nimport numberApproved from \"./number-approved.svg\";\nimport { Checkbox } from \"../Checkbox\";\nimport { observer } from \"mobx-react\";\n\nconst STATUSES = {\n PHONE_FILLING: 1,\n CODE_FILLING: 2,\n CODE_APPROVED: 3,\n};\n\nexport const ApproveNumberForm = observer(({ ...props }) => {\n const { phoneNumberApproved } = props;\n const [timer, changeTimer] = React.useState(60000);\n const [phoneNumber, changePhoneNumber] = React.useState(\"\");\n const [email, changeEmail] = React.useState(\"\");\n const [code, changeCode] = React.useState(null);\n const [status, changeStatus] = React.useState(STATUSES.PHONE_FILLING);\n const { t } = useTranslation();\n const [iamAgree, changeIamAgree] = React.useState(true);\n const [emailExist, changeEmailExist] = React.useState(false);\n const { userStore } = useStores();\n\n const sendCode = () => {\n userStore.sendCode(phoneNumber.replace(/[^0-9]/g, \"\"), email);\n };\n const checkCode = (codeValue) => {\n userStore.checkCode(\n phoneNumber.replace(/[^0-9]/g, \"\"),\n `${codeValue}`,\n email,\n );\n };\n React.useEffect(() => {\n if (userStore.user.username) {\n changePhoneNumber(userStore.user.username);\n onChangeEmail(userStore.user.email);\n changeStatus(STATUSES.CODE_APPROVED);\n changeIamAgree(true);\n } else {\n changePhoneNumber(\"\");\n onChangeEmail(\"\");\n changeStatus(STATUSES.PHONE_FILLING);\n }\n }, [userStore.user.email, userStore.user.username]);\n\n const openPrivacyPolicyPdf = () => {\n window.open(\n \"./agreement.pdf\",\n \"_blank\",\n );\n }\n\n const openAgreementPdf = () => {\n window.open(\n \"./policy.pdf\",\n \"_blank\",\n );\n }\n\n React.useEffect(() => {\n if (status === STATUSES.CODE_FILLING) {\n const timerId = setInterval(\n () =>\n changeTimer((val) => {\n if (val <= 0) {\n return 0;\n }\n return val - 1000;\n }),\n 1000,\n );\n return () => clearInterval(timerId);\n }\n }, [status, timer]);\n\n React.useEffect(() => {\n changeEmail(\"\");\n }, [emailExist]);\n const onChangeCode = async (value) => {\n changeCode(value);\n const codeValue = Number.parseInt(value);\n if (`${codeValue}`.length === 4) {\n checkCode(codeValue);\n }\n };\n const onChangeEmail = async (value) => {\n changeEmail(value.replace(/\\s/g, \"\"));\n };\n\n const resetNumber = () => {\n changeCode(\"\");\n changeStatus(STATUSES.PHONE_FILLING);\n // userStore.clearUser();\n };\n\n const CodeCmp = () => {\n const txt = t(\"sendsms\");\n const isDisabled =\n phoneNumber !== undefined\n ? phoneNumber.replace(/[^\\d]/g, \"\").length < 11 ||\n !iamAgree ||\n !emailExist\n ? !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)\n : false\n : true;\n switch (status) {\n case STATUSES.PHONE_FILLING:\n return (\n {\n changeStatus(STATUSES.CODE_FILLING);\n sendCode();\n }}\n disabled={isDisabled}\n uitype={isDisabled ? \"disabled\" : \"\"}\n >\n {txt}\n \n );\n case STATUSES.CODE_FILLING:\n return (\n
\n

{t(\"enterCode\")}

\n \n {timer === 0 ? (\n
\n {\n changeTimer(60000);\n sendCode();\n }}\n className={style.sendAgainBtn}\n >\n {t(\"send_again_btn\")}\n \n
\n ) : (\n <>\n \n {t(\"send_again\")} {timer / 1000} {t(\"sec\")}\n
\n \n )}\n
{renderChangeNumber()}
\n \n );\n case STATUSES.CODE_APPROVED:\n return (\n
\n
\n \n

{t(\"phoneNumerAccepted\")}

\n
\n
\n );\n default:\n return null;\n }\n };\n\n const renderChangeNumber = () => (\n \n );\n return (\n
\n
\n \n
\n {status !== STATUSES.CODE_APPROVED && (\n
\n
{t(\"no_email\")}
\n {!emailExist ? (\n \n ) : (\n
\n )}\n
\n )}\n {React.useMemo(CodeCmp, [\n status,\n phoneNumber,\n code,\n t,\n iamAgree,\n timer,\n email,\n emailExist,\n ])}\n
\n {status !== STATUSES.CODE_APPROVED && (\n changeEmailExist(e.target.checked)}\n >\n
{t(\"dont_have_email\")}
\n \n )}\n\n \n status === STATUSES.PHONE_FILLING &&\n changeIamAgree(e.target.checked)\n }\n >\n
\n {t(\"i_give\")}{\" \"}\n \n {t(\"agreement\")} {\"\"}\n
\n
\n \n {/*
*/}\n \n status === STATUSES.PHONE_FILLING &&\n changeIamAgree(e.target.checked)\n }\n >\n
\n {t(\"i_agree_with\")}{\" \"}\n \n {t(\"policy_personal\")} {\"\"}\n
\n
\n \n
\n \n );\n});\n","import React, { useEffect } from \"react\";\nimport { useFormikContext } from \"formik\";\nimport { observer } from \"mobx-react-lite\";\nimport { useTranslation } from \"react-i18next\";\nimport Loader from \"react-loader-spinner\";\nimport { useStores } from \"../../models\";\n\nimport { Button, Card } from \"..\";\n\nimport style from \"./form.module.scss\";\n\nexport const ChooseTestPlace = observer(({ numberRef }) => {\n const { placeStore, toastStore } = useStores();\n const { pending, places, error } = placeStore;\n const { setFieldValue, values } = useFormikContext();\n const { t } = useTranslation();\n\n useEffect(() => {\n if (!error) return;\n toastStore.addError(error);\n }, [error, toastStore]);\n\n if (pending) {\n return (\n
\n \n
\n );\n }\n\n const placesToShow = places\n .filter((place) => place.show === true)\n .sort((a, b) => (a.name > b.name ? 1 : -1));\n const onButtonClick = (id) => {\n setFieldValue(\"place\", id);\n numberRef.current.scrollIntoView();\n };\n\n return (\n
\n {placesToShow.map((item, index) => (\n \n {values.place === item.id ? (\n \n ) : (\n \n )}\n \n ))}\n
\n );\n});\n","import React from \"react\";\nimport { getIn } from \"formik\";\n\n// eslint-disable-next-line react/display-name\nexport const FieldEnhancer = (Component) => ({\n field,\n form,\n ...componentProps\n}) => {\n const isError =\n getIn(form.touched, field.name) && getIn(form.errors, field.name);\n return (\n {\n form.setFieldValue(field.name, value);\n }}\n onBlur={() => form.setFieldTouched(field.name)}\n />\n );\n};\n","import React from \"react\";\nimport cn from \"classnames\";\nimport { ReactSVG } from \"react-svg\";\nimport s from \"./panel.module.scss\";\n\nimport spoilerBtn from \"./spoiler-btn.svg\";\n\n// eslint-disable-next-line react/display-name\nconst Panel = ({\n children,\n title,\n onClick,\n shouldBeClosed,\n withoutSpoiler,\n name,\n}) => {\n const [show, toggleShow] = React.useState(true);\n React.useEffect(() => {\n if (shouldBeClosed) {\n toggleShow(false);\n }\n }, [shouldBeClosed]);\n return (\n
\n
\n
{title}
\n {!withoutSpoiler && (\n toggleShow(!show)}\n src={spoilerBtn}\n />\n )}\n
\n
\n {children}\n
\n
\n );\n};\n\nexport default Panel;\n","import React from \"react\";\nimport cn from \"classnames\";\nimport { useTranslation } from \"react-i18next\";\n\nimport style from \"./switcher.module.scss\";\nimport { useFormikContext } from \"formik\";\n\nexport const PAY_METHODS = {\n online: \"online\",\n offline: \"offline\",\n};\n\nexport const Switcher = ({ onlyOnlinePayment = false }) => {\n const { t } = useTranslation();\n const { setFieldValue, values } = useFormikContext();\n const changeChoosen = (value) => setFieldValue(\"paymentMethod\", value);\n const classNameGen = (index) =>\n cn(style.switchEl, {\n [style[\"switchEl--choosen\"]]: index !== values.paymentMethod,\n });\n React.useEffect(() => {\n if (onlyOnlinePayment === true)\n setFieldValue(\"paymentMethod\", PAY_METHODS.online);\n }, [onlyOnlinePayment, setFieldValue]);\n return (\n
\n changeChoosen(PAY_METHODS.online)}\n className={classNameGen(PAY_METHODS.online)}\n >\n {t(\"online\")}\n
\n {!onlyOnlinePayment && (\n changeChoosen(PAY_METHODS.offline)}\n className={classNameGen(PAY_METHODS.offline)}\n >\n {t(\"offline\")}\n \n )}\n \n );\n};\n","import * as yup from \"yup\";\nimport { documentAttributesShow, documentTypes } from \"./Passport.js\";\n\nconst ENG_LETTERS_REG_EXP = /^[a-zA-Z\\s]*$/;\n\nconst findDocNameById = (id) => {\n return Object.keys(documentTypes).find(key => documentTypes[key] === +id)\n}\n\nconst isRequired = (docId, field) => {\n if (!docId || !field) return false;\n const fieldName = findDocNameById(docId)\n if (!fieldName) return false;\n return documentAttributesShow[fieldName][field]\n}\n\nconst validateDate = (value) => {\n if (typeof value === \"undefined\") {\n return false;\n }\n const [day, month, year] = value\n .split(\".\")\n .map((item) => Number.parseInt(item));\n if (day && month && year) {\n const dayValid = day < 32;\n const monthValid = month < 13;\n const yearValid = year > 1850;\n return dayValid && monthValid && yearValid;\n }\n return false;\n};\n\nconst validProducts = (value) => {\n return value.filter(Boolean).length > 0;\n};\n\nexport const validattionCnfg = (t) =>\n yup.object({\n place: yup.string(),\n phoneNumberApproved: yup.bool().oneOf([true]),\n paymentMethod: yup.string().oneOf([\"offline\", \"online\"]).required(t(\"form_validation_required\")),\n patients: yup\n .array()\n .min(1)\n .of(\n yup.object({\n sex: yup.string().required(t(\"form_validation_required\")),\n // flightNumber: yup.string().required(t(\"form_validation_required\")),\n // product: yup.array.required(t(\"form_validation_required\")),\n product: yup.mixed()\n .test(\n \"productValidation\",\n t(\"form_validation_required\"),\n (value) => validProducts(value),\n ),\n lastName: yup\n .string()\n .min(1, t(\"form_validation_too_small\"))\n .max(30, t(\"form_validation_too_big\"))\n .required(t(\"form_validation_required\")),\n firstName: yup\n .string()\n .min(1, t(\"form_validation_too_small\"))\n .max(30, t(\"form_validation_too_big\"))\n .required(t(\"form_validation_required\")),\n middleName: yup.string(),\n documentTypeId: yup.string().required(t(\"form_validation_required\")),\n series: yup.string()\n .when('documentTypeId', {\n is: (val) => isRequired(val, 'series'),\n then: yup.string().required(t(\"form_validation_required\")).min(2, t(\"form_validation_too_small\")),\n }),\n num: yup.string()\n // .required(t(\"form_validation_required\"))\n .when('documentTypeId', {\n is: (val) => isRequired(val, 'num'),\n then: yup.string().required(t(\"form_validation_required\")).min(2, t(\"form_validation_too_small\")),\n }),\n issueDate: yup.mixed()\n .when('documentTypeId', {\n is: (val) => isRequired(val, 'issueDate'),\n then: yup\n .mixed()\n .test(\n \"dateValidation\",\n t(\"form_validation_invalid_date\"),\n (value) => validateDate(value),\n )\n .required(t(\"form_validation_required\")),\n }),\n issuedBy: yup.string()\n .when('documentTypeId', {\n is: (val) => isRequired(val, 'issuedBy'),\n then: yup.string().required(t(\"form_validation_required\")).min(2, t(\"form_validation_too_small\")),\n }),\n // snils: yup.string()\n // .when('documentTypeId', {\n // is: (val) => isRequired(val, 'snils'),\n // then: yup.string().required(t(\"form_validation_required\")).min(6, t(\"form_validation_too_small\")),\n // }),\n firstNameLastNameEng: yup\n .string()\n .matches(ENG_LETTERS_REG_EXP, t(\"only_eng_letters\"))\n .min(3, t(\"form_validation_too_small\"))\n .max(30, t(\"form_validation_too_big\"))\n .required(t(\"form_validation_required\")),\n dateOfBirth: yup\n .mixed()\n .test(\n \"dateValidation\",\n t(\"form_validation_invalid_date\"),\n (value) => validateDate(value),\n )\n .required(t(\"form_validation_required\")),\n // passport: yup\n // .string()\n // .min(3, t(\"form_validation_too_small\"))\n // .required(t(\"form_validation_required\")),\n // passportNumber: yup\n // .string()\n // .min(3, t(\"form_validation_too_small\"))\n // .required(t(\"form_validation_required\")),\n // passportAuthority: yup\n // .string()\n // .min(3, t(\"form_validation_too_small\"))\n // .required(t(\"form_validation_required\")),\n address: yup\n .string()\n .min(7, t(\"form_validation_too_small\"))\n // .max(50, t(\"form_validation_too_big\"))\n .required(t(\"form_validation_required\")),\n workOrStudyPlace: yup\n .string()\n .min(2, t(\"form_validation_too_small\"))\n .max(50, t(\"form_validation_too_big\"))\n .required(t(\"form_validation_required\")),\n }),\n ),\n });\n","export const ScrollToError = ({ errors }) => {\n const firstError = Object.keys(errors)[0];\n if (firstError) {\n const el = document.getElementsByName(firstError)[0];\n el && el.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\n }\n return null;\n};\n","import React, { useCallback, useEffect } from \"react\";\nimport { Formik, Form } from \"formik\";\nimport cn from \"classnames\";\nimport { useTranslation } from \"react-i18next\";\nimport { observer } from \"mobx-react\";\nimport { Persist } from \"formik-persist\";\nimport { Redirect, useParams } from \"react-router-dom\";\n\nimport { FieldEnhancer } from \"../../hoc/FieldEnhancer\";\nimport {\n PatientForm,\n ApproveNumberForm,\n ChooseTestPlace,\n PayChoose,\n Input,\n Select,\n Attention,\n MultiSelect,\n} from \"..\";\nimport Panel from \"../Panel/Panel\";\nimport { PAY_METHODS } from \"../Switcher/Switcher\";\nimport style from \"./main-form.module.scss\";\nimport { useStores } from \"../../models\";\nimport { validattionCnfg } from \"./validattionCnfg\";\nimport { ScrollToError } from \"./ScrollToError\";\n\nexport const MainForm = observer(({ ...props }) => {\n const { id, offline, placeId, productId } = useParams();\n const [redirect, setRedirect] = React.useState(null);\n const { userStore, toastStore, orderStore, placeStore, productStore } = useStores();\n const { places, pending: placePending } = placeStore;\n const { language } = userStore;\n const { currentOrder } = orderStore;\n const { error, user } = userStore;\n\n const isPending = placePending || orderStore.pending\n\n const formikRef = React.useRef();\n const numberRef = React.createRef();\n\n const initialValuesPatient = {\n lastName: \"\",\n firstName: \"\",\n middleName: \"\",\n firstNameLastNameEng: \"\",\n dateOfBirth: \"\",\n passport: \"\",\n passportNumber: \"\",\n passportAuthority: \"\",\n address: \"\",\n snils: \"\",\n workOrStudyPlace: \"\",\n flightNumber: \"\",\n sex: \"\",\n product: [productId] || [],\n };\n\n const initialValues = {\n place: placeId || null,\n phoneNumberApproved: false,\n patients: [initialValuesPatient],\n paymentMethod: PAY_METHODS.online,\n };\n\n React.useEffect(() => {\n if (formikRef.current) {\n formikRef.current.setFieldValue(\n \"phoneNumberApproved\",\n userStore.getUser() ? true : false,\n );\n }\n }, [user.username, userStore]);\n\n React.useEffect(() => {\n formikRef.current.setFieldValue(\"place\", id);\n }, [id]);\n\n React.useEffect(() => {\n if (placeId && productId) formikRef.current.setFieldValue(\"place\", placeId);\n }, [placeId, productId]);\n\n React.useEffect(() => {\n if (currentOrder) setRedirect(`/order/${currentOrder.id}`);\n return () => setRedirect(null);\n }, [currentOrder]);\n\n React.useEffect(() => {\n orderStore.setCurrentOrder(null);\n }, [orderStore]);\n\n const EnhancedField = FieldEnhancer(Input);\n const EnhancedSelect = FieldEnhancer(Select);\n const EnhancedMultiSelect = FieldEnhancer(MultiSelect);\n\n const [paymentTouched, setPaymentTouched] = React.useState(false);\n\n const onSubmit = async (values, { resetForm }) => {\n const body = {\n patients: values.patients,\n paymentMethod: values.paymentMethod,\n place: values.place,\n code: values.code,\n };\n await orderStore.add(body);\n if (currentOrder) {\n resetForm();\n }\n };\n\n const { t } = useTranslation();\n\n const getCn = (isOk) => cn(style.step, { [style[\"step--current\"]]: isOk });\n\n React.useEffect(() => {\n if (error) {\n if (!error) return;\n toastStore.addError(t(error));\n }\n }, [error, t, toastStore]);\n\n const getPlaceName = (id) => {\n const place = places.find((item) => item.id === id);\n return language === \"ru\" ? place?.name : place?.nameEn;\n };\n\n return (\n (formikRef.current = r)}\n >\n {({\n handleSubmit,\n values,\n errors,\n isValid,\n setFieldValue,\n isSubmitting,\n touched,\n ...r\n }) => {\n const productsForPlace = useCallback(() => {\n if (!values.place) return;\n return values.place\n ? places.find((p) => p.id === values.place?.toString())?.products\n : [];\n }, [values.place]);\n\n const onlyOnlinePayment = useCallback(() => {\n return values.place\n ? placeStore.places.find((p) => p.id === values.place?.toString())\n ?.onlyOnlinePayment\n : false;\n }, [values.place]);\n\n useEffect(() => {\n values.patients.forEach((patient, index) => {\n const products = patient?.product?.map((productId) =>\n productStore?.products?.find((p) => p.id === productId),\n );\n const productCodes = products?.map((product) => product?.productCode).filter(Boolean);\n const productCodesUniq = productCodes.filter((p, i) => productCodes.indexOf(p) === i);\n if (productCodesUniq.length !== productCodes.length) { \n toastStore.addError((t(\"form_validation_same_product_code\")));\n setFieldValue(`patients.${index}.product`, [...patient?.product].slice(0, -1));\n }\n });\n }, [setFieldValue, values.patients]);\n\n const renderSteps = useCallback(() => {\n return (\n
\n {\n
\n {t(\"itemSelection\")}{\" \"}\n {values.place && getPlaceName(values.place)}\n
\n }\n \n {t(\"numberConfirmation\")}\n
\n
{t(\"patientData\")}
\n
{t(\"payment\")}
\n \n );\n }, [\n errors.patients,\n errors.phoneNumberApproved,\n errors.testPlaceId,\n values.phoneNumberApproved,\n values.place,\n ]);\n\n return (\n
\n {isSubmitting && }\n
\n
\n
\n

{t(\"bookingCovidTest\")}

\n {renderSteps()}\n
\n
\n
\n
\n
\n \n {placeId && (\n \n )}\n {!placeId && (\n \n \n \n )}\n
\n \n \n \n \n \n \n
\n
{renderSteps()}
\n
\n setPaymentTouched(true)}\n name=\"paymentMethod\"\n >\n \n \n \n {(!process.env.NODE_ENV ||\n process.env.NODE_ENV === \"development\") && (\n
\n                    {JSON.stringify(values, null, 2)}\n                  
\n )}\n \n {redirect && }\n
\n
\n );\n }}\n \n );\n});\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useFormikContext } from \"formik\";\n\nimport style from \"./form.module.scss\";\n\nimport { Switcher, Button, Input } from \"../\";\nimport { totalForPatientWithDiscount, countDiscountForPatient } from \"../../models/PatientModel\";\n\nexport const PayChoose = ({\n patients = [],\n onNextStep,\n isValid,\n products,\n onlyOnlinePayment,\n offline,\n isPending,\n}) => {\n const { t } = useTranslation();\n const [code, changeCode] = React.useState(null);\n const { setFieldValue, values } = useFormikContext();\n\n React.useEffect(() => {\n setFieldValue(\"paymentMethod\", offline);\n }, [offline, setFieldValue]);\n\n React.useEffect(() => {\n setFieldValue(\"code\", code);\n }, [code, setFieldValue]);\n\n const isActiveButton = () => {\n return offline === \"offline\" ? isValid && code?.length > 13 : isValid;\n };\n\n if (!patients || !products) return null;\n\n const selectedProductsIds = patients\n ?.map((patient) => patient.product)\n .flat();\n\n const selectedProducts = selectedProductsIds.map((id) =>\n products.find((product) => product.id === id),\n );\n\n const patientsProducts = patients.map((patient) =>\n patient.product\n .map((productId) => products.find((p) => p.id === productId))\n .filter(Boolean),\n );\n\n const totalPriceWithDiscount = patientsProducts\n .map(totalForPatientWithDiscount)\n .reduce((acc, cur) => acc + cur, 0);\n const totalDiscount = patientsProducts\n .map(countDiscountForPatient)\n .reduce((acc, cur) => acc + cur, 0);\n const totalPriceByPatient = patientsProducts.map((products) =>\n products.reduce((acc, cur) => acc + cur.price, 0),\n );\n\n let acc = {};\n let sum = 0;\n\n for (let product of selectedProducts) {\n if (!product) break;\n acc[product.price] =\n acc[product.price] === undefined\n ? 1\n : (acc[product.price] = acc[product.price] + 1);\n sum = sum + product.price;\n }\n return (\n
\n
\n {offline !== \"offline\" ? (\n
\n \n

{t(\"onlineTimeEconom\")}

\n
\n ) : (\n \n )}\n
\n {totalPriceByPatient.map((price, i) => (\n
{`${price} ${\n i === totalPriceByPatient.length - 1 ? \"\" : \"+\"\n }`}
\n ))}\n {!!totalDiscount &&
- {totalDiscount}
}\n
= {totalPriceWithDiscount}
\n
\n \n {t(\"nextStep\")}\n \n
\n
\n );\n};\n","import React from \"react\";\nimport cn from \"classnames\";\n\nimport style from \"./button.module.scss\";\n\nexport const Button = ({ children, onClick, className, ...props }) => {\n return (\n \n {children}\n \n );\n};\n","import React from \"react\";\nimport cn from \"classnames\";\nimport { useTranslation } from \"react-i18next\";\n\nimport style from \"./field.module.scss\";\n\nconst Field = ({ error, name, i18, cstmSpan, placeholder, ...props }) => {\n const { t } = useTranslation();\n const labelClassName = cn(style.label, {\n [style[\"label--error\"]]: error,\n [props.labelClassName]: props.labelClassName,\n });\n const fieldName = t(i18 || name);\n\n const Component = React.cloneElement(props.Component, {\n placeholder,\n value: props.value,\n });\n return (\n \n );\n};\n\nexport default Field;\n","import React from \"react\";\nimport InputMask from \"react-input-mask\";\n\nimport Field from \"../Field/Field\";\nimport style from \"./input.module.scss\";\n\nexport const Input = ({ ...props }) => {\n const Component = (\n props.onChange(e.target.value)}\n className={style.input}\n onBlur={props.onBlur}\n autoComplete={props.autoComplete}\n mask={props.mask}\n disabled={props.disabled}\n type={props.type || \"text\"}\n />\n );\n return ;\n};\n","import React from \"react\";\nimport style from \"./card.module.scss\";\nimport cn from \"classnames\";\nimport { observer } from \"mobx-react-lite\";\nimport marked from \"marked\";\nimport { useStores } from \"../../models\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const Card = observer(\n ({ place, children, choosed, className, showInfoFull }) => {\n const { t } = useTranslation();\n const { userStore } = useStores();\n const { language } = userStore;\n const placeName = language === \"ru\" ? place?.name : place?.nameEn;\n const placeInfo = language === \"ru\" ? place?.infoRus : place?.infoEng;\n const placeInfoFull =\n language === \"ru\" ? place?.infoFullRus : place?.infoFullEng;\n // const splitedInfoFull = placeInfoFull && placeInfoFull.split(\".\");\n return (\n \n
{placeName}
\n {place?.onlyTerminal && (\n
\n {t(\"only_terminal_passengers\")}\n
\n )}\n \n {showInfoFull && (\n \n {/*
\n {splitedInfoFull[1]} */}\n \n )}\n {/* {!place.secondBreak && (\n
\n {t(\"24hours\")}
\n {t(\"technical_break\")}\n
\n )} */}\n {children}\n \n );\n },\n);\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactSVG } from \"react-svg\";\nimport cn from \"classnames\";\nimport { observer } from \"mobx-react-lite\";\n\nimport { useStores } from \"../../models\";\nimport style from \"./change-language.module.scss\";\nimport Rus from \"./Rus.svg\";\nimport Eng from \"./Eng.svg\";\nimport Zh from \"./Zh.svg\";\nimport Arrow from \"./Arrow.svg\";\n\nconst LANGS = [\n {\n name: \"ru\",\n flag: ,\n },\n {\n name: \"en\",\n flag: ,\n },\n {\n name: \"zh\",\n flag: ,\n },\n];\n\nconst ChangeLanguage = observer(() => {\n const { userStore } = useStores();\n const { language } = userStore;\n const { i18n } = useTranslation();\n const [isOpen, changeIsOpen] = React.useState(false);\n const langRef = React.useRef();\n\n const handleClick = React.useCallback(\n ({ target }) => {\n if (!langRef.current) return;\n if (!langRef.current.contains(target)) {\n changeIsOpen(false);\n }\n },\n [isOpen],\n );\n\n let currentLang;\n\n if (language) {\n currentLang = LANGS.find((lang) => lang.name === language);\n } else {\n currentLang = LANGS[0];\n }\n\n const langList = LANGS.map((lang) => {\n if (lang.name !== currentLang.name) {\n return (\n
  • changeLang(lang.name)}>\n {lang.flag}\n
    {lang.name}
    \n
  • \n );\n }\n return null;\n });\n\n React.useEffect(() => {\n userStore.setLanguage(language);\n }, [language, userStore]);\n\n React.useEffect(() => {\n document.addEventListener(\"click\", handleClick);\n return () => document.removeEventListener(\"click\", handleClick);\n }, [isOpen]);\n\n const changeLang = (langName) => {\n i18n.changeLanguage(langName).then(() => {\n changeIsOpen(false);\n userStore.setLanguage(langName);\n });\n };\n\n return (\n changeIsOpen(!isOpen)}\n ref={langRef}\n >\n {currentLang.flag}\n
    {currentLang.name}
    \n \n\n {isOpen && (\n
      \n {langList}\n
    \n )}\n \n );\n});\n\nexport default ChangeLanguage;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from \"react\";\nimport { ReactSVG } from \"react-svg\";\nimport { NavLink, useHistory, Link, useLocation } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport cn from \"classnames\";\n\nimport ChangeLanguage from \"../ChangeLanguage/ChangeLanguage\";\nimport style from \"./header.module.scss\";\nimport logo from \"./logo.svg\";\nimport List from \"./list.svg\";\nimport Arrow from \"../ChangeLanguage/Arrow.svg\";\nimport { useStores } from \"../../models\";\nimport { observer } from \"mobx-react\";\n\nexport const Header = observer(({ changeModal }) => {\n const { userStore } = useStores();\n const headerListRef = React.useRef();\n const [show, toggleShow] = React.useState(false);\n const { t } = useTranslation();\n const history = useHistory();\n const [showUserMenu, toggleShowUserMenu] = React.useState(false);\n const location = useLocation();\n const handleClick = React.useCallback(\n ({ target }) => {\n if (!headerListRef.current) return;\n if (!headerListRef.current.contains(target)) {\n toggleShow(false);\n }\n },\n [show],\n );\n React.useEffect(() => {\n toggleShow(false);\n }, [location]);\n React.useEffect(() => {\n document.addEventListener(\"click\", handleClick);\n return () => document.removeEventListener(\"click\", handleClick);\n }, [show]);\n return (\n
    \n
    \n
    \n history.push(\"/\")}\n />\n
    \n
    \n
    \n \n {t(\"how_it_works\")}\n \n \n {t(\"take_a_test\")}\n \n
    \n
    \n \n {userStore.user.username ? (\n toggleShowUserMenu(!showUserMenu)}\n >\n
    \n \n {userStore.user.username}\n
    \n {showUserMenu && (\n
    \n \n {t(\"account\")}\n \n \n {t(\"logout\")}\n
    \n
    \n )}\n
    \n ) : (\n \n changeModal({ isOpen: true, name: \"LOG_IN\" })\n }\n >\n {t(\"log_in\")}\n
    \n )}\n
    \n
    \n \n
    \n
    \n \n toggleShow(!show)}\n className={show ? style.rotate : \"\"}\n />\n
    \n {show && (\n
    \n
    \n
    \n \n {t(\"how_it_works\")}\n \n {/* \n {t(\"faq\")}\n */}\n \n {t(\"take_a_test\")}\n \n
    \n
    \n {userStore.user.username ? (\n
    \n
    \n {userStore.user.username}\n
    \n \n {t(\"account\")}\n \n \n {t(\"logout\")}\n
    \n
    \n ) : (\n \n changeModal({ isOpen: true, name: \"LOG_IN\" })\n }\n >\n {t(\"log_in\")}\n
    \n )}\n
    \n
    \n \n )}\n \n \n \n
    \n );\n});\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport style from \"./attention.module.scss\";\n\nconst Attention = () => {\n const { t } = useTranslation();\n return (\n
    \n
    \n
    {t(\"attention\")}!
    \n
    \n {t(\"left_no_temperature\")}\n
    \n
    \n
    \n
    {t(\"before\")}
    \n
    {t(\"no_smoke\")}
    \n
    {t(\"no_temperature\")}
    \n
    \n
    \n );\n};\n\nexport default Attention;\n","import React from \"react\";\nimport ChangeLanguage from \"../ChangeLanguage/ChangeLanguage\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport style from \"./footer.module.scss\";\nimport logo from \"./logo.svg\";\n\nexport const Footer = ({ changeModal }) => {\n const { t } = useTranslation();\n\n return (\n \n );\n};\n","import React from \"react\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport { observer } from \"mobx-react-lite\";\nimport { useStores } from \"../../models\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const Toast = observer(() => {\n const { toastStore } = useStores();\n const { toasts } = toastStore;\n const { t } = useTranslation();\n\n React.useEffect(() => {\n if (toastStore.showMessage) {\n switch (toastStore.showMessage.type) {\n case \"error\":\n toast.error(t(toastStore.showMessage.message));\n break;\n case \"success\":\n toast.success(t(toastStore.showMessage.message));\n break;\n default:\n toast(t(toastStore.showMessage.message));\n }\n }\n toasts.remove();\n return () => null;\n }, [t, toastStore, toasts, toasts.length]);\n return ;\n});\n\nexport default Error;\n","import React from \"react\";\nimport AsyncSelect from \"react-select\";\n\nimport Field from \"../Field/Field\";\n\nexport const Select = ({ ...props }) => {\n const colourStyles = {\n control: () => ({\n border: \"none\",\n \"background-color\": \"transparent\",\n display: \"flex\",\n \"justify-content\": \"space-between\",\n height: \"50px\",\n \"hover:\": {\n border: \"none\",\n },\n }),\n valueContainer: (styles) => ({\n ...styles,\n padding: 0,\n }),\n };\n if (!props.options) console.log('noOptions for select', props)\n const value = props.options?.find((item) => item.value === props.value)\n const Component = (\n props.onChange(value)}\n onBlur={props.onBlur}\n touched={props.touched}\n noOptionsMessage={props.noOptionsMessage}\n isMulti={props.isMulti}\n />\n );\n return ;\n};\n","import React, { useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport ClickAwayListener from \"react-click-away-listener\";\nimport arrowDown from \"./arrow_down.svg\";\nimport { useTranslation } from \"react-i18next\";\nimport { isEmptyArray } from \"formik\";\n\nexport const MultiSelect = ({\n error,\n options,\n placeholder,\n noOptionsMessage,\n i18,\n value,\n disabled,\n onChange,\n}) => {\n const { t } = useTranslation();\n\n const [isOpen, setIsOpen] = React.useState(false);\n const [selectedOptions, setSelectedOptions] = React.useState({});\n const [countSelected, setCountSelected] = React.useState(0);\n\n const handleClickAway = () => {\n setIsOpen(false);\n };\n\n useEffect(() => {\n if (options && selectedOptions) {\n const optionsIds = options.map((item) => item.value);\n const selectedOptionsIds = Object.keys(selectedOptions);\n // check if optionsIds include selectedOptionsIds\n const isOptionsIdsIncludesSelectedOptionsIds = optionsIds.every((item) =>\n selectedOptionsIds.includes(item),\n );\n if (!isOptionsIdsIncludesSelectedOptionsIds) {\n setSelectedOptions({});\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options]);\n\n useEffect(() => {\n const selected = {};\n if (!isEmptyArray(value.filter(Boolean))) {\n value.filter(Boolean).forEach((item) => {\n selected[item] = true;\n });\n setSelectedOptions(selected);\n onChange(Object.keys(selected));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const cleanValues = value.filter(Boolean);\n const selected = {};\n cleanValues.forEach((item) => {\n selected[item] = true;\n });\n setSelectedOptions(selected);\n }, [value]);\n\n const toggling = () => setIsOpen((state) => !state);\n\n const onOptionClicked = (value) => () => {\n if (disabled) return;\n const newState = { ...selectedOptions };\n newState[value] = !newState[value];\n setSelectedOptions(newState);\n const selected = Object.keys(newState).filter(\n (key) => newState[key] === true,\n );\n onChange(selected);\n };\n\n React.useEffect(() => {\n setCountSelected(Object.values(selectedOptions).filter(Boolean).length);\n setIsOpen(false);\n }, [selectedOptions]);\n\n const currentPlaceholder =\n countSelected === 0 ? placeholder : `Выбрано: ${countSelected}`;\n\n const isSelected = (value) => {\n return selectedOptions[value];\n };\n\n if (!options || options.length === 0) {\n return null;\n }\n\n return (\n \n );\n};\n\nconst Error = styled(\"span\")`\n display: block;\n color: red;\n font-size: 12px;\n`;\n\nconst Label = styled(\"label\")`\n font-size: 14px;\n color: ${(props) => (props.error ? \"red\" : \"#767676\")};\n`;\n\nconst DropDownContainer = styled(\"div\")`\n width: 100%;\n border-radius: 10px;\n border: 1px solid #767676;\n border-color: ${(props) => props.error ?? \"red\"};\n height: 50px;\n line-height: 50px;\n padding-left: 15px;\n background-color: white;\n position: relative;\n cursor: pointer;\n &--disabled {\n background-color: #ececec;\n }\n &:after {\n position: absolute;\n content: \"\";\n top: 18px;\n right: 20px;\n width: 14px;\n height: 14px;\n background-image: url(${arrowDown});\n background-size: 14px 14px;\n transform: rotate(${(props) => (props.isOpen ? \"180deg\" : \"0deg\")});\n border-color: #fff transparent transparent transparent;\n }\n`;\n\nconst DropDownHeader = styled(\"div\")`\n /* margin-bottom: 0.8em; */\n`;\n\nconst DropDownListContainer = styled(\"div\")`\n z-index: 999;\n`;\n\nconst DropDownList = styled(\"ul\")`\n position: absolute;\n padding: 0;\n margin-top: 10px;\n margin-left: -15px;\n border-radius: 10px;\n border: 1px solid #e5e5e5;\n box-sizing: border-box;\n z-index: 1000;\n width: 100%;\n background-color: white;\n &:first-child {\n padding-top: 0.8em;\n }\n`;\n\nconst ListItem = styled(\"li\")`\n list-style: none;\n z-index: 1;\n margin-bottom: 0.8em;\n padding-left: 20px;\n color: ${(props) => props.isSelected && \"white\"};\n background-color: ${(props) => props.isSelected && \"#AFCC54\"};\n margin-bottom: 0;\n font-size: 16px;\n &:hover {\n background-color: #4fb200;\n color: white;\n }\n`;\n\nconst Tags = styled(\"div\")`\n display: flex;\n flex: 1;\n flex-flow: row wrap;\n margin-top: 10px;\n gap: 10px;\n`;\n\nconst Tag = styled(\"div\")`\n display: flex;\n padding: 10px;\n border-radius: 10px;\n /* margin-bottom: 10px; */\n color: white;\n flex: 1 auto;\n flex-flow: row nowrap;\n align-items: space-between;\n justify-content: space-between;\n background-color: #afcc54;\n`;\n\nconst CloseTag = styled(\"span\")`\n cursor: pointer;\n`;\n\nconst TitleTag = styled(\"div\")``;\n\nconst NoOptionsMessage = styled(\"div\")`\n font-size: 15px;\n padding: 20px;\n line-height: 20px;\n`;\n","import React, { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSpring, animated } from \"react-spring\";\n\nimport { Button } from \"../../../../components\";\nimport styleHome from \"../../home.module.scss\";\nimport style from \"./mainSection.module.scss\";\nimport peopleImg from \"../../img/people.svg\";\n\nconst calc = (x, y) => [\n -(y - window.innerHeight / 2) / 20,\n (x - window.innerWidth / 2) / 20,\n 1.1,\n];\nconst trans = (x, y, s) =>\n `perspective(600px) rotateX(${x}deg) rotateY(${y}deg) scale(${s})`;\n\nexport const MainSection = () => {\n const [props, set] = useSpring(() => ({\n xys: [0, 0, 1],\n config: { mass: 5, tension: 350, friction: 40 },\n }));\n\n const history = useHistory();\n\n const handleClick = () => {\n history.push(\"/order\");\n };\n\n const { t } = useTranslation();\n\n const [isHover, setIsHover] = React.useState(false);\n\n useEffect(() => {\n const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\n if (isMobile) {\n setIsHover(true);\n }\n }, []);\n\n return (\n
    \n
    \n
    \n setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n className={`${style[\"col-about\"]} ${isHover ? style[\"hover\"] : \"\"}`}\n >\n

    {t(\"landing.main.title\")}

    \n setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n className={`${style[\"m-sub-title\"]} ${isHover ? style[\"hover\"] : \"\"}`}\n >\n {t(\"landing.main.sub_title\")}\n
    \n {isHover && (\n

    setIsHover(true)} onMouseLeave={() => setIsHover(false)}>\n {t(\"biomaterial_collection_time\")}\n

    \n )}\n \n
    \n\n
    \n \n set({ xys: calc(x, y) })\n }\n onMouseLeave={() => set({ xys: [0, 0, 1] })}\n style={{ transform: props.xys.interpolate(trans) }}\n >\n \"people\"\n \n
    \n
    \n \n \n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport styleHome from \"../../home.module.scss\";\nimport style from \"./servicesSection.module.scss\";\n\nexport function ServicesSection() {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n
      \n
    • \n
      \n \n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n \n
      \n
      \n {t(\"landing.services.service_1_title\")}\n
      \n
      \n {t(\"landing.services.service_1_text\")}\n
      \n
    • \n\n
    • \n
      \n \n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n \n
      \n
      \n {t(\"landing.services.service_2_title\")}\n
      \n
      \n {t(\"landing.services.service_2_text\")}\n
      \n
    • \n\n
    • \n
      \n \n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n {\" \"}\n \n
      \n
      \n {t(\"landing.services.service_3_title\")}\n
      \n
      \n {t(\"landing.services.service_3_text\")}\n
      \n
    • \n
    \n
    \n
    \n );\n}\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport styleHome from \"../../home.module.scss\";\nimport style from \"./stepsSection.module.scss\";\n\nimport step1Img from \"../../img/step1.svg\";\nimport step2Img from \"../../img/step2.svg\";\nimport step3Img from \"../../img/step3.svg\";\nimport step4Img from \"../../img/step4.svg\";\n\nexport function StepsSection() {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n
    \n
    \n {t(\"landing.steps.title\")}\n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n}\n","import React, { useState } from \"react\";\nimport style from \"./question.module.scss\";\n\nexport function Question(props) {\n const [isActive, setActive] = useState(false);\n\n const handleToggle = () => setActive(!isActive);\n\n return (\n
  • \n
    \n {props.question.title}\n
    \n
    \n {props.question.answer}\n
    \n
  • \n );\n}\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport styleHome from \"../../home.module.scss\";\nimport style from \"./questionsSection.module.scss\";\nimport { Question } from \"../Question\";\n\nexport function QuestionsSection() {\n const { t } = useTranslation();\n\n const questions = [\n {\n title: t(\"landing.questions.question_1\"),\n answer: t(\"landing.questions.answer_1\"),\n },\n {\n title: t(\"landing.questions.question_2\"),\n answer: t(\"landing.questions.answer_2\"),\n },\n {\n title: t(\"landing.questions.question_3\"),\n answer: t(\"landing.questions.answer_3\"),\n },\n {\n title: t(\"landing.questions.question_4\"),\n answer: t(\"landing.questions.answer_4\"),\n },\n {\n title: t(\"landing.questions.question_5\"),\n answer: t(\"landing.questions.answer_5\"),\n },\n ];\n\n return (\n
    \n
    \n
    \n
    \n {t(\"landing.questions.title\")}\n
    \n
    \n
      \n {questions.map((item, index) => (\n \n ))}\n
    \n
    \n
    \n );\n}\n","import React from \"react\";\nimport {\n MainSection,\n ServicesSection,\n StepsSection,\n QuestionsSection,\n} from \"./components\";\n\nexport const Home = () => {\n return (\n
    \n \n \n \n \n
    \n );\n};\n","import React from \"react\";\nimport cn from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport { Link } from \"react-router-dom\";\n\n// import { Button } from \"../../components\";\nimport { withTranslation } from \"react-i18next\";\nimport {\n Table as RTable,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n} from \"react-super-responsive-table\";\nimport \"./responsible.css\";\n\nimport style from \"./orders.module.scss\";\n\nconst getpaymentMethod = (paymentMethod, t) => (\n
    {t(paymentMethod)}
    \n);\nconst getPaid = (isPaid, t) => (\n
    {t(isPaid)}
    \n);\n\nconst Table = observer(({ orders = [], t }) => (\n
    \n \n \n \n {t(\"order_number\")}\n {t(\"direction_number\")}\n {t(\"price\")}\n {t(\"pay_method\")}\n {t(\"is_paid\")}\n {t(\"pay\")}\n \n \n \n {orders.map((order) => (\n \n {order.id}\n \n {console.log(order.patients, null, 2)}\n {order.patients.map((p) => (\n

    {p.referral?.referralId}

    \n ))}\n \n {`${order.sum} \\u20bd`}\n \n {getpaymentMethod(order.paymentMethod, t)}\n \n \n {getPaid(order.paid ? \"paid\" : \"unpaid\", t)}\n \n \n {order.paymentMethod === \"online\" && !order.paid && (\n \n {t(\"pay\")}\n \n )}\n \n \n {t(\"go_to_order\")}\n \n \n ))}\n \n
    \n
    \n));\n\nexport default withTranslation()(Table);\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Table from \"./Table\";\nimport Panel from \"../../components/Panel/Panel\";\nimport style from \"./orders.module.scss\";\nimport { useStores } from \"../../models\";\nimport { observer } from \"mobx-react\";\nimport { Lines } from \"react-preloaders\";\n\nexport const Orders = observer(() => {\n const { t } = useTranslation();\n const { orderStore, referralStore, placeStore } = useStores();\n const { pending, orders } = orderStore;\n const [ loading, setLoading ] = React.useState(true)\n React.useEffect(() => {\n const loadData = async () => {\n await placeStore.getPlaces();\n await referralStore.getRefferals();\n await orderStore.getOrders();\n }\n loadData().then(() => setLoading(false));\n }, [orderStore, placeStore, referralStore]);\n if (loading) {\n return (\n
    \n \n
    \n );\n }\n return (\n
    \n
    \n
    \n \n \n \n \n \n \n );\n});\n","import React from \"react\";\nimport { MainForm } from \"../../components\";\nimport style from \"./order.module.scss\";\n\nexport const Order = ({ ...props }) => {\n return (\n
    \n \n
    \n );\n};\n","import React from \"react\";\n\nimport style from \"./politics.module.scss\";\n\nexport const PrivacyPolicyRU = () => (\n
    \n
    \n

    Политика конфиденциальности сервиса «Клиника Архимед»

    \n Перед началом использования сервиса «Клиника Архимед» (далее - Сервис),\n пожалуйста, ознакомьтесь с условиями настоящей политики конфиденциальности\n (далее - Политика конфиденциальности) и\n \n Пользовательского соглашения использования Сервиса\n \n . Факт использования Сервиса любым способом (как намеренным, так и\n непреднамеренным) признается акцептом, то есть полным и безоговорочным\n согласием любого пользователя сервиса (далее - Пользователь), использовать\n Сервис на изложенных ниже условиях. Использование Сервиса допустимо\n исключительно на условиях\n \n Пользовательского соглашения\n \n и Политики конфиденциальности. Если Пользователь не принимает условия\n указанных документов в полном объеме, он не вправе использовать Сервис в\n каких-либо целях.\n
    \n
    \n

    Термины и определения

    В настоящей\n Политике конфиденциальности используются следующие термины:\n
    \n
      \n
    1. \n «Персональные данные» - любая информация, относящаяся к прямо или\n косвенно определенному или определяемому Пользователю Сервиса\n (физическому лицу, субъекту персональных данных);\n
    2. \n
    3. \n «Обработка персональных данных» - любое действие (операция) или\n совокупность действий (операций), совершаемых с использованием средств\n автоматизации или без использования таких средств с персональными\n данными, включая сбор, запись, систематизацию, накопление, хранение,\n уточнение (обновление, изменение), извлечение, использование, передачу\n (распространение, предоставление, доступ), обезличивание,\n блокирование, удаление, уничтожение персональных данных;\n
    4. \n
    5. \n «Конфиденциальность персональных данных» - обязательное для соблюдения\n Оператором или иным получившим доступ к персональным данным лицом\n требование не допускать их распространения без согласия субъекта\n персональных данных или наличия иного законного основания.\n
    6. \n
    \n
    \n

    Общие положения

    \n
      \n
    1. \n Настоящая Политика конфиденциальности представляет собой публичную\n оферту ООО \"КЛИНИКА АРХИМЕД\", ИНН 5003055720, адрес: 119261, г.\n Москва, ул. Вавилова, д.68, корпус 2, email: info@arhimedlab.ru,\n телефон: +7 (499) 288 07 26 (далее - Оператор) и определяет порядок\n обработки и защиты информации Пользователей Сервиса. \n
    2. \n
    3. \n Целью настоящей Политики конфиденциальности является обеспечение\n надлежащей защиты информации о Пользователях, в том числе их\n персональных данных, от несанкционированного доступа и разглашения.\n
    4. \n
    5. \n Отношения, связанные со сбором, хранением, распространением и защитой\n информации о Пользователях, регулируются настоящей Политикой\n конфиденциальности, иными официальными документами Оператора и\n действующим законодательством Российской Федерации.\n
    6. \n
    7. \n Политика конфиденциальности вступает в силу с момента авторизации\n Пользователя. \n
    8. \n
    \n
    \n

    Условия пользования  Сервисом

    \n Оператор, действуя разумно и добросовестно, считает, что при использовании\n Сервиса Пользователь:\n
    \n
      \n
    1. \n обладает всеми необходимыми правами, позволяющими ему осуществлять\n регистрацию и использовать Сервис;\n
    2. \n
    3. \n указывает достоверную информацию о себе в объемах, необходимых для\n пользования Сервисом;\n
    4. \n
    5. \n ознакомлен с настоящей Политикой конфиденциальности, выражает свое\n согласие с ее положениями и принимает на себя указанные в ней права и\n обязанности.\n
    6. \n
    \n Оператор не проверяет достоверность получаемой (собираемой) информации о\n Пользователях, за исключением случаев, когда такая проверка необходима в\n целях исполнения Оператором обязательств перед Пользователем.\n
    \n
    \n

    Состав информации о Пользователях

    \n Оператор может собирать следующие категории персональных данных о\n Пользователе во время использования Сервисов:\n
    \n
      \n
    1. \n информация, предоставленная Пользователем при регистрации\n (авторизации), такая как: номер телефона, фамилия, имя, отчество (если\n имеется), дата рождения. Пользователю для целей безопасного\n использования сервиса, а также надлежащего уведомления, может быть\n направлен в SMS-сообщениях код-пароль для авторизации, ссылка на\n запись на прием, а также ссылка на результат анализа;\n
    2. \n
    3. серия и номер паспорта для записи на сдачу анализов;
    4. \n
    5. дата и время осуществления доступа к Сервису;
    6. \n
    7. \n дополнительно предоставляемые Пользователями по запросу Оператора в\n целях исполнения Оператором обязательств перед Пользователями.\n Оператор вправе, в частности, запросить у Пользователя копию\n документа, удостоверяющего личность, либо иного документа, содержащего\n имя, фамилию, фотографию Пользователя, а также иную дополнительную\n информацию, которая, по усмотрению Оператора, будет являться\n необходимой и достаточной для идентификации такого Пользователя и\n позволит исключить злоупотребления и нарушения прав третьих лиц. \n
    8. \n
    9. \n данные о состоянии здоровья (о результатах медицинских обследований,\n анализов и т.п.);\n
    10. \n
    11. \n иная информация, необходимая для обработки в соответствии с условиями,\n регулирующими использование Сервиса.\n
    12. \n
    \n Оператор не собирает данные с целью составления «портрета» Пользователя в\n той степени, при которой это может существенно повлиять на права\n Пользователя и свободы в соответствии с применимым законодательством.\n
    \n
    \n

    Цели обработки персональных данных

    \n Оператор всегда обрабатывает персональные данные в определенных целях и\n только те персональные данные, которые имеют отношение к достижению таких\n целей. В частности, Оператор обрабатывает персональные данные\n Пользователей для следующих целей:\n
    \n
      \n
    1. \n выполнение обязательств Оператора перед Пользователями в отношении\n использования Сервиса;\n
    2. \n
    3. предоставления доступа к Сервису;
    4. \n
    5. \n осуществления связи с Пользователем для направления уведомлений,\n запросов и информации, относящейся к работе Сервиса, выполнения\n соглашений и обработки запросов Пользователя;\n
    6. \n
    7. повышения удобства использования Сервиса;
    8. \n
    9. защиты прав Пользователя и Оператора.
    10. \n
    \n
    \n

    Условия обработки персональных данных

    \n Обработка персональных данных осуществляется на основе принципов:\n
    \n
      \n
    1. Законности целей и способов обработки персональных данных;
    2. \n
    3. Добросовестности;
    4. \n
    5. \n Соответствия целей обработки персональных данных целям, заранее\n определенным и заявленным при сборе персональных данных, а также\n полномочиям Оператора;\n
    6. \n
    7. \n Соответствия объема и характера обрабатываемых персональных данных,\n способов обработки персональных данных целям обработки персональных\n данных;\n
    8. \n
    9. \n Недопустимости объединения созданных для несовместимых между собой\n целей баз данных, содержащих персональные данные.\n
    10. \n
    \n Оператор осуществляет обработку персональных данных Пользователя в целях\n исполнения договора между Оператором и Пользователем на оказание платных\n медицинских услуг. В силу статьи 6 Федерального закона от 27.07.2006 №\n 152-ФЗ «О персональных данных» отдельное согласие Пользователя на\n обработку его персональных данных не требуется. В силу п.п. 2 п. 2 статьи\n 22 указанного закона Оператор вправе осуществлять обработку персональных\n данных без уведомления уполномоченного органа по защите прав субъектов\n персональных данных. \n
    \n Если Пользователь считает, что какая-либо информация, которую Оператор\n хранит/использует некорректная или неполная, Пользователь вправе войти в\n свою учетную запись и исправить информацию самостоятельно.\n
    \n Если это предусмотрено применяемым законодательством, Пользователь вправе:\n
    \n
      \n
    1. \n требовать удаления персональной информации или ее части, а также\n отзывать согласие на обработку персональной информации;\n
    2. \n
    3. требовать ограничений на обработку персональной информации;
    4. \n
    5. \n возражать против обработки персональной информации, если это\n предусмотрено применимым законодательством.\n
    6. \n
    \n
    \n

    \n Хранение и использование персональных данных\n

    \n
      \n
    1. \n Персональные данные Пользователей будут обрабатываться и храниться в\n Российской Федерации на Яндекс.Облаке.\n
    2. \n
    3. \n Персональные данные пользователей хранятся исключительно на\n электронных носителях и обрабатываются с использованием\n автоматизированных систем, за исключением случаев, когда\n неавтоматизированная обработка персональных данных необходима в связи\n с исполнением требований законодательства.\n
    4. \n
    5. \n Оператор принимает все необходимые меры для защиты персональных данных\n Пользователя от неправомерного доступа, изменения, раскрытия или\n уничтожения. Оператор предоставляет доступ к персональным данным\n Пользователя только тем Пользователям/лицам, которым эта информация\n необходима с целью исполнения назначения Сервиса и для обеспечения\n функционирования Сервиса, а также иных действий, незапрещённых\n российским законодательством. \n
    6. \n
    7. \n Оператор вправе использовать предоставленную Пользователем информацию,\n в том числе персональные данные, в целях обеспечения соблюдения\n требований действующего законодательства Российской Федерации (в том\n числе в целях предупреждения и/или пресечения незаконных и/или\n противоправных действий Пользователей). \n
    8. \n
    9. \n Раскрытие предоставленной Пользователем информации может быть\n произведено лишь в соответствии с действующим законодательством\n Российской Федерации по требованию суда, правоохранительных органов, а\n равно в иных предусмотренных законодательством Российской Федерации\n случаях. \n
    10. \n
    11. \n Пользователь уведомлен и согласен с тем, что в целях контроля качества\n Оператор вправе проводить исследования переданной и полученной\n Пользователем информации в обезличенном агрегированном виде без\n возможности отнести такую информацию к прямо или косвенно\n определенному или определяемому Пользователю. \n
    12. \n
    13. \n Оператор будет хранить персональные данные столько времени, сколько\n это необходимо для достижения цели, для которой она была собрана, или\n для соблюдения требований законодательства и нормативных актов.\n
    14. \n
    \n
    \n

    Передача персональных данных

    \n
      \n
    1. \n Персональные данные Пользователей не передаются каким-либо третьим\n лицам, за исключением случаев, прямо предусмотренных настоящей\n Политикой конфиденциальности и для целей использования Сервиса.\n
    2. \n
    3. \n Персональные данные Пользователей могут быть переданы третьим лицам\n для осуществления функций платежной системы с условиям принятия\n данными лицами обязательств по сохранению конфиденциальности данных\n Пользователей. Для осуществления платежей используется сервис\n cloudpayments.ru.\n
    4. \n
    5. \n В иных случаях при указании Пользователя или при наличии согласия\n Пользователя возможна передача персональных данных Пользователя\n третьим лицам-контрагентам Оператора с условием принятия такими\n контрагентами обязательств по обеспечению конфиденциальности\n полученной информации.\n
    6. \n
    7. \n Предоставление персональных данных Пользователей по запросу\n государственных органов (органов местного самоуправления)\n осуществляется в порядке, предусмотренном законодательством.\n
    8. \n
    \n
    \n

    Уничтожение персональных данных

    \n Персональные данные пользователя уничтожаются при:\n
    \n
      \n
    1. \n самостоятельном удалении Пользователем данных из своего Личного\n кабинета;\n
    2. \n
    3. \n удалении Администрацией Сервиса информации, размещаемой Пользователем,\n а также Личного кабинета Пользователя в случаях, установленных\n установленных действующим законодательством.\n
    4. \n
    \n В случае удаления Личного кабинета Оператор хранит на своих электронных\n носителях персональные и иные необходимые данные Пользователя в течение\n необходимого и установленного действующим законодательством Российской\n Федерации срока. \n
    \n
    \n

    Прочие условия

    \n
      \n
    1. \n Настоящая Политика конфиденциальности может быть изменена Оператором\n без какого-либо специального уведомления, новая редакция Политики\n конфиденциальности вступает в силу с момента ее размещения в сети\n Интернет по указанному в настоящем пункте адресу, если иное не\n предусмотрено новой редакцией Политики конфиденциальности. Действующая\n редакция Политики конфиденциальности находится на странице по адресу:\n \n https://life-air.org/tpost/zhmfifxksk-politika-konfidentsialnosti-servisa-life\n \n , если в Политике конфиденциальности не указано иное.\n
    2. \n
    3. \n Настоящая Политика конфиденциальности регулируется и толкуется в\n соответствии с законодательством Российской Федерации. По всем\n вопросам, не урегулированным настоящей Политикой конфиденциальности,\n стороны руководствуются действующим законодательством Российской\n Федерации. \n
    4. \n
    5. \n Если по каким-либо причинам одно или несколько условий настоящей\n Политики конфиденциальности будут признаны недействительными или не\n имеющими юридической силы, это не окажет влияния на действительность\n или применимость остальных условий Политики конфиденциальности.\n
    6. \n
    7. \n В случае если Оператором были внесены какие-либо изменения в настоящую\n Политику конфиденциальности, с которыми Пользователь не согласен, он\n обязан прекратить использование Сервиса.\n
    8. \n
    9. \n Пользователь предоставляет Оператору право направлять Пользователю на\n электронную почту или номер мобильного телефона информационные и\n рекламные сообщения о запланированных Консультациях, результатах\n Консультаций, возможности и стоимости получения Консультаций, а также\n о порядке использования Сервиса. Пользователь осведомлен, что вправе\n отказаться от получения сообщений в любой момент, уведомив Оператора с\n использованием указанных адреса электронной почты или номера\n мобильного телефона Пользователя. \n
    10. \n
    \n
    \n
    \n);\n","import React from \"react\";\n\nimport style from \"./politics.module.scss\";\n\nexport const PrivacyPolicyENG = () => (\n
    \n
    \n

    Privacy Policy

    \n Before using the «Клиника Архимед» service (the Service), read this\n Privacy Policy (the Privacy Policy) and Terms of Use for the\n Service.  The fact of using the Service in any manner (both\n intentionally and unintentionally) is recognized as acceptance, i.e. the\n full and unconditional consent of any user of the Service (the User) to\n use the Service on the conditions set out below.  The Service may be\n used only under the terms and conditions of the Terms of Use and the\n Privacy Policy.  If the User does not fully accept the terms and\n conditions of these documents, the User is not entitled to use the Service\n for any purpose.\n
    \n
    \n
    \n

    Terms and definitions

    The following\n terms are used in this Privacy Policy:
    \n
    \n
      \n
    1. \n Personal Data is any information related to a\n directly or indirectly defined or determined User of the Service (an\n individual, personal data subject). \n
    2. \n
    3. \n Processing of Personal Data is any action (operation)\n or a set of actions (operations) performed, using automation tools or\n without using such tools, with personal data including collection,\n recording, systematization, accumulation, storage, clarification\n (updating, changing), extraction, use, transfer (distribution,\n provision, access), depersonalization, blocking, deletion, destruction\n of personal data.\n
    4. \n
    5. \n Confidentiality of Personal Data is a mandatory\n requirement for the Operator or other person who has gained access to\n the personal data to prevent the personal data distribution without\n the consent of the personal data subject or any other legal grounds.\n
    6. \n
    \n
    \n
    \n

    \n General provisions\n

    \n
      \n
    1. \n This Privacy Policy is a public offer of ARHIMED CLINIC LLC, INN (TIN)\n 5003055720, address: 68 Vavilova St, building 2, Moscow 119261, email:\n info@arhimedlab.ru, tel.: +7 (499) 288 07 26 (the Operator), which\n defines the processing and protection procedures of the information of\n the User of the Service. \n
    2. \n
    3. \n The purpose of this Privacy Policy is to ensure adequate protection of\n information about the Users, including their personal data, from\n unauthorized access and disclosure. \n
    4. \n
    5. \n Collection, storage, distribution and protection of information about\n the Users are governed by this Privacy Policy, other official\n documents of the Operator and Russian law. \n
    6. \n
    7. \n The Privacy Policy comes into force on the User authorization. \n
    8. \n
    \n
    \n
    \n

    \n Terms of use of the Service \n

    \n The Operator, acting reasonably and in good faith, believes that when\n using the Service, the User: 
    \n
    \n
      \n
    1. \n Has all the rights necessary to register with and use the\n Service. \n
    2. \n
    3. \n Indicates reliable information about the User to the extent necessary\n to use the Service. \n
    4. \n
    5. \n Is familiar with this Privacy Policy, agrees with its provisions and\n assumes the rights and obligations specified in it. \n
    6. \n
    \n The Operator does not verify the accuracy of the information received\n (collected) about the Users, except for cases when such verification is\n necessary in order to fulfill the Operator's obligations to the User.\n
    \n
    \n
    \n

    Content of the User data

    The Operator\n may collect the following categories of the User personal data while using\n the Services: 
    \n
    \n
      \n
    1. \n Information provided by the User during registration (authorization),\n i.e. phone number, last name, first name, patronymic (if any), birth\n date.  For the purposes of safe use of the Service and proper\n notification, the User can be sent SMS messages with a password code\n for authorization, a link to an appointment, as well as a link to the\n test result.\n
    2. \n
    3. The passport series and number to register for a test
    4. \n
    5. Date and time of access to the Service
    6. \n
    7. \n Data additionally provided by the Users at the request of the Operator\n in order to fulfill the Operator's obligations to the Users.  The\n Operator is entitled, in particular, to request from the User a copy\n of an identity document or other document stating the User's first\n name, last name, photo and other information that, at the Operator's\n discretion, will be necessary and sufficient to identify such a User\n and will allow exclude improper use and violation of the rights of\n third parties.  \n
    8. \n
    9. \n Health state data (the results of medical examinations, tests,\n etc.) \n
    10. \n
    11. \n Other information required for processing in accordance with the\n provisions governing the use of the Service.\n
    12. \n
    \n The Operator does not collect data for the purpose of creating the User\n profile to the extent that this may significantly affect the User's rights\n and freedoms in accordance with applicable law.  
    \n
    \n
    \n

    \n Purposes of Processing of Personal Data \n

    \n The Operator always processes personal data for specific purposes and only\n the personal data that is relevant to the achievement of such goals. \n In particular, the Operator processes the User personal data for the\n following purposes:\n
    \n
    \n
      \n
    1. \n To fulfill the obligations of the Operator to the Users on the use of\n the Service.\n
    2. \n
    3. To provide access to the Service.
    4. \n
    5. \n To communicate with the User and send notifications, requests and\n information on the operation of the Service, fulfill agreements and\n process the User requests.\n
    6. \n
    7. To improve the usability of the Service.
    8. \n
    9. To protect the rights of the User and Operator.
    10. \n
    \n
    \n
    \n

    \n \n Terms and conditions of Processing of Personal Data \n \n

    \n The Processing of Personal Data is performed based on the following\n principles: 
    \n
    \n
      \n
    1. \n The legality of the purposes and methods of processing the personal\n data.\n
    2. \n
    3. Good faith.
    4. \n
    5. \n Compliance of the purposes of Processing of Personal Data with the\n purposes preliminarily determined and announced when collecting the\n personal data, as well as with the powers of the Operator.\n
    6. \n
    7. \n Compliance of the volume and nature of the processed personal data,\n methods of processing of the personal data to the purposes of\n Processing of Personal Data.\n
    8. \n
    9. \n Inadmissibility of combining databases, containing personal data,\n created for incompatible purposes.\n
    10. \n
    \n The Operator processes the User's personal data in order to fulfill the\n paid medical services agreement between the Operator and the User. \n According to Article 6 of the On Personal Data Federal Law No.\n 152-ФЗ(FZ) of July 27, 2006 a specific consent of the User for the\n processing of their personal data is not required.  According to\n Article 22.2.2 of the above law, the Operator is entitled to process the\n personal data without notifying the authorized body for the protection of\n the rights of subjects of the personal data. \n
    \n If the User believes that any information that the Operator stores/uses is\n incorrect or incomplete, the User is entitled to log into the User account\n and correct the information.
    \n If this is provided by applicable law, the User is entitled to: {\" \"}\n
    \n
    \n
      \n
    1. \n Require the deletion of personal data or part of it and to withdraw\n consent to the Processing of Personal Data\n
    2. \n
    3. \n Request for restrictions on the Processing of Personal Data \n
    4. \n
    5. \n Object to the Processing of Personal Data, if provided by applicable\n law.\n
    6. \n
    \n
    \n
    \n

    \n Storage and use of personal data \n

    \n
      \n
    1. \n The User Personal Data will be processed and stored in the Russian\n Federation in Yandex.Cloud. \n
    2. \n
    3. \n The User Personal Data is stored strictly on electronic media and\n processed using automated systems, except for cases when manual\n processing of the personal data is necessary subject to law.\n
    4. \n
    5. \n The Operator takes all necessary measures to protect the User's\n Personal Data from unauthorized access, alteration, disclosure or\n destruction.  The Operator provides access to the User's Personal\n Data only to those Users/individuals who need this information for the\n purposes of the Service and to ensure the functioning of the Service\n and to perform other actions not prohibited by Russian law.  \n
    6. \n
    7. \n The Operator is entitled to use the information provided by the User,\n including the Personal Data, in order to ensure compliance with\n Russian law and also to prevent and/or terminate illegal and/or\n unlawful actions of the Users. \n
    8. \n
    9. \n The information provided by the User may be disclosed only in\n accordance with Russian law at the request of the court, law\n enforcement agencies and in other cases stipulated by Russian law.\n  \n
    10. \n
    11. \n The User is notified and agrees that, for the purposes of quality\n control, the Operator is entitled to analyze the information\n transferred and received by the User in anonymized, aggregated form\n without the possibility of attributing such information to a directly\n or indirectly identified or being identified User.  \n
    12. \n
    13. \n The Operator will store the personal data for as long as necessary to\n achieve the purpose it was collected for or to comply with the laws\n and regulations.\n
    14. \n
    \n
    \n
    \n

    \n Transfer of personal data \n

    \n
      \n
    1. \n The Personal Data of the Users is not transferred to any third\n parties, except for cases expressly provided for in this Privacy\n Policy and for the purposes of using the Service. \n
    2. \n
    3. \n The Personal Data of the Users may be transferred to third parties to\n support the function of a payment system if such third parties accept\n obligations to maintain the confidentiality of the User Personal\n Data.  The{\" \"}\n cloudpayments.ru service is\n used to make payments. \n
    4. \n
    5. \n In other cases, if the User is specified or there is the consent of\n the User, the User's Personal Data may be transferred to third\n parties, the counterparties of the Operator, if such counterparties\n accept obligations to maintain the confidentiality of the User\n Personal Data.\n
    6. \n
    7. \n The Personal Data of the Users is provided at the request of\n government bodies (local authorities) in the manner prescribed by law.\n
    8. \n
    \n
    \n
    \n

    \n Destruction of the Personal Data \n

    \n The Personal Data of the User is destroyed when: 
    \n
    \n
      \n
    1. The User deletes data from the Account of the User. 
    2. \n
    3. \n The Administration of the Service removes information posted by the\n User, as well as the Account of the User in cases established by\n law. \n
    4. \n
    \n If the Account is deleted, the Operator stores the personal and other\n necessary data of the User on its electronic media for the period\n necessary and established by Russian law. \n
    \n
    \n
    \n

    Other terms and conditions

    \n
      \n
    1. \n This Privacy Policy may be amended by the Operator without any special\n notice, and the new version of the Privacy Policy comes into force on\n its posting on the Internet at the address specified in this\n paragraph, unless otherwise provided by the new version of the Privacy\n Policy.  The effective version of the Privacy Policy is available\n at: https://life-air.org/en/tpost/1zi6ad6ia2-privacy-policy , unless\n otherwise specified in the Privacy Policy.\n
    2. \n
    3. \n This Privacy Policy is governed by and construed in accordance with\n the laws of the Russian Federation.  For all issues not covered\n by this Privacy Policy, the parties are governed by Russian law.\n  \n
    4. \n
    5. \n If any provision of this Privacy Policy is found invalid or\n unenforceable for any reason, the validity or enforceability of the\n remaining provisions of the Privacy Policy is not in any way affected\n or impaired. \n
    6. \n
    7. \n If the Operator has made any amendments to this Privacy Policy the\n User does not agree with, the Operator shall stop using the Service.\n
    8. \n
    9. \n The User grants the Operator the right to send information and\n advertising messages about the scheduled Consultations, the results of\n the Consultations, the availability and price of the Consultations and\n the procedure for using the Service to the User by e-mail or to mobile\n phone number. The User is aware that the User is entitled to refuse to\n receive messages at any time by notifying the Operator at the\n specified email address or to the mobile phone number of the\n User. \n
    10. \n
    \n
    \n
    \n);\n","import React from \"react\";\n\nimport { PrivacyPolicyRU } from \"./PrivacyPolicyRU\";\nimport { PrivacyPolicyENG } from \"./PrivacyPolicyENG\";\n\nimport i18n from \"../../i18n/i18n\";\n\nexport const PrivacyPolicy = () => {\n const [curLanguage, changeCurLanguage] = React.useState(i18n.language);\n React.useEffect(() => {\n changeCurLanguage(i18n.language);\n }, []);\n if (curLanguage === \"ru\") {\n return ;\n } else {\n return ;\n }\n};\n","import React from \"react\";\n\nimport style from \"./politics.module.scss\";\n\nexport const TermOfUseRU = () => (\n
    \n
    \n

    \n Пользовательское соглашение об использовании сервиса «Клиника Архимед»\n

    \n Сервис «Клиника Архимед» (далее - Сервис) создан для организации процесса\n оперативной дистанционной записи пациента (далее также - Пользователь) на\n прием в соответствующую медицинскую организацию/лабораторию с целью сдачи\n анализов (далее - услуга) и получения результата посредством предлагаемого\n в Сервисе функционала.\n
    \n Сервис представляет собой веб-приложение для мобильных устройств и\n компьютеров, позволяющее авторизованным Пользователям заказывать услугу в\n режиме онлайн и, с помощью Сервиса, организовать распределение\n вознаграждения за оказанную услугу.\n
    \n Перед началом использования Сервиса, пожалуйста, ознакомьтесь с условиями\n настоящего Пользовательского соглашения. Факт использования Сервиса любым\n способом (как намеренным, так и непреднамеренным) признается акцептом, то\n есть полным и безоговорочным согласием Пользователя, использовать Сервис\n на изложенных ниже условиях. Использование Сервиса допустимо исключительно\n на условиях настоящего Пользовательского соглашения. Если Пользователь не\n принимает условия Пользовательского соглашения в полном объеме, он не\n вправе использовать Сервис в каких-либо целях.\n
    \n
    \n

    Общие положения

    \n
      \n
    1. \n Настоящее соглашение об использовании Сервиса (далее - Соглашение)\n представляет собой публичную оферту ООО \"КЛИНИКА АРХИМЕД\", ИНН\n 5003055720, адрес: 119261, г. Москва, ул. Вавилова, д.68, корпус 2,\n email: info@arhimedlab.ru, телефон: +7 (499) 288 07 26 (далее -\n Оператор), в соответствии с которой Оператор предоставляет\n зарегистрированным Пользователям услуги по обеспечению дистанционной\n записи на прием в медицинскую организацию/лабораторию с целью сдачи\n анализов и получения результата анализа в виде медицинской справки,\n посредством предлагаемого в Сервисе функционала, а также услуги по\n перечислению данным организациям денежных средств в качестве оплаты\n оказанных Пользователям медицинских услуг, в порядке и на условиях,\n изложенных в настоящем Соглашении.\n
    2. \n
    3. \n Настоящее Соглашение является юридически обязательным соглашением\n между Пользователем и Оператором, предметом которого является\n предоставление Оператором Пользователю доступа к использованию Сервиса\n и его функционала. \n
    4. \n
    5. \n Сервис предлагает Пользователям обратиться за получением платных\n медицинских услуг, а также осуществить иные действия, предусмотренные\n явными функциями Сервиса. Все существующие на данный момент функции\n Сервиса, а также любое развитие их и/или добавление новых является\n предметом настоящего Соглашения.\n
    6. \n
    7. \n Оператор в рамках функционирования Сервиса самостоятельно не оказывает\n никаких медицинских или консультационных услуг. Сервис обеспечивает\n доступ к авторизованным медицинским организациям, а также удобство\n коммуникации и расчетов Пользователей.\n
    8. \n
    9. \n Соглашение вступает в силу с момента авторизации Пользователя.\n Авторизация в Сервисе осуществляется Пользователем в соответствующем\n разделе на сайте Оператора при помощи логина (номера мобильного\n телефона или адреса электронной почты) и кода авторизации, полученного\n Пользователем от Оператора на адрес электронной почты или номер\n мобильного телефона. После авторизации Пользователь назначает в\n Сервисе пароль для своей учетной записи. Доступ к Сервису\n предоставляется по логину и паролю Пользователя. Соглашение действует\n в отношении соответствующего Пользователя до момента его расторжения в\n установленном Соглашением порядке.\n
    10. \n
    \n
    \n

    Порядок оплаты услуг

    \n
      \n
    1. \n Услуги с использованием Сервиса предоставляются непосредственно\n авторизованными в Сервисе медицинскими организациями на основании\n заключенных с Пользователями договоров оказания платных медицинских\n услуг. Текст договора доводится до сведения Пользователей перед\n оказанием услуги.\n
    2. \n
    3. \n Услуги оказываются медицинскими организациями за плату. Цена\n определяется согласно тарифам медицинской организации, которые\n доводятся до Пользователя посредством Сервиса.\n
    4. \n
    5. \n Оплата услуг осуществляется Пользователем посредством Сервиса в\n порядке предоплаты на Сервис до начала оказания услуги, при этом\n Сервис является получателем платежа, действует по поручению\n Пользователя и уполномочен ими принимать от другого Пользователя\n денежные средства в счет оплаты услуг с привлечением уполномоченного\n оператора по приему платежей, или оператора электронных денежных\n средств, или иных участников расчетов, информационно-технологического\n взаимодействия. Оператор не гарантирует отсутствия ошибок и сбоев в\n отношении предоставления возможности безналичной оплаты. \n
    6. \n
    7. \n Оплату услуг Пользователь осуществляет банковской картой, указанной в\n интерфейсе Сервиса (далее – «Привязанная карта»). Оператор вправе\n списать сумму, составляющую стоимость услуг с любой Привязанной\n карты. \n
    8. \n
    9. \n Оплата услуг может быть также осуществлена Пользователем (при\n доступности Пользователю соответствующей функции) с использованием\n сервисов третьих лиц, поддерживающих интеграцию с Сервисом и\n участниками расчетов, и обеспечивающих авторизацию платежа\n Пользователя без передачи информации о Привязанной карте Оператору.\n Порядок использования сервисов третьих лиц, указанных в настоящем\n пункте, регулируется правилами таких сервисов третьих лиц. Оператор не\n несет ответственности за использование Пользователем сервисов третьих\n лиц и не гарантирует корректность и безопасность работы таких сервисов\n третьих лиц. При оплате услуг возможно проведение как одной транзакции\n на полную стоимость услуг, так и нескольких транзакций на отдельные\n части стоимости услуг.\n
    10. \n
    11. \n После оказания услуг, Оператор обязуется перевести на счет\n соответствующей медицинской организации, оказавшей услугу, денежные\n средства, поступившие от Пользователя в счет оплаты услуг медицинской\n организации.\n
    12. \n
    \n
    \n

    Порядок использования Сервиса

    Сервис\n предоставляется Пользователю для личного некоммерческого использования.\n
    \n Сервис предоставляет Пользователю функциональную возможность доступа к\n истории действий Пользователя на Сервисе. \n
    \n Пользователь обязан обеспечить конфиденциальность логина и пароля,\n необходимых для доступа к Сервису. Пользователь самостоятельно несет\n ответственность за все действия третьих лиц с использованием учетной\n записи Пользователя, при этом все такие действия считаются произведенными\n самим Пользователем. \n
    В случае обнаружения несанкционированного доступа к Сервисам и/или\n нарушения (подозрениях о нарушении) конфиденциальности логина или пароля,\n Пользователь обязан незамедлительно уведомить Оператора в целях присвоения\n Пользователю нового логина и/или пароля.\n
    \n Пользователь не вправе: \n
    \n
      \n
    1. \n Размещать в Сервисе недостоверные персональные данные, включая\n информацию о состоянии здоровья. \n
    2. \n
    3. \n Размещать и/или распространять информацию, а также ссылки на\n информацию, распространение которой запрещено действующим\n законодательством Российской Федерации.\n
    4. \n
    5. \n Нарушать права третьих лиц, в том числе несовершеннолетних, и/или\n причинять им вред в любой форме.\n
    6. \n
    7. \n Размещать и/или распространять информацию, при отсутствии необходимого\n в соответствии с законом или договором разрешения или согласия третьих\n лиц.\n
    8. \n
    9. \n Размещать и/или распространять не разрешенную специальным образом\n рекламную информацию, спам или вредоносные программы (ссылки на них).\n
    10. \n
    11. \n Собирать и хранить персональные данные других лиц без их согласия.\n
    12. \n
    13. Иными способами нарушать нормальную работу Сервиса.
    14. \n
    \n Пользователь обязуется использовать Сервис только в пределах тех прав и\n теми способами, которые предусмотрены настоящим Соглашением.\n
    \n Все графические и текстовые элементы, размещенные на сайте и мобильном\n Приложении Оператора или иным образом доступные для просмотра\n Пользователям посредством Сервиса, а также программное обеспечение в\n составе Сервиса являются объектами исключительных прав Оператора и иных\n правообладателей. Любое использование указанных объектов исключительных\n прав допускается исключительно с согласия Оператора или соответствующего\n правообладателя. В случае нарушения Пользователем требований,\n установленных настоящей статьей, Оператор вправе запретить доступ к\n Сервису посредством блокировки или удаления учетной записи Пользователя, а\n также удалить размещенную Пользователем с использованием Сервиса\n информацию. \n
    \n Оператор вправе направлять Пользователям рекламные и/или информационные\n сообщения с использованием Сервиса. \n
    \n
    \n

    Ограничение ответственности

    \n
      \n
    1. Пользователь использует Сервисы на свой собственный риск. 
    2. \n
    3. \n Сервис предоставляется «как есть», Оператор не несет ответственности\n за точное соответствие Сервиса требованиям Пользователя.\n
    4. \n
    5. \n Сервис, предоставляя функциональные возможности по обеспечению\n информационного взаимодействия между Пользователями, не является\n представителем какой-либо из сторон, в связи с чем не дает каких-либо\n гарантий относительно полноты, актуальности, корректности,\n достоверности услуг, получаемых Пользователем. \n
    6. \n
    7. \n Пользователь самостоятельно несет ответственность за любые возможные\n негативные последствия использования информации, полученной\n Пользователем с использованием Сервиса. \n
    8. \n
    9. \n Пользователь самостоятельно несет ответственность за использование\n Сервиса, включая размещение и/или распространении информации, в том\n числе, если такие действия приведут к нарушению законодательства и/или\n нарушению прав и законных интересов третьих лиц. \n
    10. \n
    11. \n Оператор не несет ответственности за убытки, понесенные Пользователем\n вследствие использования информации, полученной Пользователем\n посредством Сервиса. Оператор также не несет ответственности за\n неисполнение либо ненадлежащее исполнение настоящего Соглашения,\n явившееся результатом сбоев в телекоммуникационных и энергетических\n сетях, действия вредоносных программ, а также недобросовестных\n действий третьих лиц, выразившееся в действиях, направленных на\n несанкционированный доступ и/или выведение из строя программного и/или\n аппаратного комплекса Оператора. \n
    12. \n
    13. \n Оператор не несет ответственности за правильность введения данных\n Пользователем при использовании Сервиса и последствия таких действий\n Пользователя, за содержание, корректность и/или актуальность\n информации, предоставленной третьими лицами и доступной на Сервисе, а\n также за возможные убытки сторон.\n
    14. \n
    15. \n При этом, ответственность Оператора за виновные действия Оператора\n ограничена стоимостью соответствующей услуги. \n
    16. \n
    \n
    \n

    Электронный документооборот

    \n
      \n
    1. \n Оператор и Пользователь настоящим согласовали, что в рамках Сервиса\n они взаимно признают электронные документы, подписанные простой\n электронной подписью, равнозначными документам на бумажных носителях,\n подписанным собственноручной подписью.\n
    2. \n
    3. \n Для подписания электронного документа электронной подписью в рамках\n Сервиса, Пользователь использует авторизацию на Сервисе. Коды, логины\n и пароли являются ключом электронной подписи.\n
    4. \n
    5. \n Пользователь обязан соблюдать конфиденциальность в отношении ключей\n электронной подписи.\n
    6. \n
    7. \n Стороны признают, что все электронные документы, сформированные,\n используемые и направляемые Оператору Пользователем посредством\n функций Сервиса в рамках одной сессии (пока пользователь является\n авторизованным на Сервисе), являются подписанными таким образом\n электронной подписью Пользователя. Подписание документов на Сервисе\n может происходить в том числе посредством проставления Пользователем в\n рамках одной сессии специального символа (галочки) напротив\n соответствующего документа (ссылки на документ).\n
    8. \n
    9. \n Стороны согласовали, что все действия и электронные документы,\n сделанные и направленные Оператору с использованием ключа электронной\n подписи Пользователя, считаются сделанными и направленными\n Пользователем.\n
    10. \n
    \n
    \n

    Прочие условия

    \n
      \n
    1. \n Пользователь дает Сервису согласие на обработку персональной\n информации Пользователя, Оператором для целей предоставления\n функциональных возможностей Сервиса, на обработку и передачу\n Оператором персональной информации Пользователя авторизованным\n медицинским организациям (равно как и на получение от них такой\n информации), оказывающим Пользователю услуги, и их уполномоченным\n представителям для дальнейшей обработки такой информации в целях\n предоставления Пользователю функциональной возможности получения от\n таких организаций услуг и в целях оказания медицинской помощи, в том\n числе в медико-профилактических целях, в целях установления\n медицинского диагноза, оказания медицинских и медико-социальных услуг\n при условии, что обработка персональных данных осуществляется лицом,\n профессионально занимающимся медицинской деятельностью и обязанным в\n соответствии с законодательством Российской Федерации сохранять\n врачебную тайну. Оператор передаёт лишь ту персональную информацию\n Пользователя, которая необходима для указанной цели. Обработка\n Оператором персональной информации Пользователя, а также иной\n информации, загружаемой, передаваемой и предоставляемой Пользователем\n посредством Сервиса, осуществляется на условиях Политики\n конфиденциальности, размещенной в сети Интернет по адресу{\" \"}\n \n {`${window.location.origin}/privacypolicy`}\n \n , в части, не противоречащей настоящему Соглашению. Положения\n настоящего пункта в отношении обработки персональной и иной информации\n Пользователя Оператором распространяются на материалы и информацию,\n полученные или переданные Пользователем в процессе использования\n Сервиса и его функций. \n
    2. \n
    3. \n Настоящее Соглашение может быть изменено Оператором без какого-либо\n специального уведомления, новая редакция Соглашения вступает в силу с\n момента ее размещения в сети Интернет по указанному в настоящем пункте\n адресу, если иное не предусмотрено новой редакцией Соглашения.\n Действующая редакция Соглашения находится на странице по адресу:{\" \"}\n \n {`${window.location.origin}/termofuse`}\n \n , если в Соглашении не указано иное.\n
    4. \n
    5. \n Настоящее Соглашение регулируется и толкуется в соответствии с\n законодательством Российской Федерации. По всем вопросам, не\n урегулированным настоящим Соглашение, стороны руководствуются\n действующим законодательством Российской Федерации. \n
    6. \n
    7. \n Если по каким-либо причинам одно или несколько условий настоящего\n Соглашения будут признаны недействительными или не имеющими\n юридической силы, это не окажет влияния на действительность или\n применимость остальных условий Соглашения.\n
    8. \n
    9. \n Настоящее Соглашение может быть в любой момент расторгнуто\n Пользователем посредством направления Оператору уведомления о\n расторжении в письменной форме. Оператор вправе расторгнуть Соглашение\n в одностороннем порядке, уведомив Пользователя о расторжении\n посредством Сервиса. \n
    10. \n
    11. \n В случае если Оператором были внесены какие-либо изменения в настоящее\n Соглашение, с которыми Пользователь не согласен, он обязан прекратить\n использование Сервиса.\n
    12. \n
    13. \n Оператор оставляет за собой право на свое усмотрение ограничить доступ\n Пользователя к Сервису (или к определенным функциям Сервиса, если это\n возможно технологически) с использованием его учетной записи или\n полностью заблокировать учетную запись Пользователя при неоднократном\n нарушении настоящего Соглашения, либо применить к Пользователю иные\n меры с целью соблюдения требований законодательства или прав и\n законных интересов третьих лиц.\n
    14. \n
    15. \n Все вопросы, предложения и/или претензии, связанные с\n использованием/невозможностью использования Сервиса, а также возможным\n нарушением законодательства и/или прав третьих лиц, должны\n направляться через форму обратной связи по адресу 119261, г. Москва,\n ул. Вавилова, д.68, корпус 2, email: info@arhimedlab.ru, телефон: +7\n (499) 288 07 26\n
    16. \n
    \n
    \n
    \n);\n","import React from \"react\";\n\nimport style from \"./politics.module.scss\";\n\nexport const TermOfUseEng = () => (\n
    \n
    \n

    Term Of Use

    \n The «Клиника Архимед» service (the Service) is designed to support online\n registration of a patient (the User) for an appointment with the relevant\n medical organization/laboratory to schedule a test (the Medical Service)\n and get the result using the functionality offered in the Service.\n
    \n The Service is a web application for mobile devices and computers that\n allows authorized Users to order the Medical Service online and, with the\n use of the Service, support the processing of payment for the Medical\n Service provided.\n
    \n Before you start using the Service, please read the Terms of Use. The fact\n of using the Service in any manner, both intentionally or unintentionally,\n is treated as acceptance, i.e. the complete and unconditional consent of\n the User to use the Service on the conditions set out below. The use of\n the Service is only possible under the terms and conditions of the Terms\n of Use. If the User does not fully accept the provisions of the Terms of\n Use, the User is not allowed to use the Service for any purpose.\n
    \n
    \n
    \n

    General Information

    \n
      \n
    1. \n The Terms of Use on the use of the Service (the The Terms of Use) is a\n public offer of ARHIMED CLINIC LLC, INN (TIN) 5003055720, address: 68\n Vavilova St, building 2, Moscow 119261, email: info@arhimedlab.ru,\n tel.: +7 (499) 288 07 26 (the Operator). Under the public offer, the\n Operator provides to registered Users services on online registration\n for an appointment with the relevant medical organization/laboratory\n to schedule a test and obtain the test result in the form of a medical\n report with the use of the functionality of the Service, as well as\n services of transferring to these organizations funds paid for the\n Medical Services rendered to the Users in the manner and on the terms\n and conditions set forth in the Terms of Use.\n
    2. \n
    3. \n The Terms of Use is a legally binding the Terms of Use between the\n User and the Operator. The subject of the the Terms of Use is the\n provision of access to the Service and its functionality by the\n Operator to the User. \n
    4. \n
    5. \n The Service allows the Users to apply for paid medical services and do\n other actions supported by the explicit functions of the Service. All\n currently avialable functions of the Service and any their upgrade\n and/or added new functions is the subject of the Terms of Use.\n
    6. \n
    7. \n The Operator, as a part of the Service operation, does not provide any\n medical or consulting services. The Service provides access to\n authorized medical organizations, convenient communication and payment\n processing for the Users.\n
    8. \n
    9. \n The Terms of Use come into force on the User's authorization. The User\n authorization in the Service is run on the corresponding page of the\n Operator's website using the login (mobile phone number or email\n address) and the authorization code sent by the Operator to the User\n to the email address or mobile phone number. After authorization, the\n User assigns a password to the User account in the Service. Access to\n the Service is provided by the User's login and password. The Terms of\n Use is valid in relation to the respective User until terminated in\n accordance with the procedure established by the Terms of Use.\n
    10. \n
    \n
    \n
    \n

    Payment

    \n
      \n
    1. \n The Medical Services are provided with the use of the Service by\n medical organizations authorized in the Service on the basis of\n contracts for the provision of paid medical services signed with the\n Users. The text of the contract is provided to the User prior to the\n provision of the Medical Service.\n
    2. \n
    3. \n The Medical Services are provided by medical organizations for a fee.\n The price is determined according to the price list of the medical\n organization made available to the User through the Service.\n
    4. \n
    5. \n The User pays for the Medical Services through the Service in the form\n of prepayment made in the Service prior to the provision of the\n Medical Service. The Service receives the payment, acts on behalf of\n the User and is authorized by the User to accept funds from another\n User as the payment for the Medical Services, with the involvement of\n an authorized payment receiving operator, or an electronic money\n operator, or other payment and information technology interaction\n parties involved. The Operator does not guarantee that no errors and\n failures will occur in providing non-cash payments. \n
    6. \n
    7. \n The User pays for the Medical Services with a bank card specified in\n the Service interface (the Linked Card). The Operator is entitled to\n debit the amount of the cost of the Medical Services from any Linked\n Card. \n
    8. \n
    9. \n The User may also pay for the Medical Service (if the relevant\n function is available to the User) using third-party services that\n support integration with the Service and payment parties involved, and\n provide authorization of the User's payment without transferring\n information about the Linked Card to the Operator. The procedure for\n using the services of third parties specified in this paragraph is\n governed by the rules of such third-party services. The Operator is\n not responsible for the use by the User of third-party services and\n does not guarantee the correctness and safety of such third-party\n services. Payment for the Medical Services may be in the form of a\n single transaction for the full cost of services or series of\n transactions of parts of the cost of the Medical Services.\n
    10. \n
    11. \n After the provision of the Medical Services, the Operator transfers to\n the account of the relevant medical organization that provided the\n Medical Service, the funds received from the User as payment for the\n Medical Service provided by the medical organization.\n
    12. \n
    \n
    \n
    \n

    Use of the Service

    The Service is\n provided to the User for personal, non-commercial use.\n
    \n The Service provides the User with the access to the history of the User's\n activities on the Service. \n
    \n The User ensures the confidentiality of the login and password requested\n to access the Service. The User bears the sole responsibility for all\n actions of third parties related to the use of the User's account, and all\n such actions are considered to be performed by the User. \n
    \n In case of detection of unauthorized access to the Services and/or breach\n (suspicion of breach) of the confidentiality of the login or password, the\n User immediately notifies the Operator in order to assign the User a new\n login and/or password.\n
    \n The User is not entitled to: \n
    \n
    \n
      \n
    1. \n Enter inaccurate personal data, including health-related information,\n in the Service. \n
    2. \n
    3. \n Enter and/or distribute information, and links to information, the\n distribution of which is prohibited by Russian law.\n
    4. \n
    5. \n Violate the rights of third parties, including minors, and/or cause\n them damage in any form.\n
    6. \n
    7. \n Enter and/or distribute information without the required permission or\n consent of third parties subject to law, contract or consent of third\n parties.\n
    8. \n
    9. \n Enter and/or distribute advertising information not specifically\n permitted, spam or malware (links to them).\n
    10. \n
    11. \n Collect and store personal data of others without their consent.\n
    12. \n
    13. Otherwise disrupt the normal operation of the Service.
    14. \n
    \n The User uses the Service only within the limits of the rights and in the\n manner as stipulated in the Terms of Use.\n
    \n All graphic and text elements posted on the website and mobile application\n of the Operator or otherwise available for the Users through the Service,\n as well as the software included into the Service configuration are\n objects of the exclusive rights of the Operator and other rightholders.\n Any use of these exclusive rights is allowed only with the consent of the\n Operator or the respective copyright holder. If the User fails to comply\n with this clause, the Operator is entitled to deny access to the Service\n by blocking or deleting the User's account and to delete the information\n posted by the User using the Service. \n
    \n The Operator is entitled to send advertising and/or informational messages\n to the Users using the Service. \n
    \n
    \n
    \n

    Limitation of Liability

    \n
      \n
    1. The User uses the Services at his/her own risk. 
    2. \n
    3. \n The Service is provided \"as is\", the Operator is not responsible for\n the absolute compliance of the Service with the User's requirements.\n
    4. \n
    5. \n With its functionality ensuring information interaction between the\n Users, the Service does not represent any of the parties, and\n therefore does not give any guarantees regarding the completeness,\n relevance, correctness, reliability of the services received by the\n User. \n
    6. \n
    7. \n The User bears the sole responsibility for any potential negative\n implications of using the information received by the User with the\n use of the Service. \n
    8. \n
    9. \n The User is solely responsible for the use of the Service including\n the publication and/or distribution of information, inclusive of if\n such actions lead to the violation of law and/or the rights and\n legitimate interests of third parties. \n
    10. \n
    11. \n The Operator is not responsible for any loss incurred by the User as a\n result of using the information received by the User through the\n Service. The Operator is also not responsible for failure to comply or\n improper performance of the Terms of Use resulting from failures in\n telecommunications and power supply networks, impact of malicious\n programs and unfair actions of third parties in the form of actions\n aimed at unauthorized access and/or disabling the software and/or\n hardware of the Operator. \n
    12. \n
    13. \n The Operator bears no responsibility for the correctness of the data\n entered by the User when using the Service and the implications of\n such actions by the User, for the content, correctness and/or\n relevance of information provided by third parties and available with\n the Service and for potential loss of the parties.\n
    14. \n
    15. \n The liability of the Operator for improper actions of the Operator is\n limited to the cost of the corresponding service. \n
    16. \n
    \n
    \n
    \n

    Electronic document management

    \n
      \n
    1. \n The Operator and the User hereby agree that, within the Service, they\n mutually recognize electronic documents signed with an electronic\n signature as equivalent to hard copy documents with a handwritten\n signature.\n
    2. \n
    3. \n To sign an electronic document with an electronic signature in the\n Service, the User uses the authorizationon function of the Service.\n Codes, logins and passwords are the key of the electronic signature.\n
    4. \n
    5. The User shall keep electronic signature keys confidential.
    6. \n
    7. \n The Parties acknowledge that all electronic documents generated, used\n and sent to the Operator by the User through the Service within one\n session (while the user is being authorized in the Service) are thus\n signed by the User's electronic signature. Documents can also be\n signed in the Service by ticking the corresponding document (link to\n the document) by placing a tick next to the document by the User\n within a single session.\n
    8. \n
    9. \n The parties agree that all actions and electronic documents generated\n and sent to the Operator using the User's electronic signature key are\n considered generated and sent by the User.\n
    10. \n
    \n
    \n
    \n

    Other Terms and Conditions

    \n
      \n
    1. \n In the Service, the User gives the consent to the processing of the\n User's personal information by the Operator for the purpose of\n providing the functionality of the Service, to the processing and\n transfer of the User's personal information by the Operator to\n authorized medical organizations (as well as to receive such\n information from them) that provide services to the User, and their\n authorized representatives for further processing of such information\n in order to provide the User with the functionality of receiving\n services from such organizations and in order to provide medical\n assistance, including for medical and preventive purposes, in order to\n make clinical diagnosis, provide healthcare and medical and social\n services provided that the processing of personal data is carried out\n by a person who is professionally engaged in healthcare operations and\n must maintain medical confidentiality according to Russian law. The\n Operator transmitts only the personal data of the User that is\n necessary for the specified purpose. The Operator processes the User's\n personal data and information uploaded, transmitted and provided by\n the User through the Service according to the terms and conditions of\n the Privacy Policy available at\n https://life-air.org/en/tpost/1zi6ad6ia2-privacy-policy, insofar as it\n does not conflict with the Terms of Use. The provisions of this clause\n with respect to the processing of personal and other data of the User\n by the Operator apply to materials and information received or\n transmitted by the User in the course of using the Service and its\n functions. \n
    2. \n
    3. \n The Terms of Use may be amended by the Operator without any special\n notice. The new version of the Terms of Use comes into force on its\n posting on the Internet at the address specified in this paragraph,\n unless otherwise provided by the new version of the Terms of Use. The\n current version of the Terms of Use is available at:\n https://life-air.org/en/tpost/7gan14m0k2-terms-of-use, unless\n otherwise specified in the The Terms of Use.\n
    4. \n
    5. \n The Terms of Use are governed by and construed in accordance with\n Russian law. For all issues not covered by the Terms of Use, the\n parties shall comply with Russian law.  \n
    6. \n
    7. \n If, for any reason, one or more of the terms and conditions of this\n The Terms of Use are found invalid or unenforceable, the validity or\n applicability of the remaining provisions of the The Terms of Use\n shall not in any way be affected.\n
    8. \n
    9. \n The User may at any time terminate the Terms of Use by sending a\n notice of termination to the Operator in writing. The Operator is\n entitled to terminate the Terms of Use unilaterally by notifying the\n User of termination through the Service. \n
    10. \n
    11. \n If the Operator makes any changes to the Terms of Use and the User\n does not agree to such changes, the User must stop using the Service.\n
    12. \n
    13. \n The Operator reserves the right to restrict the User's access to the\n Service (or to certain functions of the Service, if technologically\n possible), at their own discretion, using the User’s account or\n completely block the User's account in case of repeated violation of\n this The Terms of Use or impose other measures to the User in order to\n comply with law or the rights and legal interests of third parties.\n
    14. \n
    15. \n All questions, proposals and/or claims related to the use/inability to\n use the Service, as well as a potential violation of law and/or the\n rights of third parties should be sent using the feedback form at: 68\n Vavilova St, building 2, Moscow 119261.\n
    16. \n
    \n
    \n
    \n
    \n
    \n);\n","import React from \"react\";\n\nimport { TermOfUseRU } from \"./TermOfUseRU\";\nimport { TermOfUseEng } from \"./TermOfUseENG\";\n\nimport i18n from \"../../i18n/i18n\";\n\nexport const TermOfUse = () => {\n const [curLanguage, changeCurLanguage] = React.useState(i18n.language);\n React.useEffect(() => {\n changeCurLanguage(i18n.language);\n }, []);\n if (curLanguage === \"ru\") {\n return ;\n } else {\n return ;\n }\n};\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport Barcode from \"react-barcode\";\nimport { getDocNameById } from \"../../../../components/Forms/Passport\";\nimport style from \"./card.module.scss\";\n\nconst NEED_PROPS = [\n \"lastName\",\n \"firstName\",\n \"middleName\",\n \"firstNameLastNameEng\",\n {\n name: \"dateOfBirth\",\n humanize: () => '**.**.****',\n },\n // \"passport\",\n \"address\",\n \"workOrStudyPlace\",\n \"flightNumber\",\n \"product\",\n {\n name: \"sex\",\n humanize: (value, t) => t(value),\n },\n {\n name: \"documentTypeId\",\n humanize: (value, t) => t(getDocNameById(value)),\n },\n \"series\",\n \"num\",\n \"issueDate\",\n \"issuedBy\",\n // {\n // name: \"products\",\n // humanize: (products) =>\n // products.map((product) => product).join(\", \"),\n // },\n];\n\nconst pickAndSortProps = (patient) => {\n return NEED_PROPS.map((item) => {\n if (typeof item === \"object\") {\n return { [item.name]: item.humanize };\n }\n return { [item]: patient[item] };\n });\n};\n\nconst ProductListItem = ({ product }) => {\n return (\n
    \n {product}\n
    \n );\n};\n\nconst PatientProducts = ({ products }) => {\n //return products as product list in every row\n return products.map((product) => );\n\n\n};\n\nconst PatientCard = ({ patient, index }) => {\n const { t } = useTranslation();\n const pickedArray = pickAndSortProps(patient);\n const referralId = patient?.referral?.referralId;\n\n return (\n
    \n
    \n {t(\"patient\")} №{index + 1} {t(\"forTest\")}\n
    \n
    {referralId && }
    \n
    \n {pickedArray.map((item) => {\n const key = Object.keys(item)[0];\n const value =\n typeof item[key] === \"function\"\n ? item[key](patient[key], t)\n : item[key];\n return (\n value && (\n
    \n
    {t(key)}:
    \n
    {value}
    \n
    \n )\n );\n })}\n \n
    \n
    \n );\n};\n\nexport default PatientCard;\n","import React, { useContext, useEffect } from \"react\";\nimport { useParams, useHistory } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport { observer } from \"mobx-react-lite\";\nimport { Helmet } from \"react-helmet\";\n\nimport { Api } from \"../../api/api\";\nimport { SocketContext } from \"../../context/socket\";\nimport PatientCard from \"./components/Card\";\nimport Panel from \"../../components/Panel/Panel\";\nimport style from \"./order.module.scss\";\nimport { Button, Attention, Card } from \"../../components\";\nimport { useStores } from \"../../models\";\nimport {\n IoWalletOutline,\n IoCardOutline,\n IoCheckmarkCircleOutline,\n IoBanSharp,\n} from \"react-icons/io5\";\n\nconst formattedDate = (date) => {\n let month = String(date.getMonth() + 1);\n let day = String(date.getDate());\n const year = String(date.getFullYear());\n\n if (month.length < 2) month = \"0\" + month;\n if (day.length < 2) day = \"0\" + day;\n\n return `${day}.${month}.${year}`;\n};\n\nexport const ConfirmOrder = observer(() => {\n const { id } = useParams();\n const { t, i18n } = useTranslation();\n const history = useHistory();\n const { orderStore, referralStore, placeStore, userStore } = useStores();\n const { currentOrder } = orderStore;\n const language = i18n.language;\n const socket = useContext(SocketContext);\n\n useEffect(() => {\n let mounted = true;\n window.scrollTo(0, 0);\n socket.on(\"connect\", () => {\n console.log(\"connected\");\n });\n if (mounted) {\n const loadData = async () => {\n await orderStore.getOrderById(id);\n await placeStore.getPlaces();\n await referralStore.getReferralsByOrderId(id);\n };\n loadData().then(() => orderStore.setCurrentOrder(id));\n }\n\n return () => {\n mounted = false;\n orderStore.setCurrentOrder(null);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id]);\n\n useEffect(() => {\n socket.on(\"REFERRAL_ADD\", (referral) => referralStore.add(referral));\n socket.on(\"ORDER_PAID\", ({ id }) => orderStore.paid(id));\n }, [orderStore, referralStore, socket]);\n\n if (!currentOrder?.patients) {\n return (\n
    \n

    {t(\"Loading\")}

    \n
    \n );\n }\n\n const currentProduct = (patient) => {\n return language === \"ru\" ? patient.product?.name : patient.product?.nameEn;\n };\n\n const currentProducts = (patient) => {\n return patient.products.map((product) =>\n language === \"ru\" ? product?.name : product?.nameEn,\n );\n };\n\n const isOnline = currentOrder?.paymentMethod === \"online\";\n\n const redirectToPay = async () => {\n let getLink = await new Api().pay(id);\n window.location.assign(getLink.data.paymentUrl);\n };\n\n const handleCloudPaymentClick = () => {\n const itemsForCheck = [];\n for (let i = 0; i < currentOrder.patients.length; ++i) {\n const countSamplings = {};\n let patient = currentOrder.patients[i];\n patient.products.forEach((product) => {\n let price = product.price;\n countSamplings[product.samplingCode] =\n countSamplings[product.samplingCode] + 1 || 1;\n if (countSamplings[product.samplingCode] > 1) {\n price = price - 250;\n }\n itemsForCheck.push({ name: product.nameForCheck, price, quantity: 1 });\n });\n }\n const itemsForCheckUniq = itemsForCheck.reduce((acc, curr) => {\n const dublicates = acc.filter(\n (item) => item.name === curr.name && item.price === curr.price,\n );\n if (dublicates.length === 0) {\n acc.push(curr);\n }\n if (dublicates.length > 0) {\n const idx = acc.findIndex((item) => item.name === curr.name && item.price === curr.price)\n acc[idx] = { ...curr, quantity: acc[idx].quantity + 1 };\n }\n return acc;\n }, []);\n\n const items = [];\n\n for (let item of itemsForCheckUniq) {\n items.push({\n label: item.name,\n quantity: item.quantity,\n amount: item.price * item.quantity,\n price: item.price,\n measurementUnit: \"шт\",\n vat: null,\n method: 4,\n object: 4,\n });\n }\n\n if (!items?.length) return;\n const itemsPrice = items\n .map((item) => item.amount)\n .reduce((acc, cur) => acc + cur, 0);\n\n if (itemsPrice !== currentOrder.sum) {\n console.log(\"items\", itemsPrice, currentOrder.sum)\n alert(\"Цена отличается\");\n return;\n }\n const receipt = {\n Items: items,\n taxationSystem: 0,\n amounts: { electronic: currentOrder.sum },\n calculationPlace: \"labarhimed.ru\",\n };\n const data = {\n //содержимое элемента data\n cloudPayments: {\n CustomerReceipt: receipt, //онлайн-чек\n },\n comment: currentOrder?.place?.name,\n };\n if (currentOrder.sum === 0) {\n alert(\n \"Стоимость заказа не может быть 0, возможно в данном месте возможен только иной метод оплаты.\",\n );\n return;\n }\n if (!currentOrder.sum || !currentOrder.id || !data) return;\n window.pay({\n amount: currentOrder.sum,\n description: `Оплата теста на COVID - ${currentOrder.id}`,\n invoiceId: currentOrder.id,\n email: userStore.user.email,\n publicId:\n currentOrder.place?.cloudPublicId || \"pk_e0a80bdd39b9320671d689c4051a8\",\n data,\n });\n };\n\n return (\n
    \n \n \n \n
    \n \n \n \n
    \n
    {t(\"testPlaceOrder\")}:
    \n \n
    \n
    \n
    {t(\"patients\")}:
    \n
    \n {currentOrder.patients &&\n currentOrder.patients.map((patient, index) => (\n \n ))}\n
    \n
    \n
    \n
    {t(\"price\")}:
    \n {currentOrder.sum} ₽\n
    \n
    \n
    {t(\"paymentMethod\")}:
    \n {currentOrder && currentOrder?.paymentMethod !== \"online\" ? (\n \n ) : (\n \n )}\n  \n {t(currentOrder && currentOrder.paymentMethod)}\n
    \n
    \n
    {t(\"paid\")}:
    \n {currentOrder && currentOrder?.paid ? (\n \n ) : (\n \n )}\n  \n {currentOrder && currentOrder.paid ? t(\"yes\") : t(\"no\")}\n
    \n {isOnline && !currentOrder?.paid ? (\n <>\n {currentOrder.place?.robokassa && (\n \n )}\n {currentOrder.place?.cloudPayments && (\n \n )}\n \n ) : (\n \n )}\n
    \n \n
    \n
    \n );\n});\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport style from \"./nomatchpage.module.scss\";\n\nexport function NoMatchPage() {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n
    404
    \n \n {t(\"no_match_page.not_found\")}\n \n
    \n
    \n );\n}\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport style from \"./success.module.scss\";\nimport { Link } from \"react-router-dom\";\nimport { Button } from \"../../components\";\n\nexport const Success = () => {\n const urlParams = new URLSearchParams(window.location.search);\n const InvId = urlParams.get(\"InvId\");\n const OutSum = urlParams.get(\"OutSum\");\n const { t } = useTranslation();\n\n return (\n
    \n
    \n
    \n
    \n {t(\"success_screen.title\")}\n
    \n
    \n
    \n {t(\"success_screen.transaction_numbrer\")}\n #{InvId}\n
    \n
    \n {t(\"success_screen.transaction_sum\")}\n {OutSum}₽\n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport style from \"./failure.module.scss\";\n\nexport const Failure = () => {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n
    \n
    \n {t(\"failure_screen.title\")}\n
    \n
    \n {t(\"failure_screen.message\")}\n
    \n
    \n
    \n
    \n );\n};\n","import React from \"react\";\nimport license from \"./icon_license.png\";\nimport license2 from \"./icon_license2.png\";\nimport style from \"../Politics/politics.module.scss\";\n\nexport const EducationalLicense = ({ changeModal }) => {\n return (\n
    \n
    \n

    Выписка из реестра Лицензий и Лицензия на осуществление деятельности

    \n
    \n \n
    \n \"Educational\n
    \n \n Скачать выписку\n \n
    \n \n
    \n \"Educational\n
    \n \n Скачать лицензию\n \n
    \n \n
    \n

    \n Актуальные виды лицензированных услуг и перечень мест их осуществления\n содержатся в Лицензии №ЛО41-01137-77/00555311 от 27.08.2014,\n размещенной на официальном сайте Федеральной службы по надзору в сфере\n здравоохранения (https://roszdravnadzor.gov.ru/services/licenses),\n выданной Департаментом здравоохранения города Москвы (поиск по номеру\n ИНН 5003055720)\n

    \n \n
    \n );\n};\n","import React from \"react\";\nimport style from \"../Politics/politics.module.scss\";\nimport icon from \"./icon_registry.png\";\n\nexport const LicenseRegistry = ({ changeModal }) => {\n return (\n
    \n
    \n

    Образовательная Лицензия

    \n\n
    \n \n
    \n \"Educational\n
    \n \n Скачать лицензию\n \n
    \n
    \n
    \n

    \n Лицензия №ЛО35-01298-77/01316187 от 25.07.2024 на право осуществления\n образовательной деятельности по реализации образовательных программ по\n видам образования, уровням образования, по профессиям, специальностям,\n направлениям подготовки (для профессионального образования), по\n подвиду дополнительного образования: дополнительное образование.\n Лицензия выдана Департаментом образования и науки города Москвы.\n Информация о лицензии, её сроке действия и текущем статусе размещена\n на официальном сайте Федеральной службы по надзору в сфере\n здравоохранения (https://roszdravnadzor.gov.ru/services/licenses)\n (поиск по номеру ИНН 5003055720)\n

    \n \n
    \n );\n};\n","import React from \"react\";\nimport { BrowserRouter as Router, Switch } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n Home,\n Orders,\n Order,\n ConfirmOrder,\n TermOfUse,\n PrivacyPolicy,\n NoMatchPage,\n Success,\n Failure,\n} from \"../screens\";\n\nimport { Route } from \".\";\n\nexport const Routes = () => {\n const { t } = useTranslation();\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React from \"react\";\nimport { Button } from \"../../components\";\nimport style from \"./ErrorBoundary.module.scss\";\nimport LogRocket from \"logrocket\";\nimport { withTranslation } from \"react-i18next\";\nimport { captureException } from \"@sentry/browser\";\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false, try: 0 };\n }\n\n componentDidCatch(error, info) {\n console.log(\"ErrorBoundary\", error, info);\n\n this.setState({ hasError: true });\n captureException(error, info);\n LogRocket.captureException(error, info);\n // You can also log the error to an error reporting service\n // logErrorToMyService(error, info);\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.children.props.location.pathname !==\n prevProps.children.props.location.pathname\n ) {\n this.setState({ hasError: false });\n }\n }\n\n render() {\n if (this.state.hasError) {\n console.log(\"this.state.hasError\", this.state.hasError);\n\n const refreshPage = () => {\n let count = this.state.try;\n this.setState({ hasError: false, try: ++count });\n };\n // You can render any custom fallback UI\n return (\n
    \n

    Something went wrong. Что-то пошло не так.

    \n {this.state.try < 1 && (\n \n )}\n
    \n );\n }\n return this.props.children;\n }\n}\n\nexport default withTranslation()(ErrorBoundary);\n","import React from \"react\";\nimport ReactModal from \"react-modal\";\nimport cn from \"classnames\";\nimport { ReactSVG } from \"react-svg\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Header, Footer, Toast, ApproveNumberForm } from \"../../components\";\nimport { PrivacyPolicy, TermOfUse, EducationalLicense, LicenseRegistry } from \"../\";\nimport ErrorBoundary from \"./ErrorBoundary\";\nimport style from \"./modal.module.scss\";\nimport close from \"./close.svg\";\n\nexport const DefaultLayout = ({ children }) => {\n const { t } = useTranslation();\n\n const login = (props) => {\n return (\n
    \n
    \n
    {t(\"modal_title\")}
    \n
    \n \n
    \n );\n };\n\n const MODALS_COMPONENTS = {\n LOG_IN: login,\n PRIVACY: PrivacyPolicy,\n TERMOFUSE: TermOfUse,\n EDUCATIONAL_LICENSE: LicenseRegistry,\n LICENSE_REGISTRY: EducationalLicense,\n };\n\n const [modal, changeModal] = React.useState({\n isOpen: false,\n name: \"\",\n });\n const ModalComponent = MODALS_COMPONENTS[modal.name];\n return (\n <>\n
    \n \n {React.cloneElement(children, { changeModal })}\n \n\n
    \n \n changeModal({ isOpen: false, name: \"\" })}\n >\n \n changeModal({ isOpen: false, name: null })}\n />\n {ModalComponent && (\n \n )}\n \n \n \n );\n};\n","import React from \"react\";\nimport { Route, Redirect } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet\";\nimport { observer } from \"mobx-react-lite\";\nimport { useStores } from \"../models\";\n\nimport { DefaultLayout } from \"../screens/layouts\";\n\nexport const RouteWrapper = observer(\n ({ component: Component, title, isPrivate, ...rest }) => {\n let { userStore } = useStores();\n let { authenticated } = userStore;\n\n if (isPrivate && !authenticated) {\n return ;\n }\n\n return (\n (\n
    \n \n {title}\n \n \n \n \n \n
    \n )}\n />\n );\n },\n);\n","import React, { useEffect, useState } from \"react\";\nimport { Routes } from \"./routes\";\nimport { RootStoreProvider, setupRootStore } from \"./models\";\nimport \"./App.css\";\nimport { SocketContext, socket } from './context/socket';\n\n\nfunction App() {\n const [rootStore, setRootStore] = useState(null);\n\n useEffect(() => {\n (async () => {\n setupRootStore().then(setRootStore);\n })();\n }, []);\n\n if (!rootStore) return null;\n\n return (\n \n \n \n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\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 subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\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.0/8 are 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.href);\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://bit.ly/CRA-PWA\",\n );\n });\n } else {\n // Is not localhost. 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 if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\",\n );\n\n // Execute callback\n if (config && 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 && 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 headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null && contentType.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\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport \"./i18n/i18n\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\"),\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: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"steps-section\":\"stepsSection_steps-section__23tpM\",\"steps\":\"stepsSection_steps__2mk3T\",\"steps__img\":\"stepsSection_steps__img__gI3qU\",\"steps__title\":\"stepsSection_steps__title__GfUgs\",\"steps__about\":\"stepsSection_steps__about__sM88S\",\"no-style-link\":\"stepsSection_no-style-link__3hsLC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loader\":\"order_loader__1FDY4\",\"paymentMethod\":\"order_paymentMethod__3wM2O\",\"name\":\"order_name__1J5i7\",\"main\":\"order_main__2F83b\",\"mainInner\":\"order_mainInner__2oPRC\",\"order\":\"order_order__15d90\",\"placeTestTitle\":\"order_placeTestTitle__KZSlT\",\"placeInfo\":\"order_placeInfo__3ILg2\",\"patientsTitle\":\"order_patientsTitle__LM063\",\"patients\":\"order_patients__KFTay\",\"patientsList\":\"order_patientsList__238wm\",\"patientsListItem\":\"order_patientsListItem__1sND4\",\"place\":\"order_place__1jIat\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"coll\":\"form_coll__O6Bhq\",\"row\":\"form_row__1R54t\",\"row--start\":\"form_row--start__KUICO\",\"row--last\":\"form_row--last__12cq0\",\"top\":\"form_top__3FoTZ\",\"top--modal\":\"form_top--modal__3D6Pf\",\"numbeApprovedTxt\":\"form_numbeApprovedTxt__3_ag0\",\"phoneNumberInput\":\"form_phoneNumberInput__2VAvb\",\"cardsWrapper\":\"form_cardsWrapper__1ZbZ9\",\"phoneNumberInput--code\":\"form_phoneNumberInput--code__3jMhe\",\"changeNumber\":\"form_changeNumber__2e8mf\",\"patientTitle\":\"form_patientTitle__1NBUL\",\"patientForm\":\"form_patientForm__GjVu1\",\"mgRight50\":\"form_mgRight50__D4MW8\",\"payChoose\":\"form_payChoose__3R_4A\",\"price\":\"form_price__3DN6R\",\"totalSum\":\"form_totalSum__1Xz_B\",\"econom\":\"form_econom__2MPSm\",\"buttons\":\"form_buttons__e5O36\",\"wrapper\":\"form_wrapper__1fXTi\",\"btnsWrapper\":\"form_btnsWrapper__3jDJd\",\"link\":\"form_link__14zXl\",\"approveTxt\":\"form_approveTxt__3AB-d\",\"approveTxt--header\":\"form_approveTxt--header__AIO3U\",\"approveTxtInner\":\"form_approveTxtInner__q42-0\",\"center\":\"form_center__1TTLX\",\"codeFilingWrapper\":\"form_codeFilingWrapper__1eYcB\",\"enterCodePhone\":\"form_enterCodePhone__32vg_\",\"sendAgainTxt\":\"form_sendAgainTxt__Hdj9Y\",\"sendAgainBtn\":\"form_sendAgainBtn__1OAes\",\"wrap\":\"form_wrap__1yCfz\",\"email\":\"form_email__39zEg\",\"emailWrap\":\"form_emailWrap__28C3g\",\"emailExist\":\"form_emailExist__3rdea\",\"noEmailText\":\"form_noEmailText__2tn86\",\"phoneNumb\":\"form_phoneNumb___T32U\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"services-section\":\"servicesSection_services-section__3GlSX\",\"services\":\"servicesSection_services__vMM-q\",\"services__icon\":\"servicesSection_services__icon__18eLA\",\"services__title\":\"servicesSection_services__title__2heC2\",\"services__about\":\"servicesSection_services__about__1-6qE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"st-section\":\"home_st-section___apIo\",\"st-section__head\":\"home_st-section__head__1o-p4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"changeLanguage\":\"change-language_changeLanguage__30eXB\",\"langFlag\":\"change-language_langFlag__Kv2mQ\",\"language\":\"change-language_language__1TvRP\",\"langPicker\":\"change-language_langPicker__e9MTa\",\"rotate\":\"change-language_rotate__39_6S\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"form\":\"main-form_form__2NWSl\",\"head\":\"main-form_head__1DRTh\",\"headInner\":\"main-form_headInner__3vXnm\",\"step\":\"main-form_step__A4tO1\",\"step--current\":\"main-form_step--current__2-5H3\",\"steps\":\"main-form_steps__2Dtem\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"attention\":\"attention_attention__33TU6\",\"attentionWarning\":\"attention_attentionWarning__1JMKl\",\"notemperatureLeft\":\"attention_notemperatureLeft__1knMP\",\"leftPart\":\"attention_leftPart__38gdk\",\"before\":\"attention_before__2s85R\",\"txt\":\"attention_txt__XW7UJ\"};"],"sourceRoot":""}