qcScore.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. require("../css/qcScore.less");
  2. const $ = require('jquery');
  3. require('jquery-templates');
  4. require('./modal.js');
  5. const {api,post,getUrlArgObject,setBoxHeight} = require('./utils.js');
  6. const {keyMaps} = require('./maps.js');
  7. const {wardRound,preoperation,summary,operationRecord,applicationForm,resultForm,consultationNote,difficultRecord} = require("./qcScore_byll.js")
  8. //本页全局变量
  9. let global_flawData = {}; //缺陷数据
  10. const global_id=getUrlArgObject("id");
  11. const global_age = getUrlArgObject("age");
  12. let global_activeTab=$(".sub-menu .page.active").attr("code"); //当前激活菜单项
  13. $(function(){
  14. //getSubMenu();
  15. //initScoreItem();
  16. getRecordDetail();
  17. function initMenu(data){
  18. //菜单数据填充
  19. $("#subMenuTmpl").tmpl(data).appendTo("#subMenu");
  20. //菜单收起展开
  21. $(".list-1").on("click",function(){
  22. $(".list-1 .slide-up").removeClass('slide-up');
  23. $(this).toggleClass('slide-up');
  24. $(this).find("ul").slideToggle();
  25. });
  26. $(".list-1 li").on("click",function(e){
  27. e.stopPropagation();
  28. });
  29. //右侧内容切换
  30. $(".page").on("click",function(){
  31. //选中样式
  32. $(".sub-menu .active").removeClass('active');
  33. $(this).addClass("active");
  34. //显示对应内容
  35. const code=$(this).attr("code");
  36. global_activeTab=code;
  37. $(".content-item,.flaw-item").hide();
  38. $(".content-item[code='"+code+"']").show();
  39. showFlawList();
  40. });
  41. }
  42. //获取病例明细
  43. function getRecordDetail(){
  44. post(api.getRecordDetail,{'behospitalCode':global_id}).then(function(res){
  45. if(res.data.code==='0'){
  46. const data = res.data.data;
  47. const {beHospital,result,msg} = data;
  48. const info=Object.assign(beHospital,result);
  49. initMenu(JSON.parse(result.menuData));
  50. $(".sub-menu>ul>li:first-child.page").addClass("active");
  51. global_activeTab=$(".sub-menu .page.active").attr("code");
  52. initPatientInfo(info);
  53. initContent(result.pageData);
  54. setBoxHeight();
  55. initScoreItem(msg);
  56. global_flawData=msg;
  57. let obj = JSON.parse(result.pageData)
  58. wardRound(obj['查房记录'],'查房记录')
  59. preoperation(obj['术前讨论、术前小结'],'术前讨论、术前小结')
  60. summary(obj['阶段小结'],'阶段小结')
  61. operationRecord(obj['手术记录'],'手术记录')
  62. applicationForm(obj['会诊申请单'],'会诊申请单')
  63. resultForm(obj['会诊结果单'],'会诊结果单')
  64. consultationNote(obj['会诊记录'],'会诊记录')
  65. difficultRecord(obj['疑难病例讨论记录'],'疑难病例讨论记录')
  66. }
  67. });
  68. }
  69. //填充患者信息
  70. function initPatientInfo(data){
  71. const date = data.birthday.substr(0,10);
  72. const age=new Date(date).getTime()/(365*24*60*60*1000);
  73. const obj=Object.assign({},data,{age:global_age});
  74. $("#infoTmpl").tmpl(obj).appendTo("#patientInfo");
  75. }
  76. //显示病例模块明细
  77. function initContent(data){
  78. const obj = JSON.parse(data);
  79. let info=[];
  80. let nameMap={
  81. "入院记录":"#inHisTmpl",
  82. "出院小结":"#outHisTmpl",
  83. "病案首页":"#indexTmpl",
  84. "手术知情同意书":"#surgeryBookTmpl",
  85. "首次病程录":"#firstCourseTmpl",
  86. "病危通知书":"#illnessNoticeTmpl",
  87. "抢救记录":"#rescueRecordTmpl",
  88. "术后首次病程及谈话记录":"#surgeryAfRecord",
  89. "危急值记录":"#dangerRecore",
  90. "输血/血制品病程记录":"#transfusionRecordTmpl",
  91. "输血后效果评价":"#transfusionEvaluateTmpl",
  92. "死亡记录":"#deathRecordTmpl",
  93. "死亡病例讨论记录":"#discusionAboutDeathTmpl",
  94. "病理检验送检单":"#pathologicTestTmpl"
  95. };
  96. for(let k in obj){
  97. for(let i in obj[k]){
  98. info=formatInfoData(k,obj[k][i]);
  99. nameMap[k]&&Object.keys(obj[k][i]).length !== 0 &&$(nameMap[k]).tmpl(info).appendTo("#contentInfo");
  100. }
  101. }
  102. if(obj["病案首页"][0]["出院诊断"]){
  103. const diag = JSON.parse(obj["病案首页"][0]["出院诊断"]);
  104. $("#tableTmpl").tmpl({k:"出院诊断",data:diag}).appendTo("#diagTable");
  105. }
  106. if(obj["病案首页"][0]["手术信息"]){
  107. const diag = JSON.parse(obj["病案首页"][0]["手术信息"]);
  108. $("#tableTmpl").tmpl({k:"手术信息",data:diag}).appendTo("#surgeryTable");
  109. }
  110. $(".content-item[code="+global_activeTab+"]").show();
  111. console.log(obj)
  112. }
  113. function formatInfoData(k,data){
  114. let obj = {},name="";
  115. for(let i in data){
  116. name=i.replace(/[^\u4e00-\u9fa5|a-zA-Z0-9]+/g,""); //过滤key中存在的特殊符号,模板会渲染不出来且不报错
  117. obj[name]=data[i]||"";
  118. }
  119. return Object.assign({title:k},obj);
  120. }
  121. /*function formatData(data,title){
  122. if(!keyMaps[title]){
  123. return data;
  124. }
  125. const keyArr=Object.keys(keyMaps[title]);
  126. let obj={};
  127. keyArr.map((k)=>{
  128. obj[keyMaps[title][k]]=data[0][k]||"";
  129. });
  130. const obj1=Object.assign({},obj,data[0]);
  131. return [obj1];
  132. }*/
  133. //评分项数据填充
  134. function initScoreItem(data){
  135. $("#flaws .flaw-box").html("");
  136. for(let k in data){
  137. $("#flawTmpl").tmpl(data[k]).appendTo("#flaws .flaw-box");
  138. }
  139. showFlawList();
  140. $(".flaw-item .oper a").click(function () {
  141. const i = $(".flaw-item[code="+global_activeTab+"]").index($(this).parents(".flaw-item"));
  142. const code=$(this).attr("code");
  143. const isEdit = $(this).is(".edit-flaw");
  144. showModal(isEdit?'0':'1',code,i);
  145. })
  146. }
  147. //显示缺陷列表
  148. function showFlawList(){
  149. const hml = $(".flaw-item[code="+global_activeTab+"]");
  150. if(hml.length){
  151. hml.show();
  152. $("#flaws .empty").hide();
  153. }else{
  154. $("#flaws .empty").length?$("#flaws .empty").show():$("#emptyTmpl").tmpl().appendTo("#flaws .flaw-box");
  155. }
  156. }
  157. //删除评分项
  158. function delScore(id){
  159. const param={
  160. 'behospitalCode':global_id,
  161. 'optResultAlgVO':{
  162. 'id':id
  163. }
  164. };
  165. post(api.delScore,param).then(function(res){
  166. if(res.data.code==='0'){
  167. $("#delModal").hide();
  168. updateFlaws(res.data.data);
  169. $.alerModal({"message":"删除成功",type:"tip",time:'1000'});
  170. }
  171. });
  172. }
  173. //修改评分项
  174. function editScore(info){
  175. const param={
  176. "behospitalCode": global_id,
  177. "optResultAlgVO": info
  178. };
  179. post(api.editScore,param).then(function(res){
  180. if(res.data.code==='0'){
  181. $("#delModal").hide();
  182. updateFlaws(res.data.data);
  183. $.alerModal({"message":"修改成功",type:"tip",time:'1000'});
  184. }
  185. });
  186. }
  187. //显示删除/修改弹窗
  188. function showModal(flag,code,i){
  189. $("#delModal .modal-body").html("");
  190. $("#delModal").show();
  191. //事件解绑
  192. $("#delModal .confirm").off("click");
  193. $("#qcScore,#qcMsg").off("input");
  194. const info = global_flawData[global_activeTab][i];
  195. if(flag==='0'){ //修改
  196. $("#delModal .title").text("修改");
  197. $("#editTmpl").tmpl(info).appendTo("#delModal .modal-body");
  198. //分数输入验证
  199. $("#qcScore").on("input",function(){
  200. const val=$(this).val();
  201. if(/^[0-9]\d*$|^[0-9]\d*(.\d)?$/.test(val)){
  202. $(".edit-box .warning").hide();
  203. }else{
  204. $(".edit-box .warning .red").text("支持≥0的数字输入,最多保留小数点后1位~");
  205. $(".edit-box .warning").show();
  206. }
  207. });
  208. //提示信息输入验证
  209. $("#qcMsg").on("input",function(){
  210. const val=$(this).val();
  211. if(val.trim()){
  212. $(".edit-box .warning").hide();
  213. }else{
  214. $(".edit-box .warning .red").text("提示信息不能为空~");
  215. $(".edit-box .warning").show();
  216. }
  217. });
  218. $("#delModal .confirm").click(function(){
  219. if($(".edit-box .warning").is(":visible")){
  220. return;
  221. }
  222. const obj = Object.assign({},info,{msg:$("#delModal #qcMsg").val(),score:$("#delModal #qcScore").val()});
  223. editScore(obj);
  224. });
  225. }else{
  226. $("#delModal .title").text("删除评分");
  227. $("#delModal .modal-body").html('<p>确定要删除该评分记录吗?</p>');
  228. $("#delModal .confirm").click(function(){
  229. delScore(code,info);
  230. });
  231. }
  232. }
  233. //更新缺陷列表
  234. function updateFlaws(info){
  235. $("#patientInfo .level").text("质控等级:"+info.level);
  236. $("#patientInfo .score").text("质控得分:"+info.scoreRes);
  237. const param = {
  238. 'behospitalCode':global_id,
  239. 'paramStr':[
  240. "msg"
  241. ]
  242. };
  243. post(api.getRecordDetail,param).then(function(res){
  244. if(res.data.code==='0'){
  245. const data = res.data.data;
  246. const {msg} = data;
  247. initScoreItem(msg);
  248. global_flawData=msg;
  249. }
  250. });
  251. }
  252. });