コード例 #1
0
        private async Task ExecuteOnSaveGlucose()
        {
            //  IsBusy = true;
            if (Glucose.Glycemia == 0)
            {
                DependencyService.Get <IMessage>().ShortAlert("Glycemie Non Valide !");
                return;
            }
            Glucose.Date         = AddDateTime;
            Glucose.PicturePathe = PicturePath;
            if (Befor_Eat)
            {
                Glucose.Glucose_time = "preparandial";
            }
            if (After_Eat)
            {
                Glucose.Glucose_time = "postparandial";
            }
            if (No_Eat)
            {
                Glucose.Glucose_time = "fasting";
            }
            dataStore.AddGlucose(GlycemiaConverter.ConvertBack(Glucose, Profil.GlycemiaUnit));
            //  System.Diagnostics.Debug.WriteLine(Glucose.Glucose_time);
            MessagingCenter.Send(this, "DataUpdated");
            await Navigation.PopModalAsync();

            //  IsBusy = false;
        }
コード例 #2
0
        private async Task ExecuteOnSaveObjectifs()
        {
            if ((Objectifs.Min_Glycemia <= Objectifs.Max_Glycemia) & Objectifs.Max_Glycemia > 0 & Objectifs.Min_Glycemia > 0)
            {
                if (await DependencyService.Get <IDialog>().AlertAsync("", Resources["EditMessage"], Resources["Yes"], Resources["No"]))
                {
                    var restapi = new RestApi();
                    Objectifs.Max_Glycemia    = GlycemiaConverter.DoubleGlycemiaConvertBack(double.Parse(Max_Glycemia), Profil.GlycemiaUnit);
                    Objectifs.Min_Glycemia    = GlycemiaConverter.DoubleGlycemiaConvertBack(double.Parse(Min_Glycemia), Profil.GlycemiaUnit);
                    Objectifs.Weight_Objectif = WeightConverter.DoubleWeightConvetBack(Objectifs.Weight_Objectif, Profil.WeightUnit);
                    var result = await restapi.Post_Objectifs("glucose", Objectifs.Max_Glycemia, Objectifs.Min_Glycemia);

                    var result2 = await restapi.Post_Objectifs("weight", Objectifs.Weight_Objectif, Objectifs.Weight_Objectif);

                    var result3 = await restapi.Post_Objectifs("walk", Objectifs.Steps_Objectif, Objectifs.Steps_Objectif);

                    if (!(result.Item1 & result2.Item1 & result3.Item1))
                    {
                        DependencyService.Get <IMessage>().ShortAlert(result.Item2);
                        return;
                    }
                    DataStore.UpdateObjectif(Objectifs);
                    MessagingCenter.Send(this, "DataUpdated");
                    DependencyService.Get <ISnackBar>().Show(Resources["SuccesMessage"]);
                    await Navigation.PopModalAsync();
                }
            }
            else
            {
                DependencyService.Get <IMessage>().ShortAlert("Invalide Data !");
            }
        }
コード例 #3
0
        public AddData_ViewModel(string source, INavigation navigation, IDataStore _datastore, Settings_Model profil, object data = null)
        {
            this.Navigation = navigation;
            this.dataStore  = _datastore;
            if (source == "Add_Data")
            {
                IsVisible          = true;
                Glucose            = new Glucose_Model();
                Pression           = new Pression_Model();
                Hb1Ac              = new Hb1Ac_Model();
                Drug               = new Drugs_Model();
                Insuline           = new Insulune_Model();
                Weight             = new Weight_Model();
                GlycemiaConverter  = new GlycemiaConverter();
                WeightConverter    = new WeightConverter();
                PermissionsRequest = new PermissionsRequest();
            }
            else
            {
                IsVisible = false;
                Glucose   = (typeof(Glucose_Model) == data.GetType()) ? data as Glucose_Model : null;
                Pression  = (typeof(Pression_Model) == data.GetType()) ? data as Pression_Model : null;
                Hb1Ac     = (typeof(Hb1Ac_Model) == data.GetType()) ? data as Hb1Ac_Model : null;
                Weight    = (typeof(Weight_Model) == data.GetType()) ? data as Weight_Model : null;
            }
            Profil = profil;

            SaveGlucoseCommand = new Command(async() =>
            {
                await ExecuteOnSaveGlucose();
            });

            SaveHb1AcCommand = new Command(async() =>
            {
                await ExecuteOnSaveHb1ac();
            });

            SavePressionCommand = new Command(async() =>
            {
                await ExecuteOnSavePression();
            });
            SaveWeightCommand = new Command(async() =>
            {
                await ExecuteOnSaveWeight();
            });

            TakePictureCommand = new Command(async() =>
            {
                await ExecuteOnTakePicture();
            });
            PictureTappedCommand = new Command(async() =>
            {
                await ExecuteOnPictureTapped();
            });
        }
