Exemplo n.º 1
0
        private void DatoLB_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            Ekgvalues.Clear();

            foreach (EKG_Maaling item in MaalingListe)
            {
                if (item.Starttid == Convert.ToDateTime(DatoLB.SelectedItem))
                {
                    Maaling = logicref.sygdomsalgoritme_Måling(item.CPR, item.Starttid);
                    break;
                }
            }

            foreach (double item in Maaling.EKG_Data)
            {
                Ekgvalues.Add(item);
            }

            if (Maaling.Sygdom == true)
            {
                sygdomTB.Text = "Ja";
            }

            else
            {
                sygdomTB.Text = "Nej";
            }

            DataContext = this;
            LabelsY     = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16" };
        }
Exemplo n.º 2
0
        //metoden skal hente 1 specifik EKG målling som skal vises på GUI char
        public EKG_Maaling LoadEKGMaaling(string CPR, DateTime Time)
        {
            Maalepunkter = new List <double>();
            connection.Open();

            byte[]   bytesArray;
            double[] tal;

            sql = "Select EKG_Data, CPR, tidsstempel, samplerate_hz, interval_sec, data_format, bin_eller_tekst, maaleformat_type, start_tid, maalenehed from dbo.EKGData Where tidsstempel = '" + Time.Year + "-" + Time.Month + "-" + Time.Day + " " + Time.Hour + ":" + Time.Minute + ":" + Time.Second + "." + Time.Millisecond + "'";

            using (command = new SqlCommand(sql, connection))
            {
                dataReader = command.ExecuteReader();
                if (dataReader.Read())
                {
                    bytesArray       = (byte[])dataReader["EKG_Data"];
                    tal              = new double[bytesArray.Length / 8];
                    MalepunkterArray = new double[bytesArray.Length / 8];

                    for (int i = 0, j = 0; i < bytesArray.Length; i += 8, j++)
                    {
                        Maalepunkter.Add(BitConverter.ToDouble(bytesArray, i));
                        MalepunkterArray[j] = BitConverter.ToDouble(bytesArray, i);
                    }
                    EKGMaaling = new EKG_Maaling(CPR, Maalepunkter, MalepunkterArray, Convert.ToInt32(dataReader["samplerate_hz"]), Convert.ToInt32(dataReader["interval_sec"]), Convert.ToString(dataReader["data_format"]), Convert.ToString(dataReader["bin_eller_tekst"]), Convert.ToString(dataReader["maaleformat_type"]), Time, Convert.ToInt32(dataReader["maalenehed"]));
                }
            }
            connection.Close();

            return(EKGMaaling);
        }
Exemplo n.º 3
0
        //Skal kunne uploade en EKG måling, som er tilknyttet patienten.
        public void EKGM_DB_Sendt(EKG_Maaling _Maaling)
        {
            double[] array = new double[250];
            array = _Maaling.EKG_Data;

            connection.Open();

            string insertStringParam = @"INSERT INTO dbo.EKGDATA (tidsstempel, CPR, EKG_data, samplerate_hz, interval_sec,data_format, bin_eller_tekst, maaleformat_type,start_tid, maalenehed) 
                                      VALUES(@Datetime, @CPR, @EKGdata, @Samplerate_hz, @Interval_sec, @Data_format, @Bin_eller_tekst, @Maaleformat_type, @Start_tid, @Maalenehed)";

            Console.WriteLine(_Maaling.DateTime);
            using (command = new SqlCommand(insertStringParam, connection))
            {
                command.Parameters.AddWithValue("@Datetime", _Maaling.DateTime);
                command.Parameters.AddWithValue("@CPR", _Maaling.CPR);
                command.Parameters.AddWithValue("@EKGdata", array.SelectMany(value => BitConverter.GetBytes(value)).ToArray());
                command.Parameters.AddWithValue("@Samplerate_hz", _Maaling.Samplerate);
                command.Parameters.AddWithValue("@Interval_sec", _Maaling.Periode);
                command.Parameters.AddWithValue("@Data_format", _Maaling.Dataformat);
                command.Parameters.AddWithValue("@Bin_eller_tekst", _Maaling.Bin_text);
                command.Parameters.AddWithValue("@Maaleformat_type", _Maaling.Maaletype);
                command.Parameters.AddWithValue("@Start_tid", _Maaling.DateTime);
                command.Parameters.AddWithValue("@Maalenehed", _Maaling.EKGID);
                command.ExecuteScalar();
            }
            connection.Close();
        }
