DoctorForm.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using FietsClient.Forms;
  11. using FietsLibrary.JSONObjecten;
  12. using System.Windows.Forms.DataVisualization.Charting;
  13. using System.Threading;
  14. namespace FietsClient
  15. {
  16. public partial class DoctorForm : Form
  17. {
  18. private DoctorModel doctorModel;
  19. public Forms.DoctorSummaryUC summaryUserControl { get; private set; }
  20. public DoctorForm(TcpConnection connection)
  21. {
  22. InitializeComponent();
  23. doctorModel = DoctorModel.doctorModel;
  24. doctorModel.doctorform = this;
  25. doctorModel.tcpConnection = connection;
  26. this.summaryUserControl = doctorSummaryUC1;
  27. DataHandler.IncomingErrorEvent += HandleError;
  28. connection.IncomingChatmessageEvent += new TcpConnection.ChatmassegeDelegate(printMessage);
  29. }
  30. private void HandleError(string error)
  31. {
  32. switch (error)
  33. {
  34. default:
  35. break;
  36. }
  37. }
  38. private List<User> users = new List<User>();
  39. private void Form1_Load(object sender, EventArgs e)
  40. {
  41. users = doctorModel.requestUsers();
  42. }
  43. private void messageBox_KeyPress(object sender, KeyPressEventArgs e)
  44. {
  45. if (e.KeyChar == '\r')
  46. {
  47. messageButton_Click(sender, e);
  48. }
  49. }
  50. private void messageButton_Click(object sender, EventArgs e)
  51. {
  52. if (messageBox.Text != null && doctorTabControl.SelectedTab.Name != "tabPageSummary")
  53. {
  54. String[] data = new String[2];
  55. data[0] = messageBox.Text;
  56. //current patient:
  57. data[1] = doctorTabControl.SelectedTab.Name;
  58. messageBox.Clear();
  59. doctorModel.tcpConnection.SendChatMessage(data);
  60. }
  61. else if (messageBox.Text != null && doctorTabControl.SelectedTab.Name == "tabPageSummary")
  62. {
  63. String[] data = new String[2];
  64. data[0] = "This is a broadcast: " + messageBox.Text;
  65. //all patients:
  66. for (int tabs = 1; tabs <= doctorTabControl.TabCount - 1; tabs++)
  67. {
  68. doctorTabControl.SelectTab(tabs);
  69. data[1] = doctorTabControl.SelectedTab.Name;
  70. doctorModel.tcpConnection.SendChatMessage(data);
  71. }
  72. messageBox.Clear();
  73. }
  74. }
  75. private void printMessage(string[] data)
  76. {
  77. string finalMessage = data[0] + ":\t" + data[2] + "\r\n";
  78. chatBox.Invoke((MethodInvoker)delegate ()
  79. {
  80. chatBox.AppendText(finalMessage);
  81. });
  82. }
  83. public void AddSessionToTabcontrol(string patientID)
  84. {
  85. TabPage page = new TabPage("Patientsession " + patientID);
  86. page.Name = patientID;
  87. Forms.DoctorSessionUC sessionUC = new Forms.DoctorSessionUC(patientID);
  88. sessionUC.Name = "sessionUC" + patientID;
  89. doctorModel.doctorSessions.Add(patientID, sessionUC);
  90. doctorModel.doctorSessions.TryGetValue(patientID, out sessionUC);
  91. page.Controls.Add(sessionUC);
  92. doctorTabControl.TabPages.Add(page);
  93. }
  94. public void RemoveSessionFromTabcontrol(string patientID)
  95. {
  96. doctorTabControl.TabPages.RemoveByKey(patientID);
  97. }
  98. private void DoctorForm_FormClosing(object sender, FormClosingEventArgs e)
  99. {
  100. doctorModel.stopAskingData();
  101. doctorModel.tcpConnection.disconnect();
  102. Application.Exit();
  103. }
  104. private void nieuwePatientToolStripMenuItem_Click(object sender, EventArgs e)
  105. {
  106. var newPatient = new NewPatientForm(doctorModel.tcpConnection);
  107. newPatient.Show();
  108. }
  109. private List<DataPoint> speedPoints = new List<DataPoint>();
  110. private List<DataPoint> bpmPoints = new List<DataPoint>();
  111. private List<DataPoint> rpmPoints = new List<DataPoint>();
  112. private void selectSessionToolStripMenuItem_Click(object sender, EventArgs e)
  113. {
  114. //get measurments
  115. List<Measurement> measurments = new List<Measurement>();
  116. User user = null;
  117. foreach (User userx in users)
  118. {
  119. user = userx;
  120. if (PatientBox.Text == user.id)
  121. {
  122. List<Session> sessions = user.GetSessions();
  123. foreach (Session session in sessions)
  124. {
  125. if (sessionsBox.Text == session.date.ToString())
  126. {
  127. measurments = session.session;
  128. }
  129. }
  130. }
  131. }
  132. //fill boxes
  133. summaryUserControl.sessionBox.Text = user.id;
  134. summaryUserControl.nameBox.Text = user.id;
  135. summaryUserControl.pulseBox.Text = measurments[measurments.Count - 1].bpm.ToString();
  136. summaryUserControl.rpmInfoBox.Text = measurments[measurments.Count - 1].rpm.ToString();
  137. summaryUserControl.speedInfoBox.Text = measurments[measurments.Count - 1].speed.ToString();
  138. summaryUserControl.distanceInfoBox.Text = measurments[measurments.Count - 1].distance.ToString();
  139. summaryUserControl.requestedBox.Text = measurments[measurments.Count - 1].requestedPower.ToString();
  140. summaryUserControl.energyInfoBox.Text = measurments[measurments.Count - 1].energy.ToString();
  141. summaryUserControl.timeBox.Text = measurments[measurments.Count - 1].time.ToString();
  142. summaryUserControl.actualBox.Text = measurments[measurments.Count - 1].actualPower.ToString();
  143. //fill speedpoints
  144. for (int i = 0; i < measurments.Count; i++)
  145. {
  146. speedPoints.Add(new DataPoint(measurments[i].time, measurments[i].speed));
  147. }
  148. //fill speedgraph
  149. summaryUserControl.speedChart.Series[0].Points.Clear();
  150. for (int i = 0; i < speedPoints.Count; i++)
  151. summaryUserControl.speedChart.Series[0].Points.Add(speedPoints[i]);
  152. summaryUserControl.speedChart.Update();
  153. //fill bpm
  154. for (int i = 0; i < measurments.Count; i++)
  155. {
  156. bpmPoints.Add(new DataPoint(measurments[i].time, measurments[i].bpm));
  157. }
  158. //fill bpmgraph
  159. summaryUserControl.bpmChart.Series[0].Points.Clear();
  160. for (int i = 0; i < bpmPoints.Count; i++)
  161. summaryUserControl.bpmChart.Series[0].Points.Add(bpmPoints[i]);
  162. summaryUserControl.bpmChart.Update();
  163. //fill rpm
  164. for (int i = 0; i < measurments.Count; i++)
  165. {
  166. rpmPoints.Add(new DataPoint(measurments[i].time, measurments[i].rpm));
  167. }
  168. //fill rpmgraph
  169. summaryUserControl.rpmChart.Series[0].Points.Clear();
  170. for (int i = 0; i < rpmPoints.Count; i++)
  171. summaryUserControl.rpmChart.Series[0].Points.Add(rpmPoints[i]);
  172. summaryUserControl.rpmChart.Update();
  173. }
  174. private void PatientBox_SelectedIndexChanged(object sender, EventArgs e)
  175. {
  176. foreach (User user in users)
  177. {
  178. if (user.id == PatientBox.Text)
  179. foreach (Session session in user.GetSessions())
  180. {
  181. sessionsBox.Items.Add(session.date.ToString());
  182. }
  183. }
  184. }
  185. private void loadUsersToolStripMenuItem_Click(object sender, EventArgs e)
  186. {
  187. users = doctorModel.tcpConnection.users;
  188. foreach (User user in users)
  189. {
  190. PatientBox.Items.Add(user.id);
  191. }
  192. }
  193. }
  194. }