コード例 #4
0
 public LogBook_ViewModel(IDataStore _dataStore, INavigation _navigation)
 {
     IsBusy            = true;
     DataStore         = _dataStore;
     Navigation        = _navigation;
     GlycemiaConverter = new GlycemiaConverter();
     WeightConverter   = new WeightConverter();
     ItemTappedCommand = new Command(async() =>
     {
         await ExecuteOnItemTapped();
     });
     DeleteCommand = new Command(async() =>
     {
         await ExecuteOnDelete();
     });
     PictureTappedCommand = new Command(async() =>
     {
         await ExecuteOnPictureTapped();
     });
     SyncCommand = new Command(async() =>
     {
         await ExecuteOnSync();
     });
     UpdateData();
     MessagingCenter.Subscribe <AddData_ViewModel>(this, "DataUpdated", (sender) =>
     {
         IsBusy = true;
         DataGrouped.Clear();
         UpdateData();
         IsBusy = false;
     });
     MessagingCenter.Subscribe <SelectedData_ViewModel>(this, "DataUpdated", (sender) =>
     {
         IsBusy = true;
         DataGrouped.Clear();
         UpdateData();
         IsBusy = false;
     });
     MessagingCenter.Subscribe <Units_ViewModel>(this, "DataUpdated", (sender) =>
     {
         IsBusy = true;
         DataGrouped.Clear();
         UpdateData();
         IsBusy = false;
     });
     IsBusy = false;
 }
コード例 #5
0
        public Objectifs_ViewModel(IDataStore dataStore, INavigation navigation)
        {
            DataStore         = dataStore;
            Navigation        = navigation;
            Profil            = DataStore.GetSettingsAsync().First();
            GlycemiaConverter = new GlycemiaConverter();
            WeightConverter   = new WeightConverter();

            Objectifs = DataStore.GetObjectifAsync().First();
            var new_max   = GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit);
            var new_min   = GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit);
            var new_weght = WeightConverter.DoubleWeightConvet(Objectifs.Weight_Objectif, Profil.WeightUnit);

            Max_Glycemia = new_max.ToString();
            Min_Glycemia = new_min.ToString();
            Objectifs.Weight_Objectif = new_weght;

            SaveCommand = new Command(async() =>
            {
                await ExecuteOnSaveObjectifs();
            });
        }
