Пример #1
0
        public async Task <Response <EventNotification> > GetEvent(int dataId, int typeId)
        {
            try
            {
                var ev = await _repo.GetEvent(dataId, typeId);

                if (ev == null)
                {
                    return(new Response <EventNotification>("Not found"));
                }
                var readHandler = new ReadingHandler <EventNotificationPrimaryKey>();
                var arr         = new List <IReadable <EventNotificationPrimaryKey> > {
                    new EventRead(ev)
                };
                readHandler.SetObj(arr);
                var readEvent = readHandler.ReadAll();
                await _unitWork.CommitAsync();

                if (readEvent.Count > 0)
                {
                    ev.Read = false;
                }

                return(new Response <EventNotification>(ev));
            }
            catch (Exception e)
            {
                return(new Response <EventNotification>($"ERROR :{e.Message}"));
            }
        }
Пример #2
0
        public async Task <Response <Message> > GetMessage(int messageId)
        {
            try
            {
                var msg = await _repo.GetMessage(messageId);

                var readHandler = new ReadingHandler <int>();
                var arr         = new List <IReadable <int> > {
                    new MessageRead(msg)
                };
                readHandler.SetObj(arr);
                var readEvent = readHandler.ReadAll();
                await _unitWork.CommitAsync();

                if (readEvent.Count > 0)
                {
                    msg.Read = false;
                }

                return(msg == null
                    ? new Response <Message>("Error :Message Is not found ")
                    : new Response <Message>(msg));
            }
            catch (Exception e)
            {
                return(new Response <Message>($"Error :{e.Message}"));
            }
        }
Пример #3
0
        /// <summary>
        /// Get the event notifications in pagination format .
        /// then ,it will set the returned data (event notification) as read .
        /// </summary>
        /// <param name="repId"></param>
        /// <param name="pageNumber">for pagination</param>
        /// <param name="pageSize">for pagination</param>
        /// <returns></returns>
        public async Task <Response <IEnumerable <EventNotification> > > GetEventNotification(int repId, int pageNumber, int pageSize)
        {
            try
            {
                var dictionary = _repo.GetEventsNotifications(repId, pageNumber, pageSize)
                                 .ToDictionary(notification => new EventNotificationPrimaryKey(notification.DataId, notification.NotificationTypeId));
                //Reading Logic
                var r   = new ReadingHandler <EventNotificationPrimaryKey>();
                var obj = new List <IReadable <EventNotificationPrimaryKey> >(dictionary.Select(notification => new EventRead(notification.Value)));
                r.SetObj(obj);
                var readElements = r.ReadAll();//the Ids that were influenced in reading process.
                //end of reading logic
                await _unitWork.CommitAsync();

                /**
                 * after commiting ,the data is set as read ,but the client
                 * need to know the whether the received data is read or not.
                 * so we reset th data to the state it was in before commiting .
                 */
                foreach (var element in readElements)
                {
                    dictionary[new EventNotificationPrimaryKey(element.DataId, element.TypeId)].Read = false;
                }
                return(new Response <IEnumerable <EventNotification> >(dictionary.Values));
            }
            catch (Exception e)
            {
                return(new Response <IEnumerable <EventNotification> >($"ERROR :{e.Message}"));
            }
        }
        private void trackReadingtimer_Tick(object sender, EventArgs e)
        {
            Reading        patientReading = new Reading();
            ReadingHandler readingHandler = new ReadingHandler();
            DBConnector    dbConn         = new DBConnector();

            dbConn.connect();
            bool status = readingHandler.checkExistsReading(dbConn.getConn(), BedsideLoginScreen.bedside_patient_id);

            if (status)
            {
                patientReading             = readingHandler.getReading(dbConn.getConn(), BedsideLoginScreen.bedside_patient_id);
                minBloodPressureLabel.Text = patientReading.MinBloodPressure.ToString();
                maxBloodPressureLabel.Text = patientReading.MaxBloodPressure.ToString();
                minBreathingRateLabel.Text = patientReading.MinBreathing.ToString();
                maxBreathingRateLabel.Text = patientReading.MaxBreathing.ToString();
                minPulseRateLabel.Text     = patientReading.MinPulse.ToString();
                maxPulseRateLabel.Text     = patientReading.MaxPulse.ToString();
                minTemperatureLabel.Text   = patientReading.MinTemperature.ToString();
                maxTemperatureLabel.Text   = patientReading.MaxTemperature.ToString();
            }
            else
            {
                minBloodPressureLabel.Text = "--";
                maxBloodPressureLabel.Text = "--";
                minBreathingRateLabel.Text = "--";
                maxBreathingRateLabel.Text = "--";
                minPulseRateLabel.Text     = "--";
                maxPulseRateLabel.Text     = "--";
                minTemperatureLabel.Text   = "--";
                maxTemperatureLabel.Text   = "--";
            }
        }
        // GET: api/Reading/5
        public List <Reading> Get(int id)
        {
            //var ReturnList = new List<Reading>();

            var ourReadingHandler = new ReadingHandler();



            return(ourReadingHandler.GetReadings(id));
        }