Exemplo n.º 4
0
        public EKG_Maaling sygdomsalgoritme_Måling(string cpr, DateTime time)
        {
            //Opjekter og atributter til udregnelse af sygdom.
            int Tæller = 1;
            int Antal  = 0;

            double threshold      = 1.75;
            bool   belowThreshold = true;

            int[]      RTList = new int[20];
            List <int> diff   = new List <int>();

            try
            {
                EKGmaaling = DBDataAccess.LoadEKGMaaling(cpr, time);


                int    samplerate  = EKGmaaling.Samplerate;
                double Sygdomsdiff = (1 * samplerate) * 0.16;

                for (int tæller = 0; tæller < EKGmaaling.EKG_DataArray.Length; tæller++)
                {
                    if (EKGmaaling.EKG_DataArray[tæller] > threshold && belowThreshold == true)
                    {
                        RTList[Antal] = Tæller;
                        Antal++;
                    }
                    if (EKGmaaling.EKG_DataArray[tæller] < threshold)
                    {
                        belowThreshold = true;
                    }
                    else
                    {
                        belowThreshold = false;
                    }
                    Tæller++;
                }

                for (int i = 0; i < RTList.Length; ++i)
                {
                    if (RTList[1 + i] == 0)
                    {
                        break;
                    }

                    diff.Add(RTList[i + 1] - RTList[i]);
                }
                int MaxVal = diff.Max();
                int MinVal = diff.Min();

                if (Sygdomsdiff < MaxVal - MinVal)
                {
                    EKGmaaling.Sygdom = true;
                }
            }
            catch
            {
            }
            return(EKGmaaling);
        }
Exemplo n.º 5
0
        //Metoden som opretter en EKGmåling, samtidig med informationsskrivning på displayet.
        public EKG_Maaling EKGmaalingCreate()
        {
            EKGData = new double[250];

            int periode    = 10;
            int samplerate = 25;

            //antalMaalinger er antallet af målinger som ekgmåleren tager over perioden på 50 sekunder.
            int AntalMaalinger = periode * samplerate;


            Console.WriteLine("20 sek vent");
            //Thread.Sleep(20000);

            for (int i = 0; i < AntalMaalinger; i++)
            {
                sample     = 0;
                sample     = Convert.ToDouble((ADC.readADC_SingleEnded(0) / 2048.0) * 6.144);
                EKGData[i] = sample;

                Thread.Sleep(1000 / (Convert.ToInt32(samplerate) - 4));
            }
            maaling = new EKG_Maaling(Patient.PatientName, Patient.CPR, DateTime.Now, EKGData, "Andet", samplerate, periode, "B", "double", Convert.ToInt32(EKGID));

            Console.WriteLine("20 sek vent");
            //Thread.Sleep(20000);

            return(maaling);
        }
Exemplo n.º 6
0
        //Metoden er den metode som bliver kaldt når der bliver trykket "start måling" på displayet
        static void StartMaaling()
        {
            //Set backlightColor = Gul
            Console.WriteLine("Baggrundsfarve gul");
            Interface.ScreenColor(255, 255, 0);

            //Påbegynder nedtælling
            Console.WriteLine("10 sekunder vent");
            Interface.CountDown10();

            //Set backlightColor = Grøn
            Console.WriteLine("Baggrundsfarve grøm");
            Interface.ScreenColor(0, 255, 0);

            // Bruger information omkring at der er 50 sekunder til EKG målingen er færdig.
            Console.WriteLine("50 sekunder vent ");
            Interface.CountDown50();

            //Oprettrelse af en EKG objekt
            Console.WriteLine("Oprettelse af EKGMaaling");
            maaling = Logic.EKGmaalingCreate();

            //Set backlightColor = rød
            Console.WriteLine("Baggrundsfarve rød");
            Interface.ScreenColor(255, 0, 0);

            //Skærmen viser at målingen er færdig
            Console.WriteLine("Reading done");
            Console.WriteLine("8 sekunder vent");
            Interface.ReadingDone();

            //Forsendelse af EKG måling og retur værdien er hvilken database som EKG målingen er blevet lagt op i
            //returværiden placeres i besked metode til interfacet.
            Console.WriteLine("EKGMaaling afsendelse");
            Interface.Besked(Logic.EKGMSendt(maaling));


            //menuen vises
            Console.WriteLine("Start maling menu vises");
            Interface.ShowStartMaaling();
        }
Exemplo n.º 7
0
 //Metoden skal sende en EKGmåling, og returnere en specifik byte, alt efter -
 // om metoden kunne sende en EKG målingen eller ej.
 public byte EKGMSendt(EKG_Maaling _Maaling)
 {
     try
     {
         DBaccess.EKGM_DB_Sendt(_Maaling);
         return(0); // Upload til online database
     }
     catch
     {
         Console.WriteLine("Opload til online DB lykkes ikke");
         try
         {
             Liteaccess.EKGM_lite_Sendt(_Maaling);
             return(1); // Upload til Lokal database
         }
         catch
         {
             Console.WriteLine("Opload til lokal DB lykkes ikke");
             return(2); // Upload fejlede til lokal og online database
         }
     }
 }
