SQLiteModel.cs 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data;
  5. using System.Data.Common;
  6. using System.Data.SQLite;
  7. namespace WpfTest1.SQLite
  8. {
  9. public class SQLiteModel
  10. {
  11. public static string dbPath = Toolkits.Constants.dbPath;
  12. #region 各类建表操作
  13. //Patient表的创建
  14. //Patient表的创建
  15. public static void CreatePatientTable()
  16. {
  17. //如果不存在改数据库文件,则创建该数据库文件
  18. if (!System.IO.File.Exists(dbPath))
  19. {
  20. SQLiteHelper.CreateDB(dbPath);
  21. //Console.WriteLine("OK");
  22. }
  23. SQLiteHelper db = new SQLiteHelper(dbPath);
  24. string sql = @"CREATE TABLE Patient(
  25. id integer primary key autoincrement not null,
  26. record_id varchar(100),
  27. idNum varchar(20),
  28. name varchar(20),
  29. height float,
  30. weight float,
  31. base_heartrate integer,
  32. pregnancy_times integer,
  33. birth_times integer,
  34. pregnancy_date Date,
  35. mobile varchar(20),
  36. profession varchar(40),
  37. address varchar(140),
  38. category varchar(40),
  39. group_1 varchar(40),
  40. firstLetterPY varchar(10),
  41. description varchar(200),
  42. lastRecordDate datetime,
  43. delete_flag boolean
  44. )";
  45. db.ExecuteNonQuery(sql, null);
  46. string sql_1 = "CREATE INDEX Patient_idNum on Patient(idNum)";
  47. db.ExecuteNonQuery(sql_1, null);
  48. }
  49. //创建记录表
  50. public static void CreateRecordTable()
  51. {
  52. //如果不存在改数据库文件,则创建该数据库文件
  53. if (!System.IO.File.Exists(dbPath))
  54. {
  55. SQLiteHelper.CreateDB(dbPath);
  56. }
  57. SQLiteHelper db = new SQLiteHelper(dbPath);
  58. string sql = @"CREATE TABLE Record(
  59. id integer primary key autoincrement not null ,
  60. patientId integer,
  61. recordTime datetime ,
  62. dataLeft blob,
  63. dataRight blob,
  64. dataWrist blob,
  65. topBP integer,
  66. bottomBP integer,
  67. heartRate integer,
  68. eigenValueSaved integer ,
  69. comments varchar(200)
  70. )";
  71. db.ExecuteNonQuery(sql, null);
  72. }
  73. //创建医生表
  74. public static void CreateDoctorTable()
  75. {
  76. //如果不存在改数据库文件,则创建该数据库文件
  77. if (!System.IO.File.Exists(dbPath))
  78. {
  79. SQLiteHelper.CreateDB(dbPath);
  80. }
  81. SQLiteHelper db = new SQLiteHelper(dbPath);
  82. string sql = @"CREATE TABLE Doctor(
  83. id integer primary key autoincrement not null ,
  84. name varchar(20),
  85. pwd_hash varchar(32),
  86. phone_number varchar(20),
  87. director_flag boolean,
  88. delete_flag boolean)";
  89. db.ExecuteNonQuery(sql, null);
  90. }
  91. //创建CommonWords表
  92. public static void CreateCommonWordsTable()
  93. {
  94. //如果不存在改数据库文件,则创建该数据库文件
  95. if (!System.IO.File.Exists(dbPath))
  96. {
  97. SQLiteHelper.CreateDB(dbPath);
  98. }
  99. SQLiteHelper db = new SQLiteHelper(dbPath);
  100. string sql = @"CREATE TABLE CommonWords(
  101. id integer primary key autoincrement not null ,
  102. content varchar(200),
  103. describe varchar(20))";
  104. db.ExecuteNonQuery(sql, null);
  105. }
  106. //创建表达式表
  107. public static void CreateExpressionTable()
  108. {
  109. //如果不存在改数据库文件,则创建该数据库文件
  110. if (!System.IO.File.Exists(dbPath))
  111. {
  112. SQLiteHelper.CreateDB(dbPath);
  113. }
  114. SQLiteHelper db = new SQLiteHelper(dbPath);
  115. string sql = @"CREATE TABLE Expression(
  116. id integer primary key autoincrement not null ,
  117. expression_content varchar(500),
  118. expression_description varchar(500)
  119. )";
  120. db.ExecuteNonQuery(sql, null);
  121. }
  122. //创建配置表
  123. public static void CreateConfigTable()
  124. {
  125. //如果不存在改数据库文件,则创建该数据库文件
  126. if (!System.IO.File.Exists(dbPath))
  127. {
  128. SQLiteHelper.CreateDB(dbPath);
  129. }
  130. SQLiteHelper db = new SQLiteHelper(dbPath);
  131. string sql = @"CREATE TABLE Config(
  132. key varchar(100) primary key not null ,
  133. value varchar(500)
  134. )";
  135. db.ExecuteNonQuery(sql, null);
  136. }
  137. #endregion
  138. #region 数据库整体操作
  139. /// <summary>
  140. /// optmizeDatabase:从数据库中清空空闲列表
  141. /// </summary>
  142. public static int optmizeDatabase()
  143. {
  144. string sql = "vacuum";
  145. SQLiteHelper db = new SQLiteHelper(dbPath);
  146. SQLiteParameter[] parameters = new SQLiteParameter[] { };
  147. return db.ExecuteNonQuery(sql, parameters);
  148. }
  149. #endregion
  150. #region Patient表各类操作
  151. //Patient表的插入
  152. public static void InsertPatientData(string record_id,string name, string gender, double height, double weight,int pregnancy_times,DateTime birth_date,string phone,string address,string history,string diagnosis, string name_py)
  153. {
  154. string sql = "INSERT INTO Patient(p_record_id,p_name,p_gender,p_height,p_weight,p_pregnancy_time,p_birthdate,p_phone,p_address,p_history,p_diagnosis, p_name_py)"+
  155. "values(@record_id,@name,@gender,@height,@weight,@pregnancy_times,@birthdate,@phone,@address,@history,@diagnosis,@name_py)";
  156. SQLiteHelper db = new SQLiteHelper(dbPath);
  157. SQLiteParameter[] parameters = new SQLiteParameter[]{
  158. new SQLiteParameter("@record_id",record_id),
  159. new SQLiteParameter("@name",name),
  160. new SQLiteParameter("@gender",gender),
  161. new SQLiteParameter("@height",height),
  162. new SQLiteParameter("@weight",weight),
  163. new SQLiteParameter("@pregnancy_times",pregnancy_times),
  164. new SQLiteParameter("@birthdate",birth_date),
  165. new SQLiteParameter("@phone",phone),
  166. new SQLiteParameter("@address",address),
  167. new SQLiteParameter("@history",history),
  168. new SQLiteParameter("@diagnosis",diagnosis),
  169. new SQLiteParameter("@name_py",name_py),
  170. };
  171. db.ExecuteNonQuery(sql, parameters);
  172. }
  173. //Patient表的更新
  174. public static void UpdatePatientData(string id, string record_id, string name, string gender, double height, double weight, int pregnancy_times, DateTime birth_date, string phone, string address, string history, string diagnosis, string name_py)
  175. {
  176. //Boolean a = false;
  177. string sql = "UPDATE Patient SET p_record_id=@record_id,p_name=@name,p_gender=@gender,p_height=@height,p_weight=@weight,p_pregnancy_time=@pregnancy_times,p_birthdate=@birth_date,p_phone=@phone,p_address=@address,p_history=@history,p_diagnosis=@diagnosis,p_name_py=@name_py WHERE p_id=@id";
  178. SQLiteHelper db = new SQLiteHelper(dbPath);
  179. SQLiteParameter[] parameters = new SQLiteParameter[]{
  180. new SQLiteParameter("@record_id",record_id),
  181. new SQLiteParameter("@name",name),
  182. new SQLiteParameter("@gender",gender),
  183. new SQLiteParameter("@height",height),
  184. new SQLiteParameter("@weight",weight),
  185. new SQLiteParameter("@pregnancy_times",pregnancy_times),
  186. new SQLiteParameter("@birth_date",birth_date),
  187. new SQLiteParameter("@phone",phone),
  188. new SQLiteParameter("@address",address),
  189. new SQLiteParameter("@history",history),
  190. new SQLiteParameter("@diagnosis",diagnosis),
  191. new SQLiteParameter("@name_py",name_py),
  192. new SQLiteParameter("@id",id),
  193. };
  194. //System.Console.WriteLine(sql);
  195. db.ExecuteNonQuery(sql, parameters);
  196. }
  197. //Patient表的仅更新最后XX时间的方法
  198. //type 为 filter 或 evaluation
  199. public static void UpdatePatientDataWithLastDate(int id, string type, DateTime lastRecordDate)
  200. {
  201. string colum_select = "p_last_filter_time";
  202. if(type == "evaluation")
  203. colum_select = "p_last_evaluation_time";
  204. string sql = "UPDATE Patient SET " + colum_select + "=@lastRecordDate WHERE p_id=@id";
  205. SQLiteHelper db = new SQLiteHelper(dbPath);
  206. SQLiteParameter[] parameters = new SQLiteParameter[]{
  207. new SQLiteParameter("@lastRecordDate",lastRecordDate),
  208. new SQLiteParameter("@id",id)
  209. };
  210. db.ExecuteNonQuery(sql, parameters);
  211. }
  212. //Patient表记录的删除
  213. public static int DeletePatientItem(string id)
  214. {
  215. string sql = "UPDATE Patient SET p_delete_flag=1 WHERE p_id=@id";
  216. SQLiteHelper db = new SQLiteHelper(dbPath);
  217. SQLiteParameter[] parameters = new SQLiteParameter[]{
  218. new SQLiteParameter("@id",id)
  219. };
  220. return db.ExecuteNonQuery(sql, parameters);
  221. }
  222. /// <summary>
  223. /// getDeletedPatients:从Patient表中获取所有已被标记为删除的数据的id
  224. /// </summary>
  225. public static List<string> getDeletedPatients()
  226. {
  227. string sql = "SELECT p_id FROM Patient WHERE p_delete_flag = 1";
  228. SQLiteHelper db = new SQLiteHelper(dbPath);
  229. SQLiteParameter[] parameters = new SQLiteParameter[] { };
  230. List<string> result = new List<string>();
  231. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  232. {
  233. while (reader.Read())
  234. {
  235. string id = reader.IsDBNull(0) ? "" : reader.GetString(0);
  236. result.Add(id);
  237. }
  238. }
  239. return result;
  240. }
  241. /// <summary>
  242. /// realDeleteRecords:从Patient表中真实删除记录
  243. /// </summary>
  244. public static int realDeleteRecords()
  245. {
  246. string sql = "DELETE from Patient WHERE p_delete_flag=1";
  247. SQLiteHelper db = new SQLiteHelper(dbPath);
  248. SQLiteParameter[] parameters = new SQLiteParameter[]{ };
  249. return db.ExecuteNonQuery(sql, parameters);
  250. }
  251. //检查Patient表是否重复,条件提病例号.重复返回true,否则返回false
  252. public static bool checkRepeatPatient(string record_id)
  253. {
  254. string sql = "SELECT * FROM Patient WHERE p_record_id = @record_id AND p_delete_flag = 0";
  255. SQLiteHelper db = new SQLiteHelper(dbPath);
  256. SQLiteParameter[] parameters = new SQLiteParameter[]{
  257. new SQLiteParameter("@record_id",record_id)
  258. };
  259. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  260. {
  261. while (reader.Read())
  262. {
  263. reader.Close();
  264. return true;
  265. }
  266. }
  267. return false;
  268. }
  269. //通过id主键查找Patient
  270. public static Patient getPatientById(string id)
  271. {
  272. string sql = "SELECT * FROM Patient WHERE p_id = @id AND p_delete_flag = 0 LIMIT 1";
  273. SQLiteHelper db = new SQLiteHelper(dbPath);
  274. SQLiteParameter[] parameters = new SQLiteParameter[]{
  275. new SQLiteParameter("@id",id),
  276. };
  277. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  278. {
  279. while (reader.Read())
  280. {
  281. Patient temp = new Patient();
  282. temp.p_id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  283. temp.p_name = reader.IsDBNull(1) ? "" : reader.GetString(1);
  284. temp.p_name_py = reader.IsDBNull(2) ? "" : reader.GetString(2);
  285. temp.p_record_id = reader.IsDBNull(3) ? "" : reader.GetString(3);
  286. temp.p_gender = reader.IsDBNull(4) ? "" : reader.GetString(4);
  287. temp.p_birthdate = reader.IsDBNull(5) ? DateTime.MinValue : reader.GetDateTime(5);
  288. temp.p_height = reader.IsDBNull(6) ? 0 : reader.GetDouble(6);
  289. temp.p_weight = reader.IsDBNull(7) ? 0 : reader.GetDouble(7);
  290. temp.p_pregnancy_time = reader.IsDBNull(8) ? 0 : reader.GetInt32(8);
  291. temp.p_phone = reader.IsDBNull(9) ? "" : reader.GetString(9);
  292. temp.p_address = reader.IsDBNull(10) ? "" : reader.GetString(10);
  293. temp.p_history = reader.IsDBNull(11) ? "" : reader.GetString(11);
  294. temp.p_diagnosis = reader.IsDBNull(12) ? "" : reader.GetString(12);
  295. temp.doc_id = reader.IsDBNull(13) ? 0 : reader.GetInt32(13);
  296. temp.p_last_filter_time = reader.IsDBNull(14) ? DateTime.MinValue : reader.GetDateTime(14);
  297. temp.p_last_evaluation_time = reader.IsDBNull(15) ? DateTime.MinValue : reader.GetDateTime(15);
  298. temp.p_delete_flag = reader.IsDBNull(16) ? false : reader.GetBoolean(16); ;
  299. return temp;
  300. }
  301. }
  302. return null;
  303. }
  304. #endregion
  305. #region Question_template表的相关操作
  306. public static List<Question> getQuestions(string type = "filter")
  307. {
  308. List<Question> questions = new List<Question>();
  309. string condition = "q_type = 1";
  310. if(type == "evaluation")
  311. {
  312. condition = "q_type = 2";
  313. }
  314. string sql = "SELECT * FROM Question_template WHERE " + condition + " order by q_number asc";
  315. SQLiteHelper db = new SQLiteHelper(dbPath);
  316. SQLiteParameter[] parameters = new SQLiteParameter[]{};
  317. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  318. {
  319. while (reader.Read())
  320. {
  321. Question temp = new Question();
  322. temp.q_id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  323. temp.q_type = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
  324. temp.q_number = reader.IsDBNull(2) ? 0 : reader.GetInt32(2);
  325. temp.q_content = reader.IsDBNull(3) ? "" : reader.GetString(3);
  326. temp.filter_a_id = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  327. questions.Add(temp);
  328. }
  329. }
  330. return questions;
  331. }
  332. public static Question getQuestionById(string qid)
  333. {
  334. string sql = "SELECT * FROM Question_template WHERE q_id=@qid LIMIT 1";
  335. SQLiteHelper db = new SQLiteHelper(dbPath);
  336. SQLiteParameter[] parameters = new SQLiteParameter[]{
  337. new SQLiteParameter("@qid",qid),
  338. };
  339. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  340. {
  341. while (reader.Read())
  342. {
  343. Question temp = new Question();
  344. temp.q_id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  345. temp.q_type = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
  346. temp.q_number = reader.IsDBNull(2) ? 0 : reader.GetInt32(2);
  347. temp.q_content = reader.IsDBNull(3) ? "" : reader.GetString(3);
  348. temp.filter_a_id = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  349. return temp;
  350. }
  351. }
  352. return null;
  353. }
  354. #endregion
  355. #region Answer_template表相关操作
  356. public static List<Answer> getAnswersByQid(string qid)
  357. {
  358. List<Answer> questions = new List<Answer>();
  359. string sql = "SELECT * FROM Answer_template WHERE q_id=@qid order by a_id asc";
  360. SQLiteHelper db = new SQLiteHelper(dbPath);
  361. SQLiteParameter[] parameters = new SQLiteParameter[]{
  362. new SQLiteParameter("@qid",qid),
  363. };
  364. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  365. {
  366. while (reader.Read())
  367. {
  368. Answer temp = new Answer();
  369. temp.a_id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  370. temp.q_id = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
  371. temp.a_content = reader.IsDBNull(2) ? "" : reader.GetString(2);
  372. temp.a_value = reader.IsDBNull(3) ? 0 : reader.GetInt32(3);
  373. temp.evaluation_q_id = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  374. temp.a_description_text = reader.IsDBNull(5) ? "" : reader.GetString(5);
  375. temp.a_description_img = reader.IsDBNull(6) ? "" : reader.GetString(6);
  376. temp.a_suggestion_text = reader.IsDBNull(7) ? "" : reader.GetString(7);
  377. temp.a_suggestion_img = reader.IsDBNull(8) ? "" : reader.GetString(8);
  378. questions.Add(temp);
  379. }
  380. }
  381. return questions;
  382. }
  383. public static Answer getAnswerById(string aid)
  384. {
  385. string sql = "SELECT * FROM Answer_template WHERE a_id=@aid LIMIT 1";
  386. SQLiteHelper db = new SQLiteHelper(dbPath);
  387. SQLiteParameter[] parameters = new SQLiteParameter[]{
  388. new SQLiteParameter("@aid",aid),
  389. };
  390. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  391. {
  392. while (reader.Read())
  393. {
  394. Answer temp = new Answer();
  395. temp.a_id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  396. temp.q_id = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
  397. temp.a_content = reader.IsDBNull(2) ? "" : reader.GetString(2);
  398. temp.a_value = reader.IsDBNull(3) ? 0 : reader.GetInt32(3);
  399. temp.evaluation_q_id = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  400. temp.a_description_text = reader.IsDBNull(5) ? "" : reader.GetString(5);
  401. temp.a_description_img = reader.IsDBNull(6) ? "" : reader.GetString(6);
  402. temp.a_suggestion_text = reader.IsDBNull(7) ? "" : reader.GetString(7);
  403. temp.a_suggestion_img = reader.IsDBNull(8) ? "" : reader.GetString(8);
  404. return temp;
  405. }
  406. }
  407. return null;
  408. }
  409. #endregion
  410. #region Record表相关操作
  411. public static void insertRecord(int r_type, int p_id, int d_id, int filter_id, DateTime r_time, int r_count, string r_selection)
  412. {
  413. string sql = "INSERT INTO Record(r_type,p_id,d_id,filter_id,r_time,r_count,r_selection)" +
  414. "values(@r_type,@p_id,@d_id,@filter_id,@r_time,@r_count,@r_selection)";
  415. SQLiteHelper db = new SQLiteHelper(dbPath);
  416. SQLiteParameter[] parameters = new SQLiteParameter[]{
  417. new SQLiteParameter("@r_type",r_type),
  418. new SQLiteParameter("@p_id",p_id),
  419. new SQLiteParameter("@d_id",d_id),
  420. new SQLiteParameter("@filter_id",filter_id),
  421. new SQLiteParameter("@r_time",r_time),
  422. new SQLiteParameter("@r_count",r_count),
  423. new SQLiteParameter("@r_selection",r_selection)
  424. };
  425. db.ExecuteNonQuery(sql, parameters);
  426. }
  427. #endregion
  428. #region doctor表相关的操作
  429. //医生登录操作
  430. public static doctor doctorLogin(string name,string passwordHash)
  431. {
  432. string sql = "SELECT * FROM Doctor WHERE name = @name and pwd_hash=@passwordHash and delete_flag =0 LIMIT 1";
  433. SQLiteHelper db = new SQLiteHelper(dbPath);
  434. SQLiteParameter[] parameters = new SQLiteParameter[]{
  435. new SQLiteParameter("@name",name),
  436. new SQLiteParameter("@passwordHash",passwordHash),
  437. };
  438. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  439. {
  440. while (reader.Read())
  441. {
  442. doctor oneDoctor = new doctor();
  443. oneDoctor.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  444. oneDoctor.name = name;
  445. oneDoctor.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  446. oneDoctor.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  447. oneDoctor.privilege_flag = reader.IsDBNull(6) ? -1 : reader.GetInt32(6);
  448. return oneDoctor;
  449. }
  450. }
  451. return null;
  452. }
  453. //主任登录操作
  454. public static doctor directorLogin(string name, string passwordHash)
  455. {
  456. string sql = "SELECT * FROM Doctor WHERE name = @name and pwd_hash=@passwordHash and delete_flag = 0 and director_flag = 1 LIMIT 1";
  457. SQLiteHelper db = new SQLiteHelper(dbPath);
  458. SQLiteParameter[] parameters = new SQLiteParameter[]{
  459. new SQLiteParameter("@name",name),
  460. new SQLiteParameter("@passwordHash",passwordHash),
  461. };
  462. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  463. {
  464. while (reader.Read())
  465. {
  466. doctor oneDoctor = new doctor();
  467. oneDoctor.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  468. oneDoctor.name = name;
  469. oneDoctor.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  470. oneDoctor.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  471. return oneDoctor;
  472. }
  473. }
  474. return null;
  475. }
  476. //厂商登录操作
  477. public static doctor OEMLogin(string name, string passwordHash)
  478. {
  479. string sql = "SELECT * FROM Doctor WHERE name = @name and pwd_hash=@passwordHash and delete_flag = 0 and privilege_flag = 1 LIMIT 1";
  480. SQLiteHelper db = new SQLiteHelper(dbPath);
  481. SQLiteParameter[] parameters = new SQLiteParameter[]{
  482. new SQLiteParameter("@name",name),
  483. new SQLiteParameter("@passwordHash",passwordHash),
  484. };
  485. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  486. {
  487. while (reader.Read())
  488. {
  489. doctor oneDoctor = new doctor();
  490. oneDoctor.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  491. oneDoctor.name = name;
  492. oneDoctor.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  493. oneDoctor.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  494. return oneDoctor;
  495. }
  496. }
  497. return null;
  498. }
  499. //查询医生用户名是否存在 存在返回true
  500. public static bool checkRepeatDoctor(string name)
  501. {
  502. string sql = "SELECT * FROM Doctor WHERE name = @name AND delete_flag = 0";
  503. SQLiteHelper db = new SQLiteHelper(dbPath);
  504. SQLiteParameter[] parameters = new SQLiteParameter[]{
  505. new SQLiteParameter("@name",name)
  506. };
  507. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  508. {
  509. while (reader.Read())
  510. {
  511. reader.Close();
  512. return true;
  513. }
  514. }
  515. return false;
  516. }
  517. //通过id主键查找Doctor
  518. public static doctor getDoctorById(string id)
  519. {
  520. string sql = "SELECT * FROM Doctor WHERE id = @id AND delete_flag = 0 LIMIT 1";
  521. SQLiteHelper db = new SQLiteHelper(dbPath);
  522. SQLiteParameter[] parameters = new SQLiteParameter[]{
  523. new SQLiteParameter("@id",id),
  524. };
  525. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  526. {
  527. while (reader.Read())
  528. {
  529. doctor temp = new doctor();
  530. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  531. temp.name = reader.IsDBNull(1) ? "" : reader.GetString(1);
  532. temp.pwd_hash = reader.IsDBNull(2) ? "" : reader.GetString(2);
  533. temp.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  534. temp.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  535. return temp;
  536. }
  537. }
  538. return null;
  539. }
  540. //查找Doctor 返回目前还使用的医生id
  541. public static int getDoctorIdByNoDelete()
  542. {
  543. string sql = "SELECT * FROM Doctor WHERE delete_flag = 0 LIMIT 1";
  544. SQLiteHelper db = new SQLiteHelper(dbPath);
  545. SQLiteParameter[] parameters = new SQLiteParameter[]{};
  546. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  547. {
  548. while (reader.Read())
  549. {
  550. doctor temp = new doctor();
  551. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  552. temp.name = reader.IsDBNull(1) ? "" : reader.GetString(1);
  553. temp.pwd_hash = reader.IsDBNull(2) ? "" : reader.GetString(2);
  554. temp.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  555. temp.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  556. return temp.id;
  557. }
  558. }
  559. return -1;
  560. }
  561. //Doctort表的插入
  562. public static void InsertDoctorData(string name, string pwd_hash, string phone_number, Boolean director_flag = false, Boolean delete_flag = false)
  563. {
  564. string sql = "INSERT INTO Doctor(name,pwd_hash,phone_number,director_flag,delete_flag)values(@name,@pwd_hash,@phone_number,@director_flag,@delete_flag)";
  565. SQLiteHelper db = new SQLiteHelper(dbPath);
  566. SQLiteParameter[] parameters = new SQLiteParameter[]{
  567. new SQLiteParameter("@name",name),
  568. new SQLiteParameter("@pwd_hash",pwd_hash),
  569. new SQLiteParameter("@phone_number",phone_number),
  570. new SQLiteParameter("@director_flag",director_flag),
  571. new SQLiteParameter("@delete_flag",delete_flag)
  572. };
  573. db.ExecuteNonQuery(sql, parameters);
  574. }
  575. //Doctor表的更新
  576. public static void UpdateDoctorData(string id, string name, string pwd_hash, string phone_number, Boolean director_flag = false, Boolean delete_flag = false)
  577. {
  578. //Boolean a = false;
  579. string sql = "UPDATE Doctor SET name=@name,pwd_hash=@pwd_hash,phone_number=@phone_number,director_flag=@director_flag,delete_flag=@delete_flag WHERE id=@id";
  580. SQLiteHelper db = new SQLiteHelper(dbPath);
  581. SQLiteParameter[] parameters = new SQLiteParameter[]{
  582. new SQLiteParameter("@name",name),
  583. new SQLiteParameter("@pwd_hash",pwd_hash),
  584. new SQLiteParameter("@phone_number",phone_number),
  585. new SQLiteParameter("@director_flag",director_flag),
  586. new SQLiteParameter("@delete_flag",delete_flag),
  587. new SQLiteParameter("@id",id)
  588. };
  589. db.ExecuteNonQuery(sql, parameters);
  590. }
  591. //Doctor表记录的删除
  592. public static int DeleteDoctorItem(string id)
  593. {
  594. string sql = "UPDATE Doctor SET delete_flag=1 WHERE id=@id";
  595. SQLiteHelper db = new SQLiteHelper(dbPath);
  596. SQLiteParameter[] parameters = new SQLiteParameter[]{
  597. new SQLiteParameter("@id",id)
  598. };
  599. return db.ExecuteNonQuery(sql, parameters);
  600. }
  601. #endregion
  602. #region 配置表Config的相关操作
  603. //查找所有的expression的content列
  604. public static void GetAllConfigContent(Dictionary<string, string> target)
  605. {
  606. target.Clear();
  607. string sql = "SELECT key,value FROM Config WHERE 1";
  608. SQLiteHelper db = new SQLiteHelper(dbPath);
  609. SQLiteParameter[] parameters = new SQLiteParameter[]{
  610. };
  611. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  612. {
  613. while (reader.Read())
  614. {
  615. string tempKey = reader.IsDBNull(0) ? "" : reader.GetString(0);
  616. string tempValue = reader.IsDBNull(1) ? "" : reader.GetString(1);
  617. if (tempKey == "")
  618. {
  619. break;
  620. }
  621. //KeyValuePair<string, double> temp = new KeyValuePair<string, double>(tempKey,0);
  622. target.Add(tempKey, tempValue);
  623. }
  624. }
  625. }
  626. //更新激活码信息
  627. public static void UpdateRegisterCode(string name, string pw, string code)
  628. {
  629. //Boolean a = false;
  630. string sql = "UPDATE Config SET value=@name WHERE key='organization_name'";
  631. SQLiteHelper db = new SQLiteHelper(dbPath);
  632. SQLiteParameter[] parameters = new SQLiteParameter[]{
  633. new SQLiteParameter("@name",name)
  634. };
  635. db.ExecuteNonQuery(sql, parameters);
  636. sql = "UPDATE Config SET value=@pw WHERE key='organization_pw'";
  637. db = new SQLiteHelper(dbPath);
  638. parameters = new SQLiteParameter[]{
  639. new SQLiteParameter("@pw",pw)
  640. };
  641. db.ExecuteNonQuery(sql, parameters);
  642. sql = "UPDATE Config SET value=@code WHERE key='organization_active_code'";
  643. db = new SQLiteHelper(dbPath);
  644. parameters = new SQLiteParameter[]{
  645. new SQLiteParameter("@code",code)
  646. };
  647. db.ExecuteNonQuery(sql, parameters);
  648. }
  649. //更新血压单位显示hhmg或者kpa,如果为1则是hhmg
  650. public static void UpdateDocSetting(string value)
  651. {
  652. //Boolean a = false;
  653. string sql = "UPDATE Config SET value=@value WHERE key='bp_unit_mmhg'";
  654. SQLiteHelper db = new SQLiteHelper(dbPath);
  655. SQLiteParameter[] parameters = new SQLiteParameter[]{
  656. new SQLiteParameter("@value",value)
  657. };
  658. db.ExecuteNonQuery(sql, parameters);
  659. }
  660. //更新平滑参数
  661. public static void UpdateSmoothPara(int ori_pts, int ori_times, int dri_pts, int dri_times, int filter_when_saving)
  662. {
  663. //Boolean a = false;
  664. string sql = "UPDATE Config SET value=@ori_pts WHERE key='original_smooth_points'";
  665. SQLiteHelper db = new SQLiteHelper(dbPath);
  666. SQLiteParameter[] parameters = new SQLiteParameter[]{
  667. new SQLiteParameter("@ori_pts",ori_pts)
  668. };
  669. db.ExecuteNonQuery(sql, parameters);
  670. sql = "UPDATE Config SET value=@ori_times WHERE key='original_smooth_times'";
  671. db = new SQLiteHelper(dbPath);
  672. parameters = new SQLiteParameter[]{
  673. new SQLiteParameter("@ori_times",ori_times)
  674. };
  675. db.ExecuteNonQuery(sql, parameters);
  676. sql = "UPDATE Config SET value=@dri_pts WHERE key='derive_smooth_points'";
  677. db = new SQLiteHelper(dbPath);
  678. parameters = new SQLiteParameter[]{
  679. new SQLiteParameter("@dri_pts",dri_pts)
  680. };
  681. db.ExecuteNonQuery(sql, parameters);
  682. sql = "UPDATE Config SET value=@dri_times WHERE key='derive_smooth_times'";
  683. db = new SQLiteHelper(dbPath);
  684. parameters = new SQLiteParameter[]{
  685. new SQLiteParameter("@dri_times",dri_times)
  686. };
  687. db.ExecuteNonQuery(sql, parameters);
  688. sql = "UPDATE Config SET value=@filter_when_saving WHERE key='filter_when_saving'";
  689. db = new SQLiteHelper(dbPath);
  690. parameters = new SQLiteParameter[]{
  691. new SQLiteParameter("@filter_when_saving",filter_when_saving)
  692. };
  693. db.ExecuteNonQuery(sql, parameters);
  694. }
  695. //只更新特征值数列的平滑参数
  696. public static void UpdateEigenSmoothPara(int egi_pts, int egi_times)
  697. {
  698. //Boolean a = false;
  699. string sql = "UPDATE Config SET value=@egi_pts WHERE key='eigen_smooth_points'";
  700. SQLiteHelper db = new SQLiteHelper(dbPath);
  701. SQLiteParameter[] parameters = new SQLiteParameter[]{
  702. new SQLiteParameter("@egi_pts",egi_pts)
  703. };
  704. db.ExecuteNonQuery(sql, parameters);
  705. sql = "UPDATE Config SET value=@egi_times WHERE key='eigen_smooth_times'";
  706. db = new SQLiteHelper(dbPath);
  707. parameters = new SQLiteParameter[]{
  708. new SQLiteParameter("@egi_times",egi_times)
  709. };
  710. db.ExecuteNonQuery(sql, parameters);
  711. }
  712. //更新报告中report_figure_name
  713. public static void UpdateReportFigureName(string new_name)
  714. {
  715. string sql = "UPDATE Config SET value=@new_name WHERE key='report_figure_name'";
  716. SQLiteHelper db = new SQLiteHelper(dbPath);
  717. SQLiteParameter[] parameters = new SQLiteParameter[]{
  718. new SQLiteParameter("@new_name",new_name)
  719. };
  720. db.ExecuteNonQuery(sql, parameters);
  721. }
  722. //更新主公式等参数
  723. public static void UpdateGeneralExpression(string new_segment_name, string segement_threhold, string new_expression)
  724. {
  725. string sql = "UPDATE Config SET value=@new_segment_name WHERE key='segement_name'";
  726. SQLiteHelper db = new SQLiteHelper(dbPath);
  727. SQLiteParameter[] parameters = new SQLiteParameter[]{
  728. new SQLiteParameter("@new_segment_name",new_segment_name)
  729. };
  730. db.ExecuteNonQuery(sql, parameters);
  731. sql = "UPDATE Config SET value=@segement_threhold WHERE key='segement_threhold'";
  732. db = new SQLiteHelper(dbPath);
  733. parameters = new SQLiteParameter[]{
  734. new SQLiteParameter("@segement_threhold",segement_threhold)
  735. };
  736. db.ExecuteNonQuery(sql, parameters);
  737. sql = "UPDATE Config SET value=@new_expression WHERE key='general_expression'";
  738. db = new SQLiteHelper(dbPath);
  739. parameters = new SQLiteParameter[]{
  740. new SQLiteParameter("@new_expression",new_expression)
  741. };
  742. db.ExecuteNonQuery(sql, parameters);
  743. }
  744. #endregion
  745. #region 以下是测试功能,请在生产环境之前删除这些功能
  746. public static byte[] getRecordData()
  747. {
  748. string dbPathTest = @"D:\\sourceCode\\github\\Junde_New\bin\\Debug\\data\\data.db";
  749. string sql = "SELECT Data FROM Record WHERE id = 22";
  750. SQLiteHelper db = new SQLiteHelper(dbPathTest);
  751. Console.WriteLine("database ok!");
  752. using (SQLiteDataReader reader = db.ExecuteReader(sql, null))
  753. {
  754. byte[] buffer = null;
  755. if (reader.HasRows)
  756. {
  757. reader.Read();
  758. long len = reader.GetBytes(reader.GetOrdinal("Data"), 0, null, 0, 0);
  759. Console.WriteLine("len is :" + len.ToString());
  760. buffer = new byte[len];
  761. len = reader.GetBytes(reader.GetOrdinal("Data"), 0, buffer, 0, (int)len);
  762. for(int i =0;i<100;i++)
  763. {
  764. Console.WriteLine(buffer[i]);
  765. }
  766. return buffer;
  767. //System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);
  768. //System.Drawing.Image iamge = System.Drawing.Image.FromStream(ms);
  769. //pictureBox1.Image = iamge;
  770. }
  771. }
  772. return null;
  773. }
  774. #endregion
  775. }
  776. }