Пример #6
0
        public static void Scan(this Stream @this, int bufferSize, ReadingHandler handler)
        {
            var buffer = new byte[bufferSize];
            int readLength;

            while ((readLength = @this.Read(buffer, 0, bufferSize)) > 0)
            {
                handler(buffer, readLength);
            }
        }
        private void updateBtn_Click(object sender, EventArgs e)
        {
            DBConnector dBConn = new DBConnector();

            dBConn.connect();
            ReadingHandler readingHandler = new ReadingHandler();
            Reading        reading        = new Reading();

            reading.MinBloodPressure = double.Parse(minBPtextBox.Text);
            reading.MaxBloodPressure = double.Parse(maxBPtextBox.Text);
            reading.MinPulse         = double.Parse(minPRtextBox.Text);
            reading.MaxPulse         = double.Parse(maxPRtextBox.Text);
            reading.MinTemperature   = double.Parse(minTemptextBox.Text);
            reading.MaxTemperature   = double.Parse(maxTemptextBox.Text);
            reading.MinBreathing     = double.Parse(minBRtextBox.Text);
            reading.MaxBreathing     = double.Parse(maxBRtextBox.Text);
            int updateResult = readingHandler.updateReading(dBConn.getConn(), reading, patientIdStatic);

            if (updateResult == 1)
            {
                minBP.Text   = minBPtextBox.Text;
                maxBP.Text   = maxBPtextBox.Text;
                minBR.Text   = minBRtextBox.Text;
                maxBR.Text   = maxBRtextBox.Text;
                minPR.Text   = minPRtextBox.Text;
                maxPR.Text   = maxPRtextBox.Text;
                minTemp.Text = minTemptextBox.Text;
                maxTemp.Text = maxTemptextBox.Text;
                updateBtn.Hide();
                cancelBtn.Hide();
                minBP.Show();
                maxBP.Show();
                minBR.Show();
                maxBR.Show();
                minPR.Show();
                maxPR.Show();
                minTemp.Show();
                maxTemp.Show();
                minBPtextBox.Hide();
                maxBPtextBox.Hide();
                minBRtextBox.Hide();
                maxBRtextBox.Hide();
                minPRtextBox.Hide();
                maxPRtextBox.Hide();
                minTemptextBox.Hide();
                maxTemptextBox.Hide();
                MessageBox.Show("Update Successfully", "Update Reading", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Update Failed", "Update Reading", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #8
0
        /// <summary>
        /// Saves the current round to disk. Should be called whenever you want to ensure
        /// that it persists per app instance.
        /// </summary>
        public static async Task SaveReadingsToDiskAsync()
        {
            if (Singleton == null)
            {
                throw new InvalidOperationException("No readings to save.");
            }
            await RoundManager.CheckTimeout();

            var handler = new ReadingHandler()
            {
                Readings = Singleton
            };

            await FileHandler.SaveFileAsync(Constants.FileNames.CurrentReadings, handler);
        }
        public void AddReadingHandler()
        {
            //connect database
            DBConnector dbC  = new DBConnector();
            string      resp = dbC.connect();

            Assert.AreEqual("Done", resp);
            ReadingHandler rhd          = new ReadingHandler();
            Reading        readingclass = new Reading();

            Assert.IsInstanceOfType(readingclass, typeof(object));

            //int patientId = 1008;
            //readingclass.MinBloodPressure = 65;
            //readingclass.MaxBloodPressure = 125;
            //readingclass.MinTemperature = 65;
            //readingclass.MaxTemperature = 125;
            //readingclass.MinPulse = 65;
            //readingclass.MaxPulse = 125;
            //readingclass.MinBreathing = 65;
            //readingclass.MaxBreathing = 125;
            //int resp2 = rhd.addNewReading(dbC.getConn(), readingclass, patientId);
            //Assert.IsNotNull(resp2);

            //int patientId = 1002;
            //bool resp2 = rhd.checkExistsReading(dbC.getConn(), patientId);
            //Assert.IsNotNull(resp);

            //int patientId = 1001;
            //int resp2 = rhd.updateReading(dbC.getConn(), readingclass, patientId);
            //Assert.IsNotNull(resp);

            //int patientId = 1001;
            //Reading _ = rhd.getReading(dbC.getConn(), patientId);

            //double value = 65;
            //int resp2 = rhd.getIdAlarmTrigger(dbC.getConn(), value);
        }
        private void confirmBtnAlarm_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(bPMin.Text))
            {
                MessageBox.Show("Please enter a valid value to the bloodpressure");
                return;
            }

            if (string.IsNullOrEmpty(bPMax.Text))
            {
                MessageBox.Show("Please enter a valid value to the bloodpressure");
                return;
            }

            if (string.IsNullOrEmpty(pulseMin.Text))
            {
                MessageBox.Show("Please enter a valid value to the pulse rate");
                return;
            }

            if (string.IsNullOrEmpty(pulseMax.Text))
            {
                MessageBox.Show("Please enter a valid value to the pulse rate");
                return;
            }

            if (string.IsNullOrEmpty(tempMin.Text))
            {
                MessageBox.Show("Please enter a valid value to the temperature");
                return;
            }

            if (string.IsNullOrEmpty(tempMax.Text))
            {
                MessageBox.Show("Please enter a valid value to the temperature");
                return;
            }

            if (string.IsNullOrEmpty(breathMin.Text))
            {
                MessageBox.Show("Please enter a valid value to the breathing rate");
                return;
            }

            if (string.IsNullOrEmpty(breathMax.Text))
            {
                MessageBox.Show("Please enter a valid value to the breathing rate");
                return;
            }

            if (double.Parse(bPMin.Text) > (double.Parse(bPMax.Text)))
            {
                MessageBox.Show("The minimum value must not bigger than maximum value");
                return;
            }

            if (double.Parse(pulseMin.Text) > (double.Parse(pulseMax.Text)))
            {
                MessageBox.Show("The minimum value must not bigger than maximum value");
                return;
            }

            if (double.Parse(tempMax.Text) > (double.Parse(tempMax.Text)))
            {
                MessageBox.Show("The minimum value must not bigger than maximum value");
                return;
            }

            if (double.Parse(breathMin.Text) > (double.Parse(breathMax.Text)))
            {
                MessageBox.Show("The minimum value must not bigger than maximum value");
                return;
            }

            Reading reading = new Reading();

            reading.MinBloodPressure = double.Parse(bPMin.Text);
            reading.MaxBloodPressure = double.Parse(bPMax.Text);
            reading.MinPulse         = double.Parse(pulseMin.Text);
            reading.MaxPulse         = double.Parse(pulseMax.Text);
            reading.MinTemperature   = double.Parse(tempMin.Text);
            reading.MaxTemperature   = double.Parse(tempMax.Text);
            reading.MinBreathing     = double.Parse(breathMin.Text);
            reading.MaxBreathing     = double.Parse(breathMax.Text);
            minb = bPMin.Text;

            DBConnector dbcon = new DBConnector();

            dbcon.connect();
            sessionId = BedsideSystem.BedsideLoginScreen.bedside_patient_id;
            ReadingHandler readingHandler = new ReadingHandler();
            bool           status         = readingHandler.checkExistsReading(dbcon.getConn(), sessionId);

            if (status)
            {
                int updateResult = readingHandler.updateReading(dbcon.getConn(), reading, sessionId);

                if (updateResult == 1)
                {
                    MessageBox.Show("The minimum and maximum value is up to date");
                    BedsideMainScreen mainScreen = new BedsideMainScreen();
                    //mainScreen.MinBP = reading.MinBloodPressure.ToString();
                    //mainScreen.MaxBP = reading.MaxBloodPressure.ToString();
                    //mainScreen.MinBR = reading.MinBreathing.ToString();
                    //mainScreen.MaxBR = reading.MaxBreathing.ToString();
                    //mainScreen.MinPR = reading.MinPulse.ToString();
                    //mainScreen.MaxPR = reading.MaxPulse.ToString();
                    //mainScreen.MinT = reading.MinTemperature.ToString();
                    //mainScreen.MaxT = reading.MaxTemperature.ToString();
                    mainScreen.Show(this);
                    Close();
                }
                else
                {
                    MessageBox.Show("Update Failed!");
                }
            }
            else
            {
                int result = readingHandler.addNewReading(dbcon.getConn(), reading, sessionId);

                if (result == 1)
                {
                    MessageBox.Show("The minimum and maximum value is ready to test");
                    BedsideMainScreen mainScreen = new BedsideMainScreen();
                    //mainScreen.MinBP = reading.MinBloodPressure.ToString();
                    //mainScreen.MaxBP = reading.MaxBloodPressure.ToString();
                    //mainScreen.MinBR = reading.MinBreathing.ToString();
                    //mainScreen.MaxBR = reading.MaxBreathing.ToString();
                    //mainScreen.MinPR = reading.MinPulse.ToString();
                    //mainScreen.MaxPR = reading.MaxPulse.ToString();
                    //mainScreen.MinT = reading.MinTemperature.ToString();
                    //mainScreen.MaxT = reading.MaxTemperature.ToString();
                    mainScreen.Refresh();
                    Close();
                }
                else
                {
                    MessageBox.Show("The minimum and maximum value is not ready to test");
                }
            }
        }
        private void centralbedsideIdcomboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (centralbedsideIdcomboBox.SelectedIndex > 0)
            {
                int index = centralbedsideIdcomboBox.SelectedIndex;


                if (listBedside[index].Status)
                {
                    DBConnector dBConn = new DBConnector();
                    dBConn.connect();
                    centralBedsideStatus.Text      = "ONLINE";
                    centralBedsideStatus.ForeColor = Color.Green;
                    BedsideHandler bedsideHandler = new BedsideHandler();
                    bool           status         = bedsideHandler.checkExistBedside(dBConn.getConn(), listBedside[index].Id);

                    if (status)
                    {
                        assignPatientIdcomboBox.Visible = false;
                        assignBedsideIdBtn.Visible      = false;
                        readingPanel.Show();
                        Patient patient = bedsideHandler.getSpecificPatientInBedside(dBConn.getConn(), listBedside[index].Id);
                        patientIdStatic                 = patient.Id;
                        centralPatientIdLabel.Text      = patient.Id.ToString();
                        centralPatientIdLabel.ForeColor = Color.Black;
                        centralPatientNameLabel.Text    = patient.FullName;
                        ReadingHandler readingHandler = new ReadingHandler();
                        bool           statusReading  = readingHandler.checkExistsReading(dBConn.getConn(), patient.Id);

                        if (statusReading)
                        {
                            Reading reading = readingHandler.getReading(dBConn.getConn(), patient.Id);
                            minBP.Text          = reading.MinBloodPressure.ToString();
                            maxBP.Text          = reading.MaxBloodPressure.ToString();
                            minBR.Text          = reading.MinBreathing.ToString();
                            maxBR.Text          = reading.MaxBreathing.ToString();
                            minPR.Text          = reading.MinPulse.ToString();
                            maxPR.Text          = reading.MaxPulse.ToString();
                            minTemp.Text        = reading.MinTemperature.ToString();
                            maxTemp.Text        = reading.MaxTemperature.ToString();
                            minBPtextBox.Text   = reading.MinBloodPressure.ToString();
                            maxBPtextBox.Text   = reading.MaxBloodPressure.ToString();
                            minBRtextBox.Text   = reading.MinBreathing.ToString();
                            maxBRtextBox.Text   = reading.MaxBreathing.ToString();
                            minPRtextBox.Text   = reading.MinPulse.ToString();
                            maxPRtextBox.Text   = reading.MaxPulse.ToString();
                            minTemptextBox.Text = reading.MinTemperature.ToString();
                            maxTemptextBox.Text = reading.MaxTemperature.ToString();
                        }
                    }
                }
                else
                {
                    readingPanel.Hide();
                    centralBedsideStatus.Text       = "OFFLINE";
                    centralBedsideStatus.ForeColor  = Color.Red;
                    centralPatientIdLabel.Text      = "No Assigned Patient ID";
                    centralPatientIdLabel.ForeColor = Color.Red;
                    centralPatientNameLabel.Text    = "--";
                    minBP.Text          = "--";
                    maxBP.Text          = "--";
                    minBR.Text          = "--";
                    maxBR.Text          = "--";
                    minPR.Text          = "--";
                    maxPR.Text          = "--";
                    minTemp.Text        = "--";
                    maxTemp.Text        = "--";
                    minBPtextBox.Text   = "";
                    maxBPtextBox.Text   = "";
                    minBRtextBox.Text   = "";
                    maxBRtextBox.Text   = "";
                    minPRtextBox.Text   = "";
                    maxPRtextBox.Text   = "";
                    minTemptextBox.Text = "";
                    maxTemptextBox.Text = "";
                }

                //if (centralPatientIdLabel.Text == "No Assigned Patient ID")
                //{
                //    assignPatientIdcomboBox.Items.Clear();
                //    setAssignPatientId();
                //}
            }
        }