コード例 #6
0
        private void UpdateData()
        {
            Profil    = DataStore.GetSettingsAsync().First();
            Objectifs = DataStore.GetObjectifAsync().First();
            Glucose_Data.Clear();
            Weight_Data.Clear();
            Last_Glycemia = null;
            Last_Hb1Ac    = null;
            Last_Pression = null;
            Last_Weight   = null;
            Average       = 0;
            Nbr_Hight     = 0;
            Nbr_Low       = 0;
            Nbr_Normal    = 0;
            Min           = 0;
            Max           = 0;
            foreach (var item in DataStore.GetGlucosAsync().Where(i => i.Date >= DateTime.Now.AddDays(-7)))
            {
                Glucose_Data.Add(GlycemiaConverter.Convert(item, Profil.GlycemiaUnit));
            }
            foreach (var item in DataStore.GetWeightAsync())
            {
                Weight_Data.Add(WeightConverter.Convert(item, Profil.WeightUnit));
            }
            pression_data = new ObservableCollection <Pression_Model>(DataStore.GetPressionAsync().Where(i => i.Date.Date == DateTime.Now.Date));
            Hb1Ac_Data    = new ObservableCollection <Hb1Ac_Model>(DataStore.GetHb1acAsync());

            if (Glucose_Data.Count > 0)
            {
                Last_Glycemia = Glucose_Data.OrderBy(i => i.Date).Last();
                Average       = (Profil.GlycemiaUnit == "mg / dL") ? Math.Round((Glucose_Data.Sum(i => i.Glycemia)) / Glucose_Data.Count, 0) : Math.Round((Glucose_Data.Sum(i => i.Glycemia)) / Glucose_Data.Count, 3);
                Min           = Glucose_Data.OrderBy(i => i.Glycemia).First().Glycemia;
                Max           = Glucose_Data.OrderBy(i => i.Glycemia).Last().Glycemia;
                if (Profil.GlycemiaUnit == "mg / dL")
                {
                    Nbr_Normal = Glucose_Data.Where(i => i.Glycemia >= Objectifs.Min_Glycemia & i.Glycemia <= Objectifs.Max_Glycemia).Count();
                    Nbr_Hight  = Glucose_Data.Where(i => i.Glycemia > Objectifs.Max_Glycemia).Count();
                    Nbr_Low    = Glucose_Data.Where(i => i.Glycemia < Objectifs.Min_Glycemia).Count();
                    if (Last_Glycemia.Glycemia < Objectifs.Min_Glycemia & Last_Glycemia.Glycemia != 0)
                    {
                        GlucoseColor = Color.FromHex("#f1c40f");
                    }
                    if (Last_Glycemia.Glycemia >= Objectifs.Min_Glycemia & Last_Glycemia.Glycemia <= Objectifs.Max_Glycemia)
                    {
                        GlucoseColor = Color.FromHex("#0AC774");
                    }
                    if (Last_Glycemia.Glycemia > Objectifs.Max_Glycemia)
                    {
                        GlucoseColor = Color.FromHex("#C72D14");
                    }
                }
                else
                {
                    Nbr_Normal = Glucose_Data.Where(i => i.Glycemia >= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & i.Glycemia <= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)).Count();
                    Nbr_Hight  = Glucose_Data.Where(i => i.Glycemia > GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)).Count();
                    Nbr_Low    = Glucose_Data.Where(i => i.Glycemia < GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit)).Count();
                    if (Last_Glycemia.Glycemia < GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & Average != 0)
                    {
                        GlucoseColor = Color.FromHex("#f1c40f");
                    }
                    if (Last_Glycemia.Glycemia >= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & Average <= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit))
                    {
                        GlucoseColor = Color.FromHex("#2ecc71");
                    }
                    if (Last_Glycemia.Glycemia > GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit))
                    {
                        GlucoseColor = Color.FromHex("#e74c3c");
                    }
                }
            }
            if (pression_data.Count > 0)
            {
                Last_Pression = Pression_Data.Where(i => i.Date.Date <= DateTime.Now.Date).OrderBy(i => i.Date).Last();
            }
            if (Hb1Ac_Data.Count > 0)
            {
                Last_Hb1Ac = Hb1Ac_Data.Where(i => i.Date.Date <= DateTime.Now.Date).OrderBy(i => i.Date).Last();
            }
            if (Weight_Data.Count > 0)
            {
                Last_Weight = Weight_Data.Where(i => i.Date.Date <= DateTime.Now.Date).OrderBy(i => i.Date).Last();
            }
            if (DataStore.GetStepsAsync().Count() > 0)
            {
                if (DataStore.GetStepsAsync().Where(i => i.Date.Date == DateTime.Now.Date).Count() > 0)
                {
                    Steps = DataStore.GetStepsAsync().Single(i => i.Date.Date == DateTime.Now.Date).Steps;
                }
            }
            NextMedication();
        }
