chronic-info.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. (function ($) {
  2. var HOST = '/icss-web';
  3. // var HOST = 'http://192.168.3.12:8080/icss-web';
  4. // var HOST = 'http://192.168.2.165:8080/icss-web';
  5. // var HOST = 'http://192.168.2.164:8080/icss-web';
  6. // var HOST = 'http://192.168.3.12:8080/icss-web';
  7. var draw_tmpl = {
  8. tooltip: {
  9. trigger: 'axis'
  10. },
  11. grid: {
  12. left: '3%',
  13. right: '4%',
  14. bottom: '3%',
  15. containLabel: true
  16. },
  17. yAxis: {
  18. type: 'value'
  19. },
  20. xAxis: {
  21. type: 'time',
  22. boundaryGap: ['10%', '10%']
  23. }
  24. };
  25. //绘制
  26. function draw($wrapper, option) {
  27. var eChart = echarts.init($wrapper[0]);
  28. eChart.setOption(option);
  29. $(window).resize(function () {
  30. eChart.resize();
  31. });
  32. }
  33. function _genOneDrawData(obj) {
  34. if (!obj) {
  35. return null;
  36. }
  37. var draw_option = {
  38. legend: {
  39. data: []
  40. },
  41. series: []
  42. };
  43. $.each(obj, function (k, v) {
  44. if(!v || !v.length){
  45. return;
  46. }
  47. var _data = v[0],
  48. name = _data.itemName,
  49. data = [];
  50. draw_option.legend.data.push(name);
  51. $.each(v, function (i, item) {
  52. data.push([parseInt(item.itemTime), item.itemValue]);
  53. });
  54. data.sort(function (item1, item2) {
  55. return new Date(item1[0]) - new Date(item2[0]);
  56. });
  57. draw_option.series.push({
  58. type: 'line',
  59. name: name,
  60. smooth: true,
  61. smoothMonotone: 'x',
  62. data: data
  63. });
  64. });
  65. return $.extend(true, draw_option, draw_tmpl);
  66. }
  67. function genDrawData(data) {
  68. var return_data = [],
  69. draw_data;
  70. for (var i = 1; i < 4; i++) {
  71. draw_data = _genOneDrawData(data[i]);
  72. if (draw_data) {
  73. return_data.push(draw_data);
  74. }
  75. }
  76. return return_data;
  77. }
  78. function genIndicatorInfo(data) {
  79. var $indicator = $('#indicator'),
  80. $wrapper = $indicator.find('.canvas-wrapper'),
  81. $proteins,$blood_sugar,is_odd,dif=0;
  82. var len = data.length;
  83. if (len === 0) {
  84. return;
  85. }
  86. $indicator.show();
  87. is_odd=len % 2 === 1;
  88. if (is_odd) {
  89. $wrapper.append('<div class="row"><div class="blood-sugar draw-wrapper"></div></div>');
  90. }
  91. for (var i = 1; i < len; i++) {
  92. $wrapper.append('<div class="row"><div class="protein draw-wrapper"></div><div class="protein draw-wrapper"></div></div>');
  93. }
  94. i=0;
  95. $proteins=$wrapper.find('.protein');
  96. if(is_odd){
  97. $blood_sugar=$wrapper.find('.blood-sugar');
  98. draw($blood_sugar, data[0]);
  99. i=1;
  100. dif=1;
  101. }
  102. for (; i < len; i++) {
  103. draw($proteins.eq(i-dif), data[i]);
  104. }
  105. }
  106. function addInfo(data) {
  107. return data ? data : '';
  108. }
  109. function genPersonInfoData(data) {
  110. var sex_map = {
  111. '1': '男',
  112. '2': '女'
  113. },
  114. birthday = new Date(data.cusBrithday),
  115. year = birthday.getFullYear(),
  116. month = birthday.getMonth() + 1,
  117. day = birthday.getDate(),
  118. now = new Date(),
  119. now_year = now.getFullYear(),
  120. now_month = now.getMonth() + 1,
  121. now_day = now.getDate(),
  122. age;
  123. age = now_year - year;
  124. if (now_month > month) {
  125. age += 1;
  126. } else if (now_month === month) {
  127. if (now_day >= day) {
  128. age += 1;
  129. }
  130. }
  131. return {
  132. 'name': data.cusName,
  133. 'sex': sex_map[data.cusSex] ? sex_map[data.cusSex] : '未知',
  134. 'identity': data.cusIdentity,
  135. 'phone': data.cusPhone,
  136. 'birthday': year + '-' + month + '-' + day + '|' + age + '岁',
  137. 'body': (data.cusHeight ? (data.cusHeight + 'cm|') : '') + (data.cusWeight ? (data.cusWeight + 'kg|') : '') + data.cusBim,
  138. 'liveAddress': data.cusLiveAddress,
  139. 'workUnit': data.cusWork
  140. }
  141. }
  142. //初始化个人基本信息
  143. function initPersonInfo(data) {
  144. var $personal = $('#personal'),
  145. $tds = $personal.children('.wrapper').find('td');
  146. $tds.filter('[data-type=name]').text(addInfo(data.name));
  147. $tds.filter('[data-type=sex]').text(addInfo(data.sex));
  148. $tds.filter('[data-type=birthday]').text(addInfo(data.birthday));
  149. $tds.filter('[data-type=identity]').text(addInfo(data.identity));
  150. $tds.filter('[data-type=phone]').text(addInfo(data.phone));
  151. $tds.filter('[data-type=body]').text(addInfo(data.body));
  152. $tds.filter('[data-type=work-unit]').text(addInfo(data.workUnit));
  153. $tds.filter('[data-type=live-address]').text(addInfo(data.liveAddress));
  154. }
  155. function genMedHistoryInfoData(data) {
  156. return {
  157. 'pastInfo': data.pastInfoList,
  158. 'medicineInfo': data.medicineInfoList,
  159. 'mainQuestion': data.complicatInfoList
  160. }
  161. }
  162. function separate(str) {
  163. return str.replace(/;;|;;/,';');
  164. }
  165. //初始化病史信息
  166. function initMedHistoryInfo(data) {
  167. var $medical_history = $('#medical-history'),
  168. $tds = $medical_history.children('.wrapper').find('td'),
  169. arr = [undefined, [], [], [], []],
  170. medication = [],
  171. main_question = [];
  172. if (!data.pastInfo && !data.medicineInfo && !data.mainQuestion) {
  173. return;
  174. }
  175. $.each(data.pastInfo, function (i, v) {
  176. var date='';
  177. if(v.recordDate){
  178. var data=new Date(v.recordDate);
  179. date+='('+data.getFullYear()+'-'+(data.getMonth()+1)+'-'+data.getDate()+')';
  180. }
  181. arr[v.pastType].push(date+v.pastSummary);
  182. });
  183. $.each(data.medicineInfo, function (i, v) {
  184. medication.push(v.drugName);
  185. });
  186. $.each(data.mainQuestion, function (i, v) {
  187. main_question.push(v.disName);
  188. });
  189. $tds.filter('[data-type=post]').text(separate((addInfo(arr[1].join(';')))));
  190. $tds.filter('[data-type=family]').text(separate(addInfo(arr[2].join(';'))));
  191. $tds.filter('[data-type=allergy]').text(separate(addInfo(arr[3].join(';'))));
  192. $tds.filter('[data-type=other]').text(separate(addInfo(arr[4].join(';'))));
  193. $tds.filter('[data-type=medication]').text(separate(addInfo(medication.join(';'))));
  194. $tds.filter('[data-type=main-question]').text(separate(addInfo(main_question.join(';'))));
  195. $medical_history.show();
  196. }
  197. //初始化就诊记录
  198. function initMedRec(data) {
  199. var $recording = $('<div class="recording-info"><div class="date-title"><p>' + data.time.split(' ')[0] + '</p></div></div>'),
  200. $content = $('<div class="content"></div>'),
  201. $group, $group_content;
  202. if (data.hpis.length) {
  203. $group = $('<div class="group"></div>');
  204. $group.append('<p class="title">' + '【现病史】' + '</p>');
  205. var str = '';
  206. $.each(data.hpis, function (i, v) {
  207. str += v;
  208. });
  209. $group.append('<p class="content" style="margin-left: ' + (byteLen('【现病史】') * 6) + 'px">' + str.replace(/#/g,'') + '</p>');
  210. $content.append($group);
  211. }
  212. if (data.vitals.length) {
  213. $group = $('<div class="group"></div>');
  214. $group.append('<p class="title">' + '【体征】' + '</p>');
  215. str = '';
  216. $.each(data.vitals, function (i, v) {
  217. str += v;
  218. });
  219. $group.append('<p class="content" style="margin-left: ' + (byteLen('【体征】') * 6) + 'px">' + str.replace(/#/g,'') + '</p>');
  220. $content.append($group);
  221. }
  222. // if (data.lisesStr.length) {
  223. // $group = $('<div class="group assay"></div>');
  224. // $group.append('<p class="title">' + '【化验】' + '</p>');
  225. // $group_content = $('<p class="content" style="margin-left: ' + (byteLen('【化验】') * 6) + 'px"></p>');
  226. // $group.append($group_content);
  227. // $.each(data.lisesStr, function (i, v) {
  228. // if (v.type === '1') {
  229. // $group_content.append('<p>' + v.name + '<span class="space"></span>' + v.val + v.unit + '<span class="space"></span>(正常值:' + Number(v.minVal).toFixed(2) + '--' + Number(v.maxVal).toFixed(2) + ')</p>');
  230. // } else if (v.type === '2') {
  231. // $group_content.append('<p>' + v.name + '<span class="space"></span>' + v.val + '<span class="space"></span></p>');
  232. // }
  233. // });
  234. // $content.append($group);
  235. // }
  236. if (data.lisesStr.length) {
  237. $group = $('<div class="group"></div>');
  238. $group.append('<p class="title">' + '【化验】' + '</p>');
  239. $.each(data.lisesStr, function (i, v) {
  240. $group.append('<p class="content" style="margin-left: ' + (byteLen('【化验】') * 6) + 'px">' + v.replace(/#/g,'') + '</p>');
  241. });
  242. $content.append($group);
  243. }
  244. if (data.pacses.length) {
  245. $group = $('<div class="group"></div>');
  246. $group.append('<p class="title">' + '【辅检】' + '</p>');
  247. $group_content = $('<p class="content" style="margin-left: ' + (byteLen('【辅检】') * 6) + 'px"></p>');
  248. $group.append($group_content);
  249. $.each(data.pacses, function (i, v) {
  250. $group_content.append('<p>' + v + '</p>');
  251. });
  252. $content.append($group);
  253. }
  254. $recording.append($content);
  255. if (data.intervenes) {
  256. var arr = data.intervenes.split('#');
  257. arr.pop();
  258. $group = $('<div class="group"></div>');
  259. $group.append('<p class="title">' + '【干预建议】' + '</p>');
  260. $group_content = $('<p class="content" style="margin-left: ' + (byteLen('【干预建议】') * 6) + 'px"></p>');
  261. $group.append($group_content);
  262. $.each(arr, function (i, v) {
  263. var one_arr = v.split(':'),
  264. title_w = byteLen(one_arr[0]) * 7,
  265. $title = $('<p data-re="y" style="position: absolute;left: 72px;">' + one_arr[0] + ':</p>'),
  266. str = '';
  267. $group_content.append($title);
  268. if (one_arr.length > 1) {
  269. var son_arr = one_arr[1].split('&&');
  270. for (var i = 0, len = son_arr.length; i < len; i++) {
  271. var _str = son_arr[i];
  272. str += _str + '<br/>';
  273. }
  274. }
  275. $group_content.append('<p style="padding-left: ' + title_w + 'px">' + str + '</p>');
  276. });
  277. $content.append($group);
  278. }
  279. return $recording;
  280. function byteLen(target) {
  281. var byteLength = target.length, i = 0;
  282. for (; i < byteLength; i++) {
  283. if (target.charCodeAt(i) > 255) {
  284. byteLength++;
  285. }
  286. }
  287. return byteLength;
  288. }
  289. }
  290. //创建就诊信息
  291. function genMedInfo(data) {
  292. var $medical_records = $('#medical-records'),
  293. $recordings = $(),
  294. $wrapper = $medical_records.find('.recording-wrapper');
  295. if (data.length === 0) {
  296. return;
  297. }
  298. $.each(data, function (i, v) {
  299. $recordings = $recordings.add(initMedRec(v));
  300. });
  301. $wrapper.append($recordings);
  302. $medical_records.show();
  303. $recordings.find('p[data-re=y]').each(function () {
  304. var $p = $(this);
  305. $p.css('top', $p.next().position().top);
  306. });
  307. }
  308. function initMedRec2(details, time) {
  309. if (!details.length) {
  310. return null;
  311. }
  312. var arr = [[], [], [], [], [], [], [], [], [], []];
  313. var title_arr = ['【主诉】', '【现病史】', '【既往史】', '【其他史】', '【体征】', '【化验】', '【辅检】', '【诊断】', '【治疗】', '【干预建议】']
  314. var date = new Date(time);
  315. var $recording = $('<div class="recording-info"><div class="date-title"><p>' + (date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate()) + '</p></div></div>'),
  316. $content = $('<div class="content"></div>');
  317. $.each(details, function (i, v) {
  318. arr[v.type].push(v.itemDescribe);
  319. });
  320. $.each(arr, function (i, v) {
  321. if (!v.length) {
  322. return;
  323. }
  324. $content.append('<div class="group"><p class="title">' + title_arr[i] + '</p><p class="content">' + v.join(';') + '</p></div>')
  325. });
  326. $recording.append($content);
  327. return $recording;
  328. }
  329. function genMedInfo2(data) {
  330. var $medical_records = $('#medical-records'),
  331. $recordings = $(),
  332. $wrapper = $medical_records.find('.recording-wrapper');
  333. if (data.length === 0) {
  334. return;
  335. }
  336. $.each(data, function (i, v) {
  337. $recordings = $recordings.add(initMedRec2(v.details, v.clinicTime));
  338. });
  339. $wrapper.append($recordings);
  340. $medical_records.show();
  341. }
  342. //初始化整个页面
  343. function init() {
  344. var url_obj = (function () {
  345. var r = window.location.search.substr(1).split("&"),
  346. obj = {};
  347. $.each(r, function (i, v) {
  348. if (v) {
  349. var arr = v.split("=");
  350. obj[arr[0]] = arr[1];
  351. }
  352. });
  353. return obj;
  354. })();
  355. $.getJSON(HOST + '/ch/customer/get_customer_info_by_patient_id', {
  356. patientId: url_obj.patientId,
  357. hospitalId: url_obj.hospitalId
  358. }, function (res) {
  359. var data = res.data;
  360. initPersonInfo(genPersonInfoData(data));
  361. initMedHistoryInfo(genMedHistoryInfoData(data));
  362. genIndicatorInfo(genDrawData(data.map));
  363. });
  364. $.getJSON(HOST + '/chronic_controller/get_record_info', {
  365. patId: url_obj.patientId,
  366. hospitalId: url_obj.hospitalId
  367. }, function (res) {
  368. var data = res.data;
  369. if (data.recodeType === 1) {
  370. genMedInfo(data.recodeList);
  371. } else if (data.recodeType === 2) {
  372. genMedInfo2(data.recodeList);
  373. }
  374. });
  375. }
  376. init();
  377. })(jQuery);