Exemplo n.º 8
0
        //Metoden som skal gennem det analyserede EKG i den offentlige database.
        public void gemIOffentligDataBase(DateTime dato, int antalmaalinger, string sfp_ansvfornavn,
                                          string sfp_ansvefternavn, int sfp_ansvmedarbjnr, string sfp_ans_org, string sfp_anskommentar,
                                          string borger_fornavn, string borger_efternavn, string borger_cprnr, EKG_Maaling maaling)
        {
            connectionOff.Open();

            long retur;

            string insertStringParam = @"INSERT INTO dbo.EKGMAELING ( dato, antalmaalinger, sfp_ansvfornavn, sfp_ansvefternavn, sfp_ansvrmedarbjnr, sfp_ans_org, sfp_anskommentar, borger_fornavn, borger_efternavn, borger_cprnr) 
                                    OUTPUT INSERTED.EKGMAALEID  
                                    VALUES( @dato, @antalmaalinger, @sfp_ansvfornavn, @sfp_ansvefternavn, @sfp_ansvrmedarbjnr, @sfp_ans_org, @sfp_anskommentar, @borger_fornavn, @borger_efternavn, @borger_cprnr)";

            using (SqlCommand cmdOff = new SqlCommand(insertStringParam, connectionOff))
            {
                cmdOff.Parameters.AddWithValue("@dato", dato);
                cmdOff.Parameters.AddWithValue("@antalmaalinger", antalmaalinger);
                cmdOff.Parameters.AddWithValue("@sfp_ansvfornavn", sfp_ansvfornavn);
                cmdOff.Parameters.AddWithValue("@sfp_ansvefternavn", sfp_ansvefternavn);
                cmdOff.Parameters.AddWithValue("@sfp_ansvrmedarbjnr", sfp_ansvmedarbjnr);
                cmdOff.Parameters.AddWithValue("@sfp_ans_org", sfp_ans_org);
                cmdOff.Parameters.AddWithValue("@sfp_anskommentar", sfp_anskommentar);
                cmdOff.Parameters.AddWithValue("@borger_fornavn", borger_fornavn);
                cmdOff.Parameters.AddWithValue("@borger_efternavn", borger_efternavn);
                cmdOff.Parameters.AddWithValue("@borger_cprnr", borger_cprnr);
                retur = Convert.ToInt64(cmdOff.ExecuteScalar());
            }

            insertStringParam = @"INSERT INTO dbo.EKGDATA (raa_data, samplerate_hz, interval_sec, data_format, bin_eller_tekst, maaleformat_type, start_tid, ekgmaaleid, maalenehed_identifikation) 
                               VALUES( @EKG_data, @samplerate_hz, @interval_sec, @data_format, @bin_eller_tekst, @maaleformat_type, @start_tid, @ekgmaaleid, @maalenehed_identifikation)";

            using (SqlCommand cmdOff = new SqlCommand(insertStringParam, connectionOff))
            {
                cmdOff.Parameters.AddWithValue("@EKG_data", maaling.EKG_DataArray.SelectMany(value => BitConverter.GetBytes(value)).ToArray());
                cmdOff.Parameters.AddWithValue("@samplerate_hz", Convert.ToSingle(maaling.Samplerate));
                cmdOff.Parameters.AddWithValue("@interval_sec", Convert.ToInt64(maaling.Periode));
                cmdOff.Parameters.AddWithValue("@data_format", maaling.Dataformat);
                cmdOff.Parameters.AddWithValue("@bin_eller_tekst", Convert.ToChar(maaling.Bin_text));
                cmdOff.Parameters.AddWithValue("@maaleformat_type", maaling.Maaletype);
                cmdOff.Parameters.AddWithValue("@start_tid", maaling.Starttid);
                cmdOff.Parameters.AddWithValue("@ekgmaaleid", retur);
                cmdOff.Parameters.AddWithValue("@maalenehed_identifikation", maaling.EKGID);
                cmdOff.ExecuteScalar();
            }



            connectionOff.Close();
        }
Exemplo n.º 9
0
 public void EKGM_lite_Sendt(EKG_Maaling maaling)
 {
     // ingen implementering
 }
Exemplo n.º 10
0
 public void gemIoffentligDatabase(DateTime dato, int antalmaalinger, string sfp_ansvfornavn, string sfp_ansvefternavn, int sfp_ansvmedarbjnr, string sfp_ans_org, string sfp_anskommentar, string borger_fornavn, string borger_efternavn, string borger_cprnr, EKG_Maaling maaling)
 {
     DBDataAccess.gemIOffentligDataBase(dato, antalmaalinger, sfp_ansvfornavn, sfp_ansvefternavn, sfp_ansvmedarbjnr, sfp_ans_org, sfp_anskommentar, borger_fornavn, borger_efternavn, borger_cprnr, maaling);
 }