コード例 #7
0
        public HomePage_ViewModel(INavigation navigation, IDataStore dataStore)
        {
            this.DataStore = dataStore;
            Navigation     = navigation;

            Glucose_Data      = new ObservableCollection <Glucose_Model>();
            Weight_Data       = new ObservableCollection <Weight_Model>();
            GlycemiaConverter = new GlycemiaConverter();
            WeightConverter   = new WeightConverter();
            Upload_Service    = new Upload_Service();
            UpdateData();
            // DependencyService.Get<IStepCounter>().StepCountChanged += StepCounterService_StepCountChanged;
            AddDataTypeCommand = new Command(async() =>
            {
                await ExecuteOnAddDataType();
            });
            GlucoseStatistiqueCommand = new Command(async() =>
            {
                await ExecuteOnGlucoseTapped();
            });
            WeightStatistiqueCommand = new Command(async() =>
            {
                await ExecuteOnWeightTapped();
            });
            Hb1acSatistiqueCommand = new Command(async() =>
            {
                await ExecuteOnHb1acTapped();
            });
            PressionStatiqtiqueCommand = new Command(async() =>
            {
                await ExecuteOnPressionTapped();
            });
            MedicationCommand = new Command(async() =>
            {
                await ExecuteOnMedicationTapped();
            });
            StepsStatistiqueCommand = new Command(async() =>
            {
                await ExecuteOnStepsTapped();
            });
            MessagingCenter.Subscribe <object, int>(Application.Current, "Steps", (sender, args) =>
            {
                Steps = args;
            });

            MessagingCenter.Subscribe <AddData_ViewModel>(this, "DataUpdated", (sender) =>
            {
                IsBusy = true;

                UpdateData();
                IsBusy = false;
            });
            MessagingCenter.Subscribe <SelectedData_ViewModel>(this, "DataUpdated", (sender) =>
            {
                IsBusy = true;
                UpdateData();
                IsBusy = false;
            });
            MessagingCenter.Subscribe <LogBook_ViewModel>(this, "DataUpdated", (sender) =>
            {
                IsBusy = true;

                UpdateData();
                IsBusy = false;
            });
            MessagingCenter.Subscribe <Objectifs_ViewModel>(this, "DataUpdated", (sender) =>
            {
                IsBusy = true;
                UpdateData();
                IsBusy = false;
            });
            MessagingCenter.Subscribe <DataTypeSelection_ViewModel>(this, "HidePopUp", async(sender) =>
            {
                await Navigation.PopPopupAsync(true);
            });
            MessagingCenter.Subscribe <Units_ViewModel>(this, "DataUpdated", (sender) =>
            {
                IsBusy = true;
                UpdateData();
                IsBusy = false;
            });
            MessagingCenter.Subscribe <AddDrugs_ViewModel>(this, "DataUpdated", (sender) =>
            {
                IsBusy = true;
                UpdateData();
                IsBusy = false;
            });
            var startTimeSpan  = TimeSpan.Zero;
            var periodTimeSpan = TimeSpan.FromMinutes(1);

            var timer = new System.Threading.Timer((e) =>
            {
                UpdateData();
                Task.Run(async() =>
                {
                    await Upload_Service.Upload();
                });
            }, null, startTimeSpan, periodTimeSpan);
        }
