public string register(ServerApp.Models.Patient patient, AccountCredentials account) { ///// #region Create User Account WebSecurity.CreateUserAndAccount(account.username, account.password); #endregion #region Add User to Role 'Patient' bool pat_role = false; string[] roles = Roles.GetAllRoles(); for (int i = 0; i < roles.Length; i++) { if (roles[i] == "Patient") { pat_role = true; break; } } if (pat_role == false) { Roles.CreateRole("Patient"); } Roles.AddUsersToRole(new[] { account.username }, "Patient"); #endregion #region Save Patient CardiologistV2.DAL.DatabaseContext db = new CardiologistV2.DAL.DatabaseContext(); db.Users.Add(new CardiologistV2.Models.User() { UserID = WebSecurity.GetUserId(account.username) }); var p = new CardiologistV2.Models.Patient(); p.PatientID = WebSecurity.GetUserId(account.username); p.Name = patient.Name; p.DateOfbirth = patient.DOB; p.Gender = patient.Gender; p.Address = patient.Address; p.Job = patient.Job; p.Smoker = patient.Smoker; p.Alcoholic = patient.Alcoholic; db.Patients.Add(p); db.SaveChanges(); #endregion ///// return("200"); }
public string Upload(int Id, string filename, string Data, int fs) { //TODO: Pass the file to the Feature Extractor #region Filter File string path = Server.MapPath("~/Models/MatlabFilters"); System.IO.File.WriteAllText(path + "\\" + filename, Data); MLApp.MLApp matlab = new MLApp.MLApp(); matlab.Execute("cd('" + path + "')"); matlab.Execute("a=load('" + filename + "')"); matlab.Execute("c=baselinefilter(a," + fs + ")"); var o = (double[, ])matlab.GetVariable("c", "base"); string filedata = ""; for (int i = 0; i < o.GetLength(0); i++) { for (int j = 0; j <= o.GetLength(1); j++) { filedata += o[i, j] + " "; } filedata.Trim(' '); filedata += "\n"; } #endregion #region Pass File to Feature Extractor ECG ecgFeatureExtractor = new ECG(); InputVector = ecgFeatureExtractor.ExtractFeatures(filedata, filename, fs); // fs = 370 string filename2 = "feat.txt"; File.WriteAllText(path + "\\" + filename2, InputVector); #endregion //File.WriteAllText(path + "\\" + filename,InputVector); #region Create New Record CardiologistV2.DAL.DatabaseContext db = new CardiologistV2.DAL.DatabaseContext(); var p = db.Patients.Find(Id); var r = new CardiologistV2.Models.Record(); r.PatientID = Id; r.Recdate = DateTime.Now; r.Data = filedata; //r.Featuress.Add(new Features() { //Value=InputVector, //}) ;// = InputVector; #endregion //Calling Matlab... #region simulate network matlab.Execute("b = load('" + filename2 + "')"); matlab.Execute("n = load('matlab.mat')"); matlab.Execute("s = sim(n.net ,b)"); var obj = (double[, ])matlab.GetVariable("s", "base"); #endregion #region Make Logical Decision int MaxIndex = -1; int numpulses = obj.GetLength(1); int numpvc = 0; int numlbbb = 0; int numrbbb = 0; int numnormal = 0; var vector = new List <double>(); for (int j = 0; j < numpulses; j++) { for (int i = 0; i < obj.GetLength(0); i++) { vector.Add(obj[i, j]); } MaxIndex = vector.IndexOf(vector.Max()); switch (MaxIndex) { case 0: //pvc numpvc++; break; case 1: //lbbb numlbbb++; break; case 2: //rbbb numrbbb++; break; case 3: //normal numnormal++; break; default: break; } } string result = "Pvc = " + ((double)numpvc * 100.00) / numpulses + "%" + "Lbbb = " + ((double)numlbbb * 100.00) / numpulses + "% " + "Rbbb = " + ((double)numrbbb * 100.00) / numpulses + "% " + "Normal = " + ((double)numnormal * 100.00) / numpulses + "%"; #endregion #region Save in Database r.Result = result; p.Records.Add(r); db.SaveChanges(); #endregion //TODO: Say everything's Alright return("200|" + result); }