예제 #1
0
        public void Init(int idSesion1, int idSession2)
        {
            try
            {
                using (var entidades = new Entidades())
                {
                    var relajacion = entidades.Sesiones
                                     .Where(s => s.Id == idSesion1)
                                     .Include(s => s.FrecuenciaCardiacas)
                                     .Include(s => s.Eegs)
                                     .Include(s => s.Temperaturas)
                                     .FirstOrDefault();

                    var atencion = entidades.Sesiones
                                   .Where(s => s.Id == idSession2)
                                   .Include(s => s.FrecuenciaCardiacas)
                                   .Include(s => s.Eegs)
                                   .Include(s => s.Temperaturas)
                                   .FirstOrDefault();

                    if (relajacion.Comentarios == "Relajación")
                    {
                        this.SesionRelajacion = relajacion;
                        this.SesionConduccion = atencion;
                    }
                    else
                    {
                        this.SesionRelajacion = atencion;
                        this.SesionConduccion = relajacion;
                    }
                }

                //Frecuencia Cardiaca
                this.FrecuenciaCardiacasSc = new SeriesCollection();

                var frecuenciasCardiacasR = new List <int>();

                foreach (var item in this.SesionRelajacion.FrecuenciaCardiacas)
                {
                    if (item.Valor > 60)
                    {
                        frecuenciasCardiacasR.Add((int)item.Valor);
                    }
                }

                var lineSeriesHRRelajacion = new ColumnSeries
                {
                    Title  = "Relajación",
                    Values = new ChartValues <int> {
                        (int)frecuenciasCardiacasR.Average()
                    },
                    Stroke = System.Windows.Media.Brushes.White,
                    Fill   = System.Windows.Media.Brushes.White,
                };

                var frecuenciasCardiacasC = new List <int>();

                foreach (var item in this.SesionConduccion.FrecuenciaCardiacas)
                {
                    if (item.Valor > 60)
                    {
                        frecuenciasCardiacasC.Add((int)item.Valor);
                    }
                }

                var lineSeriesHRConduccion = new ColumnSeries
                {
                    Title  = "Conducción",
                    Values = new ChartValues <int> {
                        (int)frecuenciasCardiacasC.Average()
                    },
                    Stroke = System.Windows.Media.Brushes.Red,
                    Fill   = System.Windows.Media.Brushes.Red,
                };

                FrecuenciaCardiacasSc.Add(lineSeriesHRRelajacion);
                FrecuenciaCardiacasSc.Add(lineSeriesHRConduccion);

                //Temperatura
                this.TemperaturasSc = new SeriesCollection();

                var temperaturasR = new List <double>();

                foreach (var item in this.SesionRelajacion.Temperaturas)
                {
                    temperaturasR.Add((double)item.Valor);
                }

                var lineSeriesTempRelajacion = new ColumnSeries
                {
                    Title  = "Relajación",
                    Values = new ChartValues <double> {
                        (double)temperaturasR.Average()
                    },
                    Stroke = System.Windows.Media.Brushes.White,
                    Fill   = System.Windows.Media.Brushes.White,
                };

                var temperaturasC = new List <double>();

                foreach (var item in this.SesionConduccion.Temperaturas)
                {
                    temperaturasC.Add((double)item.Valor);
                }

                var lineSeriesTempConduccion = new ColumnSeries
                {
                    Title  = "Conducción",
                    Values = new ChartValues <double> {
                        (double)temperaturasC.Average()
                    },
                    Stroke = System.Windows.Media.Brushes.Red,
                    Fill   = System.Windows.Media.Brushes.Red,
                };

                TemperaturasSc.Add(lineSeriesTempRelajacion);
                TemperaturasSc.Add(lineSeriesTempConduccion);

                //Atencion EEG
                this.EegAtencionSc = new SeriesCollection();

                var atencionR = new List <int>();

                foreach (var item in this.SesionRelajacion.Eegs)
                {
                    atencionR.Add((int)item.Attention);
                }

                var lineSeriesEegRelajacion = new ColumnSeries
                {
                    Title  = "Relajación",
                    Values = new ChartValues <int> {
                        (int)atencionR.Average()
                    },
                    Stroke = System.Windows.Media.Brushes.White,
                    Fill   = System.Windows.Media.Brushes.White,
                };

                var atencionC = new List <int>();

                foreach (var item in this.SesionConduccion.Eegs)
                {
                    atencionC.Add((int)item.Attention);
                }

                var lineSeriesEegConduccion = new ColumnSeries
                {
                    Title  = "Conducción",
                    Values = new ChartValues <int> {
                        (int)atencionC.Average()
                    },
                    Stroke = System.Windows.Media.Brushes.Red,
                    Fill   = System.Windows.Media.Brushes.Red,
                };

                EegAtencionSc.Add(lineSeriesEegRelajacion);
                EegAtencionSc.Add(lineSeriesEegConduccion);
            }
            catch (Exception ex)
            {
                var message = ex.Message;
                MessageBox.Show(
                    "Ocurrió un problema al leer los datos registrados o no hay datos registrados",
                    "Error",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                Debug.WriteLine(ex.Message);
                Logger.Log.Error("Mensaje: ", ex);
            }
        }
예제 #2
0
        /// <summary>
        /// Método de inicialización de la clase en la cual se
        /// trae de la base de datos el registro de los sensores
        /// y se crean SeriesCollection para el dibujado de los graficos
        /// </summary>
        /// <param name="idSesion"></param>
        public void Init(int idSesion)
        {
            try
            {
                Labels = new[] { 0, 50, 100 };

                using (var entidades = new Entidades())
                {
                    this.Sesion = entidades.Sesiones
                                  .Where(s => s.Id == idSesion)
                                  .Include(s => s.FrecuenciaCardiacas)
                                  .Include(s => s.Eegs)
                                  .Include(s => s.Temperaturas)
                                  .FirstOrDefault();
                }

                this.Fecha      = String.Format("{0:dd/MM/yyyy - hh:mm t}", this.Sesion.Fecha);
                this.Comentario = this.Sesion.Comentarios;

                //Frecuencia Cardiaca
                FrecuenciaCardiacasSc = new SeriesCollection();

                LabelsTimeHR = new string[this.Sesion.FrecuenciaCardiacas.Count];

                int countH = 0;

                var lineSeriesHr = new LineSeries
                {
                    Title         = "BPM",
                    Values        = new ChartValues <int>(),
                    Stroke        = System.Windows.Media.Brushes.Yellow,
                    PointGeometry = null,
                };

                var avgHr = new List <int>();

                foreach (var item in this.Sesion.FrecuenciaCardiacas)
                {
                    lineSeriesHr.Values.Add((int)item.Valor);
                    if (item.Valor > 60)
                    {
                        avgHr.Add((int)item.Valor);
                    }
                    LabelsTimeHR[countH] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss");
                    countH++;
                }

                FrecuenciaCardiacasSc.Add(lineSeriesHr);

                //Temperaturas
                this.TemperaturasSc = new SeriesCollection();

                LabelsTimeTemp = new string[this.Sesion.Temperaturas.Count];

                int countT = 0;

                var lineSeriesTemp = new LineSeries
                {
                    Title         = "Centigrados",
                    Values        = new ChartValues <double>(),
                    PointGeometry = null,
                };

                var avgTemp = new List <double>();

                foreach (var item in this.Sesion.Temperaturas)
                {
                    lineSeriesTemp.Values.Add(Math.Round((double)item.Valor, 2));
                    avgTemp.Add((double)item.Valor);
                    LabelsTimeTemp[countT] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss");
                    countT++;
                }

                TemperaturasSc.Add(lineSeriesTemp);

                var mediaHr   = Math.Round((double)avgHr.Average(), 2);
                var mediaTemp = Math.Round((double)avgTemp.Average(), 2);

                //Eeg ondas Alpha
                this.EegAlphaSc = new SeriesCollection();

                var lineSeriesAlpha = new LineSeries
                {
                    Title         = "Alpha",
                    Values        = new ChartValues <float>(),
                    PointGeometry = null,
                    Stroke        = System.Windows.Media.Brushes.Green,
                };

                var maxAlpha = this.Sesion.Eegs.Max(s => s.LowAlpha);
                //var maxDelta = this.Sesion.Eegs.Max(s => s.Delta);

                List <decimal> datosAlpha = new List <decimal>();

                LabelsTimeAplha = new string[this.Sesion.Eegs.Count];

                int countA = 0;

                foreach (var item in this.Sesion.Eegs)
                {
                    float valAlpha = ((item.LowAlpha * 100) / maxAlpha);
                    lineSeriesAlpha.Values.Add(valAlpha);
                    datosAlpha.Add((decimal)valAlpha);
                    LabelsTimeAplha[countA] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss");
                    countA++;
                }

                decimal resultA = datosAlpha.Average();

                EegAlphaSc.Add(lineSeriesAlpha);

                //Eeg ondas Beta
                this.EegBetaSc = new SeriesCollection();

                var lineSeriesBeta = new LineSeries
                {
                    Title         = "Beta ",
                    Values        = new ChartValues <float>(),
                    PointGeometry = null,
                    Stroke        = System.Windows.Media.Brushes.Red
                };

                var maxBeta = this.Sesion.Eegs.Max(s => s.LowBeta);

                List <decimal> datosBeta = new List <decimal>();

                LabelsTimeBeta = new string[this.Sesion.Eegs.Count];

                int countB = 0;

                foreach (var item in this.Sesion.Eegs)
                {
                    float valBeta = ((item.LowBeta * 100) / maxBeta);
                    lineSeriesBeta.Values.Add(valBeta);
                    datosBeta.Add((decimal)valBeta);
                    LabelsTimeBeta[countB] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss");
                    countB++;
                }

                decimal resultB = datosBeta.Average();

                EegBetaSc.Add(lineSeriesBeta);
            }
            catch (Exception ex)
            {
                MessageBox.Show(
                    "Ocurrió un problema al leer los datos registrados o no hay datos registrados",
                    "Error",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                Debug.WriteLine(ex.Message);
                Logger.Log.Error("Mensaje: ", ex);
            }
        }