コード例 #8
0
        private void UpdateData()
        {
            IsBusy = true;
            Glucose_Data.Clear();
            Slices.Clear();
            Min        = null;
            Max        = null;
            Average    = 0;
            Nbr_Normal = 0;
            Nbr_Hight  = 0;
            Nbr_Low    = 0;
            if (type == "All")
            {
                foreach (var item in DataStore.GetGlucosAsync().Where(i => i.Date.Date >= Selected_MinDate & i.Date.Date <= Selected_MaxDate))
                {
                    Glucose_Data.Add(GlycemiaConverter.Convert(item, Profil.GlycemiaUnit));
                }
            }
            else
            {
                foreach (var item in DataStore.GetGlucosAsync().Where(i => i.Date.Date >= Selected_MinDate & i.Date.Date <= Selected_MaxDate).Where(i => i.Glucose_time == type))
                {
                    Glucose_Data.Add(GlycemiaConverter.Convert(item, Profil.GlycemiaUnit));
                }
            }

            if (Glucose_Data.Count > 0)
            {
                Glucose_Data = new ObservableCollection <Glucose_Model>(Glucose_Data.OrderBy(i => i.Date));
                Min          = Glucose_Data.OrderBy(i => i.Glycemia).First();
                Max          = Glucose_Data.OrderBy(i => i.Glycemia).Last();
                Average      = (Profil.GlycemiaUnit == "mg / dL") ? Math.Round((Glucose_Data.Sum(i => i.Glycemia)) / Glucose_Data.Count, 0) : Math.Round((Glucose_Data.Sum(i => i.Glycemia)) / Glucose_Data.Count, 3);
                Nbr_Normal   = (Profil.GlycemiaUnit == "mg / dL") ? Glucose_Data.Where(i => i.Glycemia >= Objectifs.Min_Glycemia & i.Glycemia <= Objectifs.Max_Glycemia).Count() : Glucose_Data.Where(i => i.Glycemia >= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & i.Glycemia <= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)).Count();
                Nbr_Hight    = (Profil.GlycemiaUnit == "mg / dL") ? Glucose_Data.Where(i => i.Glycemia > Objectifs.Max_Glycemia).Count() : Glucose_Data.Where(i => i.Glycemia > GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit)).Count();
                Nbr_Low      = (Profil.GlycemiaUnit == "mg / dL") ? Glucose_Data.Where(i => i.Glycemia < Objectifs.Min_Glycemia).Count() : Glucose_Data.Where(i => i.Glycemia < GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit)).Count();
                MaximumChart = (Profil.GlycemiaUnit == "mg / dL") ? Convert.ToInt32(Max.Glycemia + 100) : Convert.ToInt32(Max.Glycemia + 10);
                if (Average < GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit))
                {
                    GlucoseColor = Color.FromHex("#f1c40f");
                }
                if (Average >= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit) & Average <= GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit))
                {
                    GlucoseColor = Color.FromHex("#2ecc71");
                }
                if (Average > GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit))
                {
                    GlucoseColor = Color.FromHex("#e74c3c");
                }
                Min_Glycemia = GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit);
                Max_Glycemia = GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit);
                Max_Widh     = MaximumChart - Max_Glycemia;
                Good_Wigh    = Max_Glycemia - Min_Glycemia;
            }
            Slices.Add(new Slice_Model
            {
                type  = "Normal",
                value = Nbr_Normal
            });
            Slices.Add(new Slice_Model
            {
                type  = "Elevée",
                value = Nbr_Hight
            });
            Slices.Add(new Slice_Model
            {
                type  = "Basse",
                value = Nbr_Low
            });
            IsBusy = false;
        }
