{"version":3,"sources":["assets/calendar.png","styles/_variables.scss","assets/auth-left-mosaic.png","assets/location.png","assets/search-pizza.png","assets/logo.png","assets/step4.png","assets/whiteLogo.png","assets/compra-segura.png","assets/oit.png","assets/wef.png","assets/oms.png","assets/nutritionist-dashboard-1.png","assets/nutritionist-dashboard-2.png","assets/nutritionist-dashboard-3.png","assets/user.png","assets/default-image.png","assets/upload-icon.png","assets/toma-muestra.png","assets/backArrow.png","assets/probe-tubes.png","styles/app.scss","data/enums.tsx","components/common/FullWidthSnackbar/FullWidthSnackbar.tsx","components/common/forms/FormTextField/FormTextField.tsx","components/auth/AuthInfoPanel/AuthInfoPanel.tsx","services/base.service.ts","services/config.ts","services/endpoints.ts","services/auth.service.ts","store/auth/actionCreators.ts","store/auth/actionTypes.ts","data/schemas.ts","store/auth/selector.ts","components/animations/LoadingAnimation/LoadingAnimation.tsx","components/auth/Login/Login.tsx","components/auth/ChangePassword/ChangePassword.tsx","components/auth/ResetPassword/ResetPassword.tsx","components/signup/UserSignup/UserStepper/StepIcon.tsx","components/signup/UserSignup/UserStepper/UserStepper.tsx","components/common/UserDataFields/UserDataFields.tsx","components/signup/UserSignup/UserData.tsx","services/nutritionists.service.ts","components/signup/UserSignup/NutritionistCode.tsx","store/nutritionists/selector.ts","store/nutritionists/actionCreators.ts","store/nutritionists/actionTypes.ts","components/common/forms/FormCheckbox/FormCheckbox.tsx","components/common/PathologiesFields/PathologiesFields.tsx","components/signup/UserSignup/Pathologies.tsx","components/common/FamilyBackgroundFields/FamilyBackgroundFields.tsx","components/signup/UserSignup/FamilyBackground.tsx","components/signup/common/EmailConfirmed/EmailConfirmed.tsx","services/costs.service.ts","store/costs/actionTypes.ts","store/costs/actionCreators.ts","components/common/CompanyCard/CompanyCard.tsx","components/common/Popup/Popup.tsx","components/signup/UserSignup/UserSignup.tsx","components/signup/common/JoinMrGen/JoinMrGen.tsx","components/common/ArrowSteps/ArrowSteps.tsx","components/signup/NutritionistSignup/NutritionistData.tsx","components/common/PaymentMethodFields/PaymentMethodFields.tsx","components/signup/NutritionistSignup/PaymentMethod.tsx","services/businesses.service.ts","components/dashboard/common/NewUserButton/NewUserButton.tsx","components/dashboard/common/UserDialog/UserDialog.tsx","components/signup/NutritionistSignup/NutritionistVerification.tsx","helpers/urlHelper.ts","components/signup/NutritionistSignup/NutritionistSignup.tsx","store/users/actionCreators.ts","store/users/actionTypes.ts","components/common/forms/FormFileField/FormFileField.tsx","components/signup/CompanySignup/CompanyData.tsx","components/signup/CompanySignup/CompanySignup.tsx","components/signup/Signup.tsx","components/landing/Landing/Landing.tsx","components/animations/ErrorAnimation/ErrorAnimation.tsx","components/verify/Verify/EmailVerified.tsx","components/dashboard/UserDashboard/DateSelector/DateDialog.tsx","components/dashboard/UserDashboard/DateSelector/DateSelector.tsx","components/common/forms/FormSelect/FormSelect.tsx","utils/states.tsx","components/dashboard/UserDashboard/AddressSelector/AddressDialog.tsx","components/dashboard/UserDashboard/AddressSelector/AddressSelector.tsx","components/dashboard/UserDashboard/KitCoordination.tsx","components/dashboard/UserDashboard/KitConfirmation.tsx","components/dashboard/UserDashboard/ShippingSelection.tsx","services/analyses.service.ts","utils/roles.tsx","components/dashboard/UserDashboard/UserDashboard.tsx","store/analyses/actionCreators.ts","store/analyses/actionTypes.ts","components/endUser/ResultsReport.tsx","components/dashboard/common/Users/UserRow.tsx","components/dashboard/common/Users/UserFilters.tsx","components/dashboard/common/Users/Users.tsx","services/commissions.service.ts","store/bankAccounts/actionTypes.ts","services/bankAccounts.service.ts","store/bankAccounts/actionCreators.ts","components/dashboard/NutritionistDashboard/BalanceSheet.tsx","components/dashboard/NutritionistDashboard/NutritionistDashboard.tsx","components/dashboard/CompanyDashboard/CompanyDashboard.tsx","store/businesses/actionCreators.ts","store/businesses/actionTypes.ts","components/common/Header/Header.tsx","components/dashboard/Dashboard.tsx","components/profile/common/MyData.tsx","components/profile/UserProfile/UserDNAForm.tsx","components/profile/UserProfile/UserProfile.tsx","components/profile/NutritionistProfile/PaymentDetails.tsx","components/profile/NutritionistProfile/NutritionistProfile.tsx","components/profile/BusinessProfile/BusinessKits.tsx","components/profile/BusinessProfile/BusinessProfile.tsx","components/profile/Profile.tsx","components/profile/DNAForm/DNAForm.tsx","components/profile/NutritionistPayments/NutritionistPayments.tsx","components/profile/PaymentMethod/PaymentMethod.tsx","components/payment/PaymentResult/PaymentResult.tsx","components/payment/Redirect/Redirect.tsx","services/instruments.service.ts","store/instruments/actionCreators.ts","store/instruments/actionTypes.ts","components/payment/Checkout/Checkout.tsx","components/payment/LoadingPayment/LoadingPayment.tsx","components/dashboard/common/UserForm/UserForm.tsx","components/common/TermsAndConditions/TermsAndConditions.tsx","components/endUser/common/CommonContainer.tsx","components/endUser/Landing.tsx","components/endUser/common/ResultCard.tsx","components/endUser/Diagnostics.tsx","components/endUser/Metabolisms.tsx","components/endUser/Results.tsx","components/endUser/Foods.tsx","components/endUser/Agenda.tsx","components/endUser/Meals.tsx","components/dashboard/NutritionistDashboard/NutritionistResults.tsx","helpers/zonas-delivery.ts","components/common/CouponForm/CouponForm.tsx","components/common/MenuSemanal/MenuSemanal.tsx","components/common/ConsultaNutricional/ConsultaNutricional.tsx","components/common/MealsPayment/MealsPayment.tsx","components/payment/LoadingPaymentClone/LoadingPaymentClone.tsx","components/Main.tsx","theme.ts","store/analyses/reducer.ts","store/auth/reducer.ts","store/bankAccounts/reducer.ts","store/businesses/reducer.ts","store/commissions/actionTypes.ts","store/commissions/reducer.ts","store/costs/reducer.ts","store/instruments/reducer.ts","store/transactions/actionTypes.ts","store/transactions/reducer.ts","store/users/reducer.ts","store/nutritionists/reducer.ts","store/config/configureStore.ts","components/common/WhatsAppIcon/WhatsAppIcon.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["module","exports","UserType","useStyles","makeStyles","theme","createStyles","snackbar","width","margin","top","right","height","alignItems","justifyContent","color","styleVars","fontWeight","breakpoints","down","left","content","display","marginLeft","FullWidthSnackbar","open","setOpen","text","success","classes","Snackbar","className","onClose","anchorOrigin","vertical","horizontal","style","backgroundColor","autoHideDuration","resumeHideDuration","useFormTextStyles","root","inputRoot","padding","input","focused","fontSize","isIos","includes","navigator","platform","FormTextField","field","form","props","useState","passwordType","setPasswordType","hasError","undefined","touched","name","errors","isPassword","type","errorMesagge","isIosDevice","isFocused","setIsFocused","TextField","helperText","variant","error","InputLabelProps","formControl","InputProps","endAdornment","Tooltip","title","InputAdornment","position","IconButton","onClick","inputProps","pattern","maxLength","autoComplete","onFocus","onBlur","label","placeholder","disabled","AuthInfoPanel","history","useHistory","src","mosaic","alt","WhiteLogo","push","token","localStorage","http","request","a","fetch","response","then","body","parsedBody","JSON","parse","ex","stringBody","ok","Error","statusText","httpGet","path","args","method","headers","Headers","Authorization","Request","httpPost","stringify","httpPut","httpDelete","BASE_URL","BASE_URL_FOODS","REDIRECT_URL","endpoints","authLogin","authAccount","authNutritionist","authRegisterFromNutritionist","authRegisterFromBusiness","authReferer","authResendEmail","authVerifyEmail","authConfirmation","authChangePassword","authResetPassword","instruments","analyses","analysesAddDistribution","analysesAddKitDistribution","analysesGetDistribution","analysesGet","analysesGetResults","analysesGetResultsById","analysesGetFoodsById","analysesGetFoods","bankAccounts","commissions","costs","patients","getUserFromCode","employes","kitsavailable","authService","login","register","verifyEmail","confirmRegister","modifyPassword","resetPassword","confirmResetPassword","getAccount","getAccountById","createUserFromBusiness","getUserFromBusiness","updateAccount","createUserFromNutricionist","resendEmail","loginRequest","catch","registerRequest","email","accountId","changePasswordRequest","updateRequest","userData","password","dispatch","requestLogin","window","setItem","jwtToken","loginSuccess","account","loginFailed","logout","getState","preservedData","i","length","key","startsWith","getItem","clear","Object","keys","forEach","logouting","registering","console","log","registerSuccess","registerFailed","changeEmail","changingEmail","confirmingRegister","confirmRegisterSuccess","confirmRegisterFailed","changingPassword","changePasswordSuccess","changePasswordFailed","resetingPassword","resetPasswordSuccess","resetPasswordFailed","confirmingResetPassword","confirmResetPasswordSuccess","confirmResetPasswordFailed","gettingAccount","addAccount","addAccountFailed","updateProfile","updatingAccount","updateSuccess","upadteFailed","emptyInput","invalidFormat","invalidPassword","passwordRegex","nameRegex","emailRegex","ChangePasswordSchema","Yup","typeError","max","Date","required","shape","matches","oneOf","repeatPassword","CreateNutricionistSchema","names","surnames","phone","CreateCompanySchema","rut","positive","businessName","address","avatar","CreateUserSchema","surname","gender","min","weight","date","NewUserEmailFromCompanySchema","schemas","LoginSchema","AddressSchema","street","doorNumber","state","userAccount","createSelector","auth","authReducer","userRole","role","editSuccess","updateAccountSuccess","LoadingAnimation","marginBottom","config","animationData","loadAnimation","loop","pswRecoveryDiv","pswRecoveryTxt","loginBtn","pswRecoveryBtn","textDecoration","buyBox","textAlign","marginRight","buyBtn","connector","connect","withRouter","loginErrorMessage","useSelector","loginErrorMessageSelector","isLoading","x","loggingIn","redirectTo","useEffect","initialValues","onSubmit","values","validationSchema","component","href","Button","disableElevation","formContainer","marginTop","flexDirection","formFooter","rightPartitionHeading","changePassword","location","search","changePasswordErrorMessage","resetPasswordErrorMessage","actions","submit","resetForm","handleSubmit","useStepIconStyles","active","circle","borderRadius","activeCircle","border","backgroundClip","zIndex","completed","StepIcon","icon","Connector","withStyles","alternativeLabel","borderColor","line","borderTopWidth","StepConnector","useStepperStyles","noPadding","steps","UserStepper","activeStep","Stepper","map","s","Step","StepLabel","iconContainer","StepIconComponent","UserDataFields","speech","autocomplete","validateOnChange","UserData","setActiveStep","data","setData","setToPay","checked","setChecked","setFieldError","paddingTop","FormControlLabel","to","target","rel","control","Checkbox","onChange","e","nutritionistsService","associateNutritionist","getAssociatedNutritionist","removeAssociatedNutritionist","registerFromNutritionist","completeRegisterFromNutritionist","getAssociatedReferer","getPatients","getUserFromCodeService","associateNutritionistRequest","registerFromNutritionistRequest","code","NutritionistCode","nutritionistCode","setNutritionistCode","useDispatch","hasSubmitted","setHasSubmitted","nutritionists","userFromCode","errorGettingUserFromCode","errorUserFromCode","toUpperCase","profile","firstName","lastName","useCheckboxStyles","checkbox","FormCheckbox","value","nextValue","filter","newValue","setFieldValue","concat","PathologiesFields","Pathologies","pathologies","setPathologies","FamilyBackgroundFields","FamilyBackground","familyBackground","setFamilyBackground","EmailConfirmed","userType","mail","emailSent","resendMail","EndUser","Company","Nutritionist","Paper","elevation","costsService","fetchCosts","selectPlan","id","selectCost","selected","loadingCosts","addCosts","costsFailed","item","fetchCommissions","isCompany","monto","setMonto","fromCompany","setFromCompany","getPrice","amount","Number","price","find","minAmount","maxAmount","unitCost","qs","errorMessage","isNaN","getFinalPrice","Card","CardContent","cursor","toFixed","compraSegura","dialogContent","completedText","listStyle","tick","paddingLeft","spinner","Popup","useTheme","fullScreen","useMediaQuery","texts","currentIndex","setCurrentIndex","interval","setInterval","prevIndex","clearInterval","Dialog","event","reason","PaperProps","paddingBottom","maxWidth","fullWidth","DialogTitle","DialogContent","index","CircularProgress","UserSignup","ethnicity","setUserData","toPay","popupOpen","setPopupOpen","isRegistering","stepReceived","sendRegister","setTimeout","pathologiesIds","familyBackIds","createRequestRegisterCompany","analysis","referenceId","created","lastModified","order","invoiceId","transaction","quantity","birthDate","mobile","familyHistories","referer","publicCode","business","nutritionist","logo","ss","JoinMrGen","oit","oms","wef","ArrowSteps","step","presentTitle","NutritionistData","PaymentMethodFields","collectionNetworkSelected","PaymentMethod","submitNutritionist","showSummary","setShowSummary","onBack","collectionNetwork","bank","accountNumber","branchOffice","ci","fullName","businessService","kitsavailables","getEmployes","isNutritionist","anchorEl","setAnchorEl","available","setkitsavailables","snackBar","setSnackBar","selectOption","option","getkits","currentTarget","Menu","keepMounted","transformOrigin","getContentAnchorEl","Boolean","MenuItem","image","titleText","closeIcon","boxShadow","button","container","boxSizing","UserDialog","actualUser","snackbarOpen","setSnackbarOpen","handleDialogClose","user","newAccountInfo","alert","image1","image2","image3","urlHelper","parseQueryString","queryString","substring","params","split","indexQuery","indexPair","queryKey","decodeURIComponent","queryValue","isOnPublicUrl","url","publicUrls","NutritionistSignup","loggedIn","nutrData","setNutrData","paymentData","setPaymentData","vars","createRequestRegister","bankAccount","number","bankBranch","cardIdentification","paymentName","paymentType","changingAvatar","labelSecondary","opacity","FormFileField","setImage","handleChange","files","urlImage","URL","createObjectURL","maxHeight","DefaultImage","htmlFor","UploadIcon","firebase","initializeApp","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","CompanyData","users","setIsLoading","formData","setFormData","percent","setPersent","companyAvatar","file","fileName","Math","random","toString","task","storage","ref","put","on","snapshot","percentage","bytesTransferred","totalBytes","round","message","getDownloadURL","avatarURL","CompanySignup","setUserType","isFinalUser","LandingHeader","React","lazy","default","LandingCover","LandingIntro","LandingHowItWorks","LandingResults","LandingFAQ","LandingBuy","LandingNutritionists","LandingBusinesses","LandingCAT","LandingFooter","datosFAQ","pregunta","respuesta","fallback","redirect","datos","ErrorAnimation","errorAnimation","confirmRegisterErrorMessage","queryParams","decode","verifyingUser","userVerified","verificationFailed","lineHeight","calendar","timesheet","userSelect","WebkitTransition","transition","selectedOption","checkIcon","timeOptions","DateDialog","onSelectDate","setStep","selectedTime","setSelectedTime","selectedDay","setSelectedDay","showOutsideDays","selectedDays","onDayClick","day","disabledDays","momentDay","moment","isBefore","add","t","isSelected","DateSelector","setSelected","coordinated","shouldContact","dates","setDates","internalSelected","setInternalSelected","setUrl","now","locale","next48hs","hour","nextDateFormatted","format","clone","generateDates","googleCalendarEventUrl","start","end","getUrl","d","ix","time","useSelectStyles","select","FormSelect","options","setValue","FormControl","InputLabel","Select","o","overflow","AddressDialog","apartmentNumber","corner","states","AddressSelector","CoordinationType","setAddress","addressValues","new","KitCoordination","setDate","submitKitDistribution","setCoordinated","DELIVERY","KitConfirmation","kitDeliveryInfo","isDelivery","returnDistribution","pickupDistribution","isReturn","setMessage","distribution","kitDistribution","returnKitDistribution","pickupKitDistribution","department","schedule","generateMessage","status","gap","tomaMuestraImage","ShippingSelection","setShippingType","setOption","RadioGroup","Radio","analysesService","createAnalysis","addDistribution","getDistributions","addKitDistribution","getKitDistribution","getAnalysesResults","getAnalysesFoods","getAnalysesResultsById","getAnalysesFoodsById","createAnalysisRequest","newAddress","nutrients","assignIdToCategories","foods","idDict","food","category","categoryId","categories","reduce","accum","distributions","are2Pickups","kitDistributions","prev","onePickupOneDelivery","distWithKit","dist","ShippingType","roles","nutricionist","PickupFlow","distributionInfo","shippingType","addKitPickupDistribution","distributionAddress","addressesAreEqual","addr","PICKUP","DeliveryFlow","setDistributionInfo","res","savedDistribution","city","saveKitAndDistribution","typeDelivery","nextStep","addKitDistributionData","distributionId","toJSON","streetCorner","createAndPayAnalysis","analysisAmount","instrumentToken","installments","coupon","creatingAnalysis","addAnalysis","addAnalysisFailed","fetchAnalysisResults","patientId","fetchingAnalysisResult","result","fetchingAnalysisSuccess","fetchingAnalysisResultFailed","results","fetchingAnalysisFood","fetchingAnalysisFoodSuccess","fetchingAnalysisFoodFailed","Font","registerHyphenationCallback","word","family","fonts","KeyToLabelDict","zone","desc","0","1","2","generalInfo","understandingResults","snps","recommendations","bibliography","Calcio","Hierro","Sodio","VitA","VitB","VitC","VitD","Lactosa","Gluten","Lipidos","HC","Etanol","Cafeina","Apetito","Ejercicio","dictFoodsImg","currentDate","toLocaleDateString","year","month","filterFoodsBy12","Array","fill","_","imageUrl","groupedFoodItems","slice","traitsByCategory","DiagnosticValVerification","r","val","score","nutrient","styles","StyleSheet","create","page","fontFamily","topSection","imageBackground","minWidth","minHeight","bottom","objectFit","reportDetails","textInput","borderBottom","userIdentificationTitle","userIdentification","bold","textTransform","foodSection","flexWrap","foodItem","foodItemImg","foodItemDiv","foodItemName","foodItemCategory","sugeridoPreferir","sugerido","moderar","evitar","traitsPage","traitsPageCont","sumDiagnosticsPageCont","paddingRight","foodsListCont","foodsListTitle","sumDiagnosticsDiv","paddLeft","paddRight","traitsTitle","traitsCategoryTitle","SumDiagnosticsText","sumDiagnosticsTextGrey","traitsItemDivGroup","traitsItemDiv","mTop","padd","traitsItemLabelNew","imgResult","traitsItem","traitsItemLabel","flex","traitsRiskIndicator","imgTraitResult","traitsLowRisk","traitsModerateRisk","traitsHighRisk","pageTraitDetail","sectionTitleTraitDetail","titleTraitDetail","scoreTraitDetail","scoreTextTraitDetail","sectionTraitDetail","bgGreen","bgYellow","bgRed","topRound","borderTopLeftRadius","borderTopRightRadius","bottomRound","borderBottomLeftRadius","borderBottomRightRadius","paddTop5","paddBottom5","subheaderTraitDetail","contentTraitDetail","bibliographyTraitDetail","MyDocument","paciente","prefered","suggested","moderated","avoided","getScore","greenStatus","redStatus","yellowStatus","size","trait","idx","el","DiagnosticScoresByNutrient","ResultsReport","showPDFDownloadLink","setShowPDFDownloadLink","isMounted","fetchDataUser","fetchedFoods","fetchedResults","fetchDataUserFromNutri","document","loading","UserRow","userState","age","background","UserFilters","selectedOptions","toggleOption","Users","setSelectedOptions","setUsers","isEmpty","setIsEmpty","businesses","calculateAge","birthday","ageDifMs","getTime","ageDate","abs","getUTCFullYear","parseStatus","newUser","refererAccounts","employesAccounts","optionId","newOptions","opt","commissionsService","startDate","startOf","endDate","endOf","query","bankAccountsService","fetchBankAccounts","createBankAccount","updatingBankAccounts","loadBankAccountsSuccess","bankAccountsLoadFailed","BalanceSheet","monthData","setMonthData","selectedMonth","setSelectedMonth","noPatients","setNoPatients","parseComissions","monthTotal","buyer","fetchMonthComissions","setSelectedOption","refererIsLoading","refererAccountsErrorMessage","CompanyDashboard","employesAccountsIsLoading","employesAccountsErrorMessage","children","showBackButton","setShowBackButton","pathname","businessImage","charAt","backArrow","Dashboard","createMemoryHistory","oldPassword","newPassword","editOk","isGettingAccount","isUpdatingPassword","passwordEditOk","lastname","dob","submitPassword","UserDNAForm","pathologiesNames","familyHistoriesNames","UserProfile","PaymentDetails","bankAccountNewData","NutritionistProfile","BusinessKits","Input","parseInt","BusinessProfile","DNAForm","NutritionistPayments","finalPrice","paymentError","pushToDataLayer","dataLayer","warn","paymentSuccess","precio","el2","querySelector","createAnalysisErrorMessage","backgroundSize","Redirect","setHasError","urlVars","errorcode","sessionId","parent","postMessage","instrumentsService","addInstrument","fetchInstruments","addingInstrument","addInstrumentUrl","addInstrumentFailed","loadingInstruments","addInstruments","addInstrumentsFailed","Checkout","setPrice","setFinalPrice","setCoupon","setLoading","as","defaultValue","num","issuerImageUrl","useRef","useCallback","receiveMessage","instrumentUrl","addInstrumentErrorMessage","addEventListener","removeEventListener","json","removeItem","loadingPlexo","plexoIframe","verifyCoupon","couponCode","submitForm","couponData","discount","newPrice","setSubmitting","isSubmitting","formikSubmit","isValid","preventDefault","stopPropagation","endUserName","isUser","setIsUser","setBusiness","setNutritionist","setInitialValues","validateForm","createRequestRegisterNutricionist","goBack","referrer","enableReinitialize","validateOnBlur","TermsAndConditions","EndUserNavigation","close","Navigator","Results","Foods","Meal","CommonContainer","loc","useLocation","currentScreen","setCurrentScreen","route","MenuCard","description","CardActionArea","profileKey","storedUserData","firstTimeDashboard","imc","recommendedCaloriesPerDay","recommendedDailyWater","recommendedDailyProteins","recommendedDailyCarbos","recommendedDailyFats","probes","meal","ResultCard","mapDiagnostics","analysisResult","diagnosticResults","intolerancesMain","intolerancesOther","DiagnosticCard","isOpen","setIsOpen","dangerouslySetInnerHTML","__html","Diagnostics","mappedAnalysis","setmappedAnalysis","analysisResultError","analysisResultSuccess","mapped","DiagnosticScore","Metabolisms","WelcomeCard","setActiveTab","activeTab","Tab","ButtonBase","previouslyEntered","MeetingRoom","Assignment","MenuBook","types","FoodItem","Filter","filterId","activeFilters","setActiveFilters","indexOf","filterCopy","analysisFoodResultError","analysisFoodResult","analysisFoodResultSuccess","freqFilters","setFreqFilters","setSearch","isSidebarOpen","setIsSidebarOpen","filteredFoods","setFilteredFoods","f","toLowerCase","Tune","Delete","Agenda","Meals","zonasEnvio","Montevideo","localidades","Canelones","CouponForm","userId","onApplyDiscount","setCode","setDiscount","isApplied","setIsApplied","validateCoupon","getStoredObject","stored","err","getDepartmentFromStore","departments","getNeighborhoodFromStore","neighborhoods","MenuSemanal","hasAnalysis","openModal","setOpenModal","selectedWeek","setSelectedWeek","setSelectedDays","cartItems","setCartItems","deliveryPrice","setDeliveryPrice","weeksData","setWeeksData","cartOpen","setCartOpen","showForm","setShowForm","neighborhood","from","until","saltOption","carboOption","comments","formSubmitted","setFormSubmitted","mealPrice","setMealPrice","preference","setPreference","URLSearchParams","paymentStatus","get","statusMP","setStatusMP","paymentId","setPaymentId","appliedCoupon","setAppliedCoupon","discountAmount","setDiscountAmount","dep","neigh","statusCode","availableWeeksData","week","mealsList","initMercadoPago","getFirstLocalidad","handleApplyDiscount","formatDate","dateString","parseISO","handleCloseModal","setDepartmentInStore","setNeighborhoodInStore","departamento","fromOptions","minute","formattedHour","padStart","formattedMinute","generateFromOptions","untilOptions","setUntilOptions","startHour","startH","filterUntilOptions","handleDayChange","mealId","newSelectedDays","getDayNameFromAvailableDay","availableDay","handleFormChange","prevFormData","formatDateToDayMonth","totalMealsInCart","total","weekItem","totalShipping","Set","accumulator","currentValue","localidad","DialogActions","faCartShopping","weekId","weekstart","weekend","faTimes","prevCartItems","updatedMealsList","mealIndex","handleRemoveFromCart","colorsByDay","selectedWeekData","mealsOrderedByAvailableDay","sort","item1","item2","categoryStyles","faSnowflake","faLeaf","faBreadSlice","faBan","faCarrot","photo","subtitle","match","trim","cat","renderSubtitleLabels","kitchenId","calories","newSelectedDay","existingWeek","updatedWeek","updatedSelectedDays","handleAddToCart","renderMeals","orderData","totalMeals","userObject","mrgenToken","orderFormatted","summary","orderObject","days","daysAccumulator","existingDay","existingMeal","meals","m","mealsByDay","mealGroup","generateOrderSummaryAndObject","orderSummary","dayOffsets","addDays","addDatesToWeeksData","post","initialization","preferenceId","customization","action","actionComplement","valueProp","TurnosList","turnos","dayObj","dayFormatted","Intl","DateTimeFormat","timeZone","__IMTKEY__","array","slot","timeFormatted","hour12","ConsultaNutricional","consultaSeleccionada","setConsultaSeleccionada","setTurnos","turnosLoading","setTurnosLoading","openPopup","setOpenPopup","consultarTurnos","fecha","mes","tipo_consulta","isArray","siguienteMes","addMonths","handleConsultaSelection","consulta","generarPreferencia","tipoConsulta","handleCheckout","autoFocus","iframeRef","origin","iframeContent","onLoad","checkIframeUrl","iframe","current","contentWindow","handleIframeLoad","observer","MutationObserver","observe","childList","subtree","disconnect","onload","hasToken","getAccountSuccess","getAccountErrorMessage","Login","ResetPassword","ChangePassword","EmailVerified","Signup","Profile","PaymentResult","LoadingPayment","LoadingPaymentClone","UserForm","EndUserLanding","NutritionistResults","MealsPayment","Landing","createMuiTheme","palette","primary","main","warning","xs","sm","md","lg","xl","typography","overrides","MuiButton","outlined","MuiMenuItem","MuiPopover","paper","initialState","createAnalysisSuccess","gettingAnalysisDirections","analysisDirections","analysisDirectionsErrorMessage","creatingAnalysisDirection","createAnalysisDirectionSuccess","createAnalysisDirectionErrorMessage","fetchingAnalysisFoodResult","registerErrorMessage","verifyingEmail","verifyEmailSuccess","verifyEmailErrorMessage","confirmResetPasswordErrorMessage","bankAccountsLoading","bankAccountsListErrorMessage","bankAccountsAdding","bankAccountsAddSuccess","bankAccountsAddErrorMessage","businessIsLoading","businessErrorMessage","commissionsAreLoading","commisssionsErrorMessage","transactions","gettingTransaction","getTransactionErrorMessage","usersUpdating","usersUpdateErrorMessage","usersAdding","usersAddSuccess","usersAddErrorMessage","nutritionistIsLoading","nutritionistErrorMessage","nutritionistAdding","nutritionistAddSuccessful","nutritionistAddErrorMessage","nutritionistDeleting","nutritionistDeleteSuccessful","nutritionistDeleteErrorMessage","registeringFromNutritionist","registerFromNutritionistSuccessful","registeredFromNutritionistAccount","registerFromNutritionistFailed","completingRegisterFromNutritionist","completeRegisterFromNutritionistSuccessful","completeRegisterFromNutritionistFailed","refererErrorMessage","refererAccountsIsLoading","enhancer","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","applyMiddleware","thunk","rootReducer","combineReducers","newResults","directions","newDirections","direction","newBankAccountsList","newUsersList","store","createStore","WhatsAppIcon","App","ThemeProvider","ErrorBoundary","errorInfo","this","Component","hostname","ReactDOM","render","StrictMode","getElementById","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.2a9976c3.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primaryText\":\"#4f4f4f\",\"lightSecondaryText\":\"#b9c5d1\",\"darkSecondaryText\":\"#707f8c\",\"primary\":\"#7c67e2\",\"lightPastelPrimary\":\"#bbb3d2\",\"pastelPrimary\":\"#897ea8\",\"darkPastelPrimary\":\"#71567c\",\"success\":\"#a5da7c\",\"warning\":\"#ffe7b3\",\"lightBackground\":\"#fbfbfb\",\"darkBackground\":\"#eaeaf0\",\"darkPrimary\":\"#856a8f\",\"darkerPrimary\":\"#493650\",\"notBlack\":\"#545454\",\"grey\":\"#aaa\",\"lightGrey\":\"#fafafa\",\"pink\":\"#e49daa\",\"white\":\"#fff\",\"seagreen\":\"#85cad2\",\"greyishBrown\":\"#4a4a4a\",\"vibrantYellow\":\"#fec351\",\"vibrantOrange\":\"#f86431\",\"filterRed\":\"#f82f0b\",\"filterOrange\":\"#f88f0b\",\"filterYellow\":\"#ffd782\",\"filterGreen\":\"#86d285\",\"filterLightRed\":\"rgba(200,0,0,0.2)\",\"filterLightOrange\":\"rgba(248,143,11,0.2)\",\"filterLightYellow\":\"rgba(255,215,130,0.3)\",\"filterLightGreen\":\"rgba(134,210,133,0.3)\"};","module.exports = __webpack_public_path__ + \"static/media/auth-left-mosaic.7f4f3bc5.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/search-pizza.1eaa51f4.png\";","module.exports = __webpack_public_path__ + \"static/media/logo.4b60ba42.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVMAAAFCCAMAAAB7H854AAAC+lBMVEUAAACFaY5zVXtEOUSCaI1GO0aGao+BZopzXXxGOkZJPElLPkyFaY7u49qDaIzv5Nvu49qFao9SQ1RSQ1SFaY+FaY9MP02FaY+EaY+AZomEaY6EaY/fy7tFOkVPQVCFao9WRlnu49qFaY9XR1qBZ4tKPExJPEns4dhPQVCFao+FaY9URVdPQlKFao5NP06EaY5TQ1SEaY6Fao5SRFVQQVKDZ45cSWCFaI+Eao5MP06Fao+Fao+Eao7u49pXSFrt4tqEaY9hT2VNQE9NP0/76NyEaY7u49ru49ru49pQQlPu49poVG9YR1vj0cTw59rv5ttSRFTu49pLPkxURVft4dnv49ru49prVXHu39P049fey73dy71aSl5hT2bey71nUmxcS2FoU25hT2Xv49vw49vax7vfzL3dy73fzL3p3dDeyrzey72UepivnpuNfoCmkKHBra/ey77dzLyXThJBN0CFao/ey73u49r82URruSJpXF/Tr3Sxm6acg5qWTRG6jWivp2yXTRGZonePgX+WTxRDOEKRVTVcPjCDaIuIShno3NWGaIeQWURIODtpQSpvQyiNXFNOOjiTTBOHZoCJY3SQVz1UOzWTUyvj19KLYGSIZXmMXVqsaxyOSxbe0c6Qd5d+Rx7UxsiKYmrgsjWVUB2WTxiSWRPazMyJbpF7YoOMX19URVf610Lxyj5kQCybVBieWBXBsLqljaKMcpSOWkvKkyqUUiRstCGiXx54lxzn18piUGdcS2BvrR+NZRS0n66WfZqJYm92RCK3eiGChRraxrl+ZYduWHRnU221g1nnvDm+hCSDfxmGdhfNvMLFsLCdhqC+k3Gvd0n200HqwTrDiidjoyZ1oB27prDJo4XAmHtyXHrOu3amaTjWpDB8jRurlqrSs5hrVnFEQT1JTTlSbzLSni5Zgy6KbxbSvrfXv67WuaJ2X366iWHa0TtKVTiZwyxosiNzox6TjXyco3XMpnGqpm6vgmhvYWdMWzfBzDVXfDCstix9vCXg0SmIAAAAc3RSTlMA/gb+DvgeMBX98v3uv1BA8OjKwJlg6dpZOJ9uQArUzJmLiVxJMv79/PrBqRz177S0rJGDdEEpKOHcx4F43trJqIBoTgzRtqucjGpXRjIkEfTk4+LXznd0Gwbyi+7Z08i5npBdUudIgGlXtqLyv5aVg3VyE0dyNAAAEo9JREFUeNrs3VlsTFEYAOAzi7aomtKqqVhqa+3Uvu/7vpMQ64vne47zZGSSTlGD0qE6E4oQW0Kq0ggSS2J7ETxZIsGj5dkrahntvXfuuWeZOef2fk8S4eHPf86/nNsUSMaf3T+vsMeUyeUFM0YM7l2UPwwNyy+aO2nEqOLyvlN6FHbvH8wBLuJgdp9SPCkfWcvtPWNyYdAPXKa82XlTCgbnI7tyJxVP7p7thrY1f/++vT2ISVFB9yzgMoinG1eZ4unGtXU83biy8+aNGoSEmlTYtspWsCAXiTdoVJ4XtA05U4pQuuSXjweO5+8+woPSam4PZw9cY4uHofQbNMKxd0DW5AkoU3ILgsB5cibnokwaVOy0mzWnfBjKNM+obEBlWeffNgCJZBVkPqLNRgSBLZ0XlcybipOmztsxB8gge4YHSWNwf/KALghgvcCCpSDTgpu/IqnM7U503ktWYjMLloNM6r95ILyKJFPUw2sV0QU4lZW7QMaM39IR/vQOyaYo9Q2wqBRbWAAyw7/tKmxWhuQzIguYWoCtzQeZsHgF/OsJks+wKV5gaM50TKJT+huAcdNgUkeJCn/S3CAwsHwNJjMPpJd320D4v09IRp5i/XZl41pMqgSkU94m2NJAKRMVodxC0Mo8TG4nSJucLT7Y2lMkqd4t59Ud2IbAMpAm669Cvfb7kaQ85X7wz4YAtqMTSIvgZh80cgdJKz85WJXgn2Q7/evLoDGftImKkKfv35ofwPZM3QhE8/6+SVVLVIQG/54A1mG71gHBsjdBc77HSGK5eeCnqdiugODOf31HmMpdJLVyL+iM7VsEBPJvicCUIpeR1HpnlWD71gBxspune5UTFQ1bgyl0BqLM7AitSZ6ol7AO04KK/dxbk2853dINTGUDSOJd75VP1HsYY1mqVF7zMKp+ojbgvzI+oOpaKBNyvqL85yymsxzwtt0HScj7ivLPSUxnB+BsK1F1kvoV5a9SjGWo/N5p0J6OSFqXMKW1izpznFB7rob/UTxR6zGdTs1xLeHU++esgNYUeUWhjenUf8NXYP5OwCyLJKTqvKLU0yZp0krW1V+QIKQqvaJQxHTlWl3aMuXq2DKYknLL6UZs1/QA1pu3DNBabN3pK/aKUk917vVKdwE6SyxCqmCi3mcKKfvHFAMGQkuqvaK8wHYE1nL+QmVoB0hAseX0B1vVaSrnp7+ewyERtV5RGjC5NQHOOwDvr+nJeYl60cY0GsAWSpcCW2zM+Aotp+tt9FAk89UcW5soSE6h5fRr6pCy16ltEEIHJmpjFVsPpUfe+8+MQOjERG2gDSn7j1H080FbVHlFeUEbUvYH1WBHyEDeV5TG05QhZX9Q9a+AbGRdTp+lDSn7g+pmyErOV5TnFCElQNJObYccSJioDbQhZf+Uqn97yIdcryiXWLKUcerPKYOcSPWKUn+RutVn76amQX7keUV5Qdrrn8W2daKYn1hIkqj3sA5pSNm/913sg5zJkKjPMaGLpdi+gEVnWgYFuIMsHTxYE489OFd3JVFdXZ24UnfuQSxeU3OQT3UiTr6LmApFZ8rK/BXlYPzBlepoZe15zUT4fG1ltPrKuThDdBt1kWLKUr0AxeaEnX45Ha+7Wdl0QSNX0VQZvRIXmqWnqzCVlRRjPquWryie+JVo7QWNTkVtNBGzdz0LDyleC8z5N8EkEYm6P5aI1lZozJqOJx4c5L3cO1mFKc2naqPYXUY1icoKjaPa6hpk7QYmdPIkplUCTGUPhMIcPVIb1rhruhnzIL1YXeJmc+H7WeCevXzz8RHWIQsp+09Nr4aCnDhyQBPlfPRci+v1YN1xfRNx69lHi4NddRLTW25e86EQR4+c0sS6EI2hZr+uF9Pi9urNbmyq6jTWYx+j/CJq/qFrB7R0aPp1t8YrtdRe7aYIKctaaivkbt+ZkJYu4VqSC/vZboqQUj+cBn28L9GHx7T0CWshsv72223eIZ2XrgK174AmqesvW0W11Dik7Fv+9ZCna6c0id3a3SKkFzGT6cCEt4xjXTp8TJNaxfUvupAKSNMh/CJ6RPKINnvz7y5lDel84RPU0YeaGvaWJssTi5XLRT9BKZGjv736ValOnsaiTv7iCJ9aL3Vlau1ZaXLGp1Yi9qX0RCa6pxDL8TcPKfuSr3+EQ2l6GNIUE3qLGc0T+qAve/tkqOIzY0g3AjMDIszVXtqhKbWm22wH31wX5iRV7tj/9b4KU1sEzA31Md6kZ7TMCGvs3lJPpMtACl0ZGygVb9J/rtOd/sAikMrQ9kxJqsrcZOYlTURLloOURrbF4sSSqNPXzQGpedu3yeJEkqgnG17cb2zcc+New9kAbjZ1esmODcBSH5bpXnMAs0StuoeSioEdZerVe872YiNn69F/BmUBcuvb8FX6x/VSrPcctVQOyG2i3pgotYNK6Yt1SNEwPyA1LqJoVxrW+PmmP/iXUGuFgNTWNlzw/7lFEFI0GJDqqGjBD2k8tVpPXWxEep4cQGYWZZZqdskd05ZD/+lGZKQHIDNR0ZBqYY2n9y1CWo8MzQVEhkIa1zTHuf3f8FSPTGQDEgupQipBeQppfH1MTk/3kZm+gMQqmiZKgpByj+kbgpCiIqKjH1E0pMnrlHORqnqBUhgLrPVRNaRJnEf+GyiVAmCtm/0ZX5Kdfkjj6xlJSFG+13outb+JkmVtwvvsv8K/fEAW8oAO86d80iz3eMf0PVFI0ShgZbi6jak+puwT/z1kaZCf99E/IU99EpCnrxGBPM5V/5BEC1P+92kDIlFuNeurepmKqPu6kNLN/D7F1nsiY/odkfFkgVSW2LxMNZnwjmkCESrk2UnJ0pmKiWkdIlSceohStI0SEtMYIjQBpOCN2Kr5ksykglQcRKRSXaj9lK35ApqpSkSskNeXZ/s02fA9/McRsWJe16lE3b4QF2oQhwvVG1HrTU9oooaTicpyofZTcGkqLKYhTXtAcaGydKdSfgnNOaaVHC7U1W4fxb1DLVP7NuWaqCF7pX88MOaPQGJtIk21ijhKotqhLlZ2Kk0K8/1/oojQFLN9tNub6udTxiLVVeERStQipRqRGWw2RSm64+MvlBym9iMi+cBYezVX0SQ3qvglqh8YGarmi4mA0x+i2E5lG0+m7tFnqFLdgZHRjjj6dNgP/2Tj5akzjj5vlSzNVC/36DMc/knGrZSDjn6Y/l9SHv5cYKTMUUefLqph+sOfAwz43KPPcvjHAr2gg44+X3XUq/7F6s/6gtyk3kzNdNR1mv5uqi/Q66PqlxLCnUckCoxafnd1aqaGqOmn354e1dqec4jADKDXxbklKmz9t+yL6RFGo6mjS1QobBzPEMlwcJx2OJ3o9BIVCtFuWpsQgSKjcd/5JSoc/v3bOkK//mTHfmRtAn1MtbYoTvkiNRySOKS1RTFkbRDQa+e2UmzNlBfoDHRjaqqOctnX3t1KmUpQftfrc2zLz66a8tO+iBtTtm1fEOgo/kHf/6SJaUTlb3kFi1KefZ8bU1NR2hrlnn1TN2l7KbdGmaqm7PnbuTE1laCcTTu4PT/THJVvFFN3NjV1jnbX5+6lTMUod9IT3f2pqTjl20kv94fNTNVQvvF1cb9AM1PhoXyLHqnwz0MLVkv7zUQfpX94V6go7bc9o537zQSrBO03aGOg20yZiNF+Kznb/QbNzH7ab3pz3G8lTTRRf3sOfI7+YOoHe/f2OmMQxgF81jlJOUUhChdyKpHDlcgdN65IuXMsV695m4kcl5QSORVvkZdf0r4R1tqLXYQbfpu063AhLpxvnCmnohwey7u77zPf2XVoPn/C0zvPMzPvzDOAXeZ3JLq7IhVvm/ldninuAGq8g+aNZfu4uzyxDqe4R3rJ0H+7ZU/T7ALu8E5f4QZ/nIPAXfMR7g5v/NAHeiIMdnfNgZadnUSs7m7wG9+M7CWEu8DPuMGL9EIa5Qa/8U3zviLeBNcQJcnQZ73JOcI17iHMnl09RQ0b/4PecpadAnt1irGuB+Iv0jukUTcU0uff79VJbP6JAt46m+B6yhr2lB0oahn9z/c+tmyXNO3WRzq7Ht1GPbp7iNp6/+O95C3bJPnplP+Pn2xf7SXQ1lYsFts83PEzQRCcOea11HkJpFOa9VvLqMX2uzcL+pvCy/zFx56Z4PqdMFLflCth9kKrIrtLgumUEio+R20r5Qv6N7l8exv367zwMFK/u5wNPAbgDRksndLWFLiYSrff1DUVLjLCej1UNUV3mh7WfRJLpzRDZTgQG9GCriuXNKpXIlVX5s4Zr5n2pCSaTmmvH5lPlQq6oVy719iFimose9xrnp0STae05AfKVPGlTqTwOO3VdSZUiZSve/ZRgcLTKZ3sNdvzS9/Vid2smwCyGZXU5Sal1UNbJJBOkVcOd3ukWNAMuVLtj/SyYshkvWY4KgmUTmk2xf+LUtJMd714QVnxhJ59m6hAYU8b0/KUX/vbNVs+HVucMoorBEoVMvLp957FwU9vxV/UBArqFWXgsuWgpndKhn6ikQ6dV7DsXk0hxYN6JaP+gqAelQxjOgkCbfaTrRRSIKgU0j8f1F2SY5pobMYKpgMlTaBCFRiE1H6h2rNZcvQUBKz85H5Om3vskeORMpdt6dYJ6dVBCPuD/4YG5H6a/IcKkAlaeTSSjBdJzFrB8khDbmIln1SO2a9P+FqfzvcxPNOg0veRX1aYh3buQ/DMFMkMNRj5+OgPFSgTWAwp+gYn//YZeaBh+a/rJwWr2DrJg6xL8d3+ey80ruh9ESncFcunTvB1KRnGLVB4mcoqC6JjWEhTkgDrUmyKei+nbSjSZ4q5Di2fKKT21qVkFCeb4vKUTTEVeHvP9uSUdOvIKvp46Q+VHQHylbKN6SYY+nDmpriLCoLPUddtk1WAQ/zggZQP2pKPypLIM5I+KA2MnCRYpjCGPu6pAuCD/9BeSZBdPnzH7762JaMA8PbU6R3SRKqrYJrDqPqo58qa0KDgb5FGxgmu6Qkm/H9hTCNgps80UXB16N66dPpe2XOcmUrPS0NTRSzwONqLv69EKXUBGPfoPxP8Q72nbSkrALA8PXxUGhsiTExoWdlXAKDw7zGr99RXwv6H+k5b8klZdCf5/nNKmusvTAxavHxDXa/WN/D67dpkbn+x0pI3a5K5torvZPW5M74lvvOL/fSZdhAmFvnOL+QPw4WR2b5T7UnMKV4m36l2VX4zsoswtMB3qpylnmemlvlOlRPyq8kdhKn5vlPlHK1KTS31nSpHaI/P1Fzf+dkT+mNibqHv/OTWTz3jXZGyWaImdxKIxb7zW4kaICCDfIdcokNngHm+88sqKvW5nfvXbRoO4gB+sXEaO1Wl2jQggd2I4AqaKFRyGghIFU1YoqYCpQO0LKhSu4D4p3MGBKOlvgUriI21SLC0dOsDsHXmARhREYlLC6lNfol/Z/8+j3C6b+5+Zym9ASVeUgy8/uPEJ7Z+Fr4cv52I09SgdvyZP5i1juBvp6kxYOBxR/C30xPnKHHrH8jOO3cWmFgV4e9tUpMZABDhZ+hjah56xFOKTfRvQY9Y+5n4PA1/Jb7y/78naTgkphQ7+xNwhHifsvAMmHogGrWzASeJy/RgloGx1cSP/ofQI3ZUNjbuwG9in2JkzU++mP2MbMIvoqjMrG3CsLzsJNPGMgzP3RfJG/87+89h2JYv9jx9Rc2PN2G9TZ2HkXKQmgM3rAswYhUkZmbLDSU1BSNX95CWPTeMq5chAgUZSVHDNOr4PESipSIp225gN65DRGwFKZF33YDOpSEyVVpF/eQGM52BCGXaSIgXrFGvSRApyUJCAjXqbYhcEQl5H+Q/+DjgEFpUP/D3eKK/qJ7SqOMTwIlSDqno36jTaeCGNIdUfO/zwr8kAU8qVPJ/hbvn6L/ZGtLwjUDuu0wdSciSyD2x/H8lkfuuKon5P5Nyj5vlMPe05v/BidwD1woELlXHvqJMcpv7LtNA7u0dbdKzZ4B/Le63KtVv1JtjQILE/alquxv7KSDD5vxULW/Rib2vzves2iYUe5/J9Vrl7VKKvc+uIb90WrEn8AOgOECW1OSxqkqez3tJUKbDW1WpV/SQyVWvKk0T4sCs8PKy0mJS0UNSnYcrYK4O8dKoYaQ8qwXxY+syRkU1qhBPptPGKOSa9Ed9H9WihqOlFePaokc0DAVHRdUbkBANXcXh82oVSJTCkMuaXViMzy4a3NJcGYfCKz9aivVU6qvkWDKypemLGUg4yW5aCrt6lkDo9qtelnEg2YX1BCxNIUmtdaOtYmhyecVYLyQ+732UGs05q6zg6dTsvRUjf180Z2B2o+7ki4ZutXOapqiyh6gqWjlXs3SjmF8stNL8f1H6CaVHcYzv7XaiAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/compra-segura.8202627e.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/nutritionist-dashboard-3.018e91a2.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAABHNCSVQICAgIfAhkiAAAAbtJREFUOE+VlEtOAkEQhv9Cx8cCHyvUAHoEPAF4AvUGoBFJ3PjYCUaM4g7d+giIJ5AbOJ5A1m4UISpuREiUh1KmGwcH6DHai5npqpqvq6qriqBYkVDOhwa8IPaB2SNNiDJg0mHD1d6RS+/8jcyCqP9l5KOvfAbCnOqAloyR7q3ZA9HUaNGQtUCbS3kP2T4vCDT1K+RbyeA7bvTM7586M9Jh8RCe1PtL13+FGAcJmFYdmhaeSVB4+T5NwGynJwODhIV1hxQnDwqovHOXswykYsfuAMnEMl9aQcZdmlQ95uqWMBDNUCSYjYJo2wwyPDEghs4SxrxDkeC9DoLXDFqJjGHMqeEpX5dvsYzv25sqkgfP7QEwrigczBaJaLgTJPaJeAHhQ6dUxdbyWNxwoPLWQKILxEUlyAzdPXLJ7VYoZ1kVzPyqDO2/IIjQVMn+P0gk2+L6DdhfQpPX/1tBCt1GbEIy4+EHZY6YcR47cft/WqSvlCGiSVVhCpmyqpmzWm3I02oRYSiblj7TKpjKFWbOMvfMtTWtYdhs3nJK1XdmmAhHq9lXlWPEbNgcbA0fQD5Gc7ARKAOwDptNVw22L7H71BOX9Xj+AAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/toma-muestra.57f107f7.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAnCAYAAACi5nCnAAAAAXNSR0IArs4c6QAAA7lJREFUWAntmV9IFEEcx2d29/6VphLWXZ72EPQSBNGzYSBFvkSEKFSEEHhnXFQklbnH5mVCSZmX3UlFFBVlhIJP/RF6kyBIhECiCL0zzQi1qLh/O/3m1rns7tTL89y9aF9+O7+d2fl+9jezs/NbhP4fyZ+AJBEu+ZXl8S5Z5067b1dk3P/qvGOscHmkJ/ayJDBOm28vkUkPIWTLj2D4qXR0Mj+xq8x70oZx2v0HZYIeEoT0ilySJ4R+5mVeemIPacE47SOHZZncQojw9NYY4SEjxqWNHeuGE7vKvGfRMKLNd0qW0VUAwYpMPGDSC9savcWjmZedvAchuXt+r2gbaYb50cBqQUT6eVNORUNbwRTzqWGjwyPVjgEAR8YPtUP9E6wNgPStytVVnLlU+I351LIzQ2Th7ru6CD/YN3odIbmG1YbGvYX64sojbhxgPjVtSpHp7CS6d/3++zA/9jGxGHMPeIu1+uQFHGI+te2CkYFV3QiL4WMYYhVMLMb4Bm+21koSlplPC3ZeGKluIicsB3oRIWVMLDRoa/IWHwcgWFq0dcz5am6xTxVEIoHns0E4zLlcnSXHtAhCH2vSyEi28TVhFHoGIJvZs4eK9QDSyspatAkwksNvjQRJH0FkoyIYE8zhOpfH6tUiwGxNfyyaLsenDYFQsA/eWutpJRhOYYhdDYDcnd1Iq+exyIiHxzaRMAwthCxULFwIAkw1TPZurYqP1xWFEe0ftxISeQJzZHV8Ba2XMUZfXd6S6Fc61+4gBgDpzkaQ+AfN0U8RjPk9MEG+xF/MtvK8cwZ29FXnPCU92QIVWzRdHZY3Br2hFCI0TMXTnSO8lB+Jdt/+rIOhgkX32vdGjiuFz/q3tAzfYwKR0R3R7rfRstaPWGSY0MZrRT4e62iEBhUfwUSWPWLtSGwPw+pqzSbAUIGS1zyxEueWQYReMsEw7C7CkDvLylq0SWGo0NOe/EmeN5RDhF4w4ZBOckKELrOy1mzsbTaXsH9mP8MA6U7T/9p/D14IlcwX3Wmaiw7ABi3MfGrbBSPDBGZDDiBlGApFszOizX8FzhwMciY7s7u+1fyd+dSyfwXDRCp5M5SQN5NUzpstCoZC0YwmRKqFAcKmYWCFXtjR4LZ8/u1b3rNFw1CZSq4Zu2HYRe8DQ27IgFG5WinatGAUIPgLIJObAMRycB+MgrBdjeT5nItmqgOkyWO9zWFUBU8lqLTB02GdaTrV9ktZL+3IMDH0zxkhqNmkE3aqOW+YnrSt2v800wbQ0g1+AXxeTwHz3HPzAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/probe-tubes.b652c48d.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primaryText\":\"#4f4f4f\",\"lightSecondaryText\":\"#b9c5d1\",\"darkSecondaryText\":\"#707f8c\",\"primary\":\"#7c67e2\",\"lightPastelPrimary\":\"#bbb3d2\",\"pastelPrimary\":\"#897ea8\",\"darkPastelPrimary\":\"#71567c\",\"success\":\"#a5da7c\",\"warning\":\"#ffe7b3\",\"lightBackground\":\"#fbfbfb\",\"darkBackground\":\"#eaeaf0\",\"darkPrimary\":\"#856a8f\",\"darkerPrimary\":\"#493650\",\"notBlack\":\"#545454\",\"grey\":\"#aaa\",\"lightGrey\":\"#fafafa\",\"pink\":\"#e49daa\",\"white\":\"#fff\",\"seagreen\":\"#85cad2\",\"greyishBrown\":\"#4a4a4a\",\"vibrantYellow\":\"#fec351\",\"vibrantOrange\":\"#f86431\",\"filterRed\":\"#f82f0b\",\"filterOrange\":\"#f88f0b\",\"filterYellow\":\"#ffd782\",\"filterGreen\":\"#86d285\",\"filterLightRed\":\"rgba(200,0,0,0.2)\",\"filterLightOrange\":\"rgba(248,143,11,0.2)\",\"filterLightYellow\":\"rgba(255,215,130,0.3)\",\"filterLightGreen\":\"rgba(134,210,133,0.3)\"};","export enum UserType {\n EndUser = 1,\n Nutritionist,\n Company,\n}\n","import React from \"react\";\nimport { Snackbar, makeStyles, Theme, createStyles } from \"@material-ui/core\";\nimport WarningIcon from \"@material-ui/icons/Warning\";\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport * as styleVars from \"../../../styles/_variables.scss\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n snackbar: {\n width: \"100%\",\n margin: 0,\n top: 0,\n right: 0,\n height: \"100px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: styleVars.darkSecondaryText,\n fontWeight: \"bold\",\n [theme.breakpoints.down('xs')]: {\n left: 0,\n }\n },\n content: {\n display: \"flex\",\n alignItems: \"Center\",\n \"& p\": {\n marginLeft: \"15px\",\n },\n [theme.breakpoints.down('xs')]: {\n margin: \"0 15px\",\n }\n },\n })\n);\n\ninterface FullWidthSnackbarProps {\n open: boolean;\n setOpen: (open: boolean) => void;\n text: string;\n success: boolean;\n}\n\nfunction FullWidthSnackbar({ open, setOpen, text, success }: FullWidthSnackbarProps) {\n const classes = useStyles();\n\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n \n
\n {success ? : }\n

{text}

\n
\n \n );\n}\n\nexport default FullWidthSnackbar;\n","import React, { useState } from \"react\";\nimport {\n TextField,\n Tooltip,\n InputAdornment,\n makeStyles,\n IconButton,\n} from \"@material-ui/core\";\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\nimport VisibilityOffIcon from \"@material-ui/icons/VisibilityOff\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport { FieldProps } from \"formik\";\n\nconst useFormTextStyles = makeStyles({\n root: {\n width: \"100%\",\n },\n inputRoot: {\n padding: \"12px 18px\",\n },\n input: {\n top: 12,\n left: 18,\n },\n focused: {\n fontSize: 16,\n },\n});\n\nfunction isIos() {\n return [\n \"iPad Simulator\",\n \"iPhone Simulator\",\n \"iPod Simulator\",\n \"iPad\",\n \"iPhone\",\n \"iPod\",\n ].includes(navigator.platform);\n}\n\ntype FormTextFieldProps = FieldProps & React.HTMLProps;\n\nfunction FormTextField({ field, form, ...props }: FormTextFieldProps) {\n const [passwordType, setPasswordType] = useState(\"password\");\n\n const classes = useFormTextStyles();\n const hasError =\n (form.touched[field.name] && form.errors[field.name]) !== undefined;\n const isPassword = props.type === \"password\";\n const errorMesagge = form.errors[field.name];\n const isIosDevice = isIos();\n const [isFocused, setIsFocused] = useState(false);\n\n return (\n \n \n \n \n \n ) : isPassword ? (\n \n {passwordType === \"password\" ? (\n setPasswordType(\"text\")}>\n \n \n ) : (\n setPasswordType(\"password\")}>\n \n \n )}\n \n ) : null,\n inputProps: {\n pattern: props.pattern,\n maxLength: props.maxLength,\n autoComplete: \"off\",\n \n }\n }}\n {...field}\n type={\n isPassword\n ? passwordType\n : props.type === \"date\" && !isFocused\n ? \"text\"\n : isIos()\n ? \"text\"\n : props.type\n }\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n label={props.placeholder}\n disabled={props.disabled}\n placeholder={isIosDevice && props.placeholder === \"Fecha de nacimiento\" ? \"mm/dd/aaaa (Mes/Día/Año)\" : props.placeholder}\n />\n );\n}\n\nexport default FormTextField;\n","import React from \"react\";\nimport WhiteLogo from \"../../../assets/whiteLogo.png\";\nimport mosaic from \"../../../assets/auth-left-mosaic.png\";\nimport { useHistory } from \"react-router\";\nfunction AuthInfoPanel() {\n const history = useHistory()\n\n function goToHome() {\n history.push('/');\n }\n return (\n
\n \"\"/\n
\n \"MrGen\n

\n Más conocimiento, mejor bienestar, mejor calidad de vida.\n

\n

\n Accedé a tus resultados y navegá entre casi 300 alimentos para conocer si debes preferir, moderar o evitar su consumo.\n

\n history.push('/signup/?user=3')}>\n

Consultá aquí planes de empresa

\n
\n
\n
\n );\n}\n\nexport default AuthInfoPanel;\n","export interface HttpResponse extends Response {\n parsedBody?: T;\n stringBody?: string;\n}\n\nconst token = () => localStorage.token;\n\nasync function http(request: RequestInfo): Promise> {\n const response: HttpResponse = await fetch(request);\n\n await response.text().then((body) => {\n try {\n response.parsedBody = JSON.parse(body);\n } catch (ex) {\n response.stringBody = body;\n }\n });\n\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n\n return response;\n}\n\nexport async function httpGet(\n path: string,\n args: RequestInit = {\n method: \"get\",\n headers: new Headers({ \"Content-Type\": \"application/json\", Authorization: `Bearer ${token()}` }),\n }\n): Promise> {\n return await http(new Request(path, args));\n}\n\nexport async function httpPost(\n path: string,\n body: any,\n args: RequestInit = {\n method: \"post\",\n headers: new Headers({ \"Content-Type\": \"application/json\", Authorization: `Bearer ${token()}` }),\n body: JSON.stringify(body),\n }\n): Promise> {\n return await http(new Request(path, args));\n}\n\nexport async function httpPut(\n path: string,\n body: any,\n args: RequestInit = { \n method: \"put\", \n headers: new Headers({ \"Content-Type\": \"application/json\", Authorization: `Bearer ${token()}` }), \n body: JSON.stringify(body),\n }\n): Promise> {\n return await http(new Request(path, args));\n}\n\nexport async function httpDelete(path: string, args: RequestInit = { method: \"delete\" }): Promise> {\n return await http(new Request(path, args));\n}\n","const BASE_URL = \"https://services.mistergen.com\";\n//const BASE_URL = \"https://staging.services.mistergen.com\";\n//const BASE_URL = \"https://developers.services.mistergen.com\";\n\n//const BASE_URL_FOODS = \"http://192.168.1.213:3000\";\nconst BASE_URL_FOODS = \"https://services.balance.com.uy\";\n\n// const BASE_URL = \"http://35.169.8.183:9090\";\n// const BASE_URL = \"https://localhost:44358\";\n// const BASE_URL = \"http://localhost:9999\";\n\nconst REDIRECT_URL = \"https://mistergen.com/\";\n//const REDIRECT_URL = \"http://localhost:3000/\";\n//const REDIRECT_URL = \"http://localhost:3001/\";\n\nexport { BASE_URL, REDIRECT_URL, BASE_URL_FOODS };","import {BASE_URL} from './config';\n\nexport const endpoints = {\n authLogin: `${BASE_URL}/v1/account/authenticate`,\n authAccount: `${BASE_URL}/v1/account`,\n authNutritionist: `${BASE_URL}/v1/account/nutritionist`,\n authRegisterFromNutritionist: `${BASE_URL}/v1/account/fromNutritionist`,\n authRegisterFromBusiness: `${BASE_URL}/v1/Account/fromBusiness`,\n authReferer: `${BASE_URL}/v1/account/referer`,\n authResendEmail: `${BASE_URL}/v1/Account/resendemailregister`,\n authVerifyEmail: `${BASE_URL}/v1/account/verification`,\n authConfirmation: `${BASE_URL}/v1/account/confirmation`,\n authChangePassword: `${BASE_URL}/v1/account/password`,\n authResetPassword: `${BASE_URL}/v1/account/password/reset`,\n instruments: `${BASE_URL}/v1/instruments`,\n analyses: `${BASE_URL}/v1/analyses`,\n analysesAddDistribution: `${BASE_URL}/v1/analyses/adddistribution`,\n analysesAddKitDistribution: `${BASE_URL}/v1/analyses/addkitdistribution`,\n analysesGetDistribution: `${BASE_URL}/v1/analyses/getDistribution`,\n analysesGet: `${BASE_URL}/v1/Analyses/getAnalysis`,\n analysesGetResults: `${BASE_URL}/v1/Analyses/results`,\n analysesGetResultsById: `${BASE_URL}/v1/Analyses/patients/result`,\n analysesGetFoodsById: `${BASE_URL}/v1/Analyses/patients/foods`,\n analysesGetFoods: `${BASE_URL}/v1/Analyses/foods`,\n bankAccounts: `${BASE_URL}/v1/bankAccounts`,\n commissions: `${BASE_URL}/v1/commission`,\n costs: `${BASE_URL}/v1/cost`,\n patients: `${BASE_URL}/v1/account/patients`,\n getUserFromCode: `${BASE_URL}/v1/account/nutritionist`,\n employes: `${BASE_URL}/v1/account/employees`,\n kitsavailable: `${BASE_URL}/v1/account/kitsavailable`\n};\n","import {\n LoginRequest,\n User,\n RegisterRequest,\n ChangePasswordRequest,\n Account,\n RegisterFromBusiness,\n GetUserFromBusinessResponse,\n RegisterFromNutricionist,\n} from '../store/auth/types';\nimport {httpPost, httpGet, httpPut} from './base.service';\nimport {endpoints} from './endpoints';\n\nexport const authService = {\n login,\n register,\n verifyEmail,\n confirmRegister,\n modifyPassword,\n resetPassword,\n confirmResetPassword,\n getAccount,\n getAccountById,\n createUserFromBusiness,\n getUserFromBusiness,\n updateAccount,\n createUserFromNutricionist,\n resendEmail,\n};\n\nasync function login(loginRequest: LoginRequest): Promise {\n return await httpPost(`${endpoints['authLogin']}`, loginRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function register(\n registerRequest: RegisterRequest\n): Promise {\n return await httpPost(`${endpoints['authAccount']}`, registerRequest)\n .then((response) => {\n return response.stringBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function verifyEmail(email: string): Promise {\n return await httpGet(\n `${endpoints['authVerifyEmail']}?email=${email}`\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function confirmRegister(\n token: string,\n accountId: string\n): Promise {\n return await httpGet(\n `${endpoints['authConfirmation']}?token=${token}&id=${accountId}`\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function modifyPassword(\n changePasswordRequest: ChangePasswordRequest\n): Promise {\n return await httpPut(\n `${endpoints['authChangePassword']}`,\n changePasswordRequest\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function resetPassword(email: string): Promise {\n return await httpPost(`${endpoints['authResetPassword']}`, {email})\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function resendEmail(email: string): Promise {\n return await httpPost(`${endpoints.authResendEmail}`, {email})\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function confirmResetPassword(\n token: string,\n): Promise {\n return await httpGet(\n `${endpoints['authResetPassword']}/confirmation${token}`\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function getAccount(): Promise {\n return await httpGet(`${endpoints['authAccount']}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function getAccountById(accountId: string): Promise {\n return await httpGet(`${endpoints['authAccount']}/${accountId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function updateAccount(\n updateRequest: Account\n): Promise {\n return await httpPut(`${endpoints['authAccount']}`, updateRequest)\n .then((response) => {\n return response.stringBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function createUserFromBusiness(\n registerRequest: RegisterFromBusiness\n): Promise {\n return await httpPost(\n `${endpoints['authRegisterFromBusiness']}`,\n registerRequest\n )\n .then((response) => {\n return response.stringBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function getUserFromBusiness(\n userData: string\n): Promise {\n return await httpGet(\n `${endpoints['authRegisterFromBusiness']}?userdata=${userData}`\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function createUserFromNutricionist(\n registerRequest: RegisterFromNutricionist\n): Promise {\n return await httpPost(\n `${endpoints['authRegisterFromNutritionist']}`,\n registerRequest\n )\n .then((response) => {\n return response.stringBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n","import {\n Account,\n LoginRequest,\n RegisterRequest,\n UpdateAccountRequest,\n \n} from './types';\nimport {\n AuthActionTypes,\n REGISTER_REQUEST,\n REGISTER_SUCCESS,\n REGISTER_FAILED,\n LOGIN_REQUEST,\n LOGIN_SUCCESS,\n LOGIN_FAILED,\n VERIFY_EMAIL_REQUEST,\n VERIFY_EMAIL_SUCCESS,\n VERIFY_EMAIL_FAILED,\n CONFIRMING_REGISTER,\n CONFIRM_REGISTER_SUCCESS,\n CONFIRM_REGISTER_FAILED,\n CHANGING_PASSWORD,\n CHANGE_PASSWORD_SUCCESS,\n CHANGE_PASSWORD_FAILED,\n RESETING_PASSWORD,\n RESET_PASSWORD_SUCCESS,\n RESET_PASSWORD_FAILED,\n CONFIRMING_RESET_PASSWORD,\n CONFIRM_RESET_PASSWORD_SUCCESS,\n CONFIRM_RESET_PASSWORD_FAILED,\n GET_ACCOUNT_FAILED,\n GET_ACCOUNT,\n ChangeEmailSentAction,\n CHANGE_EMAIL_SENT,\n LogoutAction,\n LOGOUT,\n UPDATE_ACCOUNT_FAILURE,\n UPDATE_ACCOUNT_REQUEST,\n UPDATE_ACCOUNT_SUCCESS,\n} from './actionTypes';\nimport {Dispatch} from 'redux';\nimport {authService} from '../../services/auth.service';\nimport { RootState } from \"../../store/config/types\";\n\n//#region Login\n\nexport const login = ({email, password}: LoginRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(requestLogin());\n\n authService.login({email, password}).then(\n (response) => {\n window.localStorage.setItem('token', response!.jwtToken);\n dispatch(loginSuccess(response!.account));\n },\n (error) => {\n dispatch(loginFailed(error));\n }\n );\n };\n};\n\nconst requestLogin = (): AuthActionTypes => ({\n type: LOGIN_REQUEST,\n});\n\nconst loginSuccess = (account: Account): AuthActionTypes => ({\n type: LOGIN_SUCCESS,\n account,\n});\n\nconst loginFailed = (error: string): AuthActionTypes => ({\n type: LOGIN_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Logout\n\nexport const logout = () => {\n return (dispatch: Dispatch, getState: () => RootState) => {\n // Se recorren las claves del localStorage y se conservan aquellas que empiezan con \"userProfileData_\",\n // \"departments\" y \"neighborhoods\"\n const preservedData: Record = {};\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (\n key &&\n (key.startsWith(\"userProfileData_\") ||\n key === \"departments\" ||\n key === \"neighborhoods\")\n ) {\n preservedData[key] = localStorage.getItem(key) as string;\n }\n }\n /* const dpto = localStorage.getItem('department');\n const barrio = localStorage.getItem('neighborhood');\n const preservedData: Record = {}; */\n // Recorrer todas las claves y conservar las que empiecen con \"userProfileData_\"\n /* for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key && key.startsWith(\"userProfileData_\")) {\n preservedData[key] = localStorage.getItem(key) as string;\n }\n } */\n\n window.localStorage.clear();\n \n /* if (dpto) localStorage.setItem(\"department\", dpto);\n if (barrio) localStorage.setItem(\"neighborhood\", barrio); */\n // Restaurar las claves que queremos conservar\n Object.keys(preservedData).forEach((key) => {\n localStorage.setItem(key, preservedData[key]);\n });\n \n dispatch(logouting());\n };\n};\n\nconst logouting = (): LogoutAction => ({\n type: LOGOUT,\n});\n\n//#endregion\n\n//#region Register\n\nexport const register = (account: Account, password: string) => {\n return (dispatch: Dispatch) => {\n dispatch(registering());\n\n const registerRequest: RegisterRequest = {\n account,\n password,\n };\n\n authService.register(registerRequest).then(\n (response) => {\n console.log('success')\n dispatch(registerSuccess());\n },\n (error) => {\n console.log('failure')\n dispatch(registerFailed(error));\n }\n );\n };\n};\n\nexport const changeEmail = (email: string) => {\n return (dispatch: Dispatch) => {\n dispatch(changingEmail(email));\n };\n};\n\nconst changingEmail = (email: string): ChangeEmailSentAction => ({\n type: CHANGE_EMAIL_SENT,\n email: email,\n});\n\nconst registering = (): AuthActionTypes => ({\n type: REGISTER_REQUEST,\n});\n\nconst registerSuccess = (): AuthActionTypes => ({\n type: REGISTER_SUCCESS,\n});\n\nconst registerFailed = (error: string): AuthActionTypes => ({\n type: REGISTER_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Verify email\n\nexport const verifyEmail = (email: string) => {\n return (dispatch: Dispatch) => {\n dispatch(verifyingEmail());\n\n authService.verifyEmail(email).then(\n (response) => {\n console.log(response);\n dispatch(verifyEmailSuccess());\n },\n (error) => {\n console.log(error);\n dispatch(verifyEmailFailed('Error'));\n }\n );\n };\n};\n\nconst verifyingEmail = (): AuthActionTypes => ({\n type: VERIFY_EMAIL_REQUEST,\n});\n\nconst verifyEmailSuccess = (): AuthActionTypes => ({\n type: VERIFY_EMAIL_SUCCESS,\n});\n\nconst verifyEmailFailed = (error: string): AuthActionTypes => ({\n type: VERIFY_EMAIL_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Confirm register\n\nexport const confirmRegister = (token: string, accountId: string) => {\n return (dispatch: Dispatch) => {\n dispatch(confirmingRegister());\n\n authService.confirmRegister(token, accountId).then(\n (response) => {\n dispatch(confirmRegisterSuccess());\n },\n (error) => {\n dispatch(confirmRegisterFailed(error));\n }\n );\n };\n};\n\nconst confirmingRegister = (): AuthActionTypes => ({\n type: CONFIRMING_REGISTER,\n});\n\nconst confirmRegisterSuccess = (): AuthActionTypes => ({\n type: CONFIRM_REGISTER_SUCCESS,\n});\n\nconst confirmRegisterFailed = (error: string): AuthActionTypes => ({\n type: CONFIRM_REGISTER_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Modify password\n\nexport const modifyPassword = (oldPassword: string, newPassword: string) => {\n return (dispatch: Dispatch) => {\n dispatch(changingPassword());\n\n authService.modifyPassword({oldPassword, newPassword}).then(\n (response) => {\n dispatch(changePasswordSuccess());\n },\n (error) => {\n dispatch(changePasswordFailed(error));\n }\n );\n };\n};\n\nconst changingPassword = (): AuthActionTypes => ({\n type: CHANGING_PASSWORD,\n});\n\nconst changePasswordSuccess = (): AuthActionTypes => ({\n type: CHANGE_PASSWORD_SUCCESS,\n});\n\nexport const changePasswordFailed = (error: string): AuthActionTypes => ({\n type: CHANGE_PASSWORD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Reset password\n\nexport const resetPassword = (email: string) => {\n return (dispatch: Dispatch) => {\n dispatch(resetingPassword());\n\n authService.resetPassword(email).then(\n (response) => {\n dispatch(resetPasswordSuccess());\n },\n (error) => {\n dispatch(resetPasswordFailed(error));\n }\n );\n };\n};\n\nconst resetingPassword = (): AuthActionTypes => ({\n type: RESETING_PASSWORD,\n});\n\nconst resetPasswordSuccess = (): AuthActionTypes => ({\n type: RESET_PASSWORD_SUCCESS,\n});\n\nconst resetPasswordFailed = (error: string): AuthActionTypes => ({\n type: RESET_PASSWORD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Confirm reset password\n\nexport const confirmResetPassword = (token: string) => {\n return (dispatch: Dispatch) => {\n dispatch(confirmingResetPassword());\n\n authService.confirmResetPassword(token).then(\n (response) => {\n dispatch(confirmResetPasswordSuccess());\n },\n (error) => {\n dispatch(confirmResetPasswordFailed(error));\n }\n );\n };\n};\n\nconst confirmingResetPassword = (): AuthActionTypes => ({\n type: CONFIRMING_RESET_PASSWORD,\n});\n\nconst confirmResetPasswordSuccess = (): AuthActionTypes => ({\n type: CONFIRM_RESET_PASSWORD_SUCCESS,\n});\n\nconst confirmResetPasswordFailed = (error: string): AuthActionTypes => ({\n type: CONFIRM_RESET_PASSWORD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Get account\n\nexport const getAccount = () => {\n return (dispatch: Dispatch) => {\n dispatch(gettingAccount());\n\n authService.getAccount().then(\n (response) => {\n dispatch(addAccount(response!));\n },\n (error) => {\n dispatch(addAccountFailed(error));\n }\n );\n };\n};\n\nexport const getAccountById = (accountId: string) => {\n return (dispatch: Dispatch) => {\n dispatch(gettingAccount());\n\n authService.getAccountById(accountId).then(\n (response) => {\n dispatch(addAccount(response!));\n },\n (error) => {\n dispatch(addAccountFailed(error));\n }\n );\n };\n};\n\nconst gettingAccount = (): AuthActionTypes => ({\n type: CONFIRMING_RESET_PASSWORD,\n});\n\nconst addAccount = (account: Account): AuthActionTypes => ({\n type: GET_ACCOUNT,\n account,\n});\n\nconst addAccountFailed = (error: string): AuthActionTypes => ({\n type: GET_ACCOUNT_FAILED,\n error,\n});\n\n//#endregion\n\n//#region updateProfile\n\nexport const updateProfile = (account: Account) => {\n return (dispatch: Dispatch) => {\n dispatch(updatingAccount());\n\n const updateAccount: UpdateAccountRequest = {\n account,\n };\n\n authService.updateAccount(account).then(\n (response) => {\n dispatch(updateSuccess());\n },\n (error) => {\n dispatch(upadteFailed(error));\n }\n );\n };\n};\n\nconst updatingAccount = (): AuthActionTypes => ({\n type: UPDATE_ACCOUNT_REQUEST,\n});\n\nconst updateSuccess = (): AuthActionTypes => ({\n type: UPDATE_ACCOUNT_SUCCESS,\n});\n\nexport const upadteFailed = (error: string): AuthActionTypes => ({\n type: UPDATE_ACCOUNT_FAILURE,\n error,\n});\n\n//#endregion\n","import { Account } from \"./types\";\n\nexport const REGISTER_REQUEST = \"REGISTER_REQUEST\";\nexport const REGISTER_SUCCESS = \"REGISTER_SUCCESS\";\nexport const REGISTER_FAILED = \"REGISTER_FAILED\";\n\nexport interface RequestRegisterAction {\n type: typeof REGISTER_REQUEST;\n}\n\nexport interface RegisterSuccessAction {\n type: typeof REGISTER_SUCCESS;\n}\n\nexport interface RegisterFailedAction {\n type: typeof REGISTER_FAILED;\n error: string;\n}\n\nexport const LOGIN_REQUEST = \"LOGIN_REQUEST\";\nexport const LOGIN_SUCCESS = \"LOGIN_SUCCESS\";\nexport const LOGIN_FAILED = \"LOGIN_FAILED\";\n\nexport interface RequestLoginAction {\n type: typeof LOGIN_REQUEST;\n}\n\nexport interface LoginSuccessAction {\n type: typeof LOGIN_SUCCESS;\n account: Account;\n}\n\nexport interface LoginFailedAction {\n type: typeof LOGIN_FAILED;\n error: string;\n}\n\nexport const VERIFY_EMAIL_REQUEST = \"VERIFY_EMAIL_REQUEST\";\nexport const VERIFY_EMAIL_SUCCESS = \"VERIFY_EMAIL_SUCCESS\";\nexport const VERIFY_EMAIL_FAILED = \"VERIFY_EMAIL_FAILED\";\n\nexport interface RequestVerifyEmailAction {\n type: typeof VERIFY_EMAIL_REQUEST;\n}\n\nexport interface VerifyEmailSuccessAction {\n type: typeof VERIFY_EMAIL_SUCCESS;\n}\n\nexport interface VerifyEmailFailedAction {\n type: typeof VERIFY_EMAIL_FAILED;\n error: string;\n}\n\nexport const CONFIRMING_REGISTER = \"CONFIRMING_REGISTER\";\nexport const CONFIRM_REGISTER_SUCCESS = \"CONFIRM_REGISTER_SUCCESS\";\nexport const CONFIRM_REGISTER_FAILED = \"CONFIRM_REGISTER_FAILED\";\n\nexport interface RequestConfirmRegisterAction {\n type: typeof CONFIRMING_REGISTER;\n}\n\nexport interface ConfirmRegisterSuccessAction {\n type: typeof CONFIRM_REGISTER_SUCCESS;\n}\n\nexport interface ConfirmRegisterFailedAction {\n type: typeof CONFIRM_REGISTER_FAILED;\n error: string;\n}\n\nexport const CHANGING_PASSWORD = \"CHANGING_PASSWORD\";\nexport const CHANGE_PASSWORD_SUCCESS = \"CHANGE_PASSWORD_SUCCESS\";\nexport const CHANGE_PASSWORD_FAILED = \"CHANGE_PASSWORD_FAILED\";\n\nexport interface RequestChangePasswordAction {\n type: typeof CHANGING_PASSWORD;\n}\n\nexport interface ChangePasswordSuccessAction {\n type: typeof CHANGE_PASSWORD_SUCCESS;\n}\n\nexport interface ChangePasswordFailedAction {\n type: typeof CHANGE_PASSWORD_FAILED;\n error: string;\n}\n\nexport const RESETING_PASSWORD = \"RESETING_PASSWORD\";\nexport const RESET_PASSWORD_SUCCESS = \"RESET_PASSWORD_SUCCESS\";\nexport const RESET_PASSWORD_FAILED = \"RESET_PASSWORD_FAILED\";\n\nexport interface RequestResetPasswordAction {\n type: typeof RESETING_PASSWORD;\n}\n\nexport interface ResetPasswordSuccessAction {\n type: typeof RESET_PASSWORD_SUCCESS;\n}\n\nexport interface ResetPasswordFailedAction {\n type: typeof RESET_PASSWORD_FAILED;\n error: string;\n}\n\nexport const CONFIRMING_RESET_PASSWORD = \"CONFIRMING_RESET_PASSWORD\";\nexport const CONFIRM_RESET_PASSWORD_SUCCESS = \"CONFIRM_RESET_PASSWORD_SUCCESS\";\nexport const CONFIRM_RESET_PASSWORD_FAILED = \"CONFIRM_RESET_PASSWORD_FAILED\";\n\nexport interface RequestConfirmResetPasswordAction {\n type: typeof CONFIRMING_RESET_PASSWORD;\n}\n\nexport interface ConfirmResetPasswordSuccessAction {\n type: typeof CONFIRM_RESET_PASSWORD_SUCCESS;\n}\n\nexport interface ConfirmResetPasswordFailedAction {\n type: typeof CONFIRM_RESET_PASSWORD_FAILED;\n error: string;\n}\n\nexport const GETTING_ACCOUNT = \"GETTING_ACCOUNT\";\nexport const GET_ACCOUNT = \"GET_ACCOUNT\";\nexport const GET_ACCOUNT_FAILED = \"GET_ACCOUNT_FAILED\";\n\nexport interface RequestGetAccountAction {\n type: typeof GETTING_ACCOUNT;\n}\n\nexport interface GetAccountAction {\n type: typeof GET_ACCOUNT;\n account: Account;\n}\n\nexport interface GetAccountFailedAction {\n type: typeof GET_ACCOUNT_FAILED;\n error: string;\n}\n\nexport const CHANGE_EMAIL_SENT = \"CHANGE_EMAIL_SENT\";\n\nexport interface ChangeEmailSentAction {\n type: typeof CHANGE_EMAIL_SENT;\n email: string;\n}\n\nexport const LOGOUT = \"LOGOUT\";\nexport interface LogoutAction {\n type: typeof LOGOUT;\n}\n\nexport const UPDATE_ACCOUNT_REQUEST = \"UPDATE_ACCOUNT_REQUEST\";\nexport const UPDATE_ACCOUNT_SUCCESS = \"UPDATE_ACCOUNT_SUCCESS\";\nexport const UPDATE_ACCOUNT_FAILURE = \"UPDATE_ACCOUNT_FAILURE\";\n\nexport interface RequestUpdateAccountAction {\n type: typeof UPDATE_ACCOUNT_REQUEST;\n}\n\nexport interface RegisteUpdateAccountAction {\n type: typeof UPDATE_ACCOUNT_SUCCESS;\n}\n\nexport interface RegisterUpdateAccountAction {\n type: typeof UPDATE_ACCOUNT_FAILURE;\n error: string;\n}\n\nexport type AuthActionTypes =\n | RequestUpdateAccountAction\n | RegisteUpdateAccountAction\n | RegisterUpdateAccountAction\n | RequestRegisterAction\n | RegisterSuccessAction\n | RegisterFailedAction\n | RequestLoginAction\n | LoginSuccessAction\n | LoginFailedAction\n | RequestVerifyEmailAction\n | VerifyEmailSuccessAction\n | VerifyEmailFailedAction\n | RequestConfirmRegisterAction\n | ConfirmRegisterSuccessAction\n | ConfirmRegisterFailedAction\n | RequestChangePasswordAction\n | ChangePasswordSuccessAction\n | ChangePasswordFailedAction\n | RequestResetPasswordAction\n | ResetPasswordSuccessAction\n | ResetPasswordFailedAction\n | RequestConfirmResetPasswordAction\n | ConfirmResetPasswordSuccessAction\n | ConfirmResetPasswordFailedAction\n | RequestGetAccountAction\n | GetAccountAction\n | GetAccountFailedAction\n | ChangeEmailSentAction\n | LogoutAction;\n","import * as Yup from \"yup\";\n\nconst passwordMatchString = \"Las contraseñas no coinciden.\";\nconst invalidMailFomrat = \"Formato inválido de correo electrónico.\";\nconst emptyInput = \"El campo es obligatorio.\";\nconst invalidFormat = \"Formato incorrecto.\";\nconst invalidPassword = \"La contraseña debe tener al menos 6 caracteres y un número entre 0 y 9.\";\n\n//const passwordRegex = /^.{6,}$/;//6 caracteres\nconst passwordRegex = /^(?=.*\\d).{6,}$/;//6 caracteres al menos 1 dígito\nconst nameRegex = /^[a-zA-ZÀ-ÿ\\u00f1\\u00d1]+(\\s*[a-zA-ZÀ-ÿ\\u00f1\\u00d1]*)*[a-zA-ZÀ-ÿ\\u00f1\\u00d1]+$/;\nconst emailRegex = /^[^\\s@&]+@[^\\s@&]+\\.[^\\s@&]+$/;\n\nconst dateValidation = Yup.date()\n .typeError(\"La fecha debe estar en formato mm/dd/yyyy\")\n .max(new Date(), \"La fecha no puede ser en el futuro\")\n .required(emptyInput);\n\nconst ChangePasswordSchema = Yup.object().shape({\n password: Yup.string()\n .matches(passwordRegex, invalidPassword)\n .oneOf([Yup.ref(\"password\")], passwordMatchString),\n repeatPassword: Yup.string()\n .matches(passwordRegex, invalidPassword)\n .oneOf([Yup.ref(\"newPassword\")], passwordMatchString),\n});\n\nconst CreateNutricionistSchema = Yup.object().shape({\n names: Yup.string().matches(nameRegex, invalidFormat).required(emptyInput),\n surnames: Yup.string().matches(nameRegex, invalidFormat).required(emptyInput),\n email: Yup.string().email(invalidMailFomrat).matches(emailRegex, \"El correo no puede contener caracteres especiales como &.\").required(emptyInput),\n phone: Yup.string().matches(/^\\d{1,10}$/, \"El teléfono debe tener entre 1 y 10 dígitos y solo contener números.\").required(emptyInput),\n password: Yup.string().matches(passwordRegex, invalidPassword).required(emptyInput),\n repeatPassword: Yup.string().matches(passwordRegex, invalidPassword).required(emptyInput).oneOf([Yup.ref(\"password\")], passwordMatchString),\n});\n\nconst CreateCompanySchema = Yup.object().shape({\n name: Yup.string().matches(nameRegex, invalidFormat).required(emptyInput),\n email: Yup.string().email(invalidMailFomrat).matches(emailRegex, \"El correo no puede contener caracteres especiales como &.\").required(emptyInput),\n rut: Yup.number().typeError(invalidFormat).positive(invalidFormat).required(emptyInput),\n businessName: Yup.string().required(emptyInput),\n address: Yup.string().required(emptyInput),\n phone: Yup.string().matches(/^\\d{1,10}$/, \"El teléfono debe tener entre 1 y 10 dígitos y solo contener números.\").required(emptyInput),\n password: Yup.string().matches(passwordRegex, invalidPassword).required(emptyInput),\n repeatPassword: Yup.string().matches(passwordRegex, invalidPassword).required(emptyInput).oneOf([Yup.ref(\"password\")], passwordMatchString),\n avatar: Yup.string(),\n});\n\nconst CreateUserSchema = Yup.object().shape({\n name: Yup.string().matches(nameRegex, invalidFormat).required(emptyInput),\n surname: Yup.string().matches(nameRegex, invalidFormat).required(emptyInput),\n gender: Yup.boolean().required(emptyInput),\n height: Yup.number().positive(\"La estatura debe ser un valor positivo\").required(emptyInput).typeError(invalidFormat).min(50, \"La estatura debe ser al menos 50 cm\").max(230, \"La estatura debe ser menor a 230 cm\"),\n weight: Yup.number().positive(invalidFormat).required(emptyInput).typeError(invalidFormat).min(20, \"El peso debe ser al menos 20 kg\").max(270, \"El peso debe ser menor a 270 kg\"),\n email: Yup.string().email(invalidFormat).matches(emailRegex, \"El correo no puede contener caracteres especiales como &.\").required(emptyInput),\n phone: Yup.string().matches(/^\\d{1,10}$/, \"El teléfono debe tener entre 1 y 10 dígitos y solo contener números.\").required(emptyInput),\n date: Yup.date().typeError(\"La fecha debe estar en formato mm/dd/yyyy\").max(new Date(), \"La fecha debe estar en formato mm/dd/yyyy\").required(emptyInput),\n password: Yup.string().matches(passwordRegex, invalidPassword).required('El campo es obligatorio.'),\n repeatPassword: Yup.string().oneOf([Yup.ref('password'), null], 'Las contraseñas no coinciden').required('El campo es obligatorio.'),\n});\n\nconst NewUserEmailFromCompanySchema = Yup.object().shape({\n name: Yup.string().matches(nameRegex, invalidFormat).required(emptyInput),\n email: Yup.string().email(invalidFormat).matches(emailRegex, \"El correo no puede contener caracteres especiales como &.\").required(emptyInput),\n});\n\nconst LoginSchema = Yup.object().shape({\n email: Yup.string().matches(emailRegex, \"El correo no puede contener caracteres especiales como &.\").required(emptyInput),\n password: Yup.string().required(emptyInput),\n});\n\nconst AddressSchema = Yup.object().shape({\n street: Yup.string().required(emptyInput),\n doorNumber: Yup.number().required(emptyInput).positive(\"Número de puerta debe ser positivo\"),\n state: Yup.string().required(emptyInput),\n});\n\nconst schemas = {\n ChangePasswordSchema,\n CreateCompanySchema,\n CreateNutricionistSchema,\n CreateUserSchema,\n LoginSchema,\n NewUserEmailFromCompanySchema,\n AddressSchema,\n};\n\nexport default schemas;\n","import {createSelector} from '@reduxjs/toolkit';\nimport {RootState} from '../config/types';\n\nconst authStateSelector = (state: RootState) => state.auth;\n\nexport const authSelector = createSelector(\n authStateSelector,\n (authReducer) => authReducer\n);\n\nexport const loginErrorMessageSelector = (state: RootState) => {\n return state!.auth.loginErrorMessage;\n};\n\nexport const userAccount = (state: RootState) => {\n return state!.auth.account;\n};\n\nexport const userRole = (state: RootState) => {\n return state!.auth.account?.role;\n};\n\nexport const editSuccess = (state: RootState) => {\n return state!.auth.updateAccountSuccess;\n};\n","import React from \"react\";\nimport { Lottie } from \"@crello/react-lottie\";\nimport loadAnimation from \"../../../assets/loading.json\";\n\nfunction LoadingAnimation() {\n return (\n \n \n );\n}\n\nexport default LoadingAnimation;\n","import React, { useState, useEffect } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { Button, createStyles, Theme, makeStyles } from \"@material-ui/core\";\nimport ArrowBackIcon from \"@material-ui/icons/ArrowBack\";\nimport { FullWidthSnackbar } from \"../../common/FullWidthSnackbar\";\nimport { Formik, Form, Field } from \"formik\";\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport * as styleVars from \"../../../styles/_variables.scss\";\nimport { AuthInfoPanel } from \"../AuthInfoPanel\";\nimport { login } from \"../../../store/auth/actionCreators\";\nimport { LoginRequest } from \"../../../store/auth/types\";\nimport { RootState } from \"../../../store/config/types\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport schemas from \"../../../data/schemas\";\nimport { useSelector } from \"react-redux\";\nimport { loginErrorMessageSelector } from \"../../../store/auth/selector\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n pswRecoveryDiv: {\n margin: \"auto 0\",\n },\n pswRecoveryTxt: {\n margin: \"5px 0\",\n color: styleVars.lightSecondaryText,\n fontSize: 12,\n },\n loginBtn: {\n margin: \"auto 0\",\n },\n pswRecoveryBtn: {\n color: styleVars.primary,\n fontWeight: \"bold\",\n textDecoration: \"none\",\n },\n buyBox: {\n backgroundColor: styleVars.lightBackground,\n padding: \"20px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n textAlign: \"center\",\n [theme.breakpoints.down(\"xs\")]: {\n textAlign: \"left\",\n \"& p\": {\n marginRight: \"5px\",\n },\n },\n },\n buyBtn: {\n margin: \"auto 0\",\n padding: \"8px 30px\",\n },\n })\n);\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch\n) => ({\n login: ({ email, password }: LoginRequest) =>\n dispatch(login({ email, password })),\n});\n\nconst connector = connect(null, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & RouteComponentProps;\n\ninterface Values {\n email: string;\n password: string;\n}\n\nfunction Login({ login, history }: PropsType) {\n const [open, setOpen] = useState(false);\n const loginErrorMessage = useSelector((state: RootState) =>\n loginErrorMessageSelector(state)\n );\n\n const isLoading = useSelector((x: RootState) => x.auth.loggingIn);\n const redirectTo = (path: string): void => {\n history.push(path);\n };\n\n const submit = (values: Values) => {\n login({\n email: values.email,\n password: values.password,\n });\n };\n\n useEffect(() => {\n if (loginErrorMessage !== \"\") {\n setOpen(true);\n }\n }, [loginErrorMessage]);\n\n const classes = useStyles();\n\n return (\n
\n \n
\n
\n
redirectTo(\"/\")}>\n
\n \n

Volver

\n
\n
\n

Ingresar

\n

Con correo electrónico y contraseña

\n\n \n {isLoading ? (\n \n ) : (\n
\n \n \n
\n
\n

\n ¿Olvidaste tu contraseña?\n

\n \n Recuperar contraseña\n \n
\n \n Ingresar\n \n
\n \n )}\n \n
\n redirectTo(\"/signup/?user=1\")}\n disableElevation\n >\n Registrarme\n \n
\n \n
\n
\n \n
\n );\n}\n\nexport default connector(withRouter(Login));\n","import React, { useEffect, useState } from \"react\";\nimport ArrowBackIcon from \"@material-ui/icons/ArrowBack\";\nimport { Button, Theme, makeStyles, createStyles } from \"@material-ui/core\";\nimport { Formik, Form, Field } from \"formik\";\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport { AuthInfoPanel } from \"../AuthInfoPanel\";\nimport { RootState } from \"../../../store/config/types\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport {\n confirmResetPassword,\n modifyPassword,\n } from \"../../../store/auth/actionCreators\";\nimport schemas from \"../../../data/schemas\";\nimport { FullWidthSnackbar } from \"../../common/FullWidthSnackbar\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n formContainer: {\n marginTop: \"3em\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: 0,\n marginBottom: \"25px\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n },\n },\n formFooter: {\n display: \"flex\",\n margin: \"4em 0\",\n justifyContent: \"flex-end\",\n [theme.breakpoints.down(\"xs\")]: {\n margin: \"1em 0\",\n },\n },\n loginBtn: {\n margin: \"auto 0\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100%\",\n },\n },\n rightPartitionHeading: {\n marginTop: \"4em\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: \"1em\",\n },\n },\n })\n);\n\ninterface Values {\n password: string;\n newPassword: string;\n repeatPassword: string;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch\n ) => ({\n changePassword: (token: string) => dispatch(confirmResetPassword(token)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & RouteComponentProps;\n\nfunction ChangePassword({ auth, changePassword, history }: PropsType) {\n const classes = useStyles();\n\n const [open, setOpen] = useState(false);\n const [token, setToken] = useState(\"\");\n\n const redirectTo = (path: string): any => {\n history.push(path);\n };\n\n useEffect(() => {\n console.log(\"entro a cambio password\");\n console.log(history.location);\n if (history.location?.search?.startsWith(\"?data=\")) {\n console.log(\"entro a cambio password 2\");\n const search = history.location.search;\n changePassword(search);\n }\n if (\n !auth.changingPassword &&\n (auth.changePasswordSuccess || auth.changePasswordErrorMessage !== \"\")\n ) {\n setOpen(true);\n }\n }, [auth.changingPassword]);\n\n return (\n
\n \n
\n
\n
\n
redirectTo('/')}>\n \n

Volver

\n
\n
\n {auth.confirmingResetPassword ? (\n \n ) : (\n

\n Tu contraseña ha sido modificada con éxito.
\n Recibirás una contraseña temporal en tu correo electrónico (si no recibes el correo, revisa tu bandeja de spam).
\n

\n )}\n
\n
\n \n
\n );\n}\n\nexport default connector(withRouter(ChangePassword));\n","import React, { useEffect, useState } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { makeStyles, Theme, createStyles, Button } from \"@material-ui/core\";\nimport ArrowBackIcon from \"@material-ui/icons/ArrowBack\";\nimport { Formik, Form, Field } from \"formik\";\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport { AuthInfoPanel } from \"../AuthInfoPanel\";\nimport { resetPassword } from \"../../../store/auth/actionCreators\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { RootState } from \"../../../store/config/types\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport { FullWidthSnackbar } from \"../../common/FullWidthSnackbar\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n formContainer: {\n marginTop: \"3em\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: 0,\n marginBottom: \"25px\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n },\n },\n formFooter: {\n display: \"flex\",\n marginTop: \"6em\",\n justifyContent: \"flex-end\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: \"1em\",\n },\n },\n loginBtn: {\n margin: \"auto 0\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100%\",\n },\n },\n rightPartitionHeading: {\n marginTop: \"4em\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: \"1em\",\n },\n },\n })\n);\n\ninterface Values {\n email: string;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n resetPassword: (email: string) => dispatch(resetPassword(email)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & RouteComponentProps;\n\nfunction ResetPassword({ auth, resetPassword, history }: PropsType) {\n const classes = useStyles();\n\n const [open, setOpen] = useState(false);\n\n const redirectTo = (path: string): void => {\n history.push(path);\n };\n\n const submit = (values: Values) => {\n resetPassword(values.email);\n setOpen(true);\n };\n\n useEffect(() => {\n setOpen(false);\n if (!auth.resetingPassword && (auth.resetPasswordSuccess || auth.resetPasswordErrorMessage !== \"\")) {\n setOpen(true);\n }\n }, [auth.resetingPassword, auth.resetPasswordErrorMessage, auth.resetPasswordSuccess]);\n\n return (\n
\n \n
\n
\n
redirectTo(\"/login\")}>\n
\n \n

Volver

\n
\n
\n

Recuperar contraseña

\n

\n Ingresa tu correo electrónico y te enviaremos los pasos para restablecer tu contraseña\n

\n {\n submit(values);\n actions.resetForm();\n }}\n >\n {(props) => (\n
\n \n\n
\n \n Restablecer\n \n
\n \n )}\n \n
\n
\n \n
\n );\n}\n\nexport default connector(withRouter(ResetPassword));\n","import React from \"react\";\nimport { makeStyles, StepIconProps } from \"@material-ui/core\";\nimport * as styleVars from \"../../../../styles/_variables.scss\";\n\nconst useStepIconStyles = makeStyles({\n root: {\n color: styleVars.darkBackground,\n display: \"flex\",\n height: 22,\n alignItems: \"center\",\n },\n active: {\n color: styleVars.darkPrimary,\n },\n circle: {\n width: 16,\n height: 16,\n borderRadius: \"50%\",\n backgroundColor: \"currentColor\",\n },\n activeCircle: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: `3px solid ${styleVars.darkPrimary}`,\n backgroundClip: \"content-box\",\n backgroundColor: styleVars.darkPrimary,\n borderRadius: \"50%\",\n padding: 3,\n color: styleVars.white,\n zIndex: 1,\n height: 24,\n width: 24,\n fontSize: 14,\n },\n completed: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: styleVars.darkPrimary,\n borderRadius: \"50%\",\n padding: 5,\n color: styleVars.darkBackground,\n zIndex: 1,\n height: 16,\n width: 16,\n fontSize: 14,\n },\n});\n\nfunction StepIcon(props: StepIconProps) {\n const classes = useStepIconStyles();\n const { active, completed } = props;\n\n return (\n
\n {completed ? (\n
{props.icon}
\n ) : active ? (\n
{props.icon}
\n ) : (\n
\n )}\n
\n );\n}\n\nexport default StepIcon;\n","import React from \"react\";\nimport { Stepper, Step, StepLabel, StepConnector, withStyles, makeStyles } from \"@material-ui/core\";\nimport StepIcon from \"./StepIcon\";\nimport * as styleVars from \"../../../../styles/_variables.scss\";\n\nconst Connector = withStyles({\n alternativeLabel: {\n top: 10,\n left: \"calc(-50% + 16px)\",\n right: \"calc(50% + 16px)\",\n },\n active: {\n \"& $line\": {\n borderColor: styleVars.darkPrimary,\n },\n },\n completed: {\n \"& $line\": {\n borderColor: styleVars.darkPrimary,\n },\n },\n line: {\n borderColor: styleVars.darkBackground,\n borderTopWidth: 3,\n borderRadius: 1,\n },\n})(StepConnector);\n\nconst useStepperStyles = makeStyles({\n root: {\n padding: \"24px 0\",\n },\n noPadding: {\n padding: 0,\n },\n});\n\nconst steps = [1, 2, 3, 4, 5];\n\ninterface UserStepperProps {\n activeStep: number;\n}\n\nfunction UserStepper({ activeStep }: UserStepperProps) {\n const classes = useStepperStyles();\n\n return (\n
\n } activeStep={activeStep}>\n {steps.map((s) => {\n return (\n \n \n \n );\n })}\n \n
\n );\n}\n\nexport default UserStepper;\n","import React from \"react\";\nimport { FormSelect } from \"../forms/FormSelect\";\nimport { FormTextField } from \"../forms/FormTextField\";\nimport { Field } from \"formik\";\n\ninterface UserDataFieldsProps {\n speech: string;\n}\n\nfunction UserDataFields({ speech }: UserDataFieldsProps) {\n return (\n
\n

{speech}

\n
Estás a solo un paso de descubrir cómo tu ADN puede mejorar tu salud y bienestar. Completá la información y empezá tu viaje hacia una vida más saludable.
\n
\n \n \n
\n \n
\n \n \n
\n {/*
*/}\n {/* birthdate */}\n {/* */}\n {/*
*/}\n {/* height and weight */}\n
\n );\n}\n\nexport default UserDataFields;\n\n/* */\n\n\n/*
\n \n \n
*/","import React, {useState} from \"react\";\nimport { Formik, FormikHelpers, Form, Field } from \"formik\";\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport { Button, Checkbox, FormControlLabel } from \"@material-ui/core\";\nimport { UserDataFields } from \"../../common/UserDataFields\";\nimport schemas from \"../../../data/schemas\";\nimport { authService } from '../../../services/auth.service';\nimport { Link } from 'react-router-dom';\n\n\ninterface Values {\n name: string;\n surname: string;\n gender: number;\n height: string;\n weight: string;\n phone: string;\n ethnicity: number;\n date: string;\n email: string;\n password: string;\n repeatPassword: string;\n}\n\ninterface UserDataProps {\n activeStep: number;\n setActiveStep: React.Dispatch>;\n data: Values;\n setData: React.Dispatch>;\n setToPay: React.Dispatch>;\n}\n\nfunction UserData({ activeStep, setActiveStep, data, setData, setToPay }: UserDataProps) {\n const [checked, setChecked] = useState(false);\n \n const submit = (values: Values, actions: FormikHelpers) => {\n authService.verifyEmail(values.email).then(\n (response) => {\n setData(values);\n setToPay(true);\n //setActiveStep(activeStep + 1);\n },\n (error) => {\n actions.setFieldError('email', 'El correo electrónico no esta disponible');\n }\n );\n };\n\n return (\n \n \n
\n <>\n \n \n
\n

Contraseña para ingresar a tu perfil

\n
\n \n \n
\n
\n
\n
\n
\n \n Estoy de acuerdo con los siguientes{' '}\n \n términos y condiciones\n \n .\n \n }\n control={\n setChecked(e.target.checked)}\n />\n }\n />\n
\n
\n
\n \n Continuar con la compra\n \n
\n \n \n \n );\n}\n\nexport default UserData;\n","import {httpPost, httpGet, httpDelete} from './base.service';\nimport {endpoints} from './endpoints';\nimport {\n AssociateNutritionistRequest,\n Nutritionist,\n RegisterFromNutritionistRequest,\n} from '../store/nutritionists/types';\nimport {Account} from '../store/auth/types';\nimport {User} from '../store/users/types';\n\nexport const nutritionistsService = {\n associateNutritionist,\n getAssociatedNutritionist,\n removeAssociatedNutritionist,\n registerFromNutritionist,\n completeRegisterFromNutritionist,\n getAssociatedReferer,\n getPatients,\n getUserFromCodeService,\n};\n\nasync function associateNutritionist(\n associateNutritionistRequest: AssociateNutritionistRequest\n): Promise {\n return await httpPost(\n `${endpoints['authNutritionist']}`,\n associateNutritionistRequest\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function getAssociatedNutritionist(): Promise {\n return await httpGet(`${endpoints['authNutritionist']}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function getPatients(): Promise {\n return await httpGet(`${endpoints['patients']}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function removeAssociatedNutritionist(): Promise {\n return await httpDelete(`${endpoints['authNutritionist']}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function registerFromNutritionist(\n registerFromNutritionistRequest: RegisterFromNutritionistRequest\n): Promise {\n return await httpPost(\n `${endpoints['authRegisterFromNutritionist']}`,\n registerFromNutritionistRequest\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function completeRegisterFromNutritionist(\n token: string\n): Promise {\n return await httpGet(\n `${endpoints['authRegisterFromNutritionist']}/${token}`\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function getAssociatedReferer(): Promise {\n return await httpGet(`${endpoints['authReferer']}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function getUserFromCodeService(\n code: string\n): Promise {\n return await httpGet(`${endpoints['getUserFromCode']}/${code}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Formik, Form, Field, FormikHelpers } from \"formik\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport { Button } from \"@material-ui/core\";\nimport { RootState } from \"../../../store/config/types\";\nimport {\n userFromCode,\n errorUserFromCode,\n} from \"../../../store/nutritionists/selector\";\nimport { getUserFromCode } from \"../../../store/nutritionists/actionCreators\";\nimport { FullWidthSnackbar } from \"../../common/FullWidthSnackbar\";\n\ninterface Values {\n code: string;\n}\n\ninterface NutritionistCodeProps {\n activeStep: number;\n setActiveStep: React.Dispatch>;\n nutritionistCode: Values;\n setNutritionistCode: React.Dispatch>;\n}\n\nfunction NutritionistCode({\n activeStep,\n setActiveStep,\n nutritionistCode,\n setNutritionistCode,\n}: NutritionistCodeProps) {\n const dispatch = useDispatch();\n const [hasSubmitted, setHasSubmitted] = useState(false);\n const [open, setOpen] = useState(false);\n const account = useSelector((state: RootState) => userFromCode(state));\n const error = useSelector((state: RootState) => errorUserFromCode(state));\n\n const submit = (values: Values, actions: FormikHelpers) => {\n if (values.code !== \"\") {\n if (hasSubmitted) {\n setActiveStep(activeStep + 1);\n setNutritionistCode(values);\n } else {\n dispatch(getUserFromCode(values.code.toUpperCase()));\n setHasSubmitted(true);\n }\n } else {\n setActiveStep(activeStep + 1);\n setNutritionistCode(values);\n }\n };\n\n useEffect(() => {\n if (error !== \"\") {\n setOpen(true);\n setHasSubmitted(false);\n }\n }, [error]);\n\n return (\n
\n \n No es necesario contar con este código para avanzar en el proceso.\n \n

¿Tenés un código de nutricionista?

\n \n
\n \n

\n (Si no lo tenés podrás agregarlo luego en tu perfil)\n

\n

\n Con esto tu nutricionista podrá ver los resultados para asistirte\n con recomendaciones.\n

\n

\n \n

\n {account && (\n

\n Tu nutricionista es: \n {account.profile.firstName} {account.profile.lastName}\n

\n )}\n
\n setActiveStep(activeStep - 1)}\n color=\"primary\"\n disableElevation\n >\n Anterior\n \n \n Continuar\n \n
\n \n
\n \n
\n );\n}\n\nexport default NutritionistCode;\n","import {RootState} from '../config/types';\n\nexport const userFromCode = (state: RootState) => {\n return state!.nutritionists.userFromCode;\n};\n\nexport const errorUserFromCode = (state: RootState) => {\n return state!.nutritionists.errorGettingUserFromCode;\n};\n","import {\n NutritionistActionTypes,\n NUTRITIONIST_LOAD,\n NUTRITIONIST_LOADING,\n NUTRITIONIST_LOAD_FAILED,\n NUTRITIONIST_ADD,\n NUTRITIONIST_ADDING,\n NUTRITIONIST_ADD_FAILED,\n NUTRITIONIST_DELETE,\n NUTRITIONIST_DELETING,\n NUTRITIONIST_DELETE_FAILED,\n REFERER_LOAD,\n REFERER_LOADING,\n REFERER_LOAD_FAILED,\n REGISTERING_FROM_NUTRITIONIST,\n REGISTER_FROM_NUTRITIONIST_SUCCESS,\n REGISTER_FROM_NUTRITIONIST_FAILED,\n COMPLETE_REGISTER_FROM_NUTRITIONIST_SUCCESS,\n COMPLETING_REGISTER_FROM_NUTRITIONIST,\n COMPLETE_REGISTER_FROM_NUTRITIONIST_FAILED,\n GET_REFERER_ACCOUNTS,\n LOADING_REFERER_ACCOUNTS,\n FAILED_REFERER_ACCOUNTS,\n GET_USER_FROM_CODE_SUCCESS,\n GET_USER_FROM_CODE_FAILURE,\n GET_USER_FROM_CODE,\n} from './actionTypes';\nimport {\n Nutritionist,\n AssociateNutritionistRequest,\n NewAccountInfo,\n RegisterFromNutritionistRequest,\n} from './types';\nimport {User} from '../users/types';\nimport {Dispatch} from 'redux';\nimport {nutritionistsService} from '../../services/nutritionists.service';\nimport {Account} from '../auth/types';\n\nexport const getUserFromCode = (code: string) => {\n return (dispatch: Dispatch) => {\n dispatch({\n type: GET_USER_FROM_CODE,\n });\n\n nutritionistsService.getUserFromCodeService(code).then(\n (response) => {\n dispatch({\n type: GET_USER_FROM_CODE_SUCCESS,\n userFromCode: response!,\n });\n },\n (error) => {\n dispatch({\n type: GET_USER_FROM_CODE_FAILURE,\n error: error,\n });\n }\n );\n };\n};\n\n//#region Associate nutritionist\n\nexport const associateNutritionist = ({code}: AssociateNutritionistRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(addingNutritionist());\n\n const associateNutritionistRequest: AssociateNutritionistRequest = {\n code,\n };\n\n nutritionistsService\n .associateNutritionist(associateNutritionistRequest)\n .then(\n (response) => {\n dispatch(addNutritionist(response!));\n },\n (error) => {\n addNutritionistFailed(error);\n }\n );\n };\n};\n\nconst addNutritionist = (\n nutritionist: Nutritionist\n): NutritionistActionTypes => ({\n type: NUTRITIONIST_ADD,\n nutritionist,\n});\n\nconst addingNutritionist = (): NutritionistActionTypes => ({\n type: NUTRITIONIST_ADDING,\n});\n\nconst addNutritionistFailed = (error: string): NutritionistActionTypes => ({\n type: NUTRITIONIST_ADD_FAILED,\n error,\n});\n\n//#endregion\n\nexport const getPatients = () => {\n return (dispatch: Dispatch) => {\n dispatch({\n type: LOADING_REFERER_ACCOUNTS,\n });\n\n nutritionistsService.getPatients().then(\n (response) => {\n dispatch({\n type: GET_REFERER_ACCOUNTS,\n refererAccounts: response!,\n });\n },\n (error) => {\n dispatch({\n type: FAILED_REFERER_ACCOUNTS,\n error: error,\n });\n }\n );\n };\n};\n\n//#region Get associated nutritionist\n\nexport const getAssociatedNutritionist = () => {\n return (dispatch: Dispatch) => {\n dispatch(loadingNutritionist());\n\n nutritionistsService.getAssociatedNutritionist().then(\n (response) => {\n dispatch(loadNutritionist(response!));\n },\n (error) => {\n dispatch(loadNutritionistFailed(error));\n }\n );\n };\n};\n\nconst loadNutritionist = (\n nutritionist: Nutritionist\n): NutritionistActionTypes => ({\n type: NUTRITIONIST_LOAD,\n nutritionist,\n});\n\nconst loadingNutritionist = (): NutritionistActionTypes => ({\n type: NUTRITIONIST_LOADING,\n});\n\nconst loadNutritionistFailed = (error: string): NutritionistActionTypes => ({\n type: NUTRITIONIST_LOAD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Remove associated nutritionist\n\nexport const removeAssociatedNutritionist = () => {\n return (dispatch: Dispatch) => {\n dispatch(deletingNutritionist());\n\n nutritionistsService.removeAssociatedNutritionist().then(\n (response) => {\n dispatch(deleteNutritionist());\n },\n (error) => {\n dispatch(deleteNutritionistFailed(error));\n }\n );\n };\n};\n\nconst deleteNutritionist = (): NutritionistActionTypes => ({\n type: NUTRITIONIST_DELETE,\n});\n\nconst deletingNutritionist = (): NutritionistActionTypes => ({\n type: NUTRITIONIST_DELETING,\n});\n\nconst deleteNutritionistFailed = (error: string): NutritionistActionTypes => ({\n type: NUTRITIONIST_DELETE_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Register from nutritionist\n\nexport const registerFromNutritionist = (newAccountInfo: NewAccountInfo) => {\n return (dispatch: Dispatch) => {\n dispatch(registeringFromNutritionist());\n\n const registerFromNutritionistRequest: RegisterFromNutritionistRequest = {\n newAccountInfo,\n };\n\n nutritionistsService\n .registerFromNutritionist(registerFromNutritionistRequest)\n .then(\n (response) => {\n dispatch(registerFromNutritionistSuccess(response!));\n },\n (error) => {\n dispatch(registerFromNutritionistFailed(error));\n }\n );\n };\n};\n\nconst registerFromNutritionistSuccess = (\n account: Account\n): NutritionistActionTypes => ({\n type: REGISTER_FROM_NUTRITIONIST_SUCCESS,\n account,\n});\n\nconst registeringFromNutritionist = (): NutritionistActionTypes => ({\n type: REGISTERING_FROM_NUTRITIONIST,\n});\n\nconst registerFromNutritionistFailed = (\n error: string\n): NutritionistActionTypes => ({\n type: REGISTER_FROM_NUTRITIONIST_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Complete register from nutritionist\n\nexport const completeRegisterFromNutritionist = (token: string) => {\n return (dispatch: Dispatch) => {\n dispatch(completingRegisterFromNutritionist());\n\n nutritionistsService.completeRegisterFromNutritionist(token).then(\n (response) => {\n dispatch(completeRegisterFromNutritionistSuccess());\n },\n (error) => {\n dispatch(completeRegisterFromNutritionistFailed(error));\n }\n );\n };\n};\n\nconst completeRegisterFromNutritionistSuccess = (): NutritionistActionTypes => ({\n type: COMPLETE_REGISTER_FROM_NUTRITIONIST_SUCCESS,\n});\n\nconst completingRegisterFromNutritionist = (): NutritionistActionTypes => ({\n type: COMPLETING_REGISTER_FROM_NUTRITIONIST,\n});\n\nconst completeRegisterFromNutritionistFailed = (\n error: string\n): NutritionistActionTypes => ({\n type: COMPLETE_REGISTER_FROM_NUTRITIONIST_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Get associated referer\n\nexport const getAssociatedReferer = () => {\n return (dispatch: Dispatch) => {\n dispatch(loadingReferer());\n\n nutritionistsService.getAssociatedReferer().then(\n (response) => {\n loadReferer(response!);\n },\n (error) => {\n loadRefererFailed(error);\n }\n );\n };\n};\n\nconst loadReferer = (referer: User): NutritionistActionTypes => ({\n type: REFERER_LOAD,\n referer,\n});\n\nconst loadingReferer = (): NutritionistActionTypes => ({\n type: REFERER_LOADING,\n});\n\nconst loadRefererFailed = (error: string): NutritionistActionTypes => ({\n type: REFERER_LOAD_FAILED,\n error,\n});\n\n//#endregion\n","import {Nutritionist} from './types';\nimport {User} from '../users/types';\nimport {Account} from '../auth/types';\n\nexport const GET_USER_FROM_CODE_SUCCESS = 'GET_USER_FROM_CODE_SUCCESS';\nexport const GET_USER_FROM_CODE = 'GET_USER_FROM_CODE';\nexport const GET_USER_FROM_CODE_FAILURE = 'GET_USER_FROM_CODE_FAILURE';\n\nexport interface GetUserFromCodeSuccessAction {\n type: typeof GET_USER_FROM_CODE_SUCCESS;\n userFromCode: Account;\n}\nexport interface GetUserFromCodeAction {\n type: typeof GET_USER_FROM_CODE;\n}\nexport interface GetUserFromCodeFailureAction {\n type: typeof GET_USER_FROM_CODE_FAILURE;\n error: string;\n}\n\nexport const NUTRITIONIST_LOAD = 'NUTRITIONIST_LOAD';\nexport const NUTRITIONIST_LOADING = 'NUTRITIONIST_LOADING';\nexport const NUTRITIONIST_LOAD_FAILED = 'NUTRITIONIST_LOAD_FAILED';\n\nexport interface NutritionistLoadAction {\n type: typeof NUTRITIONIST_LOAD;\n nutritionist: Nutritionist;\n}\nexport interface NutritionistLoadingAction {\n type: typeof NUTRITIONIST_LOADING;\n}\nexport interface NutritionistLoadFailedAction {\n type: typeof NUTRITIONIST_LOAD_FAILED;\n error: string;\n}\n\nexport const NUTRITIONIST_ADD = 'NUTRITIONIST_ADD';\nexport const NUTRITIONIST_ADDING = 'NUTRITIONIST_ADDING';\nexport const NUTRITIONIST_ADD_FAILED = 'NUTRITIONIST_ADD_FAILED';\n\nexport interface NutritionistAddAction {\n type: typeof NUTRITIONIST_ADD;\n nutritionist: Nutritionist;\n}\nexport interface NutritionistAddingAction {\n type: typeof NUTRITIONIST_ADDING;\n}\nexport interface NutritionistAddFailedAction {\n type: typeof NUTRITIONIST_ADD_FAILED;\n error: string;\n}\n\nexport const NUTRITIONIST_DELETE = 'NUTRITIONIST_DELETE';\nexport const NUTRITIONIST_DELETING = 'NUTRITIONIST_DELETING';\nexport const NUTRITIONIST_DELETE_FAILED = 'NUTRITIONIST_DELETE_FAILED';\n\nexport interface NutritionistDeleteAction {\n type: typeof NUTRITIONIST_DELETE;\n}\nexport interface NutritionistDeletingAction {\n type: typeof NUTRITIONIST_DELETING;\n}\nexport interface NutritionistDeleteFailedAction {\n type: typeof NUTRITIONIST_DELETE_FAILED;\n error: string;\n}\n\nexport const REGISTER_FROM_NUTRITIONIST_SUCCESS =\n 'REGISTER_FROM_NUTRITIONIST_SUCCESS';\nexport const REGISTERING_FROM_NUTRITIONIST = 'REGISTERING_FROM_NUTRITIONIST';\nexport const REGISTER_FROM_NUTRITIONIST_FAILED =\n 'REGISTER_FROM_NUTRITIONIST_FAILED';\n\nexport interface RegisterFromNutritionistAction {\n type: typeof REGISTER_FROM_NUTRITIONIST_SUCCESS;\n account: Account;\n}\nexport interface RegisteringFromNutritionistAction {\n type: typeof REGISTERING_FROM_NUTRITIONIST;\n}\nexport interface RegisterFromNutritionistFailedAction {\n type: typeof REGISTER_FROM_NUTRITIONIST_FAILED;\n error: string;\n}\n\nexport const COMPLETE_REGISTER_FROM_NUTRITIONIST_SUCCESS =\n 'COMPLETE_REGISTER_FROM_NUTRITIONIST_SUCCESS';\nexport const COMPLETING_REGISTER_FROM_NUTRITIONIST =\n 'COMPLETING_REGISTER_FROM_NUTRITIONIST';\nexport const COMPLETE_REGISTER_FROM_NUTRITIONIST_FAILED =\n 'COMPLETE_REGISTER_FROM_NUTRITIONIST_FAILED';\n\nexport interface CompleteRegisterFromNutritionistAction {\n type: typeof COMPLETE_REGISTER_FROM_NUTRITIONIST_SUCCESS;\n}\nexport interface CompletingRegisterFromNutritionistAction {\n type: typeof COMPLETING_REGISTER_FROM_NUTRITIONIST;\n}\nexport interface CompleteRegisterFromNutritionistFailedAction {\n type: typeof COMPLETE_REGISTER_FROM_NUTRITIONIST_FAILED;\n error: string;\n}\n\nexport const REFERER_LOAD = 'REFERER_LOAD';\nexport const REFERER_LOADING = 'REFERER_LOADING';\nexport const REFERER_LOAD_FAILED = 'REFERER_LOAD_FAILED';\n\nexport interface RefererLoadAction {\n type: typeof REFERER_LOAD;\n referer: User;\n}\nexport interface RefererLoadingAction {\n type: typeof REFERER_LOADING;\n}\nexport interface RefererLoadFailedAction {\n type: typeof REFERER_LOAD_FAILED;\n error: string;\n}\n\nexport const GET_REFERER_ACCOUNTS = 'GET_REFERER_ACCOUNTS';\nexport const LOADING_REFERER_ACCOUNTS = 'LOADING_REFERER_ACCOUNTS';\nexport const FAILED_REFERER_ACCOUNTS = 'FAILED_REFERER_ACCOUNTS';\n\nexport interface GetRefererAccountsAction {\n type: typeof GET_REFERER_ACCOUNTS;\n refererAccounts: Account[];\n}\n\nexport interface LoadingRefererAccountsAction {\n type: typeof LOADING_REFERER_ACCOUNTS;\n}\n\nexport interface FailedRefererAccountsAction {\n type: typeof FAILED_REFERER_ACCOUNTS;\n error: string;\n}\n\nexport type NutritionistActionTypes =\n | NutritionistLoadAction\n | NutritionistLoadingAction\n | NutritionistLoadFailedAction\n | NutritionistAddAction\n | NutritionistAddingAction\n | NutritionistAddFailedAction\n | NutritionistDeleteAction\n | NutritionistDeletingAction\n | NutritionistDeleteFailedAction\n | RegisterFromNutritionistAction\n | RegisteringFromNutritionistAction\n | RegisterFromNutritionistFailedAction\n | CompleteRegisterFromNutritionistAction\n | CompletingRegisterFromNutritionistAction\n | CompleteRegisterFromNutritionistFailedAction\n | RefererLoadAction\n | RefererLoadingAction\n | RefererLoadFailedAction\n | GetRefererAccountsAction\n | LoadingRefererAccountsAction\n | FailedRefererAccountsAction\n | GetUserFromCodeSuccessAction\n | GetUserFromCodeAction\n | GetUserFromCodeFailureAction;\n","import React from \"react\";\nimport { FormControlLabel, Checkbox, makeStyles, createStyles, Theme } from \"@material-ui/core\";\nimport { FieldProps } from \"formik\";\n\nconst useCheckboxStyles = makeStyles((theme: Theme) =>\n createStyles({\n checkbox: {\n width: \"30%\",\n marginBottom: 5,\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n })\n);\n\ninterface CheckboxProps {\n label: string;\n value: string;\n}\n\ntype FormCheckboxProps = FieldProps & CheckboxProps;\n\nfunction FormCheckbox({ field, form, label, value }: FormCheckboxProps) {\n const classes = useCheckboxStyles();\n\n return (\n {\n if (field.value.includes(value)) {\n const nextValue = field.value.filter((newValue: string) => newValue !== value);\n form.setFieldValue(field.name, nextValue);\n } else {\n const nextValue = field.value.concat(value);\n form.setFieldValue(field.name, nextValue);\n }\n }}\n />\n }\n label={label}\n />\n );\n}\n\nexport default FormCheckbox;\n","import React from \"react\";\nimport { Field } from \"formik\";\nimport { FormCheckbox } from \"../forms/FormCheckbox\";\n\nfunction PathologiesFields() {\n return (\n
\n

Marca si padeces alguna de estas patologías

\n \n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\n/*\nId |Name |\n------------------------------------|------------------------------|\nc57ec43e-efae-4588-87d1-c013460c857e|Ejercicio |\nc5a73e8e-93a9-4cb6-bae0-6475cddcfde8|Alergias |*\n186814c4-51bf-45ea-aebb-d87cc10d1f3b|Intolerante a la Lactosa |*\nbda9eb72-8fb0-43d1-b15f-fe445aadf113|Intolerante al Gluten |*\n24ad9605-e114-4780-9494-04aaa04ced0b|Hipertensión |*\nf8f64b21-d063-479d-abeb-b329d846a878|Nivel Normal de Colesterol |*\nb2c72519-198a-4bb3-8b2d-4af4ff253a76|Nivel Normal de Glucosa |*\n66e8b8e3-369d-41ef-93e2-8adc9bd4932f|Diabetes |*\nfe4f63a6-6b93-4a51-8312-abcd590ad746|Cigarrillos |*\n7956e830-5756-4958-8f96-053b96ecb2f0|Nivel Normal de Triglicéridos |*\n329ae769-5af6-4256-8fd3-b9a4be83d863|Bebidas alcohólicas por semana|\n*/\n\nexport default PathologiesFields;\n","import React from \"react\";\nimport { Formik, Form, FormikHelpers } from \"formik\";\nimport { Button } from \"@material-ui/core\";\nimport { PathologiesFields } from \"../../common/PathologiesFields\";\n\ninterface Values {\n pathologies: string[];\n}\n\ninterface PathologiesProps {\n activeStep: number;\n setActiveStep: React.Dispatch>;\n pathologies: Values;\n setPathologies: React.Dispatch>;\n}\n\nfunction Pathologies({ activeStep, setActiveStep, pathologies, setPathologies }: PathologiesProps) {\n const submit = (values: Values, actions: FormikHelpers) => {\n setPathologies(values);\n setActiveStep(activeStep + 1);\n };\n\n return (\n
\n \n
\n \n
\n setActiveStep(activeStep - 1)}\n color=\"primary\"\n disableElevation\n >\n Anterior\n \n \n
\n \n
\n
\n );\n}\n\nexport default Pathologies;\n","import React from \"react\";\nimport { FormCheckbox } from \"../forms/FormCheckbox\";\nimport { Field } from \"formik\";\n\nfunction FamilyBackgroundFields() {\n return (\n
\n

Antecedentes familiares

\n \n \n \n \n \n \n \n \n \n
\n );\n}\n\n/*\nId |Name |\n------------------------------------|----------------------|\n70d167b9-f679-4ab8-9216-849cc3e9e5f6|Hipertensión |*\n9ee8ed18-5b92-4f9b-8423-61fc07766567|Diabetes |*\n87615a03-61ca-4bed-a337-c9f7473f0922|Colesterol |*\n8231558a-4b68-4646-b45f-0ddb37f73add|Triglicéridos |*\n1fb4a49d-9dc2-4343-ba48-a0df7836d5d1|Intolerancia Gluten |\nec5178d3-b0ba-4e4d-9d7e-d1f87fc6634d|Intolerancia a Lácteos|\n56bc920b-17c3-4807-a6f4-d300caef384c|Sobrepeso |*\nd08e677a-5421-49c5-97eb-0815f1d1c038|Alergias |*\nd33a4480-8569-454b-9a25-092071870e00|Osteoporosis |*\n*/\n\nexport default FamilyBackgroundFields;\n","import React, { useState } from \"react\";\nimport { Formik, Form, FormikHelpers } from \"formik\";\nimport { FormControlLabel, Checkbox, Button } from \"@material-ui/core\";\nimport { FamilyBackgroundFields } from \"../../common/FamilyBackgroundFields\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\nimport { Link } from 'react-router-dom';\n\ninterface Values {\n familyBackground: string[];\n}\n\ninterface FamilyBackgroundProps {\n activeStep: number;\n setActiveStep: React.Dispatch>;\n familyBackground: Values;\n setFamilyBackground: React.Dispatch>;\n setToPay: React.Dispatch>;\n isLoading?: boolean;\n}\n\nfunction FamilyBackground({\n activeStep,\n setActiveStep,\n familyBackground,\n setFamilyBackground,\n setToPay,\n isLoading,\n}: FamilyBackgroundProps) {\n const [checked, setChecked] = useState(false);\n\n const submit = (values: Values, actions: FormikHelpers) => {\n //setActiveStep(activeStep + 1);\n setFamilyBackground(values);\n setToPay(true);\n };\n\n return (\n
\n \n
\n \n
\n
\n \n Estoy de acuerdo con los siguientes{' '}\n \n Términos y Condiciones\n \n .\n \n }\n control={\n setChecked(e.target.checked)}\n />\n }\n />\n {/* \n \n
\n

\n Soy consciente de los siguientes términos y condiciones y\n también de la política de privacidad: 1. El objetivo de la\n prueba es analizar una muestra de su saliva para saber como\n usted asimila diferentes nutrientes, según su ADN. 2. Esta es\n una prueba informativa y no implica diagnóstico de enfermedad\n alguna. 3. Si usted acepta ocurrirá lo siguiente: - Deberá\n realizar el pago de su prueba nutrigenética con tarjetas de\n débito o crédito hasta en 6 pagos, a través del procesador de\n pagos Plexo y bajo sus términos y condiciones. - Posteriormente\n deberá coordinar la entrega y posterior retiro en su domicilio\n de la muestra nutrigenética de forma automática a través de la\n aplicación si se encuentra en Montevideo o de forma telefónica\n lo contactaremos si se encuentra en el interior del País. -\n Pasado los pasos anteriores, deberá esperar un máximo de 45 días\n para recibir sus resultados completos en su email, los\n resultados resumidos en la plataforma de Mr. Gen y las\n recomendaciones de alimentación personalizadas basado en su\n perfil genético. 4. Las recomendaciones de alimentación están\n basadas en una lista con alrededor 300 alimentos que serán\n actualizados cada cierto tiempo y que está relacionada con\n alimentos que pueden encontrarse en el mercado uruguayo. 5. Los\n análisis pueden implicar eventualmente solicitudes de nuevas\n tomas de muestras, lo que puede dar lugar a cambios en los\n plazos inicialmente estipulados para la entrega de los\n resultados. 6. Mr. Gen no ofrece apoyo de asesoramiento genético\n para los resultados. 7. Los resultados de la prueba\n nutrigenética puede no incluir todas las variantes previstas\n inicialmente. 8. Cualquier conducta o acción que pueda tener un\n impacto en la salud de un individuo debe ser evaluada junto con\n un profesional capacitado. 9. Los conocimientos científicos\n relacionados con los análisis realizados están sujetos a una\n actualización constante. 10. La muestra será enviada para su\n estudio a Nanopharmacia Diagnósitica, compania de análisis\n genéticos y genómicos de alta especialidad que cuenta con un\n laboratorio de última generación ubicado en Calle Tuxpan #2-704\n en la Colonia Roma, Ciudad de México, México. C.P. 06760. 11.\n Mr. Gen únicamente compartirá su número de usuario en la\n plataforma como identificador de su muestra con el laboratorio\n Nanopharmacia Diagnóstica de México. 12. Las características\n proporcionadas en los resultados seguirán a las ofrecidas al\n momento de la compra. Por lo tanto, las nuevas funcionalidades\n que se incorporen, solo estarán disponibles para los clientes\n cuyas compras se hayan realizado a partir de la fecha de dicha\n actualización. 13. Los resultados completos los recibirá\n únicamente usted al email informado en el registro de usuario. A\n su vez recibirá un resultado resumido bajo su usuario y\n contraseña y también las recomendaciones de alimentación\n personalizadas según su perfil genético. 14. Sus resultados\n serán compartidos con el/la profesional en nutrición únicamente\n cuando su cuenta esté relacionada con el identificador de\n nutricionista proporcionado al registrar su usuario. 15. El\n tiempo estipulado de entrega, 45 días hábiles, inicia desde que la\n muestra es retirada del domicilio del usuario y entregada en\n oficinas de Mr. Gen pudiéndose notar un cambio de estado en el\n pedido a “Esperando Resultado”. 16. La decisión de realizar este\n análisis es absolutamente voluntaria. Usted está en plena\n libertad de recibir la asesoría necesaria por el profesional de\n la salud que usted decida. 17. Si tiene alguna pregunta,\n comentario o preocupación relacionada con esta prueba,\n comuníquese al número de teléfono +598 99 436 487 en el horario\n de 10:00 a 17:00 de Lunes a Viernes. Si lo prefiere, envíe un\n mensaje a la siguiente dirección de correo electrónico:\n mrgen.uy@gmail.com Política de Privacidad para la Protección de\n Datos Personales 1.   GUVA SRL a través de su nombre comercial\n Mr. Gen, en adelante “La empresa”, es propietaria de este Sitio\n web y  sólo recogerá información que contenga datos personales\n de usuarios que brinden su consentimiento para ello. Es decir,\n recoge, almacena y lleva a cabo el tratamiento de los datos que\n el usuario pone a su disposición cuando accede a la Plataforma o\n Aplicación móvil, o la utiliza. Cuando el usuario vincula la\n cuenta que tiene en una página web de terceros (por ejemplo,\n Facebook), con su cuenta de Mr. Gen, este obtendrá los Datos\n Personales que el usuario haya proporcionado a la página web de\n terceros, en la medida en que lo permita la configuración que el\n mismo haya elegido en la página web de terceros. Datos móviles.\n Cuando el usuario utilice la aplicación móvil, Mr. Gen podrá\n recibir, almacenar y tratar diferentes categorías de datos\n acerca de su ubicación, incluyendo datos generales (por ejemplo,\n dirección IP, código postal) y datos más específicos (por\n ejemplo, la funcionalidad GPS utilizada para acceder a la\n Plataforma o a características específicas de la misma desde\n dispositivos móviles). Si usted accede a la Plataforma a través\n de un dispositivo móvil y no desea que su dispositivo nos\n proporcione datos que permitan hacer un seguimiento de su\n ubicación, podrá deshabilitar la función GPS u otras funciones\n de localización geográfica en su dispositivo, siempre y cuando\n éste se lo permita. Consulte las instrucciones del fabricante de\n su dispositivo para obtener información adicional. 2.   La\n empresa tratará los datos personales proporcionados por los\n usuarios de este sitio, únicamente con la finalidad y en la\n modalidad detallada en esta Política de Privacidad y en un todo\n de acuerdo a la normativa de la República Oriental del Uruguay\n en materia de Protección de Datos Personales, en particular a la\n Ley No. 18.331 y los decretos No. 664/008 de 22-12-008 y 414/009\n de 31-8-009 y concordantes. 3.   La empresa se compromete a usar\n los datos personales que reciba, exclusivamente para los fines\n específicos para los cuales el usuario los proporciona, no\n cediéndolos a otros terceros que no sean -los proveedores de\n servicios genéticos y servicios logísticos para la entrega y\n retiro del producto-. Mr. Gen declara que tiene derecho a\n divulgar y poner a disposición información de inicio de sesión\n del usuario a esos terceros proveedores del bien o servicio\n objeto del contrato, para que este último ofrezca y haga\n efectivo la entrega del servicio. Sin perjuicio de ello, se\n reserva la posibilidad de realizar el tratamiento de datos\n personales de los usuarios para utilizarlos en los otros\n servicios de la empresa o de sus filiales, sucursales o socios\n de negocios o para enviar mailings de la empresa con las\n novedades a lo cual el usuario consiente. 4.   Los datos\n personales podrán alojarse en los servidores que posee la\n empresa en Uruguay o de futuro en otros países con un nivel de\n protección adecuado. 5.   Mediante el vínculo “CONTACTO”, el\n usuario podrá requerir cualquier tipo de información a la\n empresa y en ese caso, los datos personales que proporcione se\n archivarán en una base de datos de “Registro de Consultas” y\n sólo se utilizarán para evacuar las consultas, extraer\n información estadística o comunicarse con el solicitante. 6.  \n La empresa no se hace responsable por el tratamiento y libre\n acceso a datos personales que el usuario incluya en su\n comunicación enviada sobre terceras personas, entendiendo que el\n usuario deberá contar con el consentimiento documentado de los\n mismos a efectos de incluir sus datos personales en la\n comunicación o consulta. Asimismo la empresa no se hace\n responsable de la información personal incluida en las\n comunicaciones directas con los nutricionistas y proveedores de\n alimentación vinculados a Mr. Gen. 7.   La Política de\n Privacidad se limita a la utilización que el usuario haga\n directamente ingresando a la página web www.mister-gen.com, y no\n se garantiza el mismo resultado en caso de que se acceda\n mediante el redireccionamiento de otros Sitios. 8.   En esta\n Política de Privacidad se detallan las prácticas vigentes de la\n empresa en relación a los servicios de promoción que presta. Por\n ello, la misma puede ser alterada si la empresa, por su sola\n voluntad, decide hacerlo comunicando a los usuarios del cambio\n mediante la actualización de la misma. 9.   La empresa ha\n implementado todas las medidas de seguridad necesarias para\n evitar que terceros no autorizados accedan a los datos. Ello\n incluye las medidas de seguridad físicas y el acceso potencial\n sólo de empleados o subcontratistas que necesiten acceder a los\n datos por razones laborales, los cuales estarán sujetos a\n cláusulas de confidencialidad y obligaciones de secreto\n profesional, contemplado en el art. 302 del Código Penal. 10. La\n empresa, hará los máximos esfuerzos para proteger los datos\n personales que le proporcionen los usuarios por esta web. Sin\n embargo, si en cumplimiento de obligaciones contractuales que\n asuma con terceros, o en el caso de que exista una orden\n judicial al respecto, podrá revelar algunos de los datos que\n tenga en su poder. 11. El Responsable de las bases de datos de\n “Consultas” es la empresa, pudiéndose ejercer los derechos de\n acceso, modificación o supresión dirigiéndose personalmente y\n con copia de documento de identidad o poder acreditativo de\n representación en caso de tratarse de persona jurídica por email\n a mrgen.uy@gmail.com. También podrá presentar el usuario, en la\n misma forma, las quejas o sugerencias que entienda oportunas.\n 12. Esta página web utiliza Google Analytics y Google AdWords \n 13. Este sitio web utiliza el servicio de remarketing de AdWords\n de Google, para hacer publicidad en Sitios web de terceros\n (incluyendo Google), para los visitantes que ya visitaron\n nuestro sitio. Eso podría significar que nos comuniquemos con\n usuarios visitantes que no han completado una tarea en nuestro\n Sitio, por ejemplo, usando el formulario de contacto para\n realizar una consulta.  14. Esto podría ser en forma de un\n anuncio en la página de resultados de búsqueda de Google, o en\n un sitio en la Red de Display de Google.  15. Proveedores de\n terceros sitios, incluido Google, utilizan cookies para publicar\n anuncios basados en visitas anteriores de alguien a la página\n web de Mr. Gen. Por supuesto, los datos recogidos serán\n utilizados de acuerdo con nuestra propia Política de Privacidad\n y la Política de Privacidad de Google.  16. Puedes configurar\n las preferencias de cómo Google te muestra los anuncios,\n utilizando la página de preferencias de anuncios de Google, y si\n así lo prefieres, puedes optar por salir de la publicidad basada\n en intereses en su totalidad mediante la configuración de\n cookies o mediante el uso de un plugin para el navegador. 17.\n Para inhabilitar el uso de cookies de Google puedes hacerlo a\n través de la Configuración de anuncios de Google. Si lo deseas\n puedes inhabilitar el uso de cookies de un tercer proveedor a\n través de la página de inhabilitación de Network Advertising\n Initiative. 18.   Mr. Gen contendrá enlaces a otras páginas web\n que no son de su propiedad ni están controladas por la misma.\n Estas páginas web podrán instalar en su dispositivo sus propias\n cookies, web beacons u otros tipos de archivos, o recoger o\n solicitarle que proporcione Datos Personales acerca de usted.\n Estas páginas web de terceros disponen de sus propias\n condiciones en materia de recogida, utilización y divulgación de\n Datos Personales. Le recomendamos que lea las condiciones de uso\n y las políticas de privacidad de las páginas web de terceros que\n usted visite. 19. Podremos cambiar nuestros procedimientos de\n recogida y utilización de Datos Personales en cualquier momento,\n sin previo aviso y a nuestra exclusiva discreción. En caso de\n que introduzcamos cambios significativos a la Política de\n Privacidad, se lo notificaremos publicando la Política de\n Privacidad modificada en la Plataforma o enviándole un mensaje\n de correo electrónico. 20. Si tiene consultas o sugerencias\n sobre esta Política de privacidad de este sitio web, diríjase al\n e-mail mrgen.uy@gmail.com. POLITICA DE DEVOLUCIÓN CÓMO DEVOLVER\n UN PRODUCTO: Cualquiera que sea la razón, rogamos que nos\n notifiques tu deseo de devolver un producto a través de un\n correo electrónico a mrgen.uy@gmail.com. Si deseas el reembolso\n de tu pedido, éste se hará a través del mismo medio utilizado\n para el pago del pedido inicial. Para que el servicio sea más\n rápido, los artículos tienen que ser devueltos en su embalaje\n original, así como, si es posible, en la misma caja en la que\n fueron enviados. Si no fuera posible, te agradeceríamos que\n embalases los productos con el mejor acondicionamiento posible\n con el objetivo de evitar cualquier problema durante la\n devolución. Un e-mail de confirmación te informará de la\n recepción de tu paquete y del procesamiento de tu pedido.\n CONDICIONES PARA CAMBIOS Y DEVOLUCIONES: El plazo máximo para la\n solicitud de devoluciones será de quince (10) días corridos a\n contar desde el día de recepción del pedido. Pasado este\n plazo, tellmeGen no aceptará las devoluciones. Por motivos de\n higiene y salud, Mr.Gen no admitirá la devolución de productos\n usados, abiertos o desprecintados. Tampoco se admitirán\n productos que hayan sido golpeados o deteriorados, sin\n embalaje/caja/estuche original o que presenten alguna falta de\n algún elemento o accesorio. Para que sea efectiva una\n devolución, el kit tiene que ser devuelto a nuestras\n instalaciones. Una vez el kit sea recibido y comprobado por\n nuestro equipo, se procederá a devolver el importe de la compra\n aplicando una penalización de 50USD (o su equivalente en la\n moneda de pago) por gastos de gestión, manipulación y envío. Si\n la muestra ya ha sido enviada a nuestro laboratorio y ya está\n siendo procesada, la devolución del importe no será posible. Por\n motivos de higiene y salud, Mr.Gen no acepta cambios de los kits\n adquiridos. PASOS A SEGUIR EN LAS DEVOLUCIONES: Si deseas hacer\n la devolución de algún producto, por favor sigue estas\n instrucciones: Contacta con el servicio de Atención al Cliente\n mediante el mail mrgen.uy@gmail.com indicando el número de\n pedido y fecha del mismo. Empaqueta el/los producto/s bajo las\n mismas condiciones que lo recibiste. Mr.Gen enviará la etiqueta\n para hacer el envío de vuelta a nuestras instalaciones. Una vez\n recibidos los productos, el personal de Mr.Gen lo revisará y, si\n está todo correcto, se procederá a la devolución del importe\n aplicando la penalización anteriormente descrita. El reintegro\n del importe de las devoluciones se realizará a través del mismo\n canal que el cliente seleccionó como forma de pago en el momento\n de formalizar su pedido. Te informamos que deberás conservar la\n factura del pedido para gestionar cualquier devolución o\n sustitución. POLÍTICA DE SUSTITUCIÓN DE PRODUCTOS DEFECTUOSOS O\n EN MAL ESTADO Por causas ajenas a nuestra voluntad, cabe la\n posibilidad de recibir un producto con un defecto de fabricación\n o en mal estado. Te rogamos que, tan pronto como adviertas que\n el producto presenta alguna anomalía, te pongas en contacto con\n nuestro servicio de Atención al Cliente comunicándonos la\n incidencia. Una vez te pongas en contacto con nosotros te\n indicaremos el procedimiento para la sustitución del producto\n defectuoso. En caso de que el motivo de la devolución sea debido\n a que el producto presente algún tipo de deterioro o defecto de\n fabricación, Mr.Gen se hará cargo de los gastos de envío\n derivados de dicha devolución. No se aceptarán devoluciones de\n productos que hayan sido abiertos o utilizados, a menos que sea\n porque estén estropeados o defectuosos. Te informamos que\n deberás conservar la factura del pedido para gestionar cualquier\n devolución o sustitución. DEVOLUCIONES POR DAÑOS DERIVADOS DEL\n TRANSPORTE: Cabe la posibilidad de que el producto sufra algún\n tipo de daño derivado de su manipulación o transporte. Con el\n fin de identificar posibles daños causados por el transporte,\n Mr.Gen recomienda a sus clientes que revisen el paquete en el\n momento de su recepción con el fin de identificar posibles\n golpes o daños en el exterior del mismo. En caso de que la\n mercancía presente signos evidentes de haber sufrido algún\n deterioro derivado del transporte, el cliente tiene derecho a\n rechazar la mercancía en el momento de su recepción, haciéndole\n saber al mensajero el motivo de la no aceptación. Los reembolsos\n que se realicen en virtud de esta política se emitirán a la\n misma cuenta bancaria utilizada para la compra y se procesarán\n en un plazo de 45 días hábiles a partir de la confirmación por\n parte de nuestro equipo de Atención al Cliente de que se han\n cumplido las condiciones del reembolso. En el momento en que se\n solicite el reembolso y confirmemos que la muestra no ha\n comenzado a ser procesada por nuestro laboratorio, invalidaremos\n el kit de recogida de saliva y cualquier muestra enviada a\n nuestro laboratorio con ese código no será procesada. Si la\n compra de dos o más kits es lo que da derecho a un descuento en\n su pedido y solicita el reembolso de una parte del mismo o si\n una muestra no supera el análisis dos veces, se reembolsará\n primero el precio del kit con descuento. No emitiremos un\n reembolso si: Solicitas un reembolso más de quince (10) días\n después de su pedido. Nuestro laboratorio había comenzado a\n procesar la muestra de saliva antes de la solicitud de\n reembolso. No recibimos el kit de recolección de saliva dentro\n de los quince (10) días de la solicitud de reembolso. POLÍTICA\n DE EXTRAVÍO Si el kit no llega al destino en el plazo de diez\n (10) días corridos desde la compra, rogamos te pongas en\n contacto con nuestro servicio de Atención al Cliente\n (mrgen.uy@gmail.com) comunicándonos la incidencia para que\n podamos verificar con la empresa de transporte qué ha podido\n pasar. Una vez tengamos confirmación por parte de la empresa de\n transporte de que el kit no ha llegado a su destinatario,\n procederemos a hacer el envío de un nuevo kit sin coste para el\n cliente.\n

\n
\n */}\n
\n
\n setActiveStep(activeStep - 1)}\n color=\"primary\"\n disableElevation\n >\n Anterior\n \n {isLoading ? (\n \n ) : (\n \n Registrarme\n \n )}\n
\n \n \n
\n );\n}\n\nexport default FamilyBackground;\n","import React from \"react\";\nimport { Button, Paper } from \"@material-ui/core\";\nimport { UserType } from \"../../../../data/enums\";\nimport { useSelector } from \"react-redux\";\nimport { RootState } from \"../../../../store/config/types\";\nimport { authService } from \"../../../../services/auth.service\";\n\ninterface EmailConfirmedProps {\n userType: number;\n}\n\nfunction EmailConfirmed({ userType }: EmailConfirmedProps) {\n const auth = useSelector((state: RootState) => state.auth);\n\n const mail = auth.emailSent;\n\n async function resendMail() {\n try {\n await authService.resendEmail(mail);\n } catch (e) {\n console.log(\"Ha ocurrido un error\");\n }\n }\n\n console.log(userType)\n if (\n userType === UserType.EndUser ||\n userType === UserType.Company ||\n userType === UserType.Nutritionist\n ) {\n return (\n \n

Último paso

\n

\n Perfecto, solo queda 1 paso, te vamos a enviar un email a{\" \"}\n {mail} para activar tu cuenta y así podés ingresar al\n dashboard.\n

\n Por favor revisa tu bandeja de spam si no recibes el email en unos minutos.\n

\n \n
\n \n Reenviar email\n \n
\n
\n );\n }\n\n return (\n \n \n

Lorem ipsum dolor sit a

\n
\n

Lorem ispsdakl

\n

\n Perfecto, solo queda 1 paso, te vamos a enviar un email a {mail}{\" \"}\n para activar tu cuenta y así podés ingresar al dashboard.\n

\n \n Reenviar mail\n \n \n );\n}\n\nexport default EmailConfirmed;\n","import { httpGet } from \"./base.service\";\nimport { Cost } from \"../store/costs/types\";\nimport { endpoints } from \"./endpoints\";\n\nexport const costsService = {\n fetchCosts,\n};\n\nasync function fetchCosts(): Promise {\n return await httpGet(`${endpoints[\"costs\"]}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n","import { Cost } from \"./types\";\n\nexport const ADD_COSTS = \"ADD_COSTS\";\nexport const LOADING_COSTS = \"LOADING_COSTS\";\nexport const COSTS_FAILED = \"COSTS_FAILED\";\nexport const SELECT_COST = \"SELECT_COST\";\n\nexport interface AddCostsAction {\n type: typeof ADD_COSTS;\n costs: Cost[];\n}\n\nexport interface LoadingCostsAction {\n type: typeof LOADING_COSTS;\n}\n\nexport interface CostsFailedAction {\n type: typeof COSTS_FAILED;\n error: string;\n}\n\nexport interface SelectCostAction {\n type: typeof SELECT_COST;\n selected: number;\n}\n\nexport type CostsActionTypes = AddCostsAction | LoadingCostsAction | CostsFailedAction | SelectCostAction;\n","import { Dispatch } from \"redux\";\nimport { Cost } from \"./types\";\nimport { costsService } from \"../../services/costs.service\";\nimport {\n LOADING_COSTS,\n ADD_COSTS,\n COSTS_FAILED,\n CostsActionTypes,\n SELECT_COST,\n} from \"./actionTypes\";\n\n//#region Fetch costs\n\nexport const fetchCommissions = () => {\n return (dispatch: Dispatch) => {\n dispatch(loadingCosts());\n \n costsService.fetchCosts().then(\n (response) => {\n dispatch(addCosts(response!));\n },\n (error) => {\n costsFailed(error);\n }\n );\n };\n};\n\nexport const selectPlan = (id: number) => {\n return (dispatch: Dispatch) => {\n dispatch(selectCost(id));\n };\n};\n\nconst selectCost = (id: number): CostsActionTypes => ({\n type: SELECT_COST,\n selected: id,\n});\n\nconst loadingCosts = (): CostsActionTypes => ({\n type: LOADING_COSTS,\n});\n\nconst addCosts = (costs: Cost[]): CostsActionTypes => ({\n type: ADD_COSTS,\n costs: costs,\n});\n\nconst costsFailed = (error: string): CostsActionTypes => ({\n type: COSTS_FAILED,\n error,\n});\n\n//#endregion\n","import React, { useState, ReactNode, ChangeEvent, useEffect } from \"react\";\nimport {\n Card,\n CardContent,\n Select,\n MenuItem,\n makeStyles,\n} from \"@material-ui/core\";\nimport { RootState } from \"../../../store/config/types\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport {\n fetchCommissions,\n selectPlan,\n} from \"../../../store/costs/actionCreators\";\nimport { ConnectedProps, connect } from \"react-redux\";\nimport compraSegura from \"../../../assets/compra-segura.png\";\nimport qs from \"query-string\";\n\nconst useStyles = makeStyles({\n item: {\n padding: 10,\n },\n});\n\n//const options = [\"Kit ADN Empresarial x10 $200\", \"Kit ADN Empresarial x50 $800\", \"Kit ADN Empresarial x100 $1000\"];\n\nconst mapStateToProps = (state: RootState) => ({\n costs: state.costs,\n});\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch\n) => ({\n fetchCommissions: () => dispatch(fetchCommissions()),\n selectPlan: (id: number) => dispatch(selectPlan(id)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & { isCompany?: boolean };\n\nfunction CompanyCard({\n costs,\n fetchCommissions,\n selectPlan,\n isCompany,\n}: PropsType) {\n const classes = useStyles();\n const [selectedPlan, setSelectedPlan] = useState(0);\n const [monto, setMonto] = useState(0);\n const [fromCompany, setFromCompany] = useState(false);\n\n useEffect(() => {\n const search = window.location.search;\n const companyUser = Number(qs.parse(search)[\"fromCompany\"]);\n if (companyUser == 1) setFromCompany(true);\n },[]);\n\n useEffect(() => {\n if (!costs.isLoading && !costs.costs && costs.errorMessage === \"\") {\n fetchCommissions();\n }\n }, [costs.isLoading, costs.costs, costs.errorMessage, fetchCommissions]);\n\n const onSelectChange = (\n event: ChangeEvent<{ name?: string | undefined; value: unknown }>,\n child: ReactNode\n ): void => {\n let id = Number(event.target.value);\n setSelectedPlan(Number(event.target.value));\n selectPlan(Number(event.target.value));\n };\n\n function getPrice() {\n let amount = Number(localStorage.getItem(\"amount\")) || 1; \n const price = costs?.costs?.find(\n (x) => amount >= x.minAmount && amount <= x.maxAmount\n );\n return price ? price.unitCost * amount : 0; \n }\n\n useEffect(() => { \n\n async function getFinalPrice() {\n const price = await getPrice();\n if (!isNaN(price)) {\n setMonto(price);\n }\n }\n \n getFinalPrice();\n },[costs.costs]);\n\n return (\n \n \n

¡Oferta de lanzamiento

\n

por tiempo limitado!

\n
\n {/* {isCompany ? (\n \n {costs.costs &&\n costs.costs.map((o, index) => {\n return (\n \n \n Kit ADN $\n {isCompany\n ? `Empresarial x{o.minAmount}{\" \"}\n ${o.unitCost}`\n : null}\n \n \n );\n })}\n \n ) : ( */}\n
\n
\n \"NutriTest\"\n
\n

\n\n

\n
\n {!fromCompany ? (\n <>\n Precio Regular: USD 299
\n Obtené hoy tu Kit NutriTest
por solo USD {monto} imp. Incl.
\n \n ):(\n Obtené hoy tu Kit NutriTest
\n )\n }\n \n \n
\n
\n {/* )} */}\n

\n {\n !fromCompany ? (\n <>\n

\n también podés pagar en cómodas cuotas con VISA, Mastercard y OCA: \n

    \n
  • 3 cuotas de: USD {(monto/3).toFixed(2)}
  • \n
  • 6 cuotas de: USD {(monto/6).toFixed(2)}
  • \n
\n

\n

\n \"Visa\" \n
\n Servicio disponible solo en Uruguay\n

\n \n ) : (\n

\n Incluye kits válidos por Mr. GEN NutriTest.\n \n

\n )\n }\n

\n
\n
\n
\n );\n}\n\nexport default connector(CompanyCard);\n","import React, { useState, useEffect } from \"react\";\nimport { Dialog, DialogContent, DialogTitle, CircularProgress, useMediaQuery, useTheme } from \"@material-ui/core\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\ninterface PopupProps {\n open: boolean;\n onClose: () => void;\n}\n\nconst useStyles = makeStyles((theme) => ({\n dialogContent: {\n textAlign: 'center',\n fontSize: '2.2em',\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: \"1.4em\",\n marginTop: '20px'\n },\n },\n completedText: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n listStyle: \"none\",\n },\n tick: {\n color: \"green\",\n paddingLeft: \"20px\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingLeft: \"10px\",\n },\n },\n spinner: {\n marginTop: \"20px\",\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: \"15px\",\n },\n },\n}));\n\nconst Popup: React.FC = ({ open, onClose }) => {\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));\n const classes = useStyles();\n\n const texts = [\n \"Registrando usuario...\",\n \"Iniciando sesión...\",\n \"Cargando medios de pago...\",\n ];\n\n const [currentIndex, setCurrentIndex] = useState(0);\n\n useEffect(() => {\n if (open) {\n const interval = setInterval(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex + 1 < texts.length) {\n return prevIndex + 1;\n } else {\n clearInterval(interval);\n return prevIndex;\n }\n });\n }, 1000);\n\n return () => clearInterval(interval);\n }\n }, [open]);\n\n return (\n {\n if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {\n onClose();\n }\n }}\n fullScreen={fullScreen}\n PaperProps={{\n style: {\n width: fullScreen ? '100%' : '800px',\n height: fullScreen ? '100%' : '450px',\n margin: 'auto',\n position: 'relative',\n paddingTop: '20px',\n paddingBottom: '20px',\n borderRadius: '20px'\n }\n }}\n maxWidth=\"md\"\n fullWidth\n >\n \n \n
    \n {texts.map((text, index) => (\n
  • \n {text} \n {index <= currentIndex && }\n
  • \n ))}\n
\n \n
\n
\n );\n}\n\nexport default Popup;\n","import React, { useState, useEffect } from \"react\";\nimport { UserStepper } from \"./UserStepper\";\nimport UserData from \"./UserData\";\nimport NutritionistCode from \"./NutritionistCode\";\nimport Patologies from \"./Pathologies\";\nimport FamilyBackground from \"./FamilyBackground\";\nimport { EmailConfirmed } from \"../common/EmailConfirmed\";\nimport { EndUserCard } from \"../../common/EndUserCard\";\nimport { UserType } from \"../../../data/enums\";\nimport logo from \"../../../assets/logo.png\";\nimport { Account as Acc } from \"../../../store/auth/types\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { RootState } from \"../../../store/config/types\";\nimport { changeEmail, register, login } from \"../../../store/auth/actionCreators\";\nimport qs from \"query-string\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { CompanyCard } from \"../../common/CompanyCard\";\nimport {Popup} from \"../../common/Popup\";\n\n\n//1. Datos usuario final\n//2. Código nutricionista\n//3. Pantalla patologías\n//4. Pantalla antecedentes\n//5. Correo enviado\n\nconst previousRoutesToAvoidPopup = [\"/createUser\"];\n\nfunction UserSignup() {\n const history = useHistory();\n const [activeStep, setActiveStep] = useState(0);\n const [userData, setUserData] = useState({\n name: \"\",\n surname: \"\",\n gender: 0,\n height: \"70\",\n weight: \"170\",\n phone: \"\",\n ethnicity: 0,\n date: \"1990-01-01T00:00:00\",\n email: \"\",\n password: \"\",\n repeatPassword: \"\",\n });\n const [nutritionistCode, setNutritionistCode] = useState({\n code: \"\",\n });\n const [pathologies, setPathologies] = useState({\n pathologies: [],\n });\n const [familyBackground, setFamilyBackground] = useState({\n familyBackground: [],\n });\n const [toPay, setToPay] = useState(false);\n const [popupOpen, setPopupOpen] = useState(false);\n const [fromCompany, setFromCompany] = useState(false);\n\n const dispatch = useDispatch();\n const auth = useSelector((state: RootState) => state.auth);\n const isRegistering = useSelector(\n (state: RootState) => state.auth.registering\n );\n\n useEffect(() => {\n const search = window.location.search;\n const stepReceived = Number(qs.parse(search)[\"step\"]);\n const companyUser = Number(qs.parse(search)[\"fromCompany\"]);\n if (companyUser == 1) setFromCompany(true);\n if (stepReceived) setActiveStep(stepReceived);\n }, []);\n\n useEffect(() => {\n if (toPay) {\n sendRegister();\n }\n }, [toPay]);\n\n useEffect(() => {\n if (auth.registerSuccess) {\n setActiveStep(4);\n if (!fromCompany) {\n setPopupOpen(true); \n //HAGO AUTO LOGIN\n setTimeout(() => {\n setPopupOpen(false);\n dispatch(login({ email: userData.email, password: userData.password }));\n }, 3300);\n }\n }\n }, [auth.registerSuccess]);\n\n const sendRegister = () => {\n let pathologiesIds = [];\n for (let i of pathologies.pathologies) {\n pathologiesIds.push({ id: i, name: \"\" });\n }\n\n let familyBackIds = [];\n for (let i of familyBackground.familyBackground) {\n familyBackIds.push({ id: i, name: \"\" });\n }\n const account = createRequestRegisterCompany(pathologiesIds, familyBackIds);\n dispatch(changeEmail(userData.email));\n dispatch(register(account, userData.password));\n };\n\n const createRequestRegisterCompany = (pathologiesIds, familyBackIds): Acc => {\n const order = {\n invoiceId: 0,\n analyses: \"\",\n transaction: \"\",\n quantity: 1,\n };\n const analysis = {\n id: \"\",\n referenceId: \"\",\n created: new Date(),\n lastModified: new Date(),\n order: order,\n };\n const profile = {\n firstName: userData.name,\n lastName: userData.surname,\n birthDate: userData.date,\n height: userData.height,\n weight: userData.weight,\n gender: userData.gender,\n analysis: analysis,\n mobile: userData.phone,\n address: \"\",\n pathologies: pathologiesIds,\n familyHistories: familyBackIds,\n };\n const referer = {\n publicCode: nutritionistCode.code,\n };\n return {\n role: \"Customer\",\n profile,\n email: userData.email,\n business: null,\n referer,\n nutritionist: null,\n };\n };\n\n \n\n function goToHome() {\n history.push('/');\n }\n\n return (\n
\n
\n
\n \"logo\"\n \n Volver\n \n
\n \n
\n {activeStep === 0 ? (\n \n ) : null}\n {activeStep === 1 ? (\n \n ) : null}\n {activeStep === 2 ? (\n \n ) : null}\n {activeStep === 3 ? (\n setFamilyBackground(ss)}\n setToPay={setToPay}\n isLoading={isRegistering}\n />\n ) : null}\n {activeStep === 4 ? (\n \n ) : null}\n
\n
\n
\n \"logo\"\n {UserType.EndUser ? : \"\"}\n \n
\n setPopupOpen(false)} />\n
\n );\n}\n\nexport default UserSignup;\n","import React from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport logo from \"../../../../assets/logo.png\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport oit from \"../../../../assets/oit.png\";\nimport wef from \"../../../../assets/wef.png\";\nimport oms from \"../../../../assets/oms.png\";\nimport WhiteLogo from \"../../../../assets/whiteLogo.png\";\nimport mosaic from \"../../../../assets/auth-left-mosaic.png\";\n\ninterface JoinMrGenProps {\n title: string;\n activeStep: number;\n setActiveStep: React.Dispatch>;\n type: \"nutritionist\" | \"company\";\n}\n\nfunction JoinMrGen({ title, activeStep, setActiveStep, type }: JoinMrGenProps) {\n \n const history = useHistory();\n\n function goToHome() {\n history.push('/');\n }\n \n return (\n
\n
\n
\n
\n \"logo\"\n \n Volver\n \n
\n

{title}

\n {type == \"nutritionist\" ? (\n <>\n

\n

\n Alcanza las metas de salud con tus pacientes, diseñando dietas\n personalizadas basadas en su ADN.\n

\n

\n El Test de nutrición y genética de Mr. Gen es tu mejor aliado\n para brindar a tus pacientes recomendaciones nutricionales\n asociadas a su genotipo y lograr con esto una dieta efectiva y\n con rápidos resultados.\n

\n

\n Por cada paciente que recomiendes podrás obtener ganancias.\n Regístrate y te contactaremos para brindarte información sobre\n la propuesta.\n

\n

\n {/* \n

Descargar informe de ejemplo

\n
*/}\n
\n setActiveStep(activeStep + 1)}\n variant=\"contained\"\n color=\"primary\"\n >\n Sumate a nuestro equipo\n \n
\n
\n \n ) : null}\n {type == \"company\" ? (\n <>\n
\n
\n
\n \"OIT\"\n
\n

Aumento de la productividad

\n

\n De acuerdo a la OIT (Organización Internacional del Trabajo)\n una mala alimentación durante la jornada laboral causa\n pérdidas de hasta un 17% en la productividad.\n

\n
\n
\n
\n \"OMS\"\n
\n

Prevención de enfermedades

\n

\n La OMS afirma que las enfermedades derivadas de una mala\n alimentación, tales como diabetes, hipertensión, obesidad,\n entre otros. Causan ausentismo, incapacidad a corto y largo\n plazo, alto índice de rotación de personal, clima laboral\n inestable entre otras.\n

\n
\n
\n
\n \"WEF\"\n
\n

Retorno de Inversión

\n

\n Según un estudio del WORLD ECONOMIC FORUM, los programas de\n bienestar corporativo logran retornos de inversión hasta un\n 300%\n

\n
\n
\n \n

Descargar presentación comercial

\n
\n
\n setActiveStep(activeStep + 1)}\n variant=\"contained\"\n color=\"primary\"\n >\n Comenzá a probar Mr.GEN\n \n
\n \n ) : null}\n \n
\n
\n\n
\n \"\"/\n
\n

Más conocimiento, mejor bienestar, mejor calidad de vida

\n {type == \"company\" ? (\n \n

Descargar presentación comercial

\n
\n ): null}\n
\n \n
\n
\n );\n}\n\nexport default JoinMrGen;\n","import React from \"react\";\nimport { Step } from \"./types\";\nimport CheckIcon from \"@material-ui/icons/Check\";\n\ninterface ArrowStepsProps {\n activeStep: number;\n steps: Step[];\n}\n\nfunction ArrowSteps({ activeStep, steps }: ArrowStepsProps) {\n return (\n
\n
\n {steps.map((step, index) => {\n return (\n
\n index ? \"past-arrow\" : activeStep === index ? \"present-arrow\" : \"future-arrow\"\n }`}\n >\n {activeStep === index ? (\n
\n {index + 1}\n
\n

{step.presentTitle}

\n

{step.name}

\n
\n
\n ) : (\n
\n {step.name}\n {index + 1}\n {index < activeStep ? : null}\n
\n )}\n
\n
\n );\n })}\n
\n
\n );\n}\n\nexport default ArrowSteps;\n","import React from \"react\";\nimport { Paper, Button } from \"@material-ui/core\";\nimport { Formik, FormikHelpers, Form, Field } from \"formik\";\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport schemas from \"../../../data/schemas\";\nimport { authService } from \"../../../services/auth.service\";\n\ninterface Values {\n names: string;\n surnames: string;\n email: string;\n phone: string;\n password: string;\n repeatPassword: string;\n}\n\ninterface NutritionistDataProps {\n activeStep: number;\n setActiveStep: React.Dispatch>;\n data: Values;\n setData: React.Dispatch>;\n}\n\nfunction NutritionistData({\n activeStep,\n setActiveStep,\n data,\n setData,\n}: NutritionistDataProps) {\n const submit = (values: Values, actions: FormikHelpers) => {\n authService.verifyEmail(values.email).then(\n (response) => {\n setData(values);\n setActiveStep(activeStep + 1);\n },\n (error) => {\n actions.setFieldError('email', 'El correo electrónico no esta disponible');\n }\n );\n };\n\n return (\n \n
\n <>\n \n \n

¡Hola! Bienvenido

\n

\n Para registrarte como nutricionista en Mr.Gen debes completar\n los siguientes pasos\n

\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n \n Continuar\n \n
\n \n \n \n );\n}\n\nexport default NutritionistData;\n","import React from 'react';\nimport {Field} from 'formik';\nimport {FormTextField} from '../forms/FormTextField';\nimport {FormCheckbox} from '../forms/FormCheckbox';\n\nfunction PaymentMethodFields({collectionNetworkSelected}) {\n return (\n
\n
\n

Quiero recibir el dinero en mi banco

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

Quiero cobrar por redes de cobranza

\n
\n \n
\n {collectionNetworkSelected ? (\n
\n \n \n
\n ) : null}\n
\n
\n );\n}\n\nexport default PaymentMethodFields;\n","import React, { useState } from \"react\";\nimport { Formik, Form, FormikHelpers } from \"formik\";\nimport { Paper, Button } from \"@material-ui/core\";\nimport { PaymentMethodFields } from \"../../common/PaymentMethodFields\";\n\ninterface Values {\n bank: string;\n accountNumber: string;\n branchOffice: string;\n fullName: string;\n collectionNetwork: string[];\n ci: string;\n}\n\ninterface PaymentMethodProps {\n activeStep: number;\n setActiveStep: React.Dispatch>;\n data: Values;\n setData: React.Dispatch>;\n submitNutritionist: () => void;\n}\n\nfunction PaymentMethod({\n activeStep,\n setActiveStep,\n data,\n setData,\n submitNutritionist,\n}: PaymentMethodProps) {\n const [showSummary, setShowSummary] = useState(false);\n\n\n const submit = (values: Values, actions: FormikHelpers) => {\n setData(values);\n if (showSummary) {\n submitNutritionist();\n } else {\n setShowSummary(true);\n }\n };\n\n function onBack() {\n if (showSummary) {\n setShowSummary(false);\n } else {\n setActiveStep(activeStep - 1);\n }\n }\n\n return (\n \n {({ values }) => {\n let collectionNetworkSelected = values.collectionNetwork.length > 0;\n if(collectionNetworkSelected) {\n values.bank = \"\";\n values.accountNumber = \"\";\n values.branchOffice = \"\";\n }\n return (\n
\n <>\n \n \n

\n Para poder cobrar debes indicarnos
\n la forma que más te quede cómoda.\n

\n
\n {showSummary ? (\n collectionNetworkSelected ?\n (\n
\n

Tu forma de cobro elegida

\n

Red de cobranza: {values.collectionNetwork[0]}

\n

\n Documento: {values.ci}\n

\n

\n Nombre y Apellido: {values.fullName}\n

\n
\n

\n Todos los meses se va a depositar en tu cuenta si tienes\n balance positivo a cobrar.\n

\n
\n
\n ) :\n (\n
\n

Tu forma de cobro elegida

\n

Banco: {values.bank}

\n

Sucursal: {values.branchOffice}

\n

\n Número de cuenta: {values.accountNumber}\n

\n

\n Nombre y Apellido: {values.fullName}\n

\n
\n

\n Todos los meses se va a depositar en tu cuenta si tienes\n balance positivo a cobrar.\n

\n
\n
\n )) : (\n \n )}\n \n
\n \n Anterior\n \n \n Continuar\n \n
\n \n \n );\n }}\n
\n );\n}\n\nexport default PaymentMethod;\n","// GET /business\n// Obtener información sobre la empresa\n\nimport { httpGet, httpPost } from \"./base.service\";\nimport { endpoints } from \"./endpoints\";\nimport {Account} from '../store/auth/types';\n\nexport const businessService = {\n kitsavailables,\n getEmployes\n};\n\nasync function kitsavailables(): Promise {\n return await httpGet(`${endpoints.kitsavailable}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n console.log(\"error\", error);\n throw new Error(error);\n });\n }\n\nasync function getEmployes(): Promise {\n return await httpGet(`${endpoints['employes']}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n }","import React, { useState, useEffect } from 'react';\nimport { Button, Menu, MenuItem } from '@material-ui/core';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n\nimport { businessService } from '../../../../services/businesses.service';\nimport { FullWidthSnackbar } from '../../../common/FullWidthSnackbar';\n\ninterface NewUserButtonProps extends RouteComponentProps {\n isNutritionist: boolean;\n setOpen: (open: boolean) => void;\n}\n\nfunction NewUserButton({ isNutritionist, setOpen, history }: NewUserButtonProps) {\n const [anchorEl, setAnchorEl] = useState(null);\n const [available, setkitsavailables] = useState(0);\n const [snackBar, setSnackBar] = useState(false);\n\n async function getkits() {\n setkitsavailables(await businessService.kitsavailables());\n }\n\n const selectOption = (option: number) => {\n if (option === 0) {\n setOpen(true);\n } else {\n history.push('/createUser');\n }\n\n setAnchorEl(null);\n };\n\n useEffect(() => {\n if (!isNutritionist) {\n getkits();\n }\n }, []);\n\n const handleClick = (event: React.MouseEvent) => {\n if (isNutritionist) {\n setAnchorEl(event.currentTarget);\n } else {\n if (available !== null && available > 0) {\n setAnchorEl(event.currentTarget);\n } else {\n setSnackBar(true);\n }\n }\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n return (\n <>\n \n {`Cargar nuevo ${isNutritionist ? 'paciente' : 'empleado'}`}\n \n \n selectOption(0)}>Enviar solo email\n selectOption(1)}>\n Cargar todos los datos\n \n \n \n \n );\n}\n\nexport default withRouter(NewUserButton);\n","import React, { useState } from \"react\";\n\nimport {\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n IconButton,\n makeStyles,\n Theme,\n createStyles,\n} from \"@material-ui/core\";\nimport user from \"../../../../assets/user.png\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport * as styleVars from \"../../../../styles/_variables.scss\";\nimport { FormTextField } from \"../../../common/forms/FormTextField\";\nimport { Field, Form, Formik, FormikHelpers } from \"formik\";\nimport schemas from \"../../../../data/schemas\";\n\nimport { RootState } from \"../../../../store/config/types\";\nimport { useSelector } from \"react-redux\";\nimport { userAccount } from \"../../../../store/auth/selector\";\nimport { authService } from \"../../../../services/auth.service\";\nimport { FullWidthSnackbar } from \"../../../common/FullWidthSnackbar\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"16px 0 0 0\",\n },\n image: {\n height: 48,\n width: \"auto\",\n [theme.breakpoints.down(\"xs\")]: {\n height: 36,\n },\n },\n titleText: {\n fontSize: 24,\n [theme.breakpoints.down(\"xs\")]: {\n fontSize: 20,\n },\n },\n closeIcon: {\n boxShadow: \"0 2px 24px 0 rgba(0, 0, 0, 0.15)\",\n backgroundColor: styleVars.white,\n },\n content: {\n padding: \"0 64px\",\n [theme.breakpoints.down(\"xs\")]: {\n padding: \"0 32px\",\n },\n },\n actions: {\n padding: \"32px 0\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n button: {\n fontSize: 18,\n },\n container: {\n padding: 16,\n margin: \"32px 0 16px 0\",\n boxSizing: \"border-box\",\n textAlign: \"center\",\n },\n })\n);\n\ninterface UserDialogProps {\n open: boolean;\n setOpen: (value: boolean) => void;\n isNutritionist: boolean;\n}\n\ninterface Values {\n name: string;\n email: string;\n}\n\nfunction UserDialog({ open, setOpen, isNutritionist }: UserDialogProps) {\n const classes = useStyles();\n\n const actualUser = useSelector((state: RootState) => userAccount(state));\n const [snackbarOpen, setSnackbarOpen] = useState(false);\n\n const handleDialogClose = () => {\n setOpen(false);\n };\n\n const submit = (values: Values, actions: FormikHelpers) => {\n let success = true;\n authService.verifyEmail(values.email).then(\n (response) => {\n if (isNutritionist) {\n const request = {\n accountId: actualUser.id,\n newAccountInfo: {\n role: \"Customer\",\n profile: null,\n email: values.email,\n business: null,\n referer: actualUser.nutritionist,\n nutritionist: null,\n },\n };\n\n authService.createUserFromNutricionist(request).then(\n (response) => {},\n (error) => {\n success = false;\n alert(\"ROMPIÓ\");\n }\n );\n } else {\n const request = {\n accountId: actualUser.id,\n newAccountInfo: {\n role: \"Customer\",\n profile: null,\n email: values.email,\n business: actualUser.business,\n referer: null,\n nutritionist: null,\n },\n };\n\n authService.createUserFromBusiness(request).then(\n (response) => {},\n (error) => {\n success = false;\n alert(\"ROMPIÓ\");\n }\n );\n }\n\n if (success) {\n setSnackbarOpen(true);\n setTimeout(() => {\n setSnackbarOpen(false);\n handleDialogClose();\n }, 4000);\n }\n },\n (error) => {\n actions.setFieldError(\n \"email\",\n \"El correo electrónico no está disponible\"\n );\n }\n );\n };\n\n return (\n \n \n
\n \"user\"\n {`Cargar ${\n isNutritionist ? \"paciente\" : \"empleado\"\n }`}\n \n \n \n
\n
\n \n \n
\n \n \n
\n \n Enviar\n \n
\n Al presionar enviar le llegará al  \n {isNutritionist ? \"paciente\" : \"empleado\"} un link para\n continuar con su registro.\n
\n
\n Recuerde que si envía más invitaciones que cupos disponibles,\n solo podrán acceder los usuarios que lleguen en primer lugar a registrarse exitosamente.\n
\n
\n \n \n
\n \n
\n );\n}\n\nexport default UserDialog;\n","import React, { useState } from \"react\";\nimport { Paper } from \"@material-ui/core\";\nimport image1 from \"../../../assets/nutritionist-dashboard-1.png\";\nimport image2 from \"../../../assets/nutritionist-dashboard-2.png\";\nimport image3 from \"../../../assets/nutritionist-dashboard-3.png\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../../store/config/types';\nimport { NewUserButton } from \"../../dashboard/common/NewUserButton\";\nimport { UserDialog } from \"../../dashboard/common/UserDialog\";\n\nfunction NutritionistVerification({ history }: RouteComponentProps) {\n\n const account = useSelector((state: RootState) => state.auth);\n const [open, setOpen] = useState(false);\n\n return (\n \n \n

Registro Completado

\n
\n

Felicitaciones, estás registrado en Mr. Gen

\n Este código podrás darle a tus pacientes para que se registren y puedas ver sus resultados. Recuérdales que deben ingresarlo en el registro de usuario en el tercer paso.\n
\n {account && account.account.nutritionist && account.account.nutritionist.publicCode}\n
\n En tu dashboard vas a poder:\n
\n
\n \"1\"\n Cargar nuevos pacientes\n
\n
\n \"2\"\n Ver status de tus pacientes\n
\n
\n \"3\"\n Ver tu balance de comisiones\n
\n
\n \n \n
\n );\n}\n\nexport default withRouter(NutritionistVerification);\n","export const urlHelper = { parseQueryString, isOnPublicUrl };\n\nfunction parseQueryString(queryString?: string): any {\n if (!queryString) {\n queryString = window.location.search.substring(1);\n }\n\n const params: any = {};\n\n const queries = queryString.split(\"&\");\n\n queries.forEach((indexQuery: string) => {\n const indexPair = indexQuery.split(\"=\");\n\n const queryKey = decodeURIComponent(indexPair[0]);\n const queryValue = decodeURIComponent(indexPair.length > 1 ? indexPair[1] : \"\");\n\n params[queryKey] = queryValue;\n });\n\n return params;\n}\n\n/* const publicUrls = [\"/login\", \"/resetPassword\", \"/signup\", \"/signup/\", \"/\", \"/verified\", \"/createUser\", \"/changePassword\",\"/terminos-condiciones-uso-uy\", \"/platos-semanales\", \"/consulta-nutricional\", \"/signup/?user=1\"//,\"/meals-checkout\"];\n\nfunction isOnPublicUrl(url: string): boolean {\n return publicUrls.indexOf(url) > -1;\n} */\n\nconst publicUrls = [\n \"/login\", \n \"/resetPassword\", \n \"/signup\", \n \"/signup/\", \n \"/\", \n \"/verified\", \n \"/createUser\", \n \"/changePassword\",\n \"/terminos-condiciones-uso-uy\", \n \"/platos-semanales\", \n \"/consulta-nutricional\", \n \"/signup/?user=1\"\n // \"/meals-checkout\"\n];\n\nfunction isOnPublicUrl(url: string): boolean {\n const path = url.split('?')[0];\n \n return publicUrls.includes(path);\n}","import React, { useState, useEffect } from \"react\";\nimport { JoinMrGen } from \"../common/JoinMrGen\";\nimport { ArrowSteps } from \"../../common/ArrowSteps\";\nimport { Step } from \"../../common/ArrowSteps/types\";\nimport NutritionistData from \"./NutritionistData\";\nimport PaymentMethod from \"./PaymentMethod\";\nimport NutritionistVerification from \"./NutritionistVerification\";\nimport { EmailConfirmed } from \"../common/EmailConfirmed\";\nimport { UserType } from \"../../../data/enums\";\nimport logo from \"../../../assets/logo.png\";\nimport { urlHelper } from \"../../../helpers/urlHelper\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { register, changeEmail } from \"../../../store/auth/actionCreators\";\nimport { Account as Acc } from \"../../../store/auth/types\";\nimport { Link } from \"react-router-dom\";\nimport { RootState } from \"../../../store/config/types\";\n\n//1. Querés ser parte?\n//2. Datos nutricionista\n//3. Forma de cobro\n//4. Correo enviado\n\nconst steps: Step[] = [\n {\n presentTitle: \"Primer paso\",\n name: \"Datos personales\",\n },\n {\n presentTitle: \"Segundo paso\",\n name: \"Forma de cobro\",\n },\n {\n presentTitle: \"Tercer paso\",\n name: \"Verificación email\",\n },\n {\n presentTitle: \"Último paso\",\n name: \"Mi dashboard\",\n },\n];\n\nfunction NutritionistSignup() {\n const dispatch = useDispatch();\n const registerSuccess = useSelector((x: RootState) => x.auth.registerSuccess);\n const loggedIn = useSelector((x: RootState) => x.auth.loggedIn);\n\n const [nutrData, setNutrData] = useState({\n names: \"\",\n surnames: \"\",\n email: \"\",\n phone: \"\",\n password: \"\",\n repeatPassword: \"\",\n });\n\n const [paymentData, setPaymentData] = useState({\n bank: \"\",\n accountNumber: \"\",\n branchOffice: \"\",\n fullName: \"\",\n ci: \"\",\n collectionNetwork: [],\n });\n\n const [activeStep, setActiveStep] = useState(99);\n\n useEffect(() => {\n if (activeStep === 99) {\n let search = window.location.search;\n let vars = urlHelper.parseQueryString(search.substring(1, search.length));\n const step = vars.step ? Number(vars.step) : 0;\n setActiveStep(loggedIn ? 4 : step);\n }\n }, [activeStep, setActiveStep]);\n\n useEffect(() => {\n if (registerSuccess) {\n setActiveStep(activeStep + 1);\n }\n }, [registerSuccess]);\n\n const submitNutritionist = () => {\n const account = createRequestRegister();\n dispatch(register(account, nutrData.password));\n dispatch(changeEmail(account.email));\n };\n\n const createRequestRegister = (): Acc => {\n const nutritionist = {\n bankAccount: {\n number: paymentData.accountNumber,\n name: paymentData.bank,\n bankBranch: paymentData.branchOffice,\n },\n publicCode: \"\",\n cardIdentification: paymentData.ci,\n paymentName: paymentData.fullName,\n paymentType: paymentData.collectionNetwork.length > 0 ? 3 : 1,\n };\n const order = {\n invoiceId: 0,\n analyses: \"\",\n transaction: \"\",\n quantity: 1,\n };\n const analysis = {\n id: \"\",\n referenceId: \"\",\n created: new Date(),\n lastModified: new Date(),\n order: order,\n };\n const profile = {\n firstName: nutrData.names,\n lastName: nutrData.surnames,\n birthDate: \"1000-12-31\",\n height: null,\n weight: null,\n gender: null,\n analysis: analysis,\n mobile: nutrData.phone,\n address: \"\",\n };\n return {\n role: \"Nutritionist\",\n profile,\n email: nutrData.email,\n nutritionist,\n referer: null,\n business: null,\n };\n };\n\n if (activeStep === 0) {\n return (\n \n );\n } else {\n return (\n
\n
\n \"logo\"\n \n Volver\n \n
\n \n {activeStep === 1 ? (\n \n ) : null}\n {activeStep === 2 ? (\n \n ) : null}\n {activeStep === 3 ? (\n \n ) : null}\n {activeStep === 4 ? : null}\n
\n );\n }\n}\n\nexport default NutritionistSignup;\n","import { User } from \"./types\";\nimport { UsersActionTypes, USERS_LOAD, USERS_LOADING, USERS_LOAD_FAILED, USERS_ADDING, USERS_ADD, ChangeAvatarAction, CHANGE_AVATAR } from './actionTypes';\nimport { Dispatch } from \"redux\";\n\nexport const changeAvatar = (avatar: any) => {\n return (dispatch: Dispatch) => {\n dispatch(changingAvatar(avatar));\n }\n}\n\n\n//#region Fetch users\n\nexport const fetchUsers = () => {\n return (dispatch: Dispatch) => {\n dispatch(updatingUsers());\n\n //TODO: Call backend\n setTimeout(() => {\n updateUsers([]);\n }, 3000);\n };\n};\n\nconst changingAvatar = (avatar: any): ChangeAvatarAction => ({\n type: CHANGE_AVATAR,\n avatar\n})\n\nconst updatingUsers = (): UsersActionTypes => ({\n type: USERS_LOADING,\n});\n\nconst updateUsers = (users: User[]): UsersActionTypes => ({\n type: USERS_LOAD,\n users,\n});\n\nconst updateUSersFailed = (error: string): UsersActionTypes => ({\n type: USERS_LOAD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Create user\n\nexport const createUser = (user: User) => {\n return (dispatch: Dispatch) => {\n dispatch(addingUsers());\n\n //TODO: Call backend\n setTimeout(() => {\n addUser({\n firstName: \"\",\n lastName: \"\",\n birthDate: new Date(),\n height: 180,\n weight: 80,\n gender: 1,\n });\n }, 3000);\n };\n};\n\nconst addingUsers = (): UsersActionTypes => ({\n type: USERS_ADDING,\n});\n\nconst addUser = (user: User): UsersActionTypes => ({\n type: USERS_ADD,\n user,\n});\n\n//#endregion\n","import { User } from \"./types\";\n\nexport const USERS_LOAD = \"USERS_LOAD\";\nexport const USERS_LOADING = \"USERS_LOADING\";\nexport const USERS_LOAD_FAILED = \"USERS_LOAD_FAILED\";\n\nexport const USERS_ADD = \"USERS_ADD\";\nexport const USERS_ADDING = \"USERS_ADDING\";\nexport const USERS_ADD_FAILED = \"USERS_ADD_FAILED\";\n\nexport const CHANGE_AVATAR = \"CHANGE_AVATAR\";\n\nexport interface ChangeAvatarAction { \n type: typeof CHANGE_AVATAR;\n avatar: any;\n}\nexport interface UsersLoadAction {\n type: typeof USERS_LOAD;\n users: User[];\n}\nexport interface UsersLoadingAction {\n type: typeof USERS_LOADING;\n}\nexport interface UsersLoadFailedAction {\n type: typeof USERS_LOAD_FAILED;\n error: string;\n}\n\nexport interface UsersAddAction {\n type: typeof USERS_ADD;\n user: User;\n}\nexport interface UsersAddingAction {\n type: typeof USERS_ADDING;\n}\nexport interface UsersAddFailedAction {\n type: typeof USERS_ADD_FAILED;\n error: string;\n}\n\nexport type UsersActionTypes =\n | UsersLoadAction\n | UsersLoadingAction\n | UsersLoadFailedAction\n | UsersAddAction\n | UsersAddingAction\n | UsersAddFailedAction\n | ChangeAvatarAction;\n","import React, { useState } from \"react\";\nimport {\n TextField,\n Tooltip,\n InputAdornment,\n makeStyles,\n IconButton,\n} from \"@material-ui/core\";\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\nimport VisibilityOffIcon from \"@material-ui/icons/VisibilityOff\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport { FieldProps } from \"formik\";\nimport DefaultImage from \"../../../../assets/default-image.png\";\nimport UploadIcon from \"../../../../assets/upload-icon.png\";\nimport { useDispatch } from \"react-redux\";\nimport { changeAvatar } from \"../../../../store/users/actionCreators\";\nimport { error } from \"console\";\nimport { url } from \"inspector\";\n\nconst useFormTextStyles = makeStyles({\n root: {\n width: \"100%\",\n },\n inputRoot: {\n padding: \"12px 18px\",\n },\n input: {\n display: \"none\",\n top: 12,\n left: 18,\n },\n focused: {\n fontSize: 16,\n },\n label: {\n color: \"#7C67E2\",\n alignItems: \"center\",\n display: \"inline-flex\",\n },\n labelSecondary: {\n opacity: \"0.3\",\n marginTop: 3,\n },\n});\n\ntype FormFileFieldProps = FieldProps & React.HTMLProps;\n\nfunction FormFileField({ field, form, ...props }: FormFileFieldProps) {\n const classes = useFormTextStyles();\n const hasError =\n (form.touched[field.name] && form.errors[field.name]) !== undefined;\n const errorMesagge = form.errors[field.name];\n const [image, setImage] = useState(\"\");\n\n const dispatch = useDispatch();\n\n const handleChange = (event: any): void => {\n if (event.target.files && event.target.files[0]) {\n const urlImage = URL.createObjectURL(event.target.files[0]);\n setImage(urlImage);\n dispatch(changeAvatar(event.target.files[0]));\n }\n };\n\n return (\n \n
\n {image === \"\" ? (\n \n ) : (\n \n )}\n
\n
\n \n {\n field.onChange(e);\n handleChange(e);\n }}\n />\n

\n
\n
Tamaño recomendado: 400x400px
\n
400 KB máximo
\n
\n {hasError ?
{errorMesagge}
: null}\n
\n \n );\n}\n\nexport default FormFileField;\n","import React, { useState, useEffect } from \"react\";\nimport { Formik, FormikHelpers, Form, Field } from \"formik\";\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport { Button } from \"@material-ui/core\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { RootState } from \"../../../store/config/types\";\nimport schemas from \"../../../data/schemas\";\nimport {\n register,\n verifyEmail,\n changeEmail,\n} from \"../../../store/auth/actionCreators\";\nimport { Account as Acc } from \"../../../store/auth/types\";\nimport FormFileField from \"../../common/forms/FormFileField/FormFileField\";\nimport firebase from \"firebase\";\nimport { ScriptSnapshot } from \"typescript\";\nimport { authService } from \"../../../services/auth.service\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\n\ninterface Values {\n name: string;\n email: string;\n rut: string;\n businessName: string;\n address: string;\n phone: string;\n password: string;\n avatar: string;\n}\n\ninterface CompanyDataProps {\n activeStep: number;\n setActiveStep: React.Dispatch>;\n}\n\nfirebase.initializeApp({\n apiKey: \"AIzaSyAsPQODrTAmo-EPRY8JKmJjUVvrbUGcfcU\",\n authDomain: \"mrgen-dev.firebaseapp.com\",\n projectId: \"mrgen-dev\",\n storageBucket: \"mrgen-dev.appspot.com\",\n messagingSenderId: \"869285210136\",\n appId: \"1:869285210136:web:02443dbd840307d9b1bb6d\",\n measurementId: \"G-7437HEDWY1\",\n});\n\nfunction CompanyData({ activeStep, setActiveStep }: CompanyDataProps) {\n const costs = useSelector((state: RootState) => state.costs);\n const users = useSelector((state: RootState) => state.users);\n const auth = useSelector((state: RootState) => state.auth);\n const [isLoading, setIsLoading] = useState(false);\n const [formData, setFormData] = useState({\n name: \"\",\n email: \"\",\n rut: \"\",\n businessName: \"\",\n address: \"\",\n phone: \"\",\n password: \"\",\n avatar: \"\",\n });\n const dispatch = useDispatch();\n\n const [percent, setPersent] = useState(0);\n\n /*const uploadImage = (name: string) => {\n const file = users.companyAvatar;\n const fileName = `${name}-${Math.random().toString()}-${file.name}`;\n const storageRef = firebase.storage().ref(`/avatars/${fileName}`);\n const task = storageRef.put(file);\n\n task.on('state_changed',\n snapshot => {\n let percentage = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;\n setPersent(Math.round(percentage));\n },\n error => {\n console.log(error.message);\n return null;\n },\n () => {\n task.snapshot.ref.getDownloadURL().then(\n url => {\n return url;\n }\n )\n });\n }*/\n\n useEffect(() => {\n if (auth.registerSuccess) {\n console.log('success')\n setActiveStep(activeStep + 1);\n }\n }, [auth.registerSuccess]);\n\n const submit = async (values: Values, actions: FormikHelpers) => {\n //dispatch(verifyEmail(values.email));\n setIsLoading(true);\n setFormData(values);\n await authService.verifyEmail(values.email).then(\n (response) => {\n //var avatarURL = uploadImage(values.name);\n if(users.companyAvatar !== null){\n const file = users.companyAvatar;\n const fileName = `${values.name}-${Math.random().toString()}-${\n file.name\n }`;\n const storageRef = firebase.storage().ref(`/avatars/${fileName}`);\n const task = storageRef.put(file);\n\n task.on(\n \"state_changed\",\n (snapshot) => {\n let percentage =\n (snapshot.bytesTransferred / snapshot.totalBytes) * 100;\n setPersent(Math.round(percentage));\n },\n (error) => {\n console.log(error.message);\n setIsLoading(false);\n return null;\n },\n () => {\n task.snapshot.ref.getDownloadURL().then((url) => {\n const account = createRequestRegisterCompany(values, url);\n dispatch(changeEmail(values.email));\n dispatch(register(account, values.password));\n setIsLoading(false);\n });\n }\n );\n setIsLoading(false);\n }\n const account = createRequestRegisterCompany(values, \"\");\n dispatch(changeEmail(values.email));\n dispatch(register(account, values.password));\n setIsLoading(false);\n //if (auth.registerSuccess)\n },\n (error) => {\n setIsLoading(false);\n actions.setFieldError(\n \"email\",\n \"El correo electrónico no esta disponible\"\n );\n }\n );\n };\n\n const createRequestRegisterCompany = (\n values: Values,\n avatarURL: string\n ): Acc => {\n const business = {\n name: values.businessName,\n rut: values.rut,\n avatar: avatarURL,\n };\n const order = {\n invoiceId: 0,\n analyses: \"\",\n transaction: \"\",\n quantity: costs.selected,\n };\n const analysis = {\n id: \"\",\n referenceId: \"\",\n created: new Date(),\n lastModified: new Date(),\n order: order,\n };\n const profile = {\n firstName: values.name,\n lastName: values.name,\n birthDate: \"12/12/12\",\n height: null,\n weight: null,\n gender: null,\n analysis: analysis,\n mobile: values.phone,\n address: values.address,\n };\n return {\n role: \"Business\",\n profile,\n email: values.email,\n business,\n referer: null,\n nutritionist: null,\n };\n };\n if (isLoading) {\n return (\n
\n \n
\n );\n }\n\n return (\n \n
\n <>\n
\n

Tus datos

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

Avatar

\n
\n \n {percent > 0 &&
{percent}%
}\n
\n
\n
\n

Contraseña para ingresar a tu perfil

\n
\n \n \n
\n {isLoading ? (\n
\n \n
\n ) : (\n
\n \n Continuar\n \n
\n )}\n
\n \n
\n \n );\n}\n\nexport default CompanyData;\n","import React, { useState } from \"react\";\nimport { JoinMrGen } from \"../common/JoinMrGen\";\nimport CompanyData from \"./CompanyData\";\nimport { EmailConfirmed } from \"../common/EmailConfirmed\";\nimport { CompanyCard } from \"../../common/CompanyCard\";\nimport { UserType } from \"../../../data/enums\";\nimport logo from \"../../../assets/logo.png\";\n\n//1. Querés ser parte?\n//2. Datos empresa\n//3. Correo enviado\n\nfunction CompanySignup() {\n const [activeStep, setActiveStep] = useState(0);\n\n if (activeStep === 0) {\n return (\n \n );\n } else {\n return (\n
\n
\n \"logo\"\n
\n {activeStep === 1 ? (\n \n ) : null}\n {activeStep === 2 ? (\n \n ) : null}\n
\n
\n
\n \"logo\"\n {/* {activeStep != 2 &&\n \n } */}\n
\n
\n );\n }\n}\n\nexport default CompanySignup;\n","import React, { useState, useEffect } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { UserSignup } from \"./UserSignup\";\nimport { NutritionistSignup } from \"./NutritionistSignup\";\nimport { CompanySignup } from \"./CompanySignup\";\nimport { UserType } from \"../../data/enums\";\n\nfunction parseQueryString(queryString?: string): any {\n if (!queryString) {\n queryString = window.location.search.substring(1);\n }\n\n const params: any = {};\n\n const queries = queryString.split(\"&\");\n\n queries.forEach((indexQuery: string) => {\n const indexPair = indexQuery.split(\"=\");\n\n const queryKey = decodeURIComponent(indexPair[0]);\n const queryValue = decodeURIComponent(indexPair.length > 1 ? indexPair[1] : \"\");\n\n params[queryKey] = queryValue;\n });\n\n return params;\n}\n\nfunction Signup({ history }: RouteComponentProps) {\n const [userType, setUserType] = useState(0);\n\n useEffect(() => {\n if (userType === 0) {\n let search = window.location.search;\n let vars = parseQueryString(search.substring(1, search.length));\n\n setUserType(Number(vars.user));\n }\n }, [userType, setUserType]);\n\n const isFinalUser = userType === UserType.EndUser;\n const isNutritionist = userType === UserType.Nutritionist;\n const isCompany = userType === UserType.Company;\n\n if (isFinalUser) {\n return ;\n } else if (isNutritionist) {\n return ;\n } else if (isCompany) {\n return \n }\n else\n return
;\n}\n\nexport default withRouter(Signup);\n","import React, {lazy, Suspense} from 'react';\nimport {withRouter, RouteComponentProps} from 'react-router-dom';\n/* import {LandingHeader} from '../LandingHeader';\nimport {LandingCover} from '../LandingCover';\nimport {LandingIntro} from '../LandingIntro';\nimport {LandingAboutUs} from '../LandingAboutUs';\nimport {LandingHowItWorks} from '../LandingHowItWorks';\nimport {LandingResults} from '../LandingResults';\nimport {LandingBuy} from '../LandingBuy';\nimport {LandingNutritionists} from '../LandingNutritionists';\nimport {LandingBusinesses} from '../LandingBusinesses';\nimport {LandingCAT} from '../LandingCAT';\nimport {LandingFooter} from '../LandingFooter'; */\nimport { LoadingAnimation } from '../../animations/LoadingAnimation';\n\nconst LandingHeader = React.lazy(() =>\n import('../LandingHeader').then((module) => ({ default: module.LandingHeader }))\n)\nconst LandingCover = React.lazy(() =>\n import('../LandingCover').then((module) => ({ default: module.LandingCover }))\n)\nconst LandingIntro = React.lazy(() =>\n import('../LandingIntro').then((module) => ({ default: module.LandingIntro }))\n)\nconst LandingHowItWorks = React.lazy(() =>\n import('../LandingHowItWorks').then((module) => ({ default: module.LandingHowItWorks }))\n)\nconst LandingResults = React.lazy(() =>\n import('../LandingResults').then((module) => ({ default: module.LandingResults }))\n)\nconst LandingBuy = React.lazy(() =>\n import('../LandingBuy').then((module) => ({ default: module.LandingBuy }))\n)\nconst LandingFAQ = React.lazy(() =>\n import('../LandingFAQ').then((module) => ({ default: module.LandingFAQ }))\n)\nconst LandingNutritionists = React.lazy(() =>\n import('../LandingNutritionists').then((module) => ({ default: module.LandingNutritionists }))\n)\nconst LandingBusinesses = React.lazy(() =>\n import('../LandingBusinesses').then((module) => ({ default: module.LandingBusinesses }))\n)\nconst LandingCAT = React.lazy(() =>\n import('../LandingCAT').then((module) => ({ default: module.LandingCAT }))\n)\nconst LandingFooter = React.lazy(() =>\n import('../LandingFooter').then((module) => ({ default: module.LandingFooter }))\n)\n\ninterface FAQData {\n pregunta: string;\n respuesta: string;\n}\n\nconst datosFAQ: FAQData[] = [\n {\n pregunta: '1. ¿Cómo funciona el proceso de prueba de ADN?',\n respuesta: 'El proceso de prueba de ADN es muy simple. Una vez que realizas la compra en la página, te enviamos un kit de toma de muestra de saliva a la dirección que proporciones en el paso \"Coordinación de kit\". El kit incluye 3 hisopos para la toma de muestra de saliva que debes recolectar. Una vez la tengas lista debes avanzar al paso \"Coordinación de retiro\" para devolver la muestra a las oficinas de Mr. GEN para ser analizadas por el laboratorio. Una vez recibida la muestra por el laboratorio se deberá esperar un máximo de 45 días hábiles para recibir los resultados directamente en la página web de Mr. GEN.'\n },\n {\n pregunta: '2. ¿Qué tipo de información se obtiene a partir de los resultados del análisis de ADN?',\n respuesta: 'A partir del análisis de ADN, podemos brindarte información sobre cómo asimilas determinados nutrientes, y los categorizamos en forma de semáforo (verde - bajo, amarillo - moderado, rojo - alto). Además, te brindaremos una lista de casi 300 alimentos también categorizados con alimentos que debes preferir, moderar o evitar.'\n },\n {\n pregunta: '3. ¿Qué debo tener en cuenta antes de la toma de muestra de saliva',\n respuesta: 'Al tratarse de una prueba genética, no es necesario que la realices en ayunas. Eso sí, no debes comer, beber, fumar, masticar chicle o lavarte los dientes en las 2 horas previas a la toma de la muestra.'\n },\n {\n pregunta: '4. ¿Se necesita una consulta con un nutricionista después de recibir los resultados?',\n respuesta: 'No es obligatorio, pero se recomienda que el cliente hable con un nutricionista después de recibir los resultados. Nuestros resultados proporcionan una base sólida para tomar decisiones informadas sobre la dieta, pero un nutricionista puede proporcionar recomendaciones personalizadas y asesoramiento para optimizar la salud y el bienestar del cliente.'\n },\n {\n pregunta: '5. ¿Ofrecen algún otro servicio además de los resultados del análisis de ADN?',\n respuesta: 'Sí, además de los resultados del análisis de ADN, ofrecemos servicios adicionales, como consultas con nutricionistas y servicios de viandas a domicilio de comida saludable y rica. Estos servicios se pueden contratar por separado.'\n },\n {\n pregunta: '6. ¿Hay alguna restricción de edad para realizar la prueba de ADN?',\n respuesta: 'Sí, en Uruguay, se requiere que las personas tengan al menos 18 años de edad para realizar una prueba de ADN sin la supervisión de un adulto responsable.'\n },\n {\n pregunta: '7. ¿Los resultados son confidenciales?',\n respuesta: 'Sí, los resultados son confidenciales. Nos tomamos muy en serio la privacidad y la protección de datos personales de nuestros clientes. Por lo tanto, los resultados solo se comparten con el cliente y no se divulgan a terceros sin el consentimiento del mismo.'\n },\n {\n pregunta: '8. ¿Se puede realizar la prueba de ADN si estoy embarazada o lactando?',\n respuesta: 'No recomendamos que las mujeres embarazadas o lactantes realicen nuestra prueba de ADN sin antes consultar a su médico. Aunque nuestra prueba de ADN no tiene ningún riesgo conocido para la salud, es importante tener en cuenta que la información genética que proporcionamos puede no ser relevante durante el embarazo y la lactancia.'\n },\n {\n pregunta: '9. ¿Qué sucede si mis resultados son incorrectos o no son claros?',\n respuesta: 'Si por algún motivo sus resultados no son claros, por favor contáctenos a través de nuestro sitio web o correo electrónico info@mistergen.com para validar los mismos.'\n },\n {\n pregunta: '10. ¿Por qué algunas recomendaciones en el área de resultados se contradicen?',\n respuesta: 'Los resultados y sus recomendaciones son tomados de forma independiente y por eso se pueden contradecir. En cambio para obtener la \"última palabra\" respecto a un alimento puede acceder a las recomendaciones de alimentos, allí todos los resultados son tomados en cuenta, relacionados y por cada alimento se llega a un único resultado de si puede ser o no conveniente que lo consuma.'\n },\n {\n pregunta: '11. ¿Qué medidas toman para garantizar la calidad y precisión de sus resultados?',\n respuesta: 'Nos tomamos muy en serio la calidad y precisión de nuestros resultados. Trabajamos con laboratorios altamente calificados y con experiencia en la realización de pruebas de ADN y seguimos rigurosos procedimientos de control de calidad para garantizar que los resultados sean precisos y confiables. Además, nuestros resultados se basan en la última investigación científica y están respaldados por expertos en nutrición y genética.'\n },\n {\n pregunta: '12. ¿Puedo compartir mis resultados con mi médico o nutricionista?',\n respuesta: 'Sí, puede compartir sus resultados con su médico o nutricionista si lo desea. De hecho, recomendamos que comparta sus resultados con un profesional de la salud o un nutricionista para obtener asesoramiento personalizado y garantizar que esté siguiendo una dieta saludable y equilibrada.'\n },\n {\n pregunta: '13. ¿Cómo se realizan los pagos y cuáles son las opciones de pago disponibles?',\n respuesta: 'Puedes realizar la compra del kit utilizando tarjetas de débito o crédito VISA, OCA y MASTERCARD en pagos de 1, 3 o 6 cuotas.'\n },\n {\n pregunta: '14. ¿Puedo cancelar mi pedido o solicitar un reembolso?',\n respuesta: 'Sí, los clientes pueden cancelar su pedido o solicitar un reembolso antes de que se realice la prueba de ADN. Una vez que se ha procesado la muestra de saliva ya no se puede realizar un reembolso. Nos puede contactar a info@mistergen.com le responderemos en el horario de 10 a 17 horas de Lunes a Viernes.'\n },\n {\n pregunta: '15. ¿Cuánto tiempo tarda en llegar mi kit de prueba de ADN?',\n respuesta: 'El kit de ADN se enviará en el día y rango horario pactado al momento de la coordinación de entrega y retiro. Para esto hay dos franjas horarias (10 a 14 horas o 14 a 22 horas). En caso de requerir otro horario debe seleccionar retiro en oficinas de Mr. GEN en el paso \"Coordinación de entrega\" y nos comunicaremos para coordinar la entrega por otros medios.'\n },\n {\n pregunta: '16. ¿Qué sucede si mi muestra de saliva no es suficiente para la prueba?',\n respuesta: 'En algunos casos, puede que no haya suficiente saliva en la muestra para realizar la prueba de ADN. Si esto ocurre, nos pondremos en contacto, para solicitar una nueva muestra de saliva. Si no podemos obtener una muestra adecuada después de varios intentos, te ofreceremos un reembolso completo.'\n },\n {\n pregunta: '17. ¿Cómo puedo acceder a mis resultados?',\n respuesta: `Una vez recibida la muestra de saliva en nuestras oficinas, la aplicación cambiará de estado automáticamente a \"Esperando Resultados\". \n El informe con los resultados de la prueba estará disponibles desde la aplicación web de Mr. Gen en un plazo máximo de 45 días hábiles.`\n },\n {\n pregunta: '18. ¿Tengo predisposición a desarrollar enfermedades o transmitirlas a mis hijos?',\n respuesta: 'La prueba de Mr. Gen no detecta este tipo de predisposiciones, está enfocado en las variaciones de nuestro ADN que impactan sobre nuestra alimentación, nutrición y deporte.'\n },\n {\n pregunta: '19. ¿Cómo puedo contactar con el equipo Mr. Gen?',\n respuesta: `Puedes contactarnos por mail a través de info@mistergen.com, te responderemos en un plazo máximo de 48 hs.\n También puedes enviarnos un Whatsapp al +598 99 487 437. Nuestro horario de atención es de lunes a viernes de 10 a 17 hs (Montevideo (UTC-3).\n `\n }\n];\n\nfunction Landing({history, location}: RouteComponentProps) {\n const redirectTo = (path: string): void => {\n history.push(path);\n };\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nexport default withRouter(Landing);\n","import React from \"react\";\nimport { Lottie } from \"@crello/react-lottie\";\nimport errorAnimation from \"../../../assets/error.json\";\n\ninterface ErrorAnimationProps {\n message: string;\n}\n\nfunction ErrorAnimation({ message }: ErrorAnimationProps) {\n return (\n
\n \n

{message}

\n
\n );\n}\n\nexport default ErrorAnimation;\n","import React, {useEffect} from 'react';\nimport {withRouter, RouteComponentProps} from 'react-router-dom';\nimport logo from '../../../assets/logo.png';\nimport {Button} from '@material-ui/core';\nimport {RootState} from '../../../store/config/types';\nimport {ThunkDispatch} from 'redux-thunk';\nimport {AppActions} from '../../../store/config/ActionTypes';\nimport {confirmRegister} from '../../../store/auth/actionCreators';\nimport {connect, ConnectedProps} from 'react-redux';\nimport {LoadingAnimation} from '../../animations/LoadingAnimation';\nimport {ErrorAnimation} from '../../animations/ErrorAnimation';\nimport qs from 'query-string';\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch\n) => ({\n confirmRegister: (token: string, id: string) =>\n dispatch(confirmRegister(token, id)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & RouteComponentProps;\n\nexport function EmailVerified({auth, confirmRegister, history}: PropsType) {\n const redirectTo = (path: string): void => {\n history.push(path);\n };\n\n useEffect(() => {\n if (\n !auth.confirmingRegister &&\n !auth.confirmRegisterSuccess &&\n auth.confirmRegisterErrorMessage === ''\n ) {\n const search = window.location.search;\n const queryParams = qs.parse(search, {decode: false});\n\n const accountId = queryParams.id.toString();\n let token = queryParams.token.toString();\n\n confirmRegister(token, accountId);\n }\n }, [\n auth.confirmingRegister,\n auth.confirmRegisterSuccess,\n auth.confirmRegisterErrorMessage,\n confirmRegister,\n ]);\n\n const verifyingUser = (\n
\n \n

Estamos verificando tu correo electrónico.

\n
\n );\n\n const userVerified = (\n
\n

Felicitaciones, quedaste registrado en Mr. Gen

\n redirectTo('/login')}\n disableElevation\n >\n Ir a login\n \n
\n );\n\n const verificationFailed = (\n
\n \n
\n );\n\n console.log(auth);\n\n return (\n
\n
\n logo\n {auth.confirmRegisterSuccess\n ? userVerified\n : auth.confirmRegisterErrorMessage !== ''\n ? verificationFailed\n : verifyingUser}\n
\n
\n logo\n
\n
\n );\n}\n\nexport default connector(withRouter(EmailVerified));\n","import React, { useState } from \"react\";\nimport {\n Dialog,\n DialogTitle,\n makeStyles,\n Theme,\n createStyles,\n IconButton,\n DialogContent,\n Button,\n} from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport calendar from \"../../../../assets/calendar.png\";\nimport * as styleVars from \"../../../../styles/_variables.scss\";\nimport DayPicker from \"react-day-picker\";\nimport \"react-day-picker/lib/style.css\";\nimport moment from \"moment\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"16px 0 0 0\",\n },\n image: {\n height: 48,\n width: \"auto\",\n [theme.breakpoints.down(\"xs\")]: {\n height: 36,\n },\n },\n titleText: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n fontSize: 24,\n lineHeight: \"22px\",\n color: styleVars.notBlack,\n [theme.breakpoints.down(\"xs\")]: {\n fontSize: 16,\n },\n },\n step: {\n color: styleVars.grey,\n fontSize: 16,\n marginBottom: 4,\n },\n closeIcon: {\n boxShadow: \"0 2px 24px 0 rgba(0, 0, 0, 0.15)\",\n backgroundColor: styleVars.white,\n },\n content: {\n padding: \"16px 32px\",\n },\n calendar: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n timesheet: {\n width: 200,\n margin: \"0 auto\",\n },\n option: {\n cursor: \"pointer\",\n userSelect: \"none\",\n fontSize: 16,\n color: styleVars.grey,\n padding: \"8px 0\",\n margin: \"12px 0\",\n textAlign: \"center\",\n border: `1px solid ${styleVars.grey}`,\n borderRadius: 6,\n WebkitTransition: \"all 0.3s ease-in-out\",\n transition: \"all 0.3s ease-in-out\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n selectedOption: {\n color: styleVars.white,\n backgroundColor: styleVars.primary,\n },\n checkIcon: {\n marginLeft: 8,\n fontSize: 12,\n },\n actions: {\n padding: \"16px 0\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n\n },\n button: {\n fontSize: 18,\n },\n })\n);\n\ninterface DateDialogProps {\n open: boolean;\n setOpen: (value: boolean) => void;\n onSelectDate: (day: Date, timeId: number) => void;\n}\n\ninterface Values {\n street: string;\n doorNumber: string;\n apartmentNumber: string;\n corner: string;\n}\n\nconst timeOptions = [\"8am - 2pm\", \"2pm - 10pm\"];\n\nfunction DateDialog({ open, setOpen, onSelectDate }: DateDialogProps) {\n const classes = useStyles();\n\n const [step, setStep] = useState(0);\n const [selectedTime, setSelectedTime] = useState(99);\n const [selectedDay, setSelectedDay] = useState();\n\n function handleClick(day) {\n setSelectedDay(day);\n }\n\n function selectDatetime() {\n onSelectDate(selectedDay, selectedTime);\n setOpen(false);\n }\n\n function disableDays(day) {\n const momentDay = moment(day);\n return (\n momentDay.isBefore(moment().add(48, \"hours\")) ||\n momentDay.day() === 0 ||\n momentDay.day() === 6\n );\n }\n\n return (\n setOpen(false)} fullWidth maxWidth=\"sm\">\n \n
\n \n
\n {`Paso ${step + 1}`}\n {`Seleccionar ${step === 0 ? \"día\" : \"horario\"}`}\n
\n setOpen(false)}\n >\n \n \n
\n
\n \n {step === 0 ? (\n
\n \n
\n ) : (\n
\n {timeOptions.map((t, index) => {\n const isSelected = selectedTime === index;\n return (\n setSelectedTime(index)}\n >\n {t}\n {isSelected ? (\n \n ) : null}\n
\n );\n })}\n \n )}\n
\n {step === 0 ? null : (\n setStep(0)}\n >\n Volver\n \n )}\n {\n if (step === 0) {\n setStep(1);\n } else {\n selectDatetime();\n setStep(0);\n setSelectedTime(99);\n setSelectedDay(undefined);\n }\n }}\n >\n {step === 0 ? \"Siguiente\" : \"Finalizar\"}\n \n
\n
\n
\n );\n}\n\nexport default DateDialog;\n","import React, { useEffect, useState } from \"react\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport calendar from \"../../../../assets/calendar.png\";\nimport DateDialog from \"./DateDialog\";\nimport moment from \"moment\";\nimport \"moment/locale/es\";\nimport { Button } from \"@material-ui/core\";\nimport { googleCalendarEventUrl } from \"google-calendar-url\";\n\nconst timeOptions = [\"8am - 2pm\", \"2pm - 10pm\"];\n\nfunction generateDates(): SelectableDate[] {\n const now = moment();\n now.locale(\"es\");\n const next48hs = now.add(60, \"hour\");\n const dates = [];\n for (let i = 0; i < 3; i++) {\n if (next48hs.day() === 0) {\n next48hs.add(1, \"day\");\n }\n if (next48hs.day() === 6) {\n next48hs.add(2, \"day\");\n }\n if (next48hs.hour() > 14) {\n next48hs.add(8, \"hour\");\n }\n const nextDateFormatted = next48hs.locale(false).format(\"dddd D [de] MMMM\");\n dates.push({\n label: `${nextDateFormatted} - ${timeOptions[0]}`,\n id: 0,\n date: next48hs.clone(),\n });\n dates.push({\n label: `${nextDateFormatted} - ${timeOptions[1]}`,\n id: 1,\n date: next48hs.clone(),\n });\n next48hs.add(1, \"day\");\n }\n return dates;\n}\n\nexport interface SelectableDate {\n id: number;\n label: string;\n date: string;\n}\n\ninterface DateSelectorProps {\n selected: SelectableDate;\n setSelected: (value: SelectableDate) => void;\n shouldContact: boolean;\n coordinated: boolean;\n}\n\nfunction DateSelector({\n selected,\n setSelected,\n coordinated,\n shouldContact,\n}: DateSelectorProps) {\n const [open, setOpen] = useState(false);\n const [dates, setDates] = useState([]);\n const [internalSelected, setInternalSelected] = useState(-1);\n const [url, setUrl] = useState(\"\");\n\n useEffect(() => {\n setDates(generateDates());\n }, []);\n\n function selectCustom(date, time) {\n setInternalSelected(-1);\n setSelected({ id: time, label: `${date} - ${time}`, date: date });\n }\n\n function getUrl() {\n if (selected) {\n const url = googleCalendarEventUrl({\n start: moment(selected.date).format('YYYYMMDD'),\n end: moment(selected.date).format('YYYYMMDD'),\n title: \"Envio de kit Mr.Gen\",\n });\n setUrl(url);\n }\n\n }\n\n useEffect(() => {\n getUrl();\n }, [selected]);\n\n return (\n
\n \"date\"\n
\n

Seleccionar día y horario

\n\n {!coordinated ? (\n
\n
\n {shouldContact ? (\n
\n

Serás contactado a la brevedad para coordinar el envío

\n
\n ) : (\n dates.map((d: SelectableDate, ix) => {\n return (\n
\n {\n setInternalSelected(ix);\n setSelected(d);\n }}\n >\n {d.label}\n {internalSelected === ix ? (\n \n ) : null}\n
\n
\n );\n })\n )}\n
\n
\n No puedes ninguno de estos días?\n setOpen(true)}>\n Seleccionar día y horario específico\n \n
\n
\n ) : (\n
\n \n {moment(selected.date).format(\"LL\")} - {timeOptions[selected.id]}\n \n setOpen(true)}>\n Editar\n \n window.open(url)}\n >\n Agregar a mi Calendar\n \n
\n )}\n
\n \n \n );\n}\n\nexport default DateSelector;\n","import React, { ChangeEvent } from \"react\";\nimport { FormControl, InputLabel, MenuItem, Select, makeStyles } from \"@material-ui/core\";\nimport { FieldProps } from \"formik\";\n\nconst useSelectStyles = makeStyles({\n root: {\n width: \"100%\",\n },\n inputRoot: {\n padding: \"18px\",\n },\n input: {\n top: 12,\n left: 18,\n },\n select: {\n \"&:focus\": {\n backgroundColor: \"transparent\",\n },\n },\n});\n\ninterface Option {\n id: string;\n value: string;\n}\n\ninterface SelectProps {\n label: string;\n value: string;\n options: Option[];\n setValue(value: string): void;\n}\n\ntype FormSelectProps = FieldProps & React.HTMLProps & SelectProps;\n\nfunction FormSelect({ field, form, label, value, setValue, options, ...props }: FormSelectProps) {\n const classes = useSelectStyles();\n\n const onSelectChange = (event: ChangeEvent<{ name?: string | undefined; value: unknown }>): void => {\n form.setFieldValue(field.name, event.target.value);\n };\n\n return (\n \n {label}\n o.id === field.value)?.id : 0}\n onChange={onSelectChange}\n >\n {options.map((option, index) => (\n \n {option.value}\n \n ))}\n \n \n );\n}\n\nexport default FormSelect;\n","export default [\r\n { id: 0, value: \"Montevideo\" },\r\n { id: 1, value: \"Artigas\" },\r\n { id: 2, value: \"Canelones\" },\r\n { id: 3, value: \"Cerro Largo\" },\r\n { id: 4, value: \"Colonia\" },\r\n { id: 5, value: \"Durazno\" },\r\n { id: 6, value: \"Flores\" },\r\n { id: 7, value: \"Florida\" },\r\n { id: 8, value: \"Lavalleja\" },\r\n { id: 9, value: \"Maldonado\" },\r\n { id: 10, value: \"Paysandú\" },\r\n { id: 11, value: \"Río Negro\" },\r\n { id: 12, value: \"Rivera\" },\r\n { id: 13, value: \"Rocha\" },\r\n { id: 14, value: \"Salto\" },\r\n { id: 15, value: \"San José\" },\r\n { id: 16, value: \"Soriano\" },\r\n { id: 17, value: \"Tacuarembó\" },\r\n { id: 18, value: \"Treinta y Tres\" },\r\n ];\r\n ","import React from \"react\";\nimport {\n Button,\n Dialog,\n DialogTitle,\n IconButton,\n makeStyles,\n Theme,\n createStyles,\n DialogContent,\n} from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport location from \"../../../../assets/location.png\";\nimport * as styleVars from \"../../../../styles/_variables.scss\";\nimport { Formik, Form, Field, FormikHelpers } from \"formik\";\nimport { FormTextField } from \"../../../common/forms/FormTextField\";\nimport { FormSelect } from \"../../../common/forms/FormSelect\";\nimport schemas from \"../../../../data/schemas\";\nimport states from \"../../../../utils/states\";\nimport { Address } from \"./types\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"16px 0 0 0\",\n },\n image: {\n height: 48,\n width: \"auto\",\n [theme.breakpoints.down(\"xs\")]: {\n height: 36,\n },\n },\n titleText: {\n fontSize: 24,\n [theme.breakpoints.down(\"xs\")]: {\n fontSize: 16,\n },\n },\n closeIcon: {\n boxShadow: \"0 2px 24px 0 rgba(0, 0, 0, 0.15)\",\n backgroundColor: styleVars.white,\n },\n content: {\n margin: \"0 auto\",\n padding: 0,\n width: 400,\n overflow: 'hidden',\n [theme.breakpoints.down(\"xs\")]: {\n padding: 0,\n width: \"80%\",\n overflow: 'scroll'\n },\n },\n actions: {\n padding: \"32px 16px\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n button: {\n fontSize: 18,\n },\n })\n);\n\ninterface AddressDialogProps {\n open: boolean;\n setOpen: (value: boolean) => void;\n onSubmit: (value: Address) => void;\n}\n\n\nfunction AddressDialog({ open, setOpen, onSubmit }: AddressDialogProps) {\n const classes = useStyles();\n\n const submit = (values: Address, actions: FormikHelpers
) => {\n console.log(values);\n console.log(actions);\n onSubmit(values)\n setOpen(false);\n };\n\n return (\n setOpen(false)} fullWidth maxWidth=\"sm\">\n \n
\n \"location\"\n Agregar dirección\n setOpen(false)}\n >\n \n \n
\n
\n \n \n
\n \n \n \n \n \n
\n \n Agregar\n \n
\n \n \n
\n
\n );\n}\n\nexport default AddressDialog;\n","import React, { useState } from \"react\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport { Button } from \"@material-ui/core\";\nimport location from \"../../../../assets/location.png\";\nimport AddressDialog from \"./AddressDialog\";\nimport states from \"../../../../utils/states\";\nimport { Address } from \"./types\";\n\ninterface AddressSelectorProps {\n address?: Address;\n setAddress: (value: Address) => void;\n coordinated: boolean;\n}\n\nfunction AddressSelector({\n address,\n setAddress,\n coordinated,\n}: AddressSelectorProps) {\n const [open, setOpen] = useState(false);\n\n function createAddress(addressValues) {\n setAddress({...addressValues, new: true});\n }\n\n return (\n
\n \"location\"\n
\n

Dirección

\n {!coordinated ? (\n
\n
\n

\n {address\n ? `${states[address.state].value} - ${address.street} ${\n address.doorNumber\n }`\n : null}\n {/* {addresses.map(\n (a: { state: string; street: string; doorNumber: number }) => {\n return (\n

\n setSelected(1)}\n >\n {true ? : null}\n
\n
\n );\n }\n )} */}\n

\n
\n setOpen(true)}\n >\n \n {address ? \"Editar\" : \"Agregar\"} Dirección\n \n
\n
\n
\n ) : (\n
\n {states[address.state].value} - {address.street}  \n {address.doorNumber}\n setOpen(true)}>\n Editar\n \n
\n )}\n
\n \n \n );\n}\n\nexport default AddressSelector;\n","import React, {useState} from 'react';\nimport {Paper, Button} from '@material-ui/core';\nimport {DateSelector} from './DateSelector';\nimport {AddressSelector} from './AddressSelector';\nimport {Address} from './AddressSelector/types';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport {SelectableDate} from './DateSelector/DateSelector';\n\ninterface Props {\n activeStep: number;\n setActiveStep: React.Dispatch>;\n date: SelectableDate;\n setDate: React.Dispatch>;\n address?: Address;\n setAddress: React.Dispatch>;\n submitKitDistribution: () => void;\n name: string;\n type: CoordinationType;\n}\n\nexport enum CoordinationType {\n DELIVERY,\n PICKUP,\n}\n\nfunction KitCoordination({\n activeStep,\n setActiveStep,\n date,\n setDate,\n address,\n setAddress,\n name,\n submitKitDistribution,\n type,\n}: Props) {\n const [coordinated, setCoordinated] = useState(false);\n\n return (\n
\n \n \n

Hola {name}

\n

\n {type === CoordinationType.DELIVERY\n ? `Debes coordinar un día y horario para que nuestro equipo entregue el kit de toma de muestra en tu domicilio`\n : 'Debes coordinar un día y horario para que nuestro equipo retire el kit de toma de muestra en tu domicilio'}\n

\n
\n
\n \n\n {address?.state === 0 ? (\n \n ) : null}\n {address && address.state !== 0 ? (\n
\n \n \n Para su dirección no hay{' '}\n {type === CoordinationType.DELIVERY ? 'envíos' : 'retiros'}{' '}\n coordinados automáticamente. Posteriormente a la confirmación de este paso recibirá una\n llamada del equipo de Mr. GEN para coordinar el {type === CoordinationType.DELIVERY ? 'envío' : 'retiro'} del kit.\n \n
\n ) : null}\n
\n
\n
\n {\n if (coordinated) {\n setCoordinated(false);\n } else {\n setActiveStep(activeStep - 1);\n }\n }}\n color='primary'\n disableElevation\n >\n Anterior\n \n {!coordinated ? (\n {\n setCoordinated(true);\n }}\n >\n Siguiente\n \n ) : (\n {\n submitKitDistribution();\n }}\n >\n Confirmar\n \n )}\n
\n
\n );\n}\n\nexport default KitCoordination;\n","import React from \"react\";\r\nimport { Paper, Button } from \"@material-ui/core\";\r\nimport { SelectableDate } from \"./DateSelector/DateSelector\";\r\nimport moment from \"moment\";\r\nimport { Analysis } from \"../../../store/analyses/types\";\r\nimport tomaMuestraImage from \"../../../assets/toma-muestra.png\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\ninterface Props {\r\n kitDeliveryInfo: Analysis;\r\n date: SelectableDate;\r\n name: string;\r\n activeStep: number;\r\n setActiveStep: React.Dispatch>;\r\n}\r\n\r\nfunction KitConfirmation({\r\n kitDeliveryInfo,\r\n name,\r\n activeStep,\r\n setActiveStep,\r\n}: Props) {\r\n console.log(kitDeliveryInfo);\r\n const isDelivery = kitDeliveryInfo?.returnDistribution\r\n ? kitDeliveryInfo?.returnDistribution?.type == 0\r\n : kitDeliveryInfo?.pickupDistribution?.type == 0;\r\n const isReturn = !!kitDeliveryInfo?.returnDistribution;\r\n\r\n const history = useHistory();\r\n const [message, setMessage] = useState(\"\");\r\n\r\n useEffect(() => {\r\n const distribution = kitDeliveryInfo?.returnDistribution\r\n ? kitDeliveryInfo?.returnDistribution\r\n : kitDeliveryInfo?.pickupDistribution;\r\n console.log(\"Distribution\");\r\n console.log(distribution);\r\n const kitDistribution = kitDeliveryInfo?.returnDistribution\r\n ? kitDeliveryInfo?.returnKitDistribution\r\n : kitDeliveryInfo?.pickupKitDistribution;\r\n console.log(\"KitDistribution\");\r\n console.log(kitDistribution);\r\n \r\n function generateMessage(distribution,kitDistribution) {\r\n if(!kitDistribution) {\r\n return 'Cargando información del kit...';\r\n }\r\n\r\n if (!isDelivery) {\r\n return `Puedes pasar a ${\r\n isReturn ? \"dejar\" : \"retirar\"\r\n } tu kit en las oficinas de Mr. Gen de Lunes a Viernes de 10 a 17 horas.`;\r\n }\r\n if (\r\n distribution &&\r\n kitDeliveryInfo?.created &&\r\n distribution.address.department == \"Montevideo\"\r\n ) {\r\n \r\n const date = kitDistribution?.date;\r\n return `Listo! El ${moment(date).format(\"dddd DD [de] MMMM\")} entre las ${\r\n kitDistribution?.schedule === 0 ? \"10am - 2pm\" : \"2pm - 10pm\"\r\n } ${!isReturn ? \"entregaremos tu kit de toma de muestra\" : \"retiraremos el sobre con la muestra\"}. `;\r\n } else {\r\n // If it's not from montevideo\r\n return \"A la brevedad el equipo de Mr.Gen se pondrá en contacto contigo.\";\r\n }\r\n \r\n }\r\n \r\n\r\n setMessage(generateMessage(distribution,kitDistribution));\r\n\r\n },[kitDeliveryInfo]);\r\n\r\n function getMessage() {\r\n \r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n

Hola {name}

\r\n

\r\n {kitDeliveryInfo?.status == 2\r\n ? \"¡Ahora solo queda esperar!\"\r\n : isDelivery\r\n ? `Listo! ${\r\n !isReturn ? \"Entregaremos\" : \"Retiraremos\"\r\n } el kit en tu dirección.\r\n ${\r\n !isReturn\r\n ? `A partir de que lo recibas podrás tomar tu muestra de saliva.\r\n Al finalizar avanza al siguiente paso para coordinar el retiro del sobre con la muestra.`\r\n : \"Ahora deberás esperar a que recibamos los resultados de tu análisis.\"\r\n }`\r\n : `Listo! puedes pasar a ${\r\n !isReturn ? \"retirar\" : \"entregar\"\r\n } tu kit por las oficinas de Mr. Gen de Lunes a Viernes de 10 a 17 horas.`}\r\n

\r\n
\r\n
\r\n

\r\n {kitDeliveryInfo?.status == 2\r\n ? \"Test en laboratorio\"\r\n : message}\r\n

\r\n {kitDeliveryInfo?.status == 2 ? (\r\n <>\r\n En un máximo de 45 días hábiles tendrás tus resultados disponibles.

\r\n Mientras tanto podés pedir platos ricos, sanos y nutritivos elaborados por chefs con experiencia.


\r\n
\r\n history.push('/platos-semanales')}\r\n >\r\n Platos semanales\r\n \r\n history.push('/consulta-nutricional')}\r\n >\r\n Consulta nutricional\r\n \r\n\r\n
\r\n \r\n \r\n ) : !isReturn ? (\r\n <>\r\n\r\n
\r\n

Al recibir el kit comienza completando tus datos y firma en el reverso del sobre de muestra.\r\n
Antes de realizar la prueba toma en cuenta las siguientes indicaciones:\r\n

\r\n
\r\n
\r\n
    \r\n
  • No lleves nada a la boca durante al menos 1 hora antes de la recolección. Por ejemplo, bebidas, cepillo de dientes, dulces, cigarrillos y otros similares.
  • \r\n
  • Con un hisopo, debes raspar vigorosamente el interior de la mejilla durante 1 a 2 minutos. Repite el mismo proceso con el segundo hisopo en el otro lado de la mejilla.
  • \r\n
  • Coloca los dos hisopos recogidos en el sobre de muestra. Deja secar unos minutos y sella el sobre.
  • \r\n
  • No exponer nunca el sobre a temperaturas extremas.
  • \r\n
\r\n
\r\n
\r\n \"Toma\r\n
\r\n \r\n
\r\n

Al finalizar, coloque el sobre de muestra dentro del sobre de retorno y haga click en \"siguiente\" para continuar al paso de retiro.

\r\n
\r\n \r\n

\r\n \r\n

\r\n \r\n ) : null}\r\n {!isReturn && kitDeliveryInfo.status != 2 ? (\r\n setActiveStep(activeStep + 1)}\r\n >\r\n Siguiente\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default KitConfirmation;\r\n\r\n/* \r\n

\r\n Puedes seguir los pasos del video para la toma de muestra de\r\n saliva\r\n

\r\n \r\n Enlace aquí\r\n \r\n

\r\n También puedes{\" \"}\r\n \r\n descargar aquí\r\n {\" \"}\r\n el PDF con información paso a paso de la toma de muestra de\r\n saliva.\r\n
\r\n
\r\n Cuando tengas tu muestra de saliva, ve al siguiente paso y\r\n retiraremos la muestra en tu dirección\r\n

\r\n*/","import React, { useState } from \"react\";\r\nimport {\r\n Paper,\r\n Button,\r\n FormControl,\r\n RadioGroup,\r\n FormControlLabel,\r\n Radio,\r\n} from \"@material-ui/core\";\r\n\r\ninterface Props {\r\n activeStep: number;\r\n setActiveStep: React.Dispatch>;\r\n setShippingType: React.Dispatch>;\r\n submitKitDistribution: () => void;\r\n name: string;\r\n isDelivery: boolean;\r\n}\r\n\r\nfunction ShippingSelection({\r\n activeStep,\r\n setActiveStep,\r\n setShippingType,\r\n name,\r\n submitKitDistribution,\r\n isDelivery,\r\n}: Props) {\r\n const [option, setOption] = useState(0);\r\n\r\n function onContinue() {\r\n setShippingType(option);\r\n if (option === 0) {\r\n setActiveStep(activeStep + 1);\r\n } else {\r\n submitKitDistribution();\r\n setActiveStep(isDelivery ? 2 : 5);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n

Hola {name}

\r\n

\r\n {isDelivery \r\n ? \"A partir de ahora puedes coordinar la entrega del kit de toma de muestra de saliva en tu dirección.\" \r\n : \"Ya tienes la muestra de saliva, a partir de ahora puedes coordinar el retiro del sobre en tu domicilio.\"}\r\n\r\n

\r\n
\r\n
\r\n \r\n {\r\n let value = Number(event.target.value);\r\n setOption(value);\r\n setShippingType(value);\r\n }}\r\n >\r\n }\r\n label={`${\r\n isDelivery ? \"Entrega\" : \"Retiro\"\r\n } a domicilio en todo el Uruguay`}\r\n />\r\n \r\n {/* DESCOMENTAR ESTO PARA TENER LA OPCION DE RETIRO DESPACHO EN OFICINA */}\r\n }\r\n label={`${\r\n isDelivery ? \"Retiro\" : \"Despacho\"\r\n } en la oficina de Mr.Gen (En Paraguay 1690. ${isDelivery ? \"Retirar sobre de Mr. GEN en recepción\" : \"Entregar sobre a nombre de Mr. GEN en recepción\"}. Disponible de 10 a 17 horas.)\r\n `}\r\n />\r\n
\r\n

\r\n \r\n Por consultas comunicate con nosotros vía WhatsApp al 099 436 487\r\n
\r\n Lunes a Viernes de 10hs a 17hs\r\n

\r\n Las entregas y retiros fuera de Montevideo son coordinadas por nuestro equipo de forma manual
y son enviados por empresas de mensajería o empresas de transporte.\r\n

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Siguiente\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ShippingSelection;\r\n/* Luis Lamas 3407 - Of. 103, Montevideo, CP 11300
*/","import {\n Analysis,\n AnalysisResult,\n CreateAnalysisRequest,\n Distribution,\n FoodsResponse,\n FoodsResult,\n KitDistribution,\n} from \"../store/analyses/types\";\nimport { httpGet, httpPost } from \"./base.service\";\nimport { endpoints } from \"./endpoints\";\n\nexport const analysesService = {\n createAnalysis,\n addDistribution,\n getDistributions,\n addKitDistribution,\n getKitDistribution,\n getAnalysesResults,\n getAnalysesFoods,\n getAnalysesResultsById,\n getAnalysesFoodsById,\n};\n\nasync function createAnalysis(\n createAnalysisRequest: CreateAnalysisRequest\n): Promise {\n //console.log(\"createAnalysisRequest\")\n //console.log(JSON.stringify(createAnalysisRequest));\n return await httpPost(\n `${endpoints[\"analyses\"]}`,\n createAnalysisRequest\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function addDistribution(\n newAddress: Distribution\n): Promise {\n return await httpPost(\n `${endpoints.analysesAddDistribution}`,\n newAddress\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function addKitDistribution(\n kitDistribution: KitDistribution\n): Promise {\n return await httpPost(\n `${endpoints.analysesAddKitDistribution}`,\n kitDistribution\n )\n .then((response) => {\n console.log(response);\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function getDistributions(): Promise {\n return await httpGet(`${endpoints.analysesGetDistribution}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n console.log(\"error\", error);\n throw new Error(error);\n });\n}\n\nasync function getAnalysesResults(): Promise {\n return await httpGet<{ nutrients: AnalysisResult[] }>(\n `${endpoints.analysesGetResults}`\n )\n .then((response) => {\n return response.parsedBody.nutrients;\n })\n .catch((error) => {\n console.log(\"error\", error);\n throw new Error(error);\n });\n}\n\nasync function getAnalysesResultsById(\n id: string\n ): Promise {\n return await httpGet<{ nutrients: AnalysisResult[] }>(\n `${endpoints.analysesGetResultsById}/${id}`\n )\n .then((response) => {\n return response.parsedBody.nutrients;\n })\n .catch((error) => {\n console.log(\"error\", error);\n throw new Error(error);\n });\n}\n\nasync function getAnalysesFoodsById(id: string): Promise {\n return await httpGet<{ foods: FoodsResult[] }>(\n `${endpoints.analysesGetFoodsById}/${id}`\n )\n .then((response) => {\n return assignIdToCategories(response.parsedBody.foods);\n })\n .catch((error) => {\n console.log(\"error\", error);\n throw new Error(error);\n });\n}\n\nasync function getAnalysesFoods(): Promise {\n return await httpGet<{ foods: FoodsResult[] }>(\n `${endpoints.analysesGetFoods}`\n )\n .then((response) => {\n return assignIdToCategories(response.parsedBody.foods);\n })\n .catch((error) => {\n console.log(\"error\", error);\n throw new Error(error);\n });\n}\n\nfunction assignIdToCategories(foods: FoodsResult[]) {\n const idDict = {};\n let index = 0;\n return {\n foods: foods.map((food) => {\n if (idDict[food.category] !== undefined) {\n food.categoryId = idDict[food.category];\n } else {\n idDict[food.category] = index;\n food.categoryId = index;\n index += 1;\n }\n return food;\n }),\n categories: Object.keys(idDict).reduce((accum, key) => {\n return { ...accum, [idDict[key]]: key };\n }, {}),\n };\n}\n\nasync function getKitDistribution(): Promise {\n return await httpGet(`${endpoints.analysesGet}`)\n .then((response) => {\n console.log(\"parsedbody\", response.parsedBody);\n const distributions = response.parsedBody.distributions;\n let pickupDistribution: Distribution;\n let returnDistribution: Distribution;\n let pickupKitDistribution;\n let returnKitDistribution;\n if (distributions.length == 2) {\n const are2Pickups = distributions\n .map((x) => !x.kitDistributions.length)\n .reduce((prev, accum) => prev && accum, true);\n const onePickupOneDelivery =\n distributions.filter((x) => x.type == 0).length == 1 &&\n distributions.filter((x) => x.type == 1).length == 1;\n\n if (are2Pickups) {\n pickupDistribution = distributions[0];\n returnDistribution = distributions[1];\n } else if (onePickupOneDelivery) {\n const distWithKit = distributions.find(\n (x) => x.kitDistributions.length > 0\n );\n\n if (distWithKit.kitDistributions[0].type == 1) {\n pickupDistribution = distWithKit;\n pickupKitDistribution = distWithKit.kitDistributions[0];\n returnDistribution = distributions.find(\n (d) => d.kitDistributions.length == 0\n );\n } else {\n returnDistribution = distWithKit;\n returnKitDistribution = distWithKit.kitDistributions[0];\n pickupDistribution = distributions.find(\n (d) => d.kitDistributions.length == 0\n );\n }\n } else {\n pickupDistribution = distributions.find(\n (x) => x.kitDistributions[0]?.type == 1\n );\n pickupKitDistribution = pickupDistribution.kitDistributions[0];\n returnDistribution = distributions.find(\n (x) => x.kitDistributions[0]?.type == 2\n )\n ? distributions.find((x) => x.kitDistributions[0]?.type == 2)\n : distributions.find((x) => x.kitDistributions.length == 0);\n returnKitDistribution = returnDistribution?.kitDistributions[0];\n }\n } else if (distributions.length == 1) {\n const dist = distributions[0];\n if (dist.kitDistributions.length == 1) {\n pickupDistribution = dist;\n pickupKitDistribution = pickupDistribution.kitDistributions[0];\n } else if (dist.kitDistributions.length == 2) {\n pickupDistribution = dist;\n returnDistribution = dist;\n pickupKitDistribution = pickupDistribution.kitDistributions.find(\n (x) => x.type == 1\n );\n returnKitDistribution = pickupDistribution.kitDistributions.find(\n (x) => x.type == 2\n );\n } else {\n pickupDistribution = dist;\n }\n }\n\n return {\n ...response.parsedBody,\n distributions,\n pickupDistribution,\n pickupKitDistribution,\n returnDistribution,\n returnKitDistribution,\n };\n })\n .catch((error) => {\n console.log(\"error\", error);\n throw new Error(error);\n });\n}\n","const roles = {\n business: 'Business',\n nutricionist: 'Nutritionist',\n user: 'Customer',\n}\n\nexport default roles;","import React, { useEffect, useState } from \"react\";\nimport { Step } from \"../../common/ArrowSteps/types\";\nimport { ArrowSteps } from \"../../common/ArrowSteps\";\nimport KitCoordination, { CoordinationType } from \"./KitCoordination\";\nimport KitConfirmation from \"./KitConfirmation\";\nimport KitPickup from \"./KitPickup\";\nimport TestResults from \"./TestResults\";\nimport ShippingSelection from \"./ShippingSelection\";\nimport {\n Distribution,\n Analysis,\n KitDistribution,\n Address,\n} from \"../../../store/analyses/types\";\nimport { analysesService } from \"../../../services/analyses.service\";\nimport states from \"../../../utils/states\";\nimport { Address as SelectableAddress } from \"./AddressSelector/types\";\nimport { SelectableDate } from \"./DateSelector/DateSelector\";\nimport moment from \"moment\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\nimport { useSelector } from \"react-redux\";\n\nimport { RootState } from \"../../../store/config/types\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { userAccount, userRole } from \"../../../store/auth/selector\";\nimport roles from \"../../../utils/roles\";\n\nconst steps: Step[] = [\n {\n presentTitle: \"Primer paso\",\n name: \"Forma de envío\",\n },\n {\n presentTitle: \"Segundo paso\",\n name: \"Coordinar Kit \",\n },\n {\n presentTitle: \"Tercer paso\",\n name: \"Confirmacion\",\n },\n {\n presentTitle: \"Cuarto paso\",\n name: \"Forma de retiro\",\n },\n {\n presentTitle: \"Quinto paso\",\n name: \"Coordinar Retiro\",\n },\n {\n presentTitle: \"Sexto paso\",\n name: \"Resultados\",\n },\n];\n\nenum ShippingType {\n DELIVERY,\n PICKUP,\n}\n\n// distribution type:\n// 0: delivery\n// 1: pickup\n\n// 1 distribution con 2 kit distribution: 2 envios a la misma address\n// 2 distributions, 1 con kit distribution y una sin: 1 envio montevideo y 1 pickup\n// 2 distributions sin kit distributions: 2 pickup\n\nfunction UserDashboard({ history }: RouteComponentProps) {\n const [activeStep, setActiveStep] = useState(0);\n const [distributionInfo, setDistributionInfo] = useState();\n const [isLoading, setIsLoading] = useState(false);\n\n const role = useSelector((state: RootState) => userRole(state));\n const isFinalUser = role === roles.user;\n\n const actualUser = useSelector((state: RootState) => userAccount(state));\n\n async function getKitDistribution() {\n try {\n setIsLoading(true);\n const res = await analysesService.getKitDistribution();\n setDistributionInfo(res);\n setIsLoading(false);\n return res;\n } catch {\n setDistributionInfo(undefined);\n }\n }\n useEffect(() => {\n getKitDistribution();\n }, []);\n\n useEffect(() => {\n if (distributionInfo?.status === 8) {\n history.push(\"/home\");\n }\n if(!distributionInfo){\n setActiveStep(0);\n return;\n }\n if (distributionInfo.returnDistribution || distributionInfo.status == 2 ) {\n setActiveStep(5);\n return;\n }\n if (distributionInfo.pickupDistribution) {\n setActiveStep(2);\n return;\n }\n }, [distributionInfo]);\n\n async function addDistribution(\n distribution: Distribution\n ): Promise {\n setIsLoading(true);\n await analysesService.addDistribution(distribution);\n const savedDistribution = await getKitDistribution();\n const returnDistribution = savedDistribution.distributions.find(\n (x) =>\n x.address?.department == distribution.address?.department &&\n x.address?.city == distribution.address?.city &&\n x.address?.apartmentNumber == distribution.address?.apartmentNumber &&\n x.address?.street == distribution.address?.street &&\n x.address?.doorNumber == distribution.address?.doorNumber\n );\n return returnDistribution;\n }\n\n async function saveKitAndDistribution(\n distribution,\n date,\n typeDelivery,\n nextStep\n ) {\n setIsLoading(true);\n try {\n let dist =\n distributionInfo?.distributions[\n distributionInfo.distributions.length - 1\n ];\n if (distribution.address?.new || !distribution.address || !dist) {\n dist = await addDistribution(distribution);\n }\n const addKitDistributionData: KitDistribution = {\n distributionId: dist.id,\n typeDelivery: typeDelivery,\n date: date ? moment(date.date).toJSON() : undefined,\n schedule: date ? (date.id as 0 | 1) : undefined,\n };\n await analysesService.addKitDistribution(addKitDistributionData);\n await getKitDistribution();\n setActiveStep(nextStep);\n } catch (e){\n console.log(e);\n } finally {\n setTimeout(() => {\n setIsLoading(false);\n }, 1000);\n }\n }\n\n async function submitKitDistribution(\n date: SelectableDate,\n shippingType: ShippingType,\n address: SelectableAddress & { new: boolean },\n typeDelivery: 1 | 2,\n nextStep: number\n ) {\n const distribution: Distribution = {\n type: shippingType,\n };\n\n if (shippingType === ShippingType.PICKUP) {\n saveKitAndDistribution(distribution, date, typeDelivery, nextStep);\n } else {\n distribution.address = {\n street: address?.street,\n city: \"\",\n doorNumber: address?.doorNumber,\n streetCorner: address?.corner,\n apartmentNumber: address?.apartmentNumber,\n department: states[address?.state].value,\n new: address?.new,\n };\n saveKitAndDistribution(distribution, date, typeDelivery, nextStep);\n }\n }\n \n if (isLoading) { \n return (\n
\n \n
\n )\n } else {\n\n return (\n
\n \n {isLoading ? (\n
\n \n
\n ) : (\n <>\n {activeStep < 3 ? (\n \n ) : null}\n {activeStep >= 3 ? (\n \n ) : null}\n \n )}\n
\n )\n }\n}\n\nfunction PickupFlow({\n activeStep,\n setActiveStep,\n distributionInfo,\n submitKitDistribution,\n}: {\n distributionInfo: Analysis;\n activeStep: any;\n setActiveStep: any;\n submitKitDistribution: any;\n}) {\n const [date, setDate] = useState();\n const [address, setAddress] = useState();\n const account = useSelector((s: RootState) => s.auth.account);\n const [isLoading, setIsLoading] = useState(false);\n const [shippingType, setShippingType] = useState();\n\n console.log(\"activestep\", activeStep);\n\n useEffect(() => {\n if (distributionInfo?.pickupDistribution?.address) {\n const addr: any = distributionInfo?.pickupDistribution?.address;\n addr.state = states.find((x) => x.value === addr.department)?.id;\n setAddress(addr);\n }\n }, []);\n\n async function addKitPickupDistribution() {\n const distributionAddress = distributionInfo?.pickupDistribution?.address;\n const addressesAreEqual =\n address &&\n address?.street == distributionAddress?.street &&\n address?.doorNumber == distributionAddress?.doorNumber;\n\n if (addressesAreEqual) {\n submitKitDistribution(date, shippingType, distributionAddress, 2, 5);\n } else {\n submitKitDistribution(\n date,\n shippingType,\n { ...address, new: true },\n 2,\n 5\n );\n }\n return;\n }\n\n return (\n <>\n {isLoading ? (\n
\n \n
\n ) : (\n <>\n {activeStep === 3 ? (\n \n ) : null}\n {activeStep === 4 ? (\n \n ) : null}\n {activeStep === 5 ? (\n \n ) : null}\n \n )}\n \n );\n}\n\nfunction DeliveryFlow({\n activeStep,\n setActiveStep,\n distributionInfo,\n submitKitDistribution,\n}) {\n const [shippingType, setShippingType] = useState();\n const [date, setDate] = useState();\n const [address, setAddress] = useState();\n const account = useSelector((s: RootState) => s.auth.account);\n\n return (\n <>\n {activeStep === 0 ? (\n \n submitKitDistribution(date, shippingType, address, 1, 2)\n }\n isDelivery\n />\n ) : null}\n {activeStep === 1 ? (\n \n submitKitDistribution(date, shippingType, address, 1, 2)\n }\n />\n ) : null}\n {activeStep === 2 ? (\n \n ) : null}\n \n );\n}\n\nexport default withRouter(UserDashboard);\n","import { Dispatch } from \"redux\";\nimport {\n AnalysesActionTypes,\n ANALYSES_LOADING,\n ADD_ANALYSES,\n // ANALYSES_FAILED,\n ADDING_ANALYSIS,\n ADD_ANALYSIS,\n ADD_ANALYSIS_FAILED,\n ANALYSIS_DIRECTIONS_LOADING,\n ADD_ANALYSIS_DIRECTIONS,\n // ANALYSIS_DIRECTIONS_FAILED,\n ADDING_ANALYSIS_DIRECTION,\n ADD_ANALYSIS_DIRECTION,\n FETCHING_ANALYSIS_RESULT,\n FETCH_ANALYSIS_FAILED,\n FETCH_ANALYSIS,\n FETCHING_ANALYSIS_FOODS,\n FETCH_ANALYSIS_FOODS,\n FETCH_ANALYSIS_FOODS_FAILED,\n // ADD_ANALYSIS_DIRECTION_FAILED,\n} from \"./actionTypes\";\nimport { Analysis, Direction, CreateAnalysisRequest } from \"./types\";\nimport { analysesService } from \"../../services/analyses.service\";\nimport { ChangePatientIdAction, CHANGE_PATIENTID } from './actionTypes';\n\n//#region Fetch analyses\n\nexport const fetchAnalyses = () => {\n return (dispatch: Dispatch) => {\n dispatch(loadingAnalyses());\n\n let analyses = [\n {\n id: \"\",\n referenceId: \"string\",\n created: new Date(),\n lastModified: new Date(),\n order: {\n invoiceId: \"\",\n transaction: \"\",\n quantity: 0,\n },\n },\n ];\n\n //TODO: Call backend\n setTimeout(() => {\n //dispatch(addAnalyses(analyses));\n }, 3000);\n };\n};\n\nconst loadingAnalyses = (): AnalysesActionTypes => ({\n type: ANALYSES_LOADING,\n});\n\nconst addAnalyses = (analyses: Analysis[]): AnalysesActionTypes => ({\n type: ADD_ANALYSES,\n analyses,\n});\n\n// const addAnalysesFailed = (error: string): AnalysesActionTypes => ({\n// type: ANALYSES_FAILED,\n// error,\n// });\n\n//#endregion\n\n//#region Create and pay analysis\n\nexport const createAndPayAnalysis = ({\n analysisAmount,\n instrumentToken,\n installments,\n coupon\n}: CreateAnalysisRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(creatingAnalysis());\n\n const createAnalysisRequest: CreateAnalysisRequest = {\n analysisAmount,\n instrumentToken,\n installments,\n coupon\n };\n\n analysesService.createAnalysis(createAnalysisRequest).then(\n (response) => {\n dispatch(addAnalysis(response!));\n },\n (error) => {\n dispatch(addAnalysisFailed(error.message));\n }\n );\n };\n};\n\nconst creatingAnalysis = (): AnalysesActionTypes => ({\n type: ADDING_ANALYSIS,\n});\n\nconst addAnalysis = (analysis: Analysis): AnalysesActionTypes => ({\n type: ADD_ANALYSIS,\n analysis,\n});\n\nconst addAnalysisFailed = (error: string): AnalysesActionTypes => ({\n type: ADD_ANALYSIS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Fetch analyses directions\n\nexport const fetchAnalysisDirections = () => {\n return (dispatch: Dispatch) => {\n dispatch(loadingAnalysisDirections());\n\n let analysisDirections = [\n {\n id: \"1\",\n },\n ];\n\n //TODO: Call backend\n setTimeout(() => {\n dispatch(addAnalysisDirections(analysisDirections));\n }, 3000);\n };\n};\n\nconst loadingAnalysisDirections = (): AnalysesActionTypes => ({\n type: ANALYSIS_DIRECTIONS_LOADING,\n});\n\nconst addAnalysisDirections = (\n analysisDirections: Direction[]\n): AnalysesActionTypes => ({\n type: ADD_ANALYSIS_DIRECTIONS,\n directions: analysisDirections,\n});\n\n// const addAnalysisDirectionsFailed = (error: string): AnalysesActionTypes => ({\n// type: ANALYSIS_DIRECTIONS_FAILED,\n// error,\n// });\n\n//#endregion\n\n//#region Create analysis direction\n\nexport const chagePatientId = (id: string) => {\n return (dispatch: Dispatch) => {\n dispatch(\n {\n type: CHANGE_PATIENTID,\n id: id\n }\n )\n }\n}\n\nexport const createAnalysisDirections = (direction: Direction) => {\n return (dispatch: Dispatch) => {\n dispatch(creatingAnalysisDirection());\n\n //TODO: Call backend\n setTimeout(() => {\n dispatch(addAnalysisDirection(direction));\n }, 3000);\n };\n};\n\nconst creatingAnalysisDirection = (): AnalysesActionTypes => ({\n type: ADDING_ANALYSIS_DIRECTION,\n});\n\nconst addAnalysisDirection = (\n analysisDirection: Direction\n): AnalysesActionTypes => ({\n type: ADD_ANALYSIS_DIRECTION,\n direction: analysisDirection,\n});\n\n// const addAnalysisDirectionFailed = (error: string): AnalysesActionTypes => ({\n// type: ADD_ANALYSIS_DIRECTION_FAILED,\n// error,\n// });\n\n//#endregion\n\n//#region Fetch analysis results\n\nexport const fetchAnalysisResults = (patientId: string) => {\n return async (dispatch: Dispatch) => {\n dispatch(fetchingAnalysisResult());\n\n try {\n var result = null; \n if(patientId && patientId !== \"\") result = await analysesService.getAnalysesResultsById(patientId);\n else result = await analysesService.getAnalysesResults();\n dispatch(fetchingAnalysisSuccess(result));\n } catch {\n dispatch(\n fetchingAnalysisResultFailed(\"Failed to fetch analysis results\")\n );\n }\n };\n};\n\n//#endregion fetch analysis results\n\nconst fetchingAnalysisResult = (): AnalysesActionTypes => ({\n type: FETCHING_ANALYSIS_RESULT,\n});\n\nconst fetchingAnalysisSuccess = (results): AnalysesActionTypes => ({\n type: FETCH_ANALYSIS,\n results,\n});\n\nconst fetchingAnalysisResultFailed = (error: string): AnalysesActionTypes => ({\n type: FETCH_ANALYSIS_FAILED,\n error,\n});\n\n//#region Fetch analysis foods\n\nexport const fetchAnalysisFoods = () => {\n return async (dispatch: Dispatch) => {\n dispatch(fetchingAnalysisFood());\n\n try {\n const food = await analysesService.getAnalysesFoods();\n\n dispatch(fetchingAnalysisFoodSuccess(food));\n } catch {\n dispatch(\n fetchingAnalysisFoodFailed(\"Failed to fetch analysis foods\")\n );\n }\n };\n};\n\nconst fetchingAnalysisFood = (): AnalysesActionTypes => ({\n type: FETCHING_ANALYSIS_FOODS,\n});\n\nconst fetchingAnalysisFoodSuccess = (foods): AnalysesActionTypes => ({\n type: FETCH_ANALYSIS_FOODS,\n foods,\n});\n\nconst fetchingAnalysisFoodFailed = (error: string): AnalysesActionTypes => ({\n type: FETCH_ANALYSIS_FOODS_FAILED,\n error,\n});\n\n//#endregion Fetch analysis foods","import { Analysis, AnalysisResult, Direction, FoodsResponse, FoodsResult } from \"./types\";\n\nexport const ANALYSES_LOADING = \"ANALYSES_LOADING\";\nexport const ADD_ANALYSES = \"ADD_ANALYSES\";\nexport const ANALYSES_FAILED = \"ANALYSES_FAILED\";\n\nexport interface RequestAnalysesAction {\n type: typeof ANALYSES_LOADING;\n}\n\nexport interface AddAnalysesAction {\n type: typeof ADD_ANALYSES;\n analyses: Analysis[];\n}\n\nexport interface AnalysesFailedAction {\n type: typeof ANALYSES_FAILED;\n error: string;\n}\n\nexport const FETCHING_ANALYSIS_RESULT = \"FETCHING_ANALYSIS_RESULT\";\nexport const FETCH_ANALYSIS = \"FETCH_ANALYSIS\";\nexport const FETCH_ANALYSIS_FAILED = \"FETCH_ANALYSIS_FAILED\";\n\nexport interface FetchAnalysisResult {\n type: typeof FETCHING_ANALYSIS_RESULT;\n}\n\nexport interface FetchAnalysis {\n type: typeof FETCH_ANALYSIS;\n results: AnalysisResult[];\n}\n\nexport interface FetchAnalysisFailed {\n type: typeof FETCH_ANALYSIS_FAILED;\n error: string;\n}\n\nexport const FETCHING_ANALYSIS_FOODS = \"FETCHING_ANALYSIS_FOODS\";\nexport const FETCH_ANALYSIS_FOODS = \"FETCH_ANALYSIS_FOODS\";\nexport const FETCH_ANALYSIS_FOODS_FAILED = \"FETCH_ANALYSIS_FOODS_FAILED\";\n\nexport interface FetchAnalysisFoods {\n type: typeof FETCHING_ANALYSIS_FOODS;\n}\n\nexport interface FetchAnalysisFoodsResponse {\n type: typeof FETCH_ANALYSIS_FOODS;\n foods: FoodsResponse;\n}\n\nexport interface FetchAnalysisFoodsFailed {\n type: typeof FETCH_ANALYSIS_FOODS_FAILED;\n error: string;\n}\n\nexport const ADDING_ANALYSIS = \"ADDING_ANALYSIS\";\nexport const ADD_ANALYSIS = \"ADD_ANALYSIS\";\nexport const ADD_ANALYSIS_FAILED = \"ADD_ANALYSIS_FAILED\";\n\nexport interface RequestAddAnalysisAction {\n type: typeof ADDING_ANALYSIS;\n}\n\nexport interface AddAnalysisAction {\n type: typeof ADD_ANALYSIS;\n analysis: Analysis;\n}\n\nexport interface AddAnalysisFailedAction {\n type: typeof ADD_ANALYSIS_FAILED;\n error: string;\n}\n\nexport const ANALYSIS_DIRECTIONS_LOADING = \"ANALYSIS_DIRECTIONS_LOADING\";\nexport const ADD_ANALYSIS_DIRECTIONS = \"ADD_ANALYSIS_DIRECTIONS\";\nexport const ANALYSIS_DIRECTIONS_FAILED = \"ANALYSIS_DIRECTIONS_FAILED\";\n\nexport interface RequestAnalysisDirectionsAction {\n type: typeof ANALYSIS_DIRECTIONS_LOADING;\n}\n\nexport interface AddAnalysisDirectionsAction {\n type: typeof ADD_ANALYSIS_DIRECTIONS;\n directions: Direction[];\n}\n\nexport interface AnalysisDirectionsFailedAction {\n type: typeof ANALYSIS_DIRECTIONS_FAILED;\n error: string;\n}\n\nexport const ADDING_ANALYSIS_DIRECTION = \"ADDING_ANALYSIS_DIRECTION\";\nexport const ADD_ANALYSIS_DIRECTION = \"ADD_ANALYSIS_DIRECTION\";\nexport const ADD_ANALYSIS_DIRECTION_FAILED = \"ADD_ANALYSIS_DIRECTION_FAILED\";\n\nexport interface RequestAddAnalysisDirectionAction {\n type: typeof ADDING_ANALYSIS_DIRECTION;\n}\n\nexport interface AddAnalysisDirectionAction {\n type: typeof ADD_ANALYSIS_DIRECTION;\n direction: Direction;\n}\n\nexport interface AddAnalysisDirectionFailedAction {\n type: typeof ADD_ANALYSIS_DIRECTION_FAILED;\n error: string;\n}\n\nexport const CHANGE_PATIENTID = \"CHANGE_PATIENTID\";\n\nexport interface ChangePatientIdAction {\n type: typeof CHANGE_PATIENTID;\n id: string;\n}\n\nexport type AnalysesActionTypes =\n | RequestAnalysesAction\n | AddAnalysesAction\n | AnalysesFailedAction\n | RequestAddAnalysisAction\n | AddAnalysisAction\n | AddAnalysisFailedAction\n | RequestAnalysisDirectionsAction\n | AddAnalysisDirectionsAction\n | AnalysisDirectionsFailedAction\n | RequestAddAnalysisDirectionAction\n | AddAnalysisDirectionAction\n | AddAnalysisDirectionFailedAction\n | FetchAnalysisResult\n | FetchAnalysis\n | FetchAnalysisFailed\n | FetchAnalysisFoods\n | FetchAnalysisFoodsResponse\n | FetchAnalysisFoodsFailed\n | ChangePatientIdAction\n ;\n","import React, {useState, useEffect} from 'react';\nimport { Document, Page, Text, View, StyleSheet, \n PDFDownloadLink, Image, PDFViewer, Font } from '@react-pdf/renderer';\nimport { analysesService } from \"../../services/analyses.service\";\nimport { LoadingAnimation } from \"../animations/LoadingAnimation\";\nimport { Lottie } from '@crello/react-lottie';\nimport loadAnimation from \"../../assets/loading.json\";\nimport {AnalysisResult , FoodsResponse} from \"../../store/analyses/types\";\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../store/config/types';\n\n\n\nFont.registerHyphenationCallback(word => [word]);\nFont.register({ family: 'Mukta', fonts: [\n { src: 'https://res.cloudinary.com/hqs-cdn/raw/upload/v1711476589/mistergen/pdf-results/Mukta-Light_daulgw.ttf', fontWeight: 300 },\n { src: '/Mukta-Regular.ttf', fontWeight: 400 },\n { src: 'https://res.cloudinary.com/hqs-cdn/raw/upload/v1711476594/mistergen/pdf-results/Mukta-Bold_chrofb.ttf', fontWeight: 700},\n] });\n\nconst KeyToLabelDict = {\n \"Grasas saturadas y peso corporal\": {\n label: \"Grasas saturadas y peso corporal\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite saber si estás dentro del grupo de riesgo, adecuar el consumo de alimentos y mejorar tus hábitos alimentarios para prevenir el desarrollo de obesidad y las enfermedades asociadas a ella.\n \n Tus genes indican que tu predisposición al aumento de peso corporal, teniendo un consumo elevado de grasas saturadas se encuentra bajo o habitual , pero tus genes no te determinan, tus hábitos si.`,\n 1: \"\",\n 2: `Conocer lo que dicen tus genes te permite saber si estás dentro del grupo de riesgo, adecuar el consumo de alimentos y mejorar tus hábitos alimentarios para prevenir el desarrollo de obesidad y las enfermedades asociadas a ella.\n \n Tus genes indican que tu predisposición al aumento de peso corporal, teniendo un consumo elevado de grasas saturadas se encuentra aumentado, pero tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `Los lípidos o grasas son un componente importante de una dieta completa, nos aportan energía, forman parte de las membranas celulares y favorecen la absorción de ciertos nutrientes.\n Como sucede en otras áreas de la salud, a medida que se realizan nuevos estudios conocemos más del impacto que tienen los alimentos en nuestro organismo. \n \n A partir de la década de los años 50, las grasas se demonizaron, se proponía reducir el consumo total de grasas, entre ellas por ejemplo las saturadas para evitar enfermedades cardiovasculares ya que se planteaba la hipótesis que al aumentar las partículas de colesterol LDL (“malo”) favorecen a enfermedades cardiovasculares. \n Sin embargo, nuevos estudios hoy nos revelan que, si bien producen un aumento de LDL sería de partículas pequeñas y densas, no de partículas grandes que si se asocian a esta enfermedad.\n \n Respecto al peso corporal sucede algo similar, no debemos erradicar las grasas, sino que para obtener sus beneficios hay que seleccionarlas en cantidad y calidad .\n Hoy el énfasis es la evaluación 360° de las personas, poniendo foco en cambiar nuestro estilo de vida además de controlar las grasas, incrementando el ejercicio físico, evitando el tabaco y el estrés.`,\n results: `Las personas con dos copias de la variante rs5082 presentan un índice de masa corporal (IMC) más alto en comparación con personas con una o ninguna copia, al realizar una dieta alta en grasas saturadas. Estos individuos también presentan mayor ingesta total de alimentos. Esta variante se encuentra cerca de un gen llamado APOA2, que codifica para la proteína apolipoproteína A-II (apo A-II), que se encuentra en las partículas de colesterol HDL. Las personas con dos copias de la variante producen menos proteína apo A-II que las personas con ninguna o una variante.\n Tener dos copias del alelo G se asocia con un IMC más alto en el contexto de una dieta alta en grasas saturadas.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes no te predisponen a presentar un mayor aumento del peso corporal con el consumo elevado de grasas saturadas, pero esto no significa que no puedas desarrollar alto peso u obesidad si tu alimentación no es en base a alimentos reales y equilibrada.\n - Esto es una predisposición que te acompañará siempre, sin embargo el peso corporal se modifica fundamentalmente por el ambiente y los hábitos.\n - A pesar de esto, realizar actividad física periódica te traerá múltiples beneficios (al menos 30 minutos diarios).\n - Los valores de colesterol LDL se determinan mediante técnicas bioquímicas (laboratorio) que reflejen tu metabolismo al momento de la consulta.\n - Se sugiere limitar la ingesta de grasas saturadas por debajo de 15-20 gr diarios ( un 10% de las grasas totales).\n - Naturalmente los alimentos con altos niveles de grasas saturadas son las carnes sin procesar, lácteos enteros, chocolate y la mayoría de los alimentos procesados.\n - La carne y los lácteos tienen otros nutrientes necesarios para tu salud, no los elimines, selecciona versiones reducidas en grasa como lácteos descremados y cortes de carne magros: Vaca (peceto, lomo, nalga), pollo sin piel (pechuga y muslos), cerdo (lomo, paleta, solomillo).\n - Consumí con mayor frecuencia carnes blancas como pollo y pescado (merluza, brótola, lenguado).\n - El consumo de fiambres, achuras, mantecas/margarinas y embutidos que presentan altos niveles de grasas saturadas reservalo solo para ocasiones especiales .\n - En productos industriales este tipo de grasa está en tapas de masa, panes, galletitas y golosinas.\n - Beneficiate del efecto antiinflamatorio de las grasas poliinsaturadas omega-3 preferentemente de aceite de oliva, aceitunas, semillas de chía y lino, nueces pecanas, aceite de lino, y nuez.\n - Realizá al menos 4 comidas diarias. Evitá “picotear” programando 1 o 2 colaciones. Comé hasta sentirte levemente satisfecho, incorporá frutas y verduras variadas a todas tus comidas.\n - Preferí el aceite de oliva extra virgen y palta en crudo (una cucharada sopera por comida como condimento) y no en fritura. Para cocinar aceite de coco o ghee. Evitar aceites en spray.`,\n 1: ``,\n 2: `- Tus genes indican que estás predispuesto a presentar un mayor aumento del peso corporal con el consumo elevado de grasas saturadas, pero esto no significa que vayas a desarrollar alto peso u obesidad. Esto es una predisposición que te acompañará siempre, sin embargo el peso corporal se modifica fundamentalmente por el ambiente y los hábitos.\n - A pesar de esto, realizar actividad física periódica te traerá múltiples beneficios (al menos 30 minutos diarios).\n - Los valores de colesterol LDL se determinan mediante técnicas bioquímicas (laboratorio) que reflejen tu metabolismo al momento de la consulta.\n - Limita la ingesta de grasas saturadas por debajo de 15 gr diarios (7% de las grasas totales). Naturalmente los alimentos con altos niveles de grasas saturadas son las carnes sin procesar, lácteos enteros, chocolate y la mayoría de los alimentos procesados.\n - La carne y los lácteos tienen otros nutrientes necesarios para tu salud, no los elimines, selecciona versiones reducidas en grasa como lácteos descremados y cortes de carne magros: Vaca (peceto, lomo, nalga), pollo sin piel (pechuga y muslos), cerdo (lomo, paleta, solomillo).\n - Consumí con mayor frecuencia carnes blancas como pollo y pescado (merluza, brótola, lenguado).\n - El consumo de fiambres, achuras, mantecas/margarinas y embutidos que presentan altos niveles de grasas saturadas reservalo solo para ocasiones especiales . Por ejemplo un rulo de manteca contiene 2,5 grs de grasa saturada, un rollito de jamón y queso 4 grs de grasa saturada.\n - Beneficiate del efecto antiinflamatorio de las grasas poliinsaturadas omega-3 preferentemente de aceite de oliva, aceitunas, semillas de chía y lino, nueces pecanas, aceite de lino, y nuez.\n - Realizá al menos 4 comidas diarias. Evitá “picotear” programando 1 o 2 colaciones. Comé hasta sentirte levemente satisfecho, incorporá frutas y verduras variadas a todas tus comidas.\n - Para mantener un peso saludable es importante incorporar cantidad y calidad suficiente de proteínas en tus comidas y fibra a fin de lograr saciedad.\n - Preferí el aceite de oliva extra virgen y palta en crudo (una cucharada sopera por comida como condimento) y no en fritura. Para cocinar aceite de coco o ghee. Evitar aceites en spray.`,\n },\n bibliography: `Dolores Corella , Gina Peloso, Donna K Arnett, Serkalem Demissie, L Adrienne Cupples, Katherine Tucker, Chao-Qiang Lai, Laurence D Parnell, Oscar Coltell, Yu-Chi Lee, Jose M Ordovas.APOA2, dietary fat, and body mass index: replication of a gene-diet interaction in 3 independent populations\n `\n },\n \"Cafeína en deporte\": {\n label: \"Cafeína en deporte\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de cafeína acorde a tu metabolismo para maximizar tu rendimiento deportivo.\n Metabolizador rápido de cafeína.\n `,\n 1: \"\",\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de cafeína acorde a tu metabolismo para maximizar tu rendimiento deportivo.\n Metabolizador lento de cafeína.`,\n },\n generalInfo: `- La cafeína es una sustancia estimulante, y por este efecto es uno de los suplementos usados por deportistas. Casi todos los estudios concluyen que la cafeína mejora el rendimiento en un 10% y permite que el esfuerzo parezca más fácil.\n - Disminuye la percepción de fatiga en deportes de resistencia, mejorando el rendimiento y permitiendo mantener la actividad a una intensidad superior durante un periodo más largo.\n - Al ser un estimulante del sistema nervioso, aumenta la capacidad de alerta, concentración, tiempo de reacción y memoria.\n - Aumenta la movilización y utilización de grasas durante el ejercicio, retrasando el vaciamiento de las reservas de glucógeno.\n\n Las fuentes principales de cafeína que podemos encontrar son el café, el té, las bebidas cola, el guaraná, el mate o el chocolate. Además, existen en el mercado otros productos específicos que contienen cafeína como bebidas energéticas, gelatinas o cápsulas.\n \n En los últimos años, se han identificado variantes genéticas que pueden modificar la respuesta a esta sustancia y permiten adaptar el tiempo y la dosis a las características de cada deportista para obtener una respuesta óptima.`,\n results: `El citocromo P450 1A2 (CYP1A2) es responsable aproximadamente del 95% del metabolismo de la cafeína y presenta una amplia variabilidad entre individuos. Variantes en el gen CYP1A2 que codifica para ese citocromo afectan su actividad, esto modifica la velocidad con la que se metaboliza la cafeína en el organismo, y por lo tanto sus acciones a nivel muscular`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu metabolismo de la cafeína es más rápido que lo habitual, por lo que es probable que las recomendaciones clásicas de dosis y tiempo de administración de suplementos con cafeína sean útiles para vos.\n - Si utilizas la cafeína como suplemento deportivo, la pauta que indica 3 a 9 mg/kg aproximadamente 60 minutos antes del ejercicio probablemente es útil para que puedas obtener un efecto óptimo.\n - Si haces deporte de alto rendimiento, consultá con un especialista.\n - Aunque es poco probable que presentes síntomas, la cantidad de cafeína recomendada por día es de hasta 400 mg (4 tazas diarias).\n - En caso de presentar síntomas, evitá las bebidas cafeinadas luego del mediodía, y reducí el consumo total diario de cafeína a menos de 200 mg/día (2 tazas). Si continuas con estos síntomas luego de reducir la dosis, considerá eliminarla.\n - Si tenés factores de riesgo cardiovascular o hipertensión arterial, es posible que no sea el suplemento más indicado para vos.\n - Para más información consultá a tu médico o deportólogo.`,\n 1: ``,\n 2: `- Tus genes indican que tu metabolismo de la cafeína es más lento que lo habitual, por lo que es probable que las recomendaciones clásicas de dosis y tiempo de administración de suplementos con cafeína necesiten ser modificadas para resultar útiles para vos.\n - Si utilizas la cafeína como suplemento deportivo, es posible que necesites aumentar la dosis de cafeína para alcanzar valores en sangre óptimos, o consumirla más de una hora antes de hacer ejercicio.\n - Si haces deporte de alto rendimiento, consultá con un especialista. Cuando consumimos más de 500-600 mg/día, puede presentarse intranquilidad,aumento de la actividad, congestión facial, molestias gastrointestinales, arritmias. En metabolizadores lentos se relaciona el consumo de cafeína con aumento del riesgo de infarto agudo de miocardio (IAM).\n - Es posible que el consumo de altas dosis de cafeína en vos se asocie a mayor riesgo de efectos adversos. En caso de presentar síntomas, evitá las bebidas cafeinadas luego del mediodía, y reducí el consumo total diario de cafeína a menos de 200 mg/día (2 tazas).\n - Si tenés factores de riesgo cardiovascular o hipertensión arterial, es posible que no sea el suplemento más indicado para vos.\n - Para más información consultá a tu médico o deportólogo.`,\n },\n bibliography: `Craig Pickering , John Kiely Are the Current Guidelines on Caffeine Use in Sport Optimal for Everyone? Inter-individual Variation in Caffeine Ergogenicity, and a Move Towards Personalised Sports Nutrition`\n },\n \"Capacidad aeróbica o atlética\": {\n label: \"Capacidad aeróbica\",\n zone: \"diagnosticResults\",\n desc: {\n 0: \"Conocer lo que dicen tus genes acerca de tu capacidad aeróbica te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.\",\n 1: \"\",\n 2: \"Conocer lo que dicen tus genes acerca de tu capacidad aeróbica te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.\",\n },\n generalInfo: `Podemos definir al rendimiento deportivo como la relación entre las marcas obtenidas y los recursos utilizados para lograrlas. \n Por lo tanto, para maximizar tu rendimiento deberás usar todos tus recursos disponibles.\n Está influenciado por distintos factores como alimentación, habilidad técnica, personalidad, factores psicológicos, circunstanciales, apoyo tecnológico y genéticos entre otros.\n \n Según estudios, se calcula que los factores genéticos podrían explicar alrededor del 66% de la diferencia del estado atlético entre las personas.\n El organismo recurre a los hidratos y las grasas como fuente principal de energía, junto con la utilización de oxígeno. La genética influye en la eficacia con la que procesamos los nutrientes y obtenemos energía, y a esta capacidad se la denomina rendimiento energético. Nuestros genes pueden entonces influir en la forma en que obtenemos energía de los nutrientes, y afectar directamente nuestra capacidad atlética.`,\n results: `El gen PPARGC1A está presente en tejidos con alta actividad metabólica, estos incluyen al músculo esquelético (durante el ejercicio). \n Este gen controla transitoriamente el transporte de glucosa, la oxidación de lípidos y glucosa, orquestando la capacidad oxidativa del músculo.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu capacidad atlética sería mayor, lo que indica que podrías tener mayor aptitud para los deportes.\n - Esto es una predisposición que te acompañará siempre, pero el desarrollo de aptitudes deportivas depende fundamentalmente del entrenamiento y otros factores ambientales.\n - Personas con este genotipo pueden beneficiarse al incluir tanto entrenamientos de fuerza/potencia (pocas repeticiones con mucha carga) y deportes que requieren esfuerzos máximos en corto tiempo como entrenamientos de resistencia aeróbica, de esfuerzo moderado por períodos largos.\n - Una alimentación balanceada contribuirá también al logro de tus objetivos.\n - Diseñar tu entrenamiento apoyado por un profesional, de acuerdo a tus objetivos y focalizando en tus aptitudes, te ayudará a llegar más rápidamente a tus objetivo.`,\n 1: ``,\n 2: `- Tus genes indican que tenés una capacidad atlética habitual.\n - El desarrollo de aptitudes deportivas depende fundamentalmente del entrenamiento y otros factores ambientales, por lo cual tener capacidad atlética habitual no implica que no puedas alcanzar un rendimiento atlético elevado.\n - Una alimentación balanceada e incluir tanto entrenamientos de fuerza/potencia (pocas repeticiones con mucha carga) y deportes que requieren esfuerzos máximos en corto tiempo como entrenamientos de resistencia aeróbica, de esfuerzo moderado por períodos largos contribuirá también al logro de tus objetivos.`,\n },\n bibliography: `\n Nir Eynon 1, Yoav Meckel, Alberto Jorge Alves, Chen Yamin, Michael Sagiv, Ehud Goldhammer, Moran Sagiv.Is there an interaction between PPARD T294C and PPARGC1A Gly482Ser polymorphisms and human endurance performance\n Ying Chen, Dongmei Wang, Pingping Yan, Shenglan Yan, Qing Chang, and Zhi Cheng\n Meta-analyses of the association between the PPARGC1A Gly482Ser polymorphism and athletic performance`\n },\n \"Composición muscular\": {\n label: \"Composición muscular\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes acerca de la composición de tus músculos te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.`,\n 1: `Conocer lo que dicen tus genes acerca de la composición de tus músculos te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.`,\n 2: `Conocer lo que dicen tus genes acerca de la composición de tus músculos te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.`,\n },\n generalInfo: `Nuestros músculos se componen de tres tipos principales de fibras, fibras de contracción lenta, intermedias y de contracción rápida.\n \n El tipo de fibra muscular viene determinado por nuestros genes, conocer el predominio de cada tipo fibra en cada persona nos permite obtener una ventaja relativa sobre los deportes que tal vez más nos convengan desarrollar o practicar. \n De esta manera las personas que posean un alto porcentaje de fibras lentas podrían tener ventajas en actividades vinculadas con la resistencia, como por ejemplo, triatlón, running, carreras de fondo y medio fondo, ciclismo de ruta, natación de aguas abiertas, etc. \n \n Quienes posean mayor predominio de fibras intermedias, que tienen capacidad aeróbica suficiente para resistir a la fatiga durante varios minutos, tendrán mayor aptitud para los deportes de esfuerzo intermitente o de conjunto, como puede ser el hockey, rugby, fútbol y básquet. Quienes posean en cambio un mayor predominio de fibras rápidas, se verán beneficiados en la realización de actividades breves y explosivas, vinculadas con la velocidad, como por ejemplo carreras de velocidad, pruebas de atletismo o lanzamientos, levantamiento de pesas, etc. \n \n De todas maneras, la composición muscular es variable y se modifica en relación a la carga genética y el entrenamiento`,\n results: `El gen ACTN3 contiene instrucciones para producir alfa-actinina-3, una proteína que se encuentra en las fibras musculares e interviene en la contracción muscular.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `Fibras de contracción rápida.\n - Tus genes indican que en tus músculos tenés mayor porcentaje de fibras de contracción rápida, lo que indica que tenés mayor aptitud para deportes de potencia.\n - Tu éxito deportivo puede verse más vinculado a actividades de alta intensidad y corta duración.\n - Personas con tu composición muscular pueden beneficiarse al incluir entrenamiento de fuerza/potencia (pocas repeticiones con mucha carga), o deportes que requieren esfuerzos máximos en corto tiempo.\n - Deportes como lanzamiento, levantamiento de pesas y carreras cortas pueden ser los adecuados para vos, aunque también podés beneficiarte de realizar entrenamiento funcional o crossfit que combinan entrenamiento de fuerza con resistencia.\n - Es importante que incluyas algunas sesiones de entrenamiento de resistencia en tu plan semanal, para mejorar esta capacidad.\n - Una alimentación adecuada, suficiente y balanceada contribuirá también al logro de tus objetivos.`,\n 1: `Fibras de contracción mixta.\n - Tus genes indican una composición muscular mixta entre fibras de contracción rápida y fibras de contracción lenta, lo que se asocia con habilidad para actividades de potencia como así también de resistencia.\n - Personas con tu composición muscular pueden beneficiarse al incluir entrenamiento de fuerza/potencia (pocas repeticiones con mucha carga), como así también sesiones de entrenamiento de resistencia, de esfuerzo moderado por períodos prolongados (carga moderada con más repeticiones, o esfuerzos moderados sostenidos).\n - Entrenamientos que combinen estos dos tipos de esfuerzo, como entrenamiento funcional o crossfit podrían ser los ideales para vos.\n - También te recomendamos incluir algunas sesiones de entrenamiento de resistencia aeróbica en tu plan semanal, para mejorar esta capacidad.`,\n 2: `Fibras de contracción lenta.\n - Tus genes indican que en la composición de tus músculos hay predominio de fibras de contracción lenta y menor proporción de fibras de contracción rápida, lo que se asocia con mayor aptitud para deportes de resistencia.\n - Personas con tu composición muscular pueden beneficiarse al incluir entrenamiento de resistencia aeróbica, de esfuerzo moderado por períodos largos (carga moderada con más repeticiones, o esfuerzos moderados sostenidos).\n - Actividades como ciclismo, correr a ritmo moderado, natación pueden ser las adecuadas para vos. También te recomendamos incluir algunas sesiones de entrenamiento de potencia para mejorar esta capacidad. Entrenamientos que combinen estos dos tipos de esfuerzo, como entrenamiento funcional o crossfit también podrían ser beneficiosos para vos.\n - Una alimentación adecuada, suficiente y balanceada contribuirá también al logro de tus objetivos.`,\n },\n bibliography: `\n Alfred T et al. (2011). \"ACTN3 genotype, athletic status, and life course physical capability: meta-analysis of the published literature and findings from nine studies.\" Hum Mutat. 32(9):1008-18.\n Berman Y and North KN. (2010). \"A gene for speed: the emerging role of alpha-actinin-3 in muscle metabolism.\" Physiology (Bethesda). 25(4):250-9.\n Druzhevskaya AM et al. (2008). \"Association of the ACTN3 R577X polymorphism with power athlete status in Russians.\" Eur J Appl Physiol. 103(6):631-4.\n Eynon N et al. (2013). \"Genes for elite power and sprint performance: ACTN3 leads the way.\" Sports Med. 43(9):803-17.\n Guth LM and Roth SM. (2013). \"Genetic influence on athletic performance.\" Curr Opin Pediatr. 25(6):653-8.\n Lee FX et al. (2016). \"How does α-actinin-3 deficiency alter muscle function? Mechanistic insights into ACTN3, the 'gene for speed'.\" Biochim Biophys Acta. 1863(4):686-93.\n Ma F et al. (2013). \"The association of sport performance with ACE and ACTN3 genetic polymorphisms: a systematic review and meta-analysis.\" PLoS One. 8(1):e54685.\n MacArthur DG et al. (2007). \"Loss of ACTN3 gene function alters mouse muscle metabolism and shows evidence of positive selection in humans.\" Nat Genet. 39(10):1261-5.\n MacArthur DG et al. (2008). \"An Actn3 knockout mouse provides mechanistic insights into the association between alpha-actinin-3 deficiency and human athletic performance.\" Hum Mol Genet. 17(8):1076-86.\n Moran CN et al. (2007). \"Association analysis of the ACTN3 R577X polymorphism and complex quantitative body composition and performance phenotypes in adolescent Greeks.\" Eur J Hum Genet. 15(1):88-93.`\n },\n \"Celiaquía\": {\n label: \"Celiaquía\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `La enfermedad celíaca depende de múltiples factores genéticos y ambientales.\n \n Tus genes indican que podrías presentar variantes no asociadas a la enfermedad celíaca, aunque esto no lo determina y las pruebas genéticas no son diagnósticas de la enfermedad. `,\n 1: \"\",\n 2: `La enfermedad celíaca depende de múltiples factores genéticos y ambientales.\n \n Tus genes indican que podrías presentar variantes asociadas a la enfermedad celíaca, aunque esto no lo determina y las pruebas genéticas no son diagnósticas de la enfermedad. `,\n },\n generalInfo: `El gluten es una proteína que se encuentra presente en diversos tipos de cereales, como el trigo, la cebada, la avena y el centeno (TAAC). También se puede encontrar en productos alimenticios ya que es utilizado como espesante, tales como yogures, embutidos, salsas, alimentos congelados, chocolate, golosinas e incluso en pasta de dientes, medicamentos y suplementos.\n \n Algunas personas tienen dificultad para digerir el gluten y este permanece en el intestino delgado produciendo daño o sensibilidad.\n Cuando esta intolerancia al gluten es permanente, con causa genética y respuesta autoinmune se denomina celiaquía, pero hay personas con sensibilidad al gluten que no son estrictamente celíacas, sino que les es indigesto el gluten.\n \n Estas personas mejoran sus síntomas al limitar el gluten de la dieta. \n \n Algunos Signos y síntomas: \n - Enfermedad Celíaca: los síntomas más comunes son pérdida de peso, anemia, irritabilidad o dermatitis, molestias digestivas que causan diarrea y malabsorción de nutrientes.\n - Sensibilidad al gluten no celíaca: predominan las manifestaciones extradigestivas, como alteraciones del comportamiento, dolores óseos y articulares, calambres, adormecimiento de las extremidades, pérdida de peso o fatiga crónica.\n \n El estudio genético no hace diagnóstico de enfermedad celíaca, sino que deben realizarse más estudios para confirmar la enfermedad.`,\n results: `Existe una fuerte asociación entre la celiaquía con genes localizados en la región HLA (Human Leukocyte Antigen)\n \n La determinación de los alelos específicos constituyen la base de la prueba genética o test genético que puede emplearse en el diagnóstico de EC.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que es muy poco probable que desarrolles intolerancia al gluten o seas celíaco.\n - Si aún asi presentas síntomas gastrointestinales, se asocien o no con la ingesta de gluten, te sugerimos que concurras a tu médico o nutricionista que descartará otras causas posibles para tus síntomas.`,\n 1: ``,\n 2: `- Tus genes indican que tenés variantes asociadas al desarrollo de intolerancia al gluten y enfermedad celiaca, pero esto no significa que desarrolles en un futuro la enfermedad ya que depende de multiples factores y su diagnostico no es genetico.\n - Si presentas síntomas gastrointestinales específicos, consulta con tu médico para que te solicite estudios específicos que permitan confirmar/descartar el diagnóstico.\n - Es importante que no excluyas el gluten de tu dieta sin indicación médica, ya que los estudios diagnósticos deben realizarse mientras se consuman productos con gluten para obtener resultados confiables.\n - Si tuvieras síntomas hasta tanto confirmes tu diagnóstico, podes sentirte aliviado comiendo volúmenes pequeños, prefiriendo verduras cocidas en lugar de crudas, fruta sin cáscara, leche deslactosada y moderando el consumo de azúcar, mate cebado, café y picantes.\n - La detección temprana y el plan alimentario libre de gluten instaurado en el momento oportuno son fundamentales para evitar complicaciones secundarias de esta patología.\n - Si tu diagnóstico fuera positivo deberás eliminar el gluten de tu dieta, consumiendo alimentos seguros que tengan la etiqueta “Sin TACC” (sin trigo, avena, cebada y centeno).\n - Si se confirma el diagnóstico, deberas quitar de tu alimentación las harinas que presentan TACC y los productos preparados con ellas , como: galletas, panes, alfajores, tortas, masitas, pastas simples y rellenas, seitán (“simil carne” vegetariana), bebidas (cerveza, whisky).\n - Existen alimentos que pueden tener gluten como aditivo alimentario. También deberás elegir la versión permitida de golosinas, enlatados, fiambres, quesos y pasta dental.\n - Alimentos que naturalmente no tienen gluten: frutas, verduras, huevos, carnes, leche, yogur natural, fruta seca, especias, aceites.\n - En caso que se confirmase tu diagnóstico podes consultar las marcas seguras sin TACC en la siguiente pagina web: acelu.org\n - Para más información podés consultar a un médico clínico o gastroenterólogo.`,\n },\n bibliography: `\n Victorien M. Wolters, M.D.and Cisca Wijmenga, Ph.D.Department of Pediatric Gastroenterology and Department of Biomedical Genetics, University Medical Centre Utrecht, Utrecht, The Netherlands; and Department of Genetics, University Medical Centre Groningen, Groningen, The Netherlands.Genetic Background of Celiac Disease and Its Clinical Implications\n Patrick CA Dubois,Gosia Trynka, Lude Franke, Karen A Hunt, Jihane Romanos, Alessandra Curtotti, Alexandra Zhernakova, Graham AR Heap, Róza Ádány, Arpo Aromaa, Maria Teresa Bardella.Multiple common variants for celiac disease influencing immune gene expression\n Alienke J. Monsuur, Paul I. W. de Bakker, Alexandra Zhernakova , Dalila Pinto, Willem Verduijn , Jihane Romanos , Renata Auricchio , Ana Lopez, David A. van Heel , J. Bart A. Crusius , Cisca Wijmeng.Effective Detection of Human Leukocyte Antigen Risk Alleles in Celiac Disease Using Tag Single Nucleotide Polymorphisms\n Concepción Núñez y José Antonio Garrote; en nombre del Grupo de Trabajo de “Inmunología y Genética” de la Sociedad Española de Enfermedad Celíaca (SEEC.Recomendaciones para la elaboración e interpretación de informes genéticos en enfermedad celíaca`\n },\n \"Sensación de saciedad\": {\n label: \"Saciedad\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos acorde a tu índice de saciedad y objetivo terapéutico.\n \n Tus genes indican que tu sensación de saciedad podría estar habitual, tus genes no te determinan, tus hábitos si.`,\n 1: \"\",\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos acorde a tu índice de saciedad y objetivo terapéutico.\n \n Tus genes indican que tu sensación de saciedad podría estar disminuida, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `La saciedad es la sensación de estar “llenos” y determina el tiempo entre nuestras comidas: \"Comer-Volver a comer\". Esta sensación es la que nos indica cuándo “comimos lo suficiente” y debemos limitar la ingesta. Se regula muy finamente por señales neuroendocrinas.\n Puede aparecer precozmente, la saciedad temprana es tener la sensación de estar lleno antes de lo normal o después de comer menos de lo usual, habitualmente está asociada a alguna patología del tracto gastrointestinal como úlceras y acidez.\n De modo contrario aquellas personas que poseen una variación genética en el gen FTO pueden presentar una sensación de saciedad post comida disminuida o retardada, “no se sienten llenos cuando ingirieron un volúmen suficiente como para estarlo” por lo cual tienden a consumir mayor cantidad de alimentos/ calorías para poder saciarse.\n \n\n Existe una escala de hambre-saciedad que va del 1 (hambre extrema) al 10 (saciedad extrema) \n ¿Vos ya conoces la tuya? ¿En qué punto de la escala “dejas de comer”?\n El punto ideal teórico es entre el 5-6\n \n 1 - Hambre extrema, famélica, sensación de debilidad y mareos. Es urgente alimentarte.\n 2 - Mucha hambre, con irritación, ansiedad, bajos niveles de energía, el estómago ruge mucho. Comerías cualquier cosa aun si no es de tu total agrado.\n 3 - Bastante hambre, hay incomodidad pero aguantas con algún rugido en el estómago.\n 4 - Un poco de hambre, pero bajo control, puedes esperar la próxima comida sin problemas.\n 5 - Neutral, sensación de satisfacción, ni sientes hambre ni saciedad.\n 6 - Saciedad, el estómago está lleno pero de forma agradable, aunque si quisieras podrías comer un poco más.\n 7 - Lleno y satisfecho, no quieres comer más porque sabes que te haría sentirte incómodo.\n 8 - Muy lleno, te sientes incómodo y ya no puedes comer más.\n 9 - Muy lleno y con malestar, el estómago está hinchado y empiezas a notar dolor y empacho\n 10 - Extremadamente lleno, te sientes mal con náuseas y ganas de vomitar.`,\n results: `El gen FTO está involucrado en la regulación de la ingesta dado que afecta la sensación de saciedad a nivel central, bloquea la señal de la leptina (“hormona de la saciedad”). En las personas con sensación de saciedad disminuida presentan mayor consumo y frecuencia de alimentos totales, saludables y no saludables, influyendo sobre el peso corporal, perímetro abdominal, IMC y riesgo cardiovascular pudiendo asociarse con mayor riesgo de obesidad, diabetes y enfermedades cardiovasculares.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu sensación de saciedad es la habitual, pero esto no significa que no puedas tener tendencia a un consumo aumentado de alimentos por otros motivos.\n - Esto es una predisposición que te acompañará siempre, sin embargo los hábitos de consumo se basan además en factores nutricionales, ambientales y socioculturales.\n - Elegí ambientes luminosos, frescos y tranquilos para comer. Así registrarás mejor tus emociones y disfrutarás más de lo que comes.\n - Como estrategia para el desarrollo de buenos hábitos en torno a la comida te sugerimos comer en plato y no desde la fuente, no llevar la fuente de alimento a la mesa , elegir plato de postre que es más pequeño que el playo si necesitarás reducir tus porciones. Llenar el plato dejando los bordes libres, frezar las porciones extra que hayas preparado, evitar comer con el celular, tablet o tele para tener registro de la porción de alimento que consumís, apoyar los cubiertos en la mesa entre bocado y bocado.\n - Planifica tus comidas distribuyendo los alimentos en 4 comidas principales y, de ser necesario, 2 colaciones para poder moderar el tamaño de las porciones.\n - Si bien tu saciedad podría estar en los niveles habituales, los alimentos más saciantes son muy ricos en nutrientes, como las proteínas de carnes, huevos, legumbres y lácteos o la fibra en las frutas y verduras.\n - Preferí siempre alimentos nutritivos y saciantes antes que aquellos con elevados niveles de azúcar y grasa. Somos un cerebro ancestral en un mundo ultra procesado!`,\n 1: ``,\n 2: `- Tus genes indican que tu sensación de saciedad está disminuida, pero esto no significa que tengas tendencia a un consumo aumentado de alimentos.\n - Esto es una predisposición que te acompañará siempre, sin embargo los hábitos de consumo se basan además en factores nutricionales, ambientales y socioculturales.\n - Existen estrategias que te permitan controlar la porción de alimentos que consumís como: comer en plato y no desde la fuente, no llevar la fuente de alimento a la mesa ,elegir plato de postre que es más pequeño que el playo si necesitarás reducir tus porciones. Llenar el plato dejando los bordes libres, frezar las porciones extra que hayas preparado, evitar comer con el celular, tablet o tele para tener registro de la porción de alimento que consumís, apoyar los cubiertos en la mesa entre bocado y bocado.\n - Evita lugares muy estimulantes, con música fuerte, muy oscuros o con muchas personas. Elegí ambientes luminosos, frescos y tranquilos para comer.\n - Planifica tus comidas distribuyendo los alimentos en 4 comidas principales y, de ser necesario, 2 colaciones para poder moderar el tamaño de las porciones. \n - Para lograr mayor saciedad elegí alimentos con alto contenido proteico y fibra. Las proteínas las encontrarás en carnes, huevos, legumbres y lácteos mientras que la fibra principalmente en las frutas y verduras. Al consumirlas crudas o con cáscara añadís mayor dificultad masticatoria y eso favorece a que puedas sentir mayor saciedad. Recordá lavarlas muy bien antes.\n - Evita consumir alimentos adictivos y de fácil consumo como caramelos, gomitas, snacks, galletitas. Somos un cerebro ancestral en un mundo ultra procesado!`,\n },\n bibliography: `WARDLE, Jane, et al. Obesity associated genetic variation in FTO is associated with diminished satiety. The Journal of Clinical Endocrinology & Metabolism, 2008, vol. 93, no 9, p. 3640-3643.\n DEN HOED, Marcel, et al. Postprandial responses in hunger and satiety are associated with the rs9939609 single nucleotide polymorphism in FTO. The American journal of clinical nutrition, 2009, vol. 90, no 5, p. 1426-1432.\n MAGNO, Fernanda Cristina Carvalho Mattos, et al. Influence of FTO rs9939609 polymorphism on appetite, ghrelin, leptin, IL6, TNFα levels, and food intake of women with morbid obesity. Diabetes, metabolic syndrome and obesity: targets and therapy, 2018, vol. 11, p. 199.`\n },\n \"Tolerancia a la lactosa\": {\n label: \"Lactosa\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Tus genes indican que podrías presentar una tolerancia normal a la lactosa, aunque esto no lo determina. \n \n Esto te permite explicar una gran variedad de síntomas que se asocian a la falta de lactasa, para modificar tu dieta en consecuencia y mejorar tu calidad de vida.`,\n 1: \"\",\n 2: `Tus genes indican que podrías presentar una tolerancia disminuida a la lactosa, aunque esto no lo determina. \n \n Esto te permite explicar una gran variedad de síntomas que se asocian a la falta de lactasa, para modificar tu dieta en consecuencia y mejorar tu calidad de vida.`,\n },\n generalInfo: `La lactosa es un tipo de azúcar que se encuentra en la leche (de vaca, de cabra, de oveja, etc) y también en sus derivados como quesos, cremas, mantecas, etc. \n La lactosa es digerida en nuestro intestino por la enzima lactasa. La lactasa descompone la molécula de lactosa, en sus dos componentes: glucosa y galactosa, para que luego estos azúcares simples puedan ser absorbidos por la pared intestinal y pasar al torrente sanguíneo. \n \n Para poder digerir este azúcar el cuerpo humano necesita producir lactasa.\n Cuando una persona es intolerante a la lactosa en realidad significa que su cuerpo no produce la lactasa suficiente.\n \n En más del 50% de los casos la causa es genética, al finalizar el periodo de lactancia (destete) nuestro cuerpo pierde progresivamente la capacidad de producción de la lactasa. Somos la única especie animal que sigue consumiendo leche de otra especie luego de este periodo.\n \n \n Un poco de historia, en la antigüedad, ante la dificultad de obtener alimentos, la leche era un recurso preciado por sus propiedades nutricionales y aporte proteico, razón por la cual era consumida a diario por los pueblos ganaderos. Aquellos que la digerían mejor tenían una mutación genética localizada en el gen que hacía que la producción de la lactasa no se “desactivase” después de la infancia, en concreto se trata del SNP C/T 13910 (rs4988235) y, evidentemente, estos, mejor adaptados al medio, eran los que más sobrevivían y cuya mutación en el gen pasaba a sus hijos.\n \n Síntomas de intolerancia:\n - Al quedar parcialmente digerida la lactosa en tu intestino las personas con intolerancia presentan síntomas intestinales derivados de la fermentación de la lactasa por las bacterias intestinales tales como: dolor abdominal, sensación de pesadez, gases, retortijones, distensión abdominal y diarrea.\n - Existen diferentes grados de intolerancia, por lo que hay personas que tras consumir mínimas cantidades de leche presentan síntomas y otras sin embargo necesitan grandes cantidades para notar esos síntomas de intolerancia.`,\n results: `El gen MCM6, ayuda a controlar la actividad del gen de la lactasa (gen LCT). La intolerancia a la lactosa en la adultez es causada por la expresión gradualmente decreciente del gen LCT luego de la infancia, que ocurre en la mayoría de los humanos.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tenés baja posibilidad de presentar intolerancia a la lactosa, pero esto no significa que no puedas desarrollarla.\n - Esto es una predisposición que te acompañará siempre, pero la reacción de tu cuerpo a la lactosa también se modifica por el ambiente y otros factores.\n - Nuestro cuerpo digiere la lactosa a través de una sustancia (enzima lactasa) que se produce a “demanda”, si habitualmente no consumís lacteos y los incorporaras repentinamente podrías tener alguna dificultad en su digestión, esto no significa que seas intolerante.\n - Si por hábito no incorporaras leche a tu dieta, el calcio está presente también en tofu (queso vegetariano), semillas (sésamo, girasol), fruta seca (avellana, almendras), cereales (amaranto, quinoa y avena), y vegetales (coles, radicheta, garbanzos), aunque por absorberse distinto que las fuentes animales en algunos casos podrías requerir suplementación supervisada.\n - Para más información podés consultar a un médico clínico o nutricionista.`,\n 1: ``,\n 2: `- Tus genes indican que tenés posibilidad de presentar intolerancia a la lactosa, pero esto no significa que vayas a desarrollarla.\n - Esto es una predisposición que te acompañará siempre, pero la reacción de tu cuerpo a la lactosa también se modifica por el ambiente y otros factores.\n - Si tenés síntomas gastrointestinales, aunque sean inespecíficos y no se relacionen con ingesta de lácteos, consultá con tu médico para confirmar/descartar el diagnóstico.\n - Si fueras intolerante, para aliviar los síntomas descritos hasta tanto consultes a tú médico te recomendamos: alimentos a temperaturas templadas, preparaciones sólidas en lugar de líquidas, comer volúmenes pequeños y frecuentemente.\n - Si necesitaras eliminar la lactosa de tu dieta, además de encontrarse en la leche y sus derivados (queso y yogur) está presente en: chocolate con leche, panes lacteados, helados a la crema, postres, preparaciones y salsas a base de leche.\n - Si tenés dudas, hasta tanto confirmes tu intolerancia, los lácteos que podés consumir de forma segura son los deslactosados.\n - La lactosa se encuentra como aditivo en la industria alimenticia, en las etiquetas la encontras como: monohidrato de lactosa, suero de leche y cuajo.\n - La celiaquía y la enfermedad de Crohn producen una “símil intolerancia a la lactosa” (intolerancia secundaria). Es importante que tu médico lo diagnostique para instaurar el tratamiento correcto.\n - Existen varios niveles de intolerancia. Los menos intolerantes pueden consumir quesos madurados y leches fermentadas, solo hay que hacer una correcta selección con tu médico o nutricionista.\n - Si debieras eliminar la leche y derivados de tu dieta, el calcio está presente también en tofu (queso vegetariano), semillas (sésamo, girasol), fruta seca (avellana, almendras), cereales (amaranto, quinoa y avena), y vegetales (coles, radicheta, garbanzos), aunque por absorberse distinto que las fuentes animales en algunos casos podría requerir suplementación supervisada.`,\n },\n bibliography: `Nana Yaa Baffour-Awuah* , Sarah Fleet* , Susan S. Baker, Johannah L. Butler, Catarina Campbell, Samuel Tischfield, Paul D. Mitchell, Jennifer E. Moon, Sophie Allende-Richter, Laurie Fishman, Athos Bousvaros, Victor Fox, Mikko Kuokkanen, Robert K. Montgomery, Richard J. Grand, and Joel N. Hirschhorn.Functional Significance of Single Nucleotide Polymorphisms in the Lactase Gene in Diverse United States Subjects and Evidence for a Novel Lactase Persistence Allele at -13909 in Those of European Ancestry`\n },\n \"Sensibilidad a la cafeína\": {\n label: \"Cafeína\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento la cafeína, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\n \n Tus genes indican que podrías metabolizar la cafeína de forma rápida, aunque esto no lo determina.`,\n 1: \"\",\n 2: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento la cafeína, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\n \n Tus genes indican que podrías metabolizar la cafeína de forma lenta, aunque esto no lo determina.`,\n },\n generalInfo: `La cafeína es una sustancia de sabor amargo que está naturalmente presente en las semillas, frutos secos u hojas de más de 60 variedades de plantas. Las de la familia Coffea (café) o Theaceae (té), el cacao, guaraná, y la yerba mate.\n El principal mecanismo de acción de la cafeína es como agente estimulante del sistema nervioso central (SNC), aunque además se han observado efectos a nivel muscular y cardiovascular.\n \n Su principal uso es como estimulante del sistema nervioso para disminuir la somnolencia. Se recomienda idealmente iniciar su consumo luego de 90 minutos de despertarnos ya que por la mañana naturalmente nuestro cuerpo experimenta un aumento de cortisol (CAR, respuesta al despertar del cortisol), hormona que nos permite estar alertas y despiertos. Si durante este pico consumimos cafeína disminuimos el efecto de ambos, el de la cafeína y el del cortisol. \n \n La cantidad de cafeína recomendada por día es de hasta 400 mg (4 tazas diarias), pero no todas las personas reaccionan igual frente a esa dosis de cafeína. El exceso de esta sustancia puede producir en algunos individuos, insomnio, nerviosismo, malestar estomacal, aumento de la frecuencia cardiaca y/o temblores musculares.\n \n En metabolizadores lentos se relaciona el consumo de cafeína con aumento del riesgo de infarto agudo de miocardio (IAM). `,\n results: `El gen CYP1A2 codifica el citocromo P4501A2, una enzima responsable del 95% del metabolismo de la cafeína. La variante rs762551 en este gen afecta la velocidad de metabolización de la cafeína.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu metabolismo de la cafeína es más rápido, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es menor.\n - Aunque es poco probable que presentes síntomas, la cantidad de cafeína recomendada por día es de hasta 400 mg, que equivale a 4 tazas de café.\n - Otras bebidas que contienen cafeína son el té (verde y negro), las que contienen cacao y las bebidas cola (una taza tiene la mitad de cafeína que una taza de café, aproximadamente 50 mg).\n - Los tipos de café que más cafeína poseen son los de filtro y expreso, mientras que el instantáneo y descafeinado son los que menos cantidad poseen.\n - En caso de presentar síntomas, evitá las bebidas cafeinadas luego del mediodía, y reducí el consumo total diario de cafeína a menos de 200 mg/día (2 tazas). Si continuas con estos síntomas luego de reducir la dosis, considerá eliminarla.\n - El café es un poderoso antioxidante ayudando a frenar el envejecimiento celular, aunque metabolices la cafeína más rápido que otras personas igual gozas de estos beneficios.\n - Si las bebidas cafeinadas no fueran de tu preferencia, las moras, frambuesas y ananá son las frutas con una capacidad antioxidante similar al café.\n - Puede tener efecto diurético y/o laxante, como tu organismo la metaboliza rápidamente es poco probable que presentes estos signos al consumirla.\n - La cafeína atraviesa la placenta. Si estás embarazada o planeas estarlo considerá que la dosis recomendada es de 200 mg /día, lo que equivale a 2 tazas diarias.\n - Para más información consultá a tu médico o nutricionista.`,\n 1: ``,\n 2: `- Tus genes indican que tu metabolismo de la cafeína es más lento, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es mayor que la media de la población.\n - Se recomienda consumir hasta 400mg de cafeína por día, que equivale a 4 tazas de café.\n - Otras bebidas que contienen cafeína son el té (verde y negro), las que contienen cacao y las bebidas cola (una taza tiene la mitad de cafeína que una taza de café, aproximadamente 50 mg).\n - Los tipos de café que más cafeína poseen son los de filtro y expreso, mientras que el instantáneo y descafeinado son los que menos cantidad poseen.\n - En caso de presentar síntomas, evitá las bebidas cafeinadas luego del mediodía, y reducí el consumo total diario de cafeína a menos de 200 mg/día (2 tazas). Si continuas con estos síntomas luego de reducir la dosis, considerá eliminarla.\n - El café tiene sustancias antioxidantes y antiinflamatorias, pero si tenés factores de riesgo cardiovasculares o hipertensión arterial limita su consumo a 2 tazas diarias porque puede producir un aumento transitorio de la presión arterial.\n - Si tu colesterol LDL está elevado posiblemente el café filtrado sea el más apropiado. El papel de filtro retiene ciertas sustancias (diterpenos) presentes en el café que se asocian al aumento de colesterol.\n - La cafeína aumenta la eliminación de calcio, pero si tu alimentación es equilibrada esto no representa un factor de riesgo importante para tu salud ósea.\n - La cafeína atraviesa la placenta. Si estás embarazada o planeas estarlo considerá que la dosis recomendada es de 200 mg/día, lo que equivale a 2 tazas diarias.`,\n },\n bibliography: `Djordjevic, N., Ghotbi, R., Jankovic, S., & Aklillu, E. (2010). Induction of CYP1A2 by heavy coffee consumption is associated with the CYP1A2 -163C>A polymorphism. European Journal of Clinical Pharmacology, 66(7), 697–703.\n Sachse, C., Brockmöller, J., Bauer, S., & Roots, I. (1999). Functional significance of a C→A polymorphism in intron 1 of the cytochrome P450 CYP1A2 gene tested with caffeine: Short report. British Journal of Clinical Pharmacology, 47(4), 445–449.`\n },\n \"Equilibrio depuración hepática\": {\n label: \"Depuración hepática\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `No presenta riego genético.`,\n 1: \"\",\n 2: `Conocer lo que dicen tus genes te permite modificar tu estilo de vida y hábitos alimentarios para mejorar la forma en la que tu cuerpo depura sustancias.\n \n Tus genes indican que algunos mecanismo de depuración hepática podrían estar disminuido, aunque esto no lo determina.`,\n },\n generalInfo: `Existen variantes en nuestros genes que pueden afectar, favoreciendo o protegiéndonos, a los riesgos específicos que un individuo tiene a desarrollar un problema de salud al exponerse a una sustancia química específica o xenobiótico. \n \n La respuesta que ese individuo tenga a determinada sustancia, está en estrecha relación con el proceso de detoxificación que su cuerpo lleve a cabo.\n Las diferencias genéticas entre los individuos pueden hacer a una persona de hasta 100 veces más susceptible a los efectos de una sustancia dada que a otro.\n Nuestro organismo cuenta con varias rutas de destoxificación, pero una de las principales ocurre en el hígado.\n \n El objetivo de esta vía es transformar los tóxicos solubles en agua a fin de poder eliminarlos principalmente por orina.\n \n Este proceso se desarrolla en dos etapas, la primera intervienen enzimas del citocromo P450 y en la segunda etapa distintas reacciones químicas donde se conjuga la sustancia tóxica con grupos solubles en agua.\n \n Síntomas de sobrecarga hepática a xenobióticos: \n - Malestar general, migraña, fatiga.\n - Dolor articular, fiebre crónica\n - Reacciones no deseadas a medicamentos habituales\n - Reacciones adversas a la cafeína y al alcohol\n - Neuropatías y trastornos del sueño`,\n results: `EL CYP 450 es una superfamilia de enzimas que intervienen en el metabolismo de fármacos, carcinógenos, esteroides, ácidos grasos, pesticidas y alcaloides. Su función es la de metabolizar en primera instancia estas sustancias a través de reacciones de oxidorreducción, protegiéndonos del daño o estrés oxidativo que producirían en el resto del organismo si no fueran procesados.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `No hay recomendaciones.`,\n 1: ``,\n 2: `- Tus genes indican que podrías presentar un desequilibrio en la actividad enzimática de alguna de las fases de destoxificacion, aunque esto no lo determina. \n - Algunas sustancias derivadas de la cocción prolongada de la carne, como las acrilamidas y furanos (coloración marrón), aminas aromáticas (brasas), micotoxinas ( legumbres y fruta secas) y epóxidos de los plásticos, son metabolizadas por el hígado en dos fases, a su forma soluble para poder eliminarlas principalmente por orina.\n - Si existiera un desequilibrio en estas fases dichas sustancias tenderían a acumularse. Para lograr un equilibrio y que tu cuerpo pueda deshacerse correctamente de estas sustancias:\n - Evita recalentar la comida en envases plásticos o beber de botellas plásticas. Siempre preferí el vidrio o cerámica.\n - Almacena la fruta seca y semillas en bolsa hermética en la heladera o frezzer, retirala tiempo antes de consumirla, así evitaras que se forme moho. Las micotoxinas están presentes naturalmente aunque no las veamos.\n - Asegúrate de incluir diariamente vitaminas del complejo B ( cereales integrales, fruta seca y vegetales), minerales como magnesio, selenio y zinc, compuestos azufrados de brócoli, coliflor, col rizada, col de brusela, kale , ajo y cebolla. Germinados como brotes de soja o alfalfa.\n - Podés utilizar hierbas como boldo, diente de león, alcachofera. Podes infusionarla o mezclarla con la yerba mate.>\n - Es importante el consumo diario de antioxidantes como el resveratrol de uvas y frutos rojos, vitamina C y glutatión (espinacas, palta, esparrago, papa, brócoli y cítricos)\n - Hidratate con agua potable frecuentemente\n - Minimiza el consumo de azúcar, refinados, procesados, carne roja, café en exceso y alcohol.`,\n },\n bibliography: `Arzu Gunes, Marja-Liisa Dahl.Variation in CYP1A2 activity and its clinical implications: Influence of environmental factors and genetic polymorphism.`\n },\n \"Niveles séricos de homocisteina\": {\n label: \"Homocisteína\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite saber si tenés predisposición a valores elevados de Homocisteína en sangre y modificar tus hábitos para evitar los efectos de su exceso.\n \n Tus genes indican que tus niveles de homocisteína en sangre podrían estar habituales, tus genes no te determinan, tus hábitos si.`,\n 1: `Conocer lo que dicen tus genes te permite saber si tenés predisposición a valores elevados de Homocisteína en sangre y modificar tus hábitos para evitar los efectos de su exceso.\n \n Tus genes indican que tus niveles de homocisteína en sangre podrían estar moderados, tus genes no te determinan, tus hábitos si.`,\n 2: `Conocer lo que dicen tus genes te permite saber si tenés predisposición a valores elevados de Homocisteína en sangre y modificar tus hábitos para evitar los efectos de su exceso.\n \n Tus genes indican que tus niveles de homocisteína en sangre podrían estar aumentados, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `La homocisteína es un aminoácido que en nuestro organismo participa en diferentes vías del metabolismo celular asociada a vitamina B12, vitamina B6 y ácido fólico. \n \n Normalmente, los niveles de este aminoácido libre en sangre son bajos, ya que es una molécula agresiva para la pared arterial y se considera un factor influyente en el desarrollo de enfermedades cardio y cerebrovasculares.\n \n La causa principal de exceso de homocisteína plasmática es el déficit de ácido fólico, aunque existen factores genéticos que contribuyen en un 60% a mayores niveles de este aminoácido en sangre.\n \n Factores de riesgo:\n - Deficiencia de vitaminas como folato, la vitamina B12 y, en menor medida, por la deficiencia de la vitamina B6 pueden aumentar los niveles de homocisteína en sangre.\n - Además, también está influenciado por enfermedades crónicas, obesidad, hipotiroidismo y deterioro renal.`,\n results: `La homocisteína se forma en nuestro organismo por varias vías, como producto intermedio del metabolismo de otro aminoácido, la metionina y a partir de la homocisteína por remetilación llevado a cabo por la enzima homocisteína metiltransferasa (MTR) la cual requiere de vitamina B12 y de 5, 10 -metilentetrahidrofolato para su correcto funcionamiento. \n \n El gen MTHFR codifica para la enzima Metilentetrahidrofolato reductasa. Esta enzima ayuda a descomponer la homocisteína en sangre. Si su actividad se encuentra alterada, aumentando el riesgo de tener niveles elevados de homocisteína en sangre sobre todo en personas que no incorporen vitamina B en su dieta.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que no tenés predisposición a presentar un aumento de homocisteína en plasma, pero esto no significa que no puedas desarrollarlo.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de homocisteína se modifican fundamentalmente por el ambiente y el estilo de vida.\n - Los niveles de homocisteína pueden aumentar con la edad y por el déficit de vitamina B12, B6 o ácido fólico en la dieta, el consumo de alcohol, o el tabaquismo.\n - Si sospechas que podés tener niveles de homocisteína fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Para mantener niveles saludables de homocisteína en plasma, llevá una dieta balanceada, con buen aporte de vitamina B12, B6 y ácido fólico.\n - Más allá de tu predisposición genética siempre es saludable hacer ejercicio regularmente. Se recomiendan al menos 150 minutos de actividad física moderada o 75 minutos de actividad aeróbica vigorosa semanales.\n - Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).`,\n 1: `- Tus genes indican que tenés predisposición a presentar un leve aumento de homocisteína en plasma, pero esto no significa que vayas a desarrollarlo.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de homocisteína se modifican fundamentalmente por el ambiente y el estilo de vida.\n - Los niveles de homocisteína pueden aumentar con la edad y por el déficit de vitamina B12, B6 o ácido fólico en la dieta, el consumo de alcohol, o el tabaquismo.\n - Si sospechas que podés tener niveles de homocisteína fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Para mantener niveles saludables de homocisteína en plasma, llevá una dieta balanceada, con buen aporte de vitamina B12, B6 y ácido fólico.\n - Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso.\n - Sin embargo, el consumo excesivo de carne, puede aumentar los niveles de Homocisteína. Se debe regular el consumo de carnes y tener una dieta balanceada, para ello, consultar con un nutricionista.\n - En caso de no consumir productos de origen animal, se puede optar por la suplementación de ácido fólico y B12 para evitar deficiencias. Tu médico o nutricionista te indicará las dosis adecuadas basándose en tus requerimientos.\n - Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).\n - Si estás embarazada, o planificando un embarazo, consultá con tu obstetra. Es posible que indique realizar estudios adicionales, seguimiento o tratamiento específico.`,\n 2: `- Tus genes indican que tenés predisposición a presentar un aumento de homocisteína en plasma, pero esto no significa que vayas a desarrollarlo.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de homocisteína se modifican fundamentalmente por el ambiente y el estilo de vida.\n - Los niveles de homocisteína pueden aumentar con la edad y por el déficit de vitamina B12, B6 o ácido fólico en la dieta, el consumo de alcohol, o el tabaquismo.\n - Si sospechas que podés tener niveles de homocisteína fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Para mantener niveles saludables de homocisteína en plasma, llevá una dieta balanceada, con buen aporte de B12, B6 y ácido fólico.\n - Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso.\n - Sin embargo, el consumo excesivo de carne, puede aumentar los niveles de Homocisteína. Se debe regular el consumo de carnes y tener una dieta balanceada, para ello, consultar con un nutricionista.\n - En caso de no consumir productos de origen animal, se puede optar por la suplementación de ácido fólico y B12 para evitar deficiencias. Tu médico o nutricionista te indicará las dosis adecuadas basándose en tus requerimientos.\n - Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).\n - Si estás embarazada, o planificando un embarazo, consultá con tu obstetra. Es posible que indique realizar estudios adicionales, seguimiento o tratamiento específico.`,\n },\n bibliography: `Meta-analysis study to evaluate the association of MTHFR C677T polymorphism with risk of ischemic stroke (nih.gov)\t\n Sci-Hub | Effect of homocysteine on pregnancy: A systematic review. Chemico-Biological Interactions, 293, 70–76 | 10.1016/j.cbi.2018.07.021\n Common genetic loci influencing plasma homocysteine concentrations and their effect on risk of coronary artery disease (nih.gov)`\n },\n \"Actividad antioxidante\": {\n label: \"Antioxidante\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y estilo de vida acorde a tu metabolismo para minimizar los efectos del estrés oxidativo.\n \n Tus genes indican que tu estado antioxidante podría ser el habitual, aunque tus genes no te determinan, tus hábitos si.`,\n 1: \"\",\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y estilo de vida acorde a tu metabolismo para minimizar los efectos del estrés oxidativo.\n \n Tus genes indican que tu estado antioxidante podría estar disminuido, aunque tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `Los radicales libres se pueden formar a partir de muchas moléculas, pero los derivados de la molécula del oxígeno son los que tienen mayor importancia en nuestro organismo.\n Hemos diseñado estrategias genéticas para defendernos de las agresiones de los radicales libres generados naturalmente del metabolismo celular aerobio.\n Se trata de las enzimas que fomentan su inactivación y eliminación, como la superóxido dismutasa (SOD), la catalasa, y la glutatión peroxidasa, entre otras. \n \n Hay otras moléculas que existen en nuestro organismo protegiéndonos del estrés oxidativo, como la ceruloplasmina, las vitaminas antioxidantes, los betacarotenos, la cisteína, y las sustancias que actúan como agonistas del glutatión.\n \n Signos y síntomas:\n - Cuando el equilibrio de oxidantes/antioxidantes se altera y no podemos deshacernos de forma efectiva de los radicales libres padecemos envejecimiento prematuro y aumenta el riesgo de numerosas enfermedades como cardiovasculares, neurológicas, degenerativas y ciertos tipos de cáncer.`,\n results: \"El gen SOD2 codifica para la enzima superóxido dismutasa, que cataliza la dismutación de superóxido en oxígeno y peróxido de hidrógeno.​ Debido a esto es una importante defensa antioxidante en la mayoría de las células expuestas al oxígeno.\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu estado antioxidante podría ser el habitual, aunque esto no lo determina.\n - Esta es una predisposición que te acompañará siempre, pero tu estado antioxidante depende de varias moléculas y del estilo de vida que lleves.\n - Podés beneficiarte del consumo habitual de antioxidantes. Los antioxidantes son sustancias presentes en algunos alimentos que pueden beneficiarte previniendo o retrasando el daño que los radicales libres de oxígeno le generan a nuestras células.\n - Consumí diariamente alimentos ricos en vitamina A, C y E.\n - La vitamina A la encontrás en frutas y verduras como : espinacas, zanahorias, brócoli, calabaza, batata. Las frutas que la contienen son por ejemplo el melón y el mango.\n - En los productos de origen animal encontrás vitamina A en leche y quesos.\n - La vitamina C está presente en las naranjas, arándanos, moras, pomelo, pimientos, kiwi, brócoli, melón, tomate, frutillas.\n - La vitamina E la encontrás en aceites (preferentemente oliva) y semillas y frutas secas tales como semillas de girasol, almendras, avellanas, maní así como también en algunas hortalizas verdes.\n - El oligoelemento selenio también es un poderoso antioxidante ya que ayuda a la formación de enzimas antioxidantes de nuestro organismo. Lo encontrás en: girasol, sésamo, nueces de brasil, arroz integral, coco, avena y cereales integrales, y pescados y mariscos.\n - El licopeno y luteína son pigmentos (rojo y amarillo respectivamente) relacionados con los betacarotenos con poderosa función antioxidante. El licopeno está presente preferentemente en el tomate y la luteína en algunos vegetales como kale, palta,acelga, apio, espárrago, repollo brusela, nabos.\n - También podés utilizar diariamente especias y condimentos con función antioxidante: canela, cúrcuma, tomillo, menta, romero, jengibre.\n - Preferí lácteos fermentados, kéfir de leche, yogur y queso de leche de oveja, cabra y búfala.\n - Las infusiones son una buena y fácil opción para el consumo de antioxidantes, preferí los té de arándanos, matcha o té verde, té de rooibos, yerba mate.`,\n 1: ``,\n 2: `- Tus genes indican que tu estado antioxidante podría estar disminuido y tu cuerpo podría no estar deshaciéndose correctamente de los radicales libres de oxígeno que se producen como producto del metabolismo celular.\n - Esta es una predisposición que te acompañará siempre, pero tu estado antioxidante depende de varias moléculas y del estilo de vida que lleves.\n - Los antioxidantes son sustancias presentes en algunos alimentos que pueden beneficiarte previniendo o retrasando el daño que los radicales libres de oxígeno le generan a nuestras células.\n - Consumí diariamente alimentos ricos en vitamina A, C y E.\n - La vitamina A la encontrás en frutas y verduras como : espinacas, zanahorias, brócoli, calabaza, batata. Las frutas que la contienen son por ejemplo el melón y el mango.\n - En los productos de origen animal encontrás vitamina A en leche y quesos.\n - La vitamina C está presente en las naranjas, arándanos, moras, pomelo, pimientos, kiwi, brócoli, melón, tomate, frutillas.\n - Preferi el maiz morado al amarillo, es el mas rico en antocianinas.\n - La vitamina E la encontrás en aceites ( preferentemente oliva) y semillas y frutas secas tales como semillas de girasol, almendras, avellanas, maní así como también en algunas hortalizas verdes.\n - El oligoelemento selenio también es un poderoso antioxidante ya que ayuda a la formación de enzimas antioxidantes de nuestro organismo. Lo encontrás en: girasol, sésamo, nueces de brasil, arroz integral, coco, avena y cereales integrales, y pescados y mariscos.\n - El licopeno y luteína son pigmentos (rojo y amarillo respectivamente) relacionados con los betacarotenos con poderosa función antioxidante. El licopeno está presente preferentemente en el tomate y la luteína en algunos vegetales como kale, palta,acelga, apio, espárrago, repollo brusela, nabos.\n - También podés utilizar diariamente especias y condimentos con función antioxidante: canela, cúrcuma, tomillo, menta, romero, jengibre. La curcuma se activa con la pimienta, úsalas juntas!\n - Las infusiones son una buena y fácil opción para el consumo de antioxidantes, preferí los té de arándanos, matcha o té verde, té de rooibos, yerba mate.\n - Si te gusta el chocolate, selecciona aquellos de calidad !\n - Preferí lácteos fermentados, kéfir de leche, yogur y queso de leche de oveja, cabra y búfala.\n - Preferí siempre actividades al aire libre, el entrenamiento incluye descansar,evita ultraprocesados, chequea los niveles de tus vitaminas. Lleva un estilo de vida anti inflamatorio. `,\n },\n bibliography: `Zhi Xu, MD, PhD ; Haixia Zhu, MD ; John M. Luk.Clinical Significance of SOD2 and GSTP1 Gene Polymorphisms in Chinese Patients With Gastric Cancer`\n },\n \"Sensibilidad a la sal\": {\n label: \"Sal\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite saber tu grado de sensibilidad a la sal, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\n Tus genes indican que podrías presentar una sensibilidad habitual a la sal, tus genes no te determinan, tus hábitos si. `,\n 1: `Conocer lo que dicen tus genes te permite saber tu grado de sensibilidad a la sal, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\n Tus genes indican que podrías presentar una sensibilidad moderada a la sal, tus genes no te determinan, tus hábitos si. `,\n 2: `Conocer lo que dicen tus genes te permite saber tu grado de sensibilidad a la sal, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\n Tus genes indican que podrías presentar una sensibilidad aumentada a la sal, tus genes no te determinan, tus hábitos si. `,\n },\n generalInfo: `La sal común es un mineral esencial para la vida. Su nombre científico es cloruro sódico porque está constituida por iones de sodio y cloruro cristalizados. El sodio es imprescindible para el correcto funcionamiento del sistema nervioso, el sistema muscular y la homeostasis, es decir, la regulación de los líquidos dentro de nuestras células. El sodio, además, es el responsable del sabor salado.\n Además de su uso culinario, desde la antigüedad se usa como conservante por su capacidad de absorber la humedad (agua) reduciendo el crecimiento microbiano.\n \n En encontrar la justa medida y tener acceso a las versiones más saludables y ricas en minerales está el desafío. \n `,\n results: `El gen ACE contiene la información para producir la enzima convertidora de angiotensina I. \n Se produce en el sistema nervioso central, riñón y pulmón. Convierte la angiotensina I en angiotensina II, que incrementa la vasoconstricción, interviniendo de esta forma en la regulación de la presión arterial\n \n El alelo I (inserción) está asociado con una menor producción de la enzima otorgando mayor sensibilidad a la hipertensión por consumo de sal.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que la actividad de la enzima ACE es la habitual, lo que significa que tu sensibilidad a la sal y sus efectos hipertensivos son similares a cualquier individuo, pero esto no quiere decir que sea así ya que interfieren otros factores.\n - De todos modos, no te confíes, la presión arterial responde no solo a nuestros genes sino a nuestro estilo de vida y alimentación. Mantené un peso saludable. No fumes\n - Hacé ejercicio regularmente. Se recomiendan al menos 150 minutos de actividad física moderada o 75 minutos de actividad aeróbica vigorosa semanales.\n - Seguí una dieta saludable con alimentos ricos en calcio, potasio, magnesio y fibra, que al combinarse, ayudan a disminuir la presión arterial.\n - Hacete controles de rutina que incluyan medición de la presión arterial. Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).\n - Evita el consumo diario de alimentos ricos en sodio. El sodio está presente en cantidades muy elevadas en salsas y productos untables, enlatados, conservas, fiambres y quesos duros\n - El consumo de sal recomendado por la OMS es de 5gr de sal/día, es decir 1 cucharadita de café al ras distribuida a lo largo del día.\n - Si ya tenés HTA, es importante prevenir que empeore o que cause complicaciones. Controlate con tu médico periódicamente y seguí tu plan de tratamiento incluyendo hábitos de vida saludables y, si está indicado, medicamentos.\n - Para más información podés consultar a tu médico clínico.`,\n 1: `- Tus genes indican que la actividad de la enzima ACE es moderada, lo que significa que tu sensibilidad a la sal es moderada, pero esto no quiere decir que sea así.\n - Mantené un peso saludable. No fumes\n - Hacé ejercicio regularmente. Se recomiendan al menos 150 minutos de actividad física moderada o 75 minutos de actividad aeróbica vigorosa semanales.\n - Seguí una dieta saludable con alimentos ricos en calcio, potasio, magnesio y fibra, que al combinarse, ayudan a disminuir la presión arterial.\n - Hacete controles de rutina que incluyan medición de la presión arterial. Tené un registro de tu presión arterial realizando una correcta toma (piernas descruzadas, con la suela del pie tocando el piso, espalda contra el respaldo de la silla y el brazo a la altura del corazón).\n - Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).\n - Evita el consumo excesivo o diario de alimentos ricos en sodio. El sodio está presente en cantidades muy elevadas en salsas y productos untables, enlatados, conservas, fiambres y quesos duros\n - Si ya tenés HTA, es importante prevenir que empeore o que cause complicaciones. Controlate con tu médico periódicamente y seguí tu plan de tratamiento incluyendo hábitos de vida saludables y, si está indicado, medicamentos.\n - Para más información podés consultar a tu médico clínico.`,\n 2: `- Tus genes indican que la probabilidad de presentar menor ACE está aumentada, siendo más sensible a la sal y sus efectos hipertensivos, pero esto no quiere decir que sea así.\n - Mantené un peso saludable. No fumes\n - Hacé ejercicio regularmente. Se recomiendan al menos 150 minutos de actividad física moderada o 75 minutos de actividad aeróbica vigorosa semanales.\n - Seguí una dieta saludable con alimentos ricos en calcio, potasio, magnesio y fibra, que al combinarse, ayudan a disminuir la presión arterial.\n - Hacete controles de rutina que incluyan medición de la presión arterial.\n - Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).\n - Evita el consumo excesivo o a diario de alimentos ricos en sodio. El sodio está presente en cantidades muy elevadas en salsas y productos untables, panes, sopas cremas, enlatados, conservas, fiambres y quesos duros.\n - Como estrategia podes lavar las legumbres o atún enlatado a fin de quitarle el exceso de sodio. Ponelo en un colador bajo el chorro de agua y dejalo correr unos minutos.\n - Elegí productos que digan sin sal/sodio o muy bajo en sodio.\n - Nuestro paladar puede reeducarse, reemplaza la sal de mesa por otros condimentos que le den sazón, como pimienta y ajo en polvo, cebolla, albahaca, cilantro y comino.\n - Si ya tenés HTA, es importante prevenir que empeore o que cause complicaciones. Controlate con tu médico periódicamente y seguí tu plan de tratamiento incluyendo hábitos de vida saludables y, si está indicado, medicamentos.\n - Para más información podés consultar a tu médico clínico.`,\n },\n bibliography: `Esteban Poch, Daniel González, Vicente Giner, Ernesto Bragulat, Antonio Coca, Alejandro de la Sierr.Molecular Basis of Salt Sensitivity in Human Hypertension Evaluation of Renin-Angiotensin-Aldosterone System Gene Polymorphism`\n },\n \"Respuesta al alcohol\": {\n label: \"Alcohol\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento el alcohol, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\n \n Tus genes indican que tu metabolismo del alcohol sería habitual, aunque esto no lo determina.`,\n 1: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento el alcohol, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\n \n Tus genes indican que tu metabolismo del alcohol sería intermedio, aunque esto no lo determina.`,\n 2: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento el alcohol, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\n \n Tus genes indican que tu metabolismo del alcohol sería acelerado, aunque esto no lo determina.`,\n },\n generalInfo: `El alcohol es una sustancia que, al ser incorporada, sufre distintas reacciones químicas en nuestro organismo, generando metabolitos intermedios, como el acetaldehído, responsable de afectar a nuestro cuerpo. \n En algunos individuos debido a su genética, esta oxidación del alcohol puede ser más rápida o más lenta. Si es más rápida tenderán a acumular más fácilmente acetaldehído en los tejidos.\n \n El acetaldehído tiene efectos deletéreos en el cuerpo, por esta razón las personas con metabolismo rápido a diferencia de las de metabolismo lento tienen menos tolerancia al alcohol, sufren resacas más fuertes y frecuentes y tienen un menor riesgo de dependencia del alcohol.\n \n Con el tiempo, el consumo excesivo de alcohol puede causar enfermedades crónicas, entre ellas. hipertensión arterial, enfermedad cardiaca, accidentes cerebrovasculares, enfermedad del hígado y problemas digestivos. Cáncer de mama, boca, garganta, laringe, esófago, hígado, colon y recto.\n \n Conocer tus genes permite conocer tu velocidad de metabolismo del alcohol, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\n \n El alcohol produce en nuestro organismo:\n - Enrojecimiento e incrementos de temperatura en la piel por vasodilatación\n - Ojos enrojecidos, dolor de cabeza\n - Sed y aumento de la micción\n - Náuseas\n - Aumento del ritmo cardíaco (taquicardia) y respiratorio`,\n results: `El gen ADH1B contiene la información para producir la enzima Alcohol deshidrogenasa 1B (ADH1B) en nuestro hígado.\n Esta enzima cataliza la conversión de alcohol a acetaldehído. \n Se ha observado una asociación entre la presencia del SNP rs1229984 (ADH2*2) en el gen que codifica para esta enzima y el desarrollo de dependencia al alcohol.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu metabolismo del alcohol está dentro de límites normales, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es menor.\n - Es probable que no sientas aversión por el alcohol y no presentes resacas luego de su consumo.\n - Aunque tu metabolismo sea normal, el consumo excesivo de alcohol puede aumentar el riesgo de tener problemas de salud graves.\n - Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).\n - Recordá que el alcohol aporta energía( calorías) pero son “ vacías”, es decir que no tiene ningún nutriente necesario para el organismo.\n - En ciertas situaciones, los riesgos del alcohol pueden ser mayores. Evitá especialmente el alcohol si estás embarazada, si tuviste un accidente cerebrovascular ó tenés una enfermedad hepática, pancreática o cardiovascular.`,\n 1: `- Tus genes indican que tu metabolismo del alcohol se encuentra ligeramente aumentado, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es mayor, pero no significa que si o si vayas a presentarlos.\n - Si elegís beber alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados)\n - Si tenés factores de riesgo cardiovascular o hipertensión arterial limitá el consumo de alcohol.\n - Recordá que el alcohol aporta energía( calorías) pero son “ vacías”, es decir que no tiene ningún nutriente necesario para el organismo.\n - En ciertas situaciones, los riesgos del alcohol pueden ser mayores. Evitá especialmente el alcohol si estás embarazada, si tuviste un accidente cerebrovascular ó tenés una enfermedad hepática, pancreática o cardiovascular.`,\n 2: `- Tus genes indican que tu metabolismo del alcohol se encuentra aumentado, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es mayor, pero no significa que si o si vayas a presentarlos.\n - Es probable que presentes resacas fuertes y frecuentes luego de su consumo y hasta sientas aversión por el alcohol.\n - Si elegís beber alcohol, hacelo con moderación en situaciones especiales (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados)\n - Si tenés factores de riesgo cardiovascular o hipertensión arterial limitá el consumo de alcohol.\n - En ciertas situaciones, los riesgos del alcohol pueden ser mayores. Evitá especialmente el alcohol si estás embarazada, si tuviste un accidente cerebrovascular ó tenés una enfermedad hepática, pancreática o cardiovascular.`,\n },\n bibliography: `Raymond K. Walters, Renato Polimanti, Emma C. Johnson, Jeanette N. McClintick, Mark J. Adams, Amy E. Adkins,.Transancestral GWAS of alcohol dependence reveals common genetic underpinnings with psychiatric disorders. Published in final edited form as: Nat Neurosci. 2018 December ; 21(12): 1656–1669. doi:10.1038/s41593-018-0275-1`\n },\n \"Requerimiento de magnesio\": {\n label: \"Magnesio\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permitirá adecuar el consumo de este mineral para mantener los valores séricos dentro de los rangos de normalidad.\n \n Tus genes indican que podrías presentar niveles de magnesio habituales en sangre, tus genes no te determinan, tus hábitos si.`,\n 1: `Conocer lo que dicen tus genes te permitirá adecuar el consumo de este mineral para mantener los valores séricos dentro de los rangos de normalidad.\n \n Tus genes indican que podrías presentar niveles de magnesio altos en sangre, tus genes no te determinan, tus hábitos si.`,\n 2: `Conocer lo que dicen tus genes te permitirá adecuar el consumo de este mineral para mantener los valores séricos dentro de los rangos de normalidad.\n \n Tus genes indican que podrías presentar niveles de magnesio bajos en sangre, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `El magnesio es un mineral esencial y el segundo electrolito más abundante de nuestro cuerpo. Interviene en más de 300 reacciones químicas en nuestro organismo.\n \n Es necesario en muchos procesos celulares, casi el 60% del magnesio del cuerpo está en los huesos, el 20% en músculo esquelético y otro 20% en tejido blando. Una pequeña fracción circula en nuestra sangre, cuya valoración se asocia con algunas enfermedades crónicas tales como diabetes, hipertensión y osteoporosis.\n \n Debido a la desmineralización de los suelos cada vez es más complejo poder cubrir su requerimiento solo con alimentos. Aunque la mayoría de las deficiencias se adquieren por una alimentación insuficiente, se ha demostrado que las concentraciones de magnesio séricas tienen un componente hereditario cercano a solo el 30%.\n \n Los niveles bajos de magnesio pueden causar:\n - Síntomas de deficiencia leve: Pérdida de apetito, náuseas, vómitos, fatiga, debilidad.\n - Síntomas de deficiencia moderada: entumecimiento, hormigueo, contracciones musculares y calambres, convulsiones, cambios de personalidad, latidos cardíacos irregulares.\n - Síntomas de deficiencia grave: bajo nivel de calcio en sangre (hipocalcemia), bajo nivel de potasio en la sangre (hipopotasemia).\n \n Factores de riesgo:\n - La falta de magnesio se puede presentar más frecuentemente en personas que consumen alcohol en exceso o en aquellas que presentan una absorción alterada, por ejemplo en algunas enfermedades gastrointestinales o cirugías que causen malabsorción (cirugía bariátrica entre otras), adultos mayores y personas que tengan diabetes tipo 2.`,\n results: `El gen ATP2B1 contiene la información para producir una enzima que depende de magnesio para producir ATP (energía celular) aprovechando la energía suministrada por gradientes de calcio.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu concentración de magnesio en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.\n - Si sospechás que podés tener niveles de magnesio fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Es probable que llevar una dieta variada sea suficiente para obtener los niveles de magnesio necesarios para tu cuerpo.\n - Podés cubrir tus necesidades consumiendo diariamente cereales, legumbres y vegetales: medio plato playo de cereales + una cucharada chica de legumbres al día (o en su remplazo medio plato playo semanal) y un plato de verduras crudas y/o cocidas al día.\n - Los alimentos con mayor contenido de magnesio son los cereales, legumbres, frutas secas, semillas y vegetales.\n - Los vegetales donde predomina son los de color verde oscuro, como espinaca y acelga. Para conservar el magnesio del alimento, el mejor método de cocción es vapor, no hervido.\n - Preferí consumir cereales en su versión integral, ya que el magnesio se encuentra en el germen y corteza del grano. Por ejemplo: arroz integral, germen de trigo, salvado de avena y panes integrales.\n - Las legumbres donde predomina son las lentejas, garbanzos, porotos y judías verdes. También son excelentes fuentes: Almendras, dátiles y semillas de girasol. Para mejorar la absorción actívalas, dejándolas en remojo 2-4 horas mínimo antes de consumirlas.`,\n 1: `- Tus genes indican que en algún momento podrías presentar una concentración aumentada de magnesio en sangre, aunque esto no quiere decir que lo presentes.\n - Es probable que llevar una dieta equilibrada sea suficiente para obtener los niveles de magnesio necesarios para tus músculos. Si deseas verificar tus niveles en sangre, se utilizan técnicas de laboratorio (hemograma), que reflejan lo que sucede en el momento que se realiza el estudio.\n - A pesar de tener esta predisposición no dejes de consumir alimentos ricos en este mineral, el exceso de magnesio relacionado a la dieta es poco frecuente. El magnesio es neuroprotector, protege frente a la diabetes y enfermedades cardiovasculares, mejora el estado de ánimo y nuestro descanso.\n - Los alimentos con mayor contenido de magnesio son los cereales, legumbres, frutas secas, semillas y vegetales.\n - Preferí consumir cereales en su versión integral, ya que el magnesio se encuentra en el germen y corteza del grano. Por ejemplo: arroz integral, germen de trigo, salvado de avena y panes integrales.\n - Las legumbres donde predomina son las lentejas, garbanzos, porotos y judías verdes. También son excelentes fuentes: Almendras, dátiles y semillas de girasol. Para mejorar la absorción actívalas, dejándolas en remojo 2-4 horas mínimo antes de consumirlas.\n - Los vegetales donde predomina son los de color verde oscuro, como espinaca y acelga. Para conservar el magnesio del alimento, el mejor método de cocción es el vapor, no hervido.\n - Para más información podés consultar a un médico clínico o nutricionista.`,\n 2: `- Tus genes indican que tus niveles de magnesio en sangre podrían encontrarse disminuidos, pero esto no significa que sea así. Es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Los alimentos con mayor contenido de magnesio son los cereales, legumbres, frutas secas, semillas y vegetales.\n - Los niveles de magnesio mejoran consumiendo niveles suficientes de proteínas animales/vegetales, y vitamina. Esto lo lográs combinando los alimentos ricos en magnesio con carnes (vaca, pollo, pescado) tofu, seitán y lácteos (leche, queso, yogur).\n - Preferí consumir cereales en su versión integral, ya que el magnesio se encuentra en el germen y corteza del grano. Por ejemplo: arroz integral, germen de trigo, salvado de avena y panes integrales.\n - Las legumbres donde predomina son las lentejas, garbanzos, porotos y judías verdes. También son excelentes fuentes: Almendras, dátiles y semillas de girasol.\n - Los vegetales donde predomina son los de color verde oscuro, como espinaca y acelga. Para conservar el magnesio del alimento, el mejor método de cocción es el vapor, no hervido.\n - Las semillas donde predomina son las de girasol, zapallo y lino. Para mejorar la absorción actívalas, dejándolas en remojo 2-4 horas antes de consumirlas.\n - Si sos celíaco, tenés deficiencia de B1 y B6 o enfermedades que se asocian con malabsorción intestinal o nefropatías (enfermedades del riñón) podes tener mayor probabilidad de tener magnesio bajo.\n - Existen distintos tipos de suplementos de magnesio, los más recomendable son los orgánicos y quelados como por ejemplo: Bisglicinato, citrato, treonato, taurinato, malato, gluconato, aspartato. Cada “forma” tiene una indicación y dosis, para más información podés consultar a un médico clínico o nutricionista.\n - Evita los suplementos inorgánicos como óxido, cloruro, carbonato y sulfato.`,\n },\n bibliography: `Meyer, Tamra E., Germaine C. Verwoert, Shih-Jen Hwang, Nicole L. Glazer, Albert V. Smith, Frank J. A. van Rooij, Georg B. Ehret, et al. 2010. “Genome-Wide Association Studies of Serum Magnesium, Potassium, and Sodium Concentrations Identify Six Loci Influencing Serum Magnesium Levels.” PLoS Genetics 6 (8). https://doi.org/10.1371/journal.pgen.1001045.`\n },\n \"Requerimiento de vitamina B12\": {\n label: \"Vitamina B12\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B12 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\n \n Tus genes indican que tus niveles vitamina B12 en sangre podrían ser habituales, tus genes no te determinan, tus hábitos si.`,\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B12 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\n \n Tus genes indican que tus niveles vitamina B12 en sangre podrían estar aumentados, tus genes no te determinan, tus hábitos si.`,\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B12 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\n \n Tus genes indican que tus niveles vitamina B12 en sangre podrían estar disminuidos, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `La vitamina B12 es una vitamina esencial, participa en la generación de nuevas moléculas de ADN y proteínas, la regulación de expresión de genes y las vías celulares para obtener energía celular. Participa también en la maduración de los glóbulos rojos de la sangre, y de otras células sanguíneas.\n \n No podemos sintetizar nuestra propia B12, por lo que la única manera de obtenerla es a partir de alimentos y a partir de la microbiota intestinal.\n \n La deficiencia de vitamina B12 ocurre cuando el cuerpo no recibe o no puede absorber la cantidad de vitamina que el cuerpo necesita.\n \n Signos y síntomas:\n\n Los niveles bajos de vitamina B12 pueden causar:\n - Anemia megaloblástica, debe ser diagnosticada por técnica de laboratorio.\n - Pérdida del equilibrio, entumecimiento u hormigueo en brazos y piernas, alteración de la sensibilidad, disminución de la capacidad para sentir dolor, alteración en la forma de caminar o moverse, trastornos visuales, irritabilidad y depresión.\n - Glositis (dolor y enrojecimiento de la lengua), úlceras en la boca.\n - Malabsorción de algunos nutrientes.`,\n results: `El gen CUBN codifica para el receptor encargado de la absorción de la vitamina B12 junto con el FI en el intestino. El gen TCN1 codifica para la proteína de unión a la vitamina B12, transcobalamina I o haptocorrina, facilita el ingreso de la vitamina a las células.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu concentración de vitamina B12 en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B12 también se modifican por el ambiente y el estilo de vida.\n - Si sospechas que podés tener niveles de B12 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Es probable que el aporte de tu dieta de alimentos ricos en vitamina B12 sea suficiente para el correcto funcionamiento de tus procesos biológicos.\n - Si estás embarazada o planeas estarlo te recomendamos mantener los niveles de esta vitamina en sus valores normales para el correcto desarrollo fetal. Consultá a tu médico si necesitas suplementación.\n - Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso.\n - Cubrimos nuestra necesidad diaria por ejemplo con 100 gr de carne + 1 taza de 250 ml de leche.\n - Si sos vegetariano o vegano consultale a tu médico si necesitas suplementación, ya que la B12 está exclusivamente en alimentos de origen animal.\n - Consumir antiácidos con regularidad (en caso de úlceras y gastritis) podría disminuir la absorción de esta vitamina. La B12 necesita un medio ácido para absorberse correctamente.`,\n 1: `- Tus genes indican que podrías presentar concentración aumentada de B12 en sangre, pero esto no quiere decir que las tengas.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B12 también se modifican por el ambiente y el estilo de vida.\n - En condiciones normales y llevando una dieta equilibrada, es poco probable presentar altos niveles de esta vitamina en sangre a causa de la dieta, su aumento se asocia al consumo de suplementos.\n - Si sospechas que podés tener niveles de B12 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso. No los excluyas de tu alimentación sin supervisión hasta tanto no confirmes que los valores están aumentados\n - Cubrimos nuestra necesidad diaria por ejemplo con 100 gr de carne + 1 taza de 250 ml de leche.\n - La cantidad de cada vitamina que necesitas depende de la edad y el sexo. Otros factores, como el embarazo y la salud, también son importantes.\n - Para más información podés consultar a un médico clínico o nutricionista.`,\n 2: `- Tus genes indican que tu concentración de vitamina B12 en sangre podría encontrarse disminuida, pero esto no significa que sea así.\n - Si sospechas que podés tener niveles de B12 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Es probable que si consumís diariamente alimentos ricos en vitamina B12 obtengas la cantidad suficiente para el correcto funcionamiento de tus procesos biológicos.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B12 también se modifican por el ambiente y el estilo de vida.\n - Si estás embarazada o planeas estarlo te recomendamos mantener los niveles de esta vitamina en sus valores normales para el correcto desarrollo fetal. Consultá a tu médico si necesitas suplementación.\n - Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso. Podés cubrir tu necesidad diaria por ejemplo con 100 gr de carne + 1 taza de 250 ml de leche.\n - La B12 está exclusivamente en alimentos de origen animal, si sos vegetariano o vegano consultale a tu médico si necesitas suplementación.\n - Consumir antiácidos con regularidad (en caso de úlceras y gastritis) podría disminuir la absorción de esta vitamina. La B12 necesita un medio ácido para absorberse correctamente.\n - En algunas enfermedades que alteran la función intestinal (por ejemplo: celiaquía, enfermedad de Crohn) y deficiencias vitamínicas (por ejemplo: déficit de B6) los valores de esta vitamina pueden estar disminuidos.\n - La B12 es muy sensible a la temperatura, las carnes y huevo se consideran la mejor opción para la adquisición de esta vitamina. Evita cocciones muy prolongadas y en piezas muy pequeñas, preferible mas tiempo de cocción a menor temperatura`,\n },\n bibliography: `Surendran, S., A. Adaikalakoteswari, P. Saravanan, I. A. Shatwaan, J. A. Lovegrove, and K. S. Vimaleswaran. 2018. “An Update on Vitamin B12-Related Gene Polymorphisms and B12 Status.” Genes & Nutrition 13 (February): 2.`\n },\n \"Requerimiento de vitamina B6\": {\n label: \"Vitamina B6\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B6 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\n \n Tus genes indican que tus niveles vitamina B6 en sangre podrían estar habitual, tus genes no te determinan, tus hábitos si.`,\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B6 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\n \n Tus genes indican que tus niveles vitamina B 6 en sangre podrían estar aumentada, tus genes no te determinan, tus hábitos si.`,\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B6 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\n \n Tus genes indican que tus niveles vitamina B 6 en sangre podrían estar disminuida, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `La vitamina B6 o piridoxina participa en la elaboración de neurotransmisores (sustancias que permiten a las neuronas comunicarse entre sí), la hemoglobina (transporta el oxígeno en la sangre) y componentes del sistema inmune como los anticuerpos. \n \n Además, participa en la obtención de energía a partir de los hidratos de carbono, especialmente en los músculos, incrementando el rendimiento muscular durante el ejercicio físico. La vitamina B6 también puede favorecer la pérdida de peso, ya que ayuda a que nuestro cuerpo obtenga energía a partir de las grasas acumuladas en el organismo. Otra función importante de esta vitamina es favorecer la absorción de magnesio, hierro y B12.\n \n Signos y síntomas:\n - El exceso de piridoxina, puede generar pérdida de control de los movimientos corporales.\n - El déficit de piridoxina, puede provocar alteraciones del metabolismo de aminoácidos, convulsiones, debilidad, insomnio y alteraciones de la función inmune, entre otras.`,\n results: `El gen NBPF3 codifica para una hormona asociada con la eliminación de la vitamina B6 del organismo.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu concentración de vitamina B6 en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.\n - Es probable que el aporte diario de alimentos ricos en B6 sea suficiente para tu correcta síntesis de proteínas y metabolismo de la energía.\n - Si sospechas que podés tener niveles de B6 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Los alimentos con mayor contenido son: carnes (ave, pescado, cerdo), vísceras (hígado), cereales integrales y germen de trigo, frutas secas y semillas (girasol y avellanas), legumbres (garbanzos, lentejas) y vegetales (banana, espárragos, brócoli).\n - Consumiendo alimentos de origen animal cubrimos nuestras necesidades diarias. Por ejemplo con: 100 gr de carne blanca (pollo o pescado) + 1 fruta chica por día.\n - Consumiendo alimentos de origen vegetal cubrimos nuestras necesidades diarias. Por ejemplo con: 150 gr de verduras + 2 cucharadas soperas de legumbres + 1 fruta mediana.\n - Esto es una predisposición que te acompañará toda la vida, pero los niveles de vitamina B6 también se modifican por el ambiente y el estilo de vida.\n - Para más información podés consultar a un médico clínico o nutricionista.`,\n 1: `- Tus genes indican que podrías presentar concentración aumentada de B6 en sangre, pero esto no quiere decir que los tengas.\n - Es probable que llevar una dieta variada sea suficiente para tu correcta síntesis de proteínas y metabolismo de la energía.\n - Si sospechas que podés tener niveles de B6 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B6 también se modifican por el ambiente y el estilo de vida.\n - Los niveles elevados de Vitamina B 6 por causa alimentaria son muy infrecuentes, no excluyas alimentos que sean fuente de esta vitamina. Es más común que se presenten al incluir suplementos o por la ingesta de algunos medicamentos.\n - Los alimentos con mayor contenido son: carnes (ave, pescado, cerdo), vísceras (hígado), cereales integrales y germen de trigo, frutas secas y semillas (girasol y avellanas), legumbres (garbanzos, lentejas) y vegetales (banana, espárragos, brócoli).\n - Consumiendo alimentos de origen animal cubrimos nuestras necesidades diarias. Por ejemplo con: 100 gr de carne blanca (pollo o pescado) + 1 fruta chica por día.\n - Consumiendo alimentos de origen vegetal cubrimos nuestras necesidades diarias. Por ejemplo con: 150 gr de verduras + 2 cucharadas soperas de legumbres + 1 fruta mediana.`,\n 2: `- Tus genes indican que tu concentración de B6 en sangre podría encontrarse disminuida, pero esto no significa que sea así.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B6 también se modifican por el ambiente y el estilo de vida.\n - Es probable que necesites agregar a tu dieta porciones extra de alimentos ricos en B6 o algún tipo de suplemento para asegurar la correcta síntesis de proteínas y metabolismo de la energía. Consultá a tu nutricionista para ajustar tu plan alimentario a esta predisposición genética.\n - Si sospechas que podés tener niveles de vitamina B6 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Los alimentos con mayor contenido son: carnes (ave, pescado, cerdo), vísceras (hígado), cereales integrales y germen de trigo, frutas secas y semillas (girasol y avellanas), legumbres (garbanzos, lentejas) y vegetales (banana, espárragos, brócoli).\n - Consumiendo alimentos de origen animal cubrimos nuestras necesidades diarias. Por ejemplo con: 100 gr de carne blanca (pollo o pescado) + 1 fruta chica por día.\n - Consumiendo alimentos de origen vegetal cubrimos nuestras necesidades diarias. Por ejemplo con: 150 gr de verduras + 2 cucharadas soperas de legumbres + 1 fruta mediana.\n - Preferí la cocción por vapor u horno de tus alimentos y aleja el alcohol de tus comidas, así conseguirás que esta vitamina esté disponible para ser absorbida en tu organismo.\n - Algunos anticonceptivos orales (estrógenos) pueden interferir con el metabolismo de esta vitamina disminuyendo su concentración. Para más información podés consultar a un médico clínico o nutricionista.\n - La salud de tu intestino es crucial para la absorción de vitaminas, mantenerlo sano comiendo alimentos reales.`,\n },\n bibliography: `Tanaka, Toshiko, Paul Scheet, Betti Giusti, Stefania Bandinelli, Maria Grazia Piras, Gianluca Usala, Sandra Lai, et al. 2009. “Genome-Wide Association Study of Vitamin B6, Vitamin B12, Folate, and Homocysteine Blood Concentrations.” American Journal of Human Genetics 84 (4): 477–82.`\n },\n \"Requerimiento de vitamina A\": {\n label: \"Vitamina A\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y suplementos de vitamina A acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\n Tus genes indican que podrías presentar niveles séricos de vitamina A habituales, tus genes no te determinan, tus hábitos si.`,\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y suplementos de vitamina A acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\n Tus genes indican que podrías presentar niveles séricos de vitamina A aumentados, tus genes no te determinan, tus hábitos si.`,\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y suplementos de vitamina A acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\n Tus genes indican que podrías presentar niveles séricos de vitamina A disminuidos, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `La vitamina A comprende un grupo de compuestos químicos como por ejemplo el retinol, el retinal y el betacaroteno. Intervienen en el crecimiento y el desarrollo del sistema nervioso y la visión.\n \n La forma química más común de vitamina A que consumimos en los alimentos y también en los suplementos dietéticos es el betacaroteno. Los niveles de vitamina A en el organismo se relacionan con la capacidad de conversión de estos precursores ( b caroteno) en retinol (vitamina A activa).\n Esta conversión puede verse alterada según nuestra constitución genética, la mayoría de las personas consumen suficiente vitamina A y sus alteraciones son poco comunes.\n \n Signos y síntomas de deficiencia y exceso de vitamina A:\n - Deficiencia: El más habitual es la xeroftalmia, que es la incapacidad de ver con poca luz.\n - Exceso: Consumir demasiada vitamina A preformada (en general, en suplementos o ciertos medicamentos) puede provocar mareos, náuseas, dolores de cabeza, y alteraciones de la conciencia graves.\n - Exceso en embarazadas: Las dosis elevadas de vitamina A preformada en mujeres embarazadas también pueden causar defectos congénitos en sus hijos ya que es una vitamina teratogénica.`,\n results: `Los marcadores genéticos utilizados están relacionados con los genes que codifican para el procesamiento de estos metabolitos, RET y BC. Su biodisponibilidad influye, junto con otros factores, en la conversión a vitamina A activa (retinol) y su disponibilidad para ser utilizada por los diferentes tejidos. \n \n El gen RBP4 codifica para una proteína que transporta el retinol desde el hígado a los tejidos periféricos. El gen TTR codifica para una proteína que transporta retinol en dimero con RBP4 y tiroxina.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu concentración de precursores de vitamina A en sangre podrían encontrarse dentro del rango normal, pero esto no significa que sea así.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina A también se modifican por el ambiente y el estilo de vida.\n - Los alimentos con mayor contenido de retinol son: lácteos (leche, queso y yogur), hígado, yema de huevo y pescados de aguas profundas (atún, arenque, sardina, salmón).\n - Si sospechas que podés tener niveles de vitamina A fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - La cantidad de cada vitamina que necesitás depende de la edad y el sexo. Otros factores, como el embarazo y la salud, también son importantes.\n - Con alimentos de origen animal cubrimos nuestra necesidad diaria consumiendo 2 tazas de 250 ml de leche fresca y 1 huevo.\n - Con alimentos de origen vegetal cubrimos nuestra necesidad diaria consumiendo, 2 frutas chicas / día y 50 gr de vegetales verdes.\n - Los alimentos con mayor contenido de betacarotenos son: maíz, vegetales de hoja verde (acelga, lechuga, espinaca), frutas y verduras de color anaranjado (zapallo, calabaza, zanahoria, melón, durazno, damasco).\n - El método de cocción más adecuado para conservar esta vitamina en los alimentos es el vapor. Cocciones prolongadas o hervor disminuyen su biodisponibilidad.`,\n 1: `- Tus genes indican que podrías presentar concentración aumentada de precursores de la vitamina A en sangre, pero esto no quiere decir que asi sea.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina A también se modifican por el ambiente y el estilo de vida.\n - Es probable que teniendo una alimentación variada y equilibrada obtengas de los alimentos toda la vitamina A y betacarotenos que tus ojos y sistema nervioso necesitan.\n - Si sospechas que podés tener niveles de vitamina A fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Es infrecuente presentar concentraciones elevadas de vitamina A a causa de la dieta, su aumento se asocia al consumo de suplementos, no restrinjas alimentos fuente de esta vitamina.\n - Si estás embarazada o planeas estarlo consulta a tu médico ya que altos niveles de esta vitamina tienen efecto teratogénico (pueden producir malformaciones congénitas).\n - Los alimentos con mayor contenido de retinol son: lácteos (leche, queso y yogur), hígado, yema de huevo y pescados de aguas profundas (atún, arenque, sardina, salmón).\n - Los alimentos con mayor contenido de betacarotenos son: maíz, vegetales de hoja verde (acelga, lechuga, espinaca), frutas y verduras de color anaranjado (zapallo, calabaza, zanahoria, melón, durazno, damasco).`,\n 2: `- Tus genes indican que tu concentración de precursores de vitamina A en sangre podrían encontrarse disminuida, pero esto no significa que sea así.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina A también se modifican por el ambiente y el estilo de vida.\n - Si sospechas que podés tener niveles de vitamina A fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Es probable que teniendo una alimentación variada y equilibrada obtengas de los alimentos toda la vitamina A y betacarotenos que tus ojos y sistema nervioso necesitan.\n - Los alimentos con mayor contenido de retinol son: lácteos (leche, queso y yogur) hígado, yema de huevo y pescados de aguas profundas (atún, arenque, sardina, salmón).\n - Los alimentos con mayor contenido de betacarotenos son: maíz, vegetales de hoja verde (acelga, lechuga, espinaca), frutas y verduras de color anaranjado (zapallo, calabaza, zanahoria, melón, durazno, damasco).\n - Para la correcta absorción de las vitaminas es importante tu salud intestinal, consumí alimentos reales.\n - Preferí cocinar tus alimentos a vapor y condimentarlos con 1 o 2 cucharadas soperas de aceite de oliva. La vitamina A para absorberse necesita la presencia de grasas en la misma comida.`,\n },\n bibliography: `PatrickBorelandCharlesDesmarchelie.GeneticVariationsAssociatedwithVitaminAStatus andVitaminABioavailability`\n },\n \"Requerimiento de vitamina D\": {\n label: \"Vitamina D\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de vitamina D acorde a tu metabolismo, para evitar los efectos de su deficiencia.\n \n Tus genes indican que tus niveles vitamina D en sangre podrían estar habitual, tus genes no te determinan , tus hábitos si.`,\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de vitamina D acorde a tu metabolismo, para evitar los efectos de su deficiencia.\n \n Tus genes indican que tus niveles vitamina D en sangre podrían estar aumentada, tus genes no te determinan , tus hábitos si.`,\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de vitamina D acorde a tu metabolismo, para evitar los efectos de su deficiencia.\n \n Tus genes indican que tus niveles vitamina D en sangre podrían estar disminuida, tus genes no te determinan , tus hábitos si.`,\n },\n generalInfo: `La vitamina D tiene múltiples funciones. La más importante de ellas es la regulación de los niveles de calcio y fosfato a nivel renal, promoviendo la absorción intestinal de los mismos a partir de los alimentos y la reabsorción de calcio a nivel renal para disminuir las pérdidas por la orina. \n \n Además favorece la remodelación del hueso y su mineralización y participa en las defensas de nuestro cuerpo (sistema inmune). \n \n Las variantes genéticas comunes que influyen en los niveles de vitamina D en sangre permiten identificar a las personas con riesgo de deficiencia de vitamina D, y sugerir cambios de hábitos que ayuden a tener niveles adecuados.\n \n Signos y síntomas de déficit de vitamina D:\n - Su déficit se asocia con: pérdida de la densidad ósea (favoreciendo a la osteoporosis y fracturas), mayor susceptibilidad a infecciones, dolor muscular difuso y menor rendimiento deportivo.`,\n results: `El gen GC, es el responsable de la codificación de una proteína que recubre y protege a la vitamina D, facilitando su transporte por la sangre. Algunas variantes en este gen pueden disminuir la capacidad de transportar esta vitamina, disminuyendo los niveles de vitamina D disponibles en el organismo.\n \n El gen VDR, por su parte, codifica al receptor de vitamina D.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que la concentración de vitamina D en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.\n - Si sospechas que podés tener niveles de vitamina D fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Es probable que llevar una dieta variada y exponerte al sol en horarios seguros sea suficiente para obtener los niveles de vitamina D necesarios para tus células.\n - Los alimentos con mayor contenido de vitamina D son las grasas lácteas (leche, yogur y queso), yema de huevo, hígado y algunos pescados grasos (arenque, congrio, salmón, atún).\n - Mantene saludable tu microbiota intestinal ( mas alimentos reales menos procesados) la disbiosis intestinal juega un rol fundamental en la absorción de esta vitamina.\n - La correcta absorción de la vitamina D alimentaria depende de la cantidad de grasas que consumas diariamente ya que las necesita para absorberse. Condimentá tus acompañamientos con 1 o 2 cucharadas soperas de aceite de oliva.\n - Se recomienda exponerse al sol en horario seguro para la síntesis cutánea de vitamina D: en verano 10 minutos 3 veces por semana, y en invierno 30 minutos 3 veces por semana.`,\n 1: `\n - Tus genes indican que podrías presentar concentración aumentada de vitamina D en sangre, pero esto no quiere decir que los tengas.\n - En condiciones normales es poco probable presentar niveles altos de esta vitamina en sangre a causa de una dieta equilibrada. El aumento se asocia al consumo de suplementos.\n - Si sospechas que podés tener niveles de vitamina D fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina D también se modifican por el ambiente y el estilo de vida.\n - Los alimentos con mayor contenido de vitamina D son las grasas lácteas (leche, yogur y queso), yema de huevo, hígado y algunos pescados grasos (arenque, congrio, salmón, atún).\n - Mantene saludable tu microbiota intestinal ( mas alimentos reales menos procesados) la disbiosis intestinal juega un rol fundamental en la absorción de esta vitamina.\n - La correcta absorción de la vitamina D alimentaria depende de la cantidad de grasas que consumas diariamente ya que las necesita para absorberse. Condimentá tus acompañamientos con 1 o 2 cucharadas soperas de aceite de oliva.\n - Se recomienda exponerse al sol en horario seguro para la síntesis cutánea de vitamina D: en verano 10 minutos 3 veces por semana, y en invierno 30 minutos 3 veces por semana.`,\n 2: `- Tus genes indican que la concentración de vitamina D en sangre podría encontrarse disminuida, pero esto no significa que sea así.\n - Aunque en general llevar una dieta variada y exponerte al sol en horarios seguros sea suficiente para obtener los niveles de vitamina D necesarios para tus células, es posible que requieras suplementos en algunas situaciones (siempre bajo prescripción médica).\n - Si sospechas que podés tener niveles de vitamina D fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - El sobrepeso u obesidad favorece a que la concentración de vitamina D esté disminuida en sangre, ya que el tejido adiposo la retiene impidiendo que quede disponible para llevar a cabo sus funciones. Mantene un peso saludable y hace ejercicio diariamente.\n - Los alimentos con mayor contenido de vitamina D son las grasas lácteas (leche, yogur y queso),si consumís leche de vaca preferí las opciones enteras. Yema de huevo, hígado y algunos pescados grasos (arenque, congrio, salmón, atún).\n - Mantene saludable tu microbiota intestinal (más alimentos reales menos procesados) la disbiosis intestinal juega un rol fundamental en la absorción de esta vitamina.\n - La correcta absorción de la vitamina D alimentaria depende de la cantidad de grasas que consumas diariamente ya que las necesita para absorberse. Condimentá tus acompañamientos con 1 o 2 cucharadas soperas de aceite de oliva.\n - Se recomienda exponerse al sol en horario seguro para la síntesis cutánea de vitamina D: en verano 10 minutos 3 veces por semana, y en invierno 30 minutos 3 veces por semana.\n - Esto es una predisposición que te acompañará toda la vida, pero los niveles de vitamina D también se modifican por el ambiente y el estilo de vida.`,\n },\n bibliography: `Wang, Thomas J., Feng Zhang, J. Brent Richards, Bryan Kestenbaum, Joyce B. van Meurs, Diane Berry, Douglas P. Kiel, et al. 2010. “Common Genetic Determinants of Vitamin D Insufficiency: A Genome-Wide Association Study.” The Lancet 376 (9736): 180–88.`\n },\n \"Requerimiento de calcio\": {\n label: \"Calcio\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de calcio acorde a tu metabolismo, para evitar los efectos de su deficiencia.\n \n Tus genes indican que tus niveles de calcio en sangre podrían estar normales, tus genes no te determinan, tus hábitos si.`,\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de calcio acorde a tu metabolismo, para evitar los efectos de su deficiencia.\n \n Tus genes indican que tus niveles de calcio en sangre podrían estar aumentados, tus genes no te determinan, tus hábitos si.`,\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de calcio acorde a tu metabolismo, para evitar los efectos de su deficiencia.\n \n Tus genes indican que tus niveles de calcio en sangre podrían estar disminuidos, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `El calcio es un ion que actúa como mensajero intracelular y participa de múltiples procesos celulares, como la contracción muscular, el ritmo cardíaco, la coagulación de la sangre y la secreción de diferentes hormonas. \n \n El 99% de nuestro calcio corporal está almacenado en los huesos y dientes, mientras que el 1% circula en sangre y se encuentra involucrado en la señalización intracelular.\n \n Los niveles de calcio en sangre están bajo un fuerte control genético. La hormona paratiroidea, producida por la glándula paratiroides, es la responsable de mantener los niveles séricos de calcio en el rango adecuado.\n \n Concentraciones de calcio más altas (hipercalcemia) o más bajas (hipocalcemia) de lo esperado pueden generar síntomas:\n - La hipercalcemia leve puede no tener síntomas o manifestarse con náuseas, poco apetito, vómitos y constipación. Niveles de hipercalcemia mayores, pueden presentar espasmos musculares, cambios de personalidad y confusión, somnolencia excesiva, coma e incluso la muerte.\n - El signo más común de hipocalcemia es \"irritabilidad neuromuscular, calambres musculares en las piernas o en los brazos. Niveles de calcio en sangre muy bajos pueden ocasionar desorientación, palpitaciones o alteraciones del ritmo cardíaco.`,\n results: `El gen CASR codifica para el receptor sensor de calcio, encargado de medir los niveles del mineral en las células del organismo. Variantes que causan fallas en su funcionamiento pueden derivar tanto en un aumento como en una disminución de los niveles circulantes.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu concentración de calcio en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.\n - Esto es una predisposición, pero los niveles de calcio se modifican, según tipo de alimentación, edad, y momento de la vida.\n - Es conveniente controlar los niveles en sangre directamente por técnicas de laboratorio que reflejan lo que sucede en el momento que se realiza el estudio o a través de una densitometría (gold standard)\n - Es probable que llevar una dieta variada sea suficiente para que obtengas los niveles de calcio necesarios para tus células.\n - Los alimentos de origen animal donde encontramos calcio son los lácteos (leche, queso, yogur), kéfir de leche, sardinas.\n - Las fuentes veganas son:Almendras, tofu, tahini, Garbanzos, porotos, vegetales verdes de hoja oscura (aunque una parte no es absorbida por los oxalatos) brócolis, semillas (sésamo), frutas secas (avellanas, almendras) y vegetales (achicoria, brócoli, radicheta). Tené en cuenta que en este caso, por tener fibra, el calcio absorbido es menor que las fuentes animales.\n - El café (cafeína) y el té (teofilina) favorecen la eliminación de calcio por orina. Aleja las infusiones de los alimentos ricos en calcio (al menos 30-40 minutos).\n - Nuestro cuerpo absorbe el calcio que necesita cuando los niveles de proteínas en la dieta son moderadas. Dietas hiperproteicas (altas en proteínas) pueden aumentar su eliminación por orina.\n - Si sos vegetariano o vegano, intolerante a la lactosa o tenés enfermedad celíaca podrías no estar recibiendo todo el calcio que necesitas.\n - Para más información podés consultar a un médico clínico o nutricionista. `,\n 1: `- Tus genes indican que podrías presentar valores altos de calcio en sangre, pero esto no quiere decir que los tengas.\n - Esto es una predisposición, pero los niveles de calcio se modifican, según tipo de alimentación, edad, y momento de la vida.\n - Si sospechas que podés tener niveles de calcio fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Es probable que llevar una dieta variada sea suficiente para que obtengas los niveles de calcio necesarios para tus células. A pesar de esta predisposición, no dejes de consumir alimentos ricos en calcio.\n - Los alimentos de origen animal donde encontramos calcio son los lácteos (leche, queso, yogur), kéfir de leche, sardinas.\n - Las fuentes veganas son:Almendras, tofu, tahini, Garbanzos, porotos, vegetales verdes de hoja oscura (aunque una parte no es absorbida por los oxalatos) brócolis, semillas (sésamo), frutas secas (avellanas, almendras) y vegetales (achicoria, brócoli, radicheta). Tené en cuenta que en este caso, por tener fibra, el calcio absorbido es menor que las fuentes animales.\n - Un exceso de calcio podría estar involucrado en enfermedad coronaria, cálculos en la orina y cáncer de próstata.\n - Para más información podés consultar a un médico clínico o nutricionista.`,\n 2: `- Tus genes indican que tus niveles de calcio en sangre podrían encontrarse disminuidos, pero esto no significa que sea así.\n - Esto es una predisposición, pero los niveles de calcio se modifican, según tipo de alimentación, edad, y momento de la vida.\n - Es conveniente controlar los niveles en sangre directamente por técnicas de laboratorio que reflejan lo que sucede en el momento que se realiza el estudio o a través de una densitometría (prueba diagnostica mas fiable)\n - Los alimentos de origen animal donde encontramos calcio son los lácteos (leche, queso, yogur), kéfir de leche, sardinas.\n - Las fuentes veganas son:Almendras, tofu, tahini, Garbanzos, porotos, vegetales verdes de hoja oscura (aunque una parte no es absorbida por los oxalatos) brócolis, semillas (sésamo), frutas secas (avellanas, almendras) y vegetales (achicoria, brócoli, radicheta). Tené en cuenta que en este caso, por tener fibra, el calcio absorbido es menor que las fuentes animales.\n - Si tus niveles estuviesen disminuidos, aleja alimentos ricos en fibra de las fuentes de calcio, como por ejemplo panes integrales o con semillas, cereales integrales, vegetales de hoja, frutas con cáscara.\n - Nuestro cuerpo absorbe el calcio que necesita cuando los niveles de proteínas en la dieta son moderadas. Dietas hiperproteicas (altas en proteínas) pueden aumentar su eliminación por orina.\n - El café (cafeína) y el te (teofilina), gaseosas, sedentarismo favorecen la eliminación de calcio por orina. Aleja las infusiones de los alimentos ricos en calcio (al menos 30-40 minutos).\n - La vitamina D es necesaria para la absorción del calcio, la obtenemos de la dieta ( pescados grasos) y a través de la exposición segura al sol.\n - La actividad física ( ejercicios de fuerza) tiene un impacto positivo sobre la densidad ósea.\n - Si sos vegetariano o vegano, intolerante a la lactosa o tenés enfermedad celíaca podrías no estar recibiendo todo el calcio que necesitas.\n - La indemnidad de nuestro intestino juega un rol crucial en la absorción de vitaminas y minerales, incluidos el calcio. Mantener una microbiota sana consumiendo alimentos reales, prebióticos y probióticos.\n - Para más información podés consultar a un nutricionista.`,\n },\n bibliography: `Susanna C. Larsson, PhD; Stephen Burgess, PhD; Karl Michaëlsson, MD, PhD.Association of Genetic Variants Related to Serum Calcium Levels With Coronary Artery Disease and Myocardial Infarction`\n },\n \"Sensibilidad a la histamina\": {\n label: \"Histamina\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos a tus sensibilidades e intolerancias.\n Tus genes indican que tus niveles de histamina en sangre estaría en concentraciones habituales, lo que disminuiría el riesgo asociado al desarrollo de una intolerancia. Tus genes no te determinan, tus hábitos si.`,\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos a tus sensibilidades e intolerancias.\n Tus genes indican que tus niveles de histamina en sangre estarían elevados, lo que aumentaría el riesgo asociado al desarrollo de una intolerancia. Tus genes no te determinan, tus hábitos si.`,\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos a tus sensibilidades e intolerancias.\n Tus genes indican que tus niveles de histamina en sangre estarían elevados, lo que aumentaría el riesgo asociado al desarrollo de una intolerancia. Tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `La histamina es una sustancia química perteneciente a la familia de las aminas biógenas que constituye una parte importante del sistema inmunológico y nervioso.\n \n También la ingerimos a través de los alimentos fermentados por ejemplo vino y cerveza (por acción de las enzimas descarboxilasas), pescados y mariscos, ahumados, quesos maduros.\n \n La histamina alimentaria normalmente se excreta por orina, se conocen dos rutas de excreción, la HNMT y la DAO, cuyos genes nos cuentan cómo metaboliza nuestro cuerpo ésta . \n \n La intolerancia a la histamina (IH) se produce cuando el cuerpo presenta valores demasiado elevados de esta proteína, y puede causar síntomas conocidos como intolerancia a la histamina. Esto puede deberse tanto a una producción excesiva de histamina por parte del cuerpo (histamina endógena) como a una deficiencia en la descomposición de la histamina ingerida en tu dieta (histamina alimentaria). \n \n Síntomas más comunes:\n - Diarrea / constipación, dolor abdominal, colon irritable, reflujo, distensión abdominal, meteorismo.\n - Sarpullido o urticaria, piel seca, edema.\n - Alteraciones menstruales, síndrome premenstrual`,\n results: `Existen dos genes con roles cruciales en el metabolismo de la histamina.\n \n Histamina exógena: La DAO (diaminooxidasa) es la enzima producida por los intestinos que descompone la histamina de los alimentos. El gen AOC1 codifica la producción de la enzima DAO. Las variantes genéticas en AOC1 pueden aumentar o disminuir la producción de la enzima, lo que repercute directamente en los niveles de histamina presentes.\n \n Histamina endógena: Otra enzima es la histamina n-metiltransferasa (HNMT), codificada por el gen HNMT. Su función es la de degradar la histamina intracelular. Las variantes genéticas en HMNT pueden aumentar o disminuir la producción de la enzima, lo que repercute directamente en los niveles de histamina presentes.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tenés baja posibilidad de presentar intolerancia a la histamina, pero esto no significa que no puedas desarrollarla.\n - Esto es una predisposición que te acompañará siempre, pero la reacción de tu cuerpo a la histamina también se modifica por el ambiente y otros factores.\n - Si tenés síntomas de los mencionados previamente, aunque sean inespecíficos y no se relacionen con la ingesta de alimentos ricos en histamina, consultá con tu médico para confirmar/descartar el diagnóstico. `,\n 1: `- Tus genes indican que tenés un riesgo levemente aumentado de presentar intolerancia a la histamina, pero esto no significa que no puedas desarrollarla.\n - Esto es una predisposición que te acompañará siempre, pero la reacción de tu cuerpo a la histamina también se modifica por el ambiente y otros factores.\n - Si tenés síntomas de los mencionados previamente, aunque sean inespecíficos y no se relacionen con la ingesta de alimentos ricos en histamina, consultá con tu médico para confirmar/descartar el diagnóstico.\n - Si padecieras IH, existen distintos criterios médicos de la concentración de histamina máxima tolerada y qué alimentos deberías evitar, puesto que la cantidad de histamina es muy variable de un alimento a otro por su grado de fermentación.\n - A continuación te detallamos los alimentos que mayor cantidad poseen, son aquellos que se deterioran con facilidad como: carnes curadas (fiambres y achuras), pescados, fermentados como vino, cerveza, champagne, kéfir, chucrut, pescados y mariscos en general, ahumados, quesos maduros, enlatados, quesos añejos como: cheddar, gouda, suizo y parmesano.\n - También está presente en alimentos de origen vegetal sobre todo en palta, espinaca, soja y berenjena.\n - Otros alimentos desencadenan, en individuos susceptibles, aumento de la histamina endógena, ellos son: clara de huevo y proteína láctea, aditivos como glutamato, nitritos, sulfito y colorante amarillo E 102, E110, rojo E 124.\n - Asegúrate de estar consumiendo diariamente vitamina C, uno de los múltiples beneficios que tiene esta vitamina es un potente efecto antihistamínico.\n - Las bebidas energizantes contienen serotonina que es metabolizada por la DAO, por lo que si presentas IH evita consumirlos para no sobresaturar tu sistema natural de excreción de histamina.`,\n 2: `- Tus genes indican que tenés un riesgo aumentado de presentar intolerancia a la histamina, pero esto no significa que no puedas desarrollarla.\n - Esto es una predisposición que te acompañará toda la vida, pero la reacción de tu cuerpo a la histamina también se modifica por el ambiente y otros factores.\n - Si tenés síntomas de los mencionados previamente, aunque sean inespecíficos y no se relacionen con la ingesta de alimentos ricos en histamina, consultá con tu médico para confirmar/descartar el diagnóstico.\n - Si padecieras IH, existen distintos criterios médicos de la concentración de histamina máxima tolerada y que alimentos debieras evitar, puesto que la cantidad de histamina es muy variable de un alimento a otro por su grado de fermentación.\n - A continuación te detallamos los alimentos que mayor cantidad poseen, son aquellos que se deterioran con facilidad como: carnes curadas (fiambres y achuras), pescados, fermentados como vino, cerveza, champagne, kéfir, chucrut, pescados y mariscos en general, ahumados, quesos maduros, enlatados, quesos añejos como: cheddar, gouda, suizo y parmesano.\n - También está presente en alimentos de origen vegetal sobre todo en palta, espinaca, soja y berenjena.\n - Otros alimentos desencadenan, en individuos susceptibles, aumento de la histamina endógena, ellos son: clara de huevo y proteína láctea, aditivos como glutamato, nitritos, sulfito y colorante amarillo E 102, E110, rojo E 124.\n - Asegúrate de estar consumiendo diariamente vitamina C, uno de los múltiples beneficios que tiene esta vitamina es un potente efecto antihistamínico.\n - Las bebidas energizantes contienen serotonina que es metabolizada por la DAO, por lo que si presentas IH evita consumirlos para no sobresaturar tu sistema natural de excreción de histamina`,\n },\n bibliography: `L. Maintz1 *, C.-F. Yu1 *, E. Rodrı´guez2,3, H. Baurecht2,4, T. Bieber1 , T. Illig5 , S. Weidinger2,3,6 & N. Nova.Association of single nucleotide polymorphisms in the diamine oxidase gene with diamine oxidase serum activities \n Jim Stevenson, Ph.D. Edmund Sonuga-Barke, Ph.D. Donna McCann, Ph.D. Kate Grimshaw, M.Sc. Karen M. Parker, M.S. Matthew J. Rose-Zerilli, B.Sc. John W. Holloway, Ph.D. John O. Warner, M.D.The Role of Histamine Degradation Gene Polymorphisms in Moderating the Effects of Food Additives on Children’s ADHD Symptoms\n Yuen Yi Hon1, William J. Jusko2, Hong-Hao Zhou3, Guo-Lin Chen3, Dong Guo3, Gan Zhou3, Vicky E. Spratlin1, and Michael W. Jann.Endogenous Histamine and Cortisol Levels in Subjects with Different Histamine N-Methyltransferase C314T Genotypes`\n },\n \"Sensibilidad a la glucosa\": {\n label: \"Glucosa\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar la calidad de carbohidratos que consumís diariamente acorde a tu metabolismo para prevenir enfermedades asociadas.\n \n Tus genes indican que tu sensibilidad a la glucosa podría ser habitual, tus genes no te determinan, tus hábitos si.`,\n 1: ``,\n 2: `Conocer lo que dicen tus genes te permite adecuar la calidad de carbohidratos que consumís diariamente acorde a tu metabolismo para prevenir enfermedades asociadas.\n \n Tus genes indican que tu sensibilidad a la glucosa podría estar aumentada, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `Los alimentos están constituidos por múltiples nutrientes, necesarios para el correcto funcionamiento de nuestro organismo y sus funciones vitales. Grasas, proteínas, carbohidratos, vitaminas, minerales y oligoelementos son algunas de las sustancias químicas que los forman.\n Los carbohidratos los incorporamos evolutivamente hace tan solo 10 mil años con el advenimiento de la agricultura, razón por la cual junto con las legumbres presentan tanta variabilidad en cuanto a su digestión de persona a persona.\n Los glúcidos son biomoléculas compuestas principalmente de carbono, hidrógeno y oxígeno, aunque algunos de ellos también contienen otros bioelementos tales como: nitrógeno, azufre y fósforo. Su principal fuente son los cereales. Según su estructura química podemos dividirlos en simples o complejos. \n Los primeros son fácilmente digeridos y absorbidos mientras que los complejos tienen una digestión y absorción retardada en el tiempo debido a su mayor complejidad molecular.\n A diferencia de los complejos (almidones, glucógeno y fibra) los azúcares simples (glucosa, fructosa, galactosa, sacarosa y lactosa) al absorberse más fácilmente producen un aumento de la glucemia más rápido, esto determina que el páncreas secrete insulina a nuestro torrente sanguíneo para que las células de nuestros tejidos puedan usar o almacenar esa glucosa disponible.\n En aquellas personas con predisposición genética a la DBT2, la calidad de carbohidratos de la dieta así como el estilo de vida sinergiza y predispone al desarrollo de esta patología. La mayor parte del consumo de hidratos en las personas proviene de las harinas refinadas y no de granos enteros. \n \n En las poblaciones previas a la revolución industrial los granos y legumbres o sus harinas se remojaban, fermentaban y germinaban previos a su consumo. Hoy estas prácticas no son nuestro cotidiano (por tiempo y costumbre) lo que impacta en una digestión a veces problemática-`,\n results: `El gen TCF7L2 codifica para el factor de transcripción 7-like 2, también conocido como TCF7L2 o TCF4, proteína que actúa como factor de transcripción. En el páncreas, este factor activa la expresión génica de GLP1 estimulando la secreción de insulina por las células B. Hasta la fecha es uno de los identificados como jugadores principales en la síntesis y secreción de la insulina. \n La calidad de carbohidratos consumidos en la dieta modifican el riesgo de diabetes tipo 2 asociado a este gen.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu sensibilidad a la glucosa es la habitual.\n - Aunque tus genes no te predisponen, el estilo de vida que lleves, los alimentos que consumas, el mantenimiento de un peso saludable y la regularidad de tu actividad física juega un papel fundamental en el desarrollo de ciertas patologías como la diabetes tipo 2.\n - Mantené un peso saludable y acorde a tu contextura, talla y etapa de la vida. El sobrepeso y la obesidad son factores de riesgo muy importantes en el desarrollo de DBT tipo 2.\n - Hacete controles médicos de rutina que incluyan niveles de glucosa en sangre.\n - No elimines los cereales de tu dieta ya que nuestro cuerpo obtiene energía y nutrientes de ellos, selecciónalos de forma inteligente.\n - Preferí a las harinas refinadas los derivados de cereales integrales (grano entero), legumbres, frutas y verduras (carbohidratos complejos).\n - Sumá fibra en tus comidas para absorber los azúcares más lentamente. La fibra está en las frutas con cáscaras, cereales integrales, semillas y verduras, sobre todo las de hoja (lechuga, escarola, radicheta, repollo).\n - Suma proteínas en tus comidas. A mayor cantidad de proteínas menor digestión de glúcidos y por ende menor absorción.\n - Deshabitúa tu consumo de azúcar de mesa, golosinas, productos de panadería y pastelería que contengan harinas refinadas (pizza, panes, empanadas, sándwiches, tartas, wraps. Si te es inevitable endulzar preferí edulcorantes naturales antes que el azúcar (hasta 8 hojas de stevia por día).\n - Podes remplazar en algunas preparaciones las tradicionales harinas de cereales por harinas de legumbres para sumar nuevos nutrientes (lupino, soja, garbanzo, arveja) de frutos secos (almendra, nueces, castañas avellanas) de semillas (lino, chia, girasol, zapallo).\n - Mantenete físicamente activo. Es suficiente con 30-40 min por día de actividad física.\n - Consumí fruta fresca preferentemente agroecológica, entera y con cáscara (minimiza fruta deshidratada, desecada y jugos).\n - Mantenete hidratado bebiendo de 2 a 3 litros de agua por día. Moderá el consumo de alcohol.`,\n 1: ``,\n 2: `- Tus genes indican que tu sensibilidad a la glucosa es menor, por lo que una dieta rica en carbohidratos simples exacerba el riesgo de desarrollo de DBT tipo 2.\n - Esto es una predisposición que te acompañará siempre, pero el estilo de vida que lleves, el mantenimiento de un peso saludable y la regularidad de tu actividad física juega un papel fundamental en el desarrollo de ciertas patologías como diabetes tipo 2.\n - Mantené un peso saludable y acorde a tu contextura, talla y etapa de la vida. El sobrepeso y la obesidad son factores de riesgo muy importantes en el desarrollo de DBT tipo 2.\n - Hacete controles médicos de rutina que incluyan niveles de glucosa en sangre.\n - Mantenete físicamente activo. Es suficiente con 30-40 min por día de actividad física.\n - Los carbohidratos simples están relacionados con la diabetes (entre otras patologías), por producir un aumento rápido de la glucemia y consecuente liberación de insulina para luego caer abruptamente generando cansancio, hambre y especialmente mayor apetencia por alimentos dulces.\n - No elimines los cereales de tu dieta ya que nuestro cuerpo obtiene energía y nutrientes de ellos, selecciónalos de forma inteligente.\n - Preferí a las harinas refinadas los derivados de cereales integrales (grano entero), legumbres, frutas y verduras (carbohidratos complejos).\n - Sumá fibra en tus comidas para absorber los azúcares más lentamente. La fibra está en las frutas con cáscaras, cereales integrales, semillas y verduras, sobre todo las de hoja (lechuga, escarola, radicheta, repollo).\n - Suma proteínas y grasas saludables en tus comidas. A mayor cantidad de proteínas y grasas menor digestión de glúcidos y por ende menor absorción. Ejemplo: Legumbres y palta.\n - Deshabitúa tu consumo de azúcar de mesa, golosinas, productos de panadería y pastelería que contengan harinas refinadas (pizza, panes, empanadas, sándwiches, tartas, wraps). Si te es inevitable endulzar preferí edulcorantes naturales antes que el azúcar/ artificiales (hasta 8 hojas de stevia por día).\n - Reemplazá las tradicionales harinas de cereales por harinas de legumbres (lupino, soja, garbanzo, arveja) de frutos secos (almendra, nueces, castañas avellanas) de semillas (lino, chía, girasol, zapallo).\n - Consumí fruta fresca preferentemente agroecológica, entera y con cáscara (minimiza fruta deshidratada, desecada y jugos).\n - El mejor método de cocción es el vapor o al “dente”, a mayor calor e hidratación del almidón mayor índice glucémico.\n - Mantenete hidratado bebiendo de 2 a 3 litros de agua por día. Moderá el consumo de alcohol.`,\n },\n bibliography: `Marilyn C Cornelis ,Lu Qi,Peter Kraft,and Frank B Hu.TCF7L2,dietary carbohydrate ,and risk of type 2 diabetes in US Women.`\n },\n \"Requerimiento de grasas Omega 3\": {\n label: \"Omega 3\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de ácidos grasos omega 3 acorde a tu metabolismo, para evitar los efectos de su deficiencia \n \n Tus genes indican que tendrías riesgo habitual de presentar altos niveles de triglicéridos en sangre por consumo deficiente de Omega 3, tus genes no te determinan, tus hábitos si.`,\n 1: ``,\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de ácidos grasos omega 3 acorde a tu metabolismo, para evitar los efectos de su deficiencia \n \n Tus genes indican que tendrías riesgo aumentado de presentar altos niveles de triglicéridos en sangre por consumo deficiente de Omega 3, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `Los ácidos grasos omega 3 comprende el ácido eicosapentaenoico (EPA) y el ácido docosahexaenoico (DHA) como fuentes de origen animal y linolénico (ALA) de fuentes vegetales. Estos ácidos no pueden ser sintetizados por nuestro organismo siendo la alimentación su principal fuente.\n Los ácidos grasos omega 3 mejoran nuestros lípidos en sangre (disminuyen el colesterol y aumentan las HDl o colesterol bueno), son conocidos por su efecto benéfico en la disminución del riesgo de enfermedades cardiovasculares a través de la disminución de los triglicéridos sanguíneos y disminución de la formación de placas de ateroma.\n \n Existen variantes genéticas asociadas al mayor riesgo de enfermedades cardiovasculares por un consumo insuficiente de este nutriente, ya que en nuestro organismo el omega-3 produciría un aumento de la formación de óxido nítrico, un potente vasodilatador y antiagregante plaquetario.\n La American Heart Association (Asociación Americana del Corazón) recomienda comer al menos dos raciones semanales de pescado rico en omega-3 (lo que equivale a un mínimo de 200 gr de pescado)\n \n Beneficios del omega 3:\n - Mejora los factores de riesgo asociados a enfermedad cardiovascular como: disminución de triglicéridos, reducción de presión arterial, aumento de colesterol HDL “bueno”, anticoagulante y antiplaquetario.\n - Mejora la resistencia a la insulina.\n - Reduce la inflamación de bajo grado.`,\n results: `El gen NOS3 codifica la enzima óxido nítrico sintasa 3, que metaboliza la L-arginina en óxido nítrico. La función del óxido nítrico es aumentar el diámetro de los vasos sanguíneos (vasodilatación) e inhibir la agregación plaquetaria (formación de trombos). El consumo insuficiente de ácidos omega-3 promueve menor formación de óxido nítrico y aumento de los triglicéridos séricos incrementando el riesgo de enfermedades cardiovasculares.`,\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu riesgo a presentar altos niveles de triglicéridos séricos con una dieta baja en omega 3 es el habitual.\n - Esta es una predisposición que te acompañará siempre, conocer esta información te permite elegir diariamente este nutriente para obtener sus beneficios protectores frente a las enfermedades cardiovasculares a pesar que tus genes no te predisponen a un riesgo aumentado.\n - Los ácidos grasos omega 3 los encontramos en fuentes animales y vegetales.\n - Los pescados de aguas profundas como salmón, caballa, atún blanco, trucha y sardina son los que más Omega (DHA y ARA) poseen. La carne de animales de pastoreo que declaren ser altas en omega 3 también pueden ser una fuente.\n - Semillas de lino, aceite de linaza, semillas de chía , aceite de canola y aceite de soja, poroto de soja y tofu, kale, son las fuentes de omega 3 vegetales (ALA).\n - La ingesta mínima recomendada es de 500-1 gr /día, pudiendo ser mayor en alguna patología inflamatoria. En vegetarianos y veganos se recomienda un mínimo de 2 gr/día. La mejor forma de absorción es con una comida alta en grasa.\n - En caso de no cubrir con la recomendación con fuentes alimentarias contamos en el mercado con suplementos: aceite de hígado de bacalao, suplemento de aceite de pescado, suplemento de aceite de krill, suplemento de aceite de algas.\n - Aceite de hígado de bacalao: es fuente de EPA y DHA. Contienen además vitamina A y D, por lo que debe suministrarse por un profesional para no exceder el consumo de estas vitaminas.\n - Suplemento a base de aceite de pescado: Seleccionar marcas que tengan entre DHA y EPA alrededor de 500-1 gr.\n - Suplementos de Krill: Es el suplemento de mayor biodisponibilidad , sobre todo de EPA. El krill es un crustáceo que contiene un aceite excepcionalmente rico en omega 3. Como se encuentra al inicio de la cadena trófica alimentándose de plancton el riesgo de ingesta de metales pesados y pesticidas es menor.\n - Consulta a tu médico qué suplemento de omega 3 te sugiere, siempre prestando atención a la cantidad de omega que aporta, trazabilidad y toxinas que puede contener. Chequea la fecha de vencimiento, siempre tiene que estar alejada del momento de consumo para que la grasa no se oxide.`,\n 1: ``,\n 2: `- Tus genes indican que tu riesgo a presentar altos niveles de triglicéridos séricos con una dieta baja en omega 3 es mayor que al habitual.\n - Esta es una predisposición que te acompañará siempre, conocer esta información te permite elegir diariamente este nutriente para obtener sus beneficios protectores frente a las enfermedades cardiovasculares.\n - Los ácidos grasos omega 3 los encontramos en fuentes animales y vegetales.\n - Los pescados de aguas profundas como salmón, caballa, atún blanco, trucha y sardina son los que más Omega (DHA y ARA) poseen. La carne de animales de pastoreo que declaren ser altas en omega 3 también pueden ser una muy buena fuente.\n - Semillas de lino, aceite de linaza, semillas de chía , aceite de canola y aceite de soja, poroto de soja y tofu, kale, son las fuentes de omega 3 vegetales (ALA).\n - La ingesta mínima recomendada es de 500-1 gr /día, pudiendo ser mayor en alguna patología inflamatoria. En vegetarianos y veganos se recomienda un mínimo de 2 gr/día. La mejor forma de absorción es con una comida alta en grasa.\n - En caso de no cubrir con la recomendación con fuentes alimentarias contamos en el mercado con suplementos: aceite de hígado de bacalao, suplemento de aceite de pescado, suplemento de aceite de krill, suplemento de aceite de algas.\n - Aceite de hígado de bacalao: es fuente de EPA y DHA. Contienen además vitamina A y D, por lo que debe suministrarse por un profesional para no exceder el consumo de estas vitaminas.\n - Suplemento a base de aceite de pescado: Seleccionar marcas que tengan entre DHA y EPA alrededor de 500-1gr.\n - Suplementos de Krill: Es el suplemento de mayor biodisponibilidad, sobre todo de EPA. El krill es un crustáceo que contiene un aceite excepcionalmente rico en omega 3. Como se encuentra al inicio de la cadena trófica alimentándose de plancton el riesgo de ingesta de metales pesados y pesticidas es menor.\n - Consulta a tu médico qué suplemento de omega 3 te sugiere, siempre prestando atención a la cantidad de omega que aporta, trazabilidad y toxinas que puede contener. Chequea la fecha de vencimiento, siempre tiene que estar alejada del momento de consumo para que la grasa no se oxide.\n `,\n },\n bibliography: `Ju-ShengZheng.ReplicationofaGene-DietInteractionatCD36,NOS3 and PPARGinResponsetoOmega-3FattyAcidSupplementsonBloodLipids: ADouble-BlindRandomizedControlledTrial`\n },\n \"Niveles séricos de colesterol LDL\": {\n label: \"LDL\",\n zone: \"diagnosticResults\",\n desc: {\n 0: `Los niveles de colesterol LDL en sangre dependen de múltiples factores genéticos y ambientales.\n Conocer lo que dicen tus genes te puede orientar en el cambio de hábitos alimentarios, y en el tratamiento farmacológico si fuera necesario, para disminuir eficazmente el riesgo de padecer alguna de estas enfermedades.\n \n Tus genes indican que podrías presentar valores en sangre de colesterol LDL habituales o bajos, tus genes no te determinan, tus hábitos si.`,\n 1: \"\",\n 2: `Los niveles de colesterol LDL en sangre dependen de múltiples factores genéticos y ambientales.\n Conocer lo que dicen tus genes te puede orientar en el cambio de hábitos alimentarios, y en el tratamiento farmacológico si fuera necesario, para disminuir eficazmente el riesgo de padecer alguna de estas enfermedades.\n \n Tus genes indican que podrías presentar valores en sangre de colesterol LDL altos, tus genes no te determinan, tus hábitos si.`,\n },\n generalInfo: `Además de las recomendaciones de hábitos alimentarios saludables y actividad física diaria es importante conocer lo que dicen tus genes de tu colesterol, ya que su alteración se asocia a la formación de placas de ateroma que bloquean la luz de los vasos sanguíneos aumentando el riesgo de infarto de miocardio y enfermedades cardiovasculares.\n Varios factores aumentan el riesgo de presentar colesterol alto, las más importantes son:\n La herencia, la edad y el sexo (el colesterol empieza a elevarse hacia los 20 años y continúa subiendo hasta los 60 o 65 años, es mayor en los hombres antes de los 50, y en las mujeres a partir de la menopausia), el sobrepeso tiende a aumentar el colesterol LDL (“malo”), aumenta los triglicéridos y baja el colesterol HDL (“bueno”), aumentando el riesgo cardiovascular.\n \n Respecto a la dieta desde hace ya tiempo conocemos que las grasas saturadas si bien elevan el colesterol LDL no se consideran actores esenciales ya que las partículas de LDL que elevan son pequeñas y densas (un subtipo de LDL) en lugar de las partículas grandes.\n \n Signos y síntomas:\n - La mayoría de las personas con alteraciones en los valores de colesterol LDL no tienen signos ni síntomas, por eso es importante controlarlo en los análisis de sangre de los controles médicos periódicos.`,\n results: `El gen FADS1 codifica para la enzima hepática “desaturasa de ácidos grasos”. Esta enzima está asociada con la conversión de ácidos grasos de cadena corta en formas activas de mayor longitud, y con la conversion de los ácidos grasos omega 3 y 6 en formas activas como EPA , DHA y AA. Estos ultimos ayudan a controlar los niveles séricos de LDL entre otras funciones.`,\n understandingResults: ``,\n snps: [],\n recommendations: {\n 0: `- Tus genes indican que tu riesgo de presentar altos niveles de colesterol LDL con una dieta rica en grasas saturadas es bajo, pero esto no quiere decir que no puedas desarrollarlos si tu estilo de vida no es saludable y basado en alimentos reales.\n - Es recomendable que verifiques tus niveles de colesterol en sangre directamente por técnicas de laboratorio en tus chequeos médicos\n - Mantené un peso saludable acorde a tu talla, contextura y momento de la vida.\n - Ejercítate a diario al menos 30-40 minutos, mantené una alimentación variada, equilibrada, come de forma ordenada y en porciones suficientes.\n - Para prevenir el aumento de peso y disminuir el riesgo de enfermedad cardiovascular, modera el consumo de grasas totales, azúcares y harinas refinadas de tu dieta, dale prioridad a las grasas poliinsaturadas (“grasas buenas”), especialmente omega-3 de aceite de oliva, aceitunas, semillas de chía y lino, nueces pecanas, aceite de lino, y nuez y pescados.\n - Los alimentos que más colesterol tienen son las vísceras, fiambres, manteca, quesos duros.\n - Incorporá semanalmente a tu mesa más veces el pescado (merluza, abadejo, atún) y el pollo. Elegí cortes magros de carne vacuna (lomo, peceto, nalga).\n - En lo cotidiano preferí lácteos descremados (leche, queso y yogur), reservando los quesos duros (Mar del plata, fontina) para situaciones especiales.\n - Consumí diariamente variedad de frutas y verduras , cereales integrales, legumbres y reservá fiambres, achuras y grasas para consumo ocasional.\n - Si tenés colesterol alto a pesar de este resultado, es importante prevenir que empeore o que cause complicaciones. Controlate con tu médico periódicamente y seguí tu plan de tratamiento incluyendo hábitos de vida saludables y, si está indicado, medicamentos.`,\n 1: ``,\n 2: `- Tus genes indican que tu riesgo a presentar mayores niveles de colesterol LDL con una dieta rica en grasas saturadas es alto, pero esto no lo determina.\n - Recordá que la mayoría de las veces el colesterol alto no da síntomas, por lo que es conveniente verificar los niveles de colesterol en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.\n - Mantené un peso saludable acorde a tu talla, contextura y momento de la vida. Ejercítate a diario al menos 30-40 minutos, mantené una alimentación variada, equilibrada, come de forma ordenada y en porciones suficientes.\n - Para prevenir el aumento de peso y disminuir el riesgo de enfermedad cardiovascular, modera el consumo de grasas totales , azúcares y harinas refinadas de tu dieta, dale prioridad a las grasas poliinsaturadas (“grasas buenas”), especialmente omega-3 de aceite de oliva, aceitunas, semillas de chía y lino, nueces pecanas, aceite de lino, y nuez y pescados.\n - Los alimentos que más colesterol tienen son las vísceras, fiambres, manteca, quesos duros. La yema de huevo no eleva el colesterol!\n - Consumí diariamente frutas y verduras (preferentemente rojizas: uva, fresa, arándano, berenjena, remolacha), legumbres (soja, garbanzos) y té verde. Estos alimentos contienen polifenoles que limitan el daño de las LDL a los vasos sanguíneos.\n - Utiliza quesos reducidos en grasa (cottage, blanco y blandos descremados). Evita quesos de rallar, tipo mar de plata o fontina. Las vísceras (achuras), fiambres y manteca reservalas para un consumo esporádico o en fechas especiales.\n - Incorporá semanalmente a tu mesa más veces el pescado (merluza, abadejo, atún) y el pollo . Elegí cortes magros de carne vacuna (lomo, peceto, nalga).`,\n },\n bibliography: `S. Hellstrand , E. Sonestedt ,U. Ericson , B. Gullberg , E. Wirfält , B. Hedblad , and M. Orho-Melander .Intake levels of dietary long-chain PUFAs modify the association between genetic variation in FADS and LDL-C\n `\n },\n Calcio: {\n label: \"Calcio\",\n zone: \"diagnosticResults\",\n desc: {\n 0: \"Bajo riesgo de presentar niveles altos de calcio.\",\n 1: \"Riesgo moderado de presentar niveles altos de calcio. Modere el consumo de alimentos con alto contenido en calcio\",\n 2: \"Riesgo elevado de presentar niveles altos de calcio. Evite el consumo excesivo de alimentos con alto contenido en calcio.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n Hierro: {\n label: \"Hierro\",\n zone: \"diagnosticResults\",\n desc: {\n 0: \"Bajo riesgo de presentar niveles bajos de hierro. Buen aprovechamiento de alimentos ricos en hierro.\",\n 1: \"Riesgo moderado de presentar niveles bajos de hierro. Favorecer el consumo de alimentos ricos en hierro.\",\n 2: \"Alto riesgo de presentar niveles bajos de hierro. Favorecer el consumo de alimentos ricos en hierro o complementar con un plan de suplementación.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n Sodio: {\n label: \"Sodio\",\n zone: \"diagnosticResults\",\n desc: {\n 0: \"Bajo riesgo de presentar niveles altos de sodio.\",\n 1: \"Riesgo moderado de presentar niveles niveles altos de sodio. Evite el consumo de alimentos altos en sodio.\",\n 2: \"Riesgo elevado de presentar niveles altos de sodio. Evite el consumo de alimentos altos en sodio y prefiera alimentos bajos en sodio.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n VitA: {\n label: \"Vitamina A\",\n zone: \"diagnosticResults\",\n desc: {\n 0: \"Menor riesgo de presentar niveles bajos de vitamina A. Adecuado metabolismo de la vitamina A proveniente de la alimentación.\",\n 1: \"Riesgo moderado de presentar niveles bajos de vitamina A. Favorecer el consumo de alimentos ricos en vitamina A o complementar con un plan de suplementación.\",\n 2: \"Riesgo elevado de presentar niveles bajos de vitamina A. Favorecer el consumo de alimentos ricos en vitamina A o complementar con un plan de suplementación.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n VitB: {\n label: \"Vitamina B9 (Ácido Fólico)\",\n zone: \"diagnosticResults\",\n desc: {\n 0: \"Bajo riesgo de presentar niveles bajos de vitamina B.\",\n 1: \"Riesgo moderado de presentar niveles bajos de vitamina B. Prefiera los alimentos considerados buena fuente de vitamina B o complementar con un plan de suplementación.\",\n 2: \"Riesgo elevado de presentar niveles bajos de vitamina B. Prefiera los alimentos considerados buena fuente de vitamina B o complementar con un plan de suplementación.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n VitC: {\n label: \"Vitamina C\",\n zone: \"diagnosticResults\",\n desc: {\n 0: \"Bajo riesgo de presentar niveles bajos de vitamina C.\",\n 1: \"Riesgo moderado de presentar niveles bajos de vitamina C. Favorecer el consumo de alimentos ricos en vitamina C o complementar con un plan de suplementación.\",\n 2: \"Riesgo elevado de presentar niveles bajos de vitamina C. Prefiera los alimentos considerados buena fuente de vitamina C o complementar con un plan de suplementación.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n VitD: {\n label: \"Vitamina D\",\n zone: \"diagnosticResults\",\n desc: {\n 0: \"Bajo riesgo de presentar bajos niveles de vitamina D.\",\n 1: \"Riesgo moderado de presentar bajos niveles de vitamina D. Prefiera el consumo de alimentos considerados buena fuente de vitamina D o complementar con un plan de suplementación.\",\n 2: \"Riesgo elevado de presentar bajos niveles de vitamina D. Prefiera el consumo de alimentos considerados buena fuente de vitamina D o complementar con un plan de suplementación.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n Lactosa: {\n label: \"Intolerancia a la Lactosa\",\n zone: \"intolerancesMain\",\n desc: {\n 0: \"Bajo riesgo de presentar intolerancia a la lactosa.\",\n 1: \"Riesgo moderado de intolerancia a la lactosa. Consuma con moderación alimentos que contengan lactosa.\",\n 2: \"Riesgo elevado de intolerancia a la lactosa. Evite el consumo de alimentos que contengan lactosa. La mala absorción de la lactosa produce inflamación intestinal y diversos síntomas digestivos.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n Gluten: {\n label: \"Intolerancia al Gluten (Celiaquía)\",\n zone: \"intolerancesMain\",\n desc: {\n 0: \"Bajo riesgo de presentar intolerancia al gluten. Libre consumo de alimentos ricos en gluten.\",\n 1: \"Riesgo moderado de intolerancia al gluten. Consuma con moderación los alimentos que contengan gluten.\",\n 2: \"Riesgo elevado de intolerancia al gluten. Evite el consumo de alimentos que contengan gluten.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n Lipidos: {\n label: \"Metabolismo de Grasas\",\n zone: \"intolerancesMain\",\n desc: {\n 0: \"Bajo riesgo de ganancia de peso por el consumo de grasas. Sin embargo, recuerde que una dieta equilibrada debe contener no más del 30% de grasa total de la cual menos del 10% debe ser grasa saturada, entre 15-20% de grasas monoinsaturadas y entre 6-11% de grasas poliinsaturadas. Bajo riesgo de presentar niveles bajos de ácidos grasos Omega-3 y 6.\",\n 1: \"Riego moderado de ganancia de peso por el consumo de grasas. Modere el consumo de alimentos con alto o moderado aporte de grasas y prefiera el consumo de alimentos con muy bajo, bajo o moderado aporte de grasa. Recuerde que una dieta equilibrada debe contener no más del 30% de grasa total de la cual menos del 10% debe ser grasa saturada, entre 15-20% de grasas monoinsaturadas y entre 6-11% de grasas poliinsaturadas. Riesgo moderado de presentar niveles bajos de ácidos grasos Omega-3 y 6. Niveles bajos de los ácidos grasos esenciales Omega-3 y 6 está asociado a sobrepeso, obesidad y enfermedades inflamatorias, se recomienda el consumo de alimentos ricos en ácidos grasos Omega-3 y 6\",\n 2: \"Riesgo elevado de ganancia de peso por el consumo de grasas. Evite el consumo de alimentos con alto o moderado aporte en grasas y prefiera aquellos bajos o muy bajos en grasa. Recuerde que una dieta equilibrada debe contener no más del 30% de grasa total de la cual menos del 10% debe ser grasa saturada, entre 15-20% de grasas monoinsaturadas y entre 6-11% de grasas poliinsaturadas. Riesgo elevado de presentar niveles bajos de ácidos grasos Omega-3 y 6. Niveles bajos de los ácidos grasos esenciales Omega-3 y 6 está asociado a sobrepeso obesidad y enfermedades inflamatorias, se recomienda el consumo de alimentos ricos en ácidos grasos Omega-3 y 6.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n bibliography: \"\"\n },\n HC: {\n label: \"Metabolismo de Carbohidratos\",\n zone: \"intolerancesMain\",\n desc: {\n 0: \"Bajo riesgo de ganancia de peso por el consumo de carbohidratos. Sin embargo, recuerde que una alimentación correcta se recomienda no exceder los 25g de azúcar y consumir al menos de 25 a 30g de fibra.\",\n 1: \"Riesgo moderado de ganancia de peso por el consumo de carbohidratos. Modere su consumo de alimentos con alto aporte de carbohidratos y el consumo de alimentos con muy bajo, bajo o moderado aporte de carbohidratos. Recuerde que una alimentación correcta se recomienda no exceder los 25g de azúcar y consumir al menos de 25 a 30g de fibra.\",\n 2: \"Riesgo elevado de ganancia de peso por el consumo de carbohidratos. Evite el consumo de alimentos con alto aporte de carbohidratos y el consumo de alimentos con muy bajo, bajo o moderado aporte de carbohidratos. Recuerde que una alimentación correcta se recomienda no exceder los 25g de azúcar y consumir al menos de 25 a 30g de fibra.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n Etanol: {\n label: \"Asimilación de Alcohol\",\n zone: \"intolerancesOther\",\n desc: {\n 0: \"Bajo riesgo de experimentar los efectos negativos del alcohol (náuseas, mareos, enrojecimiento facial, etc), lo que implica un mayor riesgo de dependencia al mismo. Las bebidas alcohólicas son fuente de calorías vacías, es decir, carecen de vitaminas y minerales. Aportan energía que se verá contrarrestada por el efecto represor que tienen sobre el sistema nervioso central, reduciendo la capacidad de hablar, concentrarse y caminar. Factores psicosociales, ambientales, biológicos y genéticos desempeñan un importante papel en la dependencia al alcohol, el abuso en el consumo del alcohol puede generar diversas lesiones en el organismo como son: gastritis, daño hepático e hipertensión arterial entre otras.\",\n 1: \"Riesgo moderado de experimentar los efectos negativos del alcohol (náuseas, mareos, enrojecimiento facial, etc). Las bebidas alcohólicas son fuente de calorías vacías, es decir, carecen de vitaminas y minerales. Aportan energía que se verá contrarrestada por el efecto represor que tienen sobre el sistema nervioso central, reduciendo la capacidad de hablar, concentrarse y caminar.\",\n 2: \"Mayor riesgo de experimentar los efectos negativos del alcohol (náuseas, mareos, enrojecimiento facial, etc). Las bebidas alcohólicas son fuente de calorías vacías, es decir, carecen de vitaminas y minerales. Aportan energía que se verá contrarrestada por el efecto represor que tienen sobre el sistema nervioso central, reduciendo la capacidad de hablar, concentrarse y caminar.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n Cafeina: {\n label: \"Asimilación de Cafeína\",\n zone: \"intolerancesOther\",\n desc: {\n 0: \"Bajo riesgo de que los efectos estimulantes resulten más duraderos. Metabolizador rápido de cafeína. Debe tenerse en cuenta que, además de la genética, la capacidad de metabolización de la cafeína depende también de factores como la cantidad de café ingerida, el tabaquismo, los tratamientos anticonceptivos hormonales, entre otros.\",\n 1: \"Riesgo moderado de que los efectos estimulantes resulten más duraderos, incrementando el riesgo de hipertensión con su consumo y, por tanto, el riesgo cardiovascular asociado. Metabolización lenta de la cafeína. Debe tenerse en cuenta que, además de la genética, la capacidad de metabolización de la cafeína depende también de factores como la cantidad de café ingerida, el tabaquismo, los tratamientos anticonceptivos hormonales, entre otros.\",\n 2: \"Mayor riesgo de que los efectos estimulantes resulten más duraderos, incrementando el riesgo de hipertensión con su consumo y, por tanto, el riesgo cardiovascular asociado. Metabolización lenta de la cafeína. Debe tenerse en cuenta que, además de la genética, la capacidad de metabolización de la cafeína depende también de factores como la cantidad de café ingerida, el tabaquismo, los tratamientos anticonceptivos hormonales, entre otros.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n bibliography: \"\"\n },\n Apetito: {\n label: \"Apetito y Saciedad\",\n zone: \"intolerancesOther\",\n desc: {\n 0: \"Bajo riesgo de presentar un mayor apetito. Bajo riesgo de presentar una incorrecta inhibición/control de la sensación de saciedad.\",\n 1: \"Riesgo moderado de presentar un mayor apetito. Riesgo moderado de presentar una incorrecta inhibición/control de la sensación de saciedad.\",\n 2: \"Alto riesgo de presentar una mayor sensación de apetito. Riesgo alto de presentar una incorrecta inhibición/control de la sensación de saciedad.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n Ejercicio: {\n label: \"Respuesta a Ejercicio Físico\",\n zone: \"intolerancesOther\",\n desc: {\n 0: \"Mayor beneficio en la reducción de grasa corporal en respuesta a la práctica de ejercicio físico regular.\",\n 1: \"Reducción adecuada de la grasa corporal como respuesta a la práctica de ejercicio físico regular.\",\n 2: \"Riesgo elevado de resistencia a la pérdida de peso mediante la práctica de ejercicio físico, debido a una menor capacidad para usar los depósitos de grasa. El resultado no indica de manera directa que el ejercicio no resultará efectivo para la pérdida de peso, sino que aquellos pacientes con el genotipo de baja probabilidad requerirán rutinas de ejercicio especializadas.\",\n },\n generalInfo: \"\",\n results: \"\",\n understandingResults: \"\",\n snps: [],\n recommendations: {\n 0: ``,\n 1: ``,\n 2: ``,\n },\n bibliography: \"\"\n },\n };\nconst dictFoodsImg = {\n \"Refresco en polvo sin azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F97.jpg?alt=media&token=57ecb6dc-0e9b-4700-9a67-6370e7915328\",\n \"Cerveza light\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\n \"Cebollas moradas y blancas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F196.jpg?alt=media&token=bbe94993-3855-43c3-b921-084fa11dfbb7\",\n \"Leche entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\n \"Leche de vaca entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\n \"Leche de oveja/búfala\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\n \"Leche fermentada con probióticos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\n \"Leche vegetal de maní\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\n \"Leche vegetal de almendra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\n \"Leche vegetal de avena\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\n \"Leche semidescremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\n \"Leche deslactosada vaca entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\n \"Leche descremada con 50% más proteínas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\n \"Mermelada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\n \"Mermelada de frutas industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\n \"Mermelada de frutas reducida en azúcar industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\n \"Mermelada de fruta casera sin azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\n \"Totopos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F108.jpg?alt=media&token=4edd4632-ec68-4549-9951-b4eab0747289\",\n \"Uva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F139.jpg?alt=media&token=bbbc9589-5d4e-423c-8e96-02a102a178b6\",\n \"Frijol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F174.jpg?alt=media&token=e0a3a072-4149-4d4d-a12b-07944aa79b14\",\n \"Porotos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F174.jpg?alt=media&token=e0a3a072-4149-4d4d-a12b-07944aa79b14\",\n \"Carne vacuna peceto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F67.jpg?alt=media&token=dbf1df41-38ee-41a8-8f85-b9d620b02c12\",\n \"Vacuno cortes magros (peceto, nalga, cuadrada, lomo)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F67.jpg?alt=media&token=dbf1df41-38ee-41a8-8f85-b9d620b02c12\",\n \"Manteca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F158.jpg?alt=media&token=30480bbe-d3e3-4bfc-a0d2-a62be1fc90bd\",\n \"Manteca/margarina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F158.jpg?alt=media&token=30480bbe-d3e3-4bfc-a0d2-a62be1fc90bd\",\n \"Café soluble\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\n \"Café preparado 230 ml:96 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\n \"Café preparado descafeinado 230 ml:5 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\n \"Bagel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F248.jpg?alt=media&token=9a99bcf8-4961-4fbb-8951-7b1e1668b911\",\n \"Helado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F161.jpg?alt=media&token=6aaadd8a-9c3e-4782-b7f1-e76af7854305\",\n \"Queso cheddar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F37.jpg?alt=media&token=e3547040-b73f-4bd0-8c9b-3e0dfc1f4710\",\n \"Leche descremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\n \"Leche de vaca descremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\n \"Salmon\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\n \"Mercurio moderado-alto (Mero, Caballa, Atún blanco en conserva, Espada, Salmón criadero)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\n \"Mercurio Bajo (Anchoa, Sardina, Merluza, Arenque, Abadejo, Calamar, Vieira, Lenguado, Sabalo, Salmón fresco o salvaje)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\n \"Granola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F240.jpg?alt=media&token=43623108-5fc8-4df9-98d0-ea43180d5e10\",\n \"Chicle sin azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F93.jpg?alt=media&token=9da768d7-c9b1-48d0-bb97-1eb7ae62b5a7\",\n \"Coñac\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F9.jpg?alt=media&token=9acc4763-68f1-4379-a9cf-cb47b232c8b2\",\n \"Lechuga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F208.jpg?alt=media&token=fff0484d-cc0c-4956-89be-2fdbf43e54c7\",\n \"Yogurt entero natural\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\n \"Yogur de leche de vaca entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\n \"Leche desclactosada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\n \"Leche desclactosada vaca entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\n \"Leche de vaca deslactosada entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\n \"Refresco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\n \"Nachos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\n \"Snacks salados (papas, nachos, palitos)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\n \"Snacks salados( papitas, chizito, palito)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\n \"Sandía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F138.jpg?alt=media&token=413cce58-fb54-4226-8cc1-3dd17cf9b5c9\",\n \"Soja texturizada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\n \"Soja procesada (Ultra Procesada)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\n \"Soja fermentada (Natural)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\n \"Tofu\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\n \"Costillar de cerdo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F72.jpg?alt=media&token=03919ce9-ab69-46d7-b0dd-56319ad7942b\",\n \"Ajonjolí\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F141.jpg?alt=media&token=0f34569c-3328-4d30-bc7b-3bbe2d131a0c\",\n \"Té verde\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F226.jpg?alt=media&token=4e4dfe76-2117-431d-90f6-c292dc82c575\",\n \"Hot cake\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F253.jpg?alt=media&token=55ec5e3e-c2ed-4278-ad0b-0b2c63b1daae\",\n \"Dulce de leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F164.jpg?alt=media&token=fe5a859c-a0ce-4702-b648-8d680f2776d4\",\n \"Cordero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F20.jpg?alt=media&token=d856d019-8502-4f85-a53d-3d6cd8e86d71\",\n \"Yogurt descremado natural\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\n \"Yogur de leche de vaca descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\n \"Yogur de leche de vaca deslactosado entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\n \"Yogur de leche de vaca deslactosado descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\n \"Yogur vegetal ( coco, avena, soja)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\n \"Kefir de leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\n \"Pechuga de pollo sin piel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F64.jpg?alt=media&token=ce97e84c-c67b-4a88-b78f-d7627ecbb360\",\n \"Pechuga de pollo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F64.jpg?alt=media&token=ce97e84c-c67b-4a88-b78f-d7627ecbb360\",\n \"Galleta de nuez\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F237.jpg?alt=media&token=a9cb0341-0968-4a81-ad10-9a719a45a875\",\n \"Gelatina diet\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F182.jpg?alt=media&token=d1d1c7e5-577f-4cae-b71e-9ab35d47dcdc\",\n \"Champaña\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F8.jpg?alt=media&token=f5c2ea97-012f-4c2c-b725-5b0cd721b074\",\n \"Tomate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F213.jpg?alt=media&token=b99e45f2-f65b-44a0-b47b-f18975ac8ed2\",\n \"Azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\n \"azúcar de caña\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\n \"azúcar de coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\n \"Croissant salado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\n \"Naranja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F133.jpg?alt=media&token=330afcf4-6350-4ce8-bc62-bdcb49f446a8\",\n \"Alubia\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F173.jpg?alt=media&token=d73ad411-74b9-4836-8d3a-6d399734ff3d\",\n \"Queso sandwich\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F68.jpg?alt=media&token=6a5d7c67-c2f7-45b7-9496-853132c9fda4\",\n \"Semilla de calabaza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\n \"Café express\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\n \"Café espresso molido de un solo origen 30ml: 64 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\n \"Café espresso molido de un solo origen 30ml : 64 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\n \"Café espresso molido de un solo origen 30ml: 64 mg \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\n \"Quinoa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F113.jpg?alt=media&token=ef86d6cf-cd08-4bf8-87f9-ee226c058608\",\n \"Yogurt frutado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F165.jpg?alt=media&token=0cb48af6-a5d4-4d87-9e39-908e607a4159\",\n \"Mortadela\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F26.jpg?alt=media&token=d0a17f4e-8194-4a66-9a98-4adc1ee76172\",\n \"Carne vacuna paleta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F48.jpg?alt=media&token=2d36496f-0c1f-407f-b038-fc471dad2e9c\",\n \"Vacuno cortes semigrasos (roast beef, bife angosto, paleta, tortuguita)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F48.jpg?alt=media&token=2d36496f-0c1f-407f-b038-fc471dad2e9c\",\n \"Cheesecake\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F232.jpg?alt=media&token=a58d8c88-7b51-45e9-825c-35a12c106e36\",\n \"Salsa de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F185.jpg?alt=media&token=fb738a0c-8631-42d9-b388-8cecebe31472\",\n \"Brandy\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F7.jpg?alt=media&token=9175f157-2baf-458a-8167-4131c6a73b15\",\n \"Rúcula\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F214.jpg?alt=media&token=90971cf5-984f-40a0-bd0d-6445727c5f1d\",\n \"Mousse de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F89.jpg?alt=media&token=01bc2687-80cb-4f87-82f1-7afd729b2598\",\n \"Papas fritas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F106.jpg?alt=media&token=7e5c8bc5-4ca6-49a9-8270-455be7e8ad07\",\n \"Arándanos \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F115.jpg?alt=media&token=fb1b1c35-544a-46b2-a84a-1cf9614eb25b\",\n \"Lentejas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F178.jpg?alt=media&token=76f0fbe4-cc63-4906-81d2-7950fba044ca\",\n \"Queso cuartirolo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F77.jpg?alt=media&token=3927e56a-0a54-4e7b-acf9-ae120b776bda\",\n \"Piñón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F148.jpg?alt=media&token=cdb60a52-4fd4-4ae5-ad95-7afe21d0a9bb\",\n \"Te negro 230 ml: 40-120 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\n \"Boldo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\n \"Te negro descafeinado 230 ml: 3 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\n \"Té de hierbas 230 ml: 0 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\n \"Té negro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\n \"Té de arándanos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\n \"Té de roiboos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\n \"Pan blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F254.jpg?alt=media&token=aeb7b88d-b5ce-4f68-a734-9766aa507608\",\n \"Panes de harinas sugeridas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F254.jpg?alt=media&token=aeb7b88d-b5ce-4f68-a734-9766aa507608\",\n \"Chocolatada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\n \"Huevo frito\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F23.jpg?alt=media&token=8eb111c1-5d39-47f6-af91-9f69da252c3a\",\n \"Atún en agua drenado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F53.jpg?alt=media&token=cf425386-1c7d-40f3-b4c5-ceb80e34a0a6\",\n \"Brownie\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F231.jpg?alt=media&token=f3ea2321-fb5e-4d6d-ac83-4073f9989aed\",\n \"Agua mineral\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\n \"Agua mineral de manantial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\n \"Agua mineral infusionada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\n \"Vino blanco dulce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F16.jpg?alt=media&token=81cf77d1-5ee5-499a-afba-7270be61302a\",\n \"Coliflor\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F202.jpg?alt=media&token=a4ada038-1bc8-4127-9585-0706a3caae94\",\n \"Chicle\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\n \"Golosinas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\n \"glutamato, nitritos, sulfito y colorante amarillo E 102, E110, rojo E 124.\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\n \"Cereza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F116.jpg?alt=media&token=85eec064-2bfb-4c01-876b-5eb9d715299c\",\n \"Hummus\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F177.jpg?alt=media&token=f605a53b-dde5-44e2-9588-78604b888554\",\n \"Carne vacuna vacio\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F82.jpg?alt=media&token=f6ea6421-8c8b-4274-9d5a-4efa515e705e\",\n \"Mani\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F144.jpg?alt=media&token=511d60c8-2f0b-488c-bf09-5e9ea7929d12\",\n \"Maní\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F144.jpg?alt=media&token=511d60c8-2f0b-488c-bf09-5e9ea7929d12\",\n \"Bebidas energéticas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F217.jpg?alt=media&token=44221cf2-48c7-4c8b-8d38-67805dcf4f4d\",\n \"Bebida energizante 250 ml:80 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F217.jpg?alt=media&token=44221cf2-48c7-4c8b-8d38-67805dcf4f4d\",\n \"Avena instantánea\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F247.jpg?alt=media&token=6bd1fb21-d2f8-4ce0-bd1f-8e326548a94b\",\n \"Leche saborizada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F162.jpg?alt=media&token=f96ce859-b2da-4049-a4a0-796b411e560d\",\n \"Queso de cabra \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\n \"Carne vacuna lomo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F46.jpg?alt=media&token=451c3766-5941-438b-8463-74b97b2df8f3\",\n \"Muffin\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F241.jpg?alt=media&token=f4332e62-f15f-4a4a-9025-5071a6285ac7\",\n \"Caldo verdura casero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F223.jpg?alt=media&token=430c42ce-65a2-4123-82b8-37e09f81d314\",\n \"Aguardiente\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F5.jpg?alt=media&token=a562ef61-5cc0-4712-9d3d-5d50422dc422\",\n \"Hongos crudos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\n \"Setas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\n \"Chocolate con leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F86.jpg?alt=media&token=ff6f7fff-aa61-413e-8ed9-ca0d500ce38a\",\n \"Chocolate con leche 30 gr: 6 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F86.jpg?alt=media&token=ff6f7fff-aa61-413e-8ed9-ca0d500ce38a\",\n \"Papaya\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F134.jpg?alt=media&token=4037ef57-d950-4df3-9404-fa624b883f2a\",\n \"Garbanzos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F175.jpg?alt=media&token=80402972-80af-40ea-97a1-3280a7e5d3ec\",\n \"Sardinas en aceite\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F83.jpg?alt=media&token=de4c636a-1d2b-4095-a0f3-3ededb39d24e\",\n \"Semilla de girasol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\n \"Semilla girasol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\n \"Café instantáneo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\n \"Café instantáneo 230 ml: 70 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\n \"Café instantáneo descafeinado 230 ml : 2-5 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\n \"Capsulas varias de café\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\n \"Amaranto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F109.jpg?alt=media&token=e6f1cf7a-2777-4022-b68f-b3ab12e0716e\",\n \"Nugget de pollo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F229.jpg?alt=media&token=5b47109c-8c1f-4860-8c2b-194a0a8692fb\",\n \"Queso parmesano\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F49.jpg?alt=media&token=4e9a6ac5-72b9-4733-93f6-0b01da094202\",\n \"Queso pasta dura o semidura\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F49.jpg?alt=media&token=4e9a6ac5-72b9-4733-93f6-0b01da094202\",\n \"Galleta rellena\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F239.jpg?alt=media&token=0f067534-a7f0-407d-b0d6-7d21413e8cb4\",\n \"Té de limón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F186.jpg?alt=media&token=c3e76f52-9779-4337-9a48-933bf5187e2c\",\n \"Vino tinto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F17.jpg?alt=media&token=08309757-c55c-4f26-8086-563d28f692b4\",\n \"Vino 1 copa 100 ml 10 a 15°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F17.jpg?alt=media&token=08309757-c55c-4f26-8086-563d28f692b4\",\n \"Flor de calabaza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F205.jpg?alt=media&token=e11ddbc6-8fbc-4c16-a0fc-6d85b86c8883\",\n \"Mermelada light\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\n \"Guayaba\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F122.jpg?alt=media&token=64a55424-6249-4f92-8f2b-ec5420d4293a\",\n \"Habas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F176.jpg?alt=media&token=aeb4074b-6284-4a40-8a13-3dffc71a59b6\",\n \"Carne vacuna pulpa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F81.jpg?alt=media&token=70833e8a-ac0a-4dba-a90f-782198887ca4\",\n \"Avellana\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F143.jpg?alt=media&token=c066092a-fa44-4fdd-9ace-d16ab47681dc\",\n \"Cocoa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\n \"Cacao amargo en polvo 10 gr:13 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\n \"Avena arrollada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F111.jpg?alt=media&token=ed21aefb-7a4d-455f-9535-83d984e99651\",\n \"Queso provolone\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F28.jpg?alt=media&token=727c1c4f-5cf9-49be-aaf1-891215c03a78\",\n \"Queso cottage\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F66.jpg?alt=media&token=32e6d417-5df0-4910-9189-b3d7a3b1500f\",\n \"Pastel de frutas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F244.jpg?alt=media&token=abdb5df4-ff90-4f26-8bb4-2e8858ffb86f\",\n \"Edulcorante\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F183.jpg?alt=media&token=6dbb49d6-96ad-4357-b381-59463e994fb2\",\n \"Edulcorantes artificiales\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F183.jpg?alt=media&token=6dbb49d6-96ad-4357-b381-59463e994fb2\",\n \"Whisky\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F19.jpg?alt=media&token=15ce9716-7d31-4ce4-a7db-f62c875a1fd7\",\n \"Whisky o Ron 1 copa 50 ml 40 a 42°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F19.jpg?alt=media&token=15ce9716-7d31-4ce4-a7db-f62c875a1fd7\",\n \"Pepino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F209.jpg?alt=media&token=2d0ff821-6ec3-435a-aa0e-1dcd0e8ec45f\",\n \"Miel de abeja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F101.jpg?alt=media&token=9d9dc74e-6580-4ca0-876d-54c995f94787\",\n \"Miel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F101.jpg?alt=media&token=9d9dc74e-6580-4ca0-876d-54c995f94787\",\n \"Piña\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F136.jpg?alt=media&token=9aeb9040-9304-484f-a346-b462de01d8e0\",\n \"Carne vacuna aguja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F78.jpg?alt=media&token=b78f147f-bf36-40c6-a0db-0cfa56e30980\",\n \"Mantequilla de mani\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F146.jpg?alt=media&token=95cf3ce1-4fa8-4a11-8c68-91b3109dd693\",\n \"Refresco de cola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\n \"Bebidas cola 355 ml:40 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\n \"Pop natural\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F112.jpg?alt=media&token=e41462f1-e342-4b33-8e7b-23cd81cc5f9a\",\n \"Yema de huevo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F42.jpg?alt=media&token=c4c0628b-17c2-4658-add2-8b7f020cf8d0\",\n \"Huevo de gallina entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F42.jpg?alt=media&token=c4c0628b-17c2-4658-add2-8b7f020cf8d0\",\n \"Carne vacuna cuadril\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F45.jpg?alt=media&token=d6b37c18-909e-42b9-870c-e95e03f608a1\",\n \"Pan dulce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F242.jpg?alt=media&token=60f2c6b0-a1e4-4b1c-a0dc-f38aa8db43ff\",\n \"Productos de pastelería industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F242.jpg?alt=media&token=60f2c6b0-a1e4-4b1c-a0dc-f38aa8db43ff\",\n \"Sal\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F184.jpg?alt=media&token=01caa577-ac99-4d73-9667-bf5e1fa0facc\",\n \"Sal de mesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F184.jpg?alt=media&token=01caa577-ac99-4d73-9667-bf5e1fa0facc\",\n \"Vodka\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F18.jpg?alt=media&token=c248ad7c-7e6c-4a15-b6c9-3d82889c84bb\",\n \"Vodka 1 copa 50 ml 42°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F18.jpg?alt=media&token=c248ad7c-7e6c-4a15-b6c9-3d82889c84bb\",\n \"Chile habanero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F198.jpg?alt=media&token=dd0ecd83-6a6b-40c8-a120-5b25fc15956e\",\n \"Flan comercial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F87.jpg?alt=media&token=aec2fa7b-62eb-4666-81fb-e1ba3730b003\",\n \"Mango\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F128.jpg?alt=media&token=dd5b1f6b-f672-4fab-a9aa-02f439104872\",\n \"Carne vacuna nalga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F80.jpg?alt=media&token=941ab988-db3e-42d7-8463-09c0ed3897e1\",\n \"Mayonesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F159.jpg?alt=media&token=b110101f-1fdf-4c50-aa50-218adf3dc9de\",\n \"Croutones\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F249.jpg?alt=media&token=b3866ff1-d89e-4976-9591-275b2ae1ca7e\",\n \"Queso danbo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F31.jpg?alt=media&token=93340c62-5d6f-4903-8d91-02a6d1ab5adb\",\n \"Lenguado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\n \"Pescados de mar magros (Gatuzo, Brótola, Merluza, Corvina, Lenguado)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\n \"Dona \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F234.jpg?alt=media&token=4f0b3dc7-bf01-4ac7-b19d-1fc54666ad0e\",\n \"Anís dulce o seco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F6.jpg?alt=media&token=2e6a76bc-1c90-4851-b4cf-910a1cbc2d77\",\n \"Cilantro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F200.jpg?alt=media&token=01ad8d28-bd00-4f10-a5b5-8f92beb63ff6\",\n \"Chocolate blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F85.jpg?alt=media&token=ffd3f2a8-0e64-4960-a207-cae4ed22f11f\",\n \"Moras\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F132.jpg?alt=media&token=07c2bb4c-b3df-4906-a702-ef2d78da86d9\",\n \"Queso muzzarella\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F70.jpg?alt=media&token=b8c7523e-bb6c-4b35-a3e7-29720e8897ad\",\n \"Aceitunas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F153.jpg?alt=media&token=03fe0801-b9e7-4f9e-b20b-69aac5aeff55\",\n \"Arroz blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\n \"Arroz integral\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\n \"Arroz Yamani\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\n \"Frankfurter\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F41.jpg?alt=media&token=7cad9625-ccfe-4dd3-bbb0-e7dbf4c84699\",\n \"Camarón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F58.jpg?alt=media&token=f4e2e52e-fb23-4d59-a2c5-da16ca104352\",\n \"Galleta con chispas de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F235.jpg?alt=media&token=50baf4b1-b91b-49f0-83e2-3de95921c3f1\",\n \"Galletitas industriales\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F235.jpg?alt=media&token=50baf4b1-b91b-49f0-83e2-3de95921c3f1\",\n \"Ron blanco o añejo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F12.jpg?alt=media&token=b2958b98-23fd-4aba-969b-7201bf011504\",\n \"Acelga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F187.jpg?alt=media&token=45f75472-f9e4-4a65-9e38-3c4d013444ae\",\n \"Lima\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F125.jpg?alt=media&token=516f6a4c-df30-4533-a566-2658c044fd2f\",\n \"Morcilla\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F79.jpg?alt=media&token=fd12da78-f021-4f56-abce-8faa0dd63cd2\",\n \"Guacamole\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F156.jpg?alt=media&token=22d3c19a-75be-48f7-b922-0b4c71081a25\",\n \"Maicena\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F230.jpg?alt=media&token=119f1275-45ea-499e-9163-b302932b2fce\",\n \"Lomito canadiense\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\n \"Cangrejo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F59.jpg?alt=media&token=d4ac166e-9001-4b97-b444-96ee86fa38ff\",\n \"Galleta cubierta de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F236.jpg?alt=media&token=6ac5fb2c-5b58-443c-9192-4d0e9c311954\",\n \"Oporto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F11.jpg?alt=media&token=6fefb80d-94d4-40cf-922e-0cb8bbacd542\",\n \"Alcaucil\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F188.jpg?alt=media&token=d90dec3b-2ce2-42dd-b252-57d000ec7d7a\",\n \"Helado palito de agua\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F103.jpg?alt=media&token=490446c5-fa61-486f-a4f1-1f04566a6b0c\",\n \"Duraznos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F119.jpg?alt=media&token=4e1a504e-b408-4122-b6b7-8c021db10923\",\n \"Queso requeson\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\n \"Queso vaca blanco untable entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\n \"Queso vaca blanco untable descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\n \"Almendra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F142.jpg?alt=media&token=942132fd-efc3-465f-9fbe-e12772779278\",\n \"Granola baja en grasa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F252.jpg?alt=media&token=63f668e5-c77f-4b63-95b5-6c81bb64384f\",\n \"Queso brie\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F35.jpg?alt=media&token=ed383611-a97f-4b00-86e8-91ec7be35992\",\n \"Queso ricotta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\n \"Ricotta entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\n \"Ricotta descremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\n \"Cupcake\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F233.jpg?alt=media&token=feb4df99-90ce-4680-b36f-08223f99b741\",\n \"Ginebra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F10.jpg?alt=media&token=9ee6bdac-85b1-4e0c-bc44-bc7c90ee6926\",\n \"Zanahoria\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F215.jpg?alt=media&token=acc19d5e-63d3-4ef9-8618-a6c2eda6991c\",\n \"Caramelo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F91.jpg?alt=media&token=c8164016-661f-463a-a795-602d060f3545\",\n \"Manzanas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F129.jpg?alt=media&token=13a63bcf-bbc9-4d05-bb01-569d174d9da2\",\n \"Panceta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F75.jpg?alt=media&token=d29903c1-03d0-4a47-a606-766a2625143b\",\n \"Coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F155.jpg?alt=media&token=1009695b-d812-4ce4-802b-c7e1c519f26a\",\n \"Coco rallado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F155.jpg?alt=media&token=1009695b-d812-4ce4-802b-c7e1c519f26a\",\n \"Galleta salada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F251.jpg?alt=media&token=389db2d2-a071-4488-983b-24cf3a7323fe\",\n \"Queso camembert\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\n \"Queso vaca pasta blanda descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\n \"Queso vaca pasta blanda doble crema\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\n \"Carne picada magra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F33.jpg?alt=media&token=26613d09-d006-4cd3-84d7-b4f1b2f6ff10\",\n \"Pastel de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F243.jpg?alt=media&token=b8dba348-1385-48f7-b721-cc67fcd098e3\",\n \"Vino blanco seco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F16.jpg?alt=media&token=81cf77d1-5ee5-499a-afba-7270be61302a\",\n \"Morrones\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F210.jpg?alt=media&token=f07db15c-ded8-44a3-a765-fe762efe812f\",\n \"Chicle bajo en azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F93.jpg?alt=media&token=9da768d7-c9b1-48d0-bb97-1eb7ae62b5a7\",\n \"Maracuyá\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F130.jpg?alt=media&token=70891080-6b89-4d24-80dd-cdd30af3fc53\",\n \"Longaniza \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F74.jpg?alt=media&token=b2396aca-7519-44dc-b9b1-55641343b1a9\",\n \"Chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F145.jpg?alt=media&token=59a5cfc7-5edc-4441-b274-6ae30380676e\",\n \"Semillas de chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F145.jpg?alt=media&token=59a5cfc7-5edc-4441-b274-6ae30380676e\",\n \"Galleta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F250.jpg?alt=media&token=21cc1d2d-58ef-4729-aa11-1bfa318940aa\",\n \"Carne vacuna asado de tira\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F32.jpg?alt=media&token=433fe74e-717a-4921-bdab-0e3d3ae8a8c1\",\n \"Vacuno cortes grasos (asado, vacio, falda, aguja)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F32.jpg?alt=media&token=433fe74e-717a-4921-bdab-0e3d3ae8a8c1\",\n \"Calamar \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F57.jpg?alt=media&token=28419660-0066-4fad-bd13-858afc8b6621\",\n \"Galleta de avena \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F237.jpg?alt=media&token=a9cb0341-0968-4a81-ad10-9a719a45a875\",\n \"Fernet\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F4.jpg?alt=media&token=47e34e5c-3132-4deb-8b38-6d6f7748ae80\",\n \"Fernet-cola (20-80%) 1 vaso 100 ml-43°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F4.jpg?alt=media&token=47e34e5c-3132-4deb-8b38-6d6f7748ae80\",\n \"Arúgula\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F190.jpg?alt=media&token=e9dc9dc6-89a2-4f4e-b225-d5bda16f1a9f\",\n \"Paleta de caramelo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F102.jpg?alt=media&token=b0b4cdd3-07e9-442c-82b0-7a9b3fa1cf58\",\n \"Ciruela\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F117.jpg?alt=media&token=eacb9646-c0cd-43a3-8b24-c9d4992432d2\",\n \"Huevo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F73.jpg?alt=media&token=e92e7694-f454-4608-b383-1def32715409\",\n \"Nuez\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F147.jpg?alt=media&token=d255f242-f0df-490c-9157-cb3b75a44ec2\",\n \"Nuez de brasil o castaña pará\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F147.jpg?alt=media&token=d255f242-f0df-490c-9157-cb3b75a44ec2\",\n \"Pasta cocida\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F255.jpg?alt=media&token=ed4d911d-fa26-4b49-98d0-72bc828b5e44\",\n \"Pollo al spiedo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F30.jpg?alt=media&token=24276809-d25e-4262-9004-10eb582efc0b\",\n \"Pulpo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F65.jpg?alt=media&token=3e3f0a8d-2998-4d45-9fd7-baf5596e7a07\",\n \"Tortilla de harina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F245.jpg?alt=media&token=b1a01b58-a246-4134-8b48-a2f551649eed\",\n \"Tequila\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F14.jpg?alt=media&token=33568e53-70ae-4181-88e0-4a56ef3c10c2\",\n \"Berenjena \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F191.jpg?alt=media&token=bfacf072-7c5e-4ca3-a186-586b0555a61e\",\n \"Croissant dulce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\n \"Productos de panadería industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\n \"Pera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F135.jpg?alt=media&token=f2c89da1-e60b-48a7-8a8c-7fa17e0f3c9e\",\n \"Pate de lengua\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F76.jpg?alt=media&token=d374f5bf-29b3-469f-bb61-8659228243a2\",\n \"Pistacho\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F149.jpg?alt=media&token=ded01708-e33d-44bd-a248-11819c22d968\",\n \"Salame\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F40.jpg?alt=media&token=4fefe73e-2312-4667-96c1-1d1d2ea588e6\",\n \"Brotola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\n \"Pescado de rio grasos (Pati, Pacú, Surubí, Dorado, Trucha)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\n \"Waffle\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F246.jpg?alt=media&token=27fc98cd-002a-4744-8b7c-c5ccd044a30a\",\n \"Cerveza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\n \"Cerveza 1 vaso 200 ml 9°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\n \"Brócoli\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F194.jpg?alt=media&token=5f6a2aff-c073-44ba-a6f3-5854353f7e02\",\n \"Gomitas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F96.jpg?alt=media&token=7165aefe-e204-4521-b277-dd9ccbd9097a\",\n \"Melón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F131.jpg?alt=media&token=9cc155d5-86b3-4976-af81-9dca4a58c982\",\n \"Chicharrón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F71.jpg?alt=media&token=4250674e-9345-4c36-99b5-5a1e96fcdf21\",\n \"Aceite de canola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite de chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite de girasol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite de girasol alto oleico\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite de coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite de lino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite maiz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite oliva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite sesamo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite de uva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite de palta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Aceite rico en omega 3 (ALA) Lino, canola, nuez\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\n \"Fondue de queso\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F22.jpg?alt=media&token=e485c9c6-b459-40e9-8436-718e5cf6a93c\",\n \"Queso requeson light\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F51.jpg?alt=media&token=7415152c-6b28-405c-9300-7539b03aadfc\",\n \"Sidra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F13.jpg?alt=media&token=5a1fcda1-d8b7-46b4-bbc5-4e04db89e0f5\",\n \"Sidra 1 copa 100 ml 3 a 8 °\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F13.jpg?alt=media&token=5a1fcda1-d8b7-46b4-bbc5-4e04db89e0f5\",\n \"Champignones\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F197.jpg?alt=media&token=015565c9-6058-4bd7-9c5c-518aac9553c3\",\n \"Chocolate amargo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\n \"Cacao amargo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\n \"Chocolate 70-80% cacao\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\n \"Chocolate amargo 80% caca0 30 gr: 20 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\n \"Zarzamora\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F132.jpg?alt=media&token=07c2bb4c-b3df-4906-a702-ef2d78da86d9\",\n \"Crema de leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F160.jpg?alt=media&token=e65df7a7-6193-4af2-8419-84c59d948dbd\",\n \"Jamón cocido\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\n \"Fiambres y embutidos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\n \"Clara de huevo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F60.jpg?alt=media&token=46c76578-35ca-46e2-b183-a31f0c112447\",\n \"Remolacha\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F193.jpg?alt=media&token=72e8a2d6-be79-42ae-bfba-fd308b315963\",\n \"Gelatina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F95.jpg?alt=media&token=68e75c89-2445-4d46-a5e6-1fb39406503a\",\n \"Mandarina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F127.jpg?alt=media&token=ac8eb860-9de3-4cc5-b6b7-d39ba8a83dd0\",\n \"Palta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F154.jpg?alt=media&token=011a1b08-8146-4b0c-9958-169dc15caf7a\",\n \"Carne vacuna picada grasa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F33.jpg?alt=media&token=26613d09-d006-4cd3-84d7-b4f1b2f6ff10\",\n \"Atún en aceite\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F54.jpg?alt=media&token=5d58f0d2-d13c-492b-9311-840b61819cb7\",\n \"Conservas, enlatados,\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F54.jpg?alt=media&token=5d58f0d2-d13c-492b-9311-840b61819cb7\",\n \"Calabaza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F195.jpg?alt=media&token=1ef98b27-a0b2-4a9e-9293-97a56f0045db\",\n \"Flan en polvo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F87.jpg?alt=media&token=aec2fa7b-62eb-4666-81fb-e1ba3730b003\",\n \"Higo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F123.jpg?alt=media&token=d8e24d9a-910b-4980-9849-366833299d4e\",\n \"Margarina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\n \"Peperoni\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F29.jpg?alt=media&token=05193ad5-9b2f-493b-9cab-c382f0e8c025\",\n \"Langostino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F61.jpg?alt=media&token=66fce339-b795-486c-8f9a-ba895aa658a2\",\n \"Espárragos \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F203.jpg?alt=media&token=8787b0e4-655e-4219-9482-0563f358b427\",\n \"Jugo de frutas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F97.jpg?alt=media&token=57ecb6dc-0e9b-4700-9a67-6370e7915328\",\n \"Limón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F126.jpg?alt=media&token=99941f7b-51a0-4ea1-b824-3fd1010fa6ae\",\n \"Lengua vacuna \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F25.jpg?alt=media&token=452482ea-c5df-4313-9cf0-b48a1c26c43a\",\n \"Queso magro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F50.jpg?alt=media&token=87caeea6-dd4d-4642-bcf0-f9d1a280e3cd\",\n \"Hongos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\n \"Salsa ketchup\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F104.jpg?alt=media&token=07bd1f90-be81-4df2-8e90-d7d48238eb2b\",\n \"Condimentos industriales (ketchup, mostaza etc)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F104.jpg?alt=media&token=07bd1f90-be81-4df2-8e90-d7d48238eb2b\",\n \"Banana\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F137.jpg?alt=media&token=e37bf3b0-5ea4-4276-9f95-2993192b71cb\",\n \"Leonesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F27.jpg?alt=media&token=b59ca35f-e95c-410a-a4b0-73abb12b3a93\",\n \"Lomo de atún\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F52.jpg?alt=media&token=cbe415c5-c093-496e-83b7-7f86fa64de4f\",\n \"Apio\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F189.jpg?alt=media&token=af22e58c-86ff-4780-ada4-bc882bde56a9\",\n \"Frutilla\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F121.jpg?alt=media&token=3238fd05-4602-47e0-9ba4-7047c4b01e94\",\n \"Pollo muslo sin piel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F21.jpg?alt=media&token=b35953b1-c752-45bb-9502-b5abacfd5b9a\",\n \"Pata y muslo de pollo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F21.jpg?alt=media&token=b35953b1-c752-45bb-9502-b5abacfd5b9a\",\n \"Atún al agua \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F44.jpg?alt=media&token=3531282a-7fe6-4785-b085-cbf112e93319\",\n \"Repollo brusela, Repollo blanco y colorado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F201.jpg?alt=media&token=a77c48d5-61a0-417c-91de-ff4f47b03957\",\n \"Kiwi\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F124.jpg?alt=media&token=d5fbc6ea-f325-47d8-8972-461f9f54f8f2\",\n \"Queso blue cheese\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F34.jpg?alt=media&token=d913385a-1f31-4f94-9ed4-f61d251cf8cf\",\n \"Bacalao\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F55.jpg?alt=media&token=c6e5fe4a-8ab8-4a7a-9ab2-b39ec234a48b\",\n \"Pescados ricos en omega 3 (Caballa, Trucha, Sardina, Salmón salvaje, Jurel, Arenque, Bacalao, Vieiras, Ostras)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F55.jpg?alt=media&token=c6e5fe4a-8ab8-4a7a-9ab2-b39ec234a48b\",\n \"Espinaca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F204.jpg?alt=media&token=d66a4adc-ffc5-4946-82ba-94b48b273f8f\",\n \"Agua de coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F114.jpg?alt=media&token=7174c094-7407-4532-8154-b327b859aaed\",\n \"Rábano\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F211.jpg?alt=media&token=91ea7c2f-8bfe-4639-9efb-881a0f392668\",\n \"Dátiles\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\n \"Dátil\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\n \"Pasta de dátiles\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\n \"Chile jalapeño\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F199.jpg?alt=media&token=59973379-3e94-45cb-abbc-421ba13aeae6\",\n \"Frambuesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F120.jpg?alt=media&token=ad722c34-680e-471a-9cf1-2a7c0db4583c\",\n \"Alfalfa \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F206.jpg?alt=media&token=c7f06c20-d416-4f20-9fd3-f8e2259f8c4e\",\n \"Berro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F192.jpg?alt=media&token=de88c0f3-69e6-4f17-ac76-5d95eb5f2503\",\n \"Achicoria\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAchicoria.jpg?alt=media&token=10585c5d-b08f-46ad-8c8e-ae4c374bf092\",\n \"Ají\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAji%CC%81.jpg?alt=media&token=fb2000b9-98e5-4485-b827-da97b952c546\",\n \"Berenjena\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FBerenjena.jpg?alt=media&token=354fee06-81cc-4227-9fc4-c9cb6b121b18\",\n \"Brotes de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FBrotes%20de%20soja.jpg?alt=media&token=02d90e62-c75e-41d9-bf01-b231fbfabef0\",\n \"Brotes de alfalfa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FBrotes%20de%20alfalfa.jpg?alt=media&token=bb4a1b51-7f62-466b-baf8-c98af51cabb8\",\n \"Cebolla de verdeo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCebolla%20de%20verdeo.jpg?alt=media&token=eee7803a-6a8f-45db-a4f3-317ad895c73d\",\n \"Chauchas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FChauchas.jpg?alt=media&token=c4b1d514-4536-49db-a47c-73f8fd548dc4\",\n \"Escarola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FEscarola.jpg?alt=media&token=62e6b8b3-d2de-436d-ac9d-0e8ef646c62e\",\n \"Espárragos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FEspa%CC%81rragos.jpg?alt=media&token=dcc7bdd1-cac6-460f-bafc-eb05a9981583\",\n \"Hinojo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHinojo.jpg?alt=media&token=9b22b780-2e22-47ae-be5f-ab142d0dab43\",\n \"Kale\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FKale.jpg?alt=media&token=92a9b756-a149-4ec7-8514-e12378e1acd2\",\n \"Papa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPapa.jpg?alt=media&token=d790d21d-8ecd-4c5d-b8b6-b6f9e6cb2d2a\",\n \"Batata\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FBatata.jpg?alt=media&token=650bd82d-eb94-46da-bab0-6abf5c283807\",\n \"Maiz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FMai%CC%81z.jpg?alt=media&token=37efdbe2-fe57-4b32-975a-446a15d41a94\",\n \"Mandioca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FMandioca.jpg?alt=media&token=e42a362a-d3cb-49ba-9184-3391ffb33898\",\n \"Perejil\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPerejil.jpg?alt=media&token=eef93a25-6654-40f9-b995-b372ae65cc3d\",\n \"Puerro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPuerro.jpg?alt=media&token=fb2ac94a-5745-4451-b029-f29adc383d83\",\n \"Rabanito\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FRabanito.jpg?alt=media&token=f7c5ad73-2d07-4641-8953-ce0814c437d1\",\n \"Radicheta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FRadicheta.jpg?alt=media&token=cd555af6-18ce-47cb-a329-5953084f3c9a\",\n \"Zapallito\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FZapallito.jpg?alt=media&token=2f6795fd-d4f2-44c4-9227-949166c0dddf\",\n \"Zucchini\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FZucchini.jpg?alt=media&token=0f6f4427-3d33-43dc-add1-bec2e40e2679\",\n \"Kabutia o Zapallo japonés\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FKabutia.jpg?alt=media&token=2c357fff-b477-446c-9e6e-53c04eccd466\",\n \"Ananá\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAnana%CC%81.jpg?alt=media&token=1a9517b5-823b-4eca-b512-58daa841f71f\",\n \"Granada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FGranada.jpg?alt=media&token=cd75a9da-52bc-4e7e-bc05-b93a68a8edba\",\n \"Pomelo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPomelo.jpg?alt=media&token=45011465-82d0-4a0d-bff9-810faea94ac1\",\n \"Arvejas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FArvejas.jpg?alt=media&token=46df67fc-12e9-4a2d-994b-ee187c1aa356\",\n \"Lupinos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FLupinos.jpg?alt=media&token=75d8c950-2b2c-4b90-a8b5-ac6120488dcd\",\n \"Trigo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FTrigo.jpg?alt=media&token=4a852e42-b922-4b18-9415-2ee4afec1dfc\",\n \"Cebada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCebada.jpg?alt=media&token=258ce178-8a0b-4a51-bfcc-0bba0c0ffb16\",\n \"Centeno\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCenteno.jpg?alt=media&token=12cca72d-d733-4f44-a808-5b6c4db9e0ee\",\n \"Mijo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FMijo.jpg?alt=media&token=567f5215-7665-4eec-aec4-9f6c38d6413f\",\n \"Teff\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FTeff.jpg?alt=media&token=4d88462a-0853-4496-891e-f8d3f81e2e8a\",\n \"Sorgo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSorgo.jpg?alt=media&token=2f53c7ec-2ded-4412-8877-77bd4e6b74de\",\n \"Almidon de maiz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAlmido%CC%81n%20de%20mai%CC%81z.jpg?alt=media&token=70a9390f-1d49-4951-96b2-a0f2582d8b99\",\n \"Harina de arroz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20arroz.jpg?alt=media&token=2837cd21-5e2b-45c5-9eb5-86d682fae659\",\n \"Harina de cebada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20cebada.jpg?alt=media&token=fd3f3816-6971-4587-bb07-206a9b0168b4\",\n \"Harina de centeno\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20centeno.jpg?alt=media&token=340a424e-c4cc-4cfe-a01c-db2e103f2432\",\n \"Harina de chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20chi%CC%81a.jpg?alt=media&token=92fa4c5f-e85c-4fd9-a378-8e12e82d7419\",\n \"Harina de quinoa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20quinoa.jpg?alt=media&token=f4e5bf90-50a8-4552-ab94-2c36dee2196f\",\n \"Harina de amaranto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20amaranto.jpg?alt=media&token=94b6e348-0bcf-4713-bde8-6cd99a9b0bbd\",\n \"Harina de algarroba\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20algarroba.jpg?alt=media&token=c8f518f4-d83c-4948-a95d-2bba125b4f5c\",\n \"Harina de garbanzos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20garbanzos.jpg?alt=media&token=57bf906c-e9c7-4ba6-a5ed-3c4c8310d0a5\",\n \"Harina de maíz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20mai%CC%81z.jpg?alt=media&token=5d3675a2-474f-4747-a34d-557daf51ede1\",\n \"Harina de trigo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20trigo.jpg?alt=media&token=6ec83bbb-2bb7-48da-8dff-447789fd0334\",\n \"Harina de trigo integral\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20trigo%20integral.jpg?alt=media&token=53458d52-bda4-4798-8eee-868dcb2b3609\",\n \"Harina de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20soja.jpg?alt=media&token=fb94a9a1-7c92-4fbf-92a7-2673f14bb8c2\",\n \"Queso vegetal Castaña caju\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FQueso%20vegetal%20Castan%CC%83a%20caju%CC%81.jpg?alt=media&token=404bec84-c894-4116-a32b-dc0f841311f0\",\n \"Queso vegetal de almendras\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FQueso%20vegetal%20de%20almendras.jpg?alt=media&token=d2f6b78c-9fc8-4b14-95e4-6883a3528bbd\",\n \"Cerdo Bondiola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCerdo%20Bondiola.jpg?alt=media&token=abacc065-5723-414d-a379-252f12ea7982\",\n \"Cerdo Lomo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCerdo%20Lomo.jpg?alt=media&token=fcae80b4-6fe3-4ed2-b47b-dde6a4fc8c7d\",\n \"Achuras vaca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAchuras%20vaca.jpg?alt=media&token=b0b9c6c3-952f-441e-a981-4d288d9b0df7\",\n \"Harina de almendras, girasol, nuez, avellanas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20almendras.jpg?alt=media&token=a522cce6-c8f4-4c83-9f7e-a6542cdbf051\",\n \"Castañas de cajú\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCastan%CC%83as%20de%20caju%CC%81.jpg?alt=media&token=ce3e507e-151d-40e6-9edc-fdb00e3afc3d\",\n \"Semilla lino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSemilla%20lino.jpg?alt=media&token=540ca422-6b2a-4a01-831a-48a62fe7bd8d\",\n \"Semilla sesamo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSemilla%20sesamo.jpg?alt=media&token=bb758a7d-4c24-44d1-97c6-222adb70efc3\",\n \"Semilla zapallo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSemilla%20zapallo.jpg?alt=media&token=a23b654f-87d5-4eb7-ab34-d67272bf53ae\",\n \"Semillas ricas en omega 3 (ALA): Chía, nueces, lino, pecanas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSemillas%20ricas%20en%20omega%203%20(ALA).jpg?alt=media&token=4f0f4ddd-d88a-45c3-ae36-0647b03d4249\",\n \"Dulces compactos ( batata, membrillo)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FDulces%20compactos%20(batata%2C%20membrillo).jpg?alt=media&token=6ae2a034-98b3-48c2-b044-d4c8ce66c892\",\n \"Sirope de arce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSirope%20de%20arce.jpg?alt=media&token=53888b9d-7e4e-4f73-a667-4674da289778\",\n \"Pasta de pasas de uvas deshidratadas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPasta%20de%20pasas%20de%20uvas%20deshidratadas.jpg?alt=media&token=1ef2929d-0491-4723-9dcd-2749f9441914\",\n \"Stevia hojas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FStevia%20hojas.jpg?alt=media&token=31ea563d-bac1-41a7-85f3-6ca26d473497\",\n \"Pasas de uva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPasas%20de%20uva.jpg?alt=media&token=71faee5f-61bc-4dac-97cf-ed9f49916bf1\",\n \"Ghee\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FGhee.jpg?alt=media&token=aeaf933b-a8c6-4ecb-91a7-be5fe824cc07\",\n \"Manteca de maní\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FManteca%20de%20mani%CC%81.jpg?alt=media&token=2dc8db33-547a-47d1-aa18-8e8e9a485921\",\n \"Jengibre\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FJengibre.jpg?alt=media&token=c9a644e3-f036-4de2-97b6-42e111e07057\",\n \"Curcuma\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCurcuma.jpg?alt=media&token=d205af5f-a8a1-4668-8293-b81e76095893\",\n \"Clavo de olor\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FClavo%20de%20olor.jpg?alt=media&token=6b33e942-367a-4321-b614-23ce804b709a\",\n \"Azafrán\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAzafra%CC%81n.jpg?alt=media&token=8424efc8-2e76-4bae-a96b-5e0e2ac81475\",\n \"cardamomo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fcardamomo.jpg?alt=media&token=772ea1ec-cc22-40b7-ae39-c54ef4b9d8d4\",\n \"pimienta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fpimienta.jpg?alt=media&token=46d0df11-0354-476f-a64a-b28facadf0f1\",\n \"Nuez moscada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FNuez%20moscada.jpg?alt=media&token=50e19257-4de0-4dff-a129-c6cd4e18673e\",\n \"canela\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCanela.jpg?alt=media&token=d469a32b-c767-4a18-a5f0-16519af945c8\",\n \"Tomillo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FTomillo.jpg?alt=media&token=3db271a9-78da-4a94-871a-6055dd473dd4\",\n \"menta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fmenta.jpg?alt=media&token=1015555a-672f-47e6-9739-51019f8c6be8\",\n \"Romero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FRomero.jpg?alt=media&token=723af841-7425-4abd-95ed-c56c91ae4186\",\n \"Ortiga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FOrtiga.jpg?alt=media&token=756e60f8-e117-4796-9757-1e4786ed56c2\",\n \"Ajo fresco o en polvo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAjo%20en%20polvo.jpg?alt=media&token=bee38fb4-e17e-4939-8021-53a38489b1bb\",\n \"Polvo de hornear\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPolvo%20de%20hornear.jpg?alt=media&token=e466e492-c91e-49e3-b2f5-c5f8c2719dd0\",\n \"Vinagre de manzana orgánico\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FVinagre%20de%20manzana%20orga%CC%81nico.jpg?alt=media&token=21f7a63d-fc3e-41d1-b073-4b7115057f6a\",\n \"Té blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FTe%CC%81%20blanco.jpg?alt=media&token=3561e7db-1a88-4055-85d5-158bd80a50f2\",\n \"Matcha\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FMatcha.jpg?alt=media&token=4eef3e02-ced7-4d81-b32c-80119d8657a2\",\n \"Yerba mate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FYerba%20mate.jpg?alt=media&token=b5d5ee6e-9e72-49ed-82d4-5be8976f2198\",\n \"Leche dorada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FLeche%20dorada.jpg?alt=media&token=9ffe6359-6261-457a-9572-a6241dd6e415\",\n \"Diente de león\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FDiente%20de%20leo%CC%81n.jpg?alt=media&token=e224da46-c201-4d26-979e-30b29c39518e\",\n \"Alcachofera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAlcachofera.jpg?alt=media&token=7d257ce7-f2b9-4ab0-ba45-0c137fe67e5f\",\n \"Yerba mate 230 ml:56-120 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FYerba%20mate.jpg?alt=media&token=b5d5ee6e-9e72-49ed-82d4-5be8976f2198\",\n \"Kombucha\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FKombucha.jpg?alt=media&token=93474a01-58ba-4588-a339-a7bc1e00bdb6\",\n \"Kefir de agua\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FKefir%20de%20agua.jpg?alt=media&token=c960087b-3bdd-4587-8d06-b5b3171c0591\",\n \"Whey protein (trazas de lactosa)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FWhey%20protein%20(trazas%20de%20lactosa).jpg?alt=media&token=f81fcff5-b9db-4305-b783-f6627d5e2543\",\n \"Whey protein Isolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FWhey%20protein%20Isolate.jpg?alt=media&token=db2feec1-8d0f-48ac-988e-f26a38e9eb88\",\n \"Sopas deshidratadas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSopas%20deshidratadas.jpg?alt=media&token=e5795c96-e9e9-46fb-b947-efbedc2ee56b\",\n \"Arándanos\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Farandanos.jpg?alt=media&token=2c4b9ac1-e7f4-4877-8522-fef2cc088b3d\",\n \"Sandia\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F138.jpg?alt=media&token=413cce58-fb54-4226-8cc1-3dd17cf9b5c9\",\n \"Te de arándanos\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\n \"Cerveza 1 vaso 200 ml 9° \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\n \n }\ninterface ResultsReportProps {\n paciente: string; \n userType?: string;\n }\ninterface ResultsReportPropsTwo {\n paciente: string; \n sugeridoPreferir?: any[];\n sugerido?: any[]\n moderar?: any[];\n evitar?: any[];\n results?: any[];\n }\nconst currentDate = new Date().toLocaleDateString('es-ES', {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n });\nconst foodItems = new Array(18).fill(null).map((_, index) => ({\n name: `Comida ${index + 1}`,\n category: `Categoría ${((index % 3) + 1)}`,\n imageUrl: \"https://res.cloudinary.com/hqs-cdn/image/upload/r_50/v1711572214/mistergen/pdf-results/recomendaciones_2F225_kcbgo7.jpg\",\n }));\nconst filterFoodsBy12 = (foods) => {\n const groupedFoodItems = [];\n for (let i = 0; i < foods.length; i += 12) {\n groupedFoodItems.push(foods.slice(i, i + 12));\n\n }\n return groupedFoodItems;\n}\nconst traitsByCategory = [\n {\n \"Gestión de peso y metabolismo\": [\n {\"nutrient\": \"Niveles séricos de colesterol LDL\"},\n {\"nutrient\": \"Requerimiento de grasas Omega 3\"},\n {\"nutrient\": \"Sensibilidad a la glucosa\"},\n {\"nutrient\": \"Sensación de saciedad\"},\n {\"nutrient\": \"Grasas saturadas y peso corporal\"}\n ]\n },\n {\n \"Detoxificación\": [\n {\"nutrient\": \"Actividad antioxidante\"},\n {\"nutrient\": \"Niveles séricos de homocisteina\"},\n {\"nutrient\": \"Equilibrio depuración hepática\"}\n ]\n },\n {\n \"Sensibilidades e intolerancias\": [\n {\"nutrient\": \"Tolerancia a la lactosa\"},\n {\"nutrient\": \"Celiaquía\"},\n {\"nutrient\": \"Sensibilidad a la histamina\"},\n {\"nutrient\": \"Sensibilidad a la cafeína\"},\n {\"nutrient\": \"Sensibilidad a la sal\"},\n {\"nutrient\": \"Respuesta al alcohol\"}\n ]\n },\n {\n \"Vitaminas y minerales\": [\n {\"nutrient\": \"Requerimiento de vitamina A\"},\n {\"nutrient\": \"Requerimiento de vitamina B6\"},\n {\"nutrient\": \"Requerimiento de vitamina B12\"},\n {\"nutrient\": \"Requerimiento de vitamina D\"},\n {\"nutrient\": \"Requerimiento de magnesio\"},\n {\"nutrient\": \"Requerimiento de calcio\"}\n ]\n },\n {\n \"Rendimiento deportivo\": [\n {\"nutrient\": \"Composición muscular\"},\n {\"nutrient\": \"Capacidad aeróbica o atlética\"},\n {\"nutrient\": \"Cafeína en deporte\"}\n ]\n }\n]\nconst DiagnosticScoresByNutrient = (r) => {\n if(r.nutrient === 'Niveles séricos de colesterol LDL') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n } else if(r.nutrient === 'Requerimiento de grasas Omega 3') {\n return r.score === 0 ? 'REQUERIMIENTO NORMAL' : r.score === 1 ? 'REQUERIMIENTO MODERADO' : 'REQUERIMIENTO ALTO'\n } else if(r.nutrient === 'Sensibilidad a la glucosa') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n } else if(r.nutrient === 'Sensibilidad a la histamina') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n } else if(r.nutrient === 'Requerimiento de calcio') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n } else if(r.nutrient === 'Requerimiento de vitamina D') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n } else if(r.nutrient === 'Requerimiento de vitamina A') {\n return r.score === 0 ? 'NIVELES NORMALES' : r.score === 1 ? 'NIVELES ALTOS' : 'NIVELES BAJOS'\n } else if(r.nutrient === 'Requerimiento de vitamina B6') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n } else if(r.nutrient === 'Requerimiento de vitamina B12') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n } else if(r.nutrient === 'Requerimiento de magnesio') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n } else if(r.nutrient === 'Respuesta al alcohol') {\n return r.score === 0 ? 'RESPUESTA NORMAL' : r.score === 1 ? 'RESPUESTA MODERADA' : 'RESPUESTA ACELERADA'\n } else if(r.nutrient === 'Sensibilidad a la sal') {\n return r.score === 0 ? 'SENSIBILIDAD NORMAL' : r.score === 1 ? 'SENSIBILIDAD MODERADA' : 'SENSIBILIDAD ALTA'\n } else if(r.nutrient === 'Actividad antioxidante') {\n return r.score === 0 ? 'ACTIVIDAD NORMAL' : r.score === 1 ? 'ACTIVIDAD MODERADA' : 'ACTIVIDAD DISMINUIDA'\n } else if(r.nutrient === 'Niveles séricos de homocisteina') {\n return r.score === 0 ? 'NIVELES NORMALES' : r.score === 1 ? 'NIVELES MDOERADOS' : 'NIVELES AUMENTADOS'\n } else if(r.nutrient === 'Equilibrio depuración hepática') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n } else if(r.nutrient === 'Sensibilidad a la cafeína') {\n return r.score === 0 ? 'METABOLIZACIÓN RÁPIDA' : r.score === 1 ? 'METABOLIZACIÓN MODERADA' : 'METABOLIZACIÓN LENTA'\n } else if(r.nutrient === 'Tolerancia a la lactosa') {\n return r.score === 0 ? 'TOLERANCIA NORMAL' : r.score === 1 ? 'TOLERANCIA MODERADA' : 'TOLERANCIA DISMINUIDA'\n } else if(r.nutrient === 'Sensación de saciedad') {\n return r.score === 0 ? 'SACIEDAD HABITUAL' : r.score === 1 ? 'SACIEDAD INTERMEDIA' : 'SACIEDAD DISMINUIDA'\n } else if(r.nutrient === 'Celiaquía') {\n return r.score === 0 ? 'VARIANTES NO ASOCIADAS' : r.score === 1 ? '' : 'VARIANTES ASOCIADAS'\n } else if(r.nutrient === 'Composición muscular') {\n let res = r.snps[0].result\n if (res !== undefined) {\n return res === 'CC' ? 'FIBRAS RÁPIDAS' : res === 'CT' || res === 'TC' ? 'FIBRAS MIXTAS' : 'FIBRAS LENTAS'\n }else {\n return 'SIN INFORMACIÓN'\n }\n } else if(r.nutrient === 'Capacidad aeróbica o atlética') {\n let res = r.snps[0].result\n if (res !== undefined) {\n return res === 'CC' ? 'CAPACIDAD SUPRANORMAL' : 'CAPACIDAD NORMAL'\n }else {\n return 'SIN INFORMACIÓN'\n }\n } else if(r.nutrient === 'Cafeína en deporte') {\n return r.score === 0 ? 'METABOLIZACIÓN RÁPIDA' : r.score === 1 ? 'METABOLIZACIÓN MODERADA' : 'METABOLIZACIÓN LENTA'\n } else if(r.nutrient === 'Grasas saturadas y peso corporal') {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n }else {\n return r.score === 0 ? 'RIESGO BAJO' : r.score === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\n }\n }\nconst DiagnosticValVerification = (r) => {\n\n let val = r.score;\n let res = r.snps[0].result\n if (r.nutrient === 'Capacidad aeróbica o atlética') {\n if (res !== undefined) {\n res === 'CC' ? val = 0 : val = 2\n }\n return val\n } else if (r.nutrient === 'Composición muscular') {\n if (res !== undefined) {\n res === 'CC' ? val= 0 : res === 'CT' || res === 'TC' ? val = 1 : val = 2\n }\n return val\n }else {\n return val\n }\n \n }\nconst styles = StyleSheet.create({\n page: {\n flexDirection: 'column',\n fontFamily: 'Helvetica',\n backgroundColor: '#FFF'\n },\n topSection: {\n margin: 30,\n padding: 10,\n width: '350px',\n height: '370px',\n alignItems: 'flex-start' \n },\n imageBackground: {\n position: 'absolute',\n minWidth: '100%',\n minHeight: '100%',\n height: '100vh',\n width: '100vw',\n top:0,\n right:0,\n left:0,\n bottom:0,\n objectFit: 'fill'\n //borderTopLeftRadius: 12,\n //borderTopRightRadius: 12,\n \n },\n title: {\n width: '316px',\n fontWeight:700,\n fontSize: 55,\n textAlign: 'left',\n marginTop: 170, \n },\n reportDetails: {\n flexDirection: 'column',\n justifyContent: 'space-between',\n margin: 30\n },\n textInput: {\n borderBottom: '1px solid #000',\n fontWeight: 400,\n fontSize: 12,\n marginBottom: 2,\n padding: 2,\n },\n userIdentificationTitle: {\n fontWeight: 'bold',\n fontSize: 58,\n color:'#1C1B2D',\n //marginBottom: 4,\n paddingTop: 30,\n paddingBottom: 20,\n },\n userIdentification: {\n fontWeight: 'bold',\n fontSize: 13,\n marginBottom: 4,\n paddingTop: 5,\n paddingBottom: 5,\n paddingLeft: 5\n },\n bold: {\n fontWeight: 'bold', \n textTransform: 'uppercase',\n },\n foodSection: {\n padding: 60,\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'space-around', \n },\n foodItem: {\n width: '130px',\n height: '165px',\n margin: 5,\n marginTop: 10,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n \n \n },\n foodItemImg: {\n width: '120px',\n height: '100px'\n /* borderRadius: '8px', */\n \n },\n foodItemDiv: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n width: '100%',\n paddingTop: 0,\n paddingBottom: 5,\n textAlign: 'center',\n \n },\n foodItemName: {\n fontSize: 10,\n },\n foodItemCategory: {\n fontSize: 9,\n color: '#666',\n padding: 3,\n paddingBottom:4\n },\n sugeridoPreferir: {\n backgroundColor: '#336633',\n width: '100%',\n padding: 5,\n color: '#FFF',\n },\n sugerido: {\n backgroundColor: '#009900',\n width: '100%',\n padding: 5,\n color: '#FFF',\n },\n moderar: {\n backgroundColor: '#ffcc66',\n width: '100%',\n padding: 5,\n color: '#333',\n }, \n evitar: {\n backgroundColor: '#cc0000',\n width: '100%',\n padding: 5,\n color: '#FFF',\n },\n traitsPage: {\n flexDirection: 'column',\n backgroundColor: '#FFF',\n padding: 30,\n },\n traitsPageCont: {\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n paddingTop: 60\n },\n sumDiagnosticsPageCont: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n alignItems: 'flex-start',\n width: '100%',\n paddingTop: 170,\n paddingLeft: 65,\n paddingRight: 65,\n },\n foodsListCont: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n padding: 0,\n paddingTop: 90,\n },\n foodsListTitle: {\n fontSize: 55,\n width: '60%',\n textAlign: 'center',\n fontWeight: 'bold',\n color: '#1C1B2D'\n },\n sumDiagnosticsDiv: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'flex-start',\n width: 130,\n marginBottom: 20,\n padding: 10,\n textAlign: 'left'\n },\n paddLeft: {\n paddingLeft: 30,\n },\n paddRight: {\n paddingRight: 30,\n },\n traitsTitle: {\n width: '100%',\n textAlign:\"center\",\n fontSize: 24,\n marginBottom: 10,\n fontWeight: 'bold',\n color: '#000000',\n },\n traitsCategoryTitle: {\n width: '100%',\n textAlign:\"center\",\n fontSize: 18,\n marginBottom: 4,\n fontWeight: 'bold',\n color: '#000000',\n marginTop: 12,\n paddingBottom: 10,\n },\n SumDiagnosticsText: {\n width: '100%',\n textAlign:\"center\",\n fontSize: 10,\n //marginBottom: 4,\n color: '#1C1B2D',\n //marginTop: 12,\n paddingBottom: 10,\n },\n sumDiagnosticsTextGrey: {\n color: '#473054',\n marginTop: 10,\n fontWeight: 'bold',\n textDecoration: 'underline',\n },\n traitsItemDivGroup: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-around',\n flexWrap: 'wrap',\n width: '80%',\n margin: '0 auto'\n \n },\n traitsItemDiv: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: 120,\n height: 80,\n marginBottom: 20,\n padding: 10,\n textAlign: 'center',\n },\n mTop: {\n marginTop: 70,\n },\n padd: {\n paddingTop: 10,\n paddingBottom: 10\n },\n traitsItemLabelNew: {\n marginTop:5,\n fontSize: 9,\n fontWeight: 'bold',\n display: 'flex',\n width: '100%',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'center',\n textAlign: 'center',\n },\n imgResult: {\n width: 69,\n height: 44\n },\n traitsItem: {\n flexDirection: 'row',\n marginBottom: 8,\n padding: 13,\n alignItems: 'center',\n backgroundColor: '#F5F5F5',\n border: '1px solid #E0E0E0',\n borderRadius: 10,\n },\n traitsItemLabel: {\n fontSize: 15,\n flex: 1,\n paddingLeft: 15,\n fontWeight: 'bold',\n },\n traitsRiskIndicator: {\n width: 30,\n height: 30,\n borderRadius: 100,\n paddingRight: 15,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n imgTraitResult: {\n width: '100%',\n },\n traitsLowRisk: {\n backgroundColor: '#6CC24A',\n },\n traitsModerateRisk: {\n backgroundColor: '#FFC107',\n },\n traitsHighRisk: {\n backgroundColor: '#F44336',\n },\n pageTraitDetail: {\n flexDirection: 'column',\n backgroundColor: '#E4E4E4'\n },\n sectionTitleTraitDetail: {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n paddingLeft: 30,\n paddingRight: 30,\n paddingTop: 40,\n paddingBottom: 5,\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n titleTraitDetail: {\n width: '70%',\n color: '#1C1B2D',\n },\n scoreTraitDetail: {\n width: '30%',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n border: '1pt solid #eeeeee',\n borderRadius: 10,\n },\n scoreTextTraitDetail: {\n fontSize: 11,\n fontWeight: 'bold',\n color: '#1C1B2D',\n\n },\n sectionTraitDetail: {\n marginLeft:10,\n marginRight:10,\n paddingLeft: 10,\n paddingRight: 10,\n paddingBottom:13,\n },\n bgGreen: {\n backgroundColor: '#F5FAEA',\n color: '#44A308',\n border: '1pt solid #F5FAEA',\n },\n bgYellow: {\n backgroundColor: '#FFFAEA',\n color: '#FFA20C',\n border: '1pt solid #FFFAEA',\n },\n bgRed: {\n backgroundColor: '#FFEFEE',\n color: '#FF3C2D',\n border: '1pt solid #FFEFEE',\n },\n topRound: {\n borderTopLeftRadius: 10,\n borderTopRightRadius: 10,\n },\n bottomRound: {\n borderBottomLeftRadius: 10,\n borderBottomRightRadius: 10,\n },\n paddTop5: {\n paddingTop: 13,\n marginTop: 3,\n },\n paddBottom5:{\n paddingBottom: 13,\n marginBottom: 3,\n },\n subheaderTraitDetail: {\n fontSize: 12,\n paddingBottom:5,\n color: '#000033'\n },\n contentTraitDetail: {\n fontSize: 9,\n paddingLeft: 4,\n paddingRight: 4,\n color: '#525252'\n },\n bibliographyTraitDetail: {\n marginTop: 5,\n fontSize: 8\n }\n\n});\n\nconst MyDocument : React.FC = ({paciente, sugeridoPreferir, sugerido, moderar, evitar, results}) => {\n //console.log(sugeridoPreferir);\n const prefered = filterFoodsBy12(sugeridoPreferir);\n //console.log(prefered)\n const suggested = filterFoodsBy12(sugerido);\n const moderated = filterFoodsBy12(moderar);\n const avoided = filterFoodsBy12(evitar);\n \n //console.log(\"resultados\")\n //console.log(results)\n const getScore = (nutrient) => {\n console.log(nutrient)\n return results.find(e => e.nutrient === nutrient).score;\n }\n\n const greenStatus = 'https://res.cloudinary.com/hqs-cdn/image/upload/q_auto:best/v1722884652/mistergen/pdf-results-2024/items/green-result_yjicyz.png';\n const redStatus = 'https://res.cloudinary.com/hqs-cdn/image/upload/q_auto:best/v1722880669/mistergen/pdf-results-2024/items/red-result_rqwo95.png';\n const yellowStatus = 'https://res.cloudinary.com/hqs-cdn/image/upload/q_auto:best/v1722880670/mistergen/pdf-results-2024/items/yellow-result_uqj2yq.png';\n\n return (\n \n \n \n \n \n {/* */}\n \n \n \n {/*Reporte de resultados*/}\n \n \n \n Reporte de Resultados\n {paciente}\n {currentDate}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n {/* Resumen de diagnóstico */}\n\n \n Gestión de peso y metabolismo\n \n \n {\n traitsByCategory[0][\"Gestión de peso y metabolismo\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n return (\n \n \n {trait.nutrient}\n \n )\n })\n }\n \n\n \n\n Sensibilidades e intolerancias\n \n \n {\n traitsByCategory[2][\"Sensibilidades e intolerancias\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n return (\n \n \n {trait.nutrient}\n \n )\n })\n }\n \n \n \n\n \n \n \n \n \n \n \n Detoxificación\n \n \n {\n traitsByCategory[1][\"Detoxificación\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n return (\n \n \n {trait.nutrient}\n \n )\n })\n }\n \n\n Vitaminas y minerales\n \n \n {\n traitsByCategory[3][\"Vitaminas y minerales\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n return (\n \n \n {trait.nutrient}\n \n )\n })\n }\n \n\n Rendimiento deportivo\n \n \n {\n traitsByCategory[4][\"Rendimiento deportivo\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n return (\n \n \n {trait.nutrient}\n \n )\n })\n }\n \n\n \n \n \n \n \n\n \n \n Gestión de peso y metabolismo\n {\n traitsByCategory[0][\"Gestión de peso y metabolismo\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 2) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Sensibilidades e intolerancias\n {\n traitsByCategory[2][\"Sensibilidades e intolerancias\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 2) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Detoxificación\n {\n traitsByCategory[1][\"Detoxificación\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 2) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Vitaminas y minerales\n {\n traitsByCategory[3][\"Vitaminas y minerales\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 2) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Rendimiento deportivo\n {\n traitsByCategory[4][\"Rendimiento deportivo\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 2) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n \n \n Gestión de peso y metabolismo\n {\n traitsByCategory[0][\"Gestión de peso y metabolismo\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 1) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Sensibilidades e intolerancias\n {\n traitsByCategory[2][\"Sensibilidades e intolerancias\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 1) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Detoxificación\n {\n traitsByCategory[1][\"Detoxificación\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 1) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Vitaminas y minerales\n {\n traitsByCategory[3][\"Vitaminas y minerales\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 1) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Rendimiento deportivo\n {\n traitsByCategory[4][\"Rendimiento deportivo\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 1) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n \n \n Gestión de peso y metabolismo\n {\n traitsByCategory[0][\"Gestión de peso y metabolismo\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 0) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Sensibilidades e intolerancias\n {\n traitsByCategory[2][\"Sensibilidades e intolerancias\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 0) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Detoxificación\n {\n traitsByCategory[1][\"Detoxificación\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 0) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Vitaminas y minerales\n {\n traitsByCategory[3][\"Vitaminas y minerales\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 0) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n Rendimiento deportivo\n {\n traitsByCategory[4][\"Rendimiento deportivo\"].map((trait, idx) => {\n const score = getScore(trait.nutrient);\n \n if(score === 0) {\n return (\n {trait.nutrient}\n )\n }else {\n return null\n }\n \n })\n }\n \n \n \n \n \n \n\n {\n results.map( (el,idx) => {\n \n //console.log(el);\n \n return (\n \n \n \n \n \n {el.nutrient}\n \n \n \n \n \n {DiagnosticScoresByNutrient(el)}\n \n \n \n De qué se trata?\n \n {KeyToLabelDict[el.nutrient].generalInfo}\n \n \n \n Resultado\n \n {KeyToLabelDict[el.nutrient].results}\n \n \n \n Entendiendo su resultado\n \n {KeyToLabelDict[el.nutrient].desc[DiagnosticValVerification(el)]}\n \n \n \n Recomendaciones\n \n {KeyToLabelDict[el.nutrient].recommendations[DiagnosticValVerification(el)]}\n \n \n \n Bibliografía\n \n {KeyToLabelDict[el.nutrient].bibliography}\n \n \n \n \n )\n })\n }\n\n \n \n \n \n \n \n\n \n \n\n \n \n Alimentos sugeridos con preferencia\n \n \n \n \n {\n prefered.map((e,idx) => (\n \n \n \n {\n e.map((el,index) => {\n //console.log(el.food - dictFoodsImg[el.food]!== undefined && dictFoodsImg[el.food]!== \"\" ? dictFoodsImg[el.food]:\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fplaceholder150.png?alt=media\");\n \n return (\n \n \n \n {el.food}\n {el.category}\n \n \n \n )\n })\n }\n \n \n ))\n }\n \n \n \n\n \n \n Alimentos sugeridos\n \n \n \n\n {\n suggested.map((e,idx) => (\n \n \n \n {\n e.map((el,index) => {\n //console.log(el.food - dictFoodsImg[el.food]!== undefined && dictFoodsImg[el.food]!== \"\" ? dictFoodsImg[el.food]:\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fplaceholder150.png?alt=media\");\n \n return (\n \n \n \n {el.food}\n {el.category}\n \n \n \n )\n })\n }\n \n \n ))\n }\n\n \n \n\n \n \n Alimentos a limitar su consumo\n \n \n \n\n {\n moderated.map((e,idx) => (\n \n \n \n {\n e.map((el,index) => {\n //console.log(el.food - dictFoodsImg[el.food]!== undefined && dictFoodsImg[el.food]!== \"\" ? dictFoodsImg[el.food]:\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fplaceholder150.png?alt=media\");\n \n return (\n \n \n \n {el.food}\n {el.category}\n \n \n \n )\n })\n }\n \n \n ))\n }\n\n \n \n\n \n \n Alimentos no sugeridos\n \n \n \n\n {\n avoided.map((e,idx) => (\n \n \n \n {\n e.map((el,index) => {\n //console.log(el.food - dictFoodsImg[el.food]!== undefined && dictFoodsImg[el.food]!== \"\" ? dictFoodsImg[el.food]:\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fplaceholder150.png?alt=media\");\n \n return (\n \n \n \n {el.food}\n {el.category}\n \n \n \n )\n })\n }\n \n \n ))\n }\n \n \n \n \n \n \n \n \n \n )\n };\n\n\nconst ResultsReport: React.FC = ({ paciente, userType}) => {\n\n const [data, setData] = useState({\n sugeridoPreferir: [],\n sugerido: [],\n moderar: [],\n evitar: [],\n results: [],\n });\n const [isLoading, setIsLoading] = useState(true);\n const [showPDFDownloadLink, setShowPDFDownloadLink] = useState(false);\n\n useEffect(() => {\n let isMounted = true; \n \n const fetchDataUser = async () => {\n try {\n let fetchedFoods = await analysesService.getAnalysesFoods();\n let fetchedResults = await analysesService.getAnalysesResults();\n\n if (isMounted) {\n setData({\n sugeridoPreferir: fetchedFoods.foods.filter(e => e.score === 0),\n sugerido: fetchedFoods.foods.filter(e => e.score === 1),\n moderar: fetchedFoods.foods.filter(e => e.score === 2),\n evitar: fetchedFoods.foods.filter(e => e.score === 3),\n results: fetchedResults,\n });\n setIsLoading(false);\n }\n } catch (error) {\n console.error(\"Error fetching data:\", error);\n }\n };\n \n const fetchDataUserFromNutri = async () => {\n try {\n //console.log(\"NUTRI SOLICITANDO PDF\");\n let fetchedResults = await analysesService.getAnalysesResultsById(paciente);\n let fetchedFoods = await analysesService.getAnalysesFoodsById(paciente); \n\n if (isMounted) {\n setData({\n sugeridoPreferir: fetchedFoods.foods.filter(e => e.score === 0),\n sugerido: fetchedFoods.foods.filter(e => e.score === 1),\n moderar: fetchedFoods.foods.filter(e => e.score === 2),\n evitar: fetchedFoods.foods.filter(e => e.score === 3),\n results: fetchedResults,\n });\n setIsLoading(false);\n }\n } catch (error) {\n console.error(\"Error fetching data:\", error);\n }\n };\n\n if(userType === \"nutricionista\") {\n fetchDataUserFromNutri();\n }\n else {\n fetchDataUser();\n }\n\n return () => {\n isMounted = false;\n };\n }, []);\n\n const handleGeneratePDFClick = () => {\n setShowPDFDownloadLink(true);\n };\n\n if (isLoading) {\n return (
\n \n
\n )\n }\n\n console.log(\"el paciente: \");\n console.log(paciente);\n \n return (\n
\n {!showPDFDownloadLink && (\n \n Generar PDF de resultados\n \n )}\n {showPDFDownloadLink && (\n \n }\n fileName=\"Mr. GEN-Resultado.pdf\"\n >\n {({ loading }) => (loading ? 'Preparando documento...' : 'Descargar resultado en PDF')}\n \n )}\n
\n )\n \n};\n\nexport default ResultsReport;\n\n\n/*\n} fileName=\"reporte-de-resultados.pdf\">\n {({ blob, url, loading, error }) =>\n loading ? 'Cargando documento...' : 'Descargar PDF'\n }\n\n*/\n\n/* \n \n \n \n*/\n\n/* \n{\n sugeridoPreferir.map((group, index) => {\n console.log(group);\n \n return (\n \n \n \n \n \n \n )\n {/* \n \n \n {group.map((item, itemIndex) => (\n \n \n \n {item.food}\n {item.category}\n \n \n ))}\n \n */ /*}\n \n })\n }\n*/","import React from \"react\";\nimport { User, Option } from \"./Users\";\nimport { useHistory } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport { chagePatientId } from '../../../../store/analyses/actionCreators';\nimport ResultsReport from \"../../../endUser/ResultsReport\";\n\ninterface UserRowProps {\n user: User;\n options: Option[];\n isNutritionist: boolean;\n}\n\nconst getPdfLink = (id) => {\n return ;\n}\n\nfunction UserRow({ user, options, isNutritionist }: UserRowProps) {\n const userState = options[user.state];\n\n const history = useHistory();\n const dispatch = useDispatch();\n\n const redirectResult = (userId: string) => {\n dispatch(chagePatientId(userId));\n history.push('/patientresult');\n }\n if (userState?.selected) {\n return (\n
\n
\n \n {user.name}\n \n {`${user.age} años`}\n {user.phone} - {user.email}\n
\n
\n \n {userState.text}\n \n {/* \n {user.state === 0 ? \"Reenviar solicitud\" : (user.state === 3 && isNutritionist) ? \"Ver resultados\" : \"\"}\n */}\n {/* redirectResult(user.id)}>\n {isNutritionist && user.state === 3 &&\n \"Ver resultados\"\n }\n */}\n window.alert(\"descargar PDF\")}>\n {isNutritionist && user.state === 3 && getPdfLink(user.id)\n }\n \n
\n
\n );\n }\n\n return null;\n}\n\nexport default UserRow;\n","import React from \"react\";\nimport * as styleVars from \"../../../../styles/_variables.scss\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { Option } from \"./Users\";\n\ninterface UserFiltersProps {\n selectedOptions: Option[];\n toggleOption: (id: number) => void;\n}\n\nfunction UserFilters({ selectedOptions, toggleOption }: UserFiltersProps) {\n return (\n
\n

Filtrar por:

\n
\n {selectedOptions.map((option) => {\n return (\n toggleOption(option.id)}\n className=\"option\"\n key={option.id}\n style={{\n borderColor: option.color,\n color: option.color,\n backgroundColor: option.selected ? option.background : styleVars.white,\n }}\n >\n {option.text}\n {option.selected ? : }\n
\n );\n })}\n
\n \n );\n}\n\nexport default UserFilters;\n","import React, { useState, useEffect } from \"react\";\nimport { Paper } from \"@material-ui/core\";\nimport * as styleVars from \"../../../../styles/_variables.scss\";\nimport { Search } from \"../../../common/Search\";\nimport UserRow from \"./UserRow\";\nimport UserFilters from \"./UserFilters\";\nimport { businessService } from \"../../../../services/businesses.service\";\nimport { useSelector } from \"react-redux\";\nimport { RootState } from \"../../../../store/config/types\";\n/* import landing from \"../../../../assets/landing-cat-mosaic-horizontal.png\"; */\n\nexport interface Option {\n id: number;\n text: string;\n color: string;\n background: string;\n selected: boolean;\n}\n\nexport interface User {\n id: string;\n name: string;\n age: number;\n state: number;\n phone?: string;\n email?: string;\n}\n\n// const options: Option[] = [\n// {\n// id: 0,\n// text: \"Esperando por registro\",\n// color: styleVars.filterRed,\n// background: styleVars.filterLightRed,\n// selected: true,\n// },\n// {\n// id: 1,\n// text: \"Esperando por muestra\",\n// color: styleVars.filterOrange,\n// background: styleVars.filterLightOrange,\n// selected: true,\n// },\n// {\n// id: 2,\n// text: \"Realizando test\",\n// color: styleVars.filterYellow,\n// background: styleVars.filterLightYellow,\n// selected: true,\n// },\n// {\n// id: 3,\n// text: \"Resultados disponibles\",\n// color: styleVars.filterGreen,\n// background: styleVars.filterLightGreen,\n// selected: true,\n// },\n// ];\n\n// {\n// WaitingKit = 0, //Análisis creado sin entrega sin retiro\n// WaitingTestKit = 1, //Está esperando la entrega en MVD\n// WaitingResult = 2, //Este estado se tiene que poner cuando entregó el análisis, lo hace el administrador\n// WaitingSendingKit = 3, //Esperando a que entregue el kit (No es de mvd)\n// WaitingCollect = 4, //Esperando que se retire el test en domicilio MVD\n// WaitingSendingCollect = 5, //Esperando que se retire en un domicilio que no es MVD\n// WaitingGetKitOffice = 6, //Esperando que retire el kit de las oficinas de Mrgen\n// WaitingSetKitOffice = 7 //Esperando que entregue el kit en oficinas de mrGen\n// }\n\nconst options: Option[] = [\n {\n id: 0,\n text: \"Esperando kit\",\n color: styleVars.filterRed,\n background: styleVars.filterLightRed,\n selected: true,\n },\n {\n id: 1,\n text: \"Realizando test\",\n color: styleVars.filterOrange,\n background: styleVars.filterLightYellow,\n selected: true,\n },\n {\n id: 2,\n text: \"Esperando resultado\",\n color: styleVars.filterYellow,\n background: styleVars.filterLightOrange,\n\n selected: true,\n },\n {\n id: 3,\n text: \"Resultado enviado\",\n color: styleVars.filterGreen,\n background: styleVars.filterLightGreen,\n selected: true,\n },\n];\n\ninterface UsersProps {\n isNutritionist: boolean;\n}\n\nfunction Users({ isNutritionist }: UsersProps) {\n const [selectedOptions, setSelectedOptions] = useState(options);\n const [searchTerms, setSearchTerms] = useState(\"\");\n const [users, setUsers] = useState([]);\n const [isEmpty, setIsEmpty] = useState(false);\n\n const nutritionist = useSelector((state: RootState) => state.nutritionists);\n const business = useSelector((state: RootState) => state.businesses);\n\n const calculateAge = (birthday) => {\n // birthday is a date\n var ageDifMs = Date.now() - birthday.getTime();\n var ageDate = new Date(ageDifMs); // miliseconds from epoch\n return Math.abs(ageDate.getUTCFullYear() - 1970);\n };\n\n const parseStatus = (status: number): number => {\n if (status == 7 || status == 4 || status == 5) {\n return 1;\n }\n if (status == 2) {\n return 2;\n }\n if (status == 8) {\n return 3;\n }\n return 0;\n };\n const [available, setkitsavailables] = useState(0);\n\n useEffect(() => {\n if (isNutritionist) {\n let newUser = [];\n console.log(nutritionist?.refererAccounts);\n nutritionist?.refererAccounts?.map(\n (i) =>\n i.profile.analysis !== null &&\n newUser.push({\n id: i.id,\n name: i.profile.firstName + \" \" + i.profile.lastName,\n age: calculateAge(new Date(i.profile.birthDate)),\n state: parseStatus(i.profile.analysis?.status),\n phone: i.profile.mobile,\n email: i.email,\n })\n );\n setUsers(newUser);\n } else {\n getkits();\n let newUser = [];\n business?.employesAccounts?.map(\n (i) =>\n i.profile.analysis !== null &&\n newUser.push({\n id: i.id,\n name: i.profile.firstName,\n age: calculateAge(new Date(i.profile.birthDate)),\n state: parseStatus(i.profile.analysis?.status),\n })\n );\n if (newUser.length === 0) setIsEmpty(true);\n else setIsEmpty(false);\n setUsers(newUser);\n }\n }, [nutritionist, business, isNutritionist]);\n\n async function getkits() {\n console.log('getKitsCalled')\n setkitsavailables(await businessService.kitsavailables());\n }\n\n const toggleOption = (optionId: number) => {\n let newOptions: Option[] = [];\n\n selectedOptions.map((opt) => {\n if (opt.id === optionId) {\n let selected = opt.selected;\n opt.selected = !selected;\n }\n\n newOptions.push(opt);\n\n return opt;\n });\n\n setSelectedOptions(newOptions);\n };\n\n const search = (value: string) => {\n console.log(value);\n };\n\n return (\n <>\n \n {isEmpty ? (\n
\n {isNutritionist ? null : (\n \n \n \n Empleados\n
\n \n Cupos restantes:{\" \"}\n \n {available != null ? available : 0}\n
\n
\n\n {`Todavía no tenés ningún ${\n isNutritionist ? \"paciente\" : \"empleado\"\n }, podes cargar uno nuevo aquí.`}\n \n \n \n )}\n \n ) : (\n <>\n {isNutritionist ? null : (\n \n Empleados\n
\n Cupos restantes: \n {available != null ? available : 0}\n
\n \n )}\n \n \n )}\n \n \n {/*
\n \n
*/}\n {!isEmpty && (\n
\n {users.map((user) => {\n return (\n \n );\n })}\n
\n )}\n
\n \n );\n}\n\nexport default Users;\n","import { httpGet } from \"./base.service\";\nimport { Commission } from \"../store/commissions/types\";\nimport { endpoints } from \"./endpoints\";\nimport moment from \"moment\";\nimport qs from \"query-string\";\nexport const commissionsService = {\n fetchCommissions,\n};\n\nasync function fetchCommissions(month): Promise {\n const startDate = moment().month(month).startOf(\"month\").toJSON();\n const endDate = moment().month(month).endOf(\"month\").toJSON();\n const query = qs.stringify({ startDate, endDate });\n return await httpGet(`${endpoints.commissions}?${query}`)\n .then((response) => {\n console.log(response);\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n","import { BankAccount } from \"./types\";\n\nexport const BANKACCOUNTS_LOAD = \"BANKACCOUNTS_LOAD\";\nexport const BANKACCOUNTS_UPDATING = \"BANKACCOUNTS_UPDATING\";\nexport const BANKACCOUNTS_LOAD_FAILED = \"BANKACCOUNTS_LOAD_FAILED\";\n\nexport const BANKACCOUNTS_ADD = \"BANKACCOUNTS_ADD\";\nexport const BANKACCOUNTS_ADDING = \"BANKACCOUNTS_ADDING\";\nexport const BANKACCOUNTS_ADD_FAILED = \"BANKACCOUNTS_ADD_FAILED\";\n\nexport interface BankAccountsLoadAction {\n type: typeof BANKACCOUNTS_LOAD;\n bankAccounts: BankAccount[];\n}\nexport interface BankAccountsUpdatingAction {\n type: typeof BANKACCOUNTS_UPDATING;\n}\nexport interface BankAccountsLoadFailedAction {\n type: typeof BANKACCOUNTS_LOAD_FAILED;\n error: string;\n}\n\nexport interface BankAccountsAddAction {\n type: typeof BANKACCOUNTS_ADD;\n bankAccount: BankAccount;\n}\nexport interface BankAccountsAddingAction {\n type: typeof BANKACCOUNTS_ADDING;\n}\nexport interface BankAccountsAddFailedAction {\n type: typeof BANKACCOUNTS_ADD_FAILED;\n error: string;\n}\n\nexport type BankAccountsActionTypes =\n | BankAccountsLoadAction\n | BankAccountsUpdatingAction\n | BankAccountsLoadFailedAction\n | BankAccountsAddAction\n | BankAccountsAddingAction\n | BankAccountsAddFailedAction;\n","import { BankAccount } from \"../store/bankAccounts/types\";\nimport { httpGet, httpPost } from \"./base.service\";\nimport { endpoints } from \"./endpoints\";\n\nexport const bankAccountsService = {\n fetchBankAccounts,\n createBankAccount,\n};\n\nasync function fetchBankAccounts(): Promise {\n return await httpGet(`${endpoints[\"bankAccounts\"]}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function createBankAccount(bankAccount: BankAccount): Promise {\n return await httpPost(`${endpoints[\"bankAccounts\"]}`, bankAccount)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n","import {\n BankAccountsActionTypes,\n BANKACCOUNTS_LOAD,\n BANKACCOUNTS_LOAD_FAILED,\n BANKACCOUNTS_UPDATING,\n BANKACCOUNTS_ADD,\n BANKACCOUNTS_ADD_FAILED,\n BANKACCOUNTS_ADDING,\n} from \"./actionTypes\";\nimport { Dispatch } from \"redux\";\nimport { BankAccount } from \"./types\";\nimport { bankAccountsService } from \"../../services/bankAccounts.service\";\n\n//#region Fetch bank accounts\n\nexport const fetchBankAccounts = () => {\n return (dispatch: Dispatch) => {\n dispatch(updatingBankAccounts());\n\n bankAccountsService.fetchBankAccounts().then(\n (response) => {\n loadBankAccountsSuccess(response!);\n },\n (error) => {\n bankAccountsLoadFailed(error);\n }\n );\n };\n};\n\nconst updatingBankAccounts = (): BankAccountsActionTypes => ({\n type: BANKACCOUNTS_UPDATING,\n});\n\nconst loadBankAccountsSuccess = (bankAccounts: BankAccount[]): BankAccountsActionTypes => ({\n type: BANKACCOUNTS_LOAD,\n bankAccounts,\n});\n\nconst bankAccountsLoadFailed = (error: string): BankAccountsActionTypes => ({\n type: BANKACCOUNTS_LOAD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Create back account\n\nexport const createBankAccount = ({ name, number }: BankAccount) => {\n const bankAccount: BankAccount = {\n name,\n number,\n };\n\n return (dispatch: Dispatch) => {\n dispatch(addingBankAccount());\n\n bankAccountsService.createBankAccount(bankAccount).then(\n (response) => {\n addBankAccount(response!);\n },\n (error) => {\n bankAccountsAddFailed(error);\n }\n );\n };\n};\n\nconst addBankAccount = (bankAccount: BankAccount): BankAccountsActionTypes => ({\n type: BANKACCOUNTS_ADD,\n bankAccount,\n});\n\nconst addingBankAccount = (): BankAccountsActionTypes => ({\n type: BANKACCOUNTS_ADDING,\n});\n\nconst bankAccountsAddFailed = (error: string): BankAccountsActionTypes => ({\n type: BANKACCOUNTS_ADD_FAILED,\n error,\n});\n\n//#endregion\n","import React, { useEffect, useState } from \"react\";\nimport { Button, Paper } from \"@material-ui/core\";\nimport KeyboardBackspaceIcon from \"@material-ui/icons/KeyboardBackspace\";\nimport ArrowRightAltIcon from \"@material-ui/icons/ArrowRightAlt\";\nimport { commissionsService } from \"../../../services/commissions.service\";\nimport moment from \"moment\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { RootState } from \"../../../store/config/types\";\nimport { fetchBankAccounts } from \"../../../store/bankAccounts/actionCreators\";\ninterface CommissionModel {\n monthTotal: number;\n patients: string[];\n}\nfunction BalanceSheet() {\n const [monthData, setMonthData] = useState();\n const [selectedMonth, setSelectedMonth] = useState(moment().month());\n const [noPatients, setNoPatients] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const dispatch = useDispatch();\n const user = useSelector((x: RootState) => x);\n\n async function fetchMonthComissions() {\n setIsLoading(true);\n const commissions = await commissionsService.fetchCommissions(\n selectedMonth\n );\n if (commissions) {\n setNoPatients(false);\n parseComissions(commissions);\n } else {\n setNoPatients(true);\n }\n setIsLoading(false);\n }\n function parseComissions(commissions) {\n let monthTotal = 0;\n let patients = [];\n commissions.forEach((x) => {\n monthTotal += x.amount;\n patients.push(\n `${x.transaction.buyer.firstName} ${x.transaction.buyer.lastName}`\n );\n });\n\n setMonthData({ monthTotal, patients });\n }\n\n useEffect(() => {\n dispatch(fetchBankAccounts());\n fetchMonthComissions();\n }, [selectedMonth]);\n\n return (\n \n
\n
\n
\n setSelectedMonth(selectedMonth - 1)}\n className=\"back\"\n disableElevation\n variant=\"text\"\n >\n \n \n {moment()\n .month(selectedMonth - 1)\n .format(\"MMMM\")}\n \n \n
\n {moment().month(selectedMonth).format(\"MMMM\")}\n
\n setSelectedMonth(selectedMonth + 1)}\n className=\"back\"\n disableElevation\n variant=\"text\"\n >\n \n {moment()\n .month(selectedMonth + 1)\n .format(\"MMMM\")}\n \n \n \n
\n {isLoading ? (\n \n ) : noPatients ? (\n
No tuviste pacientes este mes
\n ) : (\n <>\n
\n Tu balance para este mes es de ${monthData?.monthTotal}\n
\n
\n \n Tuviste {monthData?.patients.length} paciente\n {monthData?.patients.length > 1 ? \"s\" : \"\"}\n \n
    \n {monthData?.patients.map((x) => (\n
  • {x}
  • \n ))}\n
\n
\n \n )}\n
\n {/*
\n
Se depositan en tu cuenta santander
\n
*/}\n
\n
\n );\n}\n\nexport default BalanceSheet;\n","import React, { useState, useEffect } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { Users } from \"../common/Users\";\nimport { UserDialog } from \"../common/UserDialog\";\nimport { NewUserButton } from \"../common/NewUserButton\";\nimport BalanceSheet from \"./BalanceSheet\";\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootState } from '../../../store/config/types';\nimport { getPatients } from '../../../store/nutritionists/actionCreators';\nimport NutritionistVerification from \"../../signup/NutritionistSignup/NutritionistVerification\";\n\nconst options = [\"Mis pacientes\", \"Mi balance\"];\n\nfunction NutritionistDashboard({ history }: RouteComponentProps) {\n const [selectedOption, setSelectedOption] = useState(0);\n const [open, setOpen] = useState(false);\n\n const dispatch = useDispatch();\n const nutritionist = useSelector((state: RootState) => state.nutritionists);\n\n useEffect(() => {\n if (!nutritionist.refererIsLoading && nutritionist.refererAccountsErrorMessage === \"\") {\n dispatch(getPatients());\n }\n }, [])\n\n if (nutritionist.refererAccounts?.length > 0)\n return (\n
\n
\n
\n {options.map((opt, index) => {\n return (\n setSelectedOption(index)}\n className={selectedOption === index ? \"selected\" : \"\"}\n key={index}\n >\n {opt}\n \n );\n })}\n
\n \n
\n {selectedOption === 0 ? : }\n \n
\n );\n else return
\n}\n\nexport default withRouter(NutritionistDashboard);\n","import React, {useState, useEffect} from 'react';\nimport {Users} from '../common/Users';\nimport {NewUserButton} from '../common/NewUserButton';\nimport {UserDialog} from '../common/UserDialog';\nimport {RootState} from '../../../store/config/types';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getEmployes} from '../../../store/businesses/actionCreators';\n\nfunction CompanyDashboard() {\n const [open, setOpen] = useState(false);\n\n const dispatch = useDispatch();\n const business = useSelector((state: RootState) => state.businesses);\n\n useEffect(() => {\n if (\n !business.employesAccountsIsLoading &&\n business.employesAccountsErrorMessage === ''\n ) {\n dispatch(getEmployes());\n }\n }, []);\n\n return (\n
\n
\n \n
\n \n \n
\n );\n}\n\nexport default CompanyDashboard;\n","import { BusinessActionTypes, FAILED_EMPLOYES_ACCOUNTS, GET_EMPLOYES_ACCOUNTS, LOADING_BUSINESS, LOADING_EMPLOYES_ACCOUNTS, LOAD_BUSINESS, LOAD_BUSINESS_FAILED } from \"./actionTypes\";\nimport { Dispatch } from \"redux\";\nimport { Business } from \"./types\";\nimport { businessService } from '../../services/businesses.service';\n\n//#region Fetch business\n\nexport const fetchBusiness = () => {\n return (dispatch: Dispatch) => {\n dispatch(loadingBusiness());\n\n //TODO: Call backend\n setTimeout(() => {\n dispatch(loadBuisnessSuccess({ name: \"Mr. Gen\", rut: \"123456789012\", avatar: \"https://res.cloudinary.com/dj29j7ziz/image/upload/v1555347817/iconmonstr-cat-3-120.png\" }));\n }, 3000);\n };\n};\n\nconst loadingBusiness = (): BusinessActionTypes => ({\n type: LOADING_BUSINESS,\n});\n\nconst loadBuisnessSuccess = (business: Business): BusinessActionTypes => ({\n type: LOAD_BUSINESS,\n business,\n});\n\nconst loadBusinessFailed = (error: string): BusinessActionTypes => ({\n type: LOAD_BUSINESS_FAILED,\n error,\n});\n\n\nexport const getEmployes = () => {\n return (dispatch: Dispatch) => {\n dispatch({\n type: LOADING_EMPLOYES_ACCOUNTS,\n });\n\n businessService.getEmployes().then(\n (response) => {\n dispatch({\n type: GET_EMPLOYES_ACCOUNTS,\n employesAccounts: response!,\n });\n },\n (error) => {\n dispatch({\n type: FAILED_EMPLOYES_ACCOUNTS,\n error: error,\n });\n }\n );\n };\n};\n\n\n","import { Business } from \"./types\";\nimport {Account} from '../auth/types';\n\nexport const LOAD_BUSINESS = \"LOAD_BUSINESS\";\nexport const LOADING_BUSINESS = \"LOADING_BUSINESS\";\nexport const LOAD_BUSINESS_FAILED = \"LOAD_BUSINESS_FAILED\";\n\nexport interface LoadBusinessAction {\n type: typeof LOAD_BUSINESS;\n business: Business;\n}\n\nexport interface LoadingBusinessAction {\n type: typeof LOADING_BUSINESS;\n}\n\nexport interface LoadBuisnessFailedAction {\n type: typeof LOAD_BUSINESS_FAILED;\n error: string;\n}\n\nexport const GET_EMPLOYES_ACCOUNTS = 'GET_EMPLOYES_ACCOUNTS';\nexport const LOADING_EMPLOYES_ACCOUNTS = 'LOADING_EMPLOYES_ACCOUNTS';\nexport const FAILED_EMPLOYES_ACCOUNTS = 'FAILED_EMPLOYES_ACCOUNTS';\n\nexport interface GetEmployesAccountsAction {\n type: typeof GET_EMPLOYES_ACCOUNTS;\n employesAccounts: Account[];\n}\n\nexport interface LoadingEmployesAccountsAction {\n type: typeof LOADING_EMPLOYES_ACCOUNTS;\n}\n\nexport interface FailedEmployesAccountsAction {\n type: typeof FAILED_EMPLOYES_ACCOUNTS;\n error: string;\n}\n\nexport type BusinessActionTypes =\n | LoadBusinessAction\n | LoadingBusinessAction\n | LoadBuisnessFailedAction\n | GetEmployesAccountsAction\n | LoadingEmployesAccountsAction\n | FailedEmployesAccountsAction;\n","import React, { useEffect, useState } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\n\nimport logo from \"../../../assets/logo.png\";\nimport backArrow from \"../../../assets/backArrow.png\";\nimport roles from \"../../../utils/roles\";\nimport { userRole, userAccount } from \"../../../store/auth/selector\";\nimport { RootState } from \"../../../store/config/types\";\nimport { Menu, MenuItem } from \"@material-ui/core\";\nimport { logout } from \"../../../store/auth/actionCreators\";\n\nfunction Header({\n history,\n children,\n}: RouteComponentProps & { children?: any }) {\n const role = useSelector((state: RootState) => userRole(state));\n const actualUser = useSelector((state: RootState) => userAccount(state));\n const isFinalUser = role === roles.user;\n const isNutritionist = role === roles.nutricionist;\n const firstName = actualUser && actualUser.profile.firstName;\n\n const dispatch = useDispatch();\n\n const [anchorEl, setAnchorEl] = useState(null);\n const [showBackButton, setShowBackButton] = useState(false);\n\n const selectOption = (option: number) => {\n if (option === 0) redirectTo(\"/profile\");\n if (option === 1) {\n dispatch(logout());\n redirectTo(\"/\");\n }\n if(option === 2) {\n redirectTo(\"/platos-semanales\");\n }\n if (option === 3) {\n redirectTo(\"/consulta-nutricional\");\n }\n setAnchorEl(null);\n };\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const redirectTo = (path: string): void => {\n history.push(path);\n };\n\n useEffect(() => {\n if (\n history.location.pathname.includes(\"profile\") ||\n history.location.pathname.includes(\"patientresult\")\n ) {\n setShowBackButton(true);\n }\n }, []);\n\n let image =\n \"https://res.cloudinary.com/dj29j7ziz/image/upload/v1555347817/iconmonstr-cat-3-120.png\";\n let businessName;\n if (actualUser !== null && actualUser !== undefined) {\n const businessImage =\n actualUser.business !== undefined &&\n actualUser.business !== null &&\n actualUser!.business?.avatar;\n businessName =\n actualUser.business !== undefined &&\n actualUser.business !== null &&\n actualUser!.business?.name;\n image =\n businessImage !== undefined && businessImage !== null\n ? businessImage\n : \"https://res.cloudinary.com/dj29j7ziz/image/upload/v1555347817/iconmonstr-cat-3-120.png\";\n }\n\n return (\n
\n
\n \n window.localStorage.token === \"\"\n ? redirectTo(\"/\")\n : redirectTo(\"/dashboard\")\n }\n />\n {children}\n
\n
\n {isNutritionist ? (\n
\n {actualUser?.nutritionist?.publicCode}\n
\n ) : actualUser?.business?.avatar ? (\n \"business\"\n ) : null}\n
\n
\n
{firstName?.charAt(0)}
\n {actualUser?.profile?.firstName}\n
\n
\n \n selectOption(0)}>Editar perfil\n selectOption(2)}>Platos semanales\n selectOption(3)}>Consulta nutricionista\n selectOption(1)}>Cerrar sesión\n \n
\n {showBackButton && (\n history.push(\"/dashboard\")}\n >\n \n Volver\n \n )}\n
\n );\n}\n\nexport default withRouter(Header);\n","import React, { useEffect } from \"react\";\nimport { useSelector } from 'react-redux';\n\nimport { UserDashboard } from \"./UserDashboard\";\nimport { NutritionistDashboard } from \"./NutritionistDashboard\";\nimport { CompanyDashboard } from \"./CompanyDashboard\";\nimport { Header } from \"../common/Header\";\nimport roles from '../../utils/roles';\nimport { userRole, userAccount } from '../../store/auth/selector';\nimport { RootState } from \"../../store/config/types\";\nimport { createMemoryHistory } from \"history\";\nimport LoadingAnimation from '../animations/LoadingAnimation/LoadingAnimation';\n\nfunction Dashboard() {\n const role = useSelector((state: RootState) => userRole(state));\n const isFinalUser = role === roles.user;\n const isNutritionist = role === roles.nutricionist;\n const history = createMemoryHistory();\n\n const actualUser = useSelector((state: RootState) => userAccount(state));\n\n return actualUser !== null ? (\n
\n
\n {isFinalUser ? : isNutritionist ? : }\n
\n ) : (
\n \n
);\n}\n\nexport default Dashboard;\n","import React, { useState, useEffect } from \"react\";\nimport { Paper, Button } from \"@material-ui/core\";\nimport { Formik, Form, Field } from \"formik\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\n\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport { RootState } from \"../../../store/config/types\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport { modifyPassword } from \"../../../store/auth/actionCreators\";\nimport { connect, ConnectedProps } from \"react-redux\";\nimport schemas from \"../../../data/schemas\";\nimport { userAccount, editSuccess } from \"../../../store/auth/selector\";\nimport {\n updateProfile,\n upadteFailed,\n changePasswordFailed,\n} from \"../../../store/auth/actionCreators\";\nimport { FullWidthSnackbar } from \"../../common/FullWidthSnackbar\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\n\ninterface userValues {\n name: string;\n lastname: string;\n dob: string;\n email: string;\n phone: string;\n}\n\ninterface passwordValues {\n oldPassword: string;\n newPassword: string;\n repeatPassword: string;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch\n) => ({\n changePassword: (oldPassword: string, newPassword: string) =>\n dispatch(modifyPassword(oldPassword, newPassword)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & RouteComponentProps;\n\nfunction MyData({ auth, changePassword, history }: PropsType) {\n const dispatch = useDispatch();\n const [open, setOpen] = useState(false);\n const userData = useSelector((state: RootState) => userAccount(state));\n const editOk = useSelector((state: RootState) => editSuccess(state));\n const isGettingAccount = useSelector(\n (state: RootState) => state.auth.gettingAccount\n );\n const isUpdatingPassword = useSelector(\n (state: RootState) => state.auth.changingPassword\n );\n\n const passwordEditOk = useSelector(\n (state: RootState) => state.auth.changePasswordSuccess\n );\n\n const submitUser = (values: userValues) => {\n userData.profile.firstName = values.name;\n userData.profile.lastName = values.lastname;\n userData.profile.birthDate = values.dob;\n userData.profile.mobile = values.phone;\n\n dispatch(updateProfile(userData));\n };\n\n const submitPassword = (values: passwordValues) => {\n changePassword(values.oldPassword, values.newPassword);\n };\n\n useEffect(() => {\n if (editOk) {\n setOpen(true);\n setTimeout(() => {\n dispatch(upadteFailed(\"\"));\n }, 2000);\n }\n }, [editOk]);\n\n useEffect(() => {\n if (passwordEditOk) {\n setOpen(true);\n setTimeout(() => {\n dispatch(changePasswordFailed(\"\"));\n }, 2000);\n }\n }, [passwordEditOk]);\n\n return (\n userData &&\n userData.profile && (\n \n
\n \n {isGettingAccount ? (\n \n ) : (\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n \n Guardar cambios\n \n
\n
\n )}\n \n\n {\n submitPassword(values);\n actions.resetForm();\n }}\n validationSchema={schemas.ChangePasswordSchema}\n >\n {(props) =>\n isUpdatingPassword ? (\n \n ) : (\n
\n

Cambiar contraseña

\n
\n \n \n \n
\n
\n \n Actualizar contraseña\n \n
\n
\n )\n }\n \n
\n {(editOk || passwordEditOk) && (\n \n )}\n \n )\n );\n}\n\nexport default connector(withRouter(MyData));\n","import React, { useEffect, useState } from \"react\";\nimport { Formik, Form } from \"formik\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { Button, Paper } from \"@material-ui/core\";\n\nimport { UserDataFields } from \"../../common/UserDataFields\";\nimport { PathologiesFields } from \"../../common/PathologiesFields\";\nimport { FamilyBackgroundFields } from \"../../common/FamilyBackgroundFields\";\nimport { userAccount, editSuccess } from \"../../../store/auth/selector\";\nimport { updateProfile } from \"../../../store/auth/actionCreators\";\nimport { RootState } from \"../../../store/config/types\";\nimport { FullWidthSnackbar } from \"../../common/FullWidthSnackbar\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\n\ninterface Values {\n name: string;\n surname: string;\n gender: number;\n height: string;\n weight: string;\n phone: string;\n ethnicity: number;\n date: string;\n pathologies: string[];\n familyBackground: string[];\n email: string;\n}\n\nfunction UserDNAForm() {\n const dispatch = useDispatch();\n const [open, setOpen] = useState(false);\n const userData = useSelector((state: RootState) => userAccount(state));\n const editOk = useSelector((state: RootState) => editSuccess(state));\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (editOk) {\n setOpen(true);\n }\n setIsLoading(false);\n }, [editOk]);\n\n let pathologiesIds = [];\n for (let i of userData.profile.pathologies) {\n pathologiesIds.push(i.id);\n }\n\n let familyBackIds = [];\n for (let i of userData.profile.familyHistories) {\n familyBackIds.push(i.id);\n }\n\n const submit = (values: Values) => {\n setIsLoading(true);\n let pathologiesNames = [];\n for (let i of values.pathologies) {\n pathologiesNames.push({ id: i, name: \"\" });\n }\n\n let familyHistoriesNames = [];\n for (let i of values.familyBackground) {\n familyHistoriesNames.push({ id: i, name: \"\" });\n }\n\n userData.profile.firstName = values.name;\n userData.profile.lastName = values.surname;\n userData.profile.gender = values.gender;\n userData.profile.height = values.height;\n userData.profile.weight = values.weight;\n userData.profile.mobile = values.phone;\n userData.profile.birthDate = values.date;\n userData.profile.pathologies = pathologiesNames;\n userData.profile.familyHistories = familyHistoriesNames;\n userData.email = values.email;\n\n dispatch(updateProfile(userData));\n };\n\n return (\n userData &&\n userData.profile && (\n \n \n {isLoading ? (\n \n ) : (\n
\n
\n
\n \n \n \n
\n
\n \n Guardar cambios\n \n
\n
\n \n )}\n \n {editOk && (\n \n )}\n \n )\n );\n}\n\nexport default UserDNAForm;\n","import React, { useState } from \"react\";\n\nimport MyData from \"../common/MyData\";\nimport UserDNAForm from \"./UserDNAForm\";\n\nconst options = [\"Mis datos\", \"Formulario ADN\"];\n\nfunction UserProfile() {\n const [selectedOption, setSelectedOption] = useState(0);\n\n return (\n
\n
\n
\n {options.map((opt, index) => {\n return (\n setSelectedOption(index)}\n className={selectedOption === index ? \"selected\" : \"\"}\n key={index}\n >\n {opt}\n \n );\n })}\n
\n
\n {selectedOption === 0 ? : }\n
\n );\n}\n\nexport default UserProfile;\n","import React, { useEffect, useState } from \"react\";\nimport { Formik, Form } from \"formik\";\nimport { Button, Paper } from \"@material-ui/core\";\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { PaymentMethodFields } from \"../../common/PaymentMethodFields\";\nimport { userAccount, editSuccess } from \"../../../store/auth/selector\";\nimport { updateProfile } from \"../../../store/auth/actionCreators\";\nimport { RootState } from \"../../../store/config/types\";\nimport { FullWidthSnackbar } from \"../../common/FullWidthSnackbar\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\n\ninterface Values {\n bank: string;\n accountNumber: string;\n branchOffice: string;\n fullName: string;\n collectionNetwork: string[];\n ci: string;\n}\n\nfunction PaymentDetails() {\n const dispatch = useDispatch();\n const [open, setOpen] = useState(false);\n const userData = useSelector((state: RootState) => userAccount(state));\n const editOk = useSelector((state: RootState) => editSuccess(state));\n const isLoading = useSelector(\n (state: RootState) => state.auth.gettingAccount\n );\n const submitPaymentDetails = (values: Values) => {\n\n if (values.bank && values.bank !== null) {\n let bankAccountNewData = {\n name: values.bank,\n number: values.accountNumber,\n bankBranch: values.branchOffice,\n };\n userData.nutritionist.bankAccount = bankAccountNewData;\n } else {\n userData.nutritionist.cardIdentification = values.ci;\n }\n\n userData.nutritionist.paymentName = values.fullName;\n userData.nutritionist.paymentType =\n values.collectionNetwork[0] === \"Redpagos\" ? 3 : 1;\n\n dispatch(updateProfile(userData));\n };\n\n useEffect(() => {\n if (editOk) {\n setOpen(true);\n }\n }, [editOk]);\n\n return (\n userData &&\n userData.nutritionist && (\n \n \n {({ values }) => {\n let collectionNetworkSelected = values.collectionNetwork.length > 0;\n\n return (\n
\n
\n

\n Para poder cobrar debes identificarnos la forma que más te\n quede cómoda.\n

\n {isLoading ? (\n \n ) : (\n <>\n \n
\n \n Guardar cambios\n \n
\n \n )}\n
\n
\n );\n }}\n \n {editOk && (\n \n )}\n
\n )\n );\n}\n\nexport default PaymentDetails;\n","import React, { useState } from \"react\";\nimport MyData from \"../common/MyData\";\nimport PaymentDetails from \"./PaymentDetails\";\n\nconst options = [\"Mis datos\", \"Datos de cobro\"];\n\nfunction NutritionistProfile() {\n const [selectedOption, setSelectedOption] = useState(0);\n\n return (\n
\n
\n
\n {options.map((opt, index) => {\n return (\n setSelectedOption(index)}\n className={selectedOption === index ? \"selected\" : \"\"}\n key={index}\n >\n {opt}\n \n );\n })}\n
\n
\n {selectedOption === 0 ? : }\n
\n );\n}\n\nexport default NutritionistProfile;\n","import React, { useState, useEffect } from \"react\";\nimport { Paper, Button, Input } from \"@material-ui/core\";\nimport { businessService } from \"../../../services/businesses.service\";\nimport { createMemoryHistory } from \"history\";\n\ninterface BusinessKitProps {\n setToPay: React.Dispatch>\n}\n\nfunction BusinessKits({ setToPay }: BusinessKitProps) {\n const [available, setkitsavailables] = useState(0);\n const [value, setValue] = useState(0);\n const history = createMemoryHistory();\nuseEffect(() => {\n getkits();\n}, []);\n\nasync function getkits() {\n setkitsavailables(await businessService.kitsavailables());\n}\n\nconst valueChange = (event: React.ChangeEvent) => {\n setValue(parseInt(event.target.value));\n};\n\nfunction gotobuykits(){\n setToPay(value);\n}\n return (\n \n
\n
\n
\n
\n
\n

Cupos restantes:

\n

{available != null ? available : 0}

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

¿Necesitas más cupos?

\n Ingresa la cantidad de cupos que quieres comprar: \n \n \n
\n \n \n );\n}\n\n\nexport default BusinessKits;\n","import React, { useState, useEffect } from \"react\";\nimport MyData from \"../common/MyData\";\nimport BusinessKits from \"./BusinessKits\";\nimport { useDispatch } from 'react-redux';\nimport { selectPlan } from '../../../store/costs/actionCreators';\n\nconst options = [\"Mis datos\", \"Cupos\"];\n\ninterface BusinessProfileProps {\n history: any;\n}\n\nfunction BusinessProfile({ history }: BusinessProfileProps) {\n const [selectedOption, setSelectedOption] = useState(0);\n const [toPay, setToPay] = useState(0);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (toPay > 0) {\n dispatch(selectPlan(toPay));\n localStorage.amount = toPay;\n history.push(\"/loadingpayment\");\n }\n }, [toPay]);\n\n return (\n
\n
\n
\n {options.map((opt, index) => {\n return (\n setSelectedOption(index)}\n className={selectedOption === index ? \"selected\" : \"\"}\n key={index}\n >\n {opt}\n \n );\n })}\n
\n
\n {selectedOption === 0 ? : }\n
\n );\n}\n\nexport default BusinessProfile;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {withRouter, RouteComponentProps} from 'react-router-dom';\n\nimport {Header} from '../common/Header';\nimport {UserProfile} from './UserProfile';\nimport {NutritionistProfile} from './NutritionistProfile';\nimport {BusinessProfile} from './BusinessProfile';\nimport roles from '../../utils/roles';\nimport {userRole} from '../../store/auth/selector';\nimport {RootState} from '../../store/config/types';\n\nfunction Profile({history}: RouteComponentProps) {\n const role = useSelector((state: RootState) => userRole(state));\n const isFinalUser = role === roles.user;\n const isNutritionist = role === roles.nutricionist;\n\n return (\n
\n
\n {isFinalUser ? (\n \n ) : isNutritionist ? (\n \n ) : (\n \n )}\n
\n );\n}\n\nexport default withRouter(Profile);\n","import React from \"react\";\n\nexport function DNAForm() {\n return

Formulario de ADN

;\n}\n","import React from \"react\";\n\nexport function NutritionistPayments() {\n return

Balance.

;\n}\n","import React from \"react\";\n\nexport function PaymentMethod() {\n return

Medio de cobro.

;\n}\n","import React, { useEffect } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport logo from \"../../../assets/logo.png\";\nimport { CompanyCard } from \"../../common/CompanyCard\";\nimport { EndUserCard } from \"../../common/EndUserCard\";\nimport { Button } from \"@material-ui/core\";\nimport { RootState } from \"../../../store/config/types\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport { CreateAnalysisRequest } from \"../../../store/analyses/types\";\nimport { createAndPayAnalysis} from \"../../../store/analyses/actionCreators\";\nimport { logout } from \"../../../store/auth/actionCreators\";\nimport { connect, ConnectedProps, useDispatch } from \"react-redux\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\nimport { REDIRECT_URL } from \"../../../services/config\";\nimport { Widgets } from \"@material-ui/icons\";\n\ninterface GTMEvent {\n event: string;\n [key: string]: any;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n analyses: state.analyses,\n instruments: state.instruments,\n});\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch\n) => ({\n createAndPayAnalysis: ({\n analysisAmount,\n instrumentToken,\n installments,\n coupon\n }: CreateAnalysisRequest) =>\n dispatch(createAndPayAnalysis({ analysisAmount, instrumentToken, installments, coupon })),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & RouteComponentProps;\n\nfunction PaymentResult({\n analyses,\n instruments,\n createAndPayAnalysis,\n history,\n}: PropsType) {\n const dispatch = useDispatch();\n const isCompany = false;\n\n const redirectTo = (path: string): void => {\n history.push(path);\n };\n\n const retryPayment = () => {\n createAndPayAnalysis({\n analysisAmount: 1,\n instrumentToken: instruments.instruments![0].instrumentToken,\n installments: parseInt(localStorage.getItem(\"installments\")),\n coupon: localStorage.getItem(\"coupon\") || \"\",\n });\n };\n const finalPrice = Number(localStorage.getItem('finalPrice')) === 0;\n //console.log('finalPrice is 0? :', finalPrice);\n \n const paymentError = (\n
\n

Error al realizar el pago

\n

Reintente nuevamente de lo contrario comuníquese con nosotros.

\n {\n retryPayment();\n }}\n >\n Reintentar pago\n \n
\n );\n\n const pushToDataLayer = (event: GTMEvent, top: boolean) => {\n if(top) {\n if(window.top.dataLayer) {\n window.top.dataLayer.push(event);\n } else {\n console.warn('GTM datalayer is not defined');\n }\n }else {\n if(window.dataLayer) {\n window.dataLayer.push(event);\n } else {\n console.warn('GTM datalayer is not defined');\n }\n }\n };\n\n const paymentSuccess = (\n
\n

Pago realizado con éxito

\n

Ahora puedes coordinar la entrega del kit y comenzar tu proceso

\n {\n //redirectTo(\"/dashboard\");\n const finalPrice = localStorage.getItem('finalPrice');\n console.log(window.location, window.top.location);\n if (window.location != window.top.location) {\n pushToDataLayer({\n event: 'purchase',\n price: finalPrice, \n }, true);\n } else {\n pushToDataLayer({\n event: 'purchase',\n precio: finalPrice\n }, false);\n }\n window.top.location.href = REDIRECT_URL+\"dashboard/?payment=success\";\n }}\n >\n Comenzar\n \n
\n );\n\n useEffect(() => {\n const el2 = document.querySelector(\".user-signup\") as HTMLElement;\n if(el2) {\n el2.style.backgroundColor = \"white\";\n }\n },[]);\n\n function goBack() {\n dispatch(logout());\n history.push(\"/\");\n }\n function goToMeals() {\n history.push(\"/platos-semanales\");\n }\n function goToNutris() {\n history.push(\"/consulta-nutricional\");\n }\n\n\n \n \n if(finalPrice) {\n //console.log(\"imprimo if payment result\")\n return (\n
\n
\n
\n

Nutricionistas

\n
\n
\n

Platos

\n
\n
\n

Cerrar Sesion

\n
\n
\n
\n
\n \"logo\"\n {analyses.creatingAnalysis ? (\n
\n \n
\n ) : analyses.createAnalysisErrorMessage !== \"\" ? (\n paymentError\n ) : (\n paymentSuccess\n )}\n
\n
\n \"logo\"\n \n
\n
\n
\n )\n }else {\n //console.log(\"imprimo else payment result\")\n return (\n \n
\n
\n \"logo\"\n {analyses.creatingAnalysis ? (\n
\n \n
\n ) : analyses.createAnalysisErrorMessage !== \"\" ? (\n paymentError\n ) : (\n paymentSuccess\n )}\n
\n
\n );\n }\n}\n\nexport default connector(withRouter(PaymentResult));\n","import React, { useState, useEffect } from \"react\";\nimport { urlHelper } from \"../../../helpers/urlHelper\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\nimport { REDIRECT_URL } from \"../../../services/config\"\n\nfunction Redirect() {\n const [hasError, setHasError] = useState(false);\n\n useEffect(() => {\n let urlVars = urlHelper.parseQueryString();\n\n if (urlVars.errorcode) {\n setHasError(true);\n } else if (urlVars.sessionId && false) {\n console.log(\"TODO\");\n } else if (false) {\n console.log(\"TODO\");\n }\n }, []);\n\n const loading = (\n
\n \n
\n );\n\n if (window.location !== window.parent.location) {\n const message = hasError ? \"redirectError\" : \"redirectSuccess\";\n window.parent.postMessage(message, `${REDIRECT_URL}redirect`);\n return loading;\n } else {\n if (hasError) {\n //TODO\n }\n return loading;\n }\n}\n\nexport default Redirect;\n","import { httpPost, httpGet } from \"./base.service\";\nimport { endpoints } from \"./endpoints\";\nimport { Instrument } from \"../store/instruments/types\";\nimport { REDIRECT_URL } from \"./config\"\n\nexport const instrumentsService = {\n addInstrument,\n fetchInstruments,\n};\n\nasync function addInstrument(): Promise {\n return await httpPost(`${endpoints[\"instruments\"]}`, `${REDIRECT_URL}checkout`)\n .then((response) => {\n console.log(\"Intrumento --------\");\n console.log(response.stringBody);\n return response.stringBody;\n })\n .catch((error) => {\n console.log(\"Intrumento ERROR--------\");\n console.log(error);\n throw new Error(error);\n });\n}\n\nasync function fetchInstruments(): Promise {\n return await httpGet(`${endpoints[\"instruments\"]}`)\n .then((response) => {\n console.log(\"Intrumento fetch --------\");\n console.log(response.parsedBody);\n return response.parsedBody;\n })\n .catch((error) => {\n console.log(\"Intrumento fetch error --------\");\n console.log(error);\n throw new Error(error);\n });\n}\n","import { Dispatch } from \"redux\";\nimport {\n ADD_INSTRUMENTS,\n INSTRUMENTS_LOADING,\n INSTRUMENTS_FAILED,\n FetchInstrumentsActionTypes,\n AddInstrumentActionTypes,\n ADDING_INSTRUMENT,\n ADD_INSTRUMENT_URL,\n ADD_INSTRUMENT_FAILED,\n} from \"./actionTypes\";\nimport { Instrument } from \"./types\";\nimport { instrumentsService } from \"../../services/instruments.service\";\n\n//#region Add instrument\n\nexport const addInstrument = () => {\n return (dispatch: Dispatch) => {\n dispatch(addingInstrument());\n\n return instrumentsService.addInstrument().then(\n (response) => {\n dispatch(addInstrumentUrl(response!));\n },\n (error) => {\n dispatch(addInstrumentFailed(error));\n }\n );\n };\n};\n\nconst addingInstrument = (): AddInstrumentActionTypes => ({\n type: ADDING_INSTRUMENT,\n});\n\nconst addInstrumentUrl = (url: string): AddInstrumentActionTypes => ({\n type: ADD_INSTRUMENT_URL,\n url,\n});\n\nconst addInstrumentFailed = (error: string): AddInstrumentActionTypes => ({\n type: ADD_INSTRUMENT_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Fetch instruments\n\nexport const fetchInstruments = () => {\n return (dispatch: Dispatch) => {\n dispatch(loadingInstruments());\n\n return instrumentsService.fetchInstruments().then(\n (response) => {\n dispatch(addInstruments(response!));\n },\n (error) => {\n dispatch(addInstrumentsFailed(error));\n }\n );\n };\n};\n\nconst loadingInstruments = (): FetchInstrumentsActionTypes => ({\n type: INSTRUMENTS_LOADING,\n});\n\nconst addInstruments = (instruments: Instrument[]): FetchInstrumentsActionTypes => ({\n type: ADD_INSTRUMENTS,\n instruments,\n});\n\nconst addInstrumentsFailed = (error: string): FetchInstrumentsActionTypes => ({\n type: INSTRUMENTS_FAILED,\n error,\n});\n\n//#endregion\n","import { Instrument } from \"./types\";\n\nexport const ADDING_INSTRUMENT = \"ADDING_INSTRUMENT\";\nexport const ADD_INSTRUMENT_URL = \"ADD_INSTRUMENT_URL\";\nexport const ADD_INSTRUMENT_FAILED = \"ADD_INSTRUMENT_FAILED\";\n\nexport interface AddingInstrumentAction {\n type: typeof ADDING_INSTRUMENT;\n}\n\nexport interface AddInstrumentUrlAction {\n type: typeof ADD_INSTRUMENT_URL;\n url: string;\n}\n\nexport interface AddInstrumentFailedAction {\n type: typeof ADD_INSTRUMENT_FAILED;\n error: string;\n}\n\nexport type AddInstrumentActionTypes = AddingInstrumentAction | AddInstrumentUrlAction | AddInstrumentFailedAction;\n\nexport const INSTRUMENTS_LOADING = \"INSTRUMENTS_LOADING\";\nexport const ADD_INSTRUMENTS = \"ADD_INSTRUMENTS\";\nexport const INSTRUMENTS_FAILED = \"INSTRUMENTS_FAILED\";\n\nexport interface RequestInstrumentsAction {\n type: typeof INSTRUMENTS_LOADING;\n}\n\nexport interface AddInstrumentsAction {\n type: typeof ADD_INSTRUMENTS;\n instruments: Instrument[];\n}\n\nexport interface InstrumentsFailedAction {\n type: typeof INSTRUMENTS_FAILED;\n error: string;\n}\n\nexport type FetchInstrumentsActionTypes = RequestInstrumentsAction | AddInstrumentsAction | InstrumentsFailedAction;\n\nexport type InstrumentsActionTypes = AddInstrumentActionTypes | FetchInstrumentsActionTypes;\n","import React, { useEffect, useState } from \"react\";\nimport logo from \"../../../assets/logo.png\";\nimport { CompanyCard } from \"../../common/CompanyCard\";\nimport { EndUserCard } from \"../../common/EndUserCard\";\nimport { RootState } from \"../../../store/config/types\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport { fetchInstruments } from \"../../../store/instruments/actionCreators\";\nimport { createAndPayAnalysis } from \"../../../store/analyses/actionCreators\";\nimport { ConnectedProps, connect, useSelector, useDispatch } from \"react-redux\";\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport { Formik, Form, Field, setNestedObjectValues } from \"formik\";\nimport { Button } from \"@material-ui/core\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\nimport { CreateAnalysisRequest } from \"../../../store/analyses/types\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport { userAccount } from \"../../../store/auth/selector\";\nimport roles from \"../../../utils/roles\";\nimport { REDIRECT_URL } from \"../../../services/config\";\n\n\ntype PropsType = RouteComponentProps;\n\ninterface Values {\n name: string;\n installments: number;\n}\n\nfunction Checkout({ history }: PropsType) {\n const actualUser = useSelector((state: RootState) => userAccount(state));\n const isCompany = actualUser?.role === roles?.business;\n const costs = useSelector((state: RootState) => state.costs);\n const dispatch = useDispatch();\n const instruments = useSelector((state: RootState) => state.instruments);\n const [price, setPrice] = useState(0);\n const [finalPrice, setFinalPrice] = useState(0);\n const [coupon, setCoupon] = useState(\"\");\n const [loading, setLoading] = useState(true);\n\n //console.log('Es empresa: ', isCompany);\n\n const redirectTo = (path: string): void => {\n //console.log('Redireccion a desde checkout: ', path);\n history.push(path);\n };\n\n useEffect(() => {\n if (\n !instruments.loading &&\n !instruments.instruments &&\n instruments.errorMessage === \"\"\n ) {\n //console.log(\"Cargando instrumentoos\");\n //timeout 2 segundos para que haga el dispatch\n setTimeout(() => {\n dispatch(fetchInstruments());\n }, 2500);\n }\n }, [\n instruments.loading,\n instruments.instruments,\n instruments.errorMessage,\n fetchInstruments,\n dispatch\n ]);\n\n useEffect(() => {\n if (instruments.instruments) {\n //console.log(\"Instrumentos cargados - cambio loading a false\");\n setLoading(false);\n } else if (instruments.errorMessage) {\n //console.log(\"Error al cargar instrumentos\");\n }\n }, [instruments]);\n\n useEffect(() => {\n //console.log('finalPrice, price y cupon');\n //console.log(finalPrice, price, coupon);\n setPrice(Number(localStorage.getItem(\"price\")));\n setFinalPrice(Number(localStorage.getItem(\"finalPrice\")));\n setCoupon(localStorage.getItem(\"coupon\") || \"\");\n //console.log(\"el cupon es: \" + localStorage.getItem(\"coupon\") || \"\");\n \n \n if(!isCompany) {\n //si final price es 0, hago dispatch de createAndPayAnalysis y redirijo a PaymentResults\n if(Number(localStorage.getItem(\"finalPrice\")) === 0) {\n //console.log(\"me voy por final price 0 en checkout\")\n //console.log(\"Instrumento en dispatch analisis desde checkout: \")\n //console.log(instruments)\n\n dispatch(createAndPayAnalysis({\n analysisAmount: 1,\n instrumentToken: instruments?.instruments?.[0]?.instrumentToken || \"pagocupon\",\n installments: 1,\n coupon: localStorage.getItem(\"coupon\") || \"\"\n }));\n redirectTo(\"/payment\");\n }\n }\n\n const el = document.querySelector(\".whatsapp_float\") as HTMLElement;\n if(el) {\n el.style.display = \"none\";\n }\n const el2 = document.querySelector(\".user-signup\") as HTMLElement;\n if(el2) {\n el2.style.backgroundColor = \"white\";\n }\n \n\n },[]);\n\n \n\n \n\n const submit = (values: Values) => {\n \n //console.log(\"me voy por submit en checkout\")\n if(!loading) {\n const amount = localStorage.amount;\n localStorage.setItem('installments', values.installments.toString())\n //console.log(price, finalPrice, coupon);\n //console.log(instruments)\n dispatch(\n createAndPayAnalysis({\n analysisAmount: isCompany == true ? amount : 1,\n instrumentToken: instruments.instruments![0].instrumentToken,\n installments: values.installments,\n coupon: localStorage.getItem(\"coupon\") || \"\"\n })\n );\n redirectTo(\"/payment\");\n }\n \n };\n \n if(loading || !instruments.instruments) {\n return ()\n }\n \n return (\n
\n
\n \"logo\"\n
\n {instruments.instruments ? (\n \n
\n
\n

Seleccioná la cantidad de cuotas

\n \n {[1, 2, 3, 4, 5, 6].map((num) => (\n \n ))}\n \n
\n
\n

Tus datos

\n \n
\n \n
\n

Tu método de pago

\n
\n \n {`**** **** **** ${\n instruments.instruments[0] &&\n instruments.instruments[0].name.substring(12)\n }`}\n
\n
\n

\n Solo falta un paso más! Dando clic en pagar finalizarás la\n compra del kit.\n

\n \n Pagar\n \n \n \n ) : (\n \n )}\n
\n
\n \n
\n );\n}\n\nexport default Checkout;\n/*
\n \"logo\"\n \n
*/","import React, { useEffect, useCallback, useState, useRef } from \"react\";\nimport logo from \"../../../assets/logo.png\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\nimport { CompanyCard } from \"../../common/CompanyCard\";\nimport { EndUserCard } from \"../../common/EndUserCard\";\nimport { RootState } from \"../../../store/config/types\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport { addInstrument } from \"../../../store/instruments/actionCreators\";\nimport { connect, ConnectedProps, useDispatch, useSelector } from \"react-redux\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { userAccount } from \"../../../store/auth/selector\";\nimport roles from \"../../../utils/roles\";\nimport { Header } from \"../../common/Header\";\nimport { Menu } from \"@material-ui/core\";\nimport { logout } from \"../../../store/auth/actionCreators\";\nimport {BASE_URL_FOODS, BASE_URL} from '../../../services/config';\nimport request from 'request';\nimport { set } from \"date-fns\";\nimport { Formik, Form, Field } from \"formik\";\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport { Button } from \"@material-ui/core\";\nimport FormFileField from \"../../common/forms/FormFileField/FormFileField\";\n\nconst mapStateToProps = (state: RootState) => ({\n instruments: state.instruments,\n});\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch\n) => ({\n addInstrument: () => dispatch(addInstrument()),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & RouteComponentProps;\n\nfunction LoadingPayment({ instruments, addInstrument, history }: PropsType) {\n const actualUser = useSelector((state: RootState) => userAccount(state));\n const isCompany = actualUser?.role === roles?.business;\n const dispatch = useDispatch();\n const costs = useSelector((state: RootState) => state.costs);\n const [coupon, setCoupon] = useState(\"\");\n const [price, setPrice] = useState(0);\n const [finalPrice, setFinalPrice] = useState(0);\n const [isInputDisabled, setInputDisabled] = useState(false);\n\n const iframeRef = useRef(null);\n\n\n /* console.log('Historia: ');\n console.log(history);\n console.log('Instrumentos: ');\n console.log(instruments); */\n\n\n const redirectTo = useCallback(\n (path: string): void => {\n //console.log('Redireccion a desde loadingPayment: ', path);\n history.push(path);\n },\n [history]\n );\n\n useEffect(() => {\n if (\n !instruments.addingInstrument &&\n !instruments.instrumentUrl &&\n instruments.addInstrumentErrorMessage === \"\"\n ) {\n console.log(\"Agregando instrumento\")\n addInstrument();\n }\n }, [\n instruments.addingInstrument,\n instruments.instrumentUrl,\n instruments.addInstrumentErrorMessage,\n addInstrument,\n ]);\n\n useEffect(() => {\n const el = document.querySelector(\".signup-left-content\") as HTMLElement;\n if(el) {\n el.style.backgroundColor = 'white';\n }\n window.addEventListener(\"message\", receiveMessage);\n\n return () => {\n window.removeEventListener(\"message\", receiveMessage);\n };\n }, []);\n\n useEffect(() => {\n if(!isCompany) {\n fetch(`${BASE_URL}/v1/cost`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json', \n },\n })\n .then(response => {\n if (!response.ok) {\n throw new Error('Error al enviar la solicitud');\n }\n return response.json(); \n })\n .then((data: any) => {\n //console.log('precios: ');\n //console.log(data);\n let price = data.find(e => e.minAmount === 1 && e.maxAmount === 1).unitCost\n setPrice(price);\n setFinalPrice(price);\n })\n .catch(error => {\n console.error('Error al enviar la solicitud por cupón:', error);\n });\n\n localStorage.removeItem(\"coupon\");\n }\n\n },[])\n\n useEffect(() => {\n localStorage.setItem(\"finalPrice\", finalPrice.toString());\n console.log('Precio final actualizado')\n }, [finalPrice]);\n \n useEffect(() => {\n console.log('Precio actualizado')\n localStorage.setItem(\"price\", price.toString());\n }, [price]);\n\n function receiveMessage(e: MessageEventInit) {\n console.log('Mensaje recibido: ');\n console.log(e);\n if (e.data === \"redirectOccurred\") {\n console.log(\"redirección desde loading payment\");\n redirectTo(\"/dashboard\");\n }\n }\n\n const loadingPlexo = (\n
\n \n

\n En unos segundos serás redireccionado al sitio de Plexo para realizar el\n pago.\n

\n
\n );\n\n const plexoIframe = (\n
\n \n
\n );\n\n const checkIframeUrl = () => {\n const iframe = iframeRef.current;\n if (iframe) {\n try {\n const iframeUrl = iframe.contentWindow.location.pathname;\n if (iframeUrl === '/checkout') {\n window.top.location.href = iframe.contentWindow.location.href;\n }\n } catch (e) {\n // Puede fallar debido a políticas de CORS, ignora el error\n }\n }\n };\n\n function goBack() {\n dispatch(logout());\n history.push(\"/\");\n }\n function goToMeals() {\n history.push(\"/platos-semanales\");\n }\n function goToNutris() {\n history.push(\"/consulta-nutricional\");\n }\n\n function handleCoupon(e: React.ChangeEvent) {\n setCoupon(e.target.value);\n }\n\n function checkCoupon() {\n if(coupon === \"\") return\n setInputDisabled(true);\n\n const postData: { [key: string]: any } = {\n code: coupon\n };\n \n fetch(`${BASE_URL_FOODS}/v1/coupon/checkCoupon`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json', \n },\n body: JSON.stringify(postData),\n })\n .then(response => {\n if (!response.ok) {\n setInputDisabled(false);\n throw new Error('Error al enviar la solicitud');\n }\n return response.json(); \n })\n .then((data: any) => {\n //console.log('Resp cupón:', data);\n\n if(data[0]) {\n localStorage.setItem(\"coupon\", coupon.toUpperCase());\n const discount = Number(data[1]);\n const newPrice = price - discount;\n setFinalPrice(newPrice);\n\n if(newPrice === 0) {\n console.log(\"Test gratuito\");\n //redirect test gratis\n redirectTo(\"/checkout\");\n }\n console.log(\"Cupón aplicado\");\n //actualizo precio\n \n \n } else {\n setInputDisabled(false);\n setCoupon(\"\");\n }\n\n })\n .catch(error => {\n console.error('Error al enviar la solicitud por cupón:', error);\n });\n\n\n\n }\n\n const verifyCoupon = async (couponCode) => {\n try {\n const response = await fetch(`${BASE_URL_FOODS}/v1/coupon/checkCoupon`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ code: couponCode }),\n });\n if (!response.ok) throw new Error('Error al verificar el cupón');\n const data = await response.json();\n return data; // Asegúrate de que esta respuesta se ajuste a tus necesidades\n } catch (error) {\n console.error('Error al verificar el cupón:', error);\n throw error; // Propagar el error para manejarlo en onSubmit\n }\n };\n\n const handleSubmit = (event: React.FormEvent, submitForm: any) => {\n event.preventDefault();\n event.stopPropagation();\n submitForm();\n };\n\n const submitForm = async (values, actions) => {\n const { coupon } = values;\n try {\n const couponData = await verifyCoupon(coupon);\n //console.log('Resp cupón:', couponData);\n if (couponData[0]) {\n localStorage.setItem(\"coupon\", coupon.toUpperCase());\n const discount = Number(couponData[1]);\n const newPrice = price - discount;\n //console.log('Precio final:', newPrice)\n setFinalPrice(newPrice);\n \n if (newPrice === 0) {\n redirectTo(\"/checkout\"); \n }\n } else {\n // Manejar cupón inválido\n }\n } catch (error) {\n // Manejar errores de la verificación aquí\n } finally {\n actions.setSubmitting(false); \n }\n };\n\n return (\n
\n
\n
\n

Nutricionistas

\n
\n
\n

Platos

\n
\n
\n

Cerrar Sesion

\n
\n
\n
\n
\n \"logo\"\n
\n { !isCompany ? (\n <>\n
\n \n {({ isSubmitting, isValid, handleSubmit: formikSubmit }) => (\n
handleSubmit(e, formikSubmit)} className=\"form\">\n
\n

Tienes un cupón de descuento?

\n
\n \n
\n
\n
\n \n Aplicar cupón\n \n
\n \n
\n \n )}\n
\n
\n Precio final USD {finalPrice} Imp. Incl.\n
\n
\n\n { /*
\n ¿Tienes un cupón de descuento?\n
\n \n \n
\n
Precio final \n {finalPrice}\n
\n
*/}\n \n ) : ''\n }\n
\n {instruments.instrumentUrl ? plexoIframe : loadingPlexo}\n
\n
\n \"logo\"\n \n
\n
\n
\n );\n}\n\nexport default connector(withRouter(LoadingPayment));\n","import React, { useEffect, useState } from \"react\";\nimport { Paper, Button } from \"@material-ui/core\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport ArrowBackIcon from \"@material-ui/icons/ArrowBack\";\nimport qs from 'query-string';\nimport { Formik, Form, FormikHelpers, Field } from \"formik\";\nimport { useSelector, useDispatch } from 'react-redux';\n\nimport { Header } from \"../../../common/Header\";\nimport { UserDataFields } from \"../../../common/UserDataFields\";\nimport { PathologiesFields } from \"../../../common/PathologiesFields\";\nimport { FamilyBackgroundFields } from \"../../../common/FamilyBackgroundFields\";\nimport schemas from \"../../../../data/schemas\";\nimport { Account as Acc } from '../../../../store/auth/types';\nimport { RootState } from '../../../../store/config/types';\nimport { userAccount, userRole } from '../../../../store/auth/selector';\nimport { authService } from '../../../../services/auth.service';\nimport { changeEmail, register } from '../../../../store/auth/actionCreators';\nimport FormTextField from '../../../common/forms/FormTextField/FormTextField';\nimport roles from \"../../../../utils/roles\";\nimport { FullWidthSnackbar } from \"../../../common/FullWidthSnackbar\";\n\nimport logo from \"../../../../assets/logo.png\";\n\ninterface Values {\n name: string;\n surname: string;\n gender: number;\n height: string;\n weight: string;\n phone: string;\n ethnicity: number;\n date: string;\n email: string;\n pathologies: string[];\n familyBackground: string[];\n password: string;\n repeatPassword: string;\n}\n\nfunction UserForm({ history }: RouteComponentProps) {\n const [open, setOpen] = useState(false);\n const role = useSelector((state: RootState) => userRole(state));\n const isNutritionist = role === roles.nutricionist;\n const endUserName = isNutritionist ? \"paciente\" : \"empleado\";\n\n const [isUser, setIsUser] = useState(false);\n const actualUser = useSelector((state: RootState) => userAccount(state));\n const dispatch = useDispatch();\n const [business, setBusiness] = useState();\n const [nutritionist, setNutritionist] = useState();\n\n const [initialValues, setInitialValues] = useState({\n name: \"\",\n surname: \"\",\n gender: 0,\n height: \"170\",\n weight: \"70\",\n phone: \"\",\n ethnicity: 0,\n date: \"1990-01-01T00:00:00\",\n email: \"\",\n pathologies: [],\n familyBackground: [],\n password: \"\",\n repeatPassword: \"\"\n });\n\n useEffect(() => {\n const search = window.location.search;\n if (isUser === false && search != \"\") {\n setIsUser(true);\n const userData = qs.parse(search)['user'].toString();\n authService.getUserFromBusiness(userData).then(\n (response) => {\n console.log(response);\n const profile = response.account.profile;\n\n let pathologiesIds = [];\n let familyBackIds = [];\n if (profile) {\n for (let i of profile.pathologies) {\n pathologiesIds.push(i.id);\n }\n\n for (let i of profile.familyHistories) {\n familyBackIds.push(i.id);\n }\n\n setInitialValues({\n name: profile.firstName,\n surname: profile.lastName,\n gender: profile.gender,\n height: profile.height,\n weight: profile.weight,\n phone: profile.mobile,\n ethnicity: 0,\n date: profile.birthDate,\n email: response.account.email,\n pathologies: pathologiesIds,\n familyBackground: familyBackIds,\n password: \"\",\n repeatPassword: \"\"\n })\n }\n\n setBusiness(response.account.business);\n setNutritionist(response.account.referer);\n\n },\n (error) => {\n console.log('error', error)\n }\n )\n }\n }, [setInitialValues, initialValues]);\n\n const submit = async (values: Values, { setSubmitting, validateForm, setFieldError }) => {\n const errors = await validateForm();\n if (Object.keys(errors).length > 0) {\n setSubmitting(false);\n return;\n }\n \n authService.verifyEmail(values.email).then(\n (response) => {\n let pathologiesIds = [];\n for (let i of values.pathologies) {\n pathologiesIds.push({ id: i, name: \"\" });\n }\n\n let familyBackIds = [];\n for (let i of values.familyBackground) {\n familyBackIds.push({ id: i, name: \"\" });\n }\n if (isUser) {\n const account = createRequestRegisterCompany(business, nutritionist, values, pathologiesIds, familyBackIds);\n dispatch(changeEmail(values.email));\n dispatch(register(account, values.password));\n history.push(\"/signup/?user=1&step=4&fromCompany=1\");\n }\n else {\n if (isNutritionist) {\n const account = createRequestRegisterNutricionist(actualUser.nutritionist, values, pathologiesIds, familyBackIds);\n\n const request = {\n accountId: actualUser.id,\n newAccountInfo: account\n };\n\n authService.createUserFromNutricionist(request).then(\n (response) => {\n goBack();\n },\n (error) => {\n setOpen(true);\n })\n\n\n } else {\n const account = createRequestRegisterCompany(actualUser.business, nutritionist, values, pathologiesIds, familyBackIds);\n\n const request = {\n accountId: actualUser.id,\n newAccountInfo: account\n };\n\n authService.createUserFromBusiness(request).then(\n (response) => {\n goBack();\n },\n (error) => {\n console.log(\"error\",error);\n }\n )\n }\n }\n },\n (error) => {\n setSubmitting(false); \n setFieldError('email', 'El correo electrónico no esta disponible');\n }\n )\n };\n\n const createRequestRegisterCompany = (business, nutritionist, values, pathologiesIds, familyBackIds): Acc => {\n var referrer = null;\n if (nutritionist) {\n referrer = {\n publicCode: nutritionist.publicCode,\n profile: nutritionist\n }\n }\n const profile = {\n firstName: values.name,\n lastName: values.surname,\n birthDate: values.date,\n height: values.height,\n weight: values.weight,\n gender: values.gender,\n analysis: null,\n mobile: values.phone,\n address: \"\",\n pathologies: pathologiesIds,\n familyHistories: familyBackIds,\n }\n return {\n role: \"Customer\",\n profile,\n email: values.email,\n business: business,\n referer: referrer,\n nutritionist: null,\n };\n };\n\n const createRequestRegisterNutricionist = (nutritionist, values, pathologiesIds, familyBackIds): Acc => {\n const referrer = {\n publicCode: nutritionist.publicCode,\n profile: nutritionist\n }\n const profile = {\n firstName: values.name,\n lastName: values.surname,\n birthDate: values.date,\n height: values.height,\n weight: values.weight,\n gender: values.gender,\n analysis: null,\n mobile: values.phone,\n address: \"\",\n pathologies: pathologiesIds,\n familyHistories: familyBackIds,\n }\n return {\n role: \"Customer\",\n profile,\n email: values.email,\n referer: referrer,\n business: null,\n nutritionist: nutritionist,\n };\n };\n\n const goBack = () => {\n history.push(\"/dashboard\");\n };\n\n const redirectTo = (path: string): void => {\n history.push(path);\n };\n\n return (\n
\n {isUser ? (\n
\n \"logo\" redirectTo(\"/\")} />\n
\n
\n
\n ) :\n
\n }\n \n
\n {isUser ? (

Cargar datos personales

) : (

{`Cargar datos del ${endUserName}`}

)}\n {!isUser &&\n
\n \n

Volver

\n
\n }\n
\n {!isUser && (

\n {`Podés cargar la mayor cantidad de información para que el ${endUserName} no lo deba hacer, si te faltan algunos\n campos no te preocupes ya que el ${endUserName} lo puede completar luego.`}\n

)}\n \n { ({ isSubmitting, validateForm }) => (\n
\n
\n \n {/* \n */}\n {isUser &&
\n

Contraseña para ingresar a tu perfil

\n
\n \n \n
\n
}\n
\n
\n \n
\n \n )}\n \n \n \n
\n );\n}\n\nexport default withRouter(UserForm);\n","import React from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport ArrowForwardIcon from \"@material-ui/icons/ArrowForward\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport logo from \"../../../assets/logo.png\";\n\n\nfunction TermsAndConditions() {\n\n\n const history = useHistory();\n\n function goToHome() {\n history.push('/');\n }\n\n const handleLinkClick = () => {\n window.close();\n };\n\n return (\n
\n
\n
\n
\n \"logo\"\n {/* \n Volver\n */}\n Volver\n
\n
\n

\n Términos y Condiciones\n

\n

\n \n1 - El objetivo de la prueba es analizar una muestra de su saliva para saber cómo usted asimila diferentes nutrientes, según su ADN.
\n\n2 - Esta es una prueba informativa y no implica diagnóstico de enfermedad alguna.
\n\n3- Si usted acepta, ocurrirá lo siguiente:
\n         - Deberá realizar el pago de su prueba nutrigenética con tarjetas de débito o crédito hasta en 6 pagos, a través del procesador de pagos Plexo y bajo sus términos y condiciones.
\n         - Posteriormente, deberá coordinar la entrega y posterior retiro en su domicilio de la muestra nutrigenética de forma automática a través de la aplicación si se encuentra en Montevideo o de forma telefónica lo contactaremos si se encuentra en el interior del País.
\n         - Pasado los pasos anteriores, deberá esperar un máximo de 45 días hábiles para recibir sus resultados completos en su email, los resultados resumidos en la plataforma de Mr. Gen y las recomendaciones de alimentación personalizadas basadas en su perfil genético.
\n\n4- Las recomendaciones de alimentación están basadas en una lista con alrededor de 300 alimentos que serán actualizados cada cierto tiempo y que están relacionados con alimentos que pueden encontrarse en el mercado uruguayo.
\n\n5 - Los análisis pueden implicar eventualmente solicitudes de nuevas tomas de muestras, lo que puede dar lugar a cambios en los plazos inicialmente estipulados para la entrega de los resultados.
\n\n6 - Mr. Gen no ofrece apoyo de asesoramiento genético para los resultados.
\n\n7 - Los resultados de la prueba nutrigenética pueden no incluir todas las variantes previstas inicialmente.
\n\n8 - Cualquier conducta o acción que pueda tener un impacto en la salud de un individuo debe ser evaluada junto con un profesional capacitado.
\n\n9 - Los conocimientos científicos relacionados con los análisis realizados están sujetos a una actualización constante.
\n\n10 - La muestra será enviada para su estudio a Genera de Brasil, compañía de análisis genéticos y genómicos de alta especialidad que cuenta con un laboratorio de última generación ubicado en Calle Avenida Genética #2-704 en la Colonia Brasil, Ciudad de Sao Paulo, Brasil, C.P. XXXXX.
\n\n11 - Mr. Gen únicamente compartirá su número de usuario en la plataforma como identificador de su muestra con el laboratorio Genera de Brasil.
\n\n12 - Las características proporcionadas en los resultados seguirán las ofrecidas al momento de la compra. Por lo tanto, las nuevas funcionalidades que se incorporen solo estarán disponibles para los clientes cuyas compras se hayan realizado a partir de la fecha de dicha actualización.
\n\n13 - Los resultados completos los recibirá únicamente usted al email informado en el registro de usuario. A su vez, recibirá un resultado resumido bajo su usuario y contraseña y también las recomendaciones de alimentación personalizadas según su perfil genético.
\n\n14 - Sus resultados serán compartidos con el/la profesional en nutrición únicamente cuando su cuenta esté relacionada con el identificador de nutricionista proporcionado al registrar su usuario.
\n\n15 - El tiempo estipulado de entrega, 45 días hábiles, inicia desde que la muestra es retirada del domicilio del usuario y entregada en oficinas de Mr. Gen, pudiéndose notar un cambio de estado en el pedido a \"Esperando Resultado\".
\n\n16 - La decisión de realizar este análisis es absolutamente voluntaria. Usted está en plena libertad de recibir la asesoría necesaria por el profesional de la salud que usted decida.
\n\n17 - Si tiene alguna pregunta, comentario o preocupación relacionada con esta prueba, comuníquese al número de teléfono +598 99 436 487 en el horario de 10:00 a 17:00 de Lunes a Viernes. Si lo prefiere, envíe un mensaje a la siguiente dirección de correo electrónico: mrgen.uy@gmail.com
\n\n

\n

Política de Privacidad para la Protección de Datos Personales

\n

\n\n1 - GUVA SRL a través de su nombre comercial Mr. Gen, en adelante \"La empresa\", es propietaria de este Sitio web y solo recogerá información que contenga datos personales de usuarios que brinden su consentimiento para ello. Es decir, recoge, almacena y lleva a cabo el tratamiento de los datos que el usuario pone a su disposición cuando accede a la Plataforma o Aplicación móvil, o la utiliza. Cuando el usuario vincula la cuenta que tiene en una página web de terceros (por ejemplo, Facebook), con su cuenta de Mr. Gen, este obtendrá los Datos Personales que el usuario haya proporcionado a la página web de terceros, en la medida en que lo permita la configuración que el mismo haya elegido en la página web de terceros.
\n\n2 - La empresa tratará los datos personales proporcionados por los usuarios de este sitio únicamente con la finalidad y en la modalidad detallada en esta Política de Privacidad y en un todo de acuerdo con la normativa de la República Oriental del Uruguay en materia de Protección de Datos Personales, en particular a la Ley No. 18.331 y los decretos No. 664/008 de 22-12-008 y 414/009 de 31-8-009 y concordantes.
\n\n3 - La empresa se compromete a usar los datos personales que reciba, exclusivamente para los fines específicos para los cuales el usuario los proporciona, no cediéndolos a otros terceros que no sean -los proveedores de servicios genéticos y servicios logísticos para la entrega y retiro del producto-. Mr. Gen declara que tiene derecho a divulgar y poner a disposición información de inicio de sesión del usuario a esos terceros proveedores del bien o servicio objeto del contrato, para que este último ofrezca y haga efectiva la entrega del servicio. Sin perjuicio de ello, se reserva la posibilidad de realizar el tratamiento de datos personales de los usuarios para utilizarlos en los otros servicios de la empresa o de sus filiales, sucursales o socios de negocios o para enviar mailings de la empresa con las novedades a lo cual el usuario consiente.
\n\n4 - Los datos personales podrán alojarse en los servidores que posee la empresa en Uruguay o de futuro en otros países con un nivel de protección adecuado.
\n\n5 - Mediante el vínculo \"CONTACTO\", el usuario podrá requerir cualquier tipo de información a la empresa y en ese caso, los datos personales que proporcione se archivarán en una base de datos de \"Registro de Consultas\" y sólo se utilizarán para evacuar las consultas, extraer información estadística o comunicarse con el solicitante.
\n\n6 - La empresa no se hace responsable por el tratamiento y libre acceso a datos personales que el usuario incluya en su comunicación enviada sobre terceras personas, entendiendo que el usuario deberá contar con el consentimiento documentado de los mismos a efectos de incluir sus datos personales en la comunicación o consulta. Asimismo, la empresa no se hace responsable de la información personal incluida en las comunicaciones directas con los nutricionistas y proveedores de alimentación vinculados a Mr. Gen.
\n\n7 - La Política de Privacidad se limita a la utilización que el usuario haga directamente ingresando a la página web www.mister-gen.com, y no se garantiza el mismo resultado en caso de que se acceda mediante el redireccionamiento de otros Sitios.
\n\n8 - En esta Política de Privacidad se detallan las prácticas vigentes de la empresa en relación a los servicios de promoción que presta. Por ello, la misma puede ser alterada si la empresa, por su sola voluntad, decide hacerlo comunicando a los usuarios del cambio mediante la actualización de la misma.
\n\n9 - La empresa ha implementado todas las medidas de seguridad necesarias para evitar que terceros no autorizados accedan a los datos. Ello incluye las medidas de seguridad físicas y el acceso potencial solo de empleados o subcontratistas que necesiten acceder a los datos por razones laborales, los cuales estarán sujetos a cláusulas de confidencialidad y obligaciones de secreto profesional, contemplado en el art. 302 del Código Penal.
\n\n10 - La empresa hará los máximos esfuerzos para proteger los datos personales que le proporcionen los usuarios por este sitio web. Sin embargo, si en cumplimiento de obligaciones contractuales que asuma con terceros, o en el caso de que exista una orden judicial al respecto, podrá revelar algunos de los datos que tenga en su poder.
\n\n11 - El Responsable de las bases de datos de \"Consultas\" es la empresa, pudiéndose ejercer los derechos de acceso, modificación o supresión dirigiéndose personalmente y con copia de documento de identidad o poder acreditativo de representación en caso de tratarse de persona jurídica por email a mrgen.uy@gmail.com. También podrá presentar el usuario, en la misma forma, las quejas o sugerencias que entienda oportunas.
\n\n12 - Esta página web utiliza Google Analytics y otros proveedores de trackeo de actividad.
\n\n13 - Este sitio web utiliza el servicio de remarketing de AdWords de Google, para hacer publicidad en Sitios web de terceros (incluyendo Google), para los visitantes que ya visitaron nuestro sitio. Eso podría significar que nos comuniquemos con usuarios visitantes que no han completado una tarea en nuestro Sitio, por ejemplo, usando el formulario de contacto para realizar una consulta.
\n\n14 - Esto podría ser en forma de un anuncio en la página de resultados de búsqueda de Google o en un sitio en la Red de Display de Google.
\n\n15 - Proveedores de terceros sitios, incluido Google, utilizan cookies para publicar anuncios basados en visitas anteriores de alguien a la página web de Mr. Gen. Por supuesto, los datos recogidos serán utilizados de acuerdo con nuestra propia Política de Privacidad y la Política de Privacidad de Google.
\n\n16 - Puedes configurar las preferencias de cómo Google te muestra los anuncios, utilizando la página de preferencias de anuncios de Google, y si así lo prefieres, puedes optar por salir de la publicidad basada en intereses en su totalidad mediante la configuración de cookies o mediante el uso de un plugin para el navegador.
\n\n17 - Para inhabilitar el uso de cookies de Google puedes hacerlo a través de la Configuración de anuncios de Google. Si lo deseas, puedes inhabilitar el uso de cookies de un tercer proveedor a través de la página de inhabilitación de Network Advertising Initiative.
\n\n18 - Mr. Gen contendrá enlaces a otras páginas web que no son de su propiedad ni están controladas por la misma. Estas páginas web podrán instalar en su dispositivo sus propias cookies, web beacons u otros tipos de archivos, o recoger o solicitarle que proporcione Datos Personales acerca de usted. Estas páginas web de terceros disponen de sus propias condiciones en materia de recogida, utilización y divulgación de Datos Personales. Le recomendamos que lea las condiciones de uso y las políticas de privacidad de las páginas web de terceros que usted visite.
\n\n19 - Podremos cambiar nuestros procedimientos de recogida y utilización de Datos Personales en cualquier momento, sin previo aviso y a nuestra exclusiva discreción. En caso de que introduzcamos cambios significativos a la Política de Privacidad, se lo notificaremos publicando la Política de Privacidad modificada en la Plataforma o enviándole un mensaje de correo electrónico.
\n\n20 - Si tiene consultas o sugerencias sobre esta Política de privacidad de este sitio web, diríjase al e-mail mrgen.uy@gmail.com.
\n

\n

Política de Devolución

\n

\n\nCÓMO DEVOLVER UN PRODUCTO:
\nCualquiera que sea la razón, rogamos que nos notifiques tu deseo de devolver un producto a través de un correo electrónico a mrgen.uy@gmail.com. Si deseas el reembolso de tu pedido, éste se hará a través del mismo medio utilizado para el pago del pedido inicial. Para que el servicio sea más rápido, los artículos tienen que ser devueltos en su embalaje original, así como, si es posible, en la misma caja en la que fueron enviados. Si no fuera posible, te agradeceríamos que embalases los productos con el mejor acondicionamiento posible con el objetivo de evitar cualquier problema durante la devolución. Un e-mail de confirmación te informará de la recepción de tu paquete y del procesamiento de tu pedido.

\n\nCONDICIONES PARA CAMBIOS Y DEVOLUCIONES:
\nEl plazo máximo para la solicitud de devoluciones será de quince (15) días corridos a contar desde el día de recepción del pedido. Pasado este plazo, Mr. Gen no aceptará las devoluciones. Por motivos de higiene y salud, Mr. Gen no admitirá la devolución de productos usados, abiertos o desprecintados. Tampoco se admitirán productos que hayan sido golpeados o deteriorados, sin embalaje/caja/estuche original o que presenten alguna falta de algún elemento o accesorio. Para que sea efectiva una devolución, el kit tiene que ser devuelto a nuestras instalaciones. Una vez el kit sea recibido y comprobado por nuestro equipo, se procederá a devolver el importe de la compra aplicando una penalización de 50 USD (o su equivalente en la moneda de pago) por gastos de gestión, manipulación y envío. Si la muestra ya ha sido enviada a nuestro laboratorio y ya está siendo procesada, la devolución del importe no será posible. Por motivos de higiene y salud, Mr. Gen no acepta cambios de los kits adquiridos.

\n\nPASOS A SEGUIR EN LAS DEVOLUCIONES:
\nSi deseas hacer la devolución de algún producto, por favor sigue estas instrucciones:
\n\n1 - Contacta con el servicio de Atención al Cliente mediante el correo electrónico mrgen.uy@gmail.com indicando el número de pedido y fecha del mismo.
\n2 - Empaqueta el/los producto/s bajo las mismas condiciones que lo recibiste.
\n3 - Mr. Gen enviará la etiqueta para hacer el envío de vuelta a nuestras instalaciones.
\n4 - Una vez recibidos los productos, el personal de Mr. Gen lo revisará y, si está todo correcto, se procederá a la devolución del importe aplicando la penalización anteriormente descrita.

\n\nEl reintegro del importe de las devoluciones se realizará a través del mismo canal que el cliente seleccionó como forma de pago en el momento de formalizar su pedido. Te informamos que deberás conservar la factura del pedido para gestionar cualquier devolución o sustitución.
\n
\nPolítica de Sustitución de Productos Defectuosos o en Mal Estado\n
\nPor causas ajenas a nuestra voluntad, cabe la posibilidad de recibir un producto con un defecto de fabricación o en mal estado. Te rogamos que, tan pronto como adviertas que el producto presenta alguna anomalía, te pongas en contacto con nuestro servicio de Atención al Cliente comunicándonos la incidencia. Una vez te pongas en contacto con nosotros, te indicaremos el procedimiento para la sustitución del producto defectuoso. En caso de que el motivo de la devolución sea debido a que el producto presente algún tipo de deterioro o defecto de fabricación, Mr. Gen se hará cargo de los gastos de envío derivados de dicha devolución. No se aceptarán devoluciones de productos que hayan sido abiertos o utilizados, a menos que sea porque estén estropeados o defectuosos. Te informamos que deberás conservar la factura del pedido para gestionar cualquier devolución o sustitución.
\n
\nDevoluciones por Daños Derivados del Transporte\n
\n\nCabe la posibilidad de que el producto sufra algún tipo de daño derivado de su manipulación o transporte. Con el fin de identificar posibles daños causados por el transporte, Mr. Gen recomienda a sus clientes que revisen el paquete en el momento de su recepción con el fin de identificar posibles golpes o daños en el exterior del mismo. En caso de que la mercancía presente signos evidentes de haber sufrido algún deterioro derivado del transporte, el cliente tiene derecho a rechazar la mercancía en el momento de su recepción, haciéndole saber al mensajero el motivo de la no aceptación. Los reembolsos que se realicen en virtud de esta política se emitirán a la misma cuenta bancaria utilizada para la compra y se procesarán en un plazo de 45 días hábiles a partir de la confirmación por parte de nuestro equipo de Atención al Cliente de que se han cumplido las condiciones del reembolso. En el momento en que se solicite el reembolso y confirmemos que la muestra no ha comenzado a ser procesada por nuestro laboratorio, invalidaremos el kit de recogida de saliva y cualquier muestra enviada a nuestro laboratorio con ese código no será procesada. Si la compra de dos o más kits es lo que da derecho a un descuento en su pedido y solicita el reembolso de una parte del mismo o si una muestra no supera el análisis dos veces, se reembolsará primero el precio del kit con descuento. No emitiremos un reembolso si:\n\nSolicitas un reembolso más de quince (15) días después de su pedido.\nNuestro laboratorio había comenzado a procesar la muestra de saliva antes de la solicitud de reembolso.\nNo recibimos el kit de recolección de saliva dentro de los quince (15) días de la solicitud de reembolso.\nPolítica de Extravío\n\nSi el kit no llega al destino en el plazo de diez (10) días corridos desde la compra, rogamos te pongas en contacto con nuestro servicio de Atención al Cliente (mrgen.uy@gmail.com) comunicándonos la incidencia para que podamos verificar con la empresa de transporte qué ha podido pasar. Una vez tengamos confirmación por parte de la empresa de transporte de que el kit no ha llegado a su destinatario, procederemos a hacer el envío de un nuevo kit sin coste para el cliente.\n\n

\n
\n\n
\n
\n \n
\n );\n}\n\nexport default TermsAndConditions;","import React, { useEffect, useState } from \"react\";\r\nimport { Header } from \"../../common/Header\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport { Button, Paper } from \"@material-ui/core\";\r\n\r\nexport enum EndUserNavigation {\r\n Foods,\r\n Results,\r\n Agenda,\r\n Meal\r\n}\r\n\r\nfunction CommonContainer({ children }) {\r\n const loc = useLocation();\r\n const [currentScreen, setCurrentScreen] = useState();\r\n\r\n useEffect(() => {\r\n const route = loc.pathname;\r\n if (route == \"/foods\") {\r\n setCurrentScreen(EndUserNavigation.Foods);\r\n }\r\n if (route == \"/platos\") {\r\n setCurrentScreen(EndUserNavigation.Meal);\r\n }\r\n if (route == \"/results\") {\r\n setCurrentScreen(EndUserNavigation.Results);\r\n }\r\n }, [loc]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nfunction Navigator({ active }: { active: EndUserNavigation }) {\r\n const history = useHistory();\r\n\r\n return (\r\n \r\n
    \r\n \r\n {\r\n history.push(\"/results\");\r\n }}\r\n >\r\n Resultados\r\n \r\n \r\n
  • \r\n {\r\n history.push(\"/foods\");\r\n }}\r\n >\r\n Recomendaciones\r\n \r\n
  • \r\n
  • \r\n {\r\n history.push(\"/platos-semanales\");\r\n }}\r\n >\r\n Platos\r\n \r\n
  • \r\n
  • \r\n {\r\n history.push(\"/consulta-nutricional\");\r\n }}\r\n >\r\n Nutricionistas\r\n \r\n
  • \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default CommonContainer;\r\n","import React from \"react\";\r\nimport { Card, CardActionArea, CardContent } from \"@material-ui/core\";\r\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\r\nimport CommonContainer from \"./common/CommonContainer\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { userAccount } from \"../../store/auth/selector\";\r\nimport { RootState } from \"../../store/config/types\";\r\nimport probes from \"../../assets/probe-tubes.png\";\r\nimport search from \"../../assets/search-pizza.png\";\r\nimport meal from \"../../assets/step4.png\";\r\nimport MultiStepForm from \"./common/MultiStepForm\";\r\nimport UserProfile, { UserProfileData } from \"./UserProfile\";\r\nimport CollapsibleSection from \"./common/CollapsibleSection\";\r\n\r\nfunction Landing({ history }: RouteComponentProps) {\r\n const dispatch = useDispatch();\r\n const actualUser = useSelector((state: RootState) => userAccount(state));\r\n\r\n // Formar una clave dinámica usando el email del usuario logueado\r\n const profileKey = \"userProfileData_\" + actualUser.email;\r\n\r\n const storedUserData = localStorage.getItem(profileKey);\r\n let userProfileData: UserProfileData;\r\n if (storedUserData) {\r\n userProfileData = JSON.parse(storedUserData);\r\n } else {\r\n userProfileData = {\r\n ...actualUser.profile,\r\n email: actualUser.email,\r\n firstTimeDashboard: true, // Si no hay datos, se asume que es la primera vez\r\n imc: 0,\r\n recommendedCaloriesPerDay: 0,\r\n recommendedDailyWater: 0,\r\n recommendedDailyProteins: 0,\r\n recommendedDailyCarbos: 0,\r\n recommendedDailyFats: 0,\r\n };\r\n }\r\n\r\n // Si firstTimeDashboard es false, se considera que el formulario ya fue completado.\r\n const formCompleted = userProfileData.firstTimeDashboard === false;\r\n\r\n return (\r\n \r\n {/* !formCompleted ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n ) */}\r\n {/*
*/}\r\n
\r\n history.push(\"/results\")}\r\n description=\"Conocé la forma en que tu cuerpo asimila los distintos nutrientes.\"\r\n />\r\n history.push(\"/foods\")}\r\n description=\"Descubrí sobre una lista de casi 300 alimentos cuales debes preferir, moderar y evitar su consumo.\"\r\n />\r\n history.push(\"/platos-semanales\")}\r\n description=\"Contratá platos ricos, saludables y personalizados semanalmente directo a tu puerta.\"\r\n />\r\n
\r\n \r\n );\r\n}\r\n\r\nfunction MenuCard({\r\n icon,\r\n title,\r\n description,\r\n onClick,\r\n}: {\r\n icon: string;\r\n title: string;\r\n description: string;\r\n onClick: () => void;\r\n}) {\r\n return (\r\n \r\n \r\n \r\n
\r\n \"\"\r\n
\r\n
\r\n

{title}

\r\n

{description}

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default withRouter(Landing);\r\n\r\n/* history.push(\"/agenda\")}\r\n description=\"Agendá consultas con nutricionistas especialistas en interpretar los resultados nutrigenéticos.\"\r\n /> */","import React from 'react'\r\n\r\nimport { Paper } from \"@material-ui/core\";\r\n\r\nfunction ResultCard({ title, content }) {\r\n return (\r\n \r\n

{title}

\r\n {content}\r\n
\r\n );\r\n}\r\n\r\nexport default ResultCard;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { fetchAnalysisResults } from \"../../store/analyses/actionCreators\";\r\nimport { RootState } from \"../../store/config/types\";\r\nimport { LoadingAnimation } from \"../animations/LoadingAnimation\";\r\nimport { FullWidthSnackbar } from \"../common/FullWidthSnackbar\";\r\n\r\ntype DiagnosticsProps = {\r\n patientId: string;\r\n isNutritionist?: boolean;\r\n};\r\n\r\n/* let traits = [\"Niveles séricos de colesterol LDL\", \"Requerimiento de grasas Omega 3\", \"Sensibilidad a la glucosa\",\r\n \"Sensibilidad a la histamina\", \"Requerimiento de calcio\", \"Requerimiento de vitamina D\", \"Requerimiento de vitamina A\",\r\n \"Requerimiento de vitamina B6\", \"Requerimiento de vitamina B12\", \"Requerimiento de magnesio\", \"Respuesta al alcohol\",\r\n \"Sensibilidad a la sal\", \"Actividad antioxidante\", \"Niveles séricos de homocisteina\", \"Equilibrio depuración hepática\",\r\n \"Sensibilidad a la cafeína\", \"Tolerancia a la lactosa\", \"Sensación de saciedad\", \"Celiaquía\", \"Composición muscular\",\r\n \"Capacidad aeróbica o atlética\", \"Cafeína en deporte\",\"Grasas saturadas y peso corporal\"\r\n] \r\n\r\n{\r\n \"nutrient\": \"Sensibilidad a la histamina\",\r\n \"score\": 2,\r\n \"snps\": [\r\n {\r\n \"snp_ref\": \"rs2052129\",\r\n \"gene\": \"AOC1\",\r\n \"result\": \"GG\"\r\n },\r\n {\r\n \"snp_ref\": \"rs2071514\",\r\n \"gene\": \"AOC1\",\r\n \"result\": \"GG\"\r\n },\r\n {\r\n \"snp_ref\": \"rs1049793\",\r\n \"gene\": \"AOC1\",\r\n \"result\": \"CC\"\r\n },\r\n {\r\n \"snp_ref\": \"rs1050891\",\r\n \"gene\": \"HNMT\",\r\n \"result\": \"AA\"\r\n },\r\n {\r\n \"snp_ref\": \"rs11558538\",\r\n \"gene\": \"HNMT\",\r\n \"result\": \"CC\"\r\n }\r\n ]\r\n}\r\n\r\n*/\r\n\r\n\r\n\r\nconst KeyToLabelDict = {\r\n \"Grasas saturadas y peso corporal\": {\r\n label: \"Grasas saturadas y peso corporal\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite saber si estás dentro del grupo de riesgo, adecuar el consumo de alimentos y mejorar tus hábitos alimentarios para prevenir el desarrollo de obesidad y las enfermedades asociadas a ella.\r\n\r\n Tus genes indican que tu predisposición al aumento de peso corporal, teniendo un consumo elevado de grasas saturadas se encuentra bajo o habitual , pero tus genes no te determinan, tus hábitos si.`,\r\n 1: \"\",\r\n 2: `Conocer lo que dicen tus genes te permite saber si estás dentro del grupo de riesgo, adecuar el consumo de alimentos y mejorar tus hábitos alimentarios para prevenir el desarrollo de obesidad y las enfermedades asociadas a ella.\r\n\r\n Tus genes indican que tu predisposición al aumento de peso corporal, teniendo un consumo elevado de grasas saturadas se encuentra Aumentado, pero tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `Los lípidos o grasas son un componente importante de una dieta completa, nos aportan energía, forman parte de las membranas celulares y favorecen la absorción de ciertos nutrientes.\r\n Como sucede en otras áreas de la salud, a medida que se realizan nuevos estudios conocemos más del impacto que tienen los alimentos en nuestro organismo. \r\n A partir de la década de los años 50, las grasas se demonizaron, se proponía reducir el consumo total de grasas, entre ellas por ejemplo las saturadas para evitar enfermedades cardiovasculares ya que se planteaba la hipótesis que al aumentar las partículas de colesterol LDL (“malo”) favorecen a enfermedades cardiovasculares. \r\n Sin embargo, nuevos estudios hoy nos revelan que, si bien producen un aumento de LDL sería de partículas pequeñas y densas, no de partículas grandes que si se asocian a esta enfermedad.\r\n Respecto al peso corporal sucede algo similar, no debemos erradicar las grasas, sino que para obtener sus beneficios hay que seleccionarlas en cantidad y calidad .\r\n Hoy el énfasis es la evaluación 360° de las personas, poniendo foco en cambiar nuestro estilo de vida además de controlar las grasas, incrementando el ejercicio físico, evitando el tabaco y el estrés.\r\n `,\r\n results: `Las personas con dos copias de la variante rs5082 presentan un índice de masa corporal (IMC) más alto en comparación con personas con una o ninguna copia, al realizar una dieta alta en grasas saturadas. Estos individuos también presentan mayor ingesta total de alimentos. Esta variante se encuentra cerca de un gen llamado APOA2, que codifica para la proteína apolipoproteína A-II (apo A-II), que se encuentra en las partículas de colesterol HDL. Las personas con dos copias de la variante producen menos proteína apo A-II que las personas con ninguna o una variante.\r\n Tener dos copias del alelo G se asocia con un IMC más alto en el contexto de una dieta alta en grasas saturadas.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `
  • Tus genes no te predisponen a presentar un mayor aumento del peso corporal con el consumo elevado de grasas saturadas, pero esto no significa que no puedas desarrollar alto peso u obesidad si tu alimentación no es en base a alimentos reales y equilibrada.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, sin embargo el peso corporal se modifica fundamentalmente por el ambiente y los hábitos.
  • \r\n
  • A pesar de esto, realizar actividad física periódica te traerá múltiples beneficios (al menos 30 minutos diarios).
  • \r\n
  • Los valores de colesterol LDL se determinan mediante técnicas bioquímicas (laboratorio) que reflejen tu metabolismo al momento de la consulta.
  • \r\n
  • Se sugiere limitar la ingesta de grasas saturadas por debajo de 15-20 gr diarios ( un 10% de las grasas totales).
  • \r\n
  • Naturalmente los alimentos con altos niveles de grasas saturadas son las carnes sin procesar, lácteos enteros, chocolate y la mayoría de los alimentos procesados.
  • \r\n
  • La carne y los lácteos tienen otros nutrientes necesarios para tu salud, no los elimines, selecciona versiones reducidas en grasa como lácteos descremados y cortes de carne magros: Vaca (peceto, lomo, nalga), pollo sin piel (pechuga y muslos), cerdo (lomo, paleta, solomillo)
  • \r\n
  • Consumí con mayor frecuencia carnes blancas como pollo y pescado (merluza, brótola, lenguado).
  • \r\n
  • El consumo de fiambres, achuras, mantecas/margarinas y embutidos que presentan altos niveles de grasas saturadas reservalo solo para ocasiones especiales .
  • \r\n
  • En productos industriales este tipo de grasa está en tapas de masa, panes, galletitas y golosinas.
  • \r\n
  • Beneficiate del efecto antiinflamatorio de las grasas poliinsaturadas omega-3 preferentemente de aceite de oliva, aceitunas, semillas de chía y lino, nueces pecanas, aceite de lino, y nuez.
  • \r\n
  • Realizá al menos 4 comidas diarias. Evitá “picotear” programando 1 o 2 colaciones. Comé hasta sentirte levemente satisfecho, incorporá frutas y verduras variadas a todas tus comidas.
  • \r\n
  • Preferí el aceite de oliva extra virgen y palta en crudo (una cucharada sopera por comida como condimento) y no en fritura. Para cocinar aceite de coco o ghee. Evitar aceites en spray
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que estás predispuesto a presentar un mayor aumento del peso corporal con el consumo elevado de grasas saturadas, pero esto no significa que vayas a desarrollar alto peso u obesidad. Esto es una predisposición que te acompañará siempre, sin embargo el peso corporal se modifica fundamentalmente por el ambiente y los hábitos.
  • \r\n
  • A pesar de esto, realizar actividad física periódica te traerá múltiples beneficios (al menos 30 minutos diarios).
  • \r\n
  • Los valores de colesterol LDL se determinan mediante técnicas bioquímicas (laboratorio) que reflejen tu metabolismo al momento de la consulta.
  • \r\n
  • Limita la ingesta de grasas saturadas por debajo de 15 gr diarios (7% de las grasas totales). Naturalmente los alimentos con altos niveles de grasas saturadas son las carnes sin procesar, lácteos enteros, chocolate y la mayoría de los alimentos procesados.
  • \r\n
  • La carne y los lácteos tienen otros nutrientes necesarios para tu salud, no los elimines, selecciona versiones reducidas en grasa como lácteos descremados y cortes de carne magros: Vaca (peceto, lomo, nalga), pollo sin piel (pechuga y muslos), cerdo (lomo, paleta, solomillo)
  • \r\n
  • Consumí con mayor frecuencia carnes blancas como pollo y pescado (merluza, brótola, lenguado).
  • \r\n
  • El consumo de fiambres, achuras, mantecas/margarinas y embutidos que presentan altos niveles de grasas saturadas reservalo solo para ocasiones especiales . Por ejemplo un rulo de manteca contiene 2,5 grs de grasa saturada, un rollito de jamón y queso 4 grs de grasa saturada.
  • \r\n
  • Beneficiate del efecto antiinflamatorio de las grasas poliinsaturadas omega-3 preferentemente de aceite de oliva, aceitunas, semillas de chía y lino, nueces pecanas, aceite de lino, y nuez.
  • \r\n
  • Realizá al menos 4 comidas diarias. Evitá “picotear” programando 1 o 2 colaciones. Comé hasta sentirte levemente satisfecho, incorporá frutas y verduras variadas a todas tus comidas.
  • \r\n
  • Para mantener un peso saludable es importante incorporar cantidad y calidad suficiente de proteínas en tus comidas y fibra a fin de lograr saciedad.
  • \r\n
  • Preferí el aceite de oliva extra virgen y palta en crudo (una cucharada sopera por comida como condimento) y no en fritura. Para cocinar aceite de coco o ghee. Evitar aceites en spray
  • \r\n `,\r\n },\r\n bibliography: `Dolores Corella , Gina Peloso, Donna K Arnett, Serkalem Demissie, L Adrienne Cupples, Katherine Tucker, Chao-Qiang Lai, Laurence D Parnell, Oscar Coltell, Yu-Chi Lee, Jose M Ordovas.APOA2, dietary fat, and body mass index: replication of a gene-diet interaction in 3 independent populations\r\n `\r\n },\r\n \"Cafeína en deporte\": {\r\n label: \"Cafeína en deporte\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de cafeína acorde a tu metabolismo para maximizar tu rendimiento deportivo.\r\n Metabolizador rápido de cafeína.\r\n `,\r\n 1: \"\",\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de cafeína acorde a tu metabolismo para maximizar tu rendimiento deportivo.\r\n Metabolizador lento de cafeína.\r\n `,\r\n },\r\n generalInfo: `La cafeína es una sustancia estimulante, y por este efecto es uno de los suplementos usados por deportistas. Casi todos los estudios concluyen que la cafeína mejora el rendimiento en un 10% y permite que el esfuerzo parezca más fácil.\r\n
  • Disminuye la percepción de fatiga en deportes de resistencia, mejorando el rendimiento y permitiendo mantener la actividad a una intensidad superior durante un periodo más largo.
  • \r\n
  • Al ser un estimulante del sistema nervioso, aumenta la capacidad de alerta, concentración, tiempo de reacción y memoria.
  • \r\n
  • Aumenta la movilización y utilización de grasas durante el ejercicio, retrasando el vaciamiento de las reservas de glucógeno.
  • \r\n Las fuentes principales de cafeína que podemos encontrar son el café, el té, las bebidas cola, el guaraná, el mate o el chocolate. Además, existen en el mercado otros productos específicos que contienen cafeína como bebidas energéticas, gelatinas o cápsulas.\r\n En los últimos años, se han identificado variantes genéticas que pueden modificar la respuesta a esta sustancia y permiten adaptar el tiempo y la dosis a las características de cada deportista para obtener una respuesta óptima.\r\n `,\r\n results: `El citocromo P450 1A2 (CYP1A2) es responsable aproximadamente del 95% del metabolismo de la cafeína y presenta una amplia variabilidad entre individuos. Variantes en el gen CYP1A2 que codifica para ese citocromo afectan su actividad, esto modifica la velocidad con la que se metaboliza la cafeína en el organismo, y por lo tanto sus acciones a nivel muscular`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu metabolismo de la cafeína es más rápido que lo habitual, por lo que es probable que las recomendaciones clásicas de dosis y tiempo de administración de suplementos con cafeína sean útiles para vos.
  • \r\n
  • Si utilizas la cafeína como suplemento deportivo, la pauta que indica 3 a 9 mg/kg aproximadamente 60 minutos antes del ejercicio probablemente es útil para que puedas obtener un efecto óptimo.
  • \r\n
  • Si haces deporte de alto rendimiento, consultá con un especialista.
  • \r\n
  • Aunque es poco probable que presentes síntomas, la cantidad de cafeína recomendada por día es de hasta 400 mg (4 tazas diarias).
  • \r\n
  • En caso de presentar síntomas, evitá las bebidas cafeinadas luego del mediodía, y reducí el consumo total diario de cafeína a menos de 200 mg/día (2 tazas). Si continuas con estos síntomas luego de reducir la dosis, considerá eliminarla.
  • \r\n
  • Si tenés factores de riesgo cardiovascular o hipertensión arterial, es posible que no sea el suplemento más indicado para vos.
  • \r\n
  • Para más información consultá a tu médico o deportólogo.
  • \r\n `,\r\n 1: ``,\r\n 2: `
  • Tus genes indican que tu metabolismo de la cafeína es más lento que lo habitual, por lo que es probable que las recomendaciones clásicas de dosis y tiempo de administración de suplementos con cafeína necesiten ser modificadas para resultar útiles para vos.
  • \r\n
  • Si utilizas la cafeína como suplemento deportivo, es posible que necesites aumentar la dosis de cafeína para alcanzar valores en sangre óptimos, o consumirla más de una hora antes de hacer ejercicio.
  • \r\n
  • Si haces deporte de alto rendimiento, consultá con un especialista. Cuando consumimos más de 500-600 mg/día, puede presentarse intranquilidad,aumento de la actividad, congestión facial, molestias gastrointestinales, arritmias. En metabolizadores lentos se relaciona el consumo de cafeína con aumento del riesgo de infarto agudo de miocardio (IAM).
  • \r\n
  • Es posible que el consumo de altas dosis de cafeína en vos se asocie a mayor riesgo de efectos adversos. En caso de presentar síntomas, evitá las bebidas cafeinadas luego del mediodía, y reducí el consumo total diario de cafeína a menos de 200 mg/día (2 tazas).
  • \r\n
  • Si tenés factores de riesgo cardiovascular o hipertensión arterial, es posible que no sea el suplemento más indicado para vos.
  • \r\n
  • Para más información consultá a tu médico o deportólogo.
  • `,\r\n },\r\n bibliography: `Craig Pickering , John Kiely Are the Current Guidelines on Caffeine Use in Sport Optimal for Everyone? Inter-individual Variation in Caffeine Ergogenicity, and a Move Towards Personalised Sports Nutrition\r\n `\r\n },\r\n \"Capacidad aeróbica o atlética\": {\r\n label: \"Capacidad aeróbica\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: \"Conocer lo que dicen tus genes acerca de tu capacidad aeróbica te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.\",\r\n 1: \"\",\r\n 2: \"Conocer lo que dicen tus genes acerca de tu capacidad aeróbica te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.\",\r\n },\r\n generalInfo: `Podemos definir al rendimiento deportivo como la relación entre las marcas obtenidas y los recursos utilizados para lograrlas. \r\n Por lo tanto, para maximizar tu rendimiento deberás usar todos tus recursos disponibles.\r\n Está influenciado por distintos factores como alimentación, habilidad técnica, personalidad, factores psicológicos, circunstanciales, apoyo tecnológico y genéticos entre otros.\r\n Según estudios, se calcula que los factores genéticos podrían explicar alrededor del 66% de la diferencia del estado atlético entre las personas.\r\n El organismo recurre a los hidratos y las grasas como fuente principal de energía, junto con la utilización de oxígeno. La genética influye en la eficacia con la que procesamos los nutrientes y obtenemos energía, y a esta capacidad se la denomina rendimiento energético. Nuestros genes pueden entonces influir en la forma en que obtenemos energía de los nutrientes, y afectar directamente nuestra capacidad atlética.\r\n `,\r\n results: `El gen PPARGC1A está presente en tejidos con alta actividad metabólica, estos incluyen al músculo esquelético (durante el ejercicio). \r\n Este gen controla transitoriamente el transporte de glucosa, la oxidación de lípidos y glucosa, orquestando la capacidad oxidativa del músculo.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu capacidad atlética sería mayor, lo que indica que podrías tener mayor aptitud para los deportes.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero el desarrollo de aptitudes deportivas depende fundamentalmente del entrenamiento y otros factores ambientales.
  • \r\n
  • Personas con este genotipo pueden beneficiarse al incluir tanto entrenamientos de fuerza/potencia (pocas repeticiones con mucha carga) y deportes que requieren esfuerzos máximos en corto tiempo como entrenamientos de resistencia aeróbica, de esfuerzo moderado por períodos largos.
  • \r\n
  • Una alimentación balanceada contribuirá también al logro de tus objetivos.
  • \r\n
  • Diseñar tu entrenamiento apoyado por un profesional, de acuerdo a tus objetivos y focalizando en tus aptitudes, te ayudará a llegar más rápidamente a tus objetivo.
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que tenés una capacidad atlética habitual.
  • \r\n
  • El desarrollo de aptitudes deportivas depende fundamentalmente del entrenamiento y otros factores ambientales, por lo cual tener capacidad atlética habitual no implica que no puedas alcanzar un rendimiento atlético elevado.
  • \r\n
  • Una alimentación balanceada e incluir tanto entrenamientos de fuerza/potencia (pocas repeticiones con mucha carga) y deportes que requieren esfuerzos máximos en corto tiempo como entrenamientos de resistencia aeróbica, de esfuerzo moderado por períodos largos contribuirá también al logro de tus objetivos.
  • \r\n `,\r\n },\r\n bibliography: `\r\n Nir Eynon 1, Yoav Meckel, Alberto Jorge Alves, Chen Yamin, Michael Sagiv, Ehud Goldhammer, Moran Sagiv.Is there an interaction between PPARD T294C and PPARGC1A Gly482Ser polymorphisms and human endurance performance\r\n

    \r\n Ying Chen, Dongmei Wang, Pingping Yan, Shenglan Yan, Qing Chang, and Zhi Cheng\r\n Meta-analyses of the association between the PPARGC1A Gly482Ser polymorphism and athletic performance\r\n `\r\n },\r\n \"Composición muscular\": {\r\n label: \"Composición muscular\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes acerca de la composición de tus músculos te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.`,\r\n 1: `Conocer lo que dicen tus genes acerca de la composición de tus músculos te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.`,\r\n 2: `Conocer lo que dicen tus genes acerca de la composición de tus músculos te permite adecuar tu entrenamiento para alcanzar tus objetivos deportivos.`,\r\n },\r\n generalInfo: `Nuestros músculos se componen de tres tipos principales de fibras, fibras de contracción lenta, intermedias y de contracción rápida.\r\n El tipo de fibra muscular viene determinado por nuestros genes, conocer el predominio de cada tipo fibra en cada persona nos permite obtener una ventaja relativa sobre los deportes que tal vez más nos convengan desarrollar o practicar. \r\n De esta manera las personas que posean un alto porcentaje de fibras lentas podrían tener ventajas en actividades vinculadas con la resistencia, como por ejemplo, triatlón, running, carreras de fondo y medio fondo, ciclismo de ruta, natación de aguas abiertas, etc. \r\n Quienes posean mayor predominio de fibras intermedias, que tienen capacidad aeróbica suficiente para resistir a la fatiga durante varios minutos, tendrán mayor aptitud para los deportes de esfuerzo intermitente o de conjunto, como puede ser el hockey, rugby, fútbol y básquet. Quienes posean en cambio un mayor predominio de fibras rápidas, se verán beneficiados en la realización de actividades breves y explosivas, vinculadas con la velocidad, como por ejemplo carreras de velocidad, pruebas de atletismo o lanzamientos, levantamiento de pesas, etc. \r\n De todas maneras, la composición muscular es variable y se modifica en relación a la carga genética y el entrenamiento\r\n `,\r\n results: `El gen ACTN3 contiene instrucciones para producir alfa-actinina-3, una proteína que se encuentra en las fibras musculares e interviene en la contracción muscular.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n Fibras de contracción rápida.\r\n
  • Tus genes indican que en tus músculos tenés mayor porcentaje de fibras de contracción rápida, lo que indica que tenés mayor aptitud para deportes de potencia.
  • \r\n
  • Tu éxito deportivo puede verse más vinculado a actividades de alta intensidad y corta duración.
  • \r\n
  • Personas con tu composición muscular pueden beneficiarse al incluir entrenamiento de fuerza/potencia (pocas repeticiones con mucha carga), o deportes que requieren esfuerzos máximos en corto tiempo.
  • \r\n
  • Deportes como lanzamiento, levantamiento de pesas y carreras cortas pueden ser los adecuados para vos, aunque también podés beneficiarte de realizar entrenamiento funcional o crossfit que combinan entrenamiento de fuerza con resistencia.
  • \r\n
  • Es importante que incluyas algunas sesiones de entrenamiento de resistencia en tu plan semanal, para mejorar esta capacidad.
  • \r\n
  • Una alimentación adecuada, suficiente y balanceada contribuirá también al logro de tus objetivos.
  • \r\n `,\r\n 1: `\r\n Fibras de contracción mixta.\r\n
  • Tus genes indican una composición muscular mixta entre fibras de contracción rápida y fibras de contracción lenta, lo que se asocia con habilidad para actividades de potencia como así también de resistencia.
  • \r\n
  • Personas con tu composición muscular pueden beneficiarse al incluir entrenamiento de fuerza/potencia (pocas repeticiones con mucha carga), como así también sesiones de entrenamiento de resistencia, de esfuerzo moderado por períodos prolongados (carga moderada con más repeticiones, o esfuerzos moderados sostenidos).
  • \r\n
  • Entrenamientos que combinen estos dos tipos de esfuerzo, como entrenamiento funcional o crossfit podrían ser los ideales para vos.
  • \r\n
  • También te recomendamos incluir algunas sesiones de entrenamiento de resistencia aeróbica en tu plan semanal, para mejorar esta capacidad.
  • \r\n `,\r\n 2: `\r\n Fibras de contracción lenta.\r\n
  • Tus genes indican que en la composición de tus músculos hay predominio de fibras de contracción lenta y menor proporción de fibras de contracción rápida, lo que se asocia con mayor aptitud para deportes de resistencia.
  • \r\n
  • Personas con tu composición muscular pueden beneficiarse al incluir entrenamiento de resistencia aeróbica, de esfuerzo moderado por períodos largos (carga moderada con más repeticiones, o esfuerzos moderados sostenidos).
  • \r\n
  • Actividades como ciclismo, correr a ritmo moderado, natación pueden ser las adecuadas para vos. También te recomendamos incluir algunas sesiones de entrenamiento de potencia para mejorar esta capacidad. Entrenamientos que combinen estos dos tipos de esfuerzo, como entrenamiento funcional o crossfit también podrían ser beneficiosos para vos.
  • \r\n
  • Una alimentación adecuada, suficiente y balanceada contribuirá también al logro de tus objetivos.
  • \r\n `,\r\n },\r\n bibliography: `\r\n Alfred T et al. (2011). \"ACTN3 genotype, athletic status, and life course physical capability: meta-analysis of the published literature and findings from nine studies.\" Hum Mutat. 32(9):1008-18.\r\n
    \r\n Berman Y and North KN. (2010). \"A gene for speed: the emerging role of alpha-actinin-3 in muscle metabolism.\" Physiology (Bethesda). 25(4):250-9.\r\n
    \r\n Druzhevskaya AM et al. (2008). \"Association of the ACTN3 R577X polymorphism with power athlete status in Russians.\" Eur J Appl Physiol. 103(6):631-4.\r\n
    \r\n Eynon N et al. (2013). \"Genes for elite power and sprint performance: ACTN3 leads the way.\" Sports Med. 43(9):803-17.\r\n
    \r\n Guth LM and Roth SM. (2013). \"Genetic influence on athletic performance.\" Curr Opin Pediatr. 25(6):653-8.\r\n
    \r\n Lee FX et al. (2016). \"How does α-actinin-3 deficiency alter muscle function? Mechanistic insights into ACTN3, the 'gene for speed'.\" Biochim Biophys Acta. 1863(4):686-93.\r\n
    \r\n Ma F et al. (2013). \"The association of sport performance with ACE and ACTN3 genetic polymorphisms: a systematic review and meta-analysis.\" PLoS One. 8(1):e54685.\r\n
    \r\n MacArthur DG et al. (2007). \"Loss of ACTN3 gene function alters mouse muscle metabolism and shows evidence of positive selection in humans.\" Nat Genet. 39(10):1261-5.\r\n
    \r\n MacArthur DG et al. (2008). \"An Actn3 knockout mouse provides mechanistic insights into the association between alpha-actinin-3 deficiency and human athletic performance.\" Hum Mol Genet. 17(8):1076-86.\r\n
    \r\n Moran CN et al. (2007). \"Association analysis of the ACTN3 R577X polymorphism and complex quantitative body composition and performance phenotypes in adolescent Greeks.\" Eur J Hum Genet. 15(1):88-93.\r\n `\r\n },\r\n \"Celiaquía\": {\r\n label: \"Celiaquía\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `La enfermedad celíaca depende de múltiples factores genéticos y ambientales.\r\n\r\n Tus genes indican que podrías presentar variantes no asociadas a la enfermedad celíaca, aunque esto no lo determina y las pruebas genéticas no son diagnósticas de la enfermedad. `,\r\n 1: \"\",\r\n 2: `La enfermedad celíaca depende de múltiples factores genéticos y ambientales.\r\n\r\n Tus genes indican que podrías presentar variantes asociadas a la enfermedad celíaca, aunque esto no lo determina y las pruebas genéticas no son diagnósticas de la enfermedad. `,\r\n },\r\n generalInfo: `El gluten es una proteína que se encuentra presente en diversos tipos de cereales, como el trigo, la cebada, la avena y el centeno (TAAC). También se puede encontrar en productos alimenticios ya que es utilizado como espesante, tales como yogures, embutidos, salsas, alimentos congelados, chocolate, golosinas e incluso en pasta de dientes, medicamentos y suplementos.\r\n\r\n Algunas personas tienen dificultad para digerir el gluten y este permanece en el intestino delgado produciendo daño o sensibilidad.\r\n Cuando esta intolerancia al gluten es permanente, con causa genética y respuesta autoinmune se denomina celiaquía, pero hay personas con sensibilidad al gluten que no son estrictamente celíacas, sino que les es indigesto el gluten.\r\n \r\n Estas personas mejoran sus síntomas al limitar el gluten de la dieta. \r\n \r\n Algunos Signos y síntomas: \r\n
  • Enfermedad Celíaca: los síntomas más comunes son pérdida de peso, anemia, irritabilidad o dermatitis, molestias digestivas que causan diarrea y malabsorción de nutrientes.
  • \r\n
  • Sensibilidad al gluten no celíaca: predominan las manifestaciones extradigestivas, como alteraciones del comportamiento, dolores óseos y articulares, calambres, adormecimiento de las extremidades, pérdida de peso o fatiga crónica.
  • \r\n
    \r\n El estudio genético no hace diagnóstico de enfermedad celíaca, sino que deben realizarse más estudios para confirmar la enfermedad.\r\n `,\r\n results: `Existe una fuerte asociación entre la celiaquía con genes localizados en la región HLA (Human Leukocyte Antigen)\r\n La determinación de los alelos específicos constituyen la base de la prueba genética o test genético que puede emplearse en el diagnóstico de EC.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que es muy poco probable que desarrolles intolerancia al gluten o seas celíaco.
  • \r\n
  • Si aún asi presentas síntomas gastrointestinales, se asocien o no con la ingesta de gluten, te sugerimos que concurras a tu médico o nutricionista que descartará otras causas posibles para tus síntomas.
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que tenés variantes asociadas al desarrollo de intolerancia al gluten y enfermedad celiaca, pero esto no significa que desarrolles en un futuro la enfermedad ya que depende de multiples factores y su diagnostico no es genetico.
  • \r\n
  • Si presentas síntomas gastrointestinales específicos, consulta con tu médico para que te solicite estudios específicos que permitan confirmar/descartar el diagnóstico.
  • \r\n
  • Es importante que no excluyas el gluten de tu dieta sin indicación médica, ya que los estudios diagnósticos deben realizarse mientras se consuman productos con gluten para obtener resultados confiables.
  • \r\n
  • Si tuvieras síntomas hasta tanto confirmes tu diagnóstico, podes sentirte aliviado comiendo volúmenes pequeños, prefiriendo verduras cocidas en lugar de crudas, fruta sin cáscara, leche deslactosada y moderando el consumo de azúcar, mate cebado, café y picantes.
  • \r\n
  • La detección temprana y el plan alimentario libre de gluten instaurado en el momento oportuno son fundamentales para evitar complicaciones secundarias de esta patología.
  • \r\n
  • Si tu diagnóstico fuera positivo deberás eliminar el gluten de tu dieta, consumiendo alimentos seguros que tengan la etiqueta “Sin TACC” (sin trigo, avena, cebada y centeno).
  • \r\n
  • Si se confirma el diagnóstico, deberas quitar de tu alimentación las harinas que presentan TACC y los productos preparados con ellas , como: galletas, panes, alfajores, tortas, masitas, pastas simples y rellenas, seitán (“simil carne” vegetariana), bebidas (cerveza, whisky).
  • \r\n
  • Existen alimentos que pueden tener gluten como aditivo alimentario. También deberás elegir la versión permitida de golosinas, enlatados, fiambres, quesos y pasta dental.
  • \r\n
  • Alimentos que naturalmente no tienen gluten: frutas, verduras, huevos, carnes, leche, yogur natural, fruta seca, especias, aceites.
  • \r\n
  • En caso que se confirmase tu diagnóstico podes consultar las marcas seguras sin TACC en la siguiente pagina web: acelu.org
  • \r\n
  • Para más información podés consultar a un médico clínico o gastroenterólogo.
  • \r\n `,\r\n },\r\n bibliography: `\r\n Victorien M. Wolters, M.D.and Cisca Wijmenga, Ph.D.Department of Pediatric Gastroenterology and Department of Biomedical Genetics, University Medical Centre Utrecht, Utrecht, The Netherlands; and Department of Genetics, University Medical Centre Groningen, Groningen, The Netherlands.Genetic Background of Celiac Disease and Its Clinical Implications\r\n
    \r\n Patrick CA Dubois,Gosia Trynka, Lude Franke, Karen A Hunt, Jihane Romanos, Alessandra Curtotti, Alexandra Zhernakova, Graham AR Heap, Róza Ádány, Arpo Aromaa, Maria Teresa Bardella.Multiple common variants for celiac disease influencing immune gene expression\r\n
    \r\n Alienke J. Monsuur, Paul I. W. de Bakker, Alexandra Zhernakova , Dalila Pinto, Willem Verduijn , Jihane Romanos , Renata Auricchio , Ana Lopez, David A. van Heel , J. Bart A. Crusius , Cisca Wijmeng.Effective Detection of Human Leukocyte Antigen Risk Alleles in Celiac Disease Using Tag Single Nucleotide Polymorphisms\r\n
    \r\n Concepción Núñez y José Antonio Garrote; en nombre del Grupo de Trabajo de “Inmunología y Genética” de la Sociedad Española de Enfermedad Celíaca (SEEC.Recomendaciones para la elaboración e interpretación de informes genéticos en enfermedad celíaca\r\n `\r\n },\r\n \"Sensación de saciedad\": {\r\n label: \"Saciedad\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos acorde a tu índice de saciedad y objetivo terapéutico.\r\n\r\n Tus genes indican que tu sensación de saciedad podría estar habitual, tus genes no te determinan, tus hábitos si.`,\r\n 1: \"\",\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos acorde a tu índice de saciedad y objetivo terapéutico.\r\n\r\n Tus genes indican que tu sensación de saciedad podría estar disminuida, tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `La saciedad es la sensación de estar “llenos” y determina el tiempo entre nuestras comidas: \"Comer-Volver a comer\". Esta sensación es la que nos indica cuándo “comimos lo suficiente” y debemos limitar la ingesta. Se regula muy finamente por señales neuroendocrinas.\r\n Puede aparecer precozmente, la saciedad temprana es tener la sensación de estar lleno antes de lo normal o después de comer menos de lo usual, habitualmente está asociada a alguna patología del tracto gastrointestinal como úlceras y acidez.\r\n De modo contrario aquellas personas que poseen una variación genética en el gen FTO pueden presentar una sensación de saciedad post comida disminuida o retardada, “no se sienten llenos cuando ingirieron un volúmen suficiente como para estarlo” por lo cual tienden a consumir mayor cantidad de alimentos/ calorías para poder saciarse.\r\n

    \r\n Existe una escala de hambre-saciedad que va del 1 (hambre extrema) al 10 (saciedad extrema) \r\n ¿Vos ya conoces la tuya? ¿En qué punto de la escala “dejas de comer”?\r\n El punto ideal teórico es entre el 5-6\r\n
    \r\n
      \r\n
    1. Hambre extrema, famélica, sensación de debilidad y mareos. Es urgente alimentarte.
    2. \r\n
    3. Mucha hambre, con irritación, ansiedad, bajos niveles de energía, el estómago ruge mucho. Comerías cualquier cosa aun si no es de tu total agrado.
    4. \r\n
    5. Bastante hambre, hay incomodidad pero aguantas con algún rugido en el estómago.
    6. \r\n
    7. Un poco de hambre, pero bajo control, puedes esperar la próxima comida sin problemas.
    8. \r\n
    9. Neutral, sensación de satisfacción, ni sientes hambre ni saciedad.
    10. \r\n
    11. Saciedad, el estómago está lleno pero de forma agradable, aunque si quisieras podrías comer un poco más.
    12. \r\n
    13. Lleno y satisfecho, no quieres comer más porque sabes que te haría sentirte incómodo.
    14. \r\n
    15. Muy lleno, te sientes incómodo y ya no puedes comer más.
    16. \r\n
    17. Muy lleno y con malestar, el estómago está hinchado y empiezas a notar dolor y empacho
    18. \r\n
    19. Extremadamente lleno, te sientes mal con náuseas y ganas de vomitar.
    20. \r\n
    \r\n `,\r\n results: `El gen FTO está involucrado en la regulación de la ingesta dado que afecta la sensación de saciedad a nivel central, bloquea la señal de la leptina (“hormona de la saciedad”). En las personas con sensación de saciedad disminuida presentan mayor consumo y frecuencia de alimentos totales, saludables y no saludables, influyendo sobre el peso corporal, perímetro abdominal, IMC y riesgo cardiovascular pudiendo asociarse con mayor riesgo de obesidad, diabetes y enfermedades cardiovasculares.`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu sensación de saciedad es la habitual, pero esto no significa que no puedas tener tendencia a un consumo aumentado de alimentos por otros motivos.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, sin embargo los hábitos de consumo se basan además en factores nutricionales, ambientales y socioculturales.
  • \r\n
  • Elegí ambientes luminosos, frescos y tranquilos para comer. Así registrarás mejor tus emociones y disfrutarás más de lo que comes.
  • \r\n
  • Como estrategia para el desarrollo de buenos hábitos en torno a la comida te sugerimos comer en plato y no desde la fuente, no llevar la fuente de alimento a la mesa , elegir plato de postre que es más pequeño que el playo si necesitarás reducir tus porciones. Llenar el plato dejando los bordes libres, frezar las porciones extra que hayas preparado, evitar comer con el celular, tablet o tele para tener registro de la porción de alimento que consumís, apoyar los cubiertos en la mesa entre bocado y bocado.
  • \r\n
  • Planifica tus comidas distribuyendo los alimentos en 4 comidas principales y, de ser necesario, 2 colaciones para poder moderar el tamaño de las porciones.
  • \r\n
  • Si bien tu saciedad podría estar en los niveles habituales, los alimentos más saciantes son muy ricos en nutrientes, como las proteínas de carnes, huevos, legumbres y lácteos o la fibra en las frutas y verduras.
  • \r\n
  • Preferí siempre alimentos nutritivos y saciantes antes que aquellos con elevados niveles de azúcar y grasa. Somos un cerebro ancestral en un mundo ultra procesado!
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que tu sensación de saciedad está disminuida, pero esto no significa que tengas tendencia a un consumo aumentado de alimentos.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, sin embargo los hábitos de consumo se basan además en factores nutricionales, ambientales y socioculturales.
  • \r\n
  • Existen estrategias que te permitan controlar la porción de alimentos que consumís como: comer en plato y no desde la fuente, no llevar la fuente de alimento a la mesa ,elegir plato de postre que es más pequeño que el playo si necesitarás reducir tus porciones. Llenar el plato dejando los bordes libres, frezar las porciones extra que hayas preparado, evitar comer con el celular, tablet o tele para tener registro de la porción de alimento que consumís, apoyar los cubiertos en la mesa entre bocado y bocado.
  • \r\n
  • Evita lugares muy estimulantes, con música fuerte, muy oscuros o con muchas personas. Elegí ambientes luminosos, frescos y tranquilos para comer.
  • \r\n
  • Planifica tus comidas distribuyendo los alimentos en 4 comidas principales y, de ser necesario, 2 colaciones para poder moderar el tamaño de las porciones.
  • \r\n
  • Para lograr mayor saciedad elegí alimentos con alto contenido proteico y fibra. Las proteínas las encontrarás en carnes, huevos, legumbres y lácteos mientras que la fibra principalmente en las frutas y verduras. Al consumirlas crudas o con cáscara añadís mayor dificultad masticatoria y eso favorece a que puedas sentir mayor saciedad. Recordá lavarlas muy bien antes.
  • \r\n
  • Evita consumir alimentos adictivos y de fácil consumo como caramelos, gomitas, snacks, galletitas. Somos un cerebro ancestral en un mundo ultra procesado!
  • \r\n `,\r\n },\r\n bibliography: `\r\n WARDLE, Jane, et al. Obesity associated genetic variation in FTO is associated with diminished satiety. The Journal of Clinical Endocrinology & Metabolism, 2008, vol. 93, no 9, p. 3640-3643.\r\n
    \r\n DEN HOED, Marcel, et al. Postprandial responses in hunger and satiety are associated with the rs9939609 single nucleotide polymorphism in FTO. The American journal of clinical nutrition, 2009, vol. 90, no 5, p. 1426-1432.\r\n
    \r\n MAGNO, Fernanda Cristina Carvalho Mattos, et al. Influence of FTO rs9939609 polymorphism on appetite, ghrelin, leptin, IL6, TNFα levels, and food intake of women with morbid obesity. Diabetes, metabolic syndrome and obesity: targets and therapy, 2018, vol. 11, p. 199.\r\n `\r\n },\r\n \"Tolerancia a la lactosa\": {\r\n label: \"Lactosa\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Tus genes indican que podrías presentar una tolerancia normal a la lactosa, aunque esto no lo determina. \r\n\r\n Esto te permite explicar una gran variedad de síntomas que se asocian a la falta de lactasa, para modificar tu dieta en consecuencia y mejorar tu calidad de vida.\r\n `,\r\n 1: \"\",\r\n 2: `Tus genes indican que podrías presentar una tolerancia disminuida a la lactosa, aunque esto no lo determina. \r\n\r\n Esto te permite explicar una gran variedad de síntomas que se asocian a la falta de lactasa, para modificar tu dieta en consecuencia y mejorar tu calidad de vida.\r\n `,\r\n },\r\n generalInfo: `La lactosa es un tipo de azúcar que se encuentra en la leche (de vaca, de cabra, de oveja, etc) y también en sus derivados como quesos, cremas, mantecas, etc. \r\n La lactosa es digerida en nuestro intestino por la enzima lactasa. La lactasa descompone la molécula de lactosa, en sus dos componentes: glucosa y galactosa, para que luego estos azúcares simples puedan ser absorbidos por la pared intestinal y pasar al torrente sanguíneo. \r\n Para poder digerir este azúcar el cuerpo humano necesita producir lactasa.\r\n Cuando una persona es intolerante a la lactosa en realidad significa que su cuerpo no produce la lactasa suficiente.\r\n En más del 50% de los casos la causa es genética, al finalizar el periodo de lactancia (destete) nuestro cuerpo pierde progresivamente la capacidad de producción de la lactasa. Somos la única especie animal que sigue consumiendo leche de otra especie luego de este periodo.\r\n

    \r\n Un poco de historia, en la antigüedad, ante la dificultad de obtener alimentos, la leche era un recurso preciado por sus propiedades nutricionales y aporte proteico, razón por la cual era consumida a diario por los pueblos ganaderos. Aquellos que la digerían mejor tenían una mutación genética localizada en el gen que hacía que la producción de la lactasa no se “desactivase” después de la infancia, en concreto se trata del SNP C/T 13910 (rs4988235) y, evidentemente, estos, mejor adaptados al medio, eran los que más sobrevivían y cuya mutación en el gen pasaba a sus hijos.\r\n
    \r\n Síntomas de intolerancia:\r\n
  • Al quedar parcialmente digerida la lactosa en tu intestino las personas con intolerancia presentan síntomas intestinales derivados de la fermentación de la lactasa por las bacterias intestinales tales como: dolor abdominal, sensación de pesadez, gases, retortijones, distensión abdominal y diarrea.
  • \r\n
  • Existen diferentes grados de intolerancia, por lo que hay personas que tras consumir mínimas cantidades de leche presentan síntomas y otras sin embargo necesitan grandes cantidades para notar esos síntomas de intolerancia.
  • \r\n `,\r\n results: `El gen MCM6, ayuda a controlar la actividad del gen de la lactasa (gen LCT). La intolerancia a la lactosa en la adultez es causada por la expresión gradualmente decreciente del gen LCT luego de la infancia, que ocurre en la mayoría de los humanos.`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tenés baja posibilidad de presentar intolerancia a la lactosa, pero esto no significa que no puedas desarrollarla.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero la reacción de tu cuerpo a la lactosa también se modifica por el ambiente y otros factores.
  • \r\n
  • Nuestro cuerpo digiere la lactosa a través de una sustancia (enzima lactasa) que se produce a “demanda”, si habitualmente no consumís lacteos y los incorporaras repentinamente podrías tener alguna dificultad en su digestión, esto no significa que seas intolerante.
  • \r\n
  • Si por hábito no incorporaras leche a tu dieta, el calcio está presente también en tofu (queso vegetariano), semillas (sésamo, girasol), fruta seca (avellana, almendras), cereales (amaranto, quinoa y avena), y vegetales (coles, radicheta, garbanzos), aunque por absorberse distinto que las fuentes animales en algunos casos podrías requerir suplementación supervisada.
  • \r\n
  • Para más información podés consultar a un médico clínico o nutricionista.
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que tenés posibilidad de presentar intolerancia a la lactosa, pero esto no significa que vayas a desarrollarla.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero la reacción de tu cuerpo a la lactosa también se modifica por el ambiente y otros factores.
  • \r\n
  • Si tenés síntomas gastrointestinales, aunque sean inespecíficos y no se relacionen con ingesta de lácteos, consultá con tu médico para confirmar/descartar el diagnóstico.
  • \r\n
  • Si fueras intolerante, para aliviar los síntomas descritos hasta tanto consultes a tú médico te recomendamos: alimentos a temperaturas templadas, preparaciones sólidas en lugar de líquidas, comer volúmenes pequeños y frecuentemente.
  • \r\n
  • Si necesitaras eliminar la lactosa de tu dieta, además de encontrarse en la leche y sus derivados (queso y yogur) está presente en: chocolate con leche, panes lacteados, helados a la crema, postres, preparaciones y salsas a base de leche.
  • \r\n
  • Si tenés dudas, hasta tanto confirmes tu intolerancia, los lácteos que podés consumir de forma segura son los deslactosados.
  • \r\n
  • La lactosa se encuentra como aditivo en la industria alimenticia, en las etiquetas la encontras como: monohidrato de lactosa, suero de leche y cuajo.
  • \r\n
  • La celiaquía y la enfermedad de Crohn producen una “símil intolerancia a la lactosa” (intolerancia secundaria). Es importante que tu médico lo diagnostique para instaurar el tratamiento correcto.
  • \r\n
  • Existen varios niveles de intolerancia. Los menos intolerantes pueden consumir quesos madurados y leches fermentadas, solo hay que hacer una correcta selección con tu médico o nutricionista.
  • \r\n
  • Si debieras eliminar la leche y derivados de tu dieta, el calcio está presente también en tofu (queso vegetariano), semillas (sésamo, girasol), fruta seca (avellana, almendras), cereales (amaranto, quinoa y avena), y vegetales (coles, radicheta, garbanzos), aunque por absorberse distinto que las fuentes animales en algunos casos podría requerir suplementación supervisada.
  • \r\n `,\r\n },\r\n bibliography: `Nana Yaa Baffour-Awuah* , Sarah Fleet* , Susan S. Baker, Johannah L. Butler, Catarina Campbell, Samuel Tischfield, Paul D. Mitchell, Jennifer E. Moon, Sophie Allende-Richter, Laurie Fishman, Athos Bousvaros, Victor Fox, Mikko Kuokkanen, Robert K. Montgomery, Richard J. Grand, and Joel N. Hirschhorn.Functional Significance of Single Nucleotide Polymorphisms in the Lactase Gene in Diverse United States Subjects and Evidence for a Novel Lactase Persistence Allele at -13909 in Those of European Ancestry`\r\n },\r\n \"Sensibilidad a la cafeína\": {\r\n label: \"Cafeína\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento la cafeína, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\r\n\r\n Tus genes indican que podrías metabolizar la cafeína de forma rápida, aunque esto no lo determina.`,\r\n 1: \"\",\r\n 2: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento la cafeína, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\r\n\r\n Tus genes indican que podrías metabolizar la cafeína de forma lenta, aunque esto no lo determina.`,\r\n },\r\n generalInfo: `\r\n La cafeína es una sustancia de sabor amargo que está naturalmente presente en las semillas, frutos secos u hojas de más de 60 variedades de plantas. Las de la familia Coffea (café) o Theaceae (té), el cacao, guaraná, y la yerba mate.\r\n El principal mecanismo de acción de la cafeína es como agente estimulante del sistema nervioso central (SNC), aunque además se han observado efectos a nivel muscular y cardiovascular.\r\n

    \r\n Su principal uso es como estimulante del sistema nervioso para disminuir la somnolencia. Se recomienda idealmente iniciar su consumo luego de 90 minutos de despertarnos ya que por la mañana naturalmente nuestro cuerpo experimenta un aumento de cortisol (CAR, respuesta al despertar del cortisol), hormona que nos permite estar alertas y despiertos. Si durante este pico consumimos cafeína disminuimos el efecto de ambos, el de la cafeína y el del cortisol. \r\n

    \r\n La cantidad de cafeína recomendada por día es de hasta 400 mg (4 tazas diarias), pero no todas las personas reaccionan igual frente a esa dosis de cafeína. El exceso de esta sustancia puede producir en algunos individuos, insomnio, nerviosismo, malestar estomacal, aumento de la frecuencia cardiaca y/o temblores musculares.\r\n

    \r\n En metabolizadores lentos se relaciona el consumo de cafeína con aumento del riesgo de infarto agudo de miocardio (IAM). \r\n `,\r\n results: `El gen CYP1A2 codifica el citocromo P4501A2, una enzima responsable del 95% del metabolismo de la cafeína. La variante rs762551 en este gen afecta la velocidad de metabolización de la cafeína.`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu metabolismo de la cafeína es más rápido, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es menor.
  • \r\n
  • Aunque es poco probable que presentes síntomas, la cantidad de cafeína recomendada por día es de hasta 400 mg, que equivale a 4 tazas de café.
  • \r\n
  • Otras bebidas que contienen cafeína son el té (verde y negro), las que contienen cacao y las bebidas cola (una taza tiene la mitad de cafeína que una taza de café, aproximadamente 50 mg).
  • \r\n
  • Los tipos de café que más cafeína poseen son los de filtro y expreso, mientras que el instantáneo y descafeinado son los que menos cantidad poseen.
  • \r\n
  • En caso de presentar síntomas, evitá las bebidas cafeinadas luego del mediodía, y reducí el consumo total diario de cafeína a menos de 200 mg/día (2 tazas). Si continuas con estos síntomas luego de reducir la dosis, considerá eliminarla.
  • \r\n
  • El café es un poderoso antioxidante ayudando a frenar el envejecimiento celular, aunque metabolices la cafeína más rápido que otras personas igual gozas de estos beneficios.
  • \r\n
  • Si las bebidas cafeinadas no fueran de tu preferencia, las moras, frambuesas y ananá son las frutas con una capacidad antioxidante similar al café.
  • \r\n
  • Puede tener efecto diurético y/o laxante, como tu organismo la metaboliza rápidamente es poco probable que presentes estos signos al consumirla.
  • \r\n
  • La cafeína atraviesa la placenta. Si estás embarazada o planeas estarlo considerá que la dosis recomendada es de 200 mg /día, lo que equivale a 2 tazas diarias.
  • \r\n
  • Para más información consultá a tu médico o nutricionista.
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que tu metabolismo de la cafeína es más lento, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es mayor que la media de la población.
  • \r\n
  • Se recomienda consumir hasta 400mg de cafeína por día, que equivale a 4 tazas de café.
  • \r\n
  • Otras bebidas que contienen cafeína son el té (verde y negro), las que contienen cacao y las bebidas cola (una taza tiene la mitad de cafeína que una taza de café, aproximadamente 50 mg).
  • \r\n
  • Los tipos de café que más cafeína poseen son los de filtro y expreso, mientras que el instantáneo y descafeinado son los que menos cantidad poseen.
  • \r\n
  • En caso de presentar síntomas, evitá las bebidas cafeinadas luego del mediodía, y reducí el consumo total diario de cafeína a menos de 200 mg/día (2 tazas). Si continuas con estos síntomas luego de reducir la dosis, considerá eliminarla.
  • \r\n
  • El café tiene sustancias antioxidantes y antiinflamatorias, pero si tenés factores de riesgo cardiovasculares o hipertensión arterial limita su consumo a 2 tazas diarias porque puede producir un aumento transitorio de la presión arterial.
  • \r\n
  • Si tu colesterol LDL está elevado posiblemente el café filtrado sea el más apropiado. El papel de filtro retiene ciertas sustancias (diterpenos) presentes en el café que se asocian al aumento de colesterol.
  • \r\n
  • La cafeína aumenta la eliminación de calcio, pero si tu alimentación es equilibrada esto no representa un factor de riesgo importante para tu salud ósea.
  • \r\n
  • La cafeína atraviesa la placenta. Si estás embarazada o planeas estarlo considerá que la dosis recomendada es de 200 mg/día, lo que equivale a 2 tazas diarias.
  • \r\n\r\n `,\r\n },\r\n bibliography: `\r\n Djordjevic, N., Ghotbi, R., Jankovic, S., & Aklillu, E. (2010). Induction of CYP1A2 by heavy coffee consumption is associated with the CYP1A2 -163C>A polymorphism. European Journal of Clinical Pharmacology, 66(7), 697–703.\r\n
    \r\n Sachse, C., Brockmöller, J., Bauer, S., & Roots, I. (1999). Functional significance of a C→A polymorphism in intron 1 of the cytochrome P450 CYP1A2 gene tested with caffeine: Short report. British Journal of Clinical Pharmacology, 47(4), 445–449.\r\n `\r\n },\r\n \"Equilibrio depuración hepática\": {\r\n label: \"Depuración hepática\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `No presenta riego genético.`,\r\n 1: \"\",\r\n 2: `Conocer lo que dicen tus genes te permite modificar tu estilo de vida y hábitos alimentarios para mejorar la forma en la que tu cuerpo depura sustancias.\r\n\r\n Tus genes indican que algunos mecanismo de depuración hepática podrían estar disminuido, aunque esto no lo determina.`,\r\n },\r\n generalInfo: `Existen variantes en nuestros genes que pueden afectar, favoreciendo o protegiéndonos, a los riesgos específicos que un individuo tiene a desarrollar un problema de salud al exponerse a una sustancia química específica o xenobiótico. \r\n La respuesta que ese individuo tenga a determinada sustancia, está en estrecha relación con el proceso de detoxificación que su cuerpo lleve a cabo.\r\n Las diferencias genéticas entre los individuos pueden hacer a una persona de hasta 100 veces más susceptible a los efectos de una sustancia dada que a otro.\r\n Nuestro organismo cuenta con varias rutas de destoxificación, pero una de las principales ocurre en el hígado.\r\n El objetivo de esta vía es transformar los tóxicos solubles en agua a fin de poder eliminarlos principalmente por orina.\r\n Este proceso se desarrolla en dos etapas, la primera intervienen enzimas del citocromo P450 y en la segunda etapa distintas reacciones químicas donde se conjuga la sustancia tóxica con grupos solubles en agua.\r\n Síntomas de sobrecarga hepática a xenobióticos: \r\n

    \r\n
  • Malestar general, migraña, fatiga.
  • \r\n
  • Dolor articular, fiebre crónica
  • \r\n
  • Reacciones no deseadas a medicamentos habituales
  • \r\n
  • Reacciones adversas a la cafeína y al alcohol
  • \r\n
  • Neuropatías y trastornos del sueño
  • \r\n `,\r\n results: `EL CYP 450 es una superfamilia de enzimas que intervienen en el metabolismo de fármacos, carcinógenos, esteroides, ácidos grasos, pesticidas y alcaloides. Su función es la de metabolizar en primera instancia estas sustancias a través de reacciones de oxidorreducción, protegiéndonos del daño o estrés oxidativo que producirían en el resto del organismo si no fueran procesados.\r\n \r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `No hay recomendaciones.`,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que podrías presentar un desequilibrio en la actividad enzimática de alguna de las fases de destoxificacion, aunque esto no lo determina.
  • \r\n
  • Algunas sustancias derivadas de la cocción prolongada de la carne, como las acrilamidas y furanos (coloración marrón), aminas aromáticas (brasas), micotoxinas ( legumbres y fruta secas) y epóxidos de los plásticos, son metabolizadas por el hígado en dos fases, a su forma soluble para poder eliminarlas principalmente por orina.
  • \r\n
  • Si existiera un desequilibrio en estas fases dichas sustancias tenderían a acumularse. Para lograr un equilibrio y que tu cuerpo pueda deshacerse correctamente de estas sustancias:
  • \r\n
  • Evita recalentar la comida en envases plásticos o beber de botellas plásticas. Siempre preferí el vidrio o cerámica.
  • \r\n
  • Almacena la fruta seca y semillas en bolsa hermética en la heladera o frezzer, retirala tiempo antes de consumirla, así evitaras que se forme moho. Las micotoxinas están presentes naturalmente aunque no las veamos.
  • \r\n
  • Asegúrate de incluir diariamente vitaminas del complejo B ( cereales integrales, fruta seca y vegetales), minerales como magnesio, selenio y zinc, compuestos azufrados de brócoli, coliflor, col rizada, col de brusela, kale , ajo y cebolla. Germinados como brotes de soja o alfalfa.
  • \r\n \r\n
  • Es importante el consumo diario de antioxidantes como el resveratrol de uvas y frutos rojos, vitamina C y glutatión (espinacas, palta, esparrago, papa, brócoli y cítricos)
  • \r\n
  • Hidratate con agua potable frecuentemente
  • \r\n
  • Minimiza el consumo de azúcar, refinados, procesados, carne roja, café en exceso y alcohol.
  • \r\n `,\r\n },\r\n bibliography: `Arzu Gunes, Marja-Liisa Dahl.Variation in CYP1A2 activity and its clinical implications: Influence of environmental factors and genetic polymorphism.`\r\n },\r\n \"Niveles séricos de homocisteina\": {\r\n label: \"Homocisteína\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite saber si tenés predisposición a valores elevados de Homocisteína en sangre y modificar tus hábitos para evitar los efectos de su exceso.\r\n\r\n Tus genes indican que tus niveles de homocisteína en sangre podrían estar habituales, tus genes no te determinan, tus hábitos si.\r\n `,\r\n 1: `Conocer lo que dicen tus genes te permite saber si tenés predisposición a valores elevados de Homocisteína en sangre y modificar tus hábitos para evitar los efectos de su exceso.\r\n\r\n Tus genes indican que tus niveles de homocisteína en sangre podrían estar moderados, tus genes no te determinan, tus hábitos si.\r\n `,\r\n 2: `Conocer lo que dicen tus genes te permite saber si tenés predisposición a valores elevados de Homocisteína en sangre y modificar tus hábitos para evitar los efectos de su exceso.\r\n\r\n Tus genes indican que tus niveles de homocisteína en sangre podrían estar aumentados, tus genes no te determinan, tus hábitos si.\r\n `,\r\n },\r\n generalInfo: `La homocisteína es un aminoácido que en nuestro organismo participa en diferentes vías del metabolismo celular asociada a vitamina B12, vitamina B6 y ácido fólico. \r\n Normalmente, los niveles de este aminoácido libre en sangre son bajos, ya que es una molécula agresiva para la pared arterial y se considera un factor influyente en el desarrollo de enfermedades cardio y cerebrovasculares.\r\n La causa principal de exceso de homocisteína plasmática es el déficit de ácido fólico, aunque existen factores genéticos que contribuyen en un 60% a mayores niveles de este aminoácido en sangre.\r\n

    \r\n Factores de riesgo:\r\n
  • Deficiencia de vitaminas como folato, la vitamina B12 y, en menor medida, por la deficiencia de la vitamina B6 pueden aumentar los niveles de homocisteína en sangre.
  • \r\n
  • Además, también está influenciado por enfermedades crónicas, obesidad, hipotiroidismo y deterioro renal.
  • \r\n `,\r\n results: `La homocisteína se forma en nuestro organismo por varias vías, como producto intermedio del metabolismo de otro aminoácido, la metionina y a partir de la homocisteína por remetilación llevado a cabo por la enzima homocisteína metiltransferasa (MTR) la cual requiere de vitamina B12 y de 5, 10 -metilentetrahidrofolato para su correcto funcionamiento. \r\n El gen MTHFR codifica para la enzima Metilentetrahidrofolato reductasa. Esta enzima ayuda a descomponer la homocisteína en sangre. Si su actividad se encuentra alterada, aumentando el riesgo de tener niveles elevados de homocisteína en sangre sobre todo en personas que no incorporen vitamina B en su dieta.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que no tenés predisposición a presentar un aumento de homocisteína en plasma, pero esto no significa que no puedas desarrollarlo.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de homocisteína se modifican fundamentalmente por el ambiente y el estilo de vida.
  • \r\n
  • Los niveles de homocisteína pueden aumentar con la edad y por el déficit de vitamina B12, B6 o ácido fólico en la dieta, el consumo de alcohol, o el tabaquismo.
  • \r\n
  • Si sospechas que podés tener niveles de homocisteína fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Para mantener niveles saludables de homocisteína en plasma, llevá una dieta balanceada, con buen aporte de vitamina B12, B6 y ácido fólico.
  • \r\n
  • Más allá de tu predisposición genética siempre es saludable hacer ejercicio regularmente. Se recomiendan al menos 150 minutos de actividad física moderada o 75 minutos de actividad aeróbica vigorosa semanales.
  • \r\n
  • Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que tenés predisposición a presentar un leve aumento de homocisteína en plasma, pero esto no significa que vayas a desarrollarlo.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de homocisteína se modifican fundamentalmente por el ambiente y el estilo de vida.
  • \r\n
  • Los niveles de homocisteína pueden aumentar con la edad y por el déficit de vitamina B12, B6 o ácido fólico en la dieta, el consumo de alcohol, o el tabaquismo.
  • \r\n
  • Si sospechas que podés tener niveles de homocisteína fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Para mantener niveles saludables de homocisteína en plasma, llevá una dieta balanceada, con buen aporte de vitamina B12, B6 y ácido fólico.
  • \r\n
  • Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso.
  • \r\n
  • Sin embargo, el consumo excesivo de carne, puede aumentar los niveles de Homocisteína. Se debe regular el consumo de carnes y tener una dieta balanceada, para ello, consultar con un nutricionista.
  • \r\n
  • En caso de no consumir productos de origen animal, se puede optar por la suplementación de ácido fólico y B12 para evitar deficiencias. Tu médico o nutricionista te indicará las dosis adecuadas basándose en tus requerimientos.
  • \r\n
  • Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).
  • \r\n
  • Si estás embarazada, o planificando un embarazo, consultá con tu obstetra. Es posible que indique realizar estudios adicionales, seguimiento o tratamiento específico.
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que tenés predisposición a presentar un aumento de homocisteína en plasma, pero esto no significa que vayas a desarrollarlo.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de homocisteína se modifican fundamentalmente por el ambiente y el estilo de vida.
  • \r\n
  • Los niveles de homocisteína pueden aumentar con la edad y por el déficit de vitamina B12, B6 o ácido fólico en la dieta, el consumo de alcohol, o el tabaquismo.
  • \r\n
  • Si sospechas que podés tener niveles de homocisteína fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Para mantener niveles saludables de homocisteína en plasma, llevá una dieta balanceada, con buen aporte de B12, B6 y ácido fólico.
  • \r\n
  • Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso.
  • \r\n
  • Sin embargo, el consumo excesivo de carne, puede aumentar los niveles de Homocisteína. Se debe regular el consumo de carnes y tener una dieta balanceada, para ello, consultar con un nutricionista.
  • \r\n
  • En caso de no consumir productos de origen animal, se puede optar por la suplementación de ácido fólico y B12 para evitar deficiencias. Tu médico o nutricionista te indicará las dosis adecuadas basándose en tus requerimientos.
  • \r\n
  • Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).
  • \r\n
  • Si estás embarazada, o planificando un embarazo, consultá con tu obstetra. Es posible que indique realizar estudios adicionales, seguimiento o tratamiento específico.
  • \r\n `,\r\n },\r\n bibliography: `\r\n Meta-analysis study to evaluate the association of MTHFR C677T polymorphism with risk of ischemic stroke (nih.gov)\t\r\n
    \r\n Sci-Hub | Effect of homocysteine on pregnancy: A systematic review. Chemico-Biological Interactions, 293, 70–76 | 10.1016/j.cbi.2018.07.021\r\n Common genetic loci influencing plasma homocysteine concentrations and their effect on risk of coronary artery disease (nih.gov)\r\n `\r\n },\r\n \"Actividad antioxidante\": {\r\n label: \"Antioxidante\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y estilo de vida acorde a tu metabolismo para minimizar los efectos del estrés oxidativo.\r\n\r\n Tus genes indican que tu estado antioxidante podría ser el habitual, aunque tus genes no te determinan, tus hábitos si.`,\r\n 1: \"\",\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y estilo de vida acorde a tu metabolismo para minimizar los efectos del estrés oxidativo.\r\n\r\n Tus genes indican que tu estado antioxidante podría estar disminuido, aunque tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `Los radicales libres se pueden formar a partir de muchas moléculas, pero los derivados de la molécula del oxígeno son los que tienen mayor importancia en nuestro organismo.\r\n Hemos diseñado estrategias genéticas para defendernos de las agresiones de los radicales libres generados naturalmente del metabolismo celular aerobio.\r\n Se trata de las enzimas que fomentan su inactivación y eliminación, como la superóxido dismutasa (SOD), la catalasa, y la glutatión peroxidasa, entre otras. \r\n Hay otras moléculas que existen en nuestro organismo protegiéndonos del estrés oxidativo, como la ceruloplasmina, las vitaminas antioxidantes, los betacarotenos, la cisteína, y las sustancias que actúan como agonistas del glutatión.\r\n

    \r\n Signos y síntomas:\r\n
  • Cuando el equilibrio de oxidantes/antioxidantes se altera y no podemos deshacernos de forma efectiva de los radicales libres padecemos envejecimiento prematuro y aumenta el riesgo de numerosas enfermedades como cardiovasculares, neurológicas, degenerativas y ciertos tipos de cáncer.
  • \r\n `,\r\n results: \"El gen SOD2 codifica para la enzima superóxido dismutasa, que cataliza la dismutación de superóxido en oxígeno y peróxido de hidrógeno.​ Debido a esto es una importante defensa antioxidante en la mayoría de las células expuestas al oxígeno.\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu estado antioxidante podría ser el habitual, aunque esto no lo determina.
  • \r\n
  • Esta es una predisposición que te acompañará siempre, pero tu estado antioxidante depende de varias moléculas y del estilo de vida que lleves.
  • \r\n
  • Podés beneficiarte del consumo habitual de antioxidantes. Los antioxidantes son sustancias presentes en algunos alimentos que pueden beneficiarte previniendo o retrasando el daño que los radicales libres de oxígeno le generan a nuestras células.
  • \r\n
  • Consumí diariamente alimentos ricos en vitamina A, C y E.
  • \r\n
  • La vitamina A la encontrás en frutas y verduras como : espinacas, zanahorias, brócoli, calabaza, batata. Las frutas que la contienen son por ejemplo el melón y el mango.
  • \r\n
  • En los productos de origen animal encontrás vitamina A en leche y quesos.
  • \r\n
  • La vitamina C está presente en las naranjas, arándanos, moras, pomelo, pimientos, kiwi, brócoli, melón, tomate, frutillas.
  • \r\n
  • La vitamina E la encontrás en aceites (preferentemente oliva) y semillas y frutas secas tales como semillas de girasol, almendras, avellanas, maní así como también en algunas hortalizas verdes.
  • \r\n
  • El oligoelemento selenio también es un poderoso antioxidante ya que ayuda a la formación de enzimas antioxidantes de nuestro organismo. Lo encontrás en: girasol, sésamo, nueces de brasil, arroz integral, coco, avena y cereales integrales, y pescados y mariscos.
  • \r\n
  • El licopeno y luteína son pigmentos (rojo y amarillo respectivamente) relacionados con los betacarotenos con poderosa función antioxidante. El licopeno está presente preferentemente en el tomate y la luteína en algunos vegetales como kale, palta,acelga, apio, espárrago, repollo brusela, nabos.
  • \r\n
  • También podés utilizar diariamente especias y condimentos con función antioxidante: canela, cúrcuma, tomillo, menta, romero, jengibre.
  • \r\n
  • Preferí lácteos fermentados, kéfir de leche, yogur y queso de leche de oveja, cabra y búfala.
  • \r\n
  • Las infusiones son una buena y fácil opción para el consumo de antioxidantes, preferí los té de arándanos, matcha o té verde, té de rooibos, yerba mate.
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que tu estado antioxidante podría estar disminuido y tu cuerpo podría no estar deshaciéndose correctamente de los radicales libres de oxígeno que se producen como producto del metabolismo celular.
  • \r\n
  • Esta es una predisposición que te acompañará siempre, pero tu estado antioxidante depende de varias moléculas y del estilo de vida que lleves.
  • \r\n
  • Los antioxidantes son sustancias presentes en algunos alimentos que pueden beneficiarte previniendo o retrasando el daño que los radicales libres de oxígeno le generan a nuestras células.
  • \r\n
  • Consumí diariamente alimentos ricos en vitamina A, C y E.
  • \r\n
  • La vitamina A la encontrás en frutas y verduras como : espinacas, zanahorias, brócoli, calabaza, batata. Las frutas que la contienen son por ejemplo el melón y el mango.
  • \r\n
  • En los productos de origen animal encontrás vitamina A en leche y quesos.
  • \r\n
  • La vitamina C está presente en las naranjas, arándanos, moras, pomelo, pimientos, kiwi, brócoli, melón, tomate, frutillas.
  • \r\n
  • Preferi el maiz morado al amarillo, es el mas rico en antocianinas.
  • \r\n
  • La vitamina E la encontrás en aceites ( preferentemente oliva) y semillas y frutas secas tales como semillas de girasol, almendras, avellanas, maní así como también en algunas hortalizas verdes.
  • \r\n
  • El oligoelemento selenio también es un poderoso antioxidante ya que ayuda a la formación de enzimas antioxidantes de nuestro organismo. Lo encontrás en: girasol, sésamo, nueces de brasil, arroz integral, coco, avena y cereales integrales, y pescados y mariscos.
  • \r\n
  • El licopeno y luteína son pigmentos (rojo y amarillo respectivamente) relacionados con los betacarotenos con poderosa función antioxidante. El licopeno está presente preferentemente en el tomate y la luteína en algunos vegetales como kale, palta,acelga, apio, espárrago, repollo brusela, nabos.
  • \r\n
  • También podés utilizar diariamente especias y condimentos con función antioxidante: canela, cúrcuma, tomillo, menta, romero, jengibre. La curcuma se activa con la pimienta, úsalas juntas!
  • \r\n
  • Las infusiones son una buena y fácil opción para el consumo de antioxidantes, preferí los té de arándanos, matcha o té verde, té de rooibos, yerba mate.
  • \r\n
  • Si te gusta el chocolate, selecciona aquellos de calidad !
  • \r\n
  • Preferí lácteos fermentados, kéfir de leche, yogur y queso de leche de oveja, cabra y búfala.
  • \r\n
  • Preferí siempre actividades al aire libre, el entrenamiento incluye descansar,evita ultraprocesados, chequea los niveles de tus vitaminas. Lleva un estilo de vida anti inflamatorio.
  • \r\n `,\r\n },\r\n bibliography: `Zhi Xu, MD, PhD ; Haixia Zhu, MD ; John M. Luk.Clinical Significance of SOD2 and GSTP1 Gene Polymorphisms in Chinese Patients With Gastric Cancer`\r\n },\r\n \"Sensibilidad a la sal\": {\r\n label: \"Sal\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite saber tu grado de sensibilidad a la sal, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\r\n Tus genes indican que podrías presentar una sensibilidad habitual a la sal, tus genes no te determinan, tus hábitos si. `,\r\n 1: `Conocer lo que dicen tus genes te permite saber tu grado de sensibilidad a la sal, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\r\n Tus genes indican que podrías presentar una sensibilidad moderada a la sal, tus genes no te determinan, tus hábitos si. `,\r\n 2: `Conocer lo que dicen tus genes te permite saber tu grado de sensibilidad a la sal, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\r\n Tus genes indican que podrías presentar una sensibilidad aumentada a la sal, tus genes no te determinan, tus hábitos si. `,\r\n },\r\n generalInfo: `La sal común es un mineral esencial para la vida. Su nombre científico es cloruro sódico porque está constituida por iones de sodio y cloruro cristalizados. El sodio es imprescindible para el correcto funcionamiento del sistema nervioso, el sistema muscular y la homeostasis, es decir, la regulación de los líquidos dentro de nuestras células. El sodio, además, es el responsable del sabor salado.\r\n Además de su uso culinario, desde la antigüedad se usa como conservante por su capacidad de absorber la humedad (agua) reduciendo el crecimiento microbiano.\r\n

    \r\n En encontrar la justa medida y tener acceso a las versiones más saludables y ricas en minerales está el desafío. \r\n `,\r\n results: `El gen ACE contiene la información para producir la enzima convertidora de angiotensina I. \r\n Se produce en el sistema nervioso central, riñón y pulmón. Convierte la angiotensina I en angiotensina II, que incrementa la vasoconstricción, interviniendo de esta forma en la regulación de la presión arterial\r\n El alelo I (inserción) está asociado con una menor producción de la enzima otorgando mayor sensibilidad a la hipertensión por consumo de sal.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que la actividad de la enzima ACE es la habitual, lo que significa que tu sensibilidad a la sal y sus efectos hipertensivos son similares a cualquier individuo, pero esto no quiere decir que sea así ya que interfieren otros factores.
  • \r\n
  • De todos modos, no te confíes, la presión arterial responde no solo a nuestros genes sino a nuestro estilo de vida y alimentación. Mantené un peso saludable. No fumes
  • \r\n
  • Hacé ejercicio regularmente. Se recomiendan al menos 150 minutos de actividad física moderada o 75 minutos de actividad aeróbica vigorosa semanales.
  • \r\n
  • Seguí una dieta saludable con alimentos ricos en calcio, potasio, magnesio y fibra, que al combinarse, ayudan a disminuir la presión arterial.
  • \r\n
  • Hacete controles de rutina que incluyan medición de la presión arterial. Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).
  • \r\n
  • Evita el consumo diario de alimentos ricos en sodio. El sodio está presente en cantidades muy elevadas en salsas y productos untables, enlatados, conservas, fiambres y quesos duros
  • \r\n
  • El consumo de sal recomendado por la OMS es de 5gr de sal/día, es decir 1 cucharadita de café al ras distribuida a lo largo del día.
  • \r\n
  • Si ya tenés HTA, es importante prevenir que empeore o que cause complicaciones. Controlate con tu médico periódicamente y seguí tu plan de tratamiento incluyendo hábitos de vida saludables y, si está indicado, medicamentos.
  • \r\n
  • Para más información podés consultar a tu médico clínico.
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que la actividad de la enzima ACE es moderada, lo que significa que tu sensibilidad a la sal es moderada, pero esto no quiere decir que sea así.
  • \r\n
  • Mantené un peso saludable. No fumes
  • \r\n
  • Hacé ejercicio regularmente. Se recomiendan al menos 150 minutos de actividad física moderada o 75 minutos de actividad aeróbica vigorosa semanales.
  • \r\n
  • Seguí una dieta saludable con alimentos ricos en calcio, potasio, magnesio y fibra, que al combinarse, ayudan a disminuir la presión arterial.
  • \r\n
  • Hacete controles de rutina que incluyan medición de la presión arterial. Tené un registro de tu presión arterial realizando una correcta toma (piernas descruzadas, con la suela del pie tocando el piso, espalda contra el respaldo de la silla y el brazo a la altura del corazón).
  • \r\n
  • Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).
  • \r\n
  • Evita el consumo excesivo o diario de alimentos ricos en sodio. El sodio está presente en cantidades muy elevadas en salsas y productos untables, enlatados, conservas, fiambres y quesos duros
  • \r\n
  • Si ya tenés HTA, es importante prevenir que empeore o que cause complicaciones. Controlate con tu médico periódicamente y seguí tu plan de tratamiento incluyendo hábitos de vida saludables y, si está indicado, medicamentos.
  • \r\n
  • Para más información podés consultar a tu médico clínico.
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que la probabilidad de presentar menor ACE está aumentada, siendo más sensible a la sal y sus efectos hipertensivos, pero esto no quiere decir que sea así.
  • \r\n
  • Mantené un peso saludable. No fumes
  • \r\n
  • Hacé ejercicio regularmente. Se recomiendan al menos 150 minutos de actividad física moderada o 75 minutos de actividad aeróbica vigorosa semanales.
  • \r\n
  • Seguí una dieta saludable con alimentos ricos en calcio, potasio, magnesio y fibra, que al combinarse, ayudan a disminuir la presión arterial.
  • \r\n
  • Hacete controles de rutina que incluyan medición de la presión arterial.
  • \r\n
  • Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).
  • \r\n
  • Evita el consumo excesivo o a diario de alimentos ricos en sodio. El sodio está presente en cantidades muy elevadas en salsas y productos untables, panes, sopas cremas, enlatados, conservas, fiambres y quesos duros.
  • \r\n
  • Como estrategia podes lavar las legumbres o atún enlatado a fin de quitarle el exceso de sodio. Ponelo en un colador bajo el chorro de agua y dejalo correr unos minutos.
  • \r\n
  • Elegí productos que digan sin sal/sodio o muy bajo en sodio.
  • \r\n
  • Nuestro paladar puede reeducarse, reemplaza la sal de mesa por otros condimentos que le den sazón, como pimienta y ajo en polvo, cebolla, albahaca, cilantro y comino.
  • \r\n
  • Si ya tenés HTA, es importante prevenir que empeore o que cause complicaciones. Controlate con tu médico periódicamente y seguí tu plan de tratamiento incluyendo hábitos de vida saludables y, si está indicado, medicamentos.
  • \r\n
  • Para más información podés consultar a tu médico clínico.
  • \r\n `,\r\n },\r\n bibliography: `Esteban Poch, Daniel González, Vicente Giner, Ernesto Bragulat, Antonio Coca, Alejandro de la Sierr.Molecular Basis of Salt Sensitivity in Human Hypertension Evaluation of Renin-Angiotensin-Aldosterone System Gene Polymorphism`\r\n },\r\n \"Respuesta al alcohol\": {\r\n label: \"Alcohol\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento el alcohol, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\r\n\r\n Tus genes indican que tu metabolismo del alcohol sería habitual, aunque esto no lo determina.`,\r\n 1: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento el alcohol, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\r\n\r\n Tus genes indican que tu metabolismo del alcohol sería intermedio, aunque esto no lo determina.`,\r\n 2: `Conocer lo que dicen tus genes te permite saber si metabolizás rápido o lento el alcohol, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\r\n\r\n Tus genes indican que tu metabolismo del alcohol sería acelerado, aunque esto no lo determina.`,\r\n },\r\n generalInfo: `El alcohol es una sustancia que, al ser incorporada, sufre distintas reacciones químicas en nuestro organismo, generando metabolitos intermedios, como el acetaldehído, responsable de afectar a nuestro cuerpo. \r\n En algunos individuos debido a su genética, esta oxidación del alcohol puede ser más rápida o más lenta. Si es más rápida tenderán a acumular más fácilmente acetaldehído en los tejidos.\r\n

    \r\n El acetaldehído tiene efectos deletéreos en el cuerpo, por esta razón las personas con metabolismo rápido a diferencia de las de metabolismo lento tienen menos tolerancia al alcohol, sufren resacas más fuertes y frecuentes y tienen un menor riesgo de dependencia del alcohol.\r\n Con el tiempo, el consumo excesivo de alcohol puede causar enfermedades crónicas, entre ellas. hipertensión arterial, enfermedad cardiaca, accidentes cerebrovasculares, enfermedad del hígado y problemas digestivos. Cáncer de mama, boca, garganta, laringe, esófago, hígado, colon y recto.\r\n

    \r\n Conocer tus genes permite conocer tu velocidad de metabolismo del alcohol, y adecuar tu consumo para evitar los efectos secundarios de su exceso.\r\n

    \r\n El alcohol produce en nuestro organismo:\r\n
  • Enrojecimiento e incrementos de temperatura en la piel por vasodilatación
  • \r\n
  • Ojos enrojecidos, dolor de cabeza
  • \r\n
  • Sed y aumento de la micción
  • \r\n
  • Náuseas
  • \r\n
  • Aumento del ritmo cardíaco (taquicardia) y respiratorio
  • \r\n `,\r\n results: `El gen ADH1B contiene la información para producir la enzima Alcohol deshidrogenasa 1B (ADH1B) en nuestro hígado.\r\n Esta enzima cataliza la conversión de alcohol a acetaldehído. \r\n Se ha observado una asociación entre la presencia del SNP rs1229984 (ADH2*2) en el gen que codifica para esta enzima y el desarrollo de dependencia al alcohol.`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu metabolismo del alcohol está dentro de límites normales, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es menor.
  • \r\n
  • Es probable que no sientas aversión por el alcohol y no presentes resacas luego de su consumo.
  • \r\n
  • Aunque tu metabolismo sea normal, el consumo excesivo de alcohol puede aumentar el riesgo de tener problemas de salud graves.
  • \r\n
  • Si bebes alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados).
  • \r\n
  • Recordá que el alcohol aporta energía( calorías) pero son “ vacías”, es decir que no tiene ningún nutriente necesario para el organismo.
  • \r\n
  • En ciertas situaciones, los riesgos del alcohol pueden ser mayores. Evitá especialmente el alcohol si estás embarazada, si tuviste un accidente cerebrovascular ó tenés una enfermedad hepática, pancreática o cardiovascular.
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que tu metabolismo del alcohol se encuentra ligeramente aumentado, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es mayor, pero no significa que si o si vayas a presentarlos.
  • \r\n
  • Si elegís beber alcohol, hacelo con moderación (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados)
  • \r\n
  • Si tenés factores de riesgo cardiovascular o hipertensión arterial limitá el consumo de alcohol.
  • \r\n
  • Recordá que el alcohol aporta energía( calorías) pero son “ vacías”, es decir que no tiene ningún nutriente necesario para el organismo.
  • \r\n
  • En ciertas situaciones, los riesgos del alcohol pueden ser mayores. Evitá especialmente el alcohol si estás embarazada, si tuviste un accidente cerebrovascular ó tenés una enfermedad hepática, pancreática o cardiovascular.
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que tu metabolismo del alcohol se encuentra aumentado, por lo que tu posibilidad de tener efectos adversos asociados a su consumo es mayor, pero no significa que si o si vayas a presentarlos.
  • \r\n
  • Es probable que presentes resacas fuertes y frecuentes luego de su consumo y hasta sientas aversión por el alcohol.
  • \r\n
  • Si elegís beber alcohol, hacelo con moderación en situaciones especiales (una bebida al día para las mujeres y dos bebidas al día para los hombres. Una bebida equivale a 350 ml de cerveza, 147 ml de vino o 44 ml de licor con graduación de 80 grados)
  • \r\n
  • Si tenés factores de riesgo cardiovascular o hipertensión arterial limitá el consumo de alcohol.
  • \r\n
  • En ciertas situaciones, los riesgos del alcohol pueden ser mayores. Evitá especialmente el alcohol si estás embarazada, si tuviste un accidente cerebrovascular ó tenés una enfermedad hepática, pancreática o cardiovascular.
  • \r\n `,\r\n },\r\n bibliography: `\r\n Raymond K. Walters, Renato Polimanti, Emma C. Johnson, Jeanette N. McClintick, Mark J. Adams, Amy E. Adkins,.Transancestral GWAS of alcohol dependence reveals common genetic underpinnings with psychiatric disorders. Published in final edited form as: Nat Neurosci. 2018 December ; 21(12): 1656–1669. doi:10.1038/s41593-018-0275-1\r\n `\r\n },\r\n \"Requerimiento de magnesio\": {\r\n label: \"Magnesio\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permitirá adecuar el consumo de este mineral para mantener los valores séricos dentro de los rangos de normalidad.\r\n\r\n Tus genes indican que podrías presentar niveles de magnesio habituales en sangre, tus genes no te determinan, tus hábitos si.`,\r\n 1: `Conocer lo que dicen tus genes te permitirá adecuar el consumo de este mineral para mantener los valores séricos dentro de los rangos de normalidad.\r\n\r\n Tus genes indican que podrías presentar niveles de magnesio altos en sangre, tus genes no te determinan, tus hábitos si.`,\r\n 2: `Conocer lo que dicen tus genes te permitirá adecuar el consumo de este mineral para mantener los valores séricos dentro de los rangos de normalidad.\r\n\r\n Tus genes indican que podrías presentar niveles de magnesio bajos en sangre, tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `El magnesio es un mineral esencial y el segundo electrolito más abundante de nuestro cuerpo. Interviene en más de 300 reacciones químicas en nuestro organismo.\r\n Es necesario en muchos procesos celulares, casi el 60% del magnesio del cuerpo está en los huesos, el 20% en músculo esquelético y otro 20% en tejido blando. Una pequeña fracción circula en nuestra sangre, cuya valoración se asocia con algunas enfermedades crónicas tales como diabetes, hipertensión y osteoporosis.\r\n

    \r\n Debido a la desmineralización de los suelos cada vez es más complejo poder cubrir su requerimiento solo con alimentos. Aunque la mayoría de las deficiencias se adquieren por una alimentación insuficiente, se ha demostrado que las concentraciones de magnesio séricas tienen un componente hereditario cercano a solo el 30%.\r\n

    \r\n Los niveles bajos de magnesio pueden causar:\r\n
  • Síntomas de deficiencia leve: Pérdida de apetito, náuseas, vómitos, fatiga, debilidad.
  • \r\n
  • Síntomas de deficiencia moderada: entumecimiento, hormigueo, contracciones musculares y calambres, convulsiones, cambios de personalidad, latidos cardíacos irregulares.
  • \r\n
  • Síntomas de deficiencia grave: bajo nivel de calcio en sangre (hipocalcemia), bajo nivel de potasio en la sangre (hipopotasemia).
  • \r\n

    \r\n Factores de riesgo:\r\n
    \r\n La falta de magnesio se puede presentar más frecuentemente en personas que consumen alcohol en exceso o en aquellas que presentan una absorción alterada, por ejemplo en algunas enfermedades gastrointestinales o cirugías que causen malabsorción (cirugía bariátrica entre otras), adultos mayores y personas que tengan diabetes tipo 2.\r\n `,\r\n results: `El gen ATP2B1 contiene la información para producir una enzima que depende de magnesio para producir ATP (energía celular) aprovechando la energía suministrada por gradientes de calcio.`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu concentración de magnesio en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.
  • \r\n
  • Si sospechás que podés tener niveles de magnesio fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Es probable que llevar una dieta variada sea suficiente para obtener los niveles de magnesio necesarios para tu cuerpo.
  • \r\n
  • Podés cubrir tus necesidades consumiendo diariamente cereales, legumbres y vegetales: medio plato playo de cereales + una cucharada chica de legumbres al día (o en su remplazo medio plato playo semanal) y un plato de verduras crudas y/o cocidas al día.
  • \r\n
  • Los alimentos con mayor contenido de magnesio son los cereales, legumbres, frutas secas, semillas y vegetales.
  • \r\n
  • Los vegetales donde predomina son los de color verde oscuro, como espinaca y acelga. Para conservar el magnesio del alimento, el mejor método de cocción es vapor, no hervido.
  • \r\n
  • Preferí consumir cereales en su versión integral, ya que el magnesio se encuentra en el germen y corteza del grano. Por ejemplo: arroz integral, germen de trigo, salvado de avena y panes integrales.
  • \r\n
  • Las legumbres donde predomina son las lentejas, garbanzos, porotos y judías verdes. También son excelentes fuentes: Almendras, dátiles y semillas de girasol. Para mejorar la absorción actívalas, dejándolas en remojo 2-4 horas mínimo antes de consumirlas.
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que en algún momento podrías presentar una concentración aumentada de magnesio en sangre, aunque esto no quiere decir que lo presentes.
  • \r\n
  • Es probable que llevar una dieta equilibrada sea suficiente para obtener los niveles de magnesio necesarios para tus músculos. Si deseas verificar tus niveles en sangre, se utilizan técnicas de laboratorio (hemograma), que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • A pesar de tener esta predisposición no dejes de consumir alimentos ricos en este mineral, el exceso de magnesio relacionado a la dieta es poco frecuente. El magnesio es neuroprotector, protege frente a la diabetes y enfermedades cardiovasculares, mejora el estado de ánimo y nuestro descanso.
  • \r\n
  • Los alimentos con mayor contenido de magnesio son los cereales, legumbres, frutas secas, semillas y vegetales.
  • \r\n
  • Preferí consumir cereales en su versión integral, ya que el magnesio se encuentra en el germen y corteza del grano. Por ejemplo: arroz integral, germen de trigo, salvado de avena y panes integrales.
  • \r\n
  • Las legumbres donde predomina son las lentejas, garbanzos, porotos y judías verdes. También son excelentes fuentes: Almendras, dátiles y semillas de girasol. Para mejorar la absorción actívalas, dejándolas en remojo 2-4 horas mínimo antes de consumirlas.
  • \r\n
  • Los vegetales donde predomina son los de color verde oscuro, como espinaca y acelga. Para conservar el magnesio del alimento, el mejor método de cocción es el vapor, no hervido.
  • \r\n
  • Para más información podés consultar a un médico clínico o nutricionista.
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que tus niveles de magnesio en sangre podrían encontrarse disminuidos, pero esto no significa que sea así. Es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Los alimentos con mayor contenido de magnesio son los cereales, legumbres, frutas secas, semillas y vegetales.
  • \r\n
  • Los niveles de magnesio mejoran consumiendo niveles suficientes de proteínas animales/vegetales, y vitamina. Esto lo lográs combinando los alimentos ricos en magnesio con carnes (vaca, pollo, pescado) tofu, seitán y lácteos (leche, queso, yogur).
  • \r\n
  • Preferí consumir cereales en su versión integral, ya que el magnesio se encuentra en el germen y corteza del grano. Por ejemplo: arroz integral, germen de trigo, salvado de avena y panes integrales.
  • \r\n
  • Las legumbres donde predomina son las lentejas, garbanzos, porotos y judías verdes. También son excelentes fuentes: Almendras, dátiles y semillas de girasol.
  • \r\n
  • Los vegetales donde predomina son los de color verde oscuro, como espinaca y acelga. Para conservar el magnesio del alimento, el mejor método de cocción es el vapor, no hervido.
  • \r\n
  • Las semillas donde predomina son las de girasol, zapallo y lino. Para mejorar la absorción actívalas, dejándolas en remojo 2-4 horas antes de consumirlas.
  • \r\n
  • Si sos celíaco, tenés deficiencia de B1 y B6 o enfermedades que se asocian con malabsorción intestinal o nefropatías (enfermedades del riñón) podes tener mayor probabilidad de tener magnesio bajo.
  • \r\n
  • Existen distintos tipos de suplementos de magnesio, los más recomendable son los orgánicos y quelados como por ejemplo: Bisglicinato, citrato, treonato, taurinato, malato, gluconato, aspartato. Cada “forma” tiene una indicación y dosis, para más información podés consultar a un médico clínico o nutricionista.
  • \r\n
  • Evita los suplementos inorgánicos como óxido, cloruro, carbonato y sulfato.
  • \r\n `,\r\n },\r\n bibliography: `Meyer, Tamra E., Germaine C. Verwoert, Shih-Jen Hwang, Nicole L. Glazer, Albert V. Smith, Frank J. A. van Rooij, Georg B. Ehret, et al. 2010. “Genome-Wide Association Studies of Serum Magnesium, Potassium, and Sodium Concentrations Identify Six Loci Influencing Serum Magnesium Levels.” PLoS Genetics 6 (8). https://doi.org/10.1371/journal.pgen.1001045.`\r\n },\r\n \"Requerimiento de vitamina B12\": {\r\n label: \"Vitamina B12\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B12 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\r\n\r\n Tus genes indican que tus niveles vitamina B12 en sangre podrían ser habituales, tus genes no te determinan, tus hábitos si.`,\r\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B12 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\r\n\r\n Tus genes indican que tus niveles vitamina B12 en sangre podrían estar aumentados, tus genes no te determinan, tus hábitos si.`,\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B12 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\r\n\r\n Tus genes indican que tus niveles vitamina B12 en sangre podrían estar disminuidos, tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `La vitamina B12 es una vitamina esencial, participa en la generación de nuevas moléculas de ADN y proteínas, la regulación de expresión de genes y las vías celulares para obtener energía celular. Participa también en la maduración de los glóbulos rojos de la sangre, y de otras células sanguíneas.\r\n No podemos sintetizar nuestra propia B12, por lo que la única manera de obtenerla es a partir de alimentos y a partir de la microbiota intestinal.\r\n La deficiencia de vitamina B12 ocurre cuando el cuerpo no recibe o no puede absorber la cantidad de vitamina que el cuerpo necesita.\r\n

    \r\n Signos y síntomas:\r\n Los niveles bajos de vitamina B12 pueden causar:\r\n
  • Anemia megaloblástica, debe ser diagnosticada por técnica de laboratorio.
  • \r\n
  • Pérdida del equilibrio, entumecimiento u hormigueo en brazos y piernas, alteración de la sensibilidad, disminución de la capacidad para sentir dolor, alteración en la forma de caminar o moverse, trastornos visuales, irritabilidad y depresión.
  • \r\n
  • Glositis (dolor y enrojecimiento de la lengua), úlceras en la boca.
  • \r\n
  • Malabsorción de algunos nutrientes.
  • \r\n\r\n `,\r\n results: `El gen CUBN codifica para el receptor encargado de la absorción de la vitamina B12 junto con el FI en el intestino. El gen TCN1 codifica para la proteína de unión a la vitamina B12, transcobalamina I o haptocorrina, facilita el ingreso de la vitamina a las células.`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu concentración de vitamina B12 en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B12 también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • Si sospechas que podés tener niveles de B12 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Es probable que el aporte de tu dieta de alimentos ricos en vitamina B12 sea suficiente para el correcto funcionamiento de tus procesos biológicos.
  • \r\n
  • Si estás embarazada o planeas estarlo te recomendamos mantener los niveles de esta vitamina en sus valores normales para el correcto desarrollo fetal. Consultá a tu médico si necesitas suplementación.
  • \r\n
  • Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso.
  • \r\n
  • Cubrimos nuestra necesidad diaria por ejemplo con 100 gr de carne + 1 taza de 250 ml de leche.
  • \r\n
  • Si sos vegetariano o vegano consultale a tu médico si necesitas suplementación, ya que la B12 está exclusivamente en alimentos de origen animal.
  • \r\n
  • Consumir antiácidos con regularidad (en caso de úlceras y gastritis) podría disminuir la absorción de esta vitamina. La B12 necesita un medio ácido para absorberse correctamente.
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que podrías presentar concentración aumentada de B12 en sangre, pero esto no quiere decir que las tengas.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B12 también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • En condiciones normales y llevando una dieta equilibrada, es poco probable presentar altos niveles de esta vitamina en sangre a causa de la dieta, su aumento se asocia al consumo de suplementos.
  • \r\n
  • Si sospechas que podés tener niveles de B12 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso. No los excluyas de tu alimentación sin supervisión hasta tanto no confirmes que los valores están aumentados
  • \r\n
  • Cubrimos nuestra necesidad diaria por ejemplo con 100 gr de carne + 1 taza de 250 ml de leche.
  • \r\n
  • La cantidad de cada vitamina que necesitas depende de la edad y el sexo. Otros factores, como el embarazo y la salud, también son importantes.
  • \r\n
  • Para más información podés consultar a un médico clínico o nutricionista.
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que tu concentración de vitamina B12 en sangre podría encontrarse disminuida, pero esto no significa que sea así.
  • \r\n
  • Si sospechas que podés tener niveles de B12 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Es probable que si consumís diariamente alimentos ricos en vitamina B12 obtengas la cantidad suficiente para el correcto funcionamiento de tus procesos biológicos.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B12 también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • Si estás embarazada o planeas estarlo te recomendamos mantener los niveles de esta vitamina en sus valores normales para el correcto desarrollo fetal. Consultá a tu médico si necesitas suplementación.
  • \r\n
  • Los alimentos con mayor contenido de B12 son: carnes rojas y blancas, vísceras, yema de huevo, leche y queso. Podés cubrir tu necesidad diaria por ejemplo con 100 gr de carne + 1 taza de 250 ml de leche.
  • \r\n
  • La B12 está exclusivamente en alimentos de origen animal, si sos vegetariano o vegano consultale a tu médico si necesitas suplementación.
  • \r\n
  • Consumir antiácidos con regularidad (en caso de úlceras y gastritis) podría disminuir la absorción de esta vitamina. La B12 necesita un medio ácido para absorberse correctamente.
  • \r\n
  • En algunas enfermedades que alteran la función intestinal (por ejemplo: celiaquía, enfermedad de Crohn) y deficiencias vitamínicas (por ejemplo: déficit de B6) los valores de esta vitamina pueden estar disminuidos.
  • \r\n
  • La B12 es muy sensible a la temperatura, las carnes y huevo se consideran la mejor opción para la adquisición de esta vitamina. Evita cocciones muy prolongadas y en piezas muy pequeñas, preferible mas tiempo de cocción a menor temperatura
  • \r\n `,\r\n },\r\n bibliography: `Surendran, S., A. Adaikalakoteswari, P. Saravanan, I. A. Shatwaan, J. A. Lovegrove, and K. S. Vimaleswaran. 2018. “An Update on Vitamin B12-Related Gene Polymorphisms and B12 Status.” Genes & Nutrition 13 (February): 2.`\r\n },\r\n \"Requerimiento de vitamina B6\": {\r\n label: \"Vitamina B6\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B6 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\r\n\r\n Tus genes indican que tus niveles vitamina B6 en sangre podrían estar habitual, tus genes no te determinan, tus hábitos si.`,\r\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B6 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\r\n\r\n Tus genes indican que tus niveles vitamina B 6 en sangre podrían estar aumentada, tus genes no te determinan, tus hábitos si.`,\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de vitamina B6 acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\r\n\r\n Tus genes indican que tus niveles vitamina B 6 en sangre podrían estar disminuida, tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `La vitamina B6 o piridoxina participa en la elaboración de neurotransmisores (sustancias que permiten a las neuronas comunicarse entre sí), la hemoglobina (transporta el oxígeno en la sangre) y componentes del sistema inmune como los anticuerpos. \r\n Además, participa en la obtención de energía a partir de los hidratos de carbono, especialmente en los músculos, incrementando el rendimiento muscular durante el ejercicio físico. La vitamina B6 también puede favorecer la pérdida de peso, ya que ayuda a que nuestro cuerpo obtenga energía a partir de las grasas acumuladas en el organismo. Otra función importante de esta vitamina es favorecer la absorción de magnesio, hierro y B12.\r\n

    \r\n Signos y síntomas:\r\n
  • El exceso de piridoxina, puede generar pérdida de control de los movimientos corporales.
  • \r\n
  • El déficit de piridoxina, puede provocar alteraciones del metabolismo de aminoácidos, convulsiones, debilidad, insomnio y alteraciones de la función inmune, entre otras.
  • \r\n `,\r\n results: `El gen NBPF3 codifica para una hormona asociada con la eliminación de la vitamina B6 del organismo.`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu concentración de vitamina B6 en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.
  • \r\n
  • Es probable que el aporte diario de alimentos ricos en B6 sea suficiente para tu correcta síntesis de proteínas y metabolismo de la energía.
  • \r\n
  • Si sospechas que podés tener niveles de B6 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Los alimentos con mayor contenido son: carnes (ave, pescado, cerdo), vísceras (hígado), cereales integrales y germen de trigo, frutas secas y semillas (girasol y avellanas), legumbres (garbanzos, lentejas) y vegetales (banana, espárragos, brócoli).
  • \r\n
  • Consumiendo alimentos de origen animal cubrimos nuestras necesidades diarias. Por ejemplo con: 100 gr de carne blanca (pollo o pescado) + 1 fruta chica por día.
  • \r\n
  • Consumiendo alimentos de origen vegetal cubrimos nuestras necesidades diarias. Por ejemplo con: 150 gr de verduras + 2 cucharadas soperas de legumbres + 1 fruta mediana.
  • \r\n
  • Esto es una predisposición que te acompañará toda la vida, pero los niveles de vitamina B6 también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • Para más información podés consultar a un médico clínico o nutricionista.
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que podrías presentar concentración aumentada de B6 en sangre, pero esto no quiere decir que los tengas.
  • \r\n
  • Es probable que llevar una dieta variada sea suficiente para tu correcta síntesis de proteínas y metabolismo de la energía.
  • \r\n
  • Si sospechas que podés tener niveles de B6 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B6 también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • Los niveles elevados de Vitamina B 6 por causa alimentaria son muy infrecuentes, no excluyas alimentos que sean fuente de esta vitamina. Es más común que se presenten al incluir suplementos o por la ingesta de algunos medicamentos.
  • \r\n
  • Los alimentos con mayor contenido son: carnes (ave, pescado, cerdo), vísceras (hígado), cereales integrales y germen de trigo, frutas secas y semillas (girasol y avellanas), legumbres (garbanzos, lentejas) y vegetales (banana, espárragos, brócoli).
  • \r\n
  • Consumiendo alimentos de origen animal cubrimos nuestras necesidades diarias. Por ejemplo con: 100 gr de carne blanca (pollo o pescado) + 1 fruta chica por día.
  • \r\n
  • Consumiendo alimentos de origen vegetal cubrimos nuestras necesidades diarias. Por ejemplo con: 150 gr de verduras + 2 cucharadas soperas de legumbres + 1 fruta mediana.
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que tu concentración de B6 en sangre podría encontrarse disminuida, pero esto no significa que sea así.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina B6 también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • Es probable que necesites agregar a tu dieta porciones extra de alimentos ricos en B6 o algún tipo de suplemento para asegurar la correcta síntesis de proteínas y metabolismo de la energía. Consultá a tu nutricionista para ajustar tu plan alimentario a esta predisposición genética.
  • \r\n
  • Si sospechas que podés tener niveles de vitamina B6 fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Los alimentos con mayor contenido son: carnes (ave, pescado, cerdo), vísceras (hígado), cereales integrales y germen de trigo, frutas secas y semillas (girasol y avellanas), legumbres (garbanzos, lentejas) y vegetales (banana, espárragos, brócoli).
  • \r\n
  • Consumiendo alimentos de origen animal cubrimos nuestras necesidades diarias. Por ejemplo con: 100 gr de carne blanca (pollo o pescado) + 1 fruta chica por día.
  • \r\n
  • Consumiendo alimentos de origen vegetal cubrimos nuestras necesidades diarias. Por ejemplo con: 150 gr de verduras + 2 cucharadas soperas de legumbres + 1 fruta mediana.
  • \r\n
  • Preferí la cocción por vapor u horno de tus alimentos y aleja el alcohol de tus comidas, así conseguirás que esta vitamina esté disponible para ser absorbida en tu organismo.
  • \r\n
  • Algunos anticonceptivos orales (estrógenos) pueden interferir con el metabolismo de esta vitamina disminuyendo su concentración. Para más información podés consultar a un médico clínico o nutricionista.
  • \r\n
  • La salud de tu intestino es crucial para la absorción de vitaminas, mantenerlo sano comiendo alimentos reales.
  • \r\n `,\r\n },\r\n bibliography: `Tanaka, Toshiko, Paul Scheet, Betti Giusti, Stefania Bandinelli, Maria Grazia Piras, Gianluca Usala, Sandra Lai, et al. 2009. “Genome-Wide Association Study of Vitamin B6, Vitamin B12, Folate, and Homocysteine Blood Concentrations.” American Journal of Human Genetics 84 (4): 477–82.`\r\n },\r\n \"Requerimiento de vitamina A\": {\r\n label: \"Vitamina A\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y suplementos de vitamina A acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\r\n Tus genes indican que podrías presentar niveles séricos de vitamina A habituales, tus genes no te determinan, tus hábitos si.`,\r\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y suplementos de vitamina A acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\r\n Tus genes indican que podrías presentar niveles séricos de vitamina A aumentados, tus genes no te determinan, tus hábitos si.`,\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos y suplementos de vitamina A acorde a tu metabolismo, para evitar los efectos de su deficiencia o exceso.\r\n Tus genes indican que podrías presentar niveles séricos de vitamina A disminuidos, tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `La vitamina A comprende un grupo de compuestos químicos como por ejemplo el retinol, el retinal y el betacaroteno. Intervienen en el crecimiento y el desarrollo del sistema nervioso y la visión.\r\n

    \r\n La forma química más común de vitamina A que consumimos en los alimentos y también en los suplementos dietéticos es el betacaroteno. Los niveles de vitamina A en el organismo se relacionan con la capacidad de conversión de estos precursores ( b caroteno) en retinol (vitamina A activa).\r\n Esta conversión puede verse alterada según nuestra constitución genética, la mayoría de las personas consumen suficiente vitamina A y sus alteraciones son poco comunes.\r\n

    \r\n Signos y síntomas de deficiencia y exceso de vitamina A:
    \r\n
  • Deficiencia: El más habitual es la xeroftalmia, que es la incapacidad de ver con poca luz.
  • \r\n
  • Exceso: Consumir demasiada vitamina A preformada (en general, en suplementos o ciertos medicamentos) puede provocar mareos, náuseas, dolores de cabeza, y alteraciones de la conciencia graves.
  • \r\n
  • Exceso en embarazadas: Las dosis elevadas de vitamina A preformada en mujeres embarazadas también pueden causar defectos congénitos en sus hijos ya que es una vitamina teratogénica.
  • \r\n `,\r\n results: `Los marcadores genéticos utilizados están relacionados con los genes que codifican para el procesamiento de estos metabolitos, RET y BC. Su biodisponibilidad influye, junto con otros factores, en la conversión a vitamina A activa (retinol) y su disponibilidad para ser utilizada por los diferentes tejidos. \r\n El gen RBP4 codifica para una proteína que transporta el retinol desde el hígado a los tejidos periféricos. El gen TTR codifica para una proteína que transporta retinol en dimero con RBP4 y tiroxina.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu concentración de precursores de vitamina A en sangre podrían encontrarse dentro del rango normal, pero esto no significa que sea así.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina A también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • Los alimentos con mayor contenido de retinol son: lácteos (leche, queso y yogur), hígado, yema de huevo y pescados de aguas profundas (atún, arenque, sardina, salmón).
  • \r\n
  • Si sospechas que podés tener niveles de vitamina A fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • La cantidad de cada vitamina que necesitás depende de la edad y el sexo. Otros factores, como el embarazo y la salud, también son importantes.
  • \r\n
  • Con alimentos de origen animal cubrimos nuestra necesidad diaria consumiendo 2 tazas de 250 ml de leche fresca y 1 huevo.
  • \r\n
  • Con alimentos de origen vegetal cubrimos nuestra necesidad diaria consumiendo, 2 frutas chicas / día y 50 gr de vegetales verdes.
  • \r\n
  • Los alimentos con mayor contenido de betacarotenos son: maíz, vegetales de hoja verde (acelga, lechuga, espinaca), frutas y verduras de color anaranjado (zapallo, calabaza, zanahoria, melón, durazno, damasco).
  • \r\n
  • El método de cocción más adecuado para conservar esta vitamina en los alimentos es el vapor. Cocciones prolongadas o hervor disminuyen su biodisponibilidad.
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que podrías presentar concentración aumentada de precursores de la vitamina A en sangre, pero esto no quiere decir que asi sea.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina A también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • Es probable que teniendo una alimentación variada y equilibrada obtengas de los alimentos toda la vitamina A y betacarotenos que tus ojos y sistema nervioso necesitan.
  • \r\n
  • Si sospechas que podés tener niveles de vitamina A fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Es infrecuente presentar concentraciones elevadas de vitamina A a causa de la dieta, su aumento se asocia al consumo de suplementos, no restrinjas alimentos fuente de esta vitamina.
  • \r\n
  • Si estás embarazada o planeas estarlo consulta a tu médico ya que altos niveles de esta vitamina tienen efecto teratogénico (pueden producir malformaciones congénitas).
  • \r\n
  • Los alimentos con mayor contenido de retinol son: lácteos (leche, queso y yogur), hígado, yema de huevo y pescados de aguas profundas (atún, arenque, sardina, salmón).
  • \r\n
  • Los alimentos con mayor contenido de betacarotenos son: maíz, vegetales de hoja verde (acelga, lechuga, espinaca), frutas y verduras de color anaranjado (zapallo, calabaza, zanahoria, melón, durazno, damasco).
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que tu concentración de precursores de vitamina A en sangre podrían encontrarse disminuida, pero esto no significa que sea así.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina A también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • Si sospechas que podés tener niveles de vitamina A fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Es probable que teniendo una alimentación variada y equilibrada obtengas de los alimentos toda la vitamina A y betacarotenos que tus ojos y sistema nervioso necesitan.
  • \r\n
  • Los alimentos con mayor contenido de retinol son: lácteos (leche, queso y yogur) hígado, yema de huevo y pescados de aguas profundas (atún, arenque, sardina, salmón).
  • \r\n
  • Los alimentos con mayor contenido de betacarotenos son: maíz, vegetales de hoja verde (acelga, lechuga, espinaca), frutas y verduras de color anaranjado (zapallo, calabaza, zanahoria, melón, durazno, damasco).
  • \r\n
  • Para la correcta absorción de las vitaminas es importante tu salud intestinal, consumí alimentos reales.
  • \r\n
  • Preferí cocinar tus alimentos a vapor y condimentarlos con 1 o 2 cucharadas soperas de aceite de oliva. La vitamina A para absorberse necesita la presencia de grasas en la misma comida.
  • \r\n `,\r\n },\r\n bibliography: `PatrickBorelandCharlesDesmarchelie.GeneticVariationsAssociatedwithVitaminAStatus andVitaminABioavailability`\r\n },\r\n \"Requerimiento de vitamina D\": {\r\n label: \"Vitamina D\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de vitamina D acorde a tu metabolismo, para evitar los efectos de su deficiencia.\r\n\r\n Tus genes indican que tus niveles vitamina D en sangre podrían estar habitual, tus genes no te determinan , tus hábitos si.`,\r\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de vitamina D acorde a tu metabolismo, para evitar los efectos de su deficiencia.\r\n\r\n Tus genes indican que tus niveles vitamina D en sangre podrían estar aumentada, tus genes no te determinan , tus hábitos si.`,\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de vitamina D acorde a tu metabolismo, para evitar los efectos de su deficiencia.\r\n\r\n Tus genes indican que tus niveles vitamina D en sangre podrían estar disminuida, tus genes no te determinan , tus hábitos si.`,\r\n },\r\n generalInfo: `La vitamina D tiene múltiples funciones. La más importante de ellas es la regulación de los niveles de calcio y fosfato a nivel renal, promoviendo la absorción intestinal de los mismos a partir de los alimentos y la reabsorción de calcio a nivel renal para disminuir las pérdidas por la orina. \r\n Además favorece la remodelación del hueso y su mineralización y participa en las defensas de nuestro cuerpo (sistema inmune). \r\n Las variantes genéticas comunes que influyen en los niveles de vitamina D en sangre permiten identificar a las personas con riesgo de deficiencia de vitamina D, y sugerir cambios de hábitos que ayuden a tener niveles adecuados.\r\n

    \r\n Signos y síntomas de déficit de vitamina D:\r\n
  • Su déficit se asocia con: pérdida de la densidad ósea (favoreciendo a la osteoporosis y fracturas), mayor susceptibilidad a infecciones, dolor muscular difuso y menor rendimiento deportivo.
  • \r\n `,\r\n results: `El gen GC, es el responsable de la codificación de una proteína que recubre y protege a la vitamina D, facilitando su transporte por la sangre. Algunas variantes en este gen pueden disminuir la capacidad de transportar esta vitamina, disminuyendo los niveles de vitamina D disponibles en el organismo.\r\n\r\n El gen VDR, por su parte, codifica al receptor de vitamina D.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que la concentración de vitamina D en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.
  • \r\n
  • Si sospechas que podés tener niveles de vitamina D fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Es probable que llevar una dieta variada y exponerte al sol en horarios seguros sea suficiente para obtener los niveles de vitamina D necesarios para tus células.
  • \r\n
  • Los alimentos con mayor contenido de vitamina D son las grasas lácteas (leche, yogur y queso), yema de huevo, hígado y algunos pescados grasos (arenque, congrio, salmón, atún).
  • \r\n
  • Mantene saludable tu microbiota intestinal ( mas alimentos reales menos procesados) la disbiosis intestinal juega un rol fundamental en la absorción de esta vitamina.
  • \r\n
  • La correcta absorción de la vitamina D alimentaria depende de la cantidad de grasas que consumas diariamente ya que las necesita para absorberse. Condimentá tus acompañamientos con 1 o 2 cucharadas soperas de aceite de oliva.
  • \r\n
  • Se recomienda exponerse al sol en horario seguro para la síntesis cutánea de vitamina D: en verano 10 minutos 3 veces por semana, y en invierno 30 minutos 3 veces por semana.
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que podrías presentar concentración aumentada de vitamina D en sangre, pero esto no quiere decir que los tengas.
  • \r\n
  • En condiciones normales es poco probable presentar niveles altos de esta vitamina en sangre a causa de una dieta equilibrada. El aumento se asocia al consumo de suplementos.
  • \r\n
  • Si sospechas que podés tener niveles de vitamina D fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero los niveles de vitamina D también se modifican por el ambiente y el estilo de vida.
  • \r\n
  • Los alimentos con mayor contenido de vitamina D son las grasas lácteas (leche, yogur y queso), yema de huevo, hígado y algunos pescados grasos (arenque, congrio, salmón, atún).
  • \r\n
  • Mantene saludable tu microbiota intestinal ( mas alimentos reales menos procesados) la disbiosis intestinal juega un rol fundamental en la absorción de esta vitamina.
  • \r\n
  • La correcta absorción de la vitamina D alimentaria depende de la cantidad de grasas que consumas diariamente ya que las necesita para absorberse. Condimentá tus acompañamientos con 1 o 2 cucharadas soperas de aceite de oliva.
  • \r\n
  • Se recomienda exponerse al sol en horario seguro para la síntesis cutánea de vitamina D: en verano 10 minutos 3 veces por semana, y en invierno 30 minutos 3 veces por semana.
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que la concentración de vitamina D en sangre podría encontrarse disminuida, pero esto no significa que sea así.
  • \r\n
  • Aunque en general llevar una dieta variada y exponerte al sol en horarios seguros sea suficiente para obtener los niveles de vitamina D necesarios para tus células, es posible que requieras suplementos en algunas situaciones (siempre bajo prescripción médica).
  • \r\n
  • Si sospechas que podés tener niveles de vitamina D fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • El sobrepeso u obesidad favorece a que la concentración de vitamina D esté disminuida en sangre, ya que el tejido adiposo la retiene impidiendo que quede disponible para llevar a cabo sus funciones. Mantene un peso saludable y hace ejercicio diariamente.
  • \r\n
  • Los alimentos con mayor contenido de vitamina D son las grasas lácteas (leche, yogur y queso),si consumís leche de vaca preferí las opciones enteras. Yema de huevo, hígado y algunos pescados grasos (arenque, congrio, salmón, atún).
  • \r\n
  • Mantene saludable tu microbiota intestinal (más alimentos reales menos procesados) la disbiosis intestinal juega un rol fundamental en la absorción de esta vitamina.
  • \r\n
  • La correcta absorción de la vitamina D alimentaria depende de la cantidad de grasas que consumas diariamente ya que las necesita para absorberse. Condimentá tus acompañamientos con 1 o 2 cucharadas soperas de aceite de oliva.
  • \r\n
  • Se recomienda exponerse al sol en horario seguro para la síntesis cutánea de vitamina D: en verano 10 minutos 3 veces por semana, y en invierno 30 minutos 3 veces por semana.
  • \r\n
  • Esto es una predisposición que te acompañará toda la vida, pero los niveles de vitamina D también se modifican por el ambiente y el estilo de vida.
  • \r\n `,\r\n },\r\n bibliography: `Wang, Thomas J., Feng Zhang, J. Brent Richards, Bryan Kestenbaum, Joyce B. van Meurs, Diane Berry, Douglas P. Kiel, et al. 2010. “Common Genetic Determinants of Vitamin D Insufficiency: A Genome-Wide Association Study.” The Lancet 376 (9736): 180–88.`\r\n },\r\n \"Requerimiento de calcio\": {\r\n label: \"Calcio\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de calcio acorde a tu metabolismo, para evitar los efectos de su deficiencia.\r\n\r\n Tus genes indican que tus niveles de calcio en sangre podrían estar normales, tus genes no te determinan, tus hábitos si.`,\r\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de calcio acorde a tu metabolismo, para evitar los efectos de su deficiencia.\r\n\r\n Tus genes indican que tus niveles de calcio en sangre podrían estar aumentados, tus genes no te determinan, tus hábitos si.`,\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo y suplementos de calcio acorde a tu metabolismo, para evitar los efectos de su deficiencia.\r\n\r\n Tus genes indican que tus niveles de calcio en sangre podrían estar disminuidos, tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `El calcio es un ion que actúa como mensajero intracelular y participa de múltiples procesos celulares, como la contracción muscular, el ritmo cardíaco, la coagulación de la sangre y la secreción de diferentes hormonas. \r\n El 99% de nuestro calcio corporal está almacenado en los huesos y dientes, mientras que el 1% circula en sangre y se encuentra involucrado en la señalización intracelular.\r\n Los niveles de calcio en sangre están bajo un fuerte control genético. \r\n La hormona paratiroidea, producida por la glándula paratiroides, es la responsable de mantener los niveles séricos de calcio en el rango adecuado.\r\n

    \r\n Concentraciones de calcio más altas (hipercalcemia) o más bajas (hipocalcemia) de lo esperado pueden generar síntomas:\r\n
  • La hipercalcemia leve puede no tener síntomas o manifestarse con náuseas, poco apetito, vómitos y constipación. Niveles de hipercalcemia mayores, pueden presentar espasmos musculares, cambios de personalidad y confusión, somnolencia excesiva, coma e incluso la muerte.
  • \r\n
  • El signo más común de hipocalcemia es \"irritabilidad neuromuscular, calambres musculares en las piernas o en los brazos. Niveles de calcio en sangre muy bajos pueden ocasionar desorientación, palpitaciones o alteraciones del ritmo cardíaco.
  • \r\n `,\r\n results: `El gen CASR codifica para el receptor sensor de calcio, encargado de medir los niveles del mineral en las células del organismo. Variantes que causan fallas en su funcionamiento pueden derivar tanto en un aumento como en una disminución de los niveles circulantes.`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu concentración de calcio en sangre podría encontrarse dentro del rango normal, pero esto no significa que sea así.
  • \r\n
  • Esto es una predisposición, pero los niveles de calcio se modifican, según tipo de alimentación, edad, y momento de la vida.
  • \r\n
  • Es conveniente controlar los niveles en sangre directamente por técnicas de laboratorio que reflejan lo que sucede en el momento que se realiza el estudio o a través de una densitometría (gold standard)
  • \r\n
  • Es probable que llevar una dieta variada sea suficiente para que obtengas los niveles de calcio necesarios para tus células.
  • \r\n
  • Los alimentos de origen animal donde encontramos calcio son los lácteos (leche, queso, yogur), kéfir de leche, sardinas.
  • \r\n
  • Las fuentes veganas son:Almendras, tofu, tahini, Garbanzos, porotos, vegetales verdes de hoja oscura (aunque una parte no es absorbida por los oxalatos) brócolis, semillas (sésamo), frutas secas (avellanas, almendras) y vegetales (achicoria, brócoli, radicheta). Tené en cuenta que en este caso, por tener fibra, el calcio absorbido es menor que las fuentes animales.
  • \r\n
  • El café (cafeína) y el té (teofilina) favorecen la eliminación de calcio por orina. Aleja las infusiones de los alimentos ricos en calcio (al menos 30-40 minutos).
  • \r\n
  • Nuestro cuerpo absorbe el calcio que necesita cuando los niveles de proteínas en la dieta son moderadas. Dietas hiperproteicas (altas en proteínas) pueden aumentar su eliminación por orina.
  • \r\n
  • Si sos vegetariano o vegano, intolerante a la lactosa o tenés enfermedad celíaca podrías no estar recibiendo todo el calcio que necesitas.
  • \r\n
  • Para más información podés consultar a un médico clínico o nutricionista.
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que podrías presentar valores altos de calcio en sangre, pero esto no quiere decir que los tengas.
  • \r\n
  • Esto es una predisposición, pero los niveles de calcio se modifican, según tipo de alimentación, edad, y momento de la vida.
  • \r\n
  • Si sospechas que podés tener niveles de calcio fuera de lo normal es conveniente verificar los niveles en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Es probable que llevar una dieta variada sea suficiente para que obtengas los niveles de calcio necesarios para tus células. A pesar de esta predisposición, no dejes de consumir alimentos ricos en calcio.
  • \r\n
  • Los alimentos de origen animal donde encontramos calcio son los lácteos (leche, queso, yogur), kéfir de leche, sardinas.
  • \r\n
  • Las fuentes veganas son:Almendras, tofu, tahini, Garbanzos, porotos, vegetales verdes de hoja oscura (aunque una parte no es absorbida por los oxalatos) brócolis, semillas (sésamo), frutas secas (avellanas, almendras) y vegetales (achicoria, brócoli, radicheta). Tené en cuenta que en este caso, por tener fibra, el calcio absorbido es menor que las fuentes animales.
  • \r\n
  • Un exceso de calcio podría estar involucrado en enfermedad coronaria, cálculos en la orina y cáncer de próstata.
  • \r\n
  • Para más información podés consultar a un médico clínico o nutricionista.
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que tus niveles de calcio en sangre podrían encontrarse disminuidos, pero esto no significa que sea así.
  • \r\n
  • Esto es una predisposición, pero los niveles de calcio se modifican, según tipo de alimentación, edad, y momento de la vida.
  • \r\n
  • Es conveniente controlar los niveles en sangre directamente por técnicas de laboratorio que reflejan lo que sucede en el momento que se realiza el estudio o a través de una densitometría (prueba diagnostica mas fiable)
  • \r\n
  • Los alimentos de origen animal donde encontramos calcio son los lácteos (leche, queso, yogur), kéfir de leche, sardinas.
  • \r\n
  • Las fuentes veganas son:Almendras, tofu, tahini, Garbanzos, porotos, vegetales verdes de hoja oscura (aunque una parte no es absorbida por los oxalatos) brócolis, semillas (sésamo), frutas secas (avellanas, almendras) y vegetales (achicoria, brócoli, radicheta). Tené en cuenta que en este caso, por tener fibra, el calcio absorbido es menor que las fuentes animales.
  • \r\n
  • Si tus niveles estuviesen disminuidos, aleja alimentos ricos en fibra de las fuentes de calcio, como por ejemplo panes integrales o con semillas, cereales integrales, vegetales de hoja, frutas con cáscara.
  • \r\n
  • Nuestro cuerpo absorbe el calcio que necesita cuando los niveles de proteínas en la dieta son moderadas. Dietas hiperproteicas (altas en proteínas) pueden aumentar su eliminación por orina.
  • \r\n
  • El café (cafeína) y el te (teofilina), gaseosas, sedentarismo favorecen la eliminación de calcio por orina. Aleja las infusiones de los alimentos ricos en calcio (al menos 30-40 minutos).
  • \r\n
  • La vitamina D es necesaria para la absorción del calcio, la obtenemos de la dieta ( pescados grasos) y a través de la exposición segura al sol.
  • \r\n
  • La actividad física ( ejercicios de fuerza) tiene un impacto positivo sobre la densidad ósea.
  • \r\n
  • Si sos vegetariano o vegano, intolerante a la lactosa o tenés enfermedad celíaca podrías no estar recibiendo todo el calcio que necesitas.
  • \r\n
  • La indemnidad de nuestro intestino juega un rol crucial en la absorción de vitaminas y minerales, incluidos el calcio. Mantener una microbiota sana consumiendo alimentos reales, prebióticos y probióticos.
  • \r\n
  • Para más información podés consultar a un nutricionista.
  • \r\n `,\r\n },\r\n bibliography: `Susanna C. Larsson, PhD; Stephen Burgess, PhD; Karl Michaëlsson, MD, PhD.Association of Genetic Variants Related to Serum Calcium Levels With Coronary Artery Disease and Myocardial Infarction`\r\n },\r\n \"Sensibilidad a la histamina\": {\r\n label: \"Histamina\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos a tus sensibilidades e intolerancias.\r\n Tus genes indican que tus niveles de histamina en sangre estaría en concentraciones habituales, lo que disminuiría el riesgo asociado al desarrollo de una intolerancia. Tus genes no te determinan, tus hábitos si.`,\r\n 1: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos a tus sensibilidades e intolerancias.\r\n Tus genes indican que tus niveles de histamina en sangre estarían elevados, lo que aumentaría el riesgo asociado al desarrollo de una intolerancia. Tus genes no te determinan, tus hábitos si.`,\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de alimentos a tus sensibilidades e intolerancias.\r\n Tus genes indican que tus niveles de histamina en sangre estarían elevados, lo que aumentaría el riesgo asociado al desarrollo de una intolerancia. Tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `La histamina es una sustancia química perteneciente a la familia de las aminas biógenas que constituye una parte importante del sistema inmunológico y nervioso.\r\n También la ingerimos a través de los alimentos fermentados por ejemplo vino y cerveza (por acción de las enzimas descarboxilasas), pescados y mariscos, ahumados, quesos maduros.\r\n La histamina alimentaria normalmente se excreta por orina, se conocen dos rutas de excreción, la HNMT y la DAO, cuyos genes nos cuentan cómo metaboliza nuestro cuerpo ésta . \r\n La intolerancia a la histamina (IH) se produce cuando el cuerpo presenta valores demasiado elevados de esta proteína, y puede causar síntomas conocidos como intolerancia a la histamina. Esto puede deberse tanto a una producción excesiva de histamina por parte del cuerpo (histamina endógena) como a una deficiencia en la descomposición de la histamina ingerida en tu dieta (histamina alimentaria). \r\n

    \r\n Síntomas más comunes:\r\n
  • Diarrea / constipación, dolor abdominal, colon irritable, reflujo, distensión abdominal, meteorismo.
  • \r\n
  • Sarpullido o urticaria, piel seca, edema.
  • \r\n
  • Alteraciones menstruales, síndrome premenstrual
  • \r\n `,\r\n results: `Existen dos genes con roles cruciales en el metabolismo de la histamina.\r\n

    \r\n Histamina exógena: La DAO (diaminooxidasa) es la enzima producida por los intestinos que descompone la histamina de los alimentos. El gen AOC1 codifica la producción de la enzima DAO. Las variantes genéticas en AOC1 pueden aumentar o disminuir la producción de la enzima, lo que repercute directamente en los niveles de histamina presentes.\r\n

    \r\n Histamina endógena: Otra enzima es la histamina n-metiltransferasa (HNMT), codificada por el gen HNMT. Su función es la de degradar la histamina intracelular. Las variantes genéticas en HMNT pueden aumentar o disminuir la producción de la enzima, lo que repercute directamente en los niveles de histamina presentes.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tenés baja posibilidad de presentar intolerancia a la histamina, pero esto no significa que no puedas desarrollarla.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero la reacción de tu cuerpo a la histamina también se modifica por el ambiente y otros factores.
  • \r\n
  • Si tenés síntomas de los mencionados previamente, aunque sean inespecíficos y no se relacionen con la ingesta de alimentos ricos en histamina, consultá con tu médico para confirmar/descartar el diagnóstico.
  • \r\n `,\r\n 1: `\r\n
  • Tus genes indican que tenés un riesgo levemente aumentado de presentar intolerancia a la histamina, pero esto no significa que no puedas desarrollarla.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero la reacción de tu cuerpo a la histamina también se modifica por el ambiente y otros factores.
  • \r\n
  • Si tenés síntomas de los mencionados previamente, aunque sean inespecíficos y no se relacionen con la ingesta de alimentos ricos en histamina, consultá con tu médico para confirmar/descartar el diagnóstico.
  • \r\n
  • Si padecieras IH, existen distintos criterios médicos de la concentración de histamina máxima tolerada y qué alimentos deberías evitar, puesto que la cantidad de histamina es muy variable de un alimento a otro por su grado de fermentación.
  • \r\n
  • A continuación te detallamos los alimentos que mayor cantidad poseen, son aquellos que se deterioran con facilidad como: carnes curadas (fiambres y achuras), pescados, fermentados como vino, cerveza, champagne, kéfir, chucrut, pescados y mariscos en general, ahumados, quesos maduros, enlatados, quesos añejos como: cheddar, gouda, suizo y parmesano.
  • \r\n
  • También está presente en alimentos de origen vegetal sobre todo en palta, espinaca, soja y berenjena.
  • \r\n
  • Otros alimentos desencadenan, en individuos susceptibles, aumento de la histamina endógena, ellos son: clara de huevo y proteína láctea, aditivos como glutamato, nitritos, sulfito y colorante amarillo E 102, E110, rojo E 124.
  • \r\n
  • Asegúrate de estar consumiendo diariamente vitamina C, uno de los múltiples beneficios que tiene esta vitamina es un potente efecto antihistamínico.
  • \r\n
  • Las bebidas energizantes contienen serotonina que es metabolizada por la DAO, por lo que si presentas IH evita consumirlos para no sobresaturar tu sistema natural de excreción de histamina.
  • \r\n `,\r\n 2: `\r\n
  • Tus genes indican que tenés un riesgo aumentado de presentar intolerancia a la histamina, pero esto no significa que no puedas desarrollarla.
  • \r\n
  • Esto es una predisposición que te acompañará toda la vida, pero la reacción de tu cuerpo a la histamina también se modifica por el ambiente y otros factores.
  • \r\n
  • Si tenés síntomas de los mencionados previamente, aunque sean inespecíficos y no se relacionen con la ingesta de alimentos ricos en histamina, consultá con tu médico para confirmar/descartar el diagnóstico.
  • \r\n
  • Si padecieras IH, existen distintos criterios médicos de la concentración de histamina máxima tolerada y que alimentos debieras evitar, puesto que la cantidad de histamina es muy variable de un alimento a otro por su grado de fermentación.
  • \r\n
  • A continuación te detallamos los alimentos que mayor cantidad poseen, son aquellos que se deterioran con facilidad como: carnes curadas (fiambres y achuras), pescados, fermentados como vino, cerveza, champagne, kéfir, chucrut, pescados y mariscos en general, ahumados, quesos maduros, enlatados, quesos añejos como: cheddar, gouda, suizo y parmesano.
  • \r\n
  • También está presente en alimentos de origen vegetal sobre todo en palta, espinaca, soja y berenjena.
  • \r\n
  • Otros alimentos desencadenan, en individuos susceptibles, aumento de la histamina endógena, ellos son: clara de huevo y proteína láctea, aditivos como glutamato, nitritos, sulfito y colorante amarillo E 102, E110, rojo E 124.
  • \r\n
  • Asegúrate de estar consumiendo diariamente vitamina C, uno de los múltiples beneficios que tiene esta vitamina es un potente efecto antihistamínico.
  • \r\n
  • Las bebidas energizantes contienen serotonina que es metabolizada por la DAO, por lo que si presentas IH evita consumirlos para no sobresaturar tu sistema natural de excreción de histamina
  • \r\n `,\r\n },\r\n bibliography: `L. Maintz1 *, C.-F. Yu1 *, E. Rodrı´guez2,3, H. Baurecht2,4, T. Bieber1 , T. Illig5 , S. Weidinger2,3,6 & N. Nova.Association of single nucleotide polymorphisms in the diamine oxidase gene with diamine oxidase serum activities \r\n
    \r\n Jim Stevenson, Ph.D. Edmund Sonuga-Barke, Ph.D. Donna McCann, Ph.D. Kate Grimshaw, M.Sc. Karen M. Parker, M.S. Matthew J. Rose-Zerilli, B.Sc. John W. Holloway, Ph.D. John O. Warner, M.D.The Role of Histamine Degradation Gene Polymorphisms in Moderating the Effects of Food Additives on Children’s ADHD Symptoms\r\n
    \r\n Yuen Yi Hon1, William J. Jusko2, Hong-Hao Zhou3, Guo-Lin Chen3, Dong Guo3, Gan Zhou3, Vicky E. Spratlin1, and Michael W. Jann.Endogenous Histamine and Cortisol Levels in Subjects with Different Histamine N-Methyltransferase C314T Genotypes\r\n `\r\n },\r\n \"Sensibilidad a la glucosa\": {\r\n label: \"Glucosa\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar la calidad de carbohidratos que consumís diariamente acorde a tu metabolismo para prevenir enfermedades asociadas.\r\n\r\n Tus genes indican que tu sensibilidad a la glucosa podría ser habitual, tus genes no te determinan, tus hábitos si.`,\r\n 1: ``,\r\n 2: `Conocer lo que dicen tus genes te permite adecuar la calidad de carbohidratos que consumís diariamente acorde a tu metabolismo para prevenir enfermedades asociadas.\r\n\r\n Tus genes indican que tu sensibilidad a la glucosa podría estar aumentada, tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `Los alimentos están constituidos por múltiples nutrientes, necesarios para el correcto funcionamiento de nuestro organismo y sus funciones vitales. Grasas, proteínas, carbohidratos, vitaminas, minerales y oligoelementos son algunas de las sustancias químicas que los forman.\r\n Los carbohidratos los incorporamos evolutivamente hace tan solo 10 mil años con el advenimiento de la agricultura, razón por la cual junto con las legumbres presentan tanta variabilidad en cuanto a su digestión de persona a persona.\r\n Los glúcidos son biomoléculas compuestas principalmente de carbono, hidrógeno y oxígeno, aunque algunos de ellos también contienen otros bioelementos tales como: nitrógeno, azufre y fósforo. Su principal fuente son los cereales.\r\n Según su estructura química podemos dividirlos en simples o complejos. \r\n Los primeros son fácilmente digeridos y absorbidos mientras que los complejos tienen una digestión y absorción retardada en el tiempo debido a su mayor complejidad molecular.\r\n A diferencia de los complejos (almidones, glucógeno y fibra) los azúcares simples (glucosa, fructosa, galactosa, sacarosa y lactosa) al absorberse más fácilmente producen un aumento de la glucemia más rápido, esto determina que el páncreas secrete insulina a nuestro torrente sanguíneo para que las células de nuestros tejidos puedan usar o almacenar esa glucosa disponible.\r\n

    \r\n En aquellas personas con predisposición genética a la DBT2, la calidad de carbohidratos de la dieta así como el estilo de vida sinergiza y predispone al desarrollo de esta patología. La mayor parte del consumo de hidratos en las personas proviene de las harinas refinadas y no de granos enteros. \r\n En las poblaciones previas a la revolución industrial los granos y legumbres o sus harinas se remojaban, fermentaban y germinaban previos a su consumo. Hoy estas prácticas no son nuestro cotidiano (por tiempo y costumbre) lo que impacta en una digestión a veces problemática-\r\n\r\n `,\r\n results: `El gen TCF7L2 codifica para el factor de transcripción 7-like 2, también conocido como TCF7L2 o TCF4, proteína que actúa como factor de transcripción. En el páncreas, este factor activa la expresión génica de GLP1 estimulando la secreción de insulina por las células B. Hasta la fecha es uno de los identificados como jugadores principales en la síntesis y secreción de la insulina. \r\n La calidad de carbohidratos consumidos en la dieta modifican el riesgo de diabetes tipo 2 asociado a este gen.\r\n `,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu sensibilidad a la glucosa es la habitual.
  • \r\n
  • Aunque tus genes no te predisponen, el estilo de vida que lleves, los alimentos que consumas, el mantenimiento de un peso saludable y la regularidad de tu actividad física juega un papel fundamental en el desarrollo de ciertas patologías como la diabetes tipo 2.
  • \r\n
  • Mantené un peso saludable y acorde a tu contextura, talla y etapa de la vida. El sobrepeso y la obesidad son factores de riesgo muy importantes en el desarrollo de DBT tipo 2.
  • \r\n
  • Hacete controles médicos de rutina que incluyan niveles de glucosa en sangre.
  • \r\n
  • No elimines los cereales de tu dieta ya que nuestro cuerpo obtiene energía y nutrientes de ellos, selecciónalos de forma inteligente.
  • \r\n
  • Preferí a las harinas refinadas los derivados de cereales integrales (grano entero), legumbres, frutas y verduras (carbohidratos complejos).
  • \r\n
  • Sumá fibra en tus comidas para absorber los azúcares más lentamente. La fibra está en las frutas con cáscaras, cereales integrales, semillas y verduras, sobre todo las de hoja (lechuga, escarola, radicheta, repollo).
  • \r\n
  • Suma proteínas en tus comidas. A mayor cantidad de proteínas menor digestión de glúcidos y por ende menor absorción.
  • \r\n
  • Deshabitúa tu consumo de azúcar de mesa, golosinas, productos de panadería y pastelería que contengan harinas refinadas (pizza, panes, empanadas, sándwiches, tartas, wraps. Si te es inevitable endulzar preferí edulcorantes naturales antes que el azúcar (hasta 8 hojas de stevia por día).
  • \r\n
  • Podes remplazar en algunas preparaciones las tradicionales harinas de cereales por harinas de legumbres para sumar nuevos nutrientes (lupino, soja, garbanzo, arveja) de frutos secos (almendra, nueces, castañas avellanas) de semillas (lino, chia, girasol, zapallo).
  • \r\n
  • Mantenete físicamente activo. Es suficiente con 30-40 min por día de actividad física.
  • \r\n
  • Consumí fruta fresca preferentemente agroecológica, entera y con cáscara (minimiza fruta deshidratada, desecada y jugos).
  • \r\n
  • Mantenete hidratado bebiendo de 2 a 3 litros de agua por día. Moderá el consumo de alcohol.
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que tu sensibilidad a la glucosa es menor, por lo que una dieta rica en carbohidratos simples exacerba el riesgo de desarrollo de DBT tipo 2.
  • \r\n
  • Esto es una predisposición que te acompañará siempre, pero el estilo de vida que lleves, el mantenimiento de un peso saludable y la regularidad de tu actividad física juega un papel fundamental en el desarrollo de ciertas patologías como diabetes tipo 2.
  • \r\n
  • Mantené un peso saludable y acorde a tu contextura, talla y etapa de la vida. El sobrepeso y la obesidad son factores de riesgo muy importantes en el desarrollo de DBT tipo 2.
  • \r\n
  • Hacete controles médicos de rutina que incluyan niveles de glucosa en sangre.
  • \r\n
  • Mantenete físicamente activo. Es suficiente con 30-40 min por día de actividad física.
  • \r\n
  • Los carbohidratos simples están relacionados con la diabetes (entre otras patologías), por producir un aumento rápido de la glucemia y consecuente liberación de insulina para luego caer abruptamente generando cansancio, hambre y especialmente mayor apetencia por alimentos dulces.
  • \r\n
  • No elimines los cereales de tu dieta ya que nuestro cuerpo obtiene energía y nutrientes de ellos, selecciónalos de forma inteligente.
  • \r\n
  • Preferí a las harinas refinadas los derivados de cereales integrales (grano entero), legumbres, frutas y verduras (carbohidratos complejos).
  • \r\n
  • Sumá fibra en tus comidas para absorber los azúcares más lentamente. La fibra está en las frutas con cáscaras, cereales integrales, semillas y verduras, sobre todo las de hoja (lechuga, escarola, radicheta, repollo).
  • \r\n
  • Suma proteínas y grasas saludables en tus comidas. A mayor cantidad de proteínas y grasas menor digestión de glúcidos y por ende menor absorción. Ejemplo: Legumbres y palta.
  • \r\n
  • Deshabitúa tu consumo de azúcar de mesa, golosinas, productos de panadería y pastelería que contengan harinas refinadas (pizza, panes, empanadas, sándwiches, tartas, wraps). Si te es inevitable endulzar preferí edulcorantes naturales antes que el azúcar/ artificiales (hasta 8 hojas de stevia por día).
  • \r\n
  • Reemplazá las tradicionales harinas de cereales por harinas de legumbres (lupino, soja, garbanzo, arveja) de frutos secos (almendra, nueces, castañas avellanas) de semillas (lino, chía, girasol, zapallo).
  • \r\n
  • Consumí fruta fresca preferentemente agroecológica, entera y con cáscara (minimiza fruta deshidratada, desecada y jugos).
  • \r\n
  • El mejor método de cocción es el vapor o al “dente”, a mayor calor e hidratación del almidón mayor índice glucémico.
  • \r\n
  • Mantenete hidratado bebiendo de 2 a 3 litros de agua por día. Moderá el consumo de alcohol.
  • \r\n `,\r\n },\r\n bibliography: `Marilyn C Cornelis ,Lu Qi,Peter Kraft,and Frank B Hu.TCF7L2,dietary carbohydrate ,and risk of type 2 diabetes in US Women.`\r\n },\r\n \"Requerimiento de grasas Omega 3\": {\r\n label: \"Omega 3\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Conocer lo que dicen tus genes te permite adecuar el consumo de ácidos grasos omega 3 acorde a tu metabolismo, para evitar los efectos de su deficiencia \r\n\r\n Tus genes indican que tendrías riesgo habitual de presentar altos niveles de triglicéridos en sangre por consumo deficiente de Omega 3, tus genes no te determinan, tus hábitos si.`,\r\n 1: ``,\r\n 2: `Conocer lo que dicen tus genes te permite adecuar el consumo de ácidos grasos omega 3 acorde a tu metabolismo, para evitar los efectos de su deficiencia \r\n\r\n Tus genes indican que tendrías riesgo aumentado de presentar altos niveles de triglicéridos en sangre por consumo deficiente de Omega 3, tus genes no te determinan, tus hábitos si.`,\r\n },\r\n generalInfo: `Los ácidos grasos omega 3 comprende el ácido eicosapentaenoico (EPA) y el ácido docosahexaenoico (DHA) como fuentes de origen animal y linolénico (ALA) de fuentes vegetales. Estos ácidos no pueden ser sintetizados por nuestro organismo siendo la alimentación su principal fuente.\r\n Los ácidos grasos omega 3 mejoran nuestros lípidos en sangre (disminuyen el colesterol y aumentan las HDl o colesterol bueno), son conocidos por su efecto benéfico en la disminución del riesgo de enfermedades cardiovasculares a través de la disminución de los triglicéridos sanguíneos y disminución de la formación de placas de ateroma.\r\n Existen variantes genéticas asociadas al mayor riesgo de enfermedades cardiovasculares por un consumo insuficiente de este nutriente, ya que en nuestro organismo el omega-3 produciría un aumento de la formación de óxido nítrico, un potente vasodilatador y antiagregante plaquetario.\r\n La American Heart Association (Asociación Americana del Corazón) recomienda comer al menos dos raciones semanales de pescado rico en omega-3 (lo que equivale a un mínimo de 200 gr de pescado)\r\n

    \r\n Beneficios del omega 3:\r\n
  • Mejora los factores de riesgo asociados a enfermedad cardiovascular como: disminución de triglicéridos, reducción de presión arterial, aumento de colesterol HDL “bueno”, anticoagulante y antiplaquetario.
  • \r\n
  • Mejora la resistencia a la insulina.
  • \r\n
  • Reduce la inflamación de bajo grado.
  • \r\n `,\r\n results: `El gen NOS3 codifica la enzima óxido nítrico sintasa 3, que metaboliza la L-arginina en óxido nítrico. La función del óxido nítrico es aumentar el diámetro de los vasos sanguíneos (vasodilatación) e inhibir la agregación plaquetaria (formación de trombos). El consumo insuficiente de ácidos omega-3 promueve menor formación de óxido nítrico y aumento de los triglicéridos séricos incrementando el riesgo de enfermedades cardiovasculares.`,\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: `\r\n
  • Tus genes indican que tu riesgo a presentar altos niveles de triglicéridos séricos con una dieta baja en omega 3 es el habitual.
  • \r\n
  • Esta es una predisposición que te acompañará siempre, conocer esta información te permite elegir diariamente este nutriente para obtener sus beneficios protectores frente a las enfermedades cardiovasculares a pesar que tus genes no te predisponen a un riesgo aumentado.
  • \r\n
  • Los ácidos grasos omega 3 los encontramos en fuentes animales y vegetales.
  • \r\n
  • Los pescados de aguas profundas como salmón, caballa, atún blanco, trucha y sardina son los que más Omega (DHA y ARA) poseen. La carne de animales de pastoreo que declaren ser altas en omega 3 también pueden ser una fuente.
  • \r\n
  • Semillas de lino, aceite de linaza, semillas de chía , aceite de canola y aceite de soja, poroto de soja y tofu, kale, son las fuentes de omega 3 vegetales (ALA).
  • \r\n
  • La ingesta mínima recomendada es de 500-1 gr /día, pudiendo ser mayor en alguna patología inflamatoria. En vegetarianos y veganos se recomienda un mínimo de 2 gr/día. La mejor forma de absorción es con una comida alta en grasa.
  • \r\n
  • En caso de no cubrir con la recomendación con fuentes alimentarias contamos en el mercado con suplementos: aceite de hígado de bacalao, suplemento de aceite de pescado, suplemento de aceite de krill, suplemento de aceite de algas.
  • \r\n
  • Aceite de hígado de bacalao: es fuente de EPA y DHA. Contienen además vitamina A y D, por lo que debe suministrarse por un profesional para no exceder el consumo de estas vitaminas.
  • \r\n
  • Suplemento a base de aceite de pescado: Seleccionar marcas que tengan entre DHA y EPA alrededor de 500-1 gr.
  • \r\n
  • Suplementos de Krill: Es el suplemento de mayor biodisponibilidad , sobre todo de EPA. El krill es un crustáceo que contiene un aceite excepcionalmente rico en omega 3. Como se encuentra al inicio de la cadena trófica alimentándose de plancton el riesgo de ingesta de metales pesados y pesticidas es menor.
  • \r\n
  • Consulta a tu médico qué suplemento de omega 3 te sugiere, siempre prestando atención a la cantidad de omega que aporta, trazabilidad y toxinas que puede contener. Chequea la fecha de vencimiento, siempre tiene que estar alejada del momento de consumo para que la grasa no se oxide.
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n
  • Tus genes indican que tu riesgo a presentar altos niveles de triglicéridos séricos con una dieta baja en omega 3 es mayor que al habitual.
  • \r\n
  • Esta es una predisposición que te acompañará siempre, conocer esta información te permite elegir diariamente este nutriente para obtener sus beneficios protectores frente a las enfermedades cardiovasculares.
  • \r\n
  • Los ácidos grasos omega 3 los encontramos en fuentes animales y vegetales.
  • \r\n
  • Los pescados de aguas profundas como salmón, caballa, atún blanco, trucha y sardina son los que más Omega (DHA y ARA) poseen. La carne de animales de pastoreo que declaren ser altas en omega 3 también pueden ser una muy buena fuente.
  • \r\n
  • Semillas de lino, aceite de linaza, semillas de chía , aceite de canola y aceite de soja, poroto de soja y tofu, kale, son las fuentes de omega 3 vegetales (ALA).
  • \r\n
  • La ingesta mínima recomendada es de 500-1 gr /día, pudiendo ser mayor en alguna patología inflamatoria. En vegetarianos y veganos se recomienda un mínimo de 2 gr/día. La mejor forma de absorción es con una comida alta en grasa.
  • \r\n
  • En caso de no cubrir con la recomendación con fuentes alimentarias contamos en el mercado con suplementos: aceite de hígado de bacalao, suplemento de aceite de pescado, suplemento de aceite de krill, suplemento de aceite de algas.
  • \r\n
  • Aceite de hígado de bacalao: es fuente de EPA y DHA. Contienen además vitamina A y D, por lo que debe suministrarse por un profesional para no exceder el consumo de estas vitaminas.
  • \r\n
  • Suplemento a base de aceite de pescado: Seleccionar marcas que tengan entre DHA y EPA alrededor de 500-1gr.
  • \r\n
  • Suplementos de Krill: Es el suplemento de mayor biodisponibilidad, sobre todo de EPA. El krill es un crustáceo que contiene un aceite excepcionalmente rico en omega 3. Como se encuentra al inicio de la cadena trófica alimentándose de plancton el riesgo de ingesta de metales pesados y pesticidas es menor.
  • \r\n
  • Consulta a tu médico qué suplemento de omega 3 te sugiere, siempre prestando atención a la cantidad de omega que aporta, trazabilidad y toxinas que puede contener. Chequea la fecha de vencimiento, siempre tiene que estar alejada del momento de consumo para que la grasa no se oxide.
  • \r\n `,\r\n },\r\n bibliography: `Ju-ShengZheng.ReplicationofaGene-DietInteractionatCD36,NOS3 and PPARGinResponsetoOmega-3FattyAcidSupplementsonBloodLipids: ADouble-BlindRandomizedControlledTrial`\r\n },\r\n \"Niveles séricos de colesterol LDL\": {\r\n label: \"LDL\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: `Los niveles de colesterol LDL en sangre dependen de múltiples factores genéticos y ambientales.\r\n Conocer lo que dicen tus genes te puede orientar en el cambio de hábitos alimentarios, y en el tratamiento farmacológico si fuera necesario, para disminuir eficazmente el riesgo de padecer alguna de estas enfermedades.\r\n \r\n Tus genes indican que podrías presentar valores en sangre de colesterol LDL habituales o bajos, tus genes no te determinan, tus hábitos si.\r\n `,\r\n 1: \"\",\r\n 2: `Los niveles de colesterol LDL en sangre dependen de múltiples factores genéticos y ambientales.\r\n Conocer lo que dicen tus genes te puede orientar en el cambio de hábitos alimentarios, y en el tratamiento farmacológico si fuera necesario, para disminuir eficazmente el riesgo de padecer alguna de estas enfermedades.\r\n \r\n Tus genes indican que podrías presentar valores en sangre de colesterol LDL altos, tus genes no te determinan, tus hábitos si.\r\n `,\r\n },\r\n generalInfo: `Además de las recomendaciones de hábitos alimentarios saludables y actividad física diaria es importante conocer lo que dicen tus genes de tu colesterol, ya que su alteración se asocia a la formación de placas de ateroma que bloquean la luz de los vasos sanguíneos aumentando el riesgo de infarto de miocardio y enfermedades cardiovasculares.\r\n Varios factores aumentan el riesgo de presentar colesterol alto, las más importantes son:\r\n La herencia, la edad y el sexo (el colesterol empieza a elevarse hacia los 20 años y continúa subiendo hasta los 60 o 65 años, es mayor en los hombres antes de los 50, y en las mujeres a partir de la menopausia), el sobrepeso tiende a aumentar el colesterol LDL (“malo”), aumenta los triglicéridos y baja el colesterol HDL (“bueno”), aumentando el riesgo cardiovascular.\r\n

    \r\n Respecto a la dieta desde hace ya tiempo conocemos que las grasas saturadas si bien elevan el colesterol LDL no se consideran actores esenciales ya que las partículas de LDL que elevan son pequeñas y densas (un subtipo de LDL) en lugar de las partículas grandes.\r\n Signos y síntomas:\r\n
  • La mayoría de las personas con alteraciones en los valores de colesterol LDL no tienen signos ni síntomas, por eso es importante controlarlo en los análisis de sangre de los controles médicos periódicos.
  • \r\n `,\r\n results: `El gen FADS1 codifica para la enzima hepática “desaturasa de ácidos grasos”. Esta enzima está asociada con la conversión de ácidos grasos de cadena corta en formas activas de mayor longitud, y con la conversion de los ácidos grasos omega 3 y 6 en formas activas como EPA , DHA y AA. Estos ultimos ayudan a controlar los niveles séricos de LDL entre otras funciones.\r\n `,\r\n understandingResults: ``,\r\n snps: [],\r\n recommendations: {\r\n 0: ` \r\n\r\n
  • Tus genes indican que tu riesgo de presentar altos niveles de colesterol LDL con una dieta rica en grasas saturadas es bajo, pero esto no quiere decir que no puedas desarrollarlos si tu estilo de vida no es saludable y basado en alimentos reales.
  • \r\n
  • Es recomendable que verifiques tus niveles de colesterol en sangre directamente por técnicas de laboratorio en tus chequeos médicos
  • \r\n
  • Mantené un peso saludable acorde a tu talla, contextura y momento de la vida.
  • \r\n
  • Ejercítate a diario al menos 30-40 minutos, mantené una alimentación variada, equilibrada, come de forma ordenada y en porciones suficientes.
  • \r\n
  • Para prevenir el aumento de peso y disminuir el riesgo de enfermedad cardiovascular, modera el consumo de grasas totales, azúcares y harinas refinadas de tu dieta, dale prioridad a las grasas poliinsaturadas (“grasas buenas”), especialmente omega-3 de aceite de oliva, aceitunas, semillas de chía y lino, nueces pecanas, aceite de lino, y nuez y pescados.
  • \r\n
  • Los alimentos que más colesterol tienen son las vísceras, fiambres, manteca, quesos duros.
  • \r\n
  • Incorporá semanalmente a tu mesa más veces el pescado (merluza, abadejo, atún) y el pollo. Elegí cortes magros de carne vacuna (lomo, peceto, nalga).
  • \r\n
  • En lo cotidiano preferí lácteos descremados (leche, queso y yogur), reservando los quesos duros (Mar del plata, fontina) para situaciones especiales.
  • \r\n
  • Consumí diariamente variedad de frutas y verduras , cereales integrales, legumbres y reservá fiambres, achuras y grasas para consumo ocasional.
  • \r\n
  • Si tenés colesterol alto a pesar de este resultado, es importante prevenir que empeore o que cause complicaciones. Controlate con tu médico periódicamente y seguí tu plan de tratamiento incluyendo hábitos de vida saludables y, si está indicado, medicamentos.
  • \r\n `,\r\n 1: ``,\r\n 2: `\r\n\r\n
  • Tus genes indican que tu riesgo a presentar mayores niveles de colesterol LDL con una dieta rica en grasas saturadas es alto, pero esto no lo determina.
  • \r\n
  • Recordá que la mayoría de las veces el colesterol alto no da síntomas, por lo que es conveniente verificar los niveles de colesterol en sangre directamente por técnicas de laboratorio, que reflejan lo que sucede en el momento que se realiza el estudio.
  • \r\n
  • Mantené un peso saludable acorde a tu talla, contextura y momento de la vida. Ejercítate a diario al menos 30-40 minutos, mantené una alimentación variada, equilibrada, come de forma ordenada y en porciones suficientes.
  • \r\n
  • Para prevenir el aumento de peso y disminuir el riesgo de enfermedad cardiovascular, modera el consumo de grasas totales , azúcares y harinas refinadas de tu dieta, dale prioridad a las grasas poliinsaturadas (“grasas buenas”), especialmente omega-3 de aceite de oliva, aceitunas, semillas de chía y lino, nueces pecanas, aceite de lino, y nuez y pescados.
  • \r\n
  • Los alimentos que más colesterol tienen son las vísceras, fiambres, manteca, quesos duros. La yema de huevo no eleva el colesterol!
  • \r\n
  • Consumí diariamente frutas y verduras (preferentemente rojizas: uva, fresa, arándano, berenjena, remolacha), legumbres (soja, garbanzos) y té verde. Estos alimentos contienen polifenoles que limitan el daño de las LDL a los vasos sanguíneos.
  • \r\n
  • Utiliza quesos reducidos en grasa (cottage, blanco y blandos descremados). Evita quesos de rallar, tipo mar de plata o fontina. Las vísceras (achuras), fiambres y manteca reservalas para un consumo esporádico o en fechas especiales.
  • \r\n
  • Incorporá semanalmente a tu mesa más veces el pescado (merluza, abadejo, atún) y el pollo . Elegí cortes magros de carne vacuna (lomo, peceto, nalga).
  • \r\n `,\r\n },\r\n bibliography: `S. Hellstrand , E. Sonestedt ,U. Ericson , B. Gullberg , E. Wirfält , B. Hedblad , and M. Orho-Melander .Intake levels of dietary long-chain PUFAs modify the association between genetic variation in FADS and LDL-C\r\n `\r\n },\r\n Calcio: {\r\n label: \"Calcio\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: \"Bajo riesgo de presentar niveles altos de calcio.\",\r\n 1: \"Riesgo moderado de presentar niveles altos de calcio. Modere el consumo de alimentos con alto contenido en calcio\",\r\n 2: \"Riesgo elevado de presentar niveles altos de calcio. Evite el consumo excesivo de alimentos con alto contenido en calcio.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n Hierro: {\r\n label: \"Hierro\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: \"Bajo riesgo de presentar niveles bajos de hierro. Buen aprovechamiento de alimentos ricos en hierro.\",\r\n 1: \"Riesgo moderado de presentar niveles bajos de hierro. Favorecer el consumo de alimentos ricos en hierro.\",\r\n 2: \"Alto riesgo de presentar niveles bajos de hierro. Favorecer el consumo de alimentos ricos en hierro o complementar con un plan de suplementación.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n Sodio: {\r\n label: \"Sodio\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: \"Bajo riesgo de presentar niveles altos de sodio.\",\r\n 1: \"Riesgo moderado de presentar niveles niveles altos de sodio. Evite el consumo de alimentos altos en sodio.\",\r\n 2: \"Riesgo elevado de presentar niveles altos de sodio. Evite el consumo de alimentos altos en sodio y prefiera alimentos bajos en sodio.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n VitA: {\r\n label: \"Vitamina A\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: \"Menor riesgo de presentar niveles bajos de vitamina A. Adecuado metabolismo de la vitamina A proveniente de la alimentación.\",\r\n 1: \"Riesgo moderado de presentar niveles bajos de vitamina A. Favorecer el consumo de alimentos ricos en vitamina A o complementar con un plan de suplementación.\",\r\n 2: \"Riesgo elevado de presentar niveles bajos de vitamina A. Favorecer el consumo de alimentos ricos en vitamina A o complementar con un plan de suplementación.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n VitB: {\r\n label: \"Vitamina B9 (Ácido Fólico)\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: \"Bajo riesgo de presentar niveles bajos de vitamina B.\",\r\n 1: \"Riesgo moderado de presentar niveles bajos de vitamina B. Prefiera los alimentos considerados buena fuente de vitamina B o complementar con un plan de suplementación.\",\r\n 2: \"Riesgo elevado de presentar niveles bajos de vitamina B. Prefiera los alimentos considerados buena fuente de vitamina B o complementar con un plan de suplementación.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n VitC: {\r\n label: \"Vitamina C\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: \"Bajo riesgo de presentar niveles bajos de vitamina C.\",\r\n 1: \"Riesgo moderado de presentar niveles bajos de vitamina C. Favorecer el consumo de alimentos ricos en vitamina C o complementar con un plan de suplementación.\",\r\n 2: \"Riesgo elevado de presentar niveles bajos de vitamina C. Prefiera los alimentos considerados buena fuente de vitamina C o complementar con un plan de suplementación.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n VitD: {\r\n label: \"Vitamina D\",\r\n zone: \"diagnosticResults\",\r\n desc: {\r\n 0: \"Bajo riesgo de presentar bajos niveles de vitamina D.\",\r\n 1: \"Riesgo moderado de presentar bajos niveles de vitamina D. Prefiera el consumo de alimentos considerados buena fuente de vitamina D o complementar con un plan de suplementación.\",\r\n 2: \"Riesgo elevado de presentar bajos niveles de vitamina D. Prefiera el consumo de alimentos considerados buena fuente de vitamina D o complementar con un plan de suplementación.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n Lactosa: {\r\n label: \"Intolerancia a la Lactosa\",\r\n zone: \"intolerancesMain\",\r\n desc: {\r\n 0: \"Bajo riesgo de presentar intolerancia a la lactosa.\",\r\n 1: \"Riesgo moderado de intolerancia a la lactosa. Consuma con moderación alimentos que contengan lactosa.\",\r\n 2: \"Riesgo elevado de intolerancia a la lactosa. Evite el consumo de alimentos que contengan lactosa. La mala absorción de la lactosa produce inflamación intestinal y diversos síntomas digestivos.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n Gluten: {\r\n label: \"Intolerancia al Gluten (Celiaquía)\",\r\n zone: \"intolerancesMain\",\r\n desc: {\r\n 0: \"Bajo riesgo de presentar intolerancia al gluten. Libre consumo de alimentos ricos en gluten.\",\r\n 1: \"Riesgo moderado de intolerancia al gluten. Consuma con moderación los alimentos que contengan gluten.\",\r\n 2: \"Riesgo elevado de intolerancia al gluten. Evite el consumo de alimentos que contengan gluten.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n Lipidos: {\r\n label: \"Metabolismo de Grasas\",\r\n zone: \"intolerancesMain\",\r\n desc: {\r\n 0: \"Bajo riesgo de ganancia de peso por el consumo de grasas. Sin embargo, recuerde que una dieta equilibrada debe contener no más del 30% de grasa total de la cual menos del 10% debe ser grasa saturada, entre 15-20% de grasas monoinsaturadas y entre 6-11% de grasas poliinsaturadas. Bajo riesgo de presentar niveles bajos de ácidos grasos Omega-3 y 6.\",\r\n 1: \"Riego moderado de ganancia de peso por el consumo de grasas. Modere el consumo de alimentos con alto o moderado aporte de grasas y prefiera el consumo de alimentos con muy bajo, bajo o moderado aporte de grasa. Recuerde que una dieta equilibrada debe contener no más del 30% de grasa total de la cual menos del 10% debe ser grasa saturada, entre 15-20% de grasas monoinsaturadas y entre 6-11% de grasas poliinsaturadas. Riesgo moderado de presentar niveles bajos de ácidos grasos Omega-3 y 6. Niveles bajos de los ácidos grasos esenciales Omega-3 y 6 está asociado a sobrepeso, obesidad y enfermedades inflamatorias, se recomienda el consumo de alimentos ricos en ácidos grasos Omega-3 y 6\",\r\n 2: \"Riesgo elevado de ganancia de peso por el consumo de grasas. Evite el consumo de alimentos con alto o moderado aporte en grasas y prefiera aquellos bajos o muy bajos en grasa. Recuerde que una dieta equilibrada debe contener no más del 30% de grasa total de la cual menos del 10% debe ser grasa saturada, entre 15-20% de grasas monoinsaturadas y entre 6-11% de grasas poliinsaturadas. Riesgo elevado de presentar niveles bajos de ácidos grasos Omega-3 y 6. Niveles bajos de los ácidos grasos esenciales Omega-3 y 6 está asociado a sobrepeso obesidad y enfermedades inflamatorias, se recomienda el consumo de alimentos ricos en ácidos grasos Omega-3 y 6.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n bibliography: \"\"\r\n },\r\n HC: {\r\n label: \"Metabolismo de Carbohidratos\",\r\n zone: \"intolerancesMain\",\r\n desc: {\r\n 0: \"Bajo riesgo de ganancia de peso por el consumo de carbohidratos. Sin embargo, recuerde que una alimentación correcta se recomienda no exceder los 25g de azúcar y consumir al menos de 25 a 30g de fibra.\",\r\n 1: \"Riesgo moderado de ganancia de peso por el consumo de carbohidratos. Modere su consumo de alimentos con alto aporte de carbohidratos y el consumo de alimentos con muy bajo, bajo o moderado aporte de carbohidratos. Recuerde que una alimentación correcta se recomienda no exceder los 25g de azúcar y consumir al menos de 25 a 30g de fibra.\",\r\n 2: \"Riesgo elevado de ganancia de peso por el consumo de carbohidratos. Evite el consumo de alimentos con alto aporte de carbohidratos y el consumo de alimentos con muy bajo, bajo o moderado aporte de carbohidratos. Recuerde que una alimentación correcta se recomienda no exceder los 25g de azúcar y consumir al menos de 25 a 30g de fibra.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n Etanol: {\r\n label: \"Asimilación de Alcohol\",\r\n zone: \"intolerancesOther\",\r\n desc: {\r\n 0: \"Bajo riesgo de experimentar los efectos negativos del alcohol (náuseas, mareos, enrojecimiento facial, etc), lo que implica un mayor riesgo de dependencia al mismo. Las bebidas alcohólicas son fuente de calorías vacías, es decir, carecen de vitaminas y minerales. Aportan energía que se verá contrarrestada por el efecto represor que tienen sobre el sistema nervioso central, reduciendo la capacidad de hablar, concentrarse y caminar. Factores psicosociales, ambientales, biológicos y genéticos desempeñan un importante papel en la dependencia al alcohol, el abuso en el consumo del alcohol puede generar diversas lesiones en el organismo como son: gastritis, daño hepático e hipertensión arterial entre otras.\",\r\n 1: \"Riesgo moderado de experimentar los efectos negativos del alcohol (náuseas, mareos, enrojecimiento facial, etc). Las bebidas alcohólicas son fuente de calorías vacías, es decir, carecen de vitaminas y minerales. Aportan energía que se verá contrarrestada por el efecto represor que tienen sobre el sistema nervioso central, reduciendo la capacidad de hablar, concentrarse y caminar.\",\r\n 2: \"Mayor riesgo de experimentar los efectos negativos del alcohol (náuseas, mareos, enrojecimiento facial, etc). Las bebidas alcohólicas son fuente de calorías vacías, es decir, carecen de vitaminas y minerales. Aportan energía que se verá contrarrestada por el efecto represor que tienen sobre el sistema nervioso central, reduciendo la capacidad de hablar, concentrarse y caminar.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n Cafeina: {\r\n label: \"Asimilación de Cafeína\",\r\n zone: \"intolerancesOther\",\r\n desc: {\r\n 0: \"Bajo riesgo de que los efectos estimulantes resulten más duraderos. Metabolizador rápido de cafeína. Debe tenerse en cuenta que, además de la genética, la capacidad de metabolización de la cafeína depende también de factores como la cantidad de café ingerida, el tabaquismo, los tratamientos anticonceptivos hormonales, entre otros.\",\r\n 1: \"Riesgo moderado de que los efectos estimulantes resulten más duraderos, incrementando el riesgo de hipertensión con su consumo y, por tanto, el riesgo cardiovascular asociado. Metabolización lenta de la cafeína. Debe tenerse en cuenta que, además de la genética, la capacidad de metabolización de la cafeína depende también de factores como la cantidad de café ingerida, el tabaquismo, los tratamientos anticonceptivos hormonales, entre otros.\",\r\n 2: \"Mayor riesgo de que los efectos estimulantes resulten más duraderos, incrementando el riesgo de hipertensión con su consumo y, por tanto, el riesgo cardiovascular asociado. Metabolización lenta de la cafeína. Debe tenerse en cuenta que, además de la genética, la capacidad de metabolización de la cafeína depende también de factores como la cantidad de café ingerida, el tabaquismo, los tratamientos anticonceptivos hormonales, entre otros.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n bibliography: \"\"\r\n },\r\n Apetito: {\r\n label: \"Apetito y Saciedad\",\r\n zone: \"intolerancesOther\",\r\n desc: {\r\n 0: \"Bajo riesgo de presentar un mayor apetito. Bajo riesgo de presentar una incorrecta inhibición/control de la sensación de saciedad.\",\r\n 1: \"Riesgo moderado de presentar un mayor apetito. Riesgo moderado de presentar una incorrecta inhibición/control de la sensación de saciedad.\",\r\n 2: \"Alto riesgo de presentar una mayor sensación de apetito. Riesgo alto de presentar una incorrecta inhibición/control de la sensación de saciedad.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n Ejercicio: {\r\n label: \"Respuesta a Ejercicio Físico\",\r\n zone: \"intolerancesOther\",\r\n desc: {\r\n 0: \"Mayor beneficio en la reducción de grasa corporal en respuesta a la práctica de ejercicio físico regular.\",\r\n 1: \"Reducción adecuada de la grasa corporal como respuesta a la práctica de ejercicio físico regular.\",\r\n 2: \"Riesgo elevado de resistencia a la pérdida de peso mediante la práctica de ejercicio físico, debido a una menor capacidad para usar los depósitos de grasa. El resultado no indica de manera directa que el ejercicio no resultará efectivo para la pérdida de peso, sino que aquellos pacientes con el genotipo de baja probabilidad requerirán rutinas de ejercicio especializadas.\",\r\n },\r\n generalInfo: \"\",\r\n results: \"\",\r\n understandingResults: \"\",\r\n snps: [],\r\n recommendations: {\r\n 0: ``,\r\n 1: ``,\r\n 2: ``,\r\n },\r\n bibliography: \"\"\r\n },\r\n};\r\n\r\nexport function mapDiagnostics(analysisResult) {\r\n //console.log(analysisResult);\r\n const res = {\r\n diagnosticResults: [],\r\n intolerancesMain: [],\r\n intolerancesOther: [],\r\n };\r\n\r\n analysisResult\r\n .map((r) => ({\r\n label: KeyToLabelDict[r.nutrient].label,\r\n item: r.nutrient,\r\n value: r.score,\r\n zone: KeyToLabelDict[r.nutrient].zone,\r\n desc: KeyToLabelDict[r.nutrient].desc,\r\n generalInfo: KeyToLabelDict[r.nutrient].generalInfo,\r\n results: KeyToLabelDict[r.nutrient].results,\r\n understandingResults: KeyToLabelDict[r.nutrient].understandingResults,\r\n snps: r.snps,\r\n recommendations: KeyToLabelDict[r.nutrient].recommendations,\r\n bibliography: KeyToLabelDict[r.nutrient].bibliography,\r\n }))\r\n .forEach((r) => res[r.zone].push(r));\r\n //console.log(res);\r\n return res;\r\n}\r\n\r\nfunction Diagnostics({ patientId, isNutritionist }: DiagnosticsProps) {\r\n const [mappedAnalysis, setmappedAnalysis] = useState({\r\n diagnosticResults: [],\r\n });\r\n const dispatch = useDispatch();\r\n const { analysisResult, analysisResultError, analysisResultSuccess } =\r\n useSelector((x: RootState) => x.analyses);\r\n useEffect(() => {\r\n if (!analysisResult.length) {\r\n dispatch(fetchAnalysisResults(patientId));\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (isNutritionist) {\r\n const mapped = mapDiagnostics(analysisResult);\r\n setmappedAnalysis({\r\n diagnosticResults: [\r\n ...mapped.diagnosticResults,\r\n ...mapped.intolerancesMain,\r\n ...mapped.intolerancesOther,\r\n ],\r\n });\r\n \r\n } else {\r\n setmappedAnalysis(mapDiagnostics(analysisResult));\r\n }\r\n }, [analysisResult, isNutritionist]);\r\n \r\n return (\r\n \r\n <>\r\n
    \r\n {analysisResultSuccess ? (\r\n mappedAnalysis?.diagnosticResults.map((a,idx) => {\r\n return ;\r\n })\r\n ) : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n false}\r\n text=\"Hubo un error al mostrar los diagnosticos\"\r\n success={false}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst DiagnosticScore = {\r\n 0: \"Bajo\",\r\n 1: \"Moderado\",\r\n 2: \"Alto\",\r\n};\r\n\r\nconst DiagnosticScoresByNutrient = (r) => {\r\n if(r.item === 'Niveles séricos de colesterol LDL') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n } else if(r.item === 'Requerimiento de grasas Omega 3') {\r\n return r.value === 0 ? 'REQUERIMIENTO NORMAL' : r.value === 1 ? 'REQUERIMIENTO MODERADO' : 'REQUERIMIENTO ALTO'\r\n } else if(r.item === 'Sensibilidad a la glucosa') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n } else if(r.item === 'Sensibilidad a la histamina') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n } else if(r.item === 'Requerimiento de calcio') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n } else if(r.item === 'Requerimiento de vitamina D') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n } else if(r.item === 'Requerimiento de vitamina A') {\r\n return r.value === 0 ? 'NIVELES NORMALES' : r.value === 1 ? 'NIVELES ALTOS' : 'NIVELES BAJOS'\r\n } else if(r.item === 'Requerimiento de vitamina B6') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n } else if(r.item === 'Requerimiento de vitamina B12') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n } else if(r.item === 'Requerimiento de magnesio') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n } else if(r.item === 'Respuesta al alcohol') {\r\n return r.value === 0 ? 'RESPUESTA NORMAL' : r.value === 1 ? 'RESPUESTA MODERADA' : 'RESPUESTA ACELERADA'\r\n } else if(r.item === 'Sensibilidad a la sal') {\r\n return r.value === 0 ? 'SENSIBILIDAD NORMAL' : r.value === 1 ? 'SENSIBILIDAD MODERADA' : 'SENSIBILIDAD ALTA'\r\n } else if(r.item === 'Actividad antioxidante') {\r\n return r.value === 0 ? 'ACTIVIDAD NORMAL' : r.value === 1 ? 'ACTIVIDAD MODERADA' : 'ACTIVIDAD DISMINUIDA'\r\n } else if(r.item === 'Niveles séricos de homocisteina') {\r\n return r.value === 0 ? 'NIVELES NORMALES' : r.value === 1 ? 'NIVELES MDOERADOS' : 'NIVELES AUMENTADOS'\r\n } else if(r.item === 'Equilibrio depuración hepática') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n } else if(r.item === 'Sensibilidad a la cafeína') {\r\n return r.value === 0 ? 'METABOLIZACIÓN RÁPIDA' : r.value === 1 ? 'METABOLIZACIÓN MODERADA' : 'METABOLIZACIÓN LENTA'\r\n } else if(r.item === 'Tolerancia a la lactosa') {\r\n return r.value === 0 ? 'TOLERANCIA NORMAL' : r.value === 1 ? 'TOLERANCIA MODERADA' : 'TOLERANCIA DISMINUIDA'\r\n } else if(r.item === 'Sensación de saciedad') {\r\n return r.value === 0 ? 'SACIEDAD HABITUAL' : r.value === 1 ? 'SACIEDAD INTERMEDIA' : 'SACIEDAD DISMINUIDA'\r\n } else if(r.item === 'Celiaquía') {\r\n return r.value === 0 ? 'VARIANTES NO ASOCIADAS' : r.value === 1 ? '' : 'VARIANTES ASOCIADAS'\r\n } else if(r.item === 'Composición muscular') {\r\n let res = r.snps[0].result\r\n if (res !== undefined) {\r\n return res === 'CC' ? 'FIBRAS RÁPIDAS' : res === 'CT' || res === 'TC' ? 'FIBRAS MIXTAS' : 'FIBRAS LENTAS'\r\n }else {\r\n return 'SIN INFORMACIÓN'\r\n }\r\n } else if(r.item === 'Capacidad aeróbica o atlética') {\r\n let res = r.snps[0].result\r\n if (res !== undefined) {\r\n return res === 'CC' ? 'CAPACIDAD SUPRANORMAL' : 'CAPACIDAD NORMAL'\r\n }else {\r\n return 'SIN INFORMACIÓN'\r\n }\r\n } else if(r.item === 'Cafeína en deporte') {\r\n return r.value === 0 ? 'METABOLIZACIÓN RÁPIDA' : r.value === 1 ? 'METABOLIZACIÓN MODERADA' : 'METABOLIZACIÓN LENTA'\r\n } else if(r.item === 'Grasas saturadas y peso corporal') {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n }else {\r\n return r.value === 0 ? 'RIESGO BAJO' : r.value === 1 ? 'RIESGO MODERADO' : 'RIESGO ALTO'\r\n }\r\n}\r\n\r\nconst DiagnosticValVerification = (r) => {\r\n let val = r.value;\r\n let res = r.snps[0].result\r\n if (r.item === 'Capacidad aeróbica o atlética') {\r\n if (res !== undefined) {\r\n res === 'CC' ? val = 0 : val = 2\r\n }\r\n return val\r\n } else if (r.item === 'Composición muscular') {\r\n if (res !== undefined) {\r\n res === 'CC' ? val= 0 : res === 'CT' || res === 'TC' ? val = 1 : val = 2\r\n }\r\n return val\r\n }else {\r\n return val\r\n }\r\n\r\n}\r\n\r\nfunction DiagnosticCard({ result }) {\r\n const [isOpen, setIsOpen] = useState(false); \r\n const toggleOpen = () => setIsOpen(!isOpen);\r\n //console.log(result);\r\n return (\r\n\r\n
    \r\n
    \r\n

    {result.item}

    \r\n
    \r\n
    \r\n
    {DiagnosticScoresByNutrient(result)}
    \r\n
    \r\n
    \r\n
    \r\n {isOpen && (\r\n
    \r\n\r\n
    \r\n
    \r\n

    De qué se trata?

    \r\n
    \r\n
    \r\n
    \r\n

    Resultado

    \r\n
    \r\n \r\n
    \r\n
    \r\n

    Entendiendo su resultado

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {DiagnosticScoresByNutrient(result)}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n\r\n \r\n
    \r\n
    \r\n

    Recomendaciones

    \r\n
    \r\n
    \r\n
    \r\n

    Bibliografía

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n )}\r\n
    \r\n\r\n\r\n \r\n )\r\n}\r\n\r\nexport default Diagnostics;\r\n\r\n\r\n/*\r\n /*
    \r\n
    \r\n

    {result.label}

    \r\n
    resultado
    \r\n
    \r\n \r\n {isOpen && ( // Esto asegura que el contenido solo se muestre si isOpen es true\r\n <>\r\n

    {DiagnosticScore[result.value]}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {result.desc[result.value]}

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

    {result.label}

    \r\n

    {DiagnosticScore[result.value]}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {result.desc[result.value]}

    \r\n
    \r\n */\r\n ","import React, { useEffect, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { fetchAnalysisResults } from \"../../store/analyses/actionCreators\";\r\nimport { RootState } from \"../../store/config/types\";\r\nimport { LoadingAnimation } from \"../animations/LoadingAnimation\";\r\nimport { FullWidthSnackbar } from \"../common/FullWidthSnackbar\";\r\nimport { mapDiagnostics } from \"./Diagnostics\";\r\n\r\ntype DiagnosticsProps = {\r\n patientId: string;\r\n};\r\n\r\nfunction Metabolisms({ patientId }: DiagnosticsProps) {\r\n const [mappedAnalysis, setmappedAnalysis] = useState({\r\n intolerancesMain: [],\r\n intolerancesOther: [],\r\n });\r\n const dispatch = useDispatch();\r\n const { analysisResult, analysisResultError, analysisResultSuccess } =\r\n useSelector((x: RootState) => x.analyses);\r\n useEffect(() => {\r\n if (!analysisResult.length) {\r\n dispatch(fetchAnalysisResults(patientId));\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n setmappedAnalysis(mapDiagnostics(analysisResult));\r\n }, [analysisResult]);\r\n\r\n return (\r\n <>\r\n
    \r\n {analysisResultSuccess ? (\r\n <>\r\n

    Principales

    \r\n
    \r\n {mappedAnalysis?.intolerancesMain?.map((a) => {\r\n return ;\r\n })}\r\n
    \r\n\r\n

    Alcohol, cafeína y comportamiento

    \r\n
    \r\n {mappedAnalysis?.intolerancesOther?.map((a) => {\r\n return ;\r\n })}\r\n
    \r\n \r\n ) : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n\r\n false}\r\n text=\"Hubo un error al mostrar los diagnosticos\"\r\n success={false}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst DiagnosticScore = {\r\n 0: \"Bajo\",\r\n 1: \"Moderado\",\r\n 2: \"Alto\",\r\n};\r\nfunction DiagnosticCard({ result }) {\r\n return (\r\n
    \r\n

    {result.label}

    \r\n

    {DiagnosticScore[result.value]}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {result.desc[result.value]}

    \r\n
    \r\n );\r\n}\r\n\r\nexport default Metabolisms;\r\n","// import { Tab, Tabs } from \"@material-ui/core\";\r\nimport { ButtonBase, Paper } from \"@material-ui/core\";\r\nimport {\r\n Assignment,\r\n BubbleChart,\r\n MeetingRoom,\r\n MenuBook,\r\n} from \"@material-ui/icons\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport search from \"../../assets/search-pizza.png\";\r\nimport ResultCard from \"./common/ResultCard\";\r\nimport Diagnostics from \"./Diagnostics\";\r\nimport Metabolisms from \"./Metabolisms\";\r\nimport CommonContainer from \"./common/CommonContainer\";\r\nimport { createNode } from \"typescript\";\r\nimport ResultsReport from \"./ResultsReport\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { number } from \"yup\";\r\nimport { fetchAnalysisFoods, fetchAnalysisResults } from \"../../store/analyses/actionCreators\";\r\nimport { FoodsResponse, FoodsResult } from \"../../store/analyses/types\";\r\nimport { RootState } from \"../../store/config/types\";\r\nimport { userAccount } from \"../../store/auth/selector\";\r\n\r\nfunction Results() {\r\n const [activeTab, setActiveTab] = useState(1);\r\n const dispatch = useDispatch();\r\n const actualUser = useSelector((state: RootState) => userAccount(state));\r\n const name = actualUser && actualUser.profile.firstName + \" \" + actualUser.profile.lastName;\r\n\r\n const getPdf = async (url) => {\r\n try {\r\n let response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type':'application/json',\r\n 'Authorization':'Bearer ' + localStorage.getItem('token')\r\n }\r\n });\r\n let data = await response.json();\r\n return data;\r\n } catch(error){\r\n console.log(error)\r\n }\r\n } \r\n\r\n const getPdfLink = () => {\r\n\r\n /* getPdf('https://services.mistergen.com/v1/Analyses/getpdf/')\r\n .then(res => {\r\n console.log(res);\r\n if(document.querySelector('.results-pdf') !== null) {\r\n return;\r\n }\r\n if(!res.link){ \r\n return\r\n }\r\n //console.log(res.link);\r\n let a = document.createElement('div');\r\n a.classList.add('results-pdf');\r\n a.innerHTML = `\r\n \r\n Ver informe de resultados en PDF\r\n \r\n `; \r\n document.querySelector('.dashboard').children[0].appendChild(a);\r\n //document.querySelector('.results-container').prepend(a);\r\n \r\n }).catch( error => {\r\n //console.log(error);\r\n return '';\r\n }); */\r\n return \r\n }\r\n\r\n \r\n useEffect(() => {\r\n if (\r\n localStorage.previouslyEntered === \"false\" ||\r\n !localStorage.previouslyEntered\r\n ) {\r\n setActiveTab(1);\r\n }\r\n return () => {\r\n localStorage.previouslyEntered = true;\r\n };\r\n }, []);\r\n return (\r\n \r\n {getPdfLink()}\r\n
    \r\n
    \r\n }\r\n id=\"1\"\r\n selected={activeTab == 1}\r\n />\r\n }\r\n id=\"2\"\r\n selected={activeTab == 2}\r\n />\r\n {/* }\r\n id=\"3\"\r\n selected={activeTab == 3}\r\n /> */}\r\n }\r\n id=\"4\"\r\n selected={activeTab == 4}\r\n />\r\n
    \r\n
    \r\n {activeTab == 0 ? (\r\n \r\n ) : null}\r\n {activeTab == 1 ? (\r\n \r\n ) : null}\r\n {activeTab == 2 ? (\r\n }\r\n />\r\n ) : null}\r\n {activeTab == 3 ? (\r\n }\r\n />\r\n ) : null}\r\n {activeTab == 4 ? (\r\n \r\n

    \r\n ADN: Siglas del ácido desoxirribonucleico responsable\r\n de contener toda la información genética usadas en el\r\n desarrollo y funcionamiento de todos los organismos vivos y\r\n algunos virus, información que es única e irrepetible en\r\n cada ser y es responsable de su transmisión hereditaria.\r\n Alelo: Un alelo es cada una de las dos o más versiones de un\r\n gen. Un individuo hereda dos alelos para cada gen, uno del\r\n padre y el otro de la madre. Fenotipo: Conjunto de\r\n caracteres visibles que un individuo presenta como resultado\r\n de la interacción entre su genotipo y el medio. Gen:\r\n Fragmente de ADN que funciona como unidad básica de\r\n transmisión de las características hereditarias.\r\n

    \r\n\r\n

    \r\n Genotipo: Conjunto de los genes que existen en el\r\n núcleo celular de cada individuo.\r\n

    \r\n\r\n

    \r\n Intolerancia: Incapacidad de un organismo para\r\n resistir y aceptar el aporte de determinadas sustancias, en\r\n especial alimentos o medicamentos. Metabolismo: Se puede\r\n definir el metabolismo corporal o el metabolismo energético\r\n como el conjunto de cambios físicos y químicos que se\r\n producen dentro del cuerpo humano para la obtención de\r\n energía a través de alguna fuente como son los alimentos.\r\n

    \r\n\r\n

    \r\n Polimorfismo: Es una variación en la secuencia de un\r\n lugar determinado del ADN entre los individuos de una\r\n población dicha variación debe aparecer en al menos el 1% de\r\n la población.\r\n

    \r\n\r\n

    \r\n Riesgo: El riesgo genético, se define como la\r\n presencia de determinados cambios o variaciones en la\r\n secuencia de ADN y/o la combinación de una serie de ellas en\r\n un individuo, que no son necesariamente anormales, pero que\r\n asociados pueden incrementar la susceptibilidad de\r\n desarrollar una determinada condición o enfermedad.\r\n

    \r\n\r\n

    \r\n En otras palabras, una persona ha heredado de sus padres una\r\n copia de un gen \"de riesgo\" que aunque no es un agente\r\n causal por sí mismo, sí hace más susceptible a la persona a\r\n desarrollar una condición particular. Si las condiciones\r\n ambientales son adecuadas y se produce la interacción con el\r\n gen \"de riesgo\" la condición se producirá.\r\n

    \r\n
    \r\n }\r\n />\r\n ) : null}\r\n
    \r\n
    \r\n \r\n );\r\n}\r\n\r\nfunction WelcomeCard({ setActiveTab, title, activeTab }) {\r\n return (\r\n \r\n
    \r\n

    {title}

    \r\n

    \r\n El resultado de su test nutrigenético le aportará información detallada sobre\r\n aquellos alimentos que su organismo asimila/ tolera mejor o peor\r\n indicando si usted debe preferir, moderar o evitar su consumo.\r\n

    \r\n

    \r\n Es importante tener en cuenta que el componente genético puede influir\r\n hasta en un 40% sobre la pérdida de peso.\r\n

    \r\n
    \r\n
    \r\n {/* {\r\n setActiveTab(activeTab + 1);\r\n localStorage.previouslyEntered = false;\r\n }}\r\n >\r\n Omitir y ver luego\r\n */}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nfunction Tab({ label, icon, id, selected, setSelected }) {\r\n return (\r\n \r\n setSelected(id)}\r\n className={`${selected ? \"selected\" : \"\"}`}\r\n >\r\n {label}\r\n {icon}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default Results;\r\n","import { Button, Checkbox, Icon, Paper } from \"@material-ui/core\";\r\nimport { Close, Delete, Tune } from \"@material-ui/icons\";\r\nimport { Field, Form, Formik } from \"formik\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { number } from \"yup\";\r\nimport { fetchAnalysisFoods } from \"../../store/analyses/actionCreators\";\r\nimport { FoodsResponse, FoodsResult } from \"../../store/analyses/types\";\r\nimport { RootState } from \"../../store/config/types\";\r\nimport { LoadingAnimation } from \"../animations/LoadingAnimation\";\r\nimport { FormCheckbox } from \"../common/forms/FormCheckbox\";\r\nimport { FullWidthSnackbar } from \"../common/FullWidthSnackbar\";\r\nimport CommonContainer from \"./common/CommonContainer\";\r\n\r\nconst types = [\"Sugerido con preferencia\", \"Sugerido\", \"Limitado\",\"No sugerido\"];\r\n\r\n/* const dictFoodsImg = {\r\n \"Refresco en polvo sin azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F97.jpg?alt=media&token=57ecb6dc-0e9b-4700-9a67-6370e7915328\",\r\n \"Cerveza light\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\r\n \"Cebollas moradas y blancas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F196.jpg?alt=media&token=bbe94993-3855-43c3-b921-084fa11dfbb7\",\r\n \"Leche entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche de vaca entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche de oveja/búfala\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche fermentada con probióticos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche vegetal de maní\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche vegetal de almendra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche semidescremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Leche descremada con 50% más proteínas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Mermelada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Mermelada de frutas industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Mermelada de frutas reducida en azúcar industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Mermelada de fruta casera sin azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Totopos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F108.jpg?alt=media&token=4edd4632-ec68-4549-9951-b4eab0747289\",\r\n \"Uva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F139.jpg?alt=media&token=bbbc9589-5d4e-423c-8e96-02a102a178b6\",\r\n \"Frijol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F174.jpg?alt=media&token=e0a3a072-4149-4d4d-a12b-07944aa79b14\",\r\n \"Porotos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F174.jpg?alt=media&token=e0a3a072-4149-4d4d-a12b-07944aa79b14\",\r\n \"Carne vacuna peceto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F67.jpg?alt=media&token=dbf1df41-38ee-41a8-8f85-b9d620b02c12\",\r\n \"Vacuno cortes magros (peceto, nalga, cuadrada, lomo)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F67.jpg?alt=media&token=dbf1df41-38ee-41a8-8f85-b9d620b02c12\",\r\n \"Manteca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F158.jpg?alt=media&token=30480bbe-d3e3-4bfc-a0d2-a62be1fc90bd\",\r\n \"Manteca/margarina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F158.jpg?alt=media&token=30480bbe-d3e3-4bfc-a0d2-a62be1fc90bd\",\r\n \"Café soluble\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\r\n \"Café preparado 230 ml:96 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\r\n \"Café preparado descafeinado 230 ml:5 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\r\n \"Bagel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F248.jpg?alt=media&token=9a99bcf8-4961-4fbb-8951-7b1e1668b911\",\r\n \"Helado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F161.jpg?alt=media&token=6aaadd8a-9c3e-4782-b7f1-e76af7854305\",\r\n \"Queso cheddar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F37.jpg?alt=media&token=e3547040-b73f-4bd0-8c9b-3e0dfc1f4710\",\r\n \"Leche descremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche de vaca descremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Salmon\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\r\n \"Mercurio moderado-alto (Mero, Caballa, Atún blanco en conserva, Espada, Salmón criadero)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\r\n \"Mercurio Bajo (Anchoa, Sardina, Merluza, Arenque, Abadejo, Calamar, Vieira, Lenguado, Sabalo, Salmón fresco o salvaje)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\r\n \"Granola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F240.jpg?alt=media&token=43623108-5fc8-4df9-98d0-ea43180d5e10\",\r\n \"Chicle sin azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F93.jpg?alt=media&token=9da768d7-c9b1-48d0-bb97-1eb7ae62b5a7\",\r\n \"Coñac\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F9.jpg?alt=media&token=9acc4763-68f1-4379-a9cf-cb47b232c8b2\",\r\n \"Lechuga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F208.jpg?alt=media&token=fff0484d-cc0c-4956-89be-2fdbf43e54c7\",\r\n \"Yogurt entero natural\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur de leche de vaca entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Leche desclactosada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Leche desclactosada vaca entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Leche de vaca desclactosada entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Refresco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\r\n \"Nachos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\r\n \"Snacks salados (papas, nachos, palitos)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\r\n \"Snacks salados(papitas, chizito, palito)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\r\n \"Sandía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F138.jpg?alt=media&token=413cce58-fb54-4226-8cc1-3dd17cf9b5c9\",\r\n \"Soja texturizada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\r\n \"Soja procesada (Ultra Procesada)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\r\n \"Soja fermentada (Natural)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\r\n \"Tofu\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\r\n \"Costillar de cerdo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F72.jpg?alt=media&token=03919ce9-ab69-46d7-b0dd-56319ad7942b\",\r\n \"Ajonjolí\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F141.jpg?alt=media&token=0f34569c-3328-4d30-bc7b-3bbe2d131a0c\",\r\n \"Té verde\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F226.jpg?alt=media&token=4e4dfe76-2117-431d-90f6-c292dc82c575\",\r\n \"Hot cake\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F253.jpg?alt=media&token=55ec5e3e-c2ed-4278-ad0b-0b2c63b1daae\",\r\n \"Dulce de leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F164.jpg?alt=media&token=fe5a859c-a0ce-4702-b648-8d680f2776d4\",\r\n \"Cordero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F20.jpg?alt=media&token=d856d019-8502-4f85-a53d-3d6cd8e86d71\",\r\n \"Yogurt descremado natural\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur de leche de vaca descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur de leche de vaca deslactosado entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur de leche de vaca deslactosado descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur vegetal (coco, avena, soja)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Kefir de leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Pechuga de pollo sin piel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F64.jpg?alt=media&token=ce97e84c-c67b-4a88-b78f-d7627ecbb360\",\r\n \"Pechuga de pollo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F64.jpg?alt=media&token=ce97e84c-c67b-4a88-b78f-d7627ecbb360\",\r\n \"Galleta de nuez\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F237.jpg?alt=media&token=a9cb0341-0968-4a81-ad10-9a719a45a875\",\r\n \"Gelatina diet\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F182.jpg?alt=media&token=d1d1c7e5-577f-4cae-b71e-9ab35d47dcdc\",\r\n \"Champaña\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F8.jpg?alt=media&token=f5c2ea97-012f-4c2c-b725-5b0cd721b074\",\r\n \"Tomate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F213.jpg?alt=media&token=b99e45f2-f65b-44a0-b47b-f18975ac8ed2\",\r\n \"Azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\r\n \"azúcar de caña\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\r\n \"azúcar de coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\r\n \"Croissant salado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\r\n \"Naranja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F133.jpg?alt=media&token=330afcf4-6350-4ce8-bc62-bdcb49f446a8\",\r\n \"Alubia\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F173.jpg?alt=media&token=d73ad411-74b9-4836-8d3a-6d399734ff3d\",\r\n \"Queso sandwich\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F68.jpg?alt=media&token=6a5d7c67-c2f7-45b7-9496-853132c9fda4\",\r\n \"Semilla de calabaza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\r\n \"Café express\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\r\n \"Café espresso molido de un solo origen 30ml: 64 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\r\n \"Quinoa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F113.jpg?alt=media&token=ef86d6cf-cd08-4bf8-87f9-ee226c058608\",\r\n \"Yogurt frutado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F165.jpg?alt=media&token=0cb48af6-a5d4-4d87-9e39-908e607a4159\",\r\n \"Mortadela\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F26.jpg?alt=media&token=d0a17f4e-8194-4a66-9a98-4adc1ee76172\",\r\n \"Carne vacuna paleta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F48.jpg?alt=media&token=2d36496f-0c1f-407f-b038-fc471dad2e9c\",\r\n \"Vacuno cortes semigrasos (roast beef, bife angosto, paleta, tortuguita)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F48.jpg?alt=media&token=2d36496f-0c1f-407f-b038-fc471dad2e9c\",\r\n \"Cheesecake\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F232.jpg?alt=media&token=a58d8c88-7b51-45e9-825c-35a12c106e36\",\r\n \"Salsa de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F185.jpg?alt=media&token=fb738a0c-8631-42d9-b388-8cecebe31472\",\r\n \"Brandy\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F7.jpg?alt=media&token=9175f157-2baf-458a-8167-4131c6a73b15\",\r\n \"Rúcula\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F214.jpg?alt=media&token=90971cf5-984f-40a0-bd0d-6445727c5f1d\",\r\n \"Mousse de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F89.jpg?alt=media&token=01bc2687-80cb-4f87-82f1-7afd729b2598\",\r\n \"Papas fritas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F106.jpg?alt=media&token=7e5c8bc5-4ca6-49a9-8270-455be7e8ad07\",\r\n \"Arándanos \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F115.jpg?alt=media&token=fb1b1c35-544a-46b2-a84a-1cf9614eb25b\",\r\n \"Lentejas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F178.jpg?alt=media&token=76f0fbe4-cc63-4906-81d2-7950fba044ca\",\r\n \"Queso cuartirolo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F77.jpg?alt=media&token=3927e56a-0a54-4e7b-acf9-ae120b776bda\",\r\n \"Piñón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F148.jpg?alt=media&token=cdb60a52-4fd4-4ae5-ad95-7afe21d0a9bb\",\r\n \"Te negro 230 ml: 40-120 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Boldo\": \"\",\r\n \"Te negro descafeinado 230 ml: 3 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Té de hierbas 230 ml: 0 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Té negro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Té de arándanos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Té de roiboos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Pan blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F254.jpg?alt=media&token=aeb7b88d-b5ce-4f68-a734-9766aa507608\",\r\n \"Panes de harinas sugeridas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F254.jpg?alt=media&token=aeb7b88d-b5ce-4f68-a734-9766aa507608\",\r\n \"Chocolatada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\r\n \"Huevo frito\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F23.jpg?alt=media&token=8eb111c1-5d39-47f6-af91-9f69da252c3a\",\r\n \"Atún en agua drenado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F53.jpg?alt=media&token=cf425386-1c7d-40f3-b4c5-ceb80e34a0a6\",\r\n \"Brownie\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F231.jpg?alt=media&token=f3ea2321-fb5e-4d6d-ac83-4073f9989aed\",\r\n \"Agua mineral\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\r\n \"Agua mineral de manantial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\r\n \"Agua mineral infusionada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\r\n \"Vino blanco dulce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F16.jpg?alt=media&token=81cf77d1-5ee5-499a-afba-7270be61302a\",\r\n \"Coliflor\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F202.jpg?alt=media&token=a4ada038-1bc8-4127-9585-0706a3caae94\",\r\n \"Chicle\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\r\n \"Golosinas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\r\n \"glutamato, nitritos, sulfito y colorante amarillo E 102, E110, rojo E 124.\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\r\n \"Cereza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F116.jpg?alt=media&token=85eec064-2bfb-4c01-876b-5eb9d715299c\",\r\n \"Hummus\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F177.jpg?alt=media&token=f605a53b-dde5-44e2-9588-78604b888554\",\r\n \"Carne vacuna vacio\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F82.jpg?alt=media&token=f6ea6421-8c8b-4274-9d5a-4efa515e705e\",\r\n \"Mani\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F144.jpg?alt=media&token=511d60c8-2f0b-488c-bf09-5e9ea7929d12\",\r\n \"Maní\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F144.jpg?alt=media&token=511d60c8-2f0b-488c-bf09-5e9ea7929d12\",\r\n \"Bebidas energéticas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F217.jpg?alt=media&token=44221cf2-48c7-4c8b-8d38-67805dcf4f4d\",\r\n \"Bebida energizante 250 ml:80 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F217.jpg?alt=media&token=44221cf2-48c7-4c8b-8d38-67805dcf4f4d\",\r\n \"Avena instantánea\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F247.jpg?alt=media&token=6bd1fb21-d2f8-4ce0-bd1f-8e326548a94b\",\r\n \"Leche saborizada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F162.jpg?alt=media&token=f96ce859-b2da-4049-a4a0-796b411e560d\",\r\n \"Queso de cabra \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\r\n \"Carne vacuna lomo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F46.jpg?alt=media&token=451c3766-5941-438b-8463-74b97b2df8f3\",\r\n \"Muffin\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F241.jpg?alt=media&token=f4332e62-f15f-4a4a-9025-5071a6285ac7\",\r\n \"Caldo verdura casero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F223.jpg?alt=media&token=430c42ce-65a2-4123-82b8-37e09f81d314\",\r\n \"Aguardiente\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F5.jpg?alt=media&token=a562ef61-5cc0-4712-9d3d-5d50422dc422\",\r\n \"Hongos crudos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\r\n \"Setas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\r\n \"Chocolate con leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F86.jpg?alt=media&token=ff6f7fff-aa61-413e-8ed9-ca0d500ce38a\",\r\n \"Chocolate con leche 30 gr: 6 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F86.jpg?alt=media&token=ff6f7fff-aa61-413e-8ed9-ca0d500ce38a\",\r\n \"Papaya\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F134.jpg?alt=media&token=4037ef57-d950-4df3-9404-fa624b883f2a\",\r\n \"Garbanzos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F175.jpg?alt=media&token=80402972-80af-40ea-97a1-3280a7e5d3ec\",\r\n \"Sardinas en aceite\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F83.jpg?alt=media&token=de4c636a-1d2b-4095-a0f3-3ededb39d24e\",\r\n \"Semilla de girasol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\r\n \"Semilla girasol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\r\n \"Café instantáneo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\r\n \"Café instantáneo 230 ml: 70 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\r\n \"Café instantáneo descafeinado 230 ml : 2-5 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\r\n \"Capsulas varias de café\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\r\n \"Amaranto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F109.jpg?alt=media&token=e6f1cf7a-2777-4022-b68f-b3ab12e0716e\",\r\n \"Nugget de pollo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F229.jpg?alt=media&token=5b47109c-8c1f-4860-8c2b-194a0a8692fb\",\r\n \"Queso parmesano\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F49.jpg?alt=media&token=4e9a6ac5-72b9-4733-93f6-0b01da094202\",\r\n \"Queso pasta dura o semidura\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F49.jpg?alt=media&token=4e9a6ac5-72b9-4733-93f6-0b01da094202\",\r\n \"Galleta rellena\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F239.jpg?alt=media&token=0f067534-a7f0-407d-b0d6-7d21413e8cb4\",\r\n \"Té de limón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F186.jpg?alt=media&token=c3e76f52-9779-4337-9a48-933bf5187e2c\",\r\n \"Vino tinto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F17.jpg?alt=media&token=08309757-c55c-4f26-8086-563d28f692b4\",\r\n \"Vino 1 copa 100 ml 10 a 15°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F17.jpg?alt=media&token=08309757-c55c-4f26-8086-563d28f692b4\",\r\n \"Flor de calabaza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F205.jpg?alt=media&token=e11ddbc6-8fbc-4c16-a0fc-6d85b86c8883\",\r\n \"Mermelada light\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Guayaba\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F122.jpg?alt=media&token=64a55424-6249-4f92-8f2b-ec5420d4293a\",\r\n \"Habas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F176.jpg?alt=media&token=aeb4074b-6284-4a40-8a13-3dffc71a59b6\",\r\n \"Carne vacuna pulpa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F81.jpg?alt=media&token=70833e8a-ac0a-4dba-a90f-782198887ca4\",\r\n \"Avellana\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F143.jpg?alt=media&token=c066092a-fa44-4fdd-9ace-d16ab47681dc\",\r\n \"Cocoa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\r\n \"Cacao amargo en polvo 10 gr:13 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\r\n \"Avena arrollada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F111.jpg?alt=media&token=ed21aefb-7a4d-455f-9535-83d984e99651\",\r\n \"Queso provolone\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F28.jpg?alt=media&token=727c1c4f-5cf9-49be-aaf1-891215c03a78\",\r\n \"Queso cottage\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F66.jpg?alt=media&token=32e6d417-5df0-4910-9189-b3d7a3b1500f\",\r\n \"Pastel de frutas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F244.jpg?alt=media&token=abdb5df4-ff90-4f26-8bb4-2e8858ffb86f\",\r\n \"Edulcorante\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F183.jpg?alt=media&token=6dbb49d6-96ad-4357-b381-59463e994fb2\",\r\n \"Edulcorantes artificiales\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F183.jpg?alt=media&token=6dbb49d6-96ad-4357-b381-59463e994fb2\",\r\n \"Whisky\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F19.jpg?alt=media&token=15ce9716-7d31-4ce4-a7db-f62c875a1fd7\",\r\n \"Whisky o Ron 1 copa 50 ml 40 a 42°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F19.jpg?alt=media&token=15ce9716-7d31-4ce4-a7db-f62c875a1fd7\",\r\n \"Pepino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F209.jpg?alt=media&token=2d0ff821-6ec3-435a-aa0e-1dcd0e8ec45f\",\r\n \"Miel de abeja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F101.jpg?alt=media&token=9d9dc74e-6580-4ca0-876d-54c995f94787\",\r\n \"Miel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F101.jpg?alt=media&token=9d9dc74e-6580-4ca0-876d-54c995f94787\",\r\n \"Piña\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F136.jpg?alt=media&token=9aeb9040-9304-484f-a346-b462de01d8e0\",\r\n \"Carne vacuna aguja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F78.jpg?alt=media&token=b78f147f-bf36-40c6-a0db-0cfa56e30980\",\r\n \"Mantequilla de mani\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F146.jpg?alt=media&token=95cf3ce1-4fa8-4a11-8c68-91b3109dd693\",\r\n \"Refresco de cola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\r\n \"Bebidas cola 355 ml:40 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\r\n \"Pop natural\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F112.jpg?alt=media&token=e41462f1-e342-4b33-8e7b-23cd81cc5f9a\",\r\n \"Yema de huevo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F42.jpg?alt=media&token=c4c0628b-17c2-4658-add2-8b7f020cf8d0\",\r\n \"Huevo de gallina entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F42.jpg?alt=media&token=c4c0628b-17c2-4658-add2-8b7f020cf8d0\",\r\n \"Carne vacuna cuadril\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F45.jpg?alt=media&token=d6b37c18-909e-42b9-870c-e95e03f608a1\",\r\n \"Pan dulce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F242.jpg?alt=media&token=60f2c6b0-a1e4-4b1c-a0dc-f38aa8db43ff\",\r\n \"Productos de pastelería industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F242.jpg?alt=media&token=60f2c6b0-a1e4-4b1c-a0dc-f38aa8db43ff\",\r\n \"Sal\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F184.jpg?alt=media&token=01caa577-ac99-4d73-9667-bf5e1fa0facc\",\r\n \"Sal de mesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F184.jpg?alt=media&token=01caa577-ac99-4d73-9667-bf5e1fa0facc\",\r\n \"Vodka\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F18.jpg?alt=media&token=c248ad7c-7e6c-4a15-b6c9-3d82889c84bb\",\r\n \"Vodka 1 copa 50 ml 42°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F18.jpg?alt=media&token=c248ad7c-7e6c-4a15-b6c9-3d82889c84bb\",\r\n \"Chile habanero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F198.jpg?alt=media&token=dd0ecd83-6a6b-40c8-a120-5b25fc15956e\",\r\n \"Flan comercial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F87.jpg?alt=media&token=aec2fa7b-62eb-4666-81fb-e1ba3730b003\",\r\n \"Mango\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F128.jpg?alt=media&token=dd5b1f6b-f672-4fab-a9aa-02f439104872\",\r\n \"Carne vacuna nalga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F80.jpg?alt=media&token=941ab988-db3e-42d7-8463-09c0ed3897e1\",\r\n \"Mayonesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F159.jpg?alt=media&token=b110101f-1fdf-4c50-aa50-218adf3dc9de\",\r\n \"Croutones\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F249.jpg?alt=media&token=b3866ff1-d89e-4976-9591-275b2ae1ca7e\",\r\n \"Queso danbo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F31.jpg?alt=media&token=93340c62-5d6f-4903-8d91-02a6d1ab5adb\",\r\n \"Lenguado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\r\n \"Pescados de mar magros (Gatuzo, Brótola, Merluza, Corvina, Lenguado)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\r\n \"Dona \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F234.jpg?alt=media&token=4f0b3dc7-bf01-4ac7-b19d-1fc54666ad0e\",\r\n \"Anís dulce o seco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F6.jpg?alt=media&token=2e6a76bc-1c90-4851-b4cf-910a1cbc2d77\",\r\n \"Cilantro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F200.jpg?alt=media&token=01ad8d28-bd00-4f10-a5b5-8f92beb63ff6\",\r\n \"Chocolate blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F85.jpg?alt=media&token=ffd3f2a8-0e64-4960-a207-cae4ed22f11f\",\r\n \"Moras\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F132.jpg?alt=media&token=07c2bb4c-b3df-4906-a702-ef2d78da86d9\",\r\n \"Queso muzzarella\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F70.jpg?alt=media&token=b8c7523e-bb6c-4b35-a3e7-29720e8897ad\",\r\n \"Aceitunas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F153.jpg?alt=media&token=03fe0801-b9e7-4f9e-b20b-69aac5aeff55\",\r\n \"Arroz blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\r\n \"Arroz integral\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\r\n \"Arroz Yamani\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\r\n \"Frankfurter\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F41.jpg?alt=media&token=7cad9625-ccfe-4dd3-bbb0-e7dbf4c84699\",\r\n \"Camarón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F58.jpg?alt=media&token=f4e2e52e-fb23-4d59-a2c5-da16ca104352\",\r\n \"Galleta con chispas de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F235.jpg?alt=media&token=50baf4b1-b91b-49f0-83e2-3de95921c3f1\",\r\n \"Galletitas industriales\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F235.jpg?alt=media&token=50baf4b1-b91b-49f0-83e2-3de95921c3f1\",\r\n \"Ron blanco o añejo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F12.jpg?alt=media&token=b2958b98-23fd-4aba-969b-7201bf011504\",\r\n \"Acelga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F187.jpg?alt=media&token=45f75472-f9e4-4a65-9e38-3c4d013444ae\",\r\n \"Lima\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F125.jpg?alt=media&token=516f6a4c-df30-4533-a566-2658c044fd2f\",\r\n \"Morcilla\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F79.jpg?alt=media&token=fd12da78-f021-4f56-abce-8faa0dd63cd2\",\r\n \"Guacamole\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F156.jpg?alt=media&token=22d3c19a-75be-48f7-b922-0b4c71081a25\",\r\n \"Maicena\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F230.jpg?alt=media&token=119f1275-45ea-499e-9163-b302932b2fce\",\r\n \"Lomito canadiense\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\r\n \"Cangrejo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F59.jpg?alt=media&token=d4ac166e-9001-4b97-b444-96ee86fa38ff\",\r\n \"Galleta cubierta de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F236.jpg?alt=media&token=6ac5fb2c-5b58-443c-9192-4d0e9c311954\",\r\n \"Oporto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F11.jpg?alt=media&token=6fefb80d-94d4-40cf-922e-0cb8bbacd542\",\r\n \"Alcaucil\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F188.jpg?alt=media&token=d90dec3b-2ce2-42dd-b252-57d000ec7d7a\",\r\n \"Helado palito de agua\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F103.jpg?alt=media&token=490446c5-fa61-486f-a4f1-1f04566a6b0c\",\r\n \"Duraznos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F119.jpg?alt=media&token=4e1a504e-b408-4122-b6b7-8c021db10923\",\r\n \"Queso requeson\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\r\n \"Queso vaca blanco untable entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\r\n \"Queso vaca blanco untable descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\r\n \"Almendra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F142.jpg?alt=media&token=942132fd-efc3-465f-9fbe-e12772779278\",\r\n \"Granola baja en grasa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F252.jpg?alt=media&token=63f668e5-c77f-4b63-95b5-6c81bb64384f\",\r\n \"Queso brie\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F35.jpg?alt=media&token=ed383611-a97f-4b00-86e8-91ec7be35992\",\r\n \"Queso ricotta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\r\n \"Ricotta entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\r\n \"Ricotta descremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\r\n \"Cupcake\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F233.jpg?alt=media&token=feb4df99-90ce-4680-b36f-08223f99b741\",\r\n \"Ginebra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F10.jpg?alt=media&token=9ee6bdac-85b1-4e0c-bc44-bc7c90ee6926\",\r\n \"Zanahoria\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F215.jpg?alt=media&token=acc19d5e-63d3-4ef9-8618-a6c2eda6991c\",\r\n \"Caramelo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F91.jpg?alt=media&token=c8164016-661f-463a-a795-602d060f3545\",\r\n \"Manzanas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F129.jpg?alt=media&token=13a63bcf-bbc9-4d05-bb01-569d174d9da2\",\r\n \"Panceta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F75.jpg?alt=media&token=d29903c1-03d0-4a47-a606-766a2625143b\",\r\n \"Coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F155.jpg?alt=media&token=1009695b-d812-4ce4-802b-c7e1c519f26a\",\r\n \"Coco rallado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F155.jpg?alt=media&token=1009695b-d812-4ce4-802b-c7e1c519f26a\",\r\n \"Galleta salada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F251.jpg?alt=media&token=389db2d2-a071-4488-983b-24cf3a7323fe\",\r\n \"Queso camembert\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\r\n \"Queso vaca pasta blanda descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\r\n \"Queso vaca pasta blanda doble crema\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\r\n \"Carne picada magra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F33.jpg?alt=media&token=26613d09-d006-4cd3-84d7-b4f1b2f6ff10\",\r\n \"Pastel de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F243.jpg?alt=media&token=b8dba348-1385-48f7-b721-cc67fcd098e3\",\r\n \"Vino blanco seco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F16.jpg?alt=media&token=81cf77d1-5ee5-499a-afba-7270be61302a\",\r\n \"Morrones\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F210.jpg?alt=media&token=f07db15c-ded8-44a3-a765-fe762efe812f\",\r\n \"Chicle bajo en azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F93.jpg?alt=media&token=9da768d7-c9b1-48d0-bb97-1eb7ae62b5a7\",\r\n \"Maracuyá\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F130.jpg?alt=media&token=70891080-6b89-4d24-80dd-cdd30af3fc53\",\r\n \"Longaniza \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F74.jpg?alt=media&token=b2396aca-7519-44dc-b9b1-55641343b1a9\",\r\n \"Chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F145.jpg?alt=media&token=59a5cfc7-5edc-4441-b274-6ae30380676e\",\r\n \"Semillas de chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F145.jpg?alt=media&token=59a5cfc7-5edc-4441-b274-6ae30380676e\",\r\n \"Galleta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F250.jpg?alt=media&token=21cc1d2d-58ef-4729-aa11-1bfa318940aa\",\r\n \"Carne vacuna asado de tira\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F32.jpg?alt=media&token=433fe74e-717a-4921-bdab-0e3d3ae8a8c1\",\r\n \"Vacuno cortes grasos (asado, vacío, falda, aguja)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F32.jpg?alt=media&token=433fe74e-717a-4921-bdab-0e3d3ae8a8c1\",\r\n \"Calamar \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F57.jpg?alt=media&token=28419660-0066-4fad-bd13-858afc8b6621\",\r\n \"Galleta de avena \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F237.jpg?alt=media&token=a9cb0341-0968-4a81-ad10-9a719a45a875\",\r\n \"Fernet\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F4.jpg?alt=media&token=47e34e5c-3132-4deb-8b38-6d6f7748ae80\",\r\n \"Fernet-cola (20-80%) 1 vaso 100 ml-43°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F4.jpg?alt=media&token=47e34e5c-3132-4deb-8b38-6d6f7748ae80\",\r\n \"Arúgula\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F190.jpg?alt=media&token=e9dc9dc6-89a2-4f4e-b225-d5bda16f1a9f\",\r\n \"Paleta de caramelo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F102.jpg?alt=media&token=b0b4cdd3-07e9-442c-82b0-7a9b3fa1cf58\",\r\n \"Ciruela\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F117.jpg?alt=media&token=eacb9646-c0cd-43a3-8b24-c9d4992432d2\",\r\n \"Huevo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F73.jpg?alt=media&token=e92e7694-f454-4608-b383-1def32715409\",\r\n \"Nuez\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F147.jpg?alt=media&token=d255f242-f0df-490c-9157-cb3b75a44ec2\",\r\n \"Nuez de brasil o castaña pará\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F147.jpg?alt=media&token=d255f242-f0df-490c-9157-cb3b75a44ec2\",\r\n \"Pasta cocida\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F255.jpg?alt=media&token=ed4d911d-fa26-4b49-98d0-72bc828b5e44\",\r\n \"Pollo al spiedo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F30.jpg?alt=media&token=24276809-d25e-4262-9004-10eb582efc0b\",\r\n \"Pulpo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F65.jpg?alt=media&token=3e3f0a8d-2998-4d45-9fd7-baf5596e7a07\",\r\n \"Tortilla de harina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F245.jpg?alt=media&token=b1a01b58-a246-4134-8b48-a2f551649eed\",\r\n \"Tequila\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F14.jpg?alt=media&token=33568e53-70ae-4181-88e0-4a56ef3c10c2\",\r\n \"Berenjena \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F191.jpg?alt=media&token=bfacf072-7c5e-4ca3-a186-586b0555a61e\",\r\n \"Croissant dulce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\r\n \"Productos de panadería industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\r\n \"Pera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F135.jpg?alt=media&token=f2c89da1-e60b-48a7-8a8c-7fa17e0f3c9e\",\r\n \"Pate de lengua\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F76.jpg?alt=media&token=d374f5bf-29b3-469f-bb61-8659228243a2\",\r\n \"Pistacho\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F149.jpg?alt=media&token=ded01708-e33d-44bd-a248-11819c22d968\",\r\n \"Salame\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F40.jpg?alt=media&token=4fefe73e-2312-4667-96c1-1d1d2ea588e6\",\r\n \"Brotola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\r\n \"Pescado de rio grasos (Pati, Pacú, Surubí, Dorado, Trucha)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\r\n \"Waffle\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F246.jpg?alt=media&token=27fc98cd-002a-4744-8b7c-c5ccd044a30a\",\r\n \"Cerveza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\r\n \"Cerveza 1 vaso 200 ml 9°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\r\n \"Brócoli\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F194.jpg?alt=media&token=5f6a2aff-c073-44ba-a6f3-5854353f7e02\",\r\n \"Gomitas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F96.jpg?alt=media&token=7165aefe-e204-4521-b277-dd9ccbd9097a\",\r\n \"Melón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F131.jpg?alt=media&token=9cc155d5-86b3-4976-af81-9dca4a58c982\",\r\n \"Chicharrón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F71.jpg?alt=media&token=4250674e-9345-4c36-99b5-5a1e96fcdf21\",\r\n \"Aceite de canola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de girasol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de girasol alto oleico\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de lino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite maiz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite oliva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite sesamo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de uva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de palta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite rico en omega 3 (ALA) Lino, canola, nuez\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Fondue de queso\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F22.jpg?alt=media&token=e485c9c6-b459-40e9-8436-718e5cf6a93c\",\r\n \"Queso requeson light\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F51.jpg?alt=media&token=7415152c-6b28-405c-9300-7539b03aadfc\",\r\n \"Sidra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F13.jpg?alt=media&token=5a1fcda1-d8b7-46b4-bbc5-4e04db89e0f5\",\r\n \"Sidra 1 copa 100 ml 3 a 8 °\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F13.jpg?alt=media&token=5a1fcda1-d8b7-46b4-bbc5-4e04db89e0f5\",\r\n \"Champignones\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F197.jpg?alt=media&token=015565c9-6058-4bd7-9c5c-518aac9553c3\",\r\n \"Chocolate amargo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\r\n \"Cacao amargo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\r\n \"Chocolate 70-80% cacao\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\r\n \"Chocolate amargo 80% cacao 30 gr: 20 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\r\n \"Zarzamora\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F132.jpg?alt=media&token=07c2bb4c-b3df-4906-a702-ef2d78da86d9\",\r\n \"Crema de leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F160.jpg?alt=media&token=e65df7a7-6193-4af2-8419-84c59d948dbd\",\r\n \"Jamón cocido\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\r\n \"Fiambres y embutidos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\r\n \"Clara de huevo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F60.jpg?alt=media&token=46c76578-35ca-46e2-b183-a31f0c112447\",\r\n \"Remolacha\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F193.jpg?alt=media&token=72e8a2d6-be79-42ae-bfba-fd308b315963\",\r\n \"Gelatina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F95.jpg?alt=media&token=68e75c89-2445-4d46-a5e6-1fb39406503a\",\r\n \"Mandarina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F127.jpg?alt=media&token=ac8eb860-9de3-4cc5-b6b7-d39ba8a83dd0\",\r\n \"Palta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F154.jpg?alt=media&token=011a1b08-8146-4b0c-9958-169dc15caf7a\",\r\n \"Carne vacuna picada grasa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F33.jpg?alt=media&token=26613d09-d006-4cd3-84d7-b4f1b2f6ff10\",\r\n \"Atún en aceite\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F54.jpg?alt=media&token=5d58f0d2-d13c-492b-9311-840b61819cb7\",\r\n \"Conservas, enlatados\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F54.jpg?alt=media&token=5d58f0d2-d13c-492b-9311-840b61819cb7\",\r\n \"Calabaza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F195.jpg?alt=media&token=1ef98b27-a0b2-4a9e-9293-97a56f0045db\",\r\n \"Flan en polvo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F87.jpg?alt=media&token=aec2fa7b-62eb-4666-81fb-e1ba3730b003\",\r\n \"Higo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F123.jpg?alt=media&token=d8e24d9a-910b-4980-9849-366833299d4e\",\r\n \"Margarina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\r\n \"Peperoni\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F29.jpg?alt=media&token=05193ad5-9b2f-493b-9cab-c382f0e8c025\",\r\n \"Langostino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F61.jpg?alt=media&token=66fce339-b795-486c-8f9a-ba895aa658a2\",\r\n \"Espárragos \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F203.jpg?alt=media&token=8787b0e4-655e-4219-9482-0563f358b427\",\r\n \"Jugo de frutas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F97.jpg?alt=media&token=57ecb6dc-0e9b-4700-9a67-6370e7915328\",\r\n \"Limón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F126.jpg?alt=media&token=99941f7b-51a0-4ea1-b824-3fd1010fa6ae\",\r\n \"Lengua vacuna \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F25.jpg?alt=media&token=452482ea-c5df-4313-9cf0-b48a1c26c43a\",\r\n \"Queso magro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F50.jpg?alt=media&token=87caeea6-dd4d-4642-bcf0-f9d1a280e3cd\",\r\n \"Hongos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\r\n \"Salsa ketchup\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F104.jpg?alt=media&token=07bd1f90-be81-4df2-8e90-d7d48238eb2b\",\r\n \"Condimentos industriales (ketchup, mostaza etc)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F104.jpg?alt=media&token=07bd1f90-be81-4df2-8e90-d7d48238eb2b\",\r\n \"Banana\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F137.jpg?alt=media&token=e37bf3b0-5ea4-4276-9f95-2993192b71cb\",\r\n \"Leonesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F27.jpg?alt=media&token=b59ca35f-e95c-410a-a4b0-73abb12b3a93\",\r\n \"Lomo de atún\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F52.jpg?alt=media&token=cbe415c5-c093-496e-83b7-7f86fa64de4f\",\r\n \"Apio\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F189.jpg?alt=media&token=af22e58c-86ff-4780-ada4-bc882bde56a9\",\r\n \"Frutilla\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F121.jpg?alt=media&token=3238fd05-4602-47e0-9ba4-7047c4b01e94\",\r\n \"Pollo muslo sin piel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F21.jpg?alt=media&token=b35953b1-c752-45bb-9502-b5abacfd5b9a\",\r\n \"Pata y muslo de pollo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F21.jpg?alt=media&token=b35953b1-c752-45bb-9502-b5abacfd5b9a\",\r\n \"Atún al agua \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F44.jpg?alt=media&token=3531282a-7fe6-4785-b085-cbf112e93319\",\r\n \"Repollo brusela, Repollo blanco y colorado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F201.jpg?alt=media&token=a77c48d5-61a0-417c-91de-ff4f47b03957\",\r\n \"Kiwi\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F124.jpg?alt=media&token=d5fbc6ea-f325-47d8-8972-461f9f54f8f2\",\r\n \"Queso blue cheese\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F34.jpg?alt=media&token=d913385a-1f31-4f94-9ed4-f61d251cf8cf\",\r\n \"Bacalao\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F55.jpg?alt=media&token=c6e5fe4a-8ab8-4a7a-9ab2-b39ec234a48b\",\r\n \"Pescados ricos en omega 3 (Caballa, Trucha, Sardina, Salmón salvaje, Jurel, Arenque, Bacalao, Vieiras, Ostras)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F55.jpg?alt=media&token=c6e5fe4a-8ab8-4a7a-9ab2-b39ec234a48b\",\r\n \"Espinaca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F204.jpg?alt=media&token=d66a4adc-ffc5-4946-82ba-94b48b273f8f\",\r\n \"Agua de coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F114.jpg?alt=media&token=7174c094-7407-4532-8154-b327b859aaed\",\r\n \"Rábano\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F211.jpg?alt=media&token=91ea7c2f-8bfe-4639-9efb-881a0f392668\",\r\n \"Dátiles\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\r\n \"Dátil\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\r\n \"Pasta de dátiles\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\r\n \"Chile jalapeño\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F199.jpg?alt=media&token=59973379-3e94-45cb-abbc-421ba13aeae6\",\r\n \"Frambuesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F120.jpg?alt=media&token=ad722c34-680e-471a-9cf1-2a7c0db4583c\",\r\n \"Alfalfa \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F206.jpg?alt=media&token=c7f06c20-d416-4f20-9fd3-f8e2259f8c4e\",\r\n \"Berro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F192.jpg?alt=media&token=de88c0f3-69e6-4f17-ac76-5d95eb5f2503\",\r\n \"Achicoria\": \"\",\r\n \"Ají\": \"\",\r\n \"Berenjena\": \"\",\r\n \"Brotes de soja\": \"\",\r\n \"Brotes de alfalfa\": \"\",\r\n \"Cebolla de verdeo\": \"\",\r\n \"Chauchas\": \"\",\r\n \"Escarola\": \"\",\r\n \"Espárragos\": \"\",\r\n \"Hinojo\": \"\",\r\n \"Kale\": \"\",\r\n \"Papa\": \"\",\r\n \"Batata\": \"\",\r\n \"Maíz\": \"\",\r\n \"Mandioca\": \"\",\r\n \"Perejil\": \"\",\r\n \"Puerro\": \"\",\r\n \"Rabanito\": \"\",\r\n \"Radicheta\": \"\",\r\n \"Zapallito\": \"\",\r\n \"Zucchini\": \"\",\r\n \"Kabutia o Zapallo japonés\": \"\",\r\n \"Ananá\": \"\",\r\n \"Granada\": \"\",\r\n \"Pomelo\": \"\",\r\n \"Arvejas\": \"\",\r\n \"Lupinos\": \"\",\r\n \"Trigo\": \"\",\r\n \"Cebada\": \"\",\r\n \"Centeno\": \"\",\r\n \"Mijo\": \"\",\r\n \"Teff\": \"\",\r\n \"Sorgo\": \"\",\r\n \"Almidón de maíz\": \"\",\r\n \"Harina de arroz\": \"\",\r\n \"Harina de cebada\": \"\",\r\n \"Harina de centeno\": \"\",\r\n \"Harina de chía\": \"\",\r\n \"Harina de quinoa\": \"\",\r\n \"Harina de amaranto\": \"\",\r\n \"Harina de algarroba\": \"\",\r\n \"Harina de garbanzos\": \"\",\r\n \"Harina de maíz\": \"\",\r\n \"Harina de trigo\": \"\",\r\n \"Harina de trigo integral\": \"\",\r\n \"Harina de soja\": \"\",\r\n \"Queso vegetal Castaña cajú\": \"\",\r\n \"Queso vegetal de almendras\": \"\",\r\n \"Cerdo Bondiola\": \"\",\r\n \"Cerdo Lomo\": \"\",\r\n \"Achuras vaca\": \"\",\r\n \"Harina de almendras, girasol, nuez, avellanas\": \"\",\r\n \"Castañas de cajú\": \"\",\r\n \"Semilla lino\": \"\",\r\n \"Semilla sesamo\": \"\",\r\n \"Semilla zapallo\": \"\",\r\n \"Semillas ricas en omega 3 (ALA)\": \"\",\r\n \"Dulces compactos (batata, membrillo)\": \"\",\r\n \"Sirope de arce\": \"\",\r\n \"Pasta de pasas de uvas deshidratadas\": \"\",\r\n \"Stevia hojas\": \"\",\r\n \"Pasas de uva\": \"\",\r\n \"Ghee\": \"\",\r\n \"Manteca de maní\": \"\",\r\n \"Jengibre\": \"\",\r\n \"Curcuma\": \"\",\r\n \"Clavo de olor\": \"\",\r\n \"Azafrán\": \"\",\r\n \"cardamomo\": \"\",\r\n \"pimienta\": \"\",\r\n \"Nuez moscada\": \"\",\r\n \"canela\": \"\",\r\n \"Tomillo\": \"\",\r\n \"menta\": \"\",\r\n \"Romero\": \"\",\r\n \"Ortiga\": \"\",\r\n \"Ajo fresco o en polvo\": \"\",\r\n \"Polvo de hornear\": \"\",\r\n \"Vinagre de manzana orgánico\": \"\",\r\n \"Té blanco\": \"\",\r\n \"Matcha\": \"\",\r\n \"Yerba mate\": \"\",\r\n \"Leche dorada\": \"\",\r\n \"Diente de león\": \"\",\r\n \"Alcachofera\": \"\",\r\n \"Yerba mate 230 ml\": \"\",\r\n \"Kombucha\": \"\",\r\n \"Kefir de agua\": \"\",\r\n \"Whey protein (trazas de lactosa)\": \"\",\r\n \"Whey protein Isolate\": \"\",\r\n \"Sopas deshidratadas\": \"\"\r\n} */\r\nconst dictFoodsImg = {\r\n \"Refresco en polvo sin azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F97.jpg?alt=media&token=57ecb6dc-0e9b-4700-9a67-6370e7915328\",\r\n \"Cerveza light\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\r\n \"Cebollas moradas y blancas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F196.jpg?alt=media&token=bbe94993-3855-43c3-b921-084fa11dfbb7\",\r\n \"Leche entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche de vaca entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche de oveja/búfala\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche fermentada con probióticos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche vegetal de maní\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche vegetal de almendra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche vegetal de avena\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche semidescremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Leche deslactosada vaca entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Leche descremada con 50% más proteínas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Mermelada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Mermelada de frutas industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Mermelada de frutas reducida en azúcar industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Mermelada de fruta casera sin azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Totopos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F108.jpg?alt=media&token=4edd4632-ec68-4549-9951-b4eab0747289\",\r\n \"Uva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F139.jpg?alt=media&token=bbbc9589-5d4e-423c-8e96-02a102a178b6\",\r\n \"Frijol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F174.jpg?alt=media&token=e0a3a072-4149-4d4d-a12b-07944aa79b14\",\r\n \"Porotos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F174.jpg?alt=media&token=e0a3a072-4149-4d4d-a12b-07944aa79b14\",\r\n \"Carne vacuna peceto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F67.jpg?alt=media&token=dbf1df41-38ee-41a8-8f85-b9d620b02c12\",\r\n \"Vacuno cortes magros (peceto, nalga, cuadrada, lomo)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F67.jpg?alt=media&token=dbf1df41-38ee-41a8-8f85-b9d620b02c12\",\r\n \"Manteca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F158.jpg?alt=media&token=30480bbe-d3e3-4bfc-a0d2-a62be1fc90bd\",\r\n \"Manteca/margarina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F158.jpg?alt=media&token=30480bbe-d3e3-4bfc-a0d2-a62be1fc90bd\",\r\n \"Café soluble\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\r\n \"Café preparado 230 ml:96 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\r\n \"Café preparado descafeinado 230 ml:5 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\r\n \"Bagel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F248.jpg?alt=media&token=9a99bcf8-4961-4fbb-8951-7b1e1668b911\",\r\n \"Helado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F161.jpg?alt=media&token=6aaadd8a-9c3e-4782-b7f1-e76af7854305\",\r\n \"Queso cheddar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F37.jpg?alt=media&token=e3547040-b73f-4bd0-8c9b-3e0dfc1f4710\",\r\n \"Leche descremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Leche de vaca descremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\r\n \"Salmon\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\r\n \"Mercurio moderado-alto (Mero, Caballa, Atún blanco en conserva, Espada, Salmón criadero)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\r\n \"Mercurio Bajo (Anchoa, Sardina, Merluza, Arenque, Abadejo, Calamar, Vieira, Lenguado, Sabalo, Salmón fresco o salvaje)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\r\n \"Granola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F240.jpg?alt=media&token=43623108-5fc8-4df9-98d0-ea43180d5e10\",\r\n \"Chicle sin azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F93.jpg?alt=media&token=9da768d7-c9b1-48d0-bb97-1eb7ae62b5a7\",\r\n \"Coñac\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F9.jpg?alt=media&token=9acc4763-68f1-4379-a9cf-cb47b232c8b2\",\r\n \"Lechuga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F208.jpg?alt=media&token=fff0484d-cc0c-4956-89be-2fdbf43e54c7\",\r\n \"Yogurt entero natural\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur de leche de vaca entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Leche desclactosada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Leche desclactosada vaca entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Leche de vaca deslactosada entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\r\n \"Refresco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\r\n \"Nachos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\r\n \"Snacks salados (papas, nachos, palitos)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\r\n \"Snacks salados( papitas, chizito, palito)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\r\n \"Sandía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F138.jpg?alt=media&token=413cce58-fb54-4226-8cc1-3dd17cf9b5c9\",\r\n \"Soja texturizada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\r\n \"Soja procesada (Ultra Procesada)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\r\n \"Soja fermentada (Natural)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\r\n \"Tofu\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\r\n \"Costillar de cerdo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F72.jpg?alt=media&token=03919ce9-ab69-46d7-b0dd-56319ad7942b\",\r\n \"Ajonjolí\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F141.jpg?alt=media&token=0f34569c-3328-4d30-bc7b-3bbe2d131a0c\",\r\n \"Té verde\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F226.jpg?alt=media&token=4e4dfe76-2117-431d-90f6-c292dc82c575\",\r\n \"Hot cake\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F253.jpg?alt=media&token=55ec5e3e-c2ed-4278-ad0b-0b2c63b1daae\",\r\n \"Dulce de leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F164.jpg?alt=media&token=fe5a859c-a0ce-4702-b648-8d680f2776d4\",\r\n \"Cordero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F20.jpg?alt=media&token=d856d019-8502-4f85-a53d-3d6cd8e86d71\",\r\n \"Yogurt descremado natural\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur de leche de vaca descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur de leche de vaca deslactosado entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur de leche de vaca deslactosado descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Yogur vegetal ( coco, avena, soja)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Kefir de leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\r\n \"Pechuga de pollo sin piel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F64.jpg?alt=media&token=ce97e84c-c67b-4a88-b78f-d7627ecbb360\",\r\n \"Pechuga de pollo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F64.jpg?alt=media&token=ce97e84c-c67b-4a88-b78f-d7627ecbb360\",\r\n \"Galleta de nuez\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F237.jpg?alt=media&token=a9cb0341-0968-4a81-ad10-9a719a45a875\",\r\n \"Gelatina diet\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F182.jpg?alt=media&token=d1d1c7e5-577f-4cae-b71e-9ab35d47dcdc\",\r\n \"Champaña\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F8.jpg?alt=media&token=f5c2ea97-012f-4c2c-b725-5b0cd721b074\",\r\n \"Tomate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F213.jpg?alt=media&token=b99e45f2-f65b-44a0-b47b-f18975ac8ed2\",\r\n \"Azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\r\n \"azúcar de caña\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\r\n \"azúcar de coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\r\n \"Croissant salado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\r\n \"Naranja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F133.jpg?alt=media&token=330afcf4-6350-4ce8-bc62-bdcb49f446a8\",\r\n \"Alubia\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F173.jpg?alt=media&token=d73ad411-74b9-4836-8d3a-6d399734ff3d\",\r\n \"Queso sandwich\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F68.jpg?alt=media&token=6a5d7c67-c2f7-45b7-9496-853132c9fda4\",\r\n \"Semilla de calabaza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\r\n \"Café express\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\r\n \"Café espresso molido de un solo origen 30ml: 64 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\r\n \"Café espresso molido de un solo origen 30ml : 64 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\r\n \"Café espresso molido de un solo origen 30ml: 64 mg \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\r\n \"Quinoa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F113.jpg?alt=media&token=ef86d6cf-cd08-4bf8-87f9-ee226c058608\",\r\n \"Yogurt frutado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F165.jpg?alt=media&token=0cb48af6-a5d4-4d87-9e39-908e607a4159\",\r\n \"Mortadela\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F26.jpg?alt=media&token=d0a17f4e-8194-4a66-9a98-4adc1ee76172\",\r\n \"Carne vacuna paleta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F48.jpg?alt=media&token=2d36496f-0c1f-407f-b038-fc471dad2e9c\",\r\n \"Vacuno cortes semigrasos (roast beef, bife angosto, paleta, tortuguita)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F48.jpg?alt=media&token=2d36496f-0c1f-407f-b038-fc471dad2e9c\",\r\n \"Cheesecake\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F232.jpg?alt=media&token=a58d8c88-7b51-45e9-825c-35a12c106e36\",\r\n \"Salsa de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F185.jpg?alt=media&token=fb738a0c-8631-42d9-b388-8cecebe31472\",\r\n \"Brandy\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F7.jpg?alt=media&token=9175f157-2baf-458a-8167-4131c6a73b15\",\r\n \"Rúcula\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F214.jpg?alt=media&token=90971cf5-984f-40a0-bd0d-6445727c5f1d\",\r\n \"Mousse de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F89.jpg?alt=media&token=01bc2687-80cb-4f87-82f1-7afd729b2598\",\r\n \"Papas fritas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F106.jpg?alt=media&token=7e5c8bc5-4ca6-49a9-8270-455be7e8ad07\",\r\n \"Arándanos \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F115.jpg?alt=media&token=fb1b1c35-544a-46b2-a84a-1cf9614eb25b\",\r\n \"Lentejas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F178.jpg?alt=media&token=76f0fbe4-cc63-4906-81d2-7950fba044ca\",\r\n \"Queso cuartirolo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F77.jpg?alt=media&token=3927e56a-0a54-4e7b-acf9-ae120b776bda\",\r\n \"Piñón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F148.jpg?alt=media&token=cdb60a52-4fd4-4ae5-ad95-7afe21d0a9bb\",\r\n \"Te negro 230 ml: 40-120 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Boldo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Te negro descafeinado 230 ml: 3 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Té de hierbas 230 ml: 0 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Té negro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Té de arándanos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Té de roiboos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Pan blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F254.jpg?alt=media&token=aeb7b88d-b5ce-4f68-a734-9766aa507608\",\r\n \"Panes de harinas sugeridas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F254.jpg?alt=media&token=aeb7b88d-b5ce-4f68-a734-9766aa507608\",\r\n \"Chocolatada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\r\n \"Huevo frito\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F23.jpg?alt=media&token=8eb111c1-5d39-47f6-af91-9f69da252c3a\",\r\n \"Atún en agua drenado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F53.jpg?alt=media&token=cf425386-1c7d-40f3-b4c5-ceb80e34a0a6\",\r\n \"Brownie\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F231.jpg?alt=media&token=f3ea2321-fb5e-4d6d-ac83-4073f9989aed\",\r\n \"Agua mineral\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\r\n \"Agua mineral de manantial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\r\n \"Agua mineral infusionada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\r\n \"Vino blanco dulce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F16.jpg?alt=media&token=81cf77d1-5ee5-499a-afba-7270be61302a\",\r\n \"Coliflor\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F202.jpg?alt=media&token=a4ada038-1bc8-4127-9585-0706a3caae94\",\r\n \"Chicle\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\r\n \"Golosinas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\r\n \"glutamato, nitritos, sulfito y colorante amarillo E 102, E110, rojo E 124.\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\r\n \"Cereza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F116.jpg?alt=media&token=85eec064-2bfb-4c01-876b-5eb9d715299c\",\r\n \"Hummus\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F177.jpg?alt=media&token=f605a53b-dde5-44e2-9588-78604b888554\",\r\n \"Carne vacuna vacio\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F82.jpg?alt=media&token=f6ea6421-8c8b-4274-9d5a-4efa515e705e\",\r\n \"Mani\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F144.jpg?alt=media&token=511d60c8-2f0b-488c-bf09-5e9ea7929d12\",\r\n \"Maní\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F144.jpg?alt=media&token=511d60c8-2f0b-488c-bf09-5e9ea7929d12\",\r\n \"Bebidas energéticas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F217.jpg?alt=media&token=44221cf2-48c7-4c8b-8d38-67805dcf4f4d\",\r\n \"Bebida energizante 250 ml:80 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F217.jpg?alt=media&token=44221cf2-48c7-4c8b-8d38-67805dcf4f4d\",\r\n \"Avena instantánea\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F247.jpg?alt=media&token=6bd1fb21-d2f8-4ce0-bd1f-8e326548a94b\",\r\n \"Leche saborizada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F162.jpg?alt=media&token=f96ce859-b2da-4049-a4a0-796b411e560d\",\r\n \"Queso de cabra \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\r\n \"Carne vacuna lomo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F46.jpg?alt=media&token=451c3766-5941-438b-8463-74b97b2df8f3\",\r\n \"Muffin\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F241.jpg?alt=media&token=f4332e62-f15f-4a4a-9025-5071a6285ac7\",\r\n \"Caldo verdura casero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F223.jpg?alt=media&token=430c42ce-65a2-4123-82b8-37e09f81d314\",\r\n \"Aguardiente\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F5.jpg?alt=media&token=a562ef61-5cc0-4712-9d3d-5d50422dc422\",\r\n \"Hongos crudos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\r\n \"Setas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\r\n \"Chocolate con leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F86.jpg?alt=media&token=ff6f7fff-aa61-413e-8ed9-ca0d500ce38a\",\r\n \"Chocolate con leche 30 gr: 6 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F86.jpg?alt=media&token=ff6f7fff-aa61-413e-8ed9-ca0d500ce38a\",\r\n \"Papaya\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F134.jpg?alt=media&token=4037ef57-d950-4df3-9404-fa624b883f2a\",\r\n \"Garbanzos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F175.jpg?alt=media&token=80402972-80af-40ea-97a1-3280a7e5d3ec\",\r\n \"Sardinas en aceite\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F83.jpg?alt=media&token=de4c636a-1d2b-4095-a0f3-3ededb39d24e\",\r\n \"Semilla de girasol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\r\n \"Semilla girasol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\r\n \"Café instantáneo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\r\n \"Café instantáneo 230 ml: 70 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\r\n \"Café instantáneo descafeinado 230 ml : 2-5 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\r\n \"Capsulas varias de café\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\r\n \"Amaranto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F109.jpg?alt=media&token=e6f1cf7a-2777-4022-b68f-b3ab12e0716e\",\r\n \"Nugget de pollo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F229.jpg?alt=media&token=5b47109c-8c1f-4860-8c2b-194a0a8692fb\",\r\n \"Queso parmesano\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F49.jpg?alt=media&token=4e9a6ac5-72b9-4733-93f6-0b01da094202\",\r\n \"Queso pasta dura o semidura\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F49.jpg?alt=media&token=4e9a6ac5-72b9-4733-93f6-0b01da094202\",\r\n \"Galleta rellena\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F239.jpg?alt=media&token=0f067534-a7f0-407d-b0d6-7d21413e8cb4\",\r\n \"Té de limón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F186.jpg?alt=media&token=c3e76f52-9779-4337-9a48-933bf5187e2c\",\r\n \"Vino tinto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F17.jpg?alt=media&token=08309757-c55c-4f26-8086-563d28f692b4\",\r\n \"Vino 1 copa 100 ml 10 a 15°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F17.jpg?alt=media&token=08309757-c55c-4f26-8086-563d28f692b4\",\r\n \"Flor de calabaza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F205.jpg?alt=media&token=e11ddbc6-8fbc-4c16-a0fc-6d85b86c8883\",\r\n \"Mermelada light\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\r\n \"Guayaba\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F122.jpg?alt=media&token=64a55424-6249-4f92-8f2b-ec5420d4293a\",\r\n \"Habas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F176.jpg?alt=media&token=aeb4074b-6284-4a40-8a13-3dffc71a59b6\",\r\n \"Carne vacuna pulpa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F81.jpg?alt=media&token=70833e8a-ac0a-4dba-a90f-782198887ca4\",\r\n \"Avellana\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F143.jpg?alt=media&token=c066092a-fa44-4fdd-9ace-d16ab47681dc\",\r\n \"Cocoa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\r\n \"Cacao amargo en polvo 10 gr:13 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\r\n \"Avena arrollada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F111.jpg?alt=media&token=ed21aefb-7a4d-455f-9535-83d984e99651\",\r\n \"Queso provolone\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F28.jpg?alt=media&token=727c1c4f-5cf9-49be-aaf1-891215c03a78\",\r\n \"Queso cottage\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F66.jpg?alt=media&token=32e6d417-5df0-4910-9189-b3d7a3b1500f\",\r\n \"Pastel de frutas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F244.jpg?alt=media&token=abdb5df4-ff90-4f26-8bb4-2e8858ffb86f\",\r\n \"Edulcorante\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F183.jpg?alt=media&token=6dbb49d6-96ad-4357-b381-59463e994fb2\",\r\n \"Edulcorantes artificiales\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F183.jpg?alt=media&token=6dbb49d6-96ad-4357-b381-59463e994fb2\",\r\n \"Whisky\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F19.jpg?alt=media&token=15ce9716-7d31-4ce4-a7db-f62c875a1fd7\",\r\n \"Whisky o Ron 1 copa 50 ml 40 a 42°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F19.jpg?alt=media&token=15ce9716-7d31-4ce4-a7db-f62c875a1fd7\",\r\n \"Pepino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F209.jpg?alt=media&token=2d0ff821-6ec3-435a-aa0e-1dcd0e8ec45f\",\r\n \"Miel de abeja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F101.jpg?alt=media&token=9d9dc74e-6580-4ca0-876d-54c995f94787\",\r\n \"Miel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F101.jpg?alt=media&token=9d9dc74e-6580-4ca0-876d-54c995f94787\",\r\n \"Piña\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F136.jpg?alt=media&token=9aeb9040-9304-484f-a346-b462de01d8e0\",\r\n \"Carne vacuna aguja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F78.jpg?alt=media&token=b78f147f-bf36-40c6-a0db-0cfa56e30980\",\r\n \"Mantequilla de mani\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F146.jpg?alt=media&token=95cf3ce1-4fa8-4a11-8c68-91b3109dd693\",\r\n \"Refresco de cola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\r\n \"Bebidas cola 355 ml:40 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\r\n \"Pop natural\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F112.jpg?alt=media&token=e41462f1-e342-4b33-8e7b-23cd81cc5f9a\",\r\n \"Yema de huevo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F42.jpg?alt=media&token=c4c0628b-17c2-4658-add2-8b7f020cf8d0\",\r\n \"Huevo de gallina entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F42.jpg?alt=media&token=c4c0628b-17c2-4658-add2-8b7f020cf8d0\",\r\n \"Carne vacuna cuadril\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F45.jpg?alt=media&token=d6b37c18-909e-42b9-870c-e95e03f608a1\",\r\n \"Pan dulce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F242.jpg?alt=media&token=60f2c6b0-a1e4-4b1c-a0dc-f38aa8db43ff\",\r\n \"Productos de pastelería industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F242.jpg?alt=media&token=60f2c6b0-a1e4-4b1c-a0dc-f38aa8db43ff\",\r\n \"Sal\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F184.jpg?alt=media&token=01caa577-ac99-4d73-9667-bf5e1fa0facc\",\r\n \"Sal de mesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F184.jpg?alt=media&token=01caa577-ac99-4d73-9667-bf5e1fa0facc\",\r\n \"Vodka\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F18.jpg?alt=media&token=c248ad7c-7e6c-4a15-b6c9-3d82889c84bb\",\r\n \"Vodka 1 copa 50 ml 42°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F18.jpg?alt=media&token=c248ad7c-7e6c-4a15-b6c9-3d82889c84bb\",\r\n \"Chile habanero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F198.jpg?alt=media&token=dd0ecd83-6a6b-40c8-a120-5b25fc15956e\",\r\n \"Flan comercial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F87.jpg?alt=media&token=aec2fa7b-62eb-4666-81fb-e1ba3730b003\",\r\n \"Mango\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F128.jpg?alt=media&token=dd5b1f6b-f672-4fab-a9aa-02f439104872\",\r\n \"Carne vacuna nalga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F80.jpg?alt=media&token=941ab988-db3e-42d7-8463-09c0ed3897e1\",\r\n \"Mayonesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F159.jpg?alt=media&token=b110101f-1fdf-4c50-aa50-218adf3dc9de\",\r\n \"Croutones\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F249.jpg?alt=media&token=b3866ff1-d89e-4976-9591-275b2ae1ca7e\",\r\n \"Queso danbo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F31.jpg?alt=media&token=93340c62-5d6f-4903-8d91-02a6d1ab5adb\",\r\n \"Lenguado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\r\n \"Pescados de mar magros (Gatuzo, Brótola, Merluza, Corvina, Lenguado)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\r\n \"Dona \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F234.jpg?alt=media&token=4f0b3dc7-bf01-4ac7-b19d-1fc54666ad0e\",\r\n \"Anís dulce o seco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F6.jpg?alt=media&token=2e6a76bc-1c90-4851-b4cf-910a1cbc2d77\",\r\n \"Cilantro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F200.jpg?alt=media&token=01ad8d28-bd00-4f10-a5b5-8f92beb63ff6\",\r\n \"Chocolate blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F85.jpg?alt=media&token=ffd3f2a8-0e64-4960-a207-cae4ed22f11f\",\r\n \"Moras\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F132.jpg?alt=media&token=07c2bb4c-b3df-4906-a702-ef2d78da86d9\",\r\n \"Queso muzzarella\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F70.jpg?alt=media&token=b8c7523e-bb6c-4b35-a3e7-29720e8897ad\",\r\n \"Aceitunas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F153.jpg?alt=media&token=03fe0801-b9e7-4f9e-b20b-69aac5aeff55\",\r\n \"Arroz blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\r\n \"Arroz integral\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\r\n \"Arroz Yamani\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\r\n \"Frankfurter\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F41.jpg?alt=media&token=7cad9625-ccfe-4dd3-bbb0-e7dbf4c84699\",\r\n \"Camarón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F58.jpg?alt=media&token=f4e2e52e-fb23-4d59-a2c5-da16ca104352\",\r\n \"Galleta con chispas de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F235.jpg?alt=media&token=50baf4b1-b91b-49f0-83e2-3de95921c3f1\",\r\n \"Galletitas industriales\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F235.jpg?alt=media&token=50baf4b1-b91b-49f0-83e2-3de95921c3f1\",\r\n \"Ron blanco o añejo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F12.jpg?alt=media&token=b2958b98-23fd-4aba-969b-7201bf011504\",\r\n \"Acelga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F187.jpg?alt=media&token=45f75472-f9e4-4a65-9e38-3c4d013444ae\",\r\n \"Lima\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F125.jpg?alt=media&token=516f6a4c-df30-4533-a566-2658c044fd2f\",\r\n \"Morcilla\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F79.jpg?alt=media&token=fd12da78-f021-4f56-abce-8faa0dd63cd2\",\r\n \"Guacamole\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F156.jpg?alt=media&token=22d3c19a-75be-48f7-b922-0b4c71081a25\",\r\n \"Maicena\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F230.jpg?alt=media&token=119f1275-45ea-499e-9163-b302932b2fce\",\r\n \"Lomito canadiense\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\r\n \"Cangrejo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F59.jpg?alt=media&token=d4ac166e-9001-4b97-b444-96ee86fa38ff\",\r\n \"Galleta cubierta de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F236.jpg?alt=media&token=6ac5fb2c-5b58-443c-9192-4d0e9c311954\",\r\n \"Oporto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F11.jpg?alt=media&token=6fefb80d-94d4-40cf-922e-0cb8bbacd542\",\r\n \"Alcaucil\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F188.jpg?alt=media&token=d90dec3b-2ce2-42dd-b252-57d000ec7d7a\",\r\n \"Helado palito de agua\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F103.jpg?alt=media&token=490446c5-fa61-486f-a4f1-1f04566a6b0c\",\r\n \"Duraznos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F119.jpg?alt=media&token=4e1a504e-b408-4122-b6b7-8c021db10923\",\r\n \"Queso requeson\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\r\n \"Queso vaca blanco untable entero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\r\n \"Queso vaca blanco untable descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\r\n \"Almendra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F142.jpg?alt=media&token=942132fd-efc3-465f-9fbe-e12772779278\",\r\n \"Granola baja en grasa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F252.jpg?alt=media&token=63f668e5-c77f-4b63-95b5-6c81bb64384f\",\r\n \"Queso brie\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F35.jpg?alt=media&token=ed383611-a97f-4b00-86e8-91ec7be35992\",\r\n \"Queso ricotta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\r\n \"Ricotta entera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\r\n \"Ricotta descremada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\r\n \"Cupcake\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F233.jpg?alt=media&token=feb4df99-90ce-4680-b36f-08223f99b741\",\r\n \"Ginebra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F10.jpg?alt=media&token=9ee6bdac-85b1-4e0c-bc44-bc7c90ee6926\",\r\n \"Zanahoria\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F215.jpg?alt=media&token=acc19d5e-63d3-4ef9-8618-a6c2eda6991c\",\r\n \"Caramelo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F91.jpg?alt=media&token=c8164016-661f-463a-a795-602d060f3545\",\r\n \"Manzanas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F129.jpg?alt=media&token=13a63bcf-bbc9-4d05-bb01-569d174d9da2\",\r\n \"Panceta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F75.jpg?alt=media&token=d29903c1-03d0-4a47-a606-766a2625143b\",\r\n \"Coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F155.jpg?alt=media&token=1009695b-d812-4ce4-802b-c7e1c519f26a\",\r\n \"Coco rallado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F155.jpg?alt=media&token=1009695b-d812-4ce4-802b-c7e1c519f26a\",\r\n \"Galleta salada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F251.jpg?alt=media&token=389db2d2-a071-4488-983b-24cf3a7323fe\",\r\n \"Queso camembert\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\r\n \"Queso vaca pasta blanda descremado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\r\n \"Queso vaca pasta blanda doble crema\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\r\n \"Carne picada magra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F33.jpg?alt=media&token=26613d09-d006-4cd3-84d7-b4f1b2f6ff10\",\r\n \"Pastel de chocolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F243.jpg?alt=media&token=b8dba348-1385-48f7-b721-cc67fcd098e3\",\r\n \"Vino blanco seco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F16.jpg?alt=media&token=81cf77d1-5ee5-499a-afba-7270be61302a\",\r\n \"Morrones\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F210.jpg?alt=media&token=f07db15c-ded8-44a3-a765-fe762efe812f\",\r\n \"Chicle bajo en azúcar\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F93.jpg?alt=media&token=9da768d7-c9b1-48d0-bb97-1eb7ae62b5a7\",\r\n \"Maracuyá\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F130.jpg?alt=media&token=70891080-6b89-4d24-80dd-cdd30af3fc53\",\r\n \"Longaniza \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F74.jpg?alt=media&token=b2396aca-7519-44dc-b9b1-55641343b1a9\",\r\n \"Chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F145.jpg?alt=media&token=59a5cfc7-5edc-4441-b274-6ae30380676e\",\r\n \"Semillas de chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F145.jpg?alt=media&token=59a5cfc7-5edc-4441-b274-6ae30380676e\",\r\n \"Galleta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F250.jpg?alt=media&token=21cc1d2d-58ef-4729-aa11-1bfa318940aa\",\r\n \"Carne vacuna asado de tira\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F32.jpg?alt=media&token=433fe74e-717a-4921-bdab-0e3d3ae8a8c1\",\r\n \"Vacuno cortes grasos (asado, vacio, falda, aguja)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F32.jpg?alt=media&token=433fe74e-717a-4921-bdab-0e3d3ae8a8c1\",\r\n \"Calamar \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F57.jpg?alt=media&token=28419660-0066-4fad-bd13-858afc8b6621\",\r\n \"Galleta de avena \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F237.jpg?alt=media&token=a9cb0341-0968-4a81-ad10-9a719a45a875\",\r\n \"Fernet\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F4.jpg?alt=media&token=47e34e5c-3132-4deb-8b38-6d6f7748ae80\",\r\n \"Fernet-cola (20-80%) 1 vaso 100 ml-43°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F4.jpg?alt=media&token=47e34e5c-3132-4deb-8b38-6d6f7748ae80\",\r\n \"Arúgula\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F190.jpg?alt=media&token=e9dc9dc6-89a2-4f4e-b225-d5bda16f1a9f\",\r\n \"Paleta de caramelo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F102.jpg?alt=media&token=b0b4cdd3-07e9-442c-82b0-7a9b3fa1cf58\",\r\n \"Ciruela\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F117.jpg?alt=media&token=eacb9646-c0cd-43a3-8b24-c9d4992432d2\",\r\n \"Huevo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F73.jpg?alt=media&token=e92e7694-f454-4608-b383-1def32715409\",\r\n \"Nuez\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F147.jpg?alt=media&token=d255f242-f0df-490c-9157-cb3b75a44ec2\",\r\n \"Nuez de brasil o castaña pará\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F147.jpg?alt=media&token=d255f242-f0df-490c-9157-cb3b75a44ec2\",\r\n \"Pasta cocida\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F255.jpg?alt=media&token=ed4d911d-fa26-4b49-98d0-72bc828b5e44\",\r\n \"Pollo al spiedo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F30.jpg?alt=media&token=24276809-d25e-4262-9004-10eb582efc0b\",\r\n \"Pulpo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F65.jpg?alt=media&token=3e3f0a8d-2998-4d45-9fd7-baf5596e7a07\",\r\n \"Tortilla de harina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F245.jpg?alt=media&token=b1a01b58-a246-4134-8b48-a2f551649eed\",\r\n \"Tequila\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F14.jpg?alt=media&token=33568e53-70ae-4181-88e0-4a56ef3c10c2\",\r\n \"Berenjena \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F191.jpg?alt=media&token=bfacf072-7c5e-4ca3-a186-586b0555a61e\",\r\n \"Croissant dulce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\r\n \"Productos de panadería industrial\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\r\n \"Pera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F135.jpg?alt=media&token=f2c89da1-e60b-48a7-8a8c-7fa17e0f3c9e\",\r\n \"Pate de lengua\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F76.jpg?alt=media&token=d374f5bf-29b3-469f-bb61-8659228243a2\",\r\n \"Pistacho\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F149.jpg?alt=media&token=ded01708-e33d-44bd-a248-11819c22d968\",\r\n \"Salame\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F40.jpg?alt=media&token=4fefe73e-2312-4667-96c1-1d1d2ea588e6\",\r\n \"Brotola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\r\n \"Pescado de rio grasos (Pati, Pacú, Surubí, Dorado, Trucha)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\r\n \"Waffle\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F246.jpg?alt=media&token=27fc98cd-002a-4744-8b7c-c5ccd044a30a\",\r\n \"Cerveza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\r\n \"Cerveza 1 vaso 200 ml 9°\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\r\n \"Brócoli\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F194.jpg?alt=media&token=5f6a2aff-c073-44ba-a6f3-5854353f7e02\",\r\n \"Gomitas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F96.jpg?alt=media&token=7165aefe-e204-4521-b277-dd9ccbd9097a\",\r\n \"Melón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F131.jpg?alt=media&token=9cc155d5-86b3-4976-af81-9dca4a58c982\",\r\n \"Chicharrón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F71.jpg?alt=media&token=4250674e-9345-4c36-99b5-5a1e96fcdf21\",\r\n \"Aceite de canola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de girasol\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de girasol alto oleico\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de lino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite maiz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite oliva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite sesamo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de uva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de palta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Aceite rico en omega 3 (ALA) Lino, canola, nuez\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\r\n \"Fondue de queso\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F22.jpg?alt=media&token=e485c9c6-b459-40e9-8436-718e5cf6a93c\",\r\n \"Queso requeson light\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F51.jpg?alt=media&token=7415152c-6b28-405c-9300-7539b03aadfc\",\r\n \"Sidra\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F13.jpg?alt=media&token=5a1fcda1-d8b7-46b4-bbc5-4e04db89e0f5\",\r\n \"Sidra 1 copa 100 ml 3 a 8 °\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F13.jpg?alt=media&token=5a1fcda1-d8b7-46b4-bbc5-4e04db89e0f5\",\r\n \"Champignones\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F197.jpg?alt=media&token=015565c9-6058-4bd7-9c5c-518aac9553c3\",\r\n \"Chocolate amargo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\r\n \"Cacao amargo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\r\n \"Chocolate 70-80% cacao\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\r\n \"Chocolate amargo 80% caca0 30 gr: 20 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\r\n \"Zarzamora\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F132.jpg?alt=media&token=07c2bb4c-b3df-4906-a702-ef2d78da86d9\",\r\n \"Crema de leche\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F160.jpg?alt=media&token=e65df7a7-6193-4af2-8419-84c59d948dbd\",\r\n \"Jamón cocido\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\r\n \"Fiambres y embutidos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\r\n \"Clara de huevo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F60.jpg?alt=media&token=46c76578-35ca-46e2-b183-a31f0c112447\",\r\n \"Remolacha\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F193.jpg?alt=media&token=72e8a2d6-be79-42ae-bfba-fd308b315963\",\r\n \"Gelatina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F95.jpg?alt=media&token=68e75c89-2445-4d46-a5e6-1fb39406503a\",\r\n \"Mandarina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F127.jpg?alt=media&token=ac8eb860-9de3-4cc5-b6b7-d39ba8a83dd0\",\r\n \"Palta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F154.jpg?alt=media&token=011a1b08-8146-4b0c-9958-169dc15caf7a\",\r\n \"Carne vacuna picada grasa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F33.jpg?alt=media&token=26613d09-d006-4cd3-84d7-b4f1b2f6ff10\",\r\n \"Atún en aceite\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F54.jpg?alt=media&token=5d58f0d2-d13c-492b-9311-840b61819cb7\",\r\n \"Conservas, enlatados,\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F54.jpg?alt=media&token=5d58f0d2-d13c-492b-9311-840b61819cb7\",\r\n \"Calabaza\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F195.jpg?alt=media&token=1ef98b27-a0b2-4a9e-9293-97a56f0045db\",\r\n \"Flan en polvo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F87.jpg?alt=media&token=aec2fa7b-62eb-4666-81fb-e1ba3730b003\",\r\n \"Higo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F123.jpg?alt=media&token=d8e24d9a-910b-4980-9849-366833299d4e\",\r\n \"Margarina\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\r\n \"Peperoni\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F29.jpg?alt=media&token=05193ad5-9b2f-493b-9cab-c382f0e8c025\",\r\n \"Langostino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F61.jpg?alt=media&token=66fce339-b795-486c-8f9a-ba895aa658a2\",\r\n \"Espárragos \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F203.jpg?alt=media&token=8787b0e4-655e-4219-9482-0563f358b427\",\r\n \"Jugo de frutas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F97.jpg?alt=media&token=57ecb6dc-0e9b-4700-9a67-6370e7915328\",\r\n \"Limón\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F126.jpg?alt=media&token=99941f7b-51a0-4ea1-b824-3fd1010fa6ae\",\r\n \"Lengua vacuna \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F25.jpg?alt=media&token=452482ea-c5df-4313-9cf0-b48a1c26c43a\",\r\n \"Queso magro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F50.jpg?alt=media&token=87caeea6-dd4d-4642-bcf0-f9d1a280e3cd\",\r\n \"Hongos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\r\n \"Salsa ketchup\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F104.jpg?alt=media&token=07bd1f90-be81-4df2-8e90-d7d48238eb2b\",\r\n \"Condimentos industriales (ketchup, mostaza etc)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F104.jpg?alt=media&token=07bd1f90-be81-4df2-8e90-d7d48238eb2b\",\r\n \"Banana\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F137.jpg?alt=media&token=e37bf3b0-5ea4-4276-9f95-2993192b71cb\",\r\n \"Leonesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F27.jpg?alt=media&token=b59ca35f-e95c-410a-a4b0-73abb12b3a93\",\r\n \"Lomo de atún\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F52.jpg?alt=media&token=cbe415c5-c093-496e-83b7-7f86fa64de4f\",\r\n \"Apio\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F189.jpg?alt=media&token=af22e58c-86ff-4780-ada4-bc882bde56a9\",\r\n \"Frutilla\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F121.jpg?alt=media&token=3238fd05-4602-47e0-9ba4-7047c4b01e94\",\r\n \"Pollo muslo sin piel\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F21.jpg?alt=media&token=b35953b1-c752-45bb-9502-b5abacfd5b9a\",\r\n \"Pata y muslo de pollo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F21.jpg?alt=media&token=b35953b1-c752-45bb-9502-b5abacfd5b9a\",\r\n \"Atún al agua \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F44.jpg?alt=media&token=3531282a-7fe6-4785-b085-cbf112e93319\",\r\n \"Repollo brusela, Repollo blanco y colorado\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F201.jpg?alt=media&token=a77c48d5-61a0-417c-91de-ff4f47b03957\",\r\n \"Kiwi\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F124.jpg?alt=media&token=d5fbc6ea-f325-47d8-8972-461f9f54f8f2\",\r\n \"Queso blue cheese\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F34.jpg?alt=media&token=d913385a-1f31-4f94-9ed4-f61d251cf8cf\",\r\n \"Bacalao\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F55.jpg?alt=media&token=c6e5fe4a-8ab8-4a7a-9ab2-b39ec234a48b\",\r\n \"Pescados ricos en omega 3 (Caballa, Trucha, Sardina, Salmón salvaje, Jurel, Arenque, Bacalao, Vieiras, Ostras)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F55.jpg?alt=media&token=c6e5fe4a-8ab8-4a7a-9ab2-b39ec234a48b\",\r\n \"Espinaca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F204.jpg?alt=media&token=d66a4adc-ffc5-4946-82ba-94b48b273f8f\",\r\n \"Agua de coco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F114.jpg?alt=media&token=7174c094-7407-4532-8154-b327b859aaed\",\r\n \"Rábano\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F211.jpg?alt=media&token=91ea7c2f-8bfe-4639-9efb-881a0f392668\",\r\n \"Dátiles\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\r\n \"Dátil\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\r\n \"Pasta de dátiles\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\r\n \"Chile jalapeño\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F199.jpg?alt=media&token=59973379-3e94-45cb-abbc-421ba13aeae6\",\r\n \"Frambuesa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F120.jpg?alt=media&token=ad722c34-680e-471a-9cf1-2a7c0db4583c\",\r\n \"Alfalfa \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F206.jpg?alt=media&token=c7f06c20-d416-4f20-9fd3-f8e2259f8c4e\",\r\n \"Berro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F192.jpg?alt=media&token=de88c0f3-69e6-4f17-ac76-5d95eb5f2503\",\r\n \"Achicoria\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAchicoria.jpg?alt=media&token=10585c5d-b08f-46ad-8c8e-ae4c374bf092\",\r\n \"Ají\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAji%CC%81.jpg?alt=media&token=fb2000b9-98e5-4485-b827-da97b952c546\",\r\n \"Berenjena\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FBerenjena.jpg?alt=media&token=354fee06-81cc-4227-9fc4-c9cb6b121b18\",\r\n \"Brotes de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FBrotes%20de%20soja.jpg?alt=media&token=02d90e62-c75e-41d9-bf01-b231fbfabef0\",\r\n \"Brotes de alfalfa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FBrotes%20de%20alfalfa.jpg?alt=media&token=bb4a1b51-7f62-466b-baf8-c98af51cabb8\",\r\n \"Cebolla de verdeo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCebolla%20de%20verdeo.jpg?alt=media&token=eee7803a-6a8f-45db-a4f3-317ad895c73d\",\r\n \"Chauchas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FChauchas.jpg?alt=media&token=c4b1d514-4536-49db-a47c-73f8fd548dc4\",\r\n \"Escarola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FEscarola.jpg?alt=media&token=62e6b8b3-d2de-436d-ac9d-0e8ef646c62e\",\r\n \"Espárragos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FEspa%CC%81rragos.jpg?alt=media&token=dcc7bdd1-cac6-460f-bafc-eb05a9981583\",\r\n \"Hinojo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHinojo.jpg?alt=media&token=9b22b780-2e22-47ae-be5f-ab142d0dab43\",\r\n \"Kale\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FKale.jpg?alt=media&token=92a9b756-a149-4ec7-8514-e12378e1acd2\",\r\n \"Papa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPapa.jpg?alt=media&token=d790d21d-8ecd-4c5d-b8b6-b6f9e6cb2d2a\",\r\n \"Batata\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FBatata.jpg?alt=media&token=650bd82d-eb94-46da-bab0-6abf5c283807\",\r\n \"Maiz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FMai%CC%81z.jpg?alt=media&token=37efdbe2-fe57-4b32-975a-446a15d41a94\",\r\n \"Mandioca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FMandioca.jpg?alt=media&token=e42a362a-d3cb-49ba-9184-3391ffb33898\",\r\n \"Perejil\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPerejil.jpg?alt=media&token=eef93a25-6654-40f9-b995-b372ae65cc3d\",\r\n \"Puerro\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPuerro.jpg?alt=media&token=fb2ac94a-5745-4451-b029-f29adc383d83\",\r\n \"Rabanito\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FRabanito.jpg?alt=media&token=f7c5ad73-2d07-4641-8953-ce0814c437d1\",\r\n \"Radicheta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FRadicheta.jpg?alt=media&token=cd555af6-18ce-47cb-a329-5953084f3c9a\",\r\n \"Zapallito\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FZapallito.jpg?alt=media&token=2f6795fd-d4f2-44c4-9227-949166c0dddf\",\r\n \"Zucchini\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FZucchini.jpg?alt=media&token=0f6f4427-3d33-43dc-add1-bec2e40e2679\",\r\n \"Kabutia o Zapallo japonés\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FKabutia.jpg?alt=media&token=2c357fff-b477-446c-9e6e-53c04eccd466\",\r\n \"Ananá\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAnana%CC%81.jpg?alt=media&token=1a9517b5-823b-4eca-b512-58daa841f71f\",\r\n \"Granada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FGranada.jpg?alt=media&token=cd75a9da-52bc-4e7e-bc05-b93a68a8edba\",\r\n \"Pomelo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPomelo.jpg?alt=media&token=45011465-82d0-4a0d-bff9-810faea94ac1\",\r\n \"Arvejas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FArvejas.jpg?alt=media&token=46df67fc-12e9-4a2d-994b-ee187c1aa356\",\r\n \"Lupinos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FLupinos.jpg?alt=media&token=75d8c950-2b2c-4b90-a8b5-ac6120488dcd\",\r\n \"Trigo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FTrigo.jpg?alt=media&token=4a852e42-b922-4b18-9415-2ee4afec1dfc\",\r\n \"Cebada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCebada.jpg?alt=media&token=258ce178-8a0b-4a51-bfcc-0bba0c0ffb16\",\r\n \"Centeno\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCenteno.jpg?alt=media&token=12cca72d-d733-4f44-a808-5b6c4db9e0ee\",\r\n \"Mijo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FMijo.jpg?alt=media&token=567f5215-7665-4eec-aec4-9f6c38d6413f\",\r\n \"Teff\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FTeff.jpg?alt=media&token=4d88462a-0853-4496-891e-f8d3f81e2e8a\",\r\n \"Sorgo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSorgo.jpg?alt=media&token=2f53c7ec-2ded-4412-8877-77bd4e6b74de\",\r\n \"Almidon de maiz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAlmido%CC%81n%20de%20mai%CC%81z.jpg?alt=media&token=70a9390f-1d49-4951-96b2-a0f2582d8b99\",\r\n \"Harina de arroz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20arroz.jpg?alt=media&token=2837cd21-5e2b-45c5-9eb5-86d682fae659\",\r\n \"Harina de cebada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20cebada.jpg?alt=media&token=fd3f3816-6971-4587-bb07-206a9b0168b4\",\r\n \"Harina de centeno\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20centeno.jpg?alt=media&token=340a424e-c4cc-4cfe-a01c-db2e103f2432\",\r\n \"Harina de chía\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20chi%CC%81a.jpg?alt=media&token=92fa4c5f-e85c-4fd9-a378-8e12e82d7419\",\r\n \"Harina de quinoa\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20quinoa.jpg?alt=media&token=f4e5bf90-50a8-4552-ab94-2c36dee2196f\",\r\n \"Harina de amaranto\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20amaranto.jpg?alt=media&token=94b6e348-0bcf-4713-bde8-6cd99a9b0bbd\",\r\n \"Harina de algarroba\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20algarroba.jpg?alt=media&token=c8f518f4-d83c-4948-a95d-2bba125b4f5c\",\r\n \"Harina de garbanzos\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20garbanzos.jpg?alt=media&token=57bf906c-e9c7-4ba6-a5ed-3c4c8310d0a5\",\r\n \"Harina de maíz\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20mai%CC%81z.jpg?alt=media&token=5d3675a2-474f-4747-a34d-557daf51ede1\",\r\n \"Harina de trigo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20trigo.jpg?alt=media&token=6ec83bbb-2bb7-48da-8dff-447789fd0334\",\r\n \"Harina de trigo integral\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20trigo%20integral.jpg?alt=media&token=53458d52-bda4-4798-8eee-868dcb2b3609\",\r\n \"Harina de soja\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20soja.jpg?alt=media&token=fb94a9a1-7c92-4fbf-92a7-2673f14bb8c2\",\r\n \"Queso vegetal Castaña caju\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FQueso%20vegetal%20Castan%CC%83a%20caju%CC%81.jpg?alt=media&token=404bec84-c894-4116-a32b-dc0f841311f0\",\r\n \"Queso vegetal de almendras\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FQueso%20vegetal%20de%20almendras.jpg?alt=media&token=d2f6b78c-9fc8-4b14-95e4-6883a3528bbd\",\r\n \"Cerdo Bondiola\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCerdo%20Bondiola.jpg?alt=media&token=abacc065-5723-414d-a379-252f12ea7982\",\r\n \"Cerdo Lomo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCerdo%20Lomo.jpg?alt=media&token=fcae80b4-6fe3-4ed2-b47b-dde6a4fc8c7d\",\r\n \"Achuras vaca\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAchuras%20vaca.jpg?alt=media&token=b0b9c6c3-952f-441e-a981-4d288d9b0df7\",\r\n \"Harina de almendras, girasol, nuez, avellanas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FHarina%20de%20almendras.jpg?alt=media&token=a522cce6-c8f4-4c83-9f7e-a6542cdbf051\",\r\n \"Castañas de cajú\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCastan%CC%83as%20de%20caju%CC%81.jpg?alt=media&token=ce3e507e-151d-40e6-9edc-fdb00e3afc3d\",\r\n \"Semilla lino\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSemilla%20lino.jpg?alt=media&token=540ca422-6b2a-4a01-831a-48a62fe7bd8d\",\r\n \"Semilla sesamo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSemilla%20sesamo.jpg?alt=media&token=bb758a7d-4c24-44d1-97c6-222adb70efc3\",\r\n \"Semilla zapallo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSemilla%20zapallo.jpg?alt=media&token=a23b654f-87d5-4eb7-ab34-d67272bf53ae\",\r\n \"Semillas ricas en omega 3 (ALA): Chía, nueces, lino, pecanas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSemillas%20ricas%20en%20omega%203%20(ALA).jpg?alt=media&token=4f0f4ddd-d88a-45c3-ae36-0647b03d4249\",\r\n \"Dulces compactos ( batata, membrillo)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FDulces%20compactos%20(batata%2C%20membrillo).jpg?alt=media&token=6ae2a034-98b3-48c2-b044-d4c8ce66c892\",\r\n \"Sirope de arce\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSirope%20de%20arce.jpg?alt=media&token=53888b9d-7e4e-4f73-a667-4674da289778\",\r\n \"Pasta de pasas de uvas deshidratadas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPasta%20de%20pasas%20de%20uvas%20deshidratadas.jpg?alt=media&token=1ef2929d-0491-4723-9dcd-2749f9441914\",\r\n \"Stevia hojas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FStevia%20hojas.jpg?alt=media&token=31ea563d-bac1-41a7-85f3-6ca26d473497\",\r\n \"Pasas de uva\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPasas%20de%20uva.jpg?alt=media&token=71faee5f-61bc-4dac-97cf-ed9f49916bf1\",\r\n \"Ghee\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FGhee.jpg?alt=media&token=aeaf933b-a8c6-4ecb-91a7-be5fe824cc07\",\r\n \"Manteca de maní\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FManteca%20de%20mani%CC%81.jpg?alt=media&token=2dc8db33-547a-47d1-aa18-8e8e9a485921\",\r\n \"Jengibre\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FJengibre.jpg?alt=media&token=c9a644e3-f036-4de2-97b6-42e111e07057\",\r\n \"Curcuma\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCurcuma.jpg?alt=media&token=d205af5f-a8a1-4668-8293-b81e76095893\",\r\n \"Clavo de olor\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FClavo%20de%20olor.jpg?alt=media&token=6b33e942-367a-4321-b614-23ce804b709a\",\r\n \"Azafrán\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAzafra%CC%81n.jpg?alt=media&token=8424efc8-2e76-4bae-a96b-5e0e2ac81475\",\r\n \"cardamomo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fcardamomo.jpg?alt=media&token=772ea1ec-cc22-40b7-ae39-c54ef4b9d8d4\",\r\n \"pimienta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fpimienta.jpg?alt=media&token=46d0df11-0354-476f-a64a-b28facadf0f1\",\r\n \"Nuez moscada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FNuez%20moscada.jpg?alt=media&token=50e19257-4de0-4dff-a129-c6cd4e18673e\",\r\n \"canela\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FCanela.jpg?alt=media&token=d469a32b-c767-4a18-a5f0-16519af945c8\",\r\n \"Tomillo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FTomillo.jpg?alt=media&token=3db271a9-78da-4a94-871a-6055dd473dd4\",\r\n \"menta\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Fmenta.jpg?alt=media&token=1015555a-672f-47e6-9739-51019f8c6be8\",\r\n \"Romero\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FRomero.jpg?alt=media&token=723af841-7425-4abd-95ed-c56c91ae4186\",\r\n \"Ortiga\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FOrtiga.jpg?alt=media&token=756e60f8-e117-4796-9757-1e4786ed56c2\",\r\n \"Ajo fresco o en polvo\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAjo%20en%20polvo.jpg?alt=media&token=bee38fb4-e17e-4939-8021-53a38489b1bb\",\r\n \"Polvo de hornear\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FPolvo%20de%20hornear.jpg?alt=media&token=e466e492-c91e-49e3-b2f5-c5f8c2719dd0\",\r\n \"Vinagre de manzana orgánico\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FVinagre%20de%20manzana%20orga%CC%81nico.jpg?alt=media&token=21f7a63d-fc3e-41d1-b073-4b7115057f6a\",\r\n \"Té blanco\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FTe%CC%81%20blanco.jpg?alt=media&token=3561e7db-1a88-4055-85d5-158bd80a50f2\",\r\n \"Matcha\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FMatcha.jpg?alt=media&token=4eef3e02-ced7-4d81-b32c-80119d8657a2\",\r\n \"Yerba mate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FYerba%20mate.jpg?alt=media&token=b5d5ee6e-9e72-49ed-82d4-5be8976f2198\",\r\n \"Leche dorada\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FLeche%20dorada.jpg?alt=media&token=9ffe6359-6261-457a-9572-a6241dd6e415\",\r\n \"Diente de león\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FDiente%20de%20leo%CC%81n.jpg?alt=media&token=e224da46-c201-4d26-979e-30b29c39518e\",\r\n \"Alcachofera\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FAlcachofera.jpg?alt=media&token=7d257ce7-f2b9-4ab0-ba45-0c137fe67e5f\",\r\n \"Yerba mate 230 ml:56-120 mg\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FYerba%20mate.jpg?alt=media&token=b5d5ee6e-9e72-49ed-82d4-5be8976f2198\",\r\n \"Kombucha\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FKombucha.jpg?alt=media&token=93474a01-58ba-4588-a339-a7bc1e00bdb6\",\r\n \"Kefir de agua\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FKefir%20de%20agua.jpg?alt=media&token=c960087b-3bdd-4587-8d06-b5b3171c0591\",\r\n \"Whey protein (trazas de lactosa)\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FWhey%20protein%20(trazas%20de%20lactosa).jpg?alt=media&token=f81fcff5-b9db-4305-b783-f6627d5e2543\",\r\n \"Whey protein Isolate\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FWhey%20protein%20Isolate.jpg?alt=media&token=db2feec1-8d0f-48ac-988e-f26a38e9eb88\",\r\n \"Sopas deshidratadas\": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2FSopas%20deshidratadas.jpg?alt=media&token=e5795c96-e9e9-46fb-b947-efbedc2ee56b\",\r\n \"Arándanos\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2Farandanos.jpg?alt=media&token=2c4b9ac1-e7f4-4877-8522-fef2cc088b3d\",\r\n \"Sandia\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F138.jpg?alt=media&token=413cce58-fb54-4226-8cc1-3dd17cf9b5c9\",\r\n \"Te de arándanos\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\r\n \"Cerveza 1 vaso 200 ml 9° \": \"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\r\n \r\n}\r\n\r\n\r\nconst dictFoodsImgViejos = {\"Refresco en polvo sin azúcar\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F97.jpg?alt=media&token=57ecb6dc-0e9b-4700-9a67-6370e7915328\",\"Cerveza light\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\"Cebolla\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F196.jpg?alt=media&token=bbe94993-3855-43c3-b921-084fa11dfbb7\",\"Leche entera\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\"Leche semidescremada\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\"Mermelada \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\"Totopos\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F108.jpg?alt=media&token=4edd4632-ec68-4549-9951-b4eab0747289\",\"Uva\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F139.jpg?alt=media&token=bbbc9589-5d4e-423c-8e96-02a102a178b6\",\"Frijol \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F174.jpg?alt=media&token=e0a3a072-4149-4d4d-a12b-07944aa79b14\",\"Carne vacuna peceto\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F67.jpg?alt=media&token=dbf1df41-38ee-41a8-8f85-b9d620b02c12\",\"Manteca\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F158.jpg?alt=media&token=30480bbe-d3e3-4bfc-a0d2-a62be1fc90bd\",\"Café soluble\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F220.jpg?alt=media&token=2894096c-786a-4b37-996b-2ef262fd072d\",\"Bagel\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F248.jpg?alt=media&token=9a99bcf8-4961-4fbb-8951-7b1e1668b911\",\"Helado\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F161.jpg?alt=media&token=6aaadd8a-9c3e-4782-b7f1-e76af7854305\",\"Queso cheddar\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F37.jpg?alt=media&token=e3547040-b73f-4bd0-8c9b-3e0dfc1f4710\",\"Leche descremada\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F168.jpg?alt=media&token=1dda4191-557f-49f8-85eb-13ecf25f3a40\",\"Salmon\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F47.jpg?alt=media&token=739b856d-3e76-4d60-8357-c5a80da98f5f\",\"Granola\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F240.jpg?alt=media&token=43623108-5fc8-4df9-98d0-ea43180d5e10\",\"Chicle sin azúcar\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F93.jpg?alt=media&token=9da768d7-c9b1-48d0-bb97-1eb7ae62b5a7\",\"Coñac\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F9.jpg?alt=media&token=9acc4763-68f1-4379-a9cf-cb47b232c8b2\",\"Lechuga\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F208.jpg?alt=media&token=fff0484d-cc0c-4956-89be-2fdbf43e54c7\",\"Yogurt entero natural\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\"Leche desclactosada\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F172.jpg?alt=media&token=6b69f704-c9b2-4777-b6d8-192ed2e2763e\",\"Refresco\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\"Nachos\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F105.jpg?alt=media&token=6ce1d04e-7404-4055-9095-df15649b9966\",\"Sandía \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F138.jpg?alt=media&token=413cce58-fb54-4226-8cc1-3dd17cf9b5c9\",\"Soja texturizada\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F179.jpg?alt=media&token=6d5f3961-bd3c-46c4-9d02-d98e637c86cd\",\"Costillar de cerdo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F72.jpg?alt=media&token=03919ce9-ab69-46d7-b0dd-56319ad7942b\",\"Ajonjolí\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F141.jpg?alt=media&token=0f34569c-3328-4d30-bc7b-3bbe2d131a0c\",\"Té verde\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F226.jpg?alt=media&token=4e4dfe76-2117-431d-90f6-c292dc82c575\",\"Hot cake\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F253.jpg?alt=media&token=55ec5e3e-c2ed-4278-ad0b-0b2c63b1daae\",\"Dulce de leche\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F164.jpg?alt=media&token=fe5a859c-a0ce-4702-b648-8d680f2776d4\",\"Cordero\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F20.jpg?alt=media&token=d856d019-8502-4f85-a53d-3d6cd8e86d71\",\"Yogurt descremado natural\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F167.jpg?alt=media&token=0f811048-a461-4b5f-aa26-7b7b6e2b164c\",\"Pechuga de pollo sin piel\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F64.jpg?alt=media&token=ce97e84c-c67b-4a88-b78f-d7627ecbb360\",\"Galleta de nuez\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F237.jpg?alt=media&token=a9cb0341-0968-4a81-ad10-9a719a45a875\",\"Gelatina diet\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F182.jpg?alt=media&token=d1d1c7e5-577f-4cae-b71e-9ab35d47dcdc\",\"Champaña\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F8.jpg?alt=media&token=f5c2ea97-012f-4c2c-b725-5b0cd721b074\",\"Tomate\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F213.jpg?alt=media&token=b99e45f2-f65b-44a0-b47b-f18975ac8ed2\",\"Azúcar\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F90.jpg?alt=media&token=0494f3ac-887c-43eb-abb2-857564ff3d96\",\"Croissant salado\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\"Naranja\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F133.jpg?alt=media&token=330afcf4-6350-4ce8-bc62-bdcb49f446a8\",\"Alubia\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F173.jpg?alt=media&token=d73ad411-74b9-4836-8d3a-6d399734ff3d\",\"Queso sandwich\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F68.jpg?alt=media&token=6a5d7c67-c2f7-45b7-9496-853132c9fda4\",\"Semilla de calabaza\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\"Café express\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F218.jpg?alt=media&token=f48373dc-0c68-4333-92d9-a4450cc8b0a8\",\"Quinoa\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F113.jpg?alt=media&token=ef86d6cf-cd08-4bf8-87f9-ee226c058608\",\"Yogurt frutado\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F165.jpg?alt=media&token=0cb48af6-a5d4-4d87-9e39-908e607a4159\",\"Mortadela\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F26.jpg?alt=media&token=d0a17f4e-8194-4a66-9a98-4adc1ee76172\",\"Carne vacuna paleta\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F48.jpg?alt=media&token=2d36496f-0c1f-407f-b038-fc471dad2e9c\",\"Cheesecake\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F232.jpg?alt=media&token=a58d8c88-7b51-45e9-825c-35a12c106e36\",\"Salsa de soja\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F185.jpg?alt=media&token=fb738a0c-8631-42d9-b388-8cecebe31472\",\"Brandy\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F7.jpg?alt=media&token=9175f157-2baf-458a-8167-4131c6a73b15\",\"Rucula\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F214.jpg?alt=media&token=90971cf5-984f-40a0-bd0d-6445727c5f1d\",\"Mousse de chocolate\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F89.jpg?alt=media&token=01bc2687-80cb-4f87-82f1-7afd729b2598\",\"Papas fritas\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F106.jpg?alt=media&token=7e5c8bc5-4ca6-49a9-8270-455be7e8ad07\",\"Arandanos \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F115.jpg?alt=media&token=fb1b1c35-544a-46b2-a84a-1cf9614eb25b\",\"Lenteja \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F178.jpg?alt=media&token=76f0fbe4-cc63-4906-81d2-7950fba044ca\",\"Queso cuartirolo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F77.jpg?alt=media&token=3927e56a-0a54-4e7b-acf9-ae120b776bda\",\"Piñón\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F148.jpg?alt=media&token=cdb60a52-4fd4-4ae5-ad95-7afe21d0a9bb\",\"Té negro\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F225.jpg?alt=media&token=61872184-dfee-4ab5-a5e2-cfbd7e66c31c\",\"Pan blanco\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F254.jpg?alt=media&token=aeb7b88d-b5ce-4f68-a734-9766aa507608\",\"Chocolatada\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\"Huevo frito\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F23.jpg?alt=media&token=8eb111c1-5d39-47f6-af91-9f69da252c3a\",\"Atún en agua drenado\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F53.jpg?alt=media&token=cf425386-1c7d-40f3-b4c5-ceb80e34a0a6\",\"Brownie\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F231.jpg?alt=media&token=f3ea2321-fb5e-4d6d-ac83-4073f9989aed\",\"Agua mineral\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F180.jpg?alt=media&token=bfe69bcd-5b12-4803-a38a-1c7946f33705\",\"Vino blanco dulce\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F16.jpg?alt=media&token=81cf77d1-5ee5-499a-afba-7270be61302a\",\"Coliflor \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F202.jpg?alt=media&token=a4ada038-1bc8-4127-9585-0706a3caae94\",\"Chicle\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F92.jpg?alt=media&token=684cb0dc-eaa0-44a0-82b9-a25fe5482cae\",\"Cereza\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F116.jpg?alt=media&token=85eec064-2bfb-4c01-876b-5eb9d715299c\",\"Hummus\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F177.jpg?alt=media&token=f605a53b-dde5-44e2-9588-78604b888554\",\"Carne vacuna vacio\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F82.jpg?alt=media&token=f6ea6421-8c8b-4274-9d5a-4efa515e705e\",\"Mani\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F144.jpg?alt=media&token=511d60c8-2f0b-488c-bf09-5e9ea7929d12\",\"Bebidas energéticas\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F217.jpg?alt=media&token=44221cf2-48c7-4c8b-8d38-67805dcf4f4d\",\"Avena \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F247.jpg?alt=media&token=6bd1fb21-d2f8-4ce0-bd1f-8e326548a94b\",\"Leche saborizada\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F162.jpg?alt=media&token=f96ce859-b2da-4049-a4a0-796b411e560d\",\"Queso de cabra \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\"Carne vacuna lomo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F46.jpg?alt=media&token=451c3766-5941-438b-8463-74b97b2df8f3\",\"Muffin\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F241.jpg?alt=media&token=f4332e62-f15f-4a4a-9025-5071a6285ac7\",\"Caldo verdura casero\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F223.jpg?alt=media&token=430c42ce-65a2-4123-82b8-37e09f81d314\",\"Aguardiente\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F5.jpg?alt=media&token=a562ef61-5cc0-4712-9d3d-5d50422dc422\",\"Hongos crudos\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\"Chocolate con leche\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F86.jpg?alt=media&token=ff6f7fff-aa61-413e-8ed9-ca0d500ce38a\",\"Papaya \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F134.jpg?alt=media&token=4037ef57-d950-4df3-9404-fa624b883f2a\",\"Garbanzo \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F175.jpg?alt=media&token=80402972-80af-40ea-97a1-3280a7e5d3ec\",\"Sardinas en aceite\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F83.jpg?alt=media&token=de4c636a-1d2b-4095-a0f3-3ededb39d24e\",\"Semilla de girasol\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F150.jpg?alt=media&token=cf77fff2-1882-4bd3-9fed-134123e39227\",\"Café instantáneo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F219.jpg?alt=media&token=66dfb546-c7ef-4aa0-88a7-225a92cf49c2\",\"Amaranto\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F109.jpg?alt=media&token=e6f1cf7a-2777-4022-b68f-b3ab12e0716e\",\"Nugget de pollo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F229.jpg?alt=media&token=5b47109c-8c1f-4860-8c2b-194a0a8692fb\",\"Queso parmesano\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F49.jpg?alt=media&token=4e9a6ac5-72b9-4733-93f6-0b01da094202\",\"Galleta rellena\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F239.jpg?alt=media&token=0f067534-a7f0-407d-b0d6-7d21413e8cb4\",\"Té de limón\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F186.jpg?alt=media&token=c3e76f52-9779-4337-9a48-933bf5187e2c\",\"Vino tinto\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F17.jpg?alt=media&token=08309757-c55c-4f26-8086-563d28f692b4\",\"Flor de calabaza\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F205.jpg?alt=media&token=e11ddbc6-8fbc-4c16-a0fc-6d85b86c8883\",\"Mermelada light\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\"Guayaba\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F122.jpg?alt=media&token=64a55424-6249-4f92-8f2b-ec5420d4293a\",\"Habas\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F176.jpg?alt=media&token=aeb4074b-6284-4a40-8a13-3dffc71a59b6\",\"Carne vacuna pulpa\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F81.jpg?alt=media&token=70833e8a-ac0a-4dba-a90f-782198887ca4\",\"Avellana\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F143.jpg?alt=media&token=c066092a-fa44-4fdd-9ace-d16ab47681dc\",\"Cocoa\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F163.jpg?alt=media&token=b40bd66a-27a1-492d-9b8a-51da2cba8c7a\",\"Avena\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F111.jpg?alt=media&token=ed21aefb-7a4d-455f-9535-83d984e99651\",\"Queso provolone\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F28.jpg?alt=media&token=727c1c4f-5cf9-49be-aaf1-891215c03a78\",\"Queso cottage\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F66.jpg?alt=media&token=32e6d417-5df0-4910-9189-b3d7a3b1500f\",\"Pastel de frutas\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F244.jpg?alt=media&token=abdb5df4-ff90-4f26-8bb4-2e8858ffb86f\",\"Edulcorante\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F183.jpg?alt=media&token=6dbb49d6-96ad-4357-b381-59463e994fb2\",\"Whisky\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F19.jpg?alt=media&token=15ce9716-7d31-4ce4-a7db-f62c875a1fd7\",\"Pepino\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F209.jpg?alt=media&token=2d0ff821-6ec3-435a-aa0e-1dcd0e8ec45f\",\"Miel de abeja\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F101.jpg?alt=media&token=9d9dc74e-6580-4ca0-876d-54c995f94787\",\"Piña\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F136.jpg?alt=media&token=9aeb9040-9304-484f-a346-b462de01d8e0\",\"Carne vacuna aguja\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F78.jpg?alt=media&token=b78f147f-bf36-40c6-a0db-0cfa56e30980\",\"Mantequilla de mani\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F146.jpg?alt=media&token=95cf3ce1-4fa8-4a11-8c68-91b3109dd693\",\"Refresco de cola\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F216.jpg?alt=media&token=d62a0cb5-0133-4b60-a9cc-50186ff1e0c1\",\"Pop natural\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F112.jpg?alt=media&token=e41462f1-e342-4b33-8e7b-23cd81cc5f9a\",\"Yema de huevo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F42.jpg?alt=media&token=c4c0628b-17c2-4658-add2-8b7f020cf8d0\",\"Carne vacuna cuadril\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F45.jpg?alt=media&token=d6b37c18-909e-42b9-870c-e95e03f608a1\",\"Pan dulce\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F242.jpg?alt=media&token=60f2c6b0-a1e4-4b1c-a0dc-f38aa8db43ff\",\"Sal\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F184.jpg?alt=media&token=01caa577-ac99-4d73-9667-bf5e1fa0facc\",\"Vodka\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F18.jpg?alt=media&token=c248ad7c-7e6c-4a15-b6c9-3d82889c84bb\",\"Chile habanero\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F198.jpg?alt=media&token=dd0ecd83-6a6b-40c8-a120-5b25fc15956e\",\"Flan comercial\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F87.jpg?alt=media&token=aec2fa7b-62eb-4666-81fb-e1ba3730b003\",\"Mango \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F128.jpg?alt=media&token=dd5b1f6b-f672-4fab-a9aa-02f439104872\",\"Carne vacuna nalga\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F80.jpg?alt=media&token=941ab988-db3e-42d7-8463-09c0ed3897e1\",\"Mayonesa\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F159.jpg?alt=media&token=b110101f-1fdf-4c50-aa50-218adf3dc9de\",\"Croutones\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F249.jpg?alt=media&token=b3866ff1-d89e-4976-9591-275b2ae1ca7e\",\"Queso danbo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F31.jpg?alt=media&token=93340c62-5d6f-4903-8d91-02a6d1ab5adb\",\"Lenguado\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\"Dona \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F234.jpg?alt=media&token=4f0b3dc7-bf01-4ac7-b19d-1fc54666ad0e\",\"Anís dulce o seco\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F6.jpg?alt=media&token=2e6a76bc-1c90-4851-b4cf-910a1cbc2d77\",\"Cilantro\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F200.jpg?alt=media&token=01ad8d28-bd00-4f10-a5b5-8f92beb63ff6\",\"Chocolate blanco\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F85.jpg?alt=media&token=ffd3f2a8-0e64-4960-a207-cae4ed22f11f\",\"Moras\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F132.jpg?alt=media&token=07c2bb4c-b3df-4906-a702-ef2d78da86d9\",\"Queso muzzarella\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F70.jpg?alt=media&token=b8c7523e-bb6c-4b35-a3e7-29720e8897ad\",\"Aceituna\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F153.jpg?alt=media&token=03fe0801-b9e7-4f9e-b20b-69aac5aeff55\",\"Arroz \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F110.jpg?alt=media&token=d0c1a4ce-217e-4aa3-9602-d940fe52978b\",\"Frankfurter\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F41.jpg?alt=media&token=7cad9625-ccfe-4dd3-bbb0-e7dbf4c84699\",\"Camarón\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F58.jpg?alt=media&token=f4e2e52e-fb23-4d59-a2c5-da16ca104352\",\"Galleta con chispas de chocolate\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F235.jpg?alt=media&token=50baf4b1-b91b-49f0-83e2-3de95921c3f1\",\"Ron blanco o añejo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F12.jpg?alt=media&token=b2958b98-23fd-4aba-969b-7201bf011504\",\"Acelga\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F187.jpg?alt=media&token=45f75472-f9e4-4a65-9e38-3c4d013444ae\",\"Mermelada\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F98.jpg?alt=media&token=e020187f-a193-4c26-99b5-880086df22a9\",\"Lima\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F125.jpg?alt=media&token=516f6a4c-df30-4533-a566-2658c044fd2f\",\"Morcilla\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F79.jpg?alt=media&token=fd12da78-f021-4f56-abce-8faa0dd63cd2\",\"Guacamole\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F156.jpg?alt=media&token=22d3c19a-75be-48f7-b922-0b4c71081a25\",\"Maicena\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F230.jpg?alt=media&token=119f1275-45ea-499e-9163-b302932b2fce\",\"Lomito canadiense\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\"Cangrejo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F59.jpg?alt=media&token=d4ac166e-9001-4b97-b444-96ee86fa38ff\",\"Galleta cubierta de chocolate\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F236.jpg?alt=media&token=6ac5fb2c-5b58-443c-9192-4d0e9c311954\",\"Oporto\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F11.jpg?alt=media&token=6fefb80d-94d4-40cf-922e-0cb8bbacd542\",\"Alcaucil\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F188.jpg?alt=media&token=d90dec3b-2ce2-42dd-b252-57d000ec7d7a\",\"Helado palito de agua\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F103.jpg?alt=media&token=490446c5-fa61-486f-a4f1-1f04566a6b0c\",\"Durazno\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F119.jpg?alt=media&token=4e1a504e-b408-4122-b6b7-8c021db10923\",\"Queso requeson\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F69.jpg?alt=media&token=22885906-64b4-4046-a768-ffde99cdb88e\",\"Almendra\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F142.jpg?alt=media&token=942132fd-efc3-465f-9fbe-e12772779278\",\"Granola baja en grasa\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F252.jpg?alt=media&token=63f668e5-c77f-4b63-95b5-6c81bb64384f\",\"Queso brie\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F35.jpg?alt=media&token=ed383611-a97f-4b00-86e8-91ec7be35992\",\"Queso ricotta\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\"Cupcake\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F233.jpg?alt=media&token=feb4df99-90ce-4680-b36f-08223f99b741\",\"Ginebra\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F10.jpg?alt=media&token=9ee6bdac-85b1-4e0c-bc44-bc7c90ee6926\",\"Zanahoria \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F215.jpg?alt=media&token=acc19d5e-63d3-4ef9-8618-a6c2eda6991c\",\"Caramelo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F91.jpg?alt=media&token=c8164016-661f-463a-a795-602d060f3545\",\"Manzana\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F129.jpg?alt=media&token=13a63bcf-bbc9-4d05-bb01-569d174d9da2\",\"Panceta\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F75.jpg?alt=media&token=d29903c1-03d0-4a47-a606-766a2625143b\",\"Coco\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F155.jpg?alt=media&token=1009695b-d812-4ce4-802b-c7e1c519f26a\",\"Galleta salada\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F251.jpg?alt=media&token=389db2d2-a071-4488-983b-24cf3a7323fe\",\"Queso camembert\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F36.jpg?alt=media&token=f8d3cfcb-5f69-4010-9c9e-408f81a85401\",\"Carne picada magra\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F33.jpg?alt=media&token=26613d09-d006-4cd3-84d7-b4f1b2f6ff10\",\"Pastel de chocolate\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F243.jpg?alt=media&token=b8dba348-1385-48f7-b721-cc67fcd098e3\",\"Vino blanco seco\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F16.jpg?alt=media&token=81cf77d1-5ee5-499a-afba-7270be61302a\",\"Morron\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F210.jpg?alt=media&token=f07db15c-ded8-44a3-a765-fe762efe812f\",\"Chicle bajo en azúcar\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F93.jpg?alt=media&token=9da768d7-c9b1-48d0-bb97-1eb7ae62b5a7\",\"Maracuyá\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F130.jpg?alt=media&token=70891080-6b89-4d24-80dd-cdd30af3fc53\",\"Longaniza \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F74.jpg?alt=media&token=b2396aca-7519-44dc-b9b1-55641343b1a9\",\"Chía\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F145.jpg?alt=media&token=59a5cfc7-5edc-4441-b274-6ae30380676e\",\"Galleta\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F250.jpg?alt=media&token=21cc1d2d-58ef-4729-aa11-1bfa318940aa\",\"Carne vacuna asado de tira\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F32.jpg?alt=media&token=433fe74e-717a-4921-bdab-0e3d3ae8a8c1\",\"Calamar \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F57.jpg?alt=media&token=28419660-0066-4fad-bd13-858afc8b6621\",\"Galleta de avena \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F237.jpg?alt=media&token=a9cb0341-0968-4a81-ad10-9a719a45a875\",\"Fernet\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F4.jpg?alt=media&token=47e34e5c-3132-4deb-8b38-6d6f7748ae80\",\"Arúgula\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F190.jpg?alt=media&token=e9dc9dc6-89a2-4f4e-b225-d5bda16f1a9f\",\"Paleta de caramelo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F102.jpg?alt=media&token=b0b4cdd3-07e9-442c-82b0-7a9b3fa1cf58\",\"Ciruela\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F117.jpg?alt=media&token=eacb9646-c0cd-43a3-8b24-c9d4992432d2\",\"Huevo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F73.jpg?alt=media&token=e92e7694-f454-4608-b383-1def32715409\",\"Nuez\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F147.jpg?alt=media&token=d255f242-f0df-490c-9157-cb3b75a44ec2\",\"Pasta cocida\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F255.jpg?alt=media&token=ed4d911d-fa26-4b49-98d0-72bc828b5e44\",\"Pollo al spiedo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F30.jpg?alt=media&token=24276809-d25e-4262-9004-10eb582efc0b\",\"Pulpo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F65.jpg?alt=media&token=3e3f0a8d-2998-4d45-9fd7-baf5596e7a07\",\"Tortilla de harina\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F245.jpg?alt=media&token=b1a01b58-a246-4134-8b48-a2f551649eed\",\"Tequila\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F14.jpg?alt=media&token=33568e53-70ae-4181-88e0-4a56ef3c10c2\",\"Berenjena \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F191.jpg?alt=media&token=bfacf072-7c5e-4ca3-a186-586b0555a61e\",\"Croissant dulce\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F88.jpg?alt=media&token=f7d3f26a-5f03-4929-8967-650c778bb2e4\",\"Pera\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F135.jpg?alt=media&token=f2c89da1-e60b-48a7-8a8c-7fa17e0f3c9e\",\"Pate de lengua\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F76.jpg?alt=media&token=d374f5bf-29b3-469f-bb61-8659228243a2\",\"Pistacho\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F149.jpg?alt=media&token=ded01708-e33d-44bd-a248-11819c22d968\",\"Salame\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F40.jpg?alt=media&token=4fefe73e-2312-4667-96c1-1d1d2ea588e6\",\"Brotola\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F62.jpg?alt=media&token=1cd04cf6-938e-4c10-9584-858fba9fcd78\",\"Waffle\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F246.jpg?alt=media&token=27fc98cd-002a-4744-8b7c-c5ccd044a30a\",\"Cerveza\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F227.jpg?alt=media&token=e429d59b-8058-4f22-b95f-f66aaf07a22e\",\"Brócoli\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F194.jpg?alt=media&token=5f6a2aff-c073-44ba-a6f3-5854353f7e02\",\"Gomitas\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F96.jpg?alt=media&token=7165aefe-e204-4521-b277-dd9ccbd9097a\",\"Melón\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F131.jpg?alt=media&token=9cc155d5-86b3-4976-af81-9dca4a58c982\",\"Chicharrón\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F71.jpg?alt=media&token=4250674e-9345-4c36-99b5-5a1e96fcdf21\",\"Aceite\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F152.jpg?alt=media&token=d5df5caa-cc41-4f23-aa1d-72392bf15ea0\",\"Fondue de queso\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F22.jpg?alt=media&token=e485c9c6-b459-40e9-8436-718e5cf6a93c\",\"Queso requeson light\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F51.jpg?alt=media&token=7415152c-6b28-405c-9300-7539b03aadfc\",\"Sidra\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F13.jpg?alt=media&token=5a1fcda1-d8b7-46b4-bbc5-4e04db89e0f5\",\"Champiñón\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F197.jpg?alt=media&token=015565c9-6058-4bd7-9c5c-518aac9553c3\",\"Chocolate amargo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F84.jpg?alt=media&token=7c671320-0c2c-440c-b9d2-c3ce549008d6\",\"Zarzamora\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F132.jpg?alt=media&token=07c2bb4c-b3df-4906-a702-ef2d78da86d9\",\"Crema de leche\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F160.jpg?alt=media&token=e65df7a7-6193-4af2-8419-84c59d948dbd\",\"Jamón cocido\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F24.jpg?alt=media&token=79c03931-f79a-43f8-af95-11a974f20197\",\"Clara de huevo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F60.jpg?alt=media&token=46c76578-35ca-46e2-b183-a31f0c112447\",\"Remolacha\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F193.jpg?alt=media&token=72e8a2d6-be79-42ae-bfba-fd308b315963\",\"Gelatina\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F95.jpg?alt=media&token=68e75c89-2445-4d46-a5e6-1fb39406503a\",\"Mandarina\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F127.jpg?alt=media&token=ac8eb860-9de3-4cc5-b6b7-d39ba8a83dd0\",\"Palta\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F154.jpg?alt=media&token=011a1b08-8146-4b0c-9958-169dc15caf7a\",\"Carne vacuna picada grasa\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F33.jpg?alt=media&token=26613d09-d006-4cd3-84d7-b4f1b2f6ff10\",\"Atún en aceite\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F54.jpg?alt=media&token=5d58f0d2-d13c-492b-9311-840b61819cb7\",\"Calabaza\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F195.jpg?alt=media&token=1ef98b27-a0b2-4a9e-9293-97a56f0045db\",\"Flan en polvo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F87.jpg?alt=media&token=aec2fa7b-62eb-4666-81fb-e1ba3730b003\",\"Higo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F123.jpg?alt=media&token=d8e24d9a-910b-4980-9849-366833299d4e\",\"Margarina\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F43.jpg?alt=media&token=cb9e044e-96b2-43ed-8909-85c7821eeef2\",\"Peperoni\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F29.jpg?alt=media&token=05193ad5-9b2f-493b-9cab-c382f0e8c025\",\"Langostino\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F61.jpg?alt=media&token=66fce339-b795-486c-8f9a-ba895aa658a2\",\"Espárragos \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F203.jpg?alt=media&token=8787b0e4-655e-4219-9482-0563f358b427\",\"Jugo de frutas\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F97.jpg?alt=media&token=57ecb6dc-0e9b-4700-9a67-6370e7915328\",\"Limón\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F126.jpg?alt=media&token=99941f7b-51a0-4ea1-b824-3fd1010fa6ae\",\"Lengua vacuna \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F25.jpg?alt=media&token=452482ea-c5df-4313-9cf0-b48a1c26c43a\",\"Queso magro\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F50.jpg?alt=media&token=87caeea6-dd4d-4642-bcf0-f9d1a280e3cd\",\"Hongos\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F207.jpg?alt=media&token=a79f7adc-d419-4227-8737-1b74a8857374\",\"Salsa ketchup\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F104.jpg?alt=media&token=07bd1f90-be81-4df2-8e90-d7d48238eb2b\",\"Banana\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F137.jpg?alt=media&token=e37bf3b0-5ea4-4276-9f95-2993192b71cb\",\"Leonesa\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F27.jpg?alt=media&token=b59ca35f-e95c-410a-a4b0-73abb12b3a93\",\"Lomo de atún\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F52.jpg?alt=media&token=cbe415c5-c093-496e-83b7-7f86fa64de4f\",\"Apio\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F189.jpg?alt=media&token=af22e58c-86ff-4780-ada4-bc882bde56a9\",\"Frutilla\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F121.jpg?alt=media&token=3238fd05-4602-47e0-9ba4-7047c4b01e94\",\"Pollo muslo sin piel\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F21.jpg?alt=media&token=b35953b1-c752-45bb-9502-b5abacfd5b9a\",\"Atún al agua \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F44.jpg?alt=media&token=3531282a-7fe6-4785-b085-cbf112e93319\",\"Repollo\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F201.jpg?alt=media&token=a77c48d5-61a0-417c-91de-ff4f47b03957\",\"Kiwi\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F124.jpg?alt=media&token=d5fbc6ea-f325-47d8-8972-461f9f54f8f2\",\"Queso blue cheese\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F34.jpg?alt=media&token=d913385a-1f31-4f94-9ed4-f61d251cf8cf\",\"Bacalao\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F55.jpg?alt=media&token=c6e5fe4a-8ab8-4a7a-9ab2-b39ec234a48b\",\"Espinaca\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F204.jpg?alt=media&token=d66a4adc-ffc5-4946-82ba-94b48b273f8f\",\"Agua de coco\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F114.jpg?alt=media&token=7174c094-7407-4532-8154-b327b859aaed\",\"Rábano\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F211.jpg?alt=media&token=91ea7c2f-8bfe-4639-9efb-881a0f392668\",\"Dátil\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F118.jpg?alt=media&token=e47c4823-3ec4-4876-a60a-7c7e992b775f\",\"Chile jalapeño\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F199.jpg?alt=media&token=59973379-3e94-45cb-abbc-421ba13aeae6\",\"Frambuesa\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F120.jpg?alt=media&token=ad722c34-680e-471a-9cf1-2a7c0db4583c\",\"Alfalfa \":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F206.jpg?alt=media&token=c7f06c20-d416-4f20-9fd3-f8e2259f8c4e\",\"Berro\":\"https://firebasestorage.googleapis.com/v0/b/mrgen-dev.appspot.com/o/recomendaciones%2F192.jpg?alt=media&token=de88c0f3-69e6-4f17-ac76-5d95eb5f2503\"}\r\n\r\nfunction Foods() {\r\n const dispatch = useDispatch();\r\n const {\r\n analysisFoodResultError,\r\n analysisFoodResult,\r\n analysisFoodResultSuccess,\r\n } = useSelector((x: RootState) => x.analyses);\r\n\r\n const [activeFilters, setActiveFilters] = useState([]);\r\n const [freqFilters, setFreqFilters] = useState([]);\r\n const [search, setSearch] = useState(\"\");\r\n const [isSidebarOpen, setIsSidebarOpen] = useState(false);\r\n const [filteredFoods, setFilteredFoods] = useState([]);\r\n\r\n useEffect(() => {\r\n dispatch(fetchAnalysisFoods());\r\n }, []);\r\n useEffect(() => {\r\n setFilteredFoods(analysisFoodResult.foods);\r\n }, [analysisFoodResult]);\r\n\r\n useEffect(() => {\r\n let res: FoodsResult[];\r\n if (search.length > 0) {\r\n res = analysisFoodResult.foods.filter((f) =>\r\n f.food.toLowerCase().includes(search.toLowerCase())\r\n );\r\n } else {\r\n res = analysisFoodResult.foods;\r\n }\r\n if (activeFilters.length > 0) {\r\n res = res.filter(\r\n (f) => activeFilters.indexOf(f.categoryId.toString()) !== -1\r\n );\r\n }\r\n if (freqFilters.length > 0) {\r\n res = res.filter((f) => freqFilters.indexOf(`f-${f.score}`) !== -1);\r\n }\r\n setFilteredFoods(res);\r\n }, [activeFilters, search, freqFilters]);\r\n\r\n function openSidebar() {\r\n setIsSidebarOpen(true);\r\n }\r\n\r\n return (\r\n \r\n
    \r\n {analysisFoodResultSuccess ? (\r\n <>\r\n
    \r\n setSearch(e.currentTarget.value)}\r\n />\r\n \r\n Filtros \r\n \r\n
    \r\n
    \r\n \r\n {\r\n setActiveFilters([]);\r\n setFreqFilters([]);\r\n setSearch(\"\");\r\n }}\r\n disabled={\r\n activeFilters.length === 0 &&\r\n freqFilters.length === 0 &&\r\n search.length === 0\r\n }\r\n disableElevation\r\n >\r\n Limpiar Filtros \r\n \r\n {isSidebarOpen ? (\r\n setIsSidebarOpen(false)}\r\n >\r\n \r\n \r\n ) : null}\r\n
    Frecuencia de Consumo
    \r\n {[0, 1, 2, 3].map((x,idx) => (\r\n \r\n ))}\r\n
    Categoria
    \r\n {Object.keys(analysisFoodResult.categories).map((x,idx) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n \r\n Mostrando {filteredFoods.length} de{\" \"}\r\n {analysisFoodResult.foods.length}\r\n \r\n {filteredFoods?.map((food,idx) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n \r\n ) : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n false}\r\n text=\"Hubo un error al mostrar los diagnosticos\"\r\n success={false}\r\n />\r\n
    \r\n );\r\n}\r\n\r\nfunction FoodItem({ food,idx}:{food:FoodsResult,idx:string }){\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n {types[food.score]}\r\n
    \r\n
    \r\n

    {food.food}

    \r\n {food.category}\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nfunction Filter({ filterId, activeFilters, setActiveFilters, label }) {\r\n const ix = activeFilters.indexOf(filterId);\r\n const isSelected = ix !== -1;\r\n return (\r\n
    \r\n {\r\n const filterCopy = [...activeFilters];\r\n if (isSelected) {\r\n setActiveFilters([\r\n ...filterCopy.slice(0, ix),\r\n ...filterCopy.slice(ix + 1, filterCopy.length),\r\n ]);\r\n } else {\r\n filterCopy.push(filterId);\r\n setActiveFilters(filterCopy);\r\n }\r\n }}\r\n />\r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default Foods;\r\n","import React from \"react\";\r\n\r\nimport { Paper } from \"@material-ui/core\";\r\nimport CommonContainer from \"./common/CommonContainer\";\r\n\r\nfunction Agenda() {\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n Estamos trabajando para que puedas próximamente agendar tus\r\n consultas con nutricionistas desde aquí, mientras tanto puedes\r\n agendar directamente en nuestro WhatsApp haciendo{\" \"}\r\n \r\n click aquí\r\n {\" \"}\r\n o comunicándote al 099 436 487.\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Agenda;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Paper } from \"@material-ui/core\";\r\nimport CommonContainer from \"./common/CommonContainer\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\ninterface Week {\r\n weekId: number;\r\n weekstart: string;\r\n weekend: string;\r\n mealsq: number;\r\n mealsList: Meal[];\r\n}\r\n\r\ninterface Meal {\r\n id: number;\r\n title: string;\r\n subtitle: string;\r\n photo: string;\r\n category: string;\r\n calories: number;\r\n carbos: number;\r\n fats: number;\r\n proteins: number;\r\n}\r\n\r\nfunction Meals() {\r\n const [loading, setLoading] = useState(true);\r\n /* const [mealsData, setMealsData] = useState([]);\r\n const [expandedWeekId, setExpandedWeekId] = useState(null);\r\n \r\n\r\n useEffect(() => {\r\n fetchEndpointData();\r\n }, []);\r\n\r\n const fetchEndpointData = async () => {\r\n try {\r\n const response = await fetch(\"https://services.balance.com.uy/v1/meal/MealsByWeek\");\r\n const data = await response.json();\r\n setMealsData(data);\r\n setLoading(false);\r\n } catch (error) {\r\n console.log(\"Error fetching data:\", error);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const toggleWeek = (weekId: number) => {\r\n if (expandedWeekId === weekId) {\r\n setExpandedWeekId(null);\r\n } else {\r\n setExpandedWeekId(weekId);\r\n }\r\n }; */\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n

    Te presentamos una nueva forma de alimentarte

    \r\n
    \r\n \r\n {/*loading ? (\r\n

    Cargando...

    \r\n ) : (*/\r\n
    \r\n\r\n {/*mealsData.map((week) => (\r\n
    \r\n
    toggleWeek(week.weekId)}>\r\n
    \r\n

    \r\n Semana desde el {week.weekstart.split(\"-\")[2]}/{week.weekstart.split(\"-\")[1]} hasta el{\" \"}\r\n {week.weekend.split(\"-\")[2]}/{week.weekend.split(\"-\")[1]}\r\n

    \r\n

    Cantidad de Platos disponibles: {week.mealsq}

    \r\n
    \r\n
    \r\n
    \r\n {expandedWeekId === week.weekId && (\r\n
    \r\n {week.mealsList.map((meal) => (\r\n
    \r\n {meal.title}\r\n

    {meal.title} {meal.subtitle}

    \r\n

    Categoría: {meal.category}

    \r\n

    \r\n {meal.calories} KCal (C {meal.carbos}g / G {meal.fats}g / P {meal.proteins}g)\r\n

    \r\n
    \r\n ))}\r\n
    \r\n )}\r\n
    \r\n ))*/}\r\n
    \r\n /* ) */}\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Meals;\r\n/*\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n*/","import React, { useState, useEffect } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootState } from '../../../store/config/types';\nimport { getPatients } from '../../../store/nutritionists/actionCreators';\nimport Diagnostics from '../../endUser/Diagnostics';\nimport { Header } from \"../../common/Header\";\n\nconst options = [\"Mis pacientes\", \"Mi balance\"];\n\nfunction NutritionistResults({ history }: RouteComponentProps) {\n\n const dispatch = useDispatch();\n const analyses = useSelector((state: RootState) => state.analyses);\n console.log(\"analyses\");\n console.log(analyses);\n\n return (\n
    \n
    \n \n
    \n )\n}\n\nexport default withRouter(NutritionistResults);\n","export const zonasEnvio = {\n Montevideo: {\n localidades: {\n \"Aguada\": 70,\n \"Atahualpa\": 90,\n \"Bañados de Carrasco\": 90,\n \"Barrio Sur\": 70,\n \"Brazo Oriental\": 90,\n \"Buceo\": 70,\n \"Capurro, Bella Vista, Arroyo Seco\": 90,\n \"Carrasco\": 70,\n \"Carrasco Norte\": 70,\n \"Castro Castellanos\": 90,\n \"Centro\": 70,\n \"Cerrito de la Victoria\": 90,\n \"Ciudad Vieja\": 70,\n \"Cordón\": 70,\n \"Flor de Maroñas\": 90,\n \"Ituzaingó\": 90,\n \"Jacinto Vera\": 90,\n \"La Blanqueada\": 70,\n \"La Comercial\": 70,\n \"La Figurita\": 90,\n \"Larrañaga\": 70,\n \"Las Canteras\": 70,\n \"Malvín\": 70,\n \"Malvín Norte\": 70,\n \"Maroñas, Parque Guaraní\": 90,\n \"Mercado Modelo, Bolívar\": 90,\n \"Palermo\": 70,\n \"Parque Batlle, Villa Dolores\": 70,\n \"Parque Rodó\": 70,\n \"Pocitos\": 70,\n \"Prado, Nueva Savona\": 90,\n \"Punta Carretas\": 70,\n \"Punta Gorda\": 70,\n \"Reducto\": 90,\n \"Tres Cruces\": 70,\n \"Unión\": 70,\n \"Villa Española\": 90,\n \"Villa Muñoz, Goes, Retiro\": 70,\n },\n },\n Canelones: {\n localidades: {\n \"Barra de Carrasco\": 70,\n \"Colonia Nicolich\": 120,\n \"Haras del Lago\": 120,\n \"Lagomar\": 120,\n \"Parque Carrasco\": 120,\n \"Paso Carrasco\": 70,\n \"San José de Carrasco\": 120,\n \"Shangrilá\": 120,\n },\n },\n };","import React, { useState } from \"react\";\nimport { BASE_URL_FOODS } from \"../../../services/config\";\n\ninterface CouponFormProps {\n userId?: number;\n category: \"meals\" | \"nutrition\";\n onApplyDiscount: (discount: number, type: string, code: string) => void;\n}\n\nconst CouponForm: React.FC = ({ userId, category, onApplyDiscount }) => {\n const [code, setCode] = useState(\"\");\n const [message, setMessage] = useState(\"\");\n const [discount, setDiscount] = useState(null);\n const [isApplied, setIsApplied] = useState(false);\n\n const validateCoupon = async () => {\n try {\n const response = await fetch(BASE_URL_FOODS + \"/v1/coupon/validate\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: code.toUpperCase(),\n userId: userId ?? null, // 🔹 Si userId es undefined, enviamos null\n category,\n }), \n });\n \n const data = await response.json();\n \n if (!response.ok) {\n throw new Error(data.message || \"Error al validar el cupón.\");\n }\n \n setDiscount(data.discount);\n setMessage(\"✅ Cupón válido: Descuento aplicado.\");\n onApplyDiscount(data.discount, data.type, code);\n setIsApplied(true);\n } catch (error) {\n if (error instanceof Error) {\n setMessage(error.message || \"❌ Error al validar el cupón.\");\n } else {\n setMessage(\"❌ Error desconocido.\");\n }\n setDiscount(null);\n setIsApplied(false);\n }\n };\n \n \n\n return (\n
    \n Aplicar cupón\n
    \n setCode(e.target.value.toUpperCase())}\n disabled={isApplied}\n />\n \n\n
    \n \n {message &&

    {message}

    }\n {discount !== null &&

    Descuento aplicado: {discount}

    }\n
    \n );\n};\n\nexport default CouponForm;\n","import React, { useState, useEffect, ChangeEventHandler } from 'react';\nimport { format, parseISO, addDays, set } from 'date-fns';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCartShopping, faTimes, faSnowflake, faLeaf, faCarrot, faBreadSlice, faTint, faBan } from '@fortawesome/free-solid-svg-icons'; // Importar el ícono de cruz\nimport { Lottie } from \"@crello/react-lottie\";\nimport loadAnimation from \"../../../assets/loading.json\";\nimport logo from \"../../../assets/logo.png\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport backArrow from \"../../../assets/backArrow.png\";\nimport roles from \"../../../utils/roles\";\nimport { userRole, userAccount } from \"../../../store/auth/selector\";\nimport { RootState } from \"../../../store/config/types\";\nimport { Menu, MenuItem, Dialog, DialogContent, DialogActions, Button } from \"@material-ui/core\";\nimport { logout } from \"../../../store/auth/actionCreators\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport { BASE_URL_FOODS } from '../../../services/config';\nimport { zonasEnvio } from '../../../helpers/zonas-delivery';\nimport request from 'request';\nimport { initMercadoPago, Wallet } from '@mercadopago/sdk-react';\nimport { CouponForm } from '../CouponForm';\n\n// Funciones auxiliares para obtener y guardar objetos de localStorage\nconst getStoredObject = (key: string): Record | null => {\n const stored = localStorage.getItem(key);\n if (stored) {\n try {\n return JSON.parse(stored);\n } catch (err) { \n return null;\n }\n }\n return null;\n};\n\nconst getDepartmentFromStore = (email: string | null): string | null => {\n const departments = getStoredObject(\"departments\");\n if (email && departments && departments[email]) {\n return departments[email];\n }\n if (!email && departments && Object.keys(departments).length === 1) {\n return departments[Object.keys(departments)[0]];\n }\n return null;\n};\n\nconst getNeighborhoodFromStore = (email: string | null): string | null => {\n const neighborhoods = getStoredObject(\"neighborhoods\");\n if (email && neighborhoods && neighborhoods[email]) {\n return neighborhoods[email];\n }\n if (!email && neighborhoods && Object.keys(neighborhoods).length === 1) {\n return neighborhoods[Object.keys(neighborhoods)[0]];\n }\n return null;\n};\n\nconst setDepartmentInStore = (email: string | null, value: string) => {\n let departments = getStoredObject(\"departments\") || {};\n if (email) {\n departments[email] = value;\n } else {\n departments[\"default\"] = value;\n }\n localStorage.setItem(\"departments\", JSON.stringify(departments));\n};\n\nconst setNeighborhoodInStore = (email: string | null, value: string) => {\n let neighborhoods = getStoredObject(\"neighborhoods\") || {};\n if (email) {\n neighborhoods[email] = value;\n } else {\n neighborhoods[\"default\"] = value;\n }\n localStorage.setItem(\"neighborhoods\", JSON.stringify(neighborhoods));\n};\n\n\ninterface Meal {\n id: number;\n title: string;\n subtitle: string;\n photo: string;\n category: string;\n calories: number;\n carbos: number;\n fats: number;\n proteins: number;\n maxQuantity: number;\n type: null | string;\n chefRecommendation: boolean;\n createdAt: string;\n updatedAt: string;\n active: boolean;\n weekId: number;\n mealId: number;\n initDate: string;\n endDate: string;\n weekYear: string;\n selectedDay: string;\n kitchenId: number;\n availableDay: number;\n}\n\ninterface Week {\n weekId: number;\n weekstart: string;\n weekend: string;\n mealsList: Meal[];\n}\n\ninterface User {\n name: string;\n email: string;\n phone: string;\n department: string;\n neighborhood: string;\n address: string;\n from: string;\n until: string;\n saltOption: string;\n carboOption: string;\n comments: string;\n}\n\ninterface OrderData {\n order: Week[];\n user: User;\n totalShipping: number;\n totalMeals: number;\n\n}\n\ninterface MealGroup {\n meal: Meal;\n quantity: number;\n}\n\nconst MenuSemanal: React.FC = () => {\n const dispatch = useDispatch();\n const role = useSelector((state: RootState) => userRole(state));\n const actualUser = useSelector((state: RootState) => userAccount(state));\n const isFinalUser = role === roles.user;\n const isNutritionist = role === roles.nutricionist;\n const firstName = actualUser && actualUser.profile.firstName;\n const email = actualUser ? actualUser.email : null;\n const hasAnalysis = actualUser && actualUser.profile.analysis;\n const [openModal, setOpenModal] = useState(true);\n const [selectedWeek, setSelectedWeek] = useState(0);\n const [selectedDay, setSelectedDay] = useState('');\n const [selectedDays, setSelectedDays] = useState({});\n const [cartItems, setCartItems] = useState([]);\n const [deliveryPrice, setDeliveryPrice] = useState(70);\n const [weeksData, setWeeksData] = useState([]);\n const [cartOpen, setCartOpen] = useState(false);\n const [showForm, setShowForm] = useState(false);\n const [formData, setFormData] = useState({\n name: '',\n email: '',\n phone: '',\n department: getDepartmentFromStore(email) || 'Montevideo',\n neighborhood: getNeighborhoodFromStore(email) || 'Aguada',\n address: '',\n from: '',\n until: '',\n saltOption: 'con-sal',\n carboOption: 'con-carbo',\n comments: ''\n });\n const [formSubmitted, setFormSubmitted] = useState(false);\n const [mealPrice, setMealPrice] = useState(0);\n const history = useHistory();\n\n const [anchorEl, setAnchorEl] = useState(null);\n\n const [from, setFrom] = useState(\"10:00\");\n const [until, setUntil] = useState(\"13:30\");\n\n const [preference, setPreference] = useState('');\n\n const location = useLocation();\n const queryParams = new URLSearchParams(location.search);\n const paymentStatus = queryParams.get('status');\n\n const [statusMP, setStatusMP] = useState('');\n const [paymentId, setPaymentId] = useState('');\n\n const [appliedCoupon, setAppliedCoupon] = useState(null);\n const [discountAmount, setDiscountAmount] = useState(0);\n\n\n useEffect(() => {\n if (email) {\n // Usuario logueado: se intenta obtener department y neighborhood del objeto almacenado\n const dep = getDepartmentFromStore(email);\n const neigh = getNeighborhoodFromStore(email);\n if (dep && neigh) {\n setFormData((prev) => ({\n ...prev,\n department: dep,\n neighborhood: neigh,\n }));\n setOpenModal(false);\n } else {\n setOpenModal(true);\n }\n } else {\n // Si no hay usuario logueado, mostramos siempre el modal\n setOpenModal(true);\n }\n }, [email]);\n \n\n useEffect(() => {\n /* if (localStorage.getItem('department') && localStorage.getItem('neighborhood')) {\n setOpenModal(false);\n } */\n\n request.get(`${BASE_URL_FOODS}/v1/meal/MealsByWeek`, (error, response, body) => {\n if (!error && response.statusCode === 200) {\n const data = JSON.parse(body);\n const availableWeeksData = data.filter((week) => week.mealsList && week.mealsList.length > 0);\n console.log(availableWeeksData);\n setWeeksData(availableWeeksData);\n } else {\n console.error('Error al obtener los datos', error);\n }\n });\n request.get(`${BASE_URL_FOODS}/v1/meal/prices`, (error, response, body) => {\n if (!error && response.statusCode === 200) {\n const data = JSON.parse(body);\n setMealPrice(data['4']);\n } else {\n console.error('Error al obtener los datos', error);\n }\n });\n if (actualUser) {\n setFormData({\n name: actualUser?.profile?.firstName || '',\n email: actualUser?.email || '',\n phone: actualUser?.profile?.mobile || '',\n department: '',\n neighborhood: '',\n address: '',\n from: '10:00',\n until: '13:30',\n saltOption: 'con-sal',\n carboOption: 'con-carbo',\n comments: '',\n });\n }\n console.log(paymentStatus);\n if (paymentStatus !== \"\" && paymentStatus !== null) {\n setStatusMP(paymentStatus);\n setPaymentId(queryParams.get('payment_id'));\n setFormSubmitted(true);\n console.log(\"El pago fue aprobado\");\n } else {\n /* if (localStorage.getItem('department') && localStorage.getItem('neighborhood')) {\n setOpenModal(false);\n } else {\n setOpenModal(true);\n } */\n //production\n initMercadoPago('APP_USR-097c1049-0ad3-4548-b85e-ba982fe5f695');\n\n }\n\n }, []);\n\n useEffect(() => {\n if (formData.department === \"Canelones\") {\n setFormData({\n ...formData,\n neighborhood: getFirstLocalidad(\"Canelones\")\n });\n setDeliveryPrice(parseInt(zonasEnvio.Canelones.localidades[formData.neighborhood]));\n } else {\n setFormData({\n ...formData,\n neighborhood: getFirstLocalidad(\"Montevideo\")\n });\n setDeliveryPrice(parseInt(zonasEnvio.Montevideo.localidades[formData.neighborhood]));\n }\n }, [formData.department]);\n\n useEffect(() => {\n setDeliveryPrice(parseInt(zonasEnvio[formData.department].localidades[formData.neighborhood]));\n }, [formData.neighborhood])\n\n useEffect(() => {\n setFormData({\n ...formData,\n from: from,\n until: until\n })\n }, [from, until])\n\n const handleApplyDiscount = (discount: number, type: string, code) => {\n setDiscountAmount(discount);\n setAppliedCoupon(code);\n }; \n\n const formatDate = (dateString: string) => {\n const date = parseISO(dateString);\n const formattedDate = format(date, 'd MMM');\n return formattedDate;\n };\n\n const handleCloseModal = () => {\n if (email) {\n // Solo guardamos department y neighborhood si hay usuario logueado\n setDepartmentInStore(email, formData.department);\n setNeighborhoodInStore(email, formData.neighborhood);\n }\n setOpenModal(false);\n /* localStorage.setItem('department', formData.department);\n localStorage.setItem('neighborhood', formData.neighborhood);\n setOpenModal(false); */\n //console.log(formData.department, formData.neighborhood)\n };\n\n const getLocalidades = (departamento) => {\n return Object.keys(zonasEnvio[departamento].localidades);\n };\n const getFirstLocalidad = (departamento) => {\n return Object.keys(zonasEnvio[departamento].localidades)[0];\n };\n\n /* const generateTimeOptions = (startHour, endHour, interval) => {\n const options = [];\n for (let hour = startHour; hour <= endHour; hour++) {\n for (let minute = 0; minute < 60; minute += interval) {\n const formattedHour = hour.toString().padStart(2, \"0\");\n const formattedMinute = minute.toString().padStart(2, \"0\");\n options.push(`${formattedHour}:${formattedMinute}`);\n }\n }\n return options;\n }; */\n \n const generateFromOptions = (interval: number) => {\n const options = [];\n for (let hour = 7; hour <= 10; hour++) {\n for (let minute = 0; minute < 60; minute += interval) {\n const formattedHour = hour.toString().padStart(2, \"0\");\n const formattedMinute = minute.toString().padStart(2, \"0\");\n options.push(`${formattedHour}:${formattedMinute}`);\n }\n }\n options.push(\"10:30\"); \n return options;\n };\n\n const filterUntilOptions = (startHour: string, interval: number) => {\n const [startH, startM] = startHour.split(\":\").map(Number);\n const options = [];\n for (let hour = startH + 3; hour <= 13; hour++) { // Ajusta el límite superior a 13\n for (let minute = 0; minute < 60; minute += interval) {\n const formattedHour = hour.toString().padStart(2, \"0\");\n const formattedMinute = minute.toString().padStart(2, \"0\");\n \n if (hour === 13 && minute > 30) break;\n options.push(`${formattedHour}:${formattedMinute}`);\n }\n }\n return options;\n };\n\n //const fromOptions = generateTimeOptions(7, 10, 30);\n //const untilOptions = generateTimeOptions(10, 13, 30);\n const fromOptions = generateFromOptions(30);\n const [untilOptions, setUntilOptions] = useState([]);\n\n useEffect(() => {\n if (formData.from) {\n setUntilOptions(filterUntilOptions(formData.from, 30));\n }\n }, [formData.from]);\n\n\n const handleWeekChange = (weekIndex: number) => {\n setSelectedWeek(weekIndex);\n };\n\n const handleDayChange = (event, mealId) => {\n const newSelectedDays = {};\n newSelectedDays[mealId] = event.target.value;\n setSelectedDays(newSelectedDays);\n };\n\n const handleAddToCart = (meal: any) => {\n if (selectedDays[meal.mealId] === \"\" || !selectedDays[meal.mealId]) return;\n\n const selectedWeekData = weeksData[selectedWeek];\n if (!selectedWeekData || !selectedWeekData.mealsList) {\n return;\n }\n\n const newSelectedDay = selectedDays[meal.mealId];\n setSelectedDay(newSelectedDay);\n\n setCartItems((prevCartItems) => {\n const existingWeek = prevCartItems.find(\n (item) =>\n item.weekstart === selectedWeekData.weekstart &&\n item.weekend === selectedWeekData.weekend\n );\n\n if (existingWeek) {\n const updatedWeek = {\n ...existingWeek,\n mealsList: [...existingWeek.mealsList, { ...meal, selectedDay: newSelectedDay }],\n };\n return prevCartItems.map((item) =>\n item.weekstart === selectedWeekData.weekstart &&\n item.weekend === selectedWeekData.weekend\n ? updatedWeek\n : item\n );\n } else {\n return [\n ...prevCartItems,\n {\n weekId: selectedWeekData.weekId,\n weekstart: selectedWeekData.weekstart,\n weekend: selectedWeekData.weekend,\n mealsList: [{ ...meal, selectedDay: newSelectedDay }],\n },\n ];\n }\n });\n setSelectedDay('');\n const updatedSelectedDays = {};\n updatedSelectedDays[meal.mealId] = \"\";\n setSelectedDays(updatedSelectedDays);\n console.log(cartItems);\n };\n\n const handleRemoveFromCart = (event, mealId: number, weekstart: string, weekend: string, selectedDay: string, index: number) => {\n event.stopPropagation();\n setCartItems((prevCartItems) => {\n return prevCartItems.map((weekItem) => {\n if (weekItem.weekstart === weekstart && weekItem.weekend === weekend) {\n const updatedMealsList = weekItem.mealsList.filter(\n (meal, mealIndex) => !(meal.mealId === mealId && meal.selectedDay === selectedDay && mealIndex == index)\n );\n if (updatedMealsList.length === 0) {\n return null;\n }\n return {\n ...weekItem,\n mealsList: updatedMealsList,\n };\n }\n return weekItem;\n }).filter(Boolean);\n });\n };\n\n const renderWeekTabs = () => {\n return weeksData.map((week, index) => (\n handleWeekChange(index)}\n >\n {formatDate(week.weekstart)} - {formatDate(week.weekend)}\n
    \n ));\n };\n\n const getDayNameFromAvailableDay = (availableDay) => {\n const daysMapping = ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'];\n return daysMapping[availableDay];\n };\n\n\n \n const renderMeals = () => {\n const colorsByDay = ['lightgray', 'lightsteelblue', 'lightgreen', 'lightyellow', 'skyblue', 'lightgoldenrodyellow', 'lightgray', 'lightsalmon']\n\n const selectedWeekData = weeksData[selectedWeek];\n\n if (!selectedWeekData || !selectedWeekData.mealsList) {\n return <>


    Ya no puedes pedir esta semana.


    ;\n }\n const mealsOrderedByAvailableDay = selectedWeekData.mealsList.sort((item1, item2) => {\n return item1.availableDay - item2.availableDay;\n });\n\n\n const categoryIcons = {\n 'apto para congelar': ,\n 'vegano': ,\n 'sin gluten': ,\n 'sin lacteos': ,\n 'vegetariano': ,\n };\n const categoryStyles = {\n 'apto para congelar': { color: 'dodgerblue', fontSize: '0.8em' },\n 'vegetariano': { color: 'green', fontSize: '0.8em' },\n 'vegano': { color: 'green', fontSize: '0.8em' },\n 'sin gluten': { color: 'gold', fontSize: '0.8em' },\n 'sin lactosa': { color: 'gray', fontSize: '0.8em' },\n 'sin lacteos': { color: 'gray', fontSize: '0.8em' }\n };\n const renderSubtitleLabels = (subtitle) => {\n // Busca el primer grupo entre paréntesis\n const regex = /\\(([^)]+)\\)/;\n const match = subtitle.match(regex);\n \n if (match) {\n // Separa las categorías y las pasa a minúsculas para la comparación\n const categories = match[1].split(',').map(item => item.trim().toLowerCase());\n \n return (\n
    \n {categories.map((cat, index) => (\n \n {cat.toUpperCase()} {/* Muestra el texto en mayúsculas */}\n \n ))}\n
    \n );\n }\n \n // Si no se encuentra ningún bloque entre paréntesis, se muestra el subtítulo original\n return subtitle;\n };\n\n const renderSubtitleIcons = (subtitle) => {\n // Busca el primer grupo de paréntesis\n const regex = /\\(([^)]+)\\)/;\n const match = subtitle.match(regex);\n \n if (match) {\n // Separa las categorías por comas\n const categories = match[1].split(',').map(item => item.trim().toLowerCase());\n \n return (\n
    \n {categories.map((cat, index) => (\n \n {categoryIcons[cat] ? categoryIcons[cat] : cat}\n \n ))}\n
    \n );\n }\n \n // Si no se encuentra ningún patrón, se muestra el subtítulo tal cual.\n return subtitle;\n };\n\n return mealsOrderedByAvailableDay.map((meal: any) => (\n
    \n {meal.photo === null || meal.photo === \"null\" || meal.photo === \"\" ? '' : ({meal.title})}\n

    \n {meal.title}\n
    \n {renderSubtitleLabels(meal.subtitle)}\n

    \n {meal.kitchenId === 1 ? (

    Calorías: {meal.calories}

    ) : ''}\n
    \n {\n meal.kitchenId === 1 ? (\n <>\n \n \n \n ) : meal.availableDay !== 7 ? (\n <>\n \n \n ) : (\n <>\n \n \n \n \n \n )\n }\n\n
    \n \n
    \n ));\n };\n\n const renderCart = () => {\n return (\n <>\n
    \n

    Pedido por semana


    \n
    setCartOpen(!cartOpen)}>\n
      \n {cartItems.map((weekItem) => (\n
    • \n Semana {formatDate(weekItem.weekstart)} - {formatDate(weekItem.weekend)}:\n
        \n {weekItem.mealsList.map((meal: any, index: number) => (\n
      • \n {meal.title} - {meal.selectedDay}\n handleRemoveFromCart(event, meal.mealId, weekItem.weekstart, weekItem.weekend, meal.selectedDay, index)} \n style={{ cursor: 'pointer', marginLeft: '10px' }} \n />\n
      • \n ))}\n
      \n
    • \n ))}\n {cartItems.length === 0 ? 'Aún no hay platos seleccionados' : ''}\n
    \n
    \n
    \n
    Platos (x{totalMealsInCart}): $U {totalMealsInCart * mealPrice}
    \n
    Envíos (x{totalShipping} - {formData.neighborhood} - ${deliveryPrice} - setOpenModal(true)} style={{ fontSize: '18px', color: '#7c67e2', fontWeight: 'bold' }}>Editar): $U {totalShipping * deliveryPrice}
    \n
    Total a pagar: $U {(totalMealsInCart * mealPrice) + (totalShipping * deliveryPrice) - discountAmount}
    \n \n
    \n \n\n \n
    \n \n );\n };\n\n const handleFormChangeSelect: ChangeEventHandler = (event) => {\n const { name, value } = event.target;\n setFormData((prevFormData) => ({\n ...prevFormData,\n [name]: value,\n }));\n };\n\n const handleFormChange: ChangeEventHandler = (event) => {\n const { name, value } = event.target;\n setFormData((prevFormData) => ({\n ...prevFormData,\n [name]: value,\n }));\n };\n\n const formatDateToDayMonth = (date) => {\n return `${date.split(\"-\")[2]}/${date.split(\"-\")[1]}`\n }\n\n const addDatesToWeeksData = (weeksData) => {\n const dayOffsets = {\n \"Lunes\": 0,\n \"Martes\": 1,\n \"Miércoles\": 2,\n \"Jueves\": 3,\n \"Viernes\": 4,\n \"Sábado\": 5,\n \"Domingo\": 6\n };\n\n weeksData.forEach(week => {\n const startDate = parseISO(week.weekstart);\n week.days.forEach(day => {\n const date = addDays(startDate, dayOffsets[day.day]);\n day.date = format(date, 'yyyy-MM-dd');\n });\n });\n\n return weeksData;\n };\n\n const generateOrderSummaryAndObject = (orderData) => {\n const formatDate = (dateString) => {\n const date = new Date(dateString);\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n return `${day}/${month}`;\n };\n\n let summary = `Pedido de Platos - Información del Usuario:\\n`;\n summary += `------------------------------------------\\n`;\n summary += `Nombre: ${orderData.user.name}\\n`;\n summary += `Email: ${orderData.user.email}\\n`;\n summary += `Teléfono: ${orderData.user.phone}\\n`;\n summary += `Departamento: ${orderData.user.department}\\n`;\n summary += `Barrio/Localidad: ${orderData.user.neighborhood}\\n`;\n summary += `Dirección: ${orderData.user.address}\\n`;\n summary += `Opción SAL: ${orderData.user.saltOption}\\n`;\n summary += `Opción CARBO: ${orderData.user.carboOption}\\n`;\n summary += `Rango entrega: ${orderData.user.from} - ${orderData.user.until}\\n`;\n summary += `Comentarios: ${orderData.user.comments}\\n\\n`;\n summary += `Precio platos: ${orderData.totalMeals * mealPrice}\\n`;\n summary += `Precio envíos: ${orderData.totalShipping * deliveryPrice}\\n`;\n summary += `Total a pagar: ${(orderData.totalMeals * mealPrice) + (orderData.totalShipping * deliveryPrice)}\\n\\n`;\n\n summary += `Platos por Semana:\\n`;\n summary += `-------------------\\n`;\n\n const orderObject = orderData.order.map((week) => ({\n weekId: week.weekId,\n weekstart: week.weekstart,\n weekend: week.weekend,\n days: week.mealsList.reduce((daysAccumulator, meal) => {\n const { selectedDay } = meal;\n const { mealId, title } = meal;\n\n const existingDay = daysAccumulator.find((day) => day.day === selectedDay);\n\n if (existingDay) {\n const existingMeal = existingDay.meals.find((m) => m.mealId === mealId);\n\n if (existingMeal) {\n existingMeal.quantity += 1;\n } else {\n existingDay.meals.push({\n mealId: mealId,\n title: title,\n quantity: 1,\n });\n }\n } else {\n daysAccumulator.push({\n day: selectedDay,\n meals: [\n {\n mealId: mealId,\n title: title,\n quantity: 1,\n },\n ],\n });\n }\n\n return daysAccumulator;\n }, []),\n }));\n\n orderData.order.forEach((week) => {\n summary += `Semana ${formatDateToDayMonth(week.weekstart)} a ${formatDateToDayMonth(week.weekend)}\\n`;\n\n const mealsByDay = {};\n\n week.mealsList.forEach((meal) => {\n if (!mealsByDay[meal.selectedDay]) {\n mealsByDay[meal.selectedDay] = {};\n }\n if (!mealsByDay[meal.selectedDay][meal.mealId]) {\n mealsByDay[meal.selectedDay][meal.mealId] = {\n meal: meal,\n quantity: 1,\n };\n } else {\n mealsByDay[meal.selectedDay][meal.mealId].quantity += 1;\n }\n });\n\n Object.keys(mealsByDay).forEach((day) => {\n summary += `- ${day}:\\n`;\n\n Object.values(mealsByDay[day]).forEach((mealGroup: MealGroup) => {\n summary += ` - ${mealGroup.quantity}x ${mealGroup.meal.title}\\n`;\n });\n });\n\n summary += `\\n`;\n });\n\n return { summary, orderObject };\n };\n\n const handleFormSubmit = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (!formData.name || !formData.email || !formData.phone || !formData.address) {\n alert('Por favor completa todos los campos del formulario.');\n return;\n }\n\n try {\n\n if (preference !== '') {\n console.log('La orden ya fue generada, no se creará una nueva.');\n return;\n }\n\n const orderData = {\n order: cartItems,\n user: {\n name: formData.name,\n email: formData.email,\n phone: formData.phone,\n department: formData.department,\n neighborhood: formData.neighborhood,\n address: formData.address,\n from: formData.from,\n until: formData.until,\n saltOption: formData.saltOption,\n carboOption: formData.carboOption,\n comments: formData.comments\n },\n totalShipping: totalShipping,\n totalMeals: totalMealsInCart,\n couponCode: appliedCoupon,\n };\n const userObject = {\n name: formData.name,\n email: formData.email,\n phone: formData.phone,\n department: formData.department,\n neighborhood: formData.neighborhood,\n address: formData.address,\n from: formData.from,\n until: formData.until,\n saltOption: formData.saltOption,\n carboOption: formData.carboOption,\n comments: formData.comments\n }\n const mrgenToken = {\n token: localStorage.getItem('token')\n }\n localStorage.setItem('orderData', JSON.stringify(orderData));\n\n const orderFormatted = generateOrderSummaryAndObject(orderData);\n const orderSummary = orderFormatted.summary;\n const orderObject = addDatesToWeeksData(orderFormatted.orderObject);\n console.log(orderSummary);\n console.log(orderObject);\n\n \n request.post(\n `${BASE_URL_FOODS}/v1/order/orders`,\n {\n json: { orderObject, orderSummary, userObject },\n },\n (error, response, body) => {\n if (!error && response.statusCode === 200) {\n console.log('Pedido enviado exitosamente:', body);\n } else {\n console.error('Error al enviar el pedido:', error || body);\n alert('Ocurrió un error al enviar el pedido. Por favor intenta nuevamente.');\n }\n }\n );\n \n request.post(\n `${BASE_URL_FOODS}/v1/payment/create_preference`,\n {\n json: { orderObject, orderData, mrgenToken },\n },\n (error, response, body) => {\n if (!error && response.statusCode === 200) {\n console.log('Pedido enviado exitosamente:', body);\n setPreference(body.id);\n } else {\n console.error('Error al enviar el pedido:', error || body);\n alert('Ocurrió un error al enviar el pedido. Por favor intenta nuevamente.');\n }\n }\n );\n\n } catch (error) {\n console.error('Error al enviar la orden o el correo:', error);\n alert('Ocurrió un error al enviar la orden. Por favor intenta nuevamente.');\n }\n };\n\n const selectOption = (option: number) => {\n if (option === 0) history.push(\"/profile\");\n if (option === 1) {\n dispatch(logout());\n history.push(\"/\");\n }\n if (option === 2) {\n history.push(\"/platos-semanales\");\n }\n if (option === 3) {\n history.push(\"/consulta-nutricional\");\n }\n setAnchorEl(null);\n };\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const totalMealsInCart = cartItems.reduce((total, weekItem) => {\n return total + weekItem.mealsList.length;\n }, 0);\n const totalShipping = cartItems.map((weekItem) => {\n return new Set(weekItem.mealsList.map((meal) => meal.selectedDay)).size;\n }\n ).reduce((accumulator, currentValue) => accumulator + currentValue, 0);\n\n return (\n <>\n {\n !formSubmitted && (\n \n \n
    \n

    Selecciona tu departamento y localidad

    \n \n {\n setFormData({\n ...formData,\n department: e.target.value,\n })\n }}\n >\n {Object.keys(zonasEnvio).map((departamento) => (\n \n ))}\n \n\n
    \n\n \n {\n setFormData({\n ...formData,\n neighborhood: e.target.value,\n })\n }}\n >\n {getLocalidades(formData.department).map((localidad) => (\n \n ))}\n \n
    \n\n
    \n \n \n \n
    \n )\n }\n
    \n
    \n
    \n \"logo\"\n\n window.localStorage.token === \"\" || !window.localStorage.token\n ? history.push('/')\n : window.localStorage.token !== \"\" && !hasAnalysis ? history.push('/loadingPayment')\n : history.push('/dashboard')\n }\n />\n
    \n setCartOpen(!cartOpen)} />\n
    setCartOpen(!cartOpen)}>{totalMealsInCart}
    \n {\n actualUser && (
    \n
    {firstName[0]}
    \n {firstName}\n
    )\n }\n
    \n {\n actualUser && (\n \n selectOption(0)}>Editar perfil\n selectOption(2)}>Platos semanales\n selectOption(3)}>Consulta nutricionista\n selectOption(1)}>Cerrar sesión\n \n )\n }\n
    \n
    \n
    {renderWeekTabs()}
    \n {renderCart()}\n
    \n
    \n {!showForm && !formSubmitted && (\n <>\n
    \n
    \n

    Viandas Saludables y Frescas a Domicilio 🍽️

    \n

    Pedí hoy, recibí en casa y disfrutá comida equilibrada sin esfuerzo.

    \n {/*

    Envíos lunes, martes, jueves y viernes a {formData.neighborhood} por ${deliveryPrice} cada día
    Plato: $260

    */}\n
    \n
    \n \n
    \n
    \n

    🛒 Pedí online

    \n
    \n
    \n Elegí tus platos y hacé tu pedido en 2 minutos desde el celular. 📌 Recordatorio: Podés pedir varios platos juntos para la semana.\n
    \n
    \n
    \n
    \n

    📅 Días de entrega

    \n
    \n
    \n Entregamos los lunes, martes, jueves y viernes. \n

    📌 Fecha límite para pedir: \n 24 horas antes del día de entrega.
    \n 📌 Excepciones: los viernes hasta las 12 hs podés pedir para el lunes, y los martes hasta las 12 hs para el jueves. \n

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

    🚚 Horario de entrega

    \n
    \n
    \n Recibí entre las 7 y 14 hs, eligiendo un rango de 3 horas.\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n

    💰 Precio accesible

    \n
    \n
    \n Cada plato cuesta ${mealPrice} pesos y el envío es desde 70 pesos por día de entrega (IVA incluido).\n
    \n
    \n
    \n
    \n

    ❄️ Platos que podés congelar

    \n
    \n
    \n Algunos platos pueden congelarse, así podés organizar mejor tus comidas.\n
    \n
    \n
    \n
    \n

    📍 Zonas de entrega

    \n
    \n
    \n Actualmente disponible para Montevideo y Ciudad de la Costa.\n
    \n
    \n \n
    \n\n\n
    \n
    {renderMeals()}
    \n \n )}\n {showForm && !formSubmitted && (\n
    \n

    Confirma tu orden

    \n
    \n {/* Columna Izquierda: Datos Personales y Dirección */}\n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n \n {/* Columna Derecha: Especificaciones y Entrega */}\n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n setFormData({\n ...formData,\n from: e.target.value,\n until: ''\n })\n }\n >\n \n {fromOptions.map((hour) => (\n \n ))}\n \n \n setFormData({\n ...formData,\n until: e.target.value\n })\n }\n disabled={!formData.from}\n >\n \n {untilOptions.map((hour) => (\n \n ))}\n \n
    \n
    \n
    \n \n \n
    \n
    \n {preference !== '' ? (\n \n ) : (\n \n )}\n {\n setShowForm(false);\n setPreference('');\n }}\n >\n Cancelar\n \n
    \n
    \n
    \n
    \n \n \n
    \n )}\n {formSubmitted && statusMP === 'approved' && (\n
    \n

    Tu pedido ha sido confirmado. ¡Gracias por elegir nuestros platos!

    \n

    Pago Nro. {paymentId}

    \n
    \n )}\n {formSubmitted && statusMP !== 'approved' &&\n (\n
    \n

    Pedido pendiente de confirmación, a la brevedad nos comunicaremos. ¡Gracias por elegir nuestros platos!

    \n
    \n )\n }\n
    \n \n );\n};\n\nexport default MenuSemanal;\n","import React, { useState, useEffect } from 'react';\nimport { format, addMonths } from 'date-fns';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCartShopping } from '@fortawesome/free-solid-svg-icons';\nimport logo from \"../../../assets/logo.png\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { userRole, userAccount } from \"../../../store/auth/selector\";\nimport { RootState } from \"../../../store/config/types\";\nimport { Menu, MenuItem, Button, CircularProgress, Dialog, DialogTitle, DialogContent, DialogActions, TextField } from \"@material-ui/core\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport { logout } from \"../../../store/auth/actionCreators\";\nimport { initMercadoPago, Wallet } from '@mercadopago/sdk-react';\nimport request from 'request';\nimport { BASE_URL_FOODS } from '../../../services/config';\nimport { PaymentStatus } from '../../../store/config/enums';\n\ninterface TurnoDia {\n __IMTKEY__: string; \n array: {\n time: string; // \"2025-03-10T13:00:00.000Z\"\n slots: number;\n }[];\n}\n\nconst TurnosList: React.FC<{ turnos: TurnoDia[] }> = ({ turnos }) => {\n return (\n
    \n
    \n

    Próximos turnos disponibles

    \n
    \n {turnos && turnos.length > 0 ? (\n turnos.map((dayObj) => {\n // dayObj.__IMTKEY__ => \"2025-03-10T03:00:00.000Z\"\n const dayFormatted = new Intl.DateTimeFormat('es-UY', {\n day: '2-digit',\n month: '2-digit',\n timeZone: 'America/Montevideo'\n }).format(new Date(dayObj.__IMTKEY__));\n\n return (\n
    \n

    {dayFormatted}

    \n
    \n {dayObj.array.map((slot) => {\n const timeFormatted = new Intl.DateTimeFormat('es-UY', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n timeZone: 'America/Montevideo'\n }).format(new Date(slot.time));\n\n return (\n
    \n {timeFormatted}\n
    \n );\n })}\n
    \n
    \n );\n })\n ) : (\n

    No hay turnos disponibles

    \n )}\n
    \n );\n};\n\nconst ConsultaNutricional: React.FC = () => {\n const dispatch = useDispatch();\n const role = useSelector((state: RootState) => userRole(state));\n const actualUser = useSelector((state: RootState) => userAccount(state));\n const isFinalUser = role === 'user';\n const isNutritionist = role === 'nutricionist';\n const firstName = actualUser && actualUser.profile.firstName;\n const hasAnalysis = actualUser && actualUser.profile.analysis;\n const [formData, setFormData] = useState({\n name: '',\n lastName: '', // Agregado para el apellido\n email: '',\n phone: '',\n });\n \n const [consultaSeleccionada, setConsultaSeleccionada] = useState('');\n const [preference, setPreference] = useState('');\n \n const [turnos, setTurnos] = useState([]);\n const [turnosLoading, setTurnosLoading] = useState(true); // Estado para cargar turnos\n\n const history = useHistory();\n const location = useLocation();\n const queryParams = new URLSearchParams(location.search);\n const paymentStatus = queryParams.get('status');\n const [statusMP, setStatusMP] = useState('');\n const [paymentId, setPaymentId] = useState('');\n const [anchorEl, setAnchorEl] = useState(null);\n const [cartOpen, setCartOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const [preferenceId, setPreferenceId] = useState('');\n // Estado para controlar el popup de datos para usuarios no logueados\n const [openPopup, setOpenPopup] = useState(false);\n\n useEffect(() => {\n // Si existe usuario actual, se setean los datos\n if (actualUser) {\n setFormData({\n name: actualUser?.profile?.firstName || '',\n lastName: actualUser?.profile?.lastName || '',\n email: actualUser?.email || '',\n phone: actualUser?.profile?.mobile || '',\n }); \n }\n setConsultaSeleccionada('consultaPuntual');\n }, [actualUser]);\n\n useEffect(() => {\n console.log(\"payment-status\", paymentStatus);\n if (paymentStatus !== \"\" && paymentStatus !== null) {\n if(queryParams.get('payment_id') === 'null') return;\n setStatusMP(paymentStatus);\n setPaymentId(queryParams.get('payment_id'));\n }\n }, [paymentStatus]);\n\n useEffect(() => {\n // Inicialización de MercadoPago\n initMercadoPago('APP_USR-097c1049-0ad3-4548-b85e-ba982fe5f695');\n }, []);\n\n useEffect(() => {\n if (consultaSeleccionada) {\n const tipoConsulta = '71184913';\n \n const consultarTurnos = (fecha) => {\n setTurnosLoading(true);\n const mes = format(fecha, 'yyyy-MM');\n \n request.post(\n 'https://hook.us2.make.com/dqq7kjqa32r4n0wi93a0uy7sika7lfpw',\n { json: { tipo_consulta: tipoConsulta, mes: mes } },\n (error, response, body) => {\n setTurnosLoading(false);\n if (!error && response.statusCode === 200) {\n console.log(`Turnos recibidos para ${mes}:`, body);\n if (Array.isArray(body) && body.length === 0) {\n // Si el array está vacío, consultar el próximo mes\n const siguienteMes = addMonths(fecha, 1);\n consultarTurnos(siguienteMes);\n } else {\n setTurnos(body);\n }\n } else {\n console.error('Error al obtener turnos:', error || body);\n }\n }\n );\n };\n \n consultarTurnos(new Date());\n console.log('consulta seleccionada', consultaSeleccionada);\n }\n }, [consultaSeleccionada]);\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const selectOption = (option: number) => {\n if (option === 0) history.push(\"/profile\");\n if (option === 1) {\n dispatch(logout());\n history.push(\"/\");\n }\n if (option === 2) {\n history.push(\"/platos-semanales\");\n }\n if(option === 3) {\n history.push(\"/consulta-nutricional\");\n }\n setAnchorEl(null);\n };\n\n const handleConsultaSelection = (consulta) => {\n if(consulta === consultaSeleccionada) return;\n setPreference('');\n setConsultaSeleccionada(consulta);\n };\n\n // Función para generar la preferencia de pago\n const generarPreferencia = (userData: typeof formData) => {\n setIsLoading(true); // Muestra el spinner en el botón\n const orderData = {\n tipoConsulta: consultaSeleccionada,\n user: {\n name: userData.name,\n lastName: userData.lastName,\n email: userData.email,\n phone: userData.phone,\n },\n };\n const mrgenToken = {\n token: localStorage.getItem('token') || ''\n };\n\n request.post(\n `${BASE_URL_FOODS}/v1/payment/create_preference_hire_nutritionist`,\n {\n json: { orderData, mrgenToken },\n },\n (error, response, body) => {\n setIsLoading(false); // Oculta el spinner\n if (!error && response.statusCode === 200) {\n setPreference(body.id); // Muestra el botón de MercadoPago\n } else {\n console.error('Error al generar preferencia:', error || body);\n alert('Ocurrió un error, intenta nuevamente.');\n }\n }\n );\n };\n\n // Maneja el click en \"Contratar\"\n const handleCheckout = () => {\n // Si el usuario no está logueado, se abre el popup\n if (!actualUser) {\n setOpenPopup(true);\n return;\n }\n generarPreferencia(formData);\n };\n\n // Se ejecuta al enviar el formulario del popup\n const handlePopupSubmit = () => {\n if (!formData.name || !formData.lastName || !formData.email || !formData.phone) {\n alert(\"Por favor completa todos los campos\");\n return;\n }\n setOpenPopup(false);\n generarPreferencia(formData);\n };\n\n const handleNavigation = () => {\n if (!window.localStorage.token) {\n history.push('/');\n } else if (!hasAnalysis) {\n history.push('/loadingPayment');\n } else {\n history.push('/dashboard');\n }\n };\n\n return (\n
    \n
    \n
    \n \n
    \n {actualUser && (\n
    \n
    {firstName ? firstName[0] : ''}
    \n {firstName}\n
    \n )}\n
    \n {actualUser && (\n \n selectOption(0)}>Editar perfil\n selectOption(2)}>Platos semanales\n selectOption(3)}>Consulta nutricional\n selectOption(1)}>Cerrar sesión\n \n )}\n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n {statusMP && (\n
    \n

    Pago completado

    \n

    \n ¡Gracias por tu compra! A la brevedad recibirás un email para agendar tu consulta\n
    \n Estado: {statusMP === 'approved' ? \"Aprobado\" : statusMP}\n Id de pago: {paymentId}\n
    \n )}\n {consultaSeleccionada === 'consultaPuntual' && !statusMP ? (\n
    \n

    Análisis Nutricional del Test Nutrigenético

    \n
    \n
    \n \"Consulta\n {/* Sección de turnos debajo de la foto */}\n {turnosLoading ? (\n
    \n \n
    \n ) : (\n \n )}\n
    \n
    \n

    \n En esta sesión inicial, te ayudaremos a interpretar los resultados del informe de tu test nutrigenético para optimizar tus hábitos alimenticios.\n

    \n

    Incluye:

    \n
      \n
    • - Lectura y análisis del test nutrigenético.
    • \n
    • - Consulta virtual de 30 minutos.
    • \n
    • - Recomendaciones en función de los resultados.
    • \n
    \n
    \n

    Precio total

    \n

    $U 2.000 Impuestos incluidos

    \n
    \n {!preference ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n ) : consultaSeleccionada === 'consultaPlus4' && !statusMP ? (\n
    \n

    Análisis Nutricional del Test Nutrigenético + Plan Nutricional Personalizado + 2 Controles

    \n
    \n
    \n \"Consulta\n {turnosLoading ? (\n
    \n \n
    \n ) : (\n \n )}\n
    \n
    \n

    \n

    Incluye 4 consultas:

    \n
      \n
    • - Lectura y análisis del test nutrigenético.
    • \n
    • - Consulta nutricional virtual de 30 minutos.
    • \n
    • - Entrevista personal, registro de datos para el armado del plan nutricional.
    • \n
    • - Consulta virtual o presencial de 45 minutos.
    • \n
    • - Se realizarán 2 controles adicionales de revisión de objetivos y ajustes del plan nutricional.
    • \n
    • - Consulta virtual o presencial de 30 minutos.
    • \n
    \n
    \n

    Precio total

    \n

    $U 7.590 Impuestos incluidos

    \n

    o hasta 6 cuotas de $U 1.265

    \n
    \n {!preference ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n ) : consultaSeleccionada === 'consultaPlus8' && !statusMP ? (\n
    \n

    Análisis Nutricional del Test Nutrigenético + Plan Nutricional Personalizado + 6 controles

    \n
    \n
    \n \"Consulta\n {turnosLoading ? (\n
    \n \n
    \n ) : (\n \n )}\n
    \n
    \n

    \n

    Incluye 8 consultas:

    \n
      \n
    • - Lectura y análisis del test nutrigenético.
    • \n
    • - Consulta nutricional virtual de 30 minutos.
    • \n
    • - Entrevista personal, registro de datos para el armado del plan nutricional.
    • \n
    • - Consulta virtual o presencial de 45 minutos.
    • \n
    • - Se realizarán 6 controles adicionales de revisión de objetivos y ajustes del plan nutricional.
    • \n
    • - Consulta virtual o presencial de 30 minutos.
    • \n
    \n
    \n

    Precio total

    \n

    $U 12.900 Impuestos incluidos

    \n

    o hasta 6 cuotas de $U 2.150

    \n
    \n {!preference ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n ) : consultaSeleccionada === 'controlesx2' && !statusMP ? (\n
    \n

    2 controles de seguimiento nutricional

    \n
    \n
    \n \"Consulta\n {turnosLoading ? (\n
    \n \n
    \n ) : (\n \n )}\n
    \n
    \n

    \n

    Incluye:

    \n
      \n
    • - Se realizarán 2 controles de revisión de objetivos y ajustes del plan nutricional.
    • \n
    • - Consulta virtual o presencial de 30 minutos.
    • \n
    • - Válido para clientes que hayan contratado previamente consulta inicial y plan nutricional.
    • \n
    \n
    \n

    Precio total

    \n

    $U 2.860 Impuestos incluidos

    \n
    \n {!preference ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n ) : null}\n \n {/* Popup para usuarios no logueados */}\n setOpenPopup(false)}>\n Ingresa tus datos\n \n setFormData({ ...formData, name: e.target.value })}\n />\n setFormData({ ...formData, lastName: e.target.value })}\n />\n setFormData({ ...formData, email: e.target.value })}\n />\n setFormData({ ...formData, phone: e.target.value })}\n />\n \n \n \n \n \n \n
    \n );\n};\n\nexport default ConsultaNutricional;\n","import React, { useState, useEffect, ChangeEventHandler } from 'react';\nimport { RootState } from \"../../../store/config/types\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport { addInstrument } from \"../../../store/instruments/actionCreators\";\nimport { connect, ConnectedProps, useDispatch, useSelector } from \"react-redux\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { userAccount } from \"../../../store/auth/selector\";\nimport roles from \"../../../utils/roles\";\nimport { logout } from \"../../../store/auth/actionCreators\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\n\nconst mapStateToProps = (state: RootState) => ({\n instruments: state.instruments,\n});\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch\n ) => ({\n addInstrument: () => dispatch(addInstrument()),\n });\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & RouteComponentProps;\n \n\nfunction MealsPayment({ instruments, addInstrument, history }: PropsType) {\n const actualUser = useSelector((state: RootState) => userAccount(state));\n const isCompany = actualUser?.role === roles?.business;\n const dispatch = useDispatch();\n\n\n useEffect(() => {\n if (\n !instruments.addingInstrument &&\n !instruments.instrumentUrl &&\n instruments.addInstrumentErrorMessage === \"\"\n ) {\n addInstrument();\n }\n }, [\n instruments.addingInstrument,\n instruments.instrumentUrl,\n instruments.addInstrumentErrorMessage,\n addInstrument,\n ]);\n\n const loadingPlexo = (\n
    \n \n

    \n En unos segundos serás redireccionado al sitio de Plexo para realizar el\n pago.\n

    \n
    \n );\n\n const plexoIframe = (\n
    \n \n
    \n );\n\n function goBack() {\n dispatch(logout());\n history.push(\"/\");\n }\n\n return (\n <>\n {instruments.instrumentUrl ? plexoIframe : loadingPlexo}\n \n )\n}\n\nexport default connector(withRouter(MealsPayment));","import React, { useEffect, useCallback, useState, useRef } from \"react\";\nimport logo from \"../../../assets/logo.png\";\nimport { LoadingAnimation } from \"../../animations/LoadingAnimation\";\nimport { CompanyCard } from \"../../common/CompanyCard\";\nimport { EndUserCard } from \"../../common/EndUserCard\";\nimport { RootState } from \"../../../store/config/types\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { AppActions } from \"../../../store/config/ActionTypes\";\nimport { addInstrument } from \"../../../store/instruments/actionCreators\";\nimport { connect, ConnectedProps, useDispatch, useSelector } from \"react-redux\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { userAccount } from \"../../../store/auth/selector\";\nimport roles from \"../../../utils/roles\";\nimport { Header } from \"../../common/Header\";\nimport { Menu } from \"@material-ui/core\";\nimport { logout } from \"../../../store/auth/actionCreators\";\nimport {BASE_URL_FOODS, BASE_URL, REDIRECT_URL} from '../../../services/config';\nimport request from 'request';\nimport { set } from \"date-fns\";\nimport { Formik, Form, Field } from \"formik\";\nimport { FormTextField } from \"../../common/forms/FormTextField\";\nimport { Button } from \"@material-ui/core\";\nimport FormFileField from \"../../common/forms/FormFileField/FormFileField\";\n\ntype PropsType = RouteComponentProps;\n\nconst LoadingPaymentClone: React.FC = ({ history }) => {\n const instruments = useSelector((state: RootState) => state.instruments);\n const [loading, setLoading] = useState(true);\n \n const dispatch = useDispatch();\n\n const iframeRef = useRef(null);\n\n useEffect(() => {\n window.addEventListener(\"message\", receiveMessage);\n \n return () => {\n window.removeEventListener(\"message\", receiveMessage);\n };\n }, []);\n \n function receiveMessage(event: MessageEvent) {\n console.log(\"Received message from iframe: \");\n console.log(event.data);\n console.log(event);\n \n if (event.origin !== REDIRECT_URL ) {\n console.warn(\"Mensaje de origen desconocido:\", event.origin);\n return;\n }\n \n if (event.data === \"redirectOccurred\") {\n console.log(\"redireccion ocurrida desde iframe\");\n //redirectTo(\"/checkout\");\n } else if (event.data === \"instrumentAdded\") {\n console.log(\"instrumento agregado desde iframe\");\n // Redirige a /checkout cuando el instrumento se ha agregado correctamente\n //redirectTo(\"/checkout\");\n } else if (event.data === \"errorOccurred\") {\n console.log(\"error ocurrido desde iframe\");\n // Manejo de errores, redirigir o mostrar un mensaje de error\n //redirectTo(\"/error\");\n }\n }\n\n const iframeContent = (\n {\n window.parent.postMessage(\"instrumentAdded\", REDIRECT_URL );\n }}\n />\n );\n\n const checkIframeUrl = () => {\n const iframe = iframeRef.current;\n if (iframe) {\n try {\n const iframeUrl = iframe.contentWindow.location.pathname;\n if (iframeUrl === '/checkout') {\n window.top.location.href = iframe.contentWindow.location.href;\n }\n } catch (e) {\n console.log(e);\n // Puede fallar debido a políticas de CORS, ignora el error\n }\n }\n };\n\n const handleIframeLoad = () => {\n checkIframeUrl();\n const iframe = iframeRef.current;\n if (iframe) {\n const observer = new MutationObserver(() => {\n checkIframeUrl();\n });\n observer.observe(iframe.contentWindow.document, {\n childList: true,\n subtree: true\n });\n\n // Desconectar el observer cuando el iframe se descarga\n return () => observer.disconnect();\n }\n };\n\n useEffect(() => {\n const iframe = iframeRef.current;\n if (iframe) {\n iframe.onload = handleIframeLoad;\n }\n\n return () => {\n if (iframe) {\n iframe.onload = null;\n }\n };\n }, [instruments.instrumentUrl]);\n\n\n const handleAddInstrument = () => {\n dispatch(addInstrument());\n };\n\n return (\n
    \n \n
    \n
    \n {instruments.instrumentUrl ? iframeContent :
    cargando plexo
    }\n
    \n );\n};\n\nexport default withRouter(LoadingPaymentClone);","import React, { useEffect, useState } from \"react\";\nimport {\n Switch,\n Route,\n RouteComponentProps,\n withRouter,\n useLocation\n} from \"react-router-dom\";\n\nimport { Login } from \"./auth/Login\";\nimport { ChangePassword } from \"./auth/ChangePassword/\";\nimport { ResetPassword } from \"./auth/ResetPassword\";\nimport { Signup } from \"./signup\";\nimport { Landing } from \"./landing/Landing\";\nimport { EmailVerified } from \"./verify/Verify\";\nimport { Dashboard } from \"./dashboard\";\nimport { Profile } from \"./profile\";\nimport { DNAForm } from \"./profile/DNAForm\";\nimport { NutritionistPayments } from \"./profile/NutritionistPayments\";\nimport { PaymentMethod } from \"./profile/PaymentMethod\";\nimport { PaymentResult } from \"./payment/PaymentResult\";\nimport { Redirect } from \"./payment/Redirect\";\nimport { Checkout } from \"./payment/Checkout\";\nimport { LoadingPayment } from \"./payment/LoadingPayment\";\nimport { UserForm } from \"./dashboard/common/UserForm\";\nimport { RootState } from \"../store/config/types\";\nimport { ThunkDispatch } from \"redux-thunk\";\nimport { AppActions } from \"../store/config/ActionTypes\";\nimport { getAccount } from \"../store/auth/actionCreators\";\nimport { ConnectedProps, connect } from \"react-redux\";\nimport { urlHelper } from \"../helpers/urlHelper\";\nimport { LoadingAnimation } from \"./animations/LoadingAnimation\";\nimport { TermsAndConditions } from \"./common/TermsAndConditions\";\nimport EmailConfirmed from \"./signup/common/EmailConfirmed/EmailConfirmed\";\nimport EndUserLanding from \"./endUser/Landing\";\nimport Results from \"./endUser/Results\";\nimport Foods from \"./endUser/Foods\";\nimport Agenda from \"./endUser/Agenda\";\nimport Meal from \"./endUser/Meals\";\nimport roles from \"../utils/roles\";\nimport NutritionistResults from \"./dashboard/NutritionistDashboard/NutritionistResults\";\n//import ReactGA from 'react-ga';\nimport { MenuSemanal } from \"./common/MenuSemanal\";\nimport { ConsultaNutricional } from \"./common/ConsultaNutricional\";\nimport { MealsPayment } from \"./common/MealsPayment\";\nimport { LoadingPaymentClone } from \"./payment/LoadingPaymentClone\";\n\n//ReactGA.initialize('UA-210867173-1');\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (\n dispatch: ThunkDispatch\n) => ({\n getAccount: () => dispatch(getAccount()),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & RouteComponentProps;\n\nfunction Main({ auth, getAccount, history }: PropsType) {\n const [loading, setLoading] = useState(true);\n const hasToken =\n window.localStorage.getItem(\"token\") !== undefined &&\n window.localStorage.getItem(\"token\") !== null;\n \n const loc = useLocation();\n const route = loc.pathname;\n \n useEffect(() => {\n if (!auth.getAccountSuccess && auth.getAccountErrorMessage) {\n setLoading(false);\n history.push(\"/\");\n }\n }, [auth.getAccountSuccess, auth.getAccountErrorMessage, auth.loggedIn]);\n\n /* useEffect(() => {\n history.listen(location => {\n ReactGA.pageview(location.pathname);\n //console.log('tageado '+location.pathname);\n });\n },[history]); */\n\n useEffect(() => {\n if (hasToken) {\n if (!auth.loggingIn && !auth.loggedIn && auth.loginErrorMessage === \"\") {\n getAccount();\n }\n\n if (auth.loggedIn) {\n setLoading(false);\n console.log(auth.account);\n if (\n history.location.pathname == \"/payment\" ||\n history.location.pathname == \"/paymentMethod\" ||\n history.location.pathname == \"/checkout\" ||\n history.location.pathname == \"/payrenewed\" \n ) {\n return;\n \n }\n if (\n auth.account.profile !== null &&\n auth.account.role === roles.user &&\n auth.account.profile.analysis === null\n ) {\n //Aca le pregunto si el Profile->Analysis->Order != null, en caso de ser null lo mando a la ventana de pago de plexo.\n history.push(\"/loadingPayment\");\n } else {\n if(history.location.pathname == \"/platos-semanales\"){\n return;\n }\n if(history.location.pathname == \"/consulta-nutricional\"){\n return;\n }\n if(history.location.pathname == \"/meals-checkout\"){\n return;\n }\n history.push(\"/dashboard\");\n //REDIRECCION PLEXO OBLIGADO CHEQUEOS\n //history.push(\"/loadingPayment\");\n }\n }\n } else {\n if (\n !urlHelper.isOnPublicUrl(history.location.pathname)\n ) {\n history.push(\"/\");\n }\n setLoading(false);\n }\n }, [\n auth.loggingIn,\n auth.loggedIn,\n auth.loginErrorMessage,\n getAccount,\n history,\n hasToken,\n ]);\n\n if (loading) {\n return (\n
    \n \n
    \n );\n }\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n}\n\nexport default connector(withRouter(Main));\n","import { unstable_createMuiStrictModeTheme as createMuiTheme } from \"@material-ui/core/styles\";\nimport * as styleVars from \"./styles/_variables.scss\";\n\nexport const theme = createMuiTheme({\n palette: {\n primary: {\n main: styleVars.primary,\n },\n success: {\n main: styleVars.success,\n },\n warning: {\n main: styleVars.warning,\n },\n },\n breakpoints: {\n values: {\n xs: 0,\n sm: 768,\n md: 960,\n lg: 1280,\n xl: 1920,\n },\n },\n typography: {\n fontFamily: `\"Mukta\", sans-serif`,\n },\n overrides: {\n MuiButton: {\n root: {\n borderRadius: 50,\n textTransform: \"none\",\n padding: \"8px 48px\",\n fontSize: 16,\n },\n text: {\n padding: \"8px 48px\",\n },\n outlined: {\n padding: \"8px 48px\",\n },\n },\n MuiMenuItem: {\n root: {\n fontSize: 14,\n \"&$selected\": {\n backgroundColor: styleVars.primary,\n color: styleVars.white,\n \"&:hover\": {\n backgroundColor: styleVars.primary,\n color: styleVars.white,\n },\n },\n },\n },\n MuiPopover: {\n paper: {\n marginTop: 8,\n fontSize: 14,\n },\n },\n },\n});\n","import { AnalysesState, Analysis, Direction } from \"./types\";\nimport {\n AnalysesActionTypes,\n ANALYSES_LOADING,\n ADD_ANALYSES,\n ANALYSES_FAILED,\n ADDING_ANALYSIS,\n ADD_ANALYSIS,\n ADD_ANALYSIS_FAILED,\n ANALYSIS_DIRECTIONS_LOADING,\n ADD_ANALYSIS_DIRECTIONS,\n ANALYSIS_DIRECTIONS_FAILED,\n ADD_ANALYSIS_DIRECTION_FAILED,\n ADD_ANALYSIS_DIRECTION,\n ADDING_ANALYSIS_DIRECTION,\n FETCHING_ANALYSIS_RESULT,\n FETCH_ANALYSIS,\n FETCH_ANALYSIS_FAILED,\n FETCHING_ANALYSIS_FOODS,\n FETCH_ANALYSIS_FOODS,\n FETCH_ANALYSIS_FOODS_FAILED,\n CHANGE_PATIENTID,\n} from \"./actionTypes\";\n\nconst initialState: AnalysesState = {\n loading: false,\n analyses: null,\n errorMessage: \"\",\n analysisResult: [],\n analysisResultSuccess: false,\n analysisResultError: false,\n fetchingAnalysisResult: false,\n creatingAnalysis: false,\n createAnalysisSuccess: false,\n createAnalysisErrorMessage: \"\",\n gettingAnalysisDirections: false,\n analysisDirections: null,\n analysisDirectionsErrorMessage: \"\",\n creatingAnalysisDirection: false,\n createAnalysisDirectionSuccess: false,\n createAnalysisDirectionErrorMessage: \"\",\n analysisFoodResult: { foods: [], categories: [] },\n analysisFoodResultSuccess: false,\n analysisFoodResultError: false,\n fetchingAnalysisFoodResult: false,\n patientId: \"\",\n};\n\nexport function analysesReducer(\n state = initialState,\n action: AnalysesActionTypes\n): AnalysesState {\n switch (action.type) {\n case CHANGE_PATIENTID:\n return {\n ...state,\n patientId: action.id\n };\n\n case ANALYSES_LOADING:\n return {\n ...state,\n loading: true,\n analyses: null,\n errorMessage: \"\",\n };\n\n case ADD_ANALYSES:\n return {\n ...state,\n loading: false,\n analyses: action.analyses,\n errorMessage: \"\",\n };\n\n case ANALYSES_FAILED:\n return {\n ...state,\n loading: false,\n analyses: null,\n errorMessage: action.error,\n };\n\n case ADDING_ANALYSIS:\n return {\n ...state,\n creatingAnalysis: true,\n createAnalysisSuccess: false,\n createAnalysisErrorMessage: \"\",\n };\n\n case ADD_ANALYSIS:\n let newResults: Analysis[] | null = state.analyses;\n newResults?.push(action.analysis);\n\n return {\n ...state,\n creatingAnalysis: false,\n createAnalysisSuccess: true,\n createAnalysisErrorMessage: \"\",\n analyses: newResults,\n };\n\n case ADD_ANALYSIS_FAILED:\n return {\n ...state,\n creatingAnalysis: false,\n createAnalysisSuccess: false,\n createAnalysisErrorMessage: action.error,\n };\n\n case ANALYSIS_DIRECTIONS_LOADING:\n return {\n ...state,\n gettingAnalysisDirections: true,\n analysisDirections: null,\n analysisDirectionsErrorMessage: \"\",\n };\n\n case ADD_ANALYSIS_DIRECTIONS:\n return {\n ...state,\n gettingAnalysisDirections: false,\n analysisDirections: action.directions,\n analysisDirectionsErrorMessage: \"\",\n };\n\n case ANALYSIS_DIRECTIONS_FAILED:\n return {\n ...state,\n gettingAnalysisDirections: false,\n analysisDirections: null,\n analysisDirectionsErrorMessage: action.error,\n };\n\n case ADDING_ANALYSIS_DIRECTION:\n return {\n ...state,\n creatingAnalysisDirection: true,\n createAnalysisDirectionSuccess: false,\n createAnalysisDirectionErrorMessage: \"\",\n };\n\n case ADD_ANALYSIS_DIRECTION:\n let newDirections: Direction[] | null = state.analysisDirections;\n newDirections?.push(action.direction);\n\n return {\n ...state,\n creatingAnalysisDirection: false,\n createAnalysisDirectionSuccess: true,\n createAnalysisDirectionErrorMessage: \"\",\n analysisDirections: newDirections,\n };\n\n case ADD_ANALYSIS_DIRECTION_FAILED:\n return {\n ...state,\n creatingAnalysisDirection: false,\n createAnalysisDirectionSuccess: false,\n createAnalysisDirectionErrorMessage: action.error,\n };\n case FETCHING_ANALYSIS_RESULT:\n return {\n ...state,\n fetchingAnalysisResult: true,\n loading: true,\n };\n\n case FETCH_ANALYSIS:\n return {\n ...state,\n fetchingAnalysisResult: false,\n analysisResultError: false,\n analysisResultSuccess: true,\n analysisResult: action.results,\n loading: false,\n };\n\n case FETCH_ANALYSIS_FAILED:\n return {\n ...state,\n fetchingAnalysisResult: false,\n analysisResultError: true,\n analysisResultSuccess: false,\n errorMessage: action.error,\n };\n case FETCHING_ANALYSIS_FOODS:\n return {\n ...state,\n fetchingAnalysisFoodResult: true,\n loading: true,\n };\n\n case FETCH_ANALYSIS_FOODS:\n return {\n ...state,\n fetchingAnalysisFoodResult: false,\n analysisFoodResultError: false,\n analysisFoodResultSuccess: true,\n analysisFoodResult: action.foods,\n loading: false,\n };\n case FETCH_ANALYSIS_FOODS_FAILED:\n return {\n ...state,\n fetchingAnalysisFoodResult: false,\n analysisFoodResultError: true,\n analysisFoodResultSuccess: false,\n errorMessage: action.error,\n };\n\n default:\n return state;\n }\n}\n","import {AuthState} from './types';\nimport {\n REGISTER_REQUEST,\n REGISTER_SUCCESS,\n REGISTER_FAILED,\n LOGIN_REQUEST,\n LOGIN_SUCCESS,\n LOGIN_FAILED,\n VERIFY_EMAIL_REQUEST,\n VERIFY_EMAIL_SUCCESS,\n VERIFY_EMAIL_FAILED,\n CONFIRMING_REGISTER,\n CONFIRM_REGISTER_SUCCESS,\n CONFIRM_REGISTER_FAILED,\n CHANGING_PASSWORD,\n CHANGE_PASSWORD_SUCCESS,\n CHANGE_PASSWORD_FAILED,\n RESETING_PASSWORD,\n RESET_PASSWORD_SUCCESS,\n RESET_PASSWORD_FAILED,\n CONFIRMING_RESET_PASSWORD,\n CONFIRM_RESET_PASSWORD_SUCCESS,\n CONFIRM_RESET_PASSWORD_FAILED,\n GETTING_ACCOUNT,\n GET_ACCOUNT,\n GET_ACCOUNT_FAILED,\n CHANGE_EMAIL_SENT,\n UPDATE_ACCOUNT_SUCCESS,\n UPDATE_ACCOUNT_FAILURE,\n UPDATE_ACCOUNT_REQUEST,\n} from './actionTypes';\nimport {AuthActionTypes, LOGOUT} from './actionTypes';\n\nconst initialState: AuthState = {\n registering: false,\n registerSuccess: false,\n registerErrorMessage: '',\n loggingIn: false,\n loggedIn: false,\n loginErrorMessage: '',\n verifyingEmail: false,\n verifyEmailSuccess: false,\n verifyEmailErrorMessage: '',\n confirmingRegister: false,\n confirmRegisterSuccess: false,\n confirmRegisterErrorMessage: '',\n changingPassword: false,\n changePasswordSuccess: false,\n changePasswordErrorMessage: '',\n resetingPassword: false,\n resetPasswordSuccess: false,\n resetPasswordErrorMessage: '',\n confirmingResetPassword: false,\n confirmResetPasswordSuccess: false,\n confirmResetPasswordErrorMessage: '',\n gettingAccount: false,\n account: null,\n getAccountSuccess: false,\n getAccountErrorMessage: '',\n emailSent: '',\n updateAccountSuccess: false,\n};\n\nexport function authReducer(\n state = initialState,\n action: AuthActionTypes\n): AuthState {\n switch (action.type) {\n case CHANGE_EMAIL_SENT:\n return {\n ...state,\n emailSent: action.email,\n };\n case REGISTER_REQUEST:\n return {\n ...state,\n registering: true,\n registerSuccess: false,\n registerErrorMessage: '',\n };\n\n case REGISTER_SUCCESS:\n return {\n ...state,\n registering: false,\n registerSuccess: true,\n registerErrorMessage: '',\n };\n\n case REGISTER_FAILED:\n return {\n ...state,\n registering: false,\n registerSuccess: false,\n registerErrorMessage: action.error,\n };\n\n case LOGIN_REQUEST:\n return {\n ...state,\n loggingIn: true,\n loggedIn: false,\n loginErrorMessage: '',\n };\n\n case LOGIN_SUCCESS:\n return {\n ...state,\n loggingIn: false,\n loggedIn: true,\n loginErrorMessage: '',\n account: action.account,\n };\n\n case LOGIN_FAILED:\n return {\n ...state,\n loggingIn: false,\n loggedIn: false,\n loginErrorMessage: 'Por Favor Verifique su usuario y contraseña',\n };\n\n case VERIFY_EMAIL_REQUEST:\n return {\n ...state,\n verifyingEmail: true,\n verifyEmailSuccess: false,\n verifyEmailErrorMessage: '',\n };\n\n case VERIFY_EMAIL_SUCCESS:\n return {\n ...state,\n verifyingEmail: false,\n verifyEmailSuccess: true,\n verifyEmailErrorMessage: '',\n };\n\n case VERIFY_EMAIL_FAILED:\n return {\n ...state,\n verifyingEmail: false,\n verifyEmailSuccess: false,\n verifyEmailErrorMessage: action.error,\n };\n\n case CONFIRMING_REGISTER:\n return {\n ...state,\n confirmingRegister: true,\n confirmRegisterSuccess: false,\n confirmRegisterErrorMessage: '',\n };\n\n case CONFIRM_REGISTER_SUCCESS:\n return {\n ...state,\n confirmingRegister: false,\n confirmRegisterSuccess: true,\n confirmRegisterErrorMessage: '',\n };\n\n case CONFIRM_REGISTER_FAILED:\n return {\n ...state,\n confirmingRegister: false,\n confirmRegisterSuccess: false,\n confirmRegisterErrorMessage: action.error,\n };\n\n case CHANGING_PASSWORD:\n return {\n ...state,\n changingPassword: true,\n changePasswordSuccess: false,\n changePasswordErrorMessage: '',\n };\n\n case CHANGE_PASSWORD_SUCCESS:\n return {\n ...state,\n changingPassword: false,\n changePasswordSuccess: true,\n changePasswordErrorMessage: '',\n };\n\n case CHANGE_PASSWORD_FAILED:\n return {\n ...state,\n changingPassword: false,\n changePasswordSuccess: false,\n changePasswordErrorMessage: action.error,\n };\n\n case RESETING_PASSWORD:\n return {\n ...state,\n resetingPassword: true,\n resetPasswordSuccess: false,\n resetPasswordErrorMessage: '',\n };\n\n case RESET_PASSWORD_SUCCESS:\n return {\n ...state,\n resetingPassword: false,\n resetPasswordSuccess: true,\n resetPasswordErrorMessage: '',\n };\n\n case RESET_PASSWORD_FAILED:\n return {\n ...state,\n resetingPassword: false,\n resetPasswordSuccess: false,\n resetPasswordErrorMessage: action.error,\n };\n\n case CONFIRMING_RESET_PASSWORD:\n return {\n ...state,\n confirmingResetPassword: true,\n confirmResetPasswordSuccess: false,\n confirmResetPasswordErrorMessage: '',\n };\n\n case CONFIRM_RESET_PASSWORD_SUCCESS:\n return {\n ...state,\n confirmingResetPassword: false,\n confirmResetPasswordSuccess: true,\n confirmResetPasswordErrorMessage: '',\n };\n\n case CONFIRM_RESET_PASSWORD_FAILED:\n return {\n ...state,\n confirmingResetPassword: false,\n confirmResetPasswordSuccess: false,\n confirmResetPasswordErrorMessage: action.error,\n };\n\n case GETTING_ACCOUNT:\n return {\n ...state,\n gettingAccount: true,\n account: null,\n getAccountSuccess: false,\n getAccountErrorMessage: '',\n };\n\n case GET_ACCOUNT:\n return {\n ...state,\n gettingAccount: false,\n account: action.account,\n getAccountSuccess: true,\n getAccountErrorMessage: '',\n loggedIn: true,\n };\n\n case GET_ACCOUNT_FAILED:\n return {\n ...state,\n gettingAccount: false,\n account: null,\n getAccountSuccess: false,\n getAccountErrorMessage: action.error,\n };\n case UPDATE_ACCOUNT_REQUEST:\n return {\n ...state,\n gettingAccount: true,\n };\n case UPDATE_ACCOUNT_SUCCESS:\n return {\n ...state,\n gettingAccount: false,\n updateAccountSuccess: true,\n };\n case UPDATE_ACCOUNT_FAILURE:\n return {\n ...state,\n gettingAccount: false,\n updateAccountSuccess: false,\n };\n case LOGOUT:\n return {\n ...state,\n loggedIn: false,\n account: null,\n };\n\n default:\n return state;\n }\n}\n","import { BankAccountsState } from \"./types\";\nimport {\n BankAccountsActionTypes,\n BANKACCOUNTS_ADD,\n BANKACCOUNTS_ADDING,\n BANKACCOUNTS_ADD_FAILED,\n BANKACCOUNTS_LOAD,\n BANKACCOUNTS_UPDATING,\n BANKACCOUNTS_LOAD_FAILED,\n} from \"./actionTypes\";\n\nconst initialState: BankAccountsState = {\n bankAccountsLoading: false,\n bankAccounts: null,\n bankAccountsListErrorMessage: \"\",\n bankAccountsAdding: false,\n bankAccountsAddSuccess: false,\n bankAccountsAddErrorMessage: \"\",\n};\n\nexport function bankAccountsReducer(\n state = initialState,\n action: BankAccountsActionTypes\n): BankAccountsState {\n switch (action.type) {\n case BANKACCOUNTS_LOAD:\n return {\n ...state,\n bankAccountsLoading: false,\n bankAccounts: action.bankAccounts,\n bankAccountsListErrorMessage: \"\",\n };\n case BANKACCOUNTS_ADD:\n const newBankAccountsList = state.bankAccounts ? state.bankAccounts : [];\n newBankAccountsList.push(action.bankAccount);\n return {\n ...state,\n bankAccountsAdding: false,\n bankAccounts: newBankAccountsList,\n bankAccountsAddErrorMessage: \"\",\n bankAccountsAddSuccess: true,\n };\n case BANKACCOUNTS_LOAD_FAILED:\n return {\n ...state,\n bankAccountsLoading: false,\n bankAccountsListErrorMessage: action.error,\n };\n case BANKACCOUNTS_ADD_FAILED:\n return {\n ...state,\n bankAccountsAdding: false,\n bankAccountsAddSuccess: false,\n bankAccountsAddErrorMessage: action.error,\n };\n case BANKACCOUNTS_UPDATING:\n return {\n ...state,\n bankAccountsLoading: true,\n };\n case BANKACCOUNTS_ADDING:\n return {\n ...state,\n bankAccountsAdding: true,\n };\n default:\n return state;\n }\n}\n","import { BusinessesState } from \"./types\";\nimport {\n LOAD_BUSINESS,\n LOADING_BUSINESS,\n LOAD_BUSINESS_FAILED,\n FAILED_EMPLOYES_ACCOUNTS,\n GET_EMPLOYES_ACCOUNTS,\n LOADING_EMPLOYES_ACCOUNTS,\n} from \"./actionTypes\";\nimport { BusinessActionTypes } from \"./actionTypes\";\nimport { LOGOUT } from \"../auth/actionTypes\";\n\nconst initialState: BusinessesState = {\n businessIsLoading: false,\n business: null,\n businessErrorMessage: \"\",\n employesAccounts: null,\n employesAccountsErrorMessage: \"\",\n employesAccountsIsLoading: false,\n};\n\nexport function businessesReducer(\n state = initialState,\n action: BusinessActionTypes| {type: 'LOGOUT'}\n): BusinessesState {\n switch (action.type) {\n case GET_EMPLOYES_ACCOUNTS:\n return {\n ...state,\n employesAccounts: action.employesAccounts,\n employesAccountsIsLoading: false,\n };\n\n case LOADING_EMPLOYES_ACCOUNTS:\n return {\n ...state,\n employesAccountsIsLoading: true,\n };\n\n case FAILED_EMPLOYES_ACCOUNTS:\n return {\n ...state,\n employesAccountsIsLoading: false,\n employesAccountsErrorMessage: action.error,\n };\n\n case LOAD_BUSINESS:\n return {\n ...state,\n businessIsLoading: false,\n business: action.business,\n businessErrorMessage: \"\",\n };\n case LOADING_BUSINESS:\n return {\n ...state,\n businessIsLoading: true,\n };\n case LOAD_BUSINESS_FAILED:\n return {\n ...state,\n businessIsLoading: false,\n businessErrorMessage: action.error,\n };\n case LOGOUT:\n return {\n ...state,\n business: null,\n employesAccounts: null,\n };\n default:\n return state;\n }\n}\n","import { Commission } from \"./types\";\n\nexport const LOAD_COMMISSIONS = \"LOAD_COMMISSIONS\";\nexport const LOADING_COMMISSIONS = \"LOADING_COMMISSIONS\";\nexport const LOAD_COMMISSIONS_FAILED = \"LOAD_COMMISSIONS_FAILED\";\n\nexport interface LoadCommissionAction {\n type: typeof LOAD_COMMISSIONS;\n commissions: Commission[];\n}\n\nexport interface LoadingCommissionsAction {\n type: typeof LOADING_COMMISSIONS;\n}\n\nexport interface LoadCommissionsFailedAction {\n type: typeof LOAD_COMMISSIONS_FAILED;\n error: string;\n}\n\nexport type CommissionsActionTypes =\n | LoadCommissionAction\n | LoadingCommissionsAction\n | LoadCommissionsFailedAction;","import { CommissionsState } from \"./types\";\nimport {\n LOAD_COMMISSIONS,\n LOADING_COMMISSIONS,\n LOAD_COMMISSIONS_FAILED\n} from \"./actionTypes\";\nimport { CommissionsActionTypes } from \"./actionTypes\";\n\nconst initialState: CommissionsState = {\n commissionsAreLoading: false,\n commissions: null,\n commisssionsErrorMessage: \"\"\n};\n\nexport function commissionsReducer(\n state = initialState,\n action: CommissionsActionTypes\n): CommissionsState {\n switch (action.type) {\n case LOAD_COMMISSIONS:\n return {\n ...state,\n commissionsAreLoading: false,\n commissions: action.commissions,\n };\n case LOADING_COMMISSIONS:\n return {\n ...state,\n commissionsAreLoading: true,\n };\n case LOAD_COMMISSIONS_FAILED:\n return {\n ...state,\n commissionsAreLoading: false,\n commisssionsErrorMessage: action.error,\n };\n default:\n return state;\n }\n}\n","import { CostsState } from \"./types\";\nimport { CostsActionTypes, ADD_COSTS, LOADING_COSTS, COSTS_FAILED, SELECT_COST } from \"./actionTypes\";\n\nconst initialState: CostsState = {\n isLoading: false,\n costs: null,\n errorMessage: \"\",\n selected: 0,\n};\n\nexport function costsReducer(state = initialState, action: CostsActionTypes): CostsState {\n switch (action.type) {\n case ADD_COSTS:\n return {\n ...state,\n isLoading: false,\n costs: action.costs,\n errorMessage: \"\",\n selected: 0,\n };\n\n case LOADING_COSTS:\n return {\n ...state,\n isLoading: true,\n costs: null,\n errorMessage: \"\",\n selected: state.selected,\n };\n\n case COSTS_FAILED:\n return {\n ...state,\n isLoading: false,\n costs: null,\n errorMessage: action.error,\n selected: state.selected,\n };\n\n case SELECT_COST:\n return {\n ...state,\n isLoading: false,\n costs: state.costs,\n errorMessage: \"\",\n selected: action.selected,\n }\n\n default:\n return state;\n }\n}\n","import { InstrumentsState } from \"./types\";\nimport {\n InstrumentsActionTypes,\n INSTRUMENTS_LOADING,\n ADD_INSTRUMENTS,\n INSTRUMENTS_FAILED,\n ADDING_INSTRUMENT,\n ADD_INSTRUMENT_URL,\n ADD_INSTRUMENT_FAILED,\n} from \"./actionTypes\";\n\nconst initialState: InstrumentsState = {\n addingInstrument: false,\n instrumentUrl: null,\n addInstrumentErrorMessage: \"\",\n loading: false,\n instruments: null,\n errorMessage: \"\",\n};\n\nexport function instrumentsReducer(state = initialState, action: InstrumentsActionTypes): InstrumentsState {\n switch (action.type) {\n case ADDING_INSTRUMENT:\n return {\n ...state,\n addingInstrument: true,\n instrumentUrl: null,\n addInstrumentErrorMessage: \"\",\n };\n\n case ADD_INSTRUMENT_URL:\n return {\n ...state,\n addingInstrument: false,\n instrumentUrl: action.url,\n addInstrumentErrorMessage: \"\",\n };\n\n case ADD_INSTRUMENT_FAILED:\n return {\n ...state,\n addingInstrument: false,\n instrumentUrl: null,\n addInstrumentErrorMessage: action.error,\n };\n\n case INSTRUMENTS_LOADING:\n return {\n ...state,\n loading: true,\n instruments: null,\n errorMessage: \"\",\n };\n\n case ADD_INSTRUMENTS:\n return {\n ...state,\n loading: false,\n instruments: action.instruments,\n errorMessage: \"\",\n };\n\n case INSTRUMENTS_FAILED:\n return {\n ...state,\n loading: false,\n instruments: null,\n errorMessage: action.error,\n };\n\n default:\n return state;\n }\n}\n","import { Transaction } from \"./types\";\n\nexport const TRANSACTIONS_LOADING = \"TRANSACTIONS_LOADING\";\nexport const ADD_TRANSACTIONS = \"ADD_TRANSACTIONS\";\nexport const TRANSACTIONS_FAILED = \"TRANSACTIONS_FAILED\";\n\nexport interface RequestTransactionsAction {\n type: typeof TRANSACTIONS_LOADING;\n}\n\nexport interface AddTransactionsAction {\n type: typeof ADD_TRANSACTIONS;\n transactions: Transaction[];\n}\n\nexport interface TransactionsFailedAction {\n type: typeof TRANSACTIONS_FAILED;\n error: string;\n}\n\nexport const GETTING_TRANSACTION = \"GETTING_TRANSACTION\";\nexport const ADD_TRANSACTION = \"ADD_TRANSACTION\";\nexport const GET_TRANSACTION_FAILED = \"GET_TRANSACTION_FAILED\";\n\nexport interface RequestTransactionAction {\n type: typeof GETTING_TRANSACTION;\n}\n\nexport interface AddTransactionAction {\n type: typeof ADD_TRANSACTION;\n transaction: Transaction;\n}\n\nexport interface GetTransactionFailedAction {\n type: typeof GET_TRANSACTION_FAILED;\n error: string;\n}\n\nexport type TransactionsActionTypes =\n | RequestTransactionsAction\n | AddTransactionsAction\n | TransactionsFailedAction\n | RequestTransactionAction\n | AddTransactionAction\n | GetTransactionFailedAction;\n","import { TransactionsState } from \"./types\";\nimport {\n TransactionsActionTypes,\n TRANSACTIONS_LOADING,\n ADD_TRANSACTIONS,\n TRANSACTIONS_FAILED,\n GETTING_TRANSACTION,\n ADD_TRANSACTION,\n GET_TRANSACTION_FAILED,\n} from \"./actionTypes\";\n\nconst initialState: TransactionsState = {\n loading: false,\n transactions: null,\n errorMessage: \"\",\n gettingTransaction: false,\n transaction: null,\n getTransactionErrorMessage: \"\",\n};\n\nexport function transactionsReducer(state = initialState, action: TransactionsActionTypes): TransactionsState {\n switch (action.type) {\n case TRANSACTIONS_LOADING:\n return {\n ...state,\n loading: true,\n transactions: null,\n errorMessage: \"\",\n };\n\n case ADD_TRANSACTIONS:\n return {\n ...state,\n loading: false,\n transactions: action.transactions,\n errorMessage: \"\",\n };\n\n case TRANSACTIONS_FAILED:\n return {\n ...state,\n loading: false,\n transactions: null,\n errorMessage: action.error,\n };\n\n case GETTING_TRANSACTION:\n return {\n ...state,\n gettingTransaction: true,\n transaction: null,\n getTransactionErrorMessage: \"\",\n };\n\n case ADD_TRANSACTION:\n return {\n ...state,\n gettingTransaction: false,\n transaction: action.transaction,\n getTransactionErrorMessage: \"\",\n };\n\n case GET_TRANSACTION_FAILED:\n return {\n ...state,\n gettingTransaction: false,\n transaction: null,\n getTransactionErrorMessage: action.error,\n };\n\n default:\n return state;\n }\n}\n","import { UsersState } from \"./types\";\nimport {\n UsersActionTypes,\n USERS_LOAD,\n USERS_LOADING,\n USERS_LOAD_FAILED,\n USERS_ADD,\n USERS_ADDING,\n USERS_ADD_FAILED,\n CHANGE_AVATAR,\n} from \"./actionTypes\";\n\nconst initialState: UsersState = {\n users: null,\n usersUpdating: false,\n usersUpdateErrorMessage: \"\",\n usersAdding: false,\n usersAddSuccess: false,\n usersAddErrorMessage: \"\",\n companyAvatar: null\n};\n\nexport function usersReducer(state = initialState, action: UsersActionTypes): UsersState {\n switch (action.type) {\n case CHANGE_AVATAR: \n return {\n ...state,\n companyAvatar: action.avatar\n }\n case USERS_LOAD:\n return {\n ...state,\n usersUpdating: false,\n usersUpdateErrorMessage: \"\",\n users: action.users,\n };\n case USERS_LOADING:\n return {\n ...state,\n usersUpdating: true,\n };\n case USERS_LOAD_FAILED:\n return {\n ...state,\n usersUpdating: false,\n usersUpdateErrorMessage: action.error,\n };\n case USERS_ADD:\n const newUsersList = state.users ? state.users : [];\n newUsersList.push(action.user);\n return {\n ...state,\n users: newUsersList,\n usersAdding: false,\n usersAddErrorMessage: \"\",\n usersAddSuccess: true,\n };\n case USERS_ADDING:\n return {\n ...state,\n usersAdding: true,\n };\n case USERS_ADD_FAILED:\n return {\n ...state,\n usersAdding: false,\n usersAddSuccess: false,\n usersAddErrorMessage: action.error,\n };\n default:\n return state;\n }\n}\n","import {\n NutritionistActionTypes,\n NUTRITIONIST_LOAD,\n NUTRITIONIST_LOADING,\n NUTRITIONIST_LOAD_FAILED,\n NUTRITIONIST_ADD,\n NUTRITIONIST_ADDING,\n NUTRITIONIST_ADD_FAILED,\n NUTRITIONIST_DELETE,\n NUTRITIONIST_DELETING,\n REFERER_LOAD,\n REFERER_LOADING,\n REFERER_LOAD_FAILED,\n NUTRITIONIST_DELETE_FAILED,\n REGISTER_FROM_NUTRITIONIST_SUCCESS,\n REGISTERING_FROM_NUTRITIONIST,\n REGISTER_FROM_NUTRITIONIST_FAILED,\n COMPLETE_REGISTER_FROM_NUTRITIONIST_SUCCESS,\n COMPLETING_REGISTER_FROM_NUTRITIONIST,\n COMPLETE_REGISTER_FROM_NUTRITIONIST_FAILED,\n GET_REFERER_ACCOUNTS,\n LOADING_REFERER_ACCOUNTS,\n FAILED_REFERER_ACCOUNTS,\n GET_USER_FROM_CODE,\n GET_USER_FROM_CODE_FAILURE,\n GET_USER_FROM_CODE_SUCCESS,\n} from \"./actionTypes\";\nimport { NutritionistState } from \"./types\";\n\nconst initialState: NutritionistState = {\n nutritionist: null,\n nutritionistIsLoading: false,\n nutritionistErrorMessage: \"\",\n nutritionistAdding: false,\n nutritionistAddSuccessful: false,\n nutritionistAddErrorMessage: \"\",\n nutritionistDeleting: false,\n nutritionistDeleteSuccessful: false,\n nutritionistDeleteErrorMessage: \"\",\n registeringFromNutritionist: false,\n registerFromNutritionistSuccessful: false,\n registeredFromNutritionistAccount: null,\n registerFromNutritionistFailed: \"\",\n completingRegisterFromNutritionist: false,\n completeRegisterFromNutritionistSuccessful: false,\n completeRegisterFromNutritionistFailed: \"\",\n referer: null,\n refererIsLoading: false,\n refererErrorMessage: \"\",\n refererAccounts: null,\n refererAccountsErrorMessage: \"\",\n refererAccountsIsLoading: false,\n userFromCode: null,\n errorGettingUserFromCode: \"\",\n};\n\nexport function NutritionistReducer(\n state = initialState,\n action: NutritionistActionTypes\n): NutritionistState {\n switch (action.type) {\n case GET_USER_FROM_CODE_SUCCESS:\n return {\n ...state,\n userFromCode: action.userFromCode,\n errorGettingUserFromCode: \"\",\n };\n\n case GET_USER_FROM_CODE_FAILURE:\n return {\n ...state,\n errorGettingUserFromCode: action.error,\n };\n\n case LOADING_REFERER_ACCOUNTS:\n return {\n ...state,\n userFromCode: null,\n errorGettingUserFromCode: \"\",\n };\n\n case FAILED_REFERER_ACCOUNTS:\n return {\n ...state,\n userFromCode: null,\n errorGettingUserFromCode: action.error,\n };\n\n case GET_REFERER_ACCOUNTS:\n return {\n ...state,\n refererAccounts: action.refererAccounts,\n refererAccountsIsLoading: false,\n };\n\n case LOADING_REFERER_ACCOUNTS:\n return {\n ...state,\n refererAccountsIsLoading: true,\n };\n\n case FAILED_REFERER_ACCOUNTS:\n return {\n ...state,\n refererAccountsIsLoading: false,\n refererAccountsErrorMessage: action.error,\n };\n\n case NUTRITIONIST_LOAD:\n return {\n ...state,\n nutritionist: action.nutritionist,\n nutritionistIsLoading: false,\n nutritionistErrorMessage: \"\",\n };\n\n case NUTRITIONIST_LOADING:\n return {\n ...state,\n nutritionistIsLoading: true,\n };\n\n case NUTRITIONIST_LOAD_FAILED:\n return {\n ...state,\n nutritionistIsLoading: false,\n nutritionistErrorMessage: action.error,\n };\n\n case NUTRITIONIST_ADD:\n return {\n ...state,\n nutritionist: action.nutritionist,\n nutritionistAdding: false,\n nutritionistAddSuccessful: true,\n nutritionistAddErrorMessage: \"\",\n };\n\n case NUTRITIONIST_ADDING:\n return {\n ...state,\n nutritionistAdding: true,\n };\n\n case NUTRITIONIST_ADD_FAILED:\n return {\n ...state,\n nutritionistAdding: false,\n nutritionistAddSuccessful: false,\n nutritionistAddErrorMessage: action.error,\n };\n\n case NUTRITIONIST_DELETE:\n return {\n ...state,\n nutritionist: null,\n nutritionistDeleting: false,\n nutritionistDeleteSuccessful: true,\n nutritionistDeleteErrorMessage: \"\",\n };\n\n case NUTRITIONIST_DELETING:\n return {\n ...state,\n nutritionistDeleting: true,\n };\n\n case NUTRITIONIST_DELETE_FAILED:\n return {\n ...state,\n nutritionistDeleting: false,\n nutritionistDeleteSuccessful: false,\n nutritionistDeleteErrorMessage: action.error,\n };\n\n case REGISTER_FROM_NUTRITIONIST_SUCCESS:\n return {\n ...state,\n registeringFromNutritionist: false,\n registerFromNutritionistSuccessful: true,\n registeredFromNutritionistAccount: action.account,\n registerFromNutritionistFailed: \"\",\n };\n\n case REGISTERING_FROM_NUTRITIONIST:\n return {\n ...state,\n registeringFromNutritionist: true,\n registerFromNutritionistSuccessful: false,\n registeredFromNutritionistAccount: null,\n registerFromNutritionistFailed: \"\",\n };\n\n case REGISTER_FROM_NUTRITIONIST_FAILED:\n return {\n ...state,\n registeringFromNutritionist: false,\n registerFromNutritionistSuccessful: false,\n registeredFromNutritionistAccount: null,\n registerFromNutritionistFailed: action.error,\n };\n\n case COMPLETE_REGISTER_FROM_NUTRITIONIST_SUCCESS:\n return {\n ...state,\n completingRegisterFromNutritionist: false,\n completeRegisterFromNutritionistSuccessful: true,\n completeRegisterFromNutritionistFailed: \"\",\n };\n\n case COMPLETING_REGISTER_FROM_NUTRITIONIST:\n return {\n ...state,\n completingRegisterFromNutritionist: true,\n completeRegisterFromNutritionistSuccessful: false,\n completeRegisterFromNutritionistFailed: \"\",\n };\n\n case COMPLETE_REGISTER_FROM_NUTRITIONIST_FAILED:\n return {\n ...state,\n completingRegisterFromNutritionist: false,\n completeRegisterFromNutritionistSuccessful: false,\n completeRegisterFromNutritionistFailed: action.error,\n };\n\n case REFERER_LOAD:\n return {\n ...state,\n referer: action.referer,\n refererIsLoading: false,\n };\n\n case REFERER_LOADING:\n return {\n ...state,\n refererIsLoading: true,\n };\n\n case REFERER_LOAD_FAILED:\n return {\n ...state,\n refererIsLoading: false,\n refererErrorMessage: \"\",\n };\n\n default:\n return state;\n }\n}\n","import { createStore, combineReducers, applyMiddleware, compose } from \"redux\";\nimport thunk, { ThunkMiddleware } from \"redux-thunk\";\nimport { AppActions } from \"./ActionTypes\";\nimport { analysesReducer } from \"../analyses/reducer\";\nimport { authReducer } from \"../auth/reducer\";\nimport { bankAccountsReducer } from \"../bankAccounts/reducer\";\nimport { businessesReducer } from \"../businesses/reducer\";\nimport { commissionsReducer } from \"../commissions/reducer\";\nimport { costsReducer } from \"../costs/reducer\";\nimport { instrumentsReducer } from \"../instruments/reducer\";\nimport { transactionsReducer } from \"../transactions/reducer\";\nimport { usersReducer } from \"../users/reducer\";\nimport { NutritionistReducer } from \"../nutritionists/reducer\";\n\nconst composeEnhancers =\n typeof window === \"object\" && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n // Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize...\n })\n : compose;\n\nconst enhancer = composeEnhancers(applyMiddleware(thunk as ThunkMiddleware));\n\nexport const rootReducer = combineReducers({\n analyses: analysesReducer,\n auth: authReducer,\n bankAccounts: bankAccountsReducer,\n businesses: businessesReducer,\n commissions: commissionsReducer,\n costs: costsReducer,\n instruments: instrumentsReducer,\n nutritionists: NutritionistReducer,\n transactions: transactionsReducer,\n users: usersReducer,\n});\n\nexport type AppState = ReturnType;\n\nexport const store = createStore(rootReducer, enhancer);\n","import React from \"react\";\nimport WhatsApp from '@material-ui/icons/WhatsApp';\n\nconst WhatsAppIcon = () => {\n\n return (\n <>\n \n \n \n \n )\n\n}\n\nexport default WhatsAppIcon;\n;","import React from \"react\";\nimport \"./styles/app.scss\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport Main from \"./components/Main\";\nimport { ThemeProvider } from \"@material-ui/core\";\nimport { theme } from \"./theme\";\nimport { Provider } from \"react-redux\";\nimport { store } from \"./store/config/configureStore\";\nimport { WhatsAppIcon } from \"./components/common/WhatsAppIcon\";\n\n\nfunction App() {\n return (\n \n \n \n \n
    \n \n \n \n \n \n );\n}\n\nexport default App;\n\nclass ErrorBoundary extends React.Component {\n state = {\n hasError: false\n };\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error, errorInfo) {\n // You can also log the error to an error reporting service\n console.log(error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return

    Something went wrong.

    ;\n }\n\n return this.props.children;\n }\n}\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\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: 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(\n process.env.PUBLIC_URL,\n window.location.href\n );\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: string, config?: 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: string, config?: 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 App from \"./App\";\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"],"sourceRoot":""}