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" }; }
//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); }
//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(); }
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); }
//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); }
//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(); }
//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 } } }
//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(); }
public void EKGM_lite_Sendt(EKG_Maaling maaling) { // ingen implementering }
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); }