コード例 #9
0
        public GlucoseStatistique_ViewModel(INavigation navigation, IDataStore dataStore)
        {
            Navigation = navigation;
            DataStore  = dataStore;
            Profil     = DataStore.GetSettingsAsync().First();
            Objectifs  = dataStore.GetObjectifAsync().First();

            Glucose_Data      = new ObservableCollection <Glucose_Model>();
            GlycemiaConverter = new GlycemiaConverter();
            Message           = Resources["Target"] + " : " + GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Min_Glycemia, Profil.GlycemiaUnit).ToString() + " " + Profil.GlycemiaUnit + " " + Resources["And"] + " " + GlycemiaConverter.DoubleGlycemiaConvert(Objectifs.Max_Glycemia, Profil.GlycemiaUnit).ToString() + " " + Profil.GlycemiaUnit;
            Slices            = new ObservableCollection <Slice_Model>();
            type                = "All";
            Selected_MaxDate    = DateTime.Now.Date;
            Selected_MinDate    = DateTime.Now.Date;
            Selected_Index      = 0;
            Selected_Date_Index = 0;
            SegmentItems        = new ObservableCollection <SfSegmentItem>
            {
                new SfSegmentItem()
                {
                    Text = Resources["All"]
                },
                new SfSegmentItem()
                {
                    Text = Resources["Empty"]
                },
                new SfSegmentItem()
                {
                    Text = Resources["Before_Meal"]
                },
                new SfSegmentItem()
                {
                    Text = Resources["After_Meals"]
                },
            };
            DateItems = new ObservableCollection <SfSegmentItem>
            {
                new SfSegmentItem()
                {
                    Text = Resources["Today"]
                },
                new SfSegmentItem()
                {
                    Text = "7 " + Resources["Days"]
                },
                new SfSegmentItem()
                {
                    Text = "14 " + Resources["Days"]
                },
                new SfSegmentItem()
                {
                    Text = "30 " + Resources["Days"]
                },
                new SfSegmentItem()
                {
                    Text = "90 " + Resources["Days"]
                }
            };
            FiltreCommand = new Command(() =>
            {
                UpdateData();
            });
            UpdateData();
            MessagingCenter.Subscribe <GlucoseStatistique_Page>(this, "Filter", (sender) =>
            {
                UpdateData();
            });
        }
コード例 #10
0
        private void UpdateData()
        {
            List <LogBook_Model> _data = new List <LogBook_Model>();

            Profil = DataStore.GetSettingsAsync().First();
            foreach (var item in DataStore.GetGlucosAsync())
            {
                var glucose = new LogBook_Model
                {
                    Data            = item,
                    DataValue       = GlycemiaConverter.Convert(item, Profil.GlycemiaUnit).Glycemia.ToString(),
                    Date            = item.Date,
                    Activity        = item.Activity,
                    Take_Medication = item.Taking_Medication,
                    Type            = "Glucose",
                    Unit            = Profil.GlycemiaUnit,
                    PicturePath     = item.PicturePathe
                };
                _data.Add(glucose);
            }
            foreach (var item in DataStore.GetHb1acAsync())
            {
                var drug = new LogBook_Model
                {
                    Data        = item,
                    DataValue   = item.Hb1Ac.ToString(),
                    Date        = item.Date,
                    Type        = "Hb1Ac",
                    Unit        = "%",
                    PicturePath = item.PicturePathe
                };
                _data.Add(drug);
            }

            foreach (var item in DataStore.GetPressionAsync())
            {
                var drug = new LogBook_Model
                {
                    Data        = item,
                    DataValue   = item.Diastolique.ToString() + "/" + item.Systolique.ToString(),
                    Date        = item.Date,
                    At_Home     = (item.Where == "home") ? true : false,
                    At_Doctor   = (item.Where == "clinic") ? true : false,
                    Type        = "Pression",
                    Unit        = "mmgH",
                    PicturePath = item.PicturePathe
                };
                _data.Add(drug);
            }
            foreach (var item in DataStore.GetWeightAsync())
            {
                var drug = new LogBook_Model
                {
                    Data        = item,
                    DataValue   = WeightConverter.Convert(item, Profil.WeightUnit).Weight.ToString(),
                    Date        = item.Date,
                    Type        = "Weight",
                    Unit        = Profil.WeightUnit,
                    PicturePath = item.PicturePathe
                };
                _data.Add(drug);
            }
            private_list  = new ObservableCollection <LogBook_Model>(_data);
            Selected_item = null;
            old_selected  = null;
            var sorted = from data in _data
                         orderby data.Date descending
                         group data by data.DateSort into DataGroup
                         select new Grouping <string, LogBook_Model>(DataGroup.Key, DataGroup);

            DataGrouped = new ObservableCollection <Grouping <string, LogBook_Model> >(sorted);
        }