Пример #12
0
        public async Task <Response <IEnumerable <TotalMessage> > > GetAllMessages(int repId, int pageNumber, int pageSize)
        {
            try
            {
                var messages = _repo.GetMessages(repId, pageNumber, pageSize);
                var global   = _repo.GetGlobalMessages(pageNumber, pageSize);
                var all      = messages.Select(message => new TotalMessage
                {
                    Content   = message.Content.Content,
                    Id        = message.Id,
                    DateTime  = message.DateTime,
                    TypesEnum = (NotificationTypesEnum)message.Content.NotificationTypeId,
                })
                               .Union(global.Select(globals => new TotalMessage
                {
                    Content   = globals.MessageContent.Content,
                    Id        = globals.Id,
                    DateTime  = globals.DateTime,
                    TypesEnum = (NotificationTypesEnum)globals.MessageContent.NotificationTypeId,
                }))
                               .OrderBy(message => message.DateTime)
                               .Skip((pageNumber - 1) * pageSize).Take(pageSize)
                               .ToDictionary(message => new MessageKey
                {
                    Id   = message.Id,
                    Type = (int)message.TypesEnum
                });

                /**
                 * Handling Reading for both types
                 */
                var messageReading = new ReadingHandler <int>();
                messageReading.SetObj(new List <IReadable <int> >(messages
                                                                  .Select(message => new MessageRead(message))));
                var messageRead = messageReading.ReadAll();

                var globalHandler = new GlobalMessageReadingHandler(_repo, repId);
                globalHandler.SetObj(new List <IReadable <int> >(
                                         global.Select(message => new GlobalMessageRead(message, _repo, repId))));
                var globalRead = globalHandler.ReadAll();

                //end of reading
                foreach (var message in messageRead)
                {
                    all[new MessageKey {
                            Type = (int)NotificationTypesEnum.Message, Id = message
                        }].Read = false;
                }

                foreach (var message in globalRead)
                {
                    all[new  MessageKey {
                            Type = (int)NotificationTypesEnum.Message, Id = message
                        }].Read = false;
                }

                await _unitWork.CommitAsync();

                return(new Response <IEnumerable <TotalMessage> >(all.Values));
            }
            catch (Exception e)
            {
                return(new Response <IEnumerable <TotalMessage> >($"ERROR :{e.Message}"));
            }
        }
        private async void readTemperatureData()
        {
            kayChart dataChart = new kayChart(temperatureLineGraph, 60);

            dataChart.serieName = "Temperature";
            string path = "../../../Patient-Monitoring-System/data files/temperatureCSV.csv";
            string line;

            try
            {
                StreamReader sr = new StreamReader(path);
                line = sr.ReadLine();
                while (line != null)
                {
                    string[] columns = line.Split(',');
                    foreach (string column in columns)
                    {
                        if (run)
                        {
                            double value = double.Parse(column);
                            //add each value to database *DONT Delete*
                            DateTime    currentDate = DateTime.Now;
                            DateTime    currentTime = DateTime.Now;
                            DBConnector dBConn      = new DBConnector();
                            dBConn.connect();
                            Temperature newTemperature = new Temperature();
                            newTemperature.TemperatureValue = value;
                            newTemperature.TemperatureDate  = currentDate;
                            newTemperature.TemperatureTime  = currentTime;
                            TemperatureHandler temperatureHandler = new TemperatureHandler();
                            ReadingHandler     readingHandler     = new ReadingHandler();
                            int result = temperatureHandler.addNewTemperature(dBConn.getConn(), newTemperature, BedsideLoginScreen.bedside_patient_id);

                            if (result != 1)
                            {
                                MessageBox.Show("Insert Data failed");
                            }

                            await Task.Delay(1500);

                            await Task.Factory.StartNew(() =>
                            {
                                dataChart.TriggeredUpdate(value);
                            });

                            if (value == 0)
                            {
                                if (smsTrigger == 1)
                                {
                                    if (!backgroundWorkerSendSMS.IsBusy)
                                    {
                                        backgroundWorkerSendSMS.RunWorkerAsync();
                                    }
                                }
                                temperatureLineGraph.Series["Temperature"].Color = Color.Red;
                                temperatureCurrentValue.ForeColor = Color.Red;
                                BedsideHandler bedsideHandler = new BedsideHandler();
                                int            alarmResult    = bedsideHandler.updateAlarmZeroStatus(dBConn.getConn(), BedsideLoginScreen.bedsideIDPass, 1);

                                alarmZeroStatus = true;
                                AlarmHandler alarmHandler = new AlarmHandler();
                                int          specificId   = alarmHandler.getSpecificId(dBConn.getConn(), value, "temperature");

                                if (specificId > 0)
                                {
                                    bool triggerStatus = alarmHandler.triggerAlarm(dBConn.getConn(), value, BedsideLoginScreen.bedside_patient_id, 0, specificId, "Temperature");
                                    if (triggerStatus)
                                    {
                                        listTemperature.Add(newTemperature);
                                    }
                                }
                            }
                            else
                            if (value >= double.Parse(maxTemperatureLabel.Text) || value <= double.Parse(minTemperatureLabel.Text))
                            {
                                if (smsTrigger == 1)
                                {
                                    if (!backgroundWorkerSendSMS.IsBusy)
                                    {
                                        backgroundWorkerSendSMS.RunWorkerAsync();
                                    }
                                }
                                temperatureLineGraph.Series["Temperature"].Color = Color.Yellow;
                                temperatureCurrentValue.ForeColor = Color.Yellow;

                                BedsideHandler bedsideHandler = new BedsideHandler();
                                int            alarmResult    = bedsideHandler.updateAlarmStatus(dBConn.getConn(), BedsideLoginScreen.bedsideIDPass, 1);

                                alarmReadingStatus = true;
                                int id = readingHandler.getIdAlarmTrigger(dBConn.getConn(), value);

                                if (id > 0)
                                {
                                    AlarmHandler alarmHandler  = new AlarmHandler();
                                    bool         triggerStatus = alarmHandler.triggerAlarm(dBConn.getConn(), value, BedsideLoginScreen.bedside_patient_id, id, 0, "Temperature");
                                    if (triggerStatus)
                                    {
                                        listTemperature.Add(newTemperature);
                                    }
                                }
                            }
                            else
                            {
                                temperatureLineGraph.Series["Temperature"].Color = Color.Green;
                                temperatureCurrentValue.ForeColor = Color.Green;
                            }
                            temperatureCurrentValue.Text = value.ToString() + "°C";
                        }
                        else
                        {
                            break;
                        }
                    }

                    line = sr.ReadLine();
                }
            }
            catch (FileNotFoundException e)
            {
                MessageBox.Show(e.ToString());
                Console.WriteLine(e.ToString());
            }
        }