drugs.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. var request = getRequest(),
  2. fv_id = request.fv_id,
  3. pro_id = request.pro_id,
  4. title = request.title,
  5. fv_class = request.fv_class,
  6. patiCode = request.patiCode;
  7. var docInfo = window.localStorage.getItem('docInfo');
  8. if(docInfo){
  9. docInfo = JSON.parse(docInfo);
  10. }
  11. $(function(){
  12. initPage();
  13. bindEvents();
  14. })
  15. function initPage(){
  16. var params = {
  17. id: fv_id
  18. };
  19. followupAPI.getFollowupDrugs(params).then(function(res){
  20. if(res.status == 200){
  21. var data = res.data.DRUG_LIST,
  22. regular = res.data.DRUG_COMPLIANCE_CODE,
  23. hasInsulin=[],
  24. noInsulin=[];
  25. if(data.length>0){
  26. for(var i=0;i<data.length;i++){
  27. var unitInfo = _.findWhere(measure_unit_dict, {key: data[i].unit}),
  28. frequency = _.findWhere(recipe_frequency_dict, {key: data[i].frequency});
  29. data[i].unitName = unitInfo.name;
  30. data[i].frequencyName = frequency.name;
  31. if(data[i].drugsGroup == 'insulin'){//胰岛素药品
  32. hasInsulin.push(data[i])
  33. }else{
  34. noInsulin.push(data[i])
  35. }
  36. }
  37. }
  38. var hasInsulinLen = hasInsulin.length,
  39. noInsulinLen = noInsulin.length,
  40. noInsulinEmptyList = new Array(6 - noInsulinLen), //非胰岛素药品最多只能增加6种
  41. hasInsulinEmptyList = new Array(3 - hasInsulinLen); //胰岛素药品最多只能增加3种
  42. var html1 = template("drug_tmp", {dataList: noInsulin, emptyList: noInsulinEmptyList}),
  43. html2 = template("drug_tmp", {dataList: hasInsulin, emptyList: hasInsulinEmptyList});
  44. $("#table1 tbody").append(html1);
  45. $("#table2 tbody").append(html2);
  46. initDrugNameSuggestInput();
  47. initUnitInput();
  48. initFreqSuggestInput();
  49. }else{
  50. showErrorMsg(res.msg);
  51. }
  52. })
  53. }
  54. function bindEvents(){
  55. $(".link-red").on("click", function(){
  56. layer.confirm('您确定要清空用药信息吗?', {
  57. btn: ['是的','取消'], //按钮
  58. shade: false //不显示遮罩
  59. }, function(){
  60. //清空数据
  61. clearDrugsInfo();
  62. });
  63. });
  64. $("#getPrescription").on("click", function(){
  65. //弹出层是加载在top上的,目前项目的top层是index.html页面层。所以路径需要相对index.html页面
  66. top.layer.open({
  67. type: 2,
  68. type: 2,
  69. title: '<img src="img/shezi_tankuang_icon.png" class="mr10">用药记录',
  70. shadeClose: true,
  71. area: ['700px', '500px'],
  72. content: '/PC-prescription/page/followup/followup-prescriptions.html'+location.search
  73. });
  74. });
  75. $("#submitBtn").on("click", function(){
  76. //保存
  77. var complianceCode = $("[name=DRUG_COMPLIANCE_CODE]").val(),
  78. $trs1 = $("#table1 tbody tr"),
  79. $trs2 = $("#table2 tbody tr"),
  80. drugs = [];
  81. for(var i=0; i<6; i++){
  82. var $tr = $($trs1[i]),
  83. $drug = $tr.find(".j-drugName"),
  84. $dose = $tr.find(".dose"),
  85. $unit = $tr.find(".unit-select"),
  86. $freq = $tr.find(".frequency-select");
  87. var obj = {},
  88. drugsGroup = 'normal',
  89. drugsCode = $drug.attr("data-id"),
  90. drugsName = $drug.val(),
  91. frequency = $freq.attr("data-id"),
  92. unit = $unit.attr("data-id"),
  93. dose = $dose.val();
  94. if(drugsCode && drugsName && dose && unit && frequency){
  95. obj = {
  96. drugsGroup : 'normal',
  97. drugsCode : drugsCode,
  98. drugsName : drugsName,
  99. frequency : frequency,
  100. unit : unit,
  101. dose : dose
  102. };
  103. drugs.push(obj);
  104. }else if(drugsCode || drugsName || dose || unit || frequency){
  105. //如果药品信息中填写了部分,则需要将未填写的内容补全
  106. showWarningMsg("请补全未填写完成的药品信息");
  107. return false;
  108. }
  109. }
  110. for(var j=0; j<3; j++){
  111. var $tr = $($trs2[j]),
  112. $drug = $tr.find(".j-drugName"),
  113. $dose = $tr.find(".dose"),
  114. $unit = $tr.find(".unit-select"),
  115. $freq = $tr.find(".frequency-select");
  116. var obj = {},
  117. drugsGroup = 'insulin',
  118. drugsCode = $drug.attr("data-id"),
  119. drugsName = $drug.val(),
  120. frequency = $freq.attr("data-id"),
  121. unit = $unit.attr("data-id"),
  122. dose = $dose.val();
  123. if(drugsCode && drugsName && dose && unit && frequency){
  124. obj = {
  125. drugsGroup : 'normal',
  126. drugsCode : drugsCode,
  127. drugsName : drugsName,
  128. frequency : frequency,
  129. unit : unit,
  130. dose : dose
  131. };
  132. drugs.push(obj);
  133. }else if(drugsCode || drugsName || dose || unit || frequency){
  134. //如果药品信息中填写了部分,则需要将未填写的内容补全
  135. showWarningMsg("请补全未填写完成的药品信息");
  136. return false;
  137. }
  138. }
  139. if(complianceCode == "undefined"){
  140. complianceCode = "";
  141. }
  142. var followupProjectData = {'DRUG_COMPLIANCE_CODE': complianceCode};
  143. console.log(followupProjectData);
  144. var projectData = {
  145. id: fv_id,
  146. followupProject: pro_id,
  147. followupProjectData: JSON.stringify(followupProjectData)
  148. },
  149. drugData = {
  150. id: fv_id,
  151. drugsData: JSON.stringify(drugs)
  152. };
  153. Promise.all([
  154. followupAPI.saveFollowupProjectData(projectData),
  155. followupAPI.saveFollowupDrugs(drugData)
  156. ]).then(function(ress){
  157. if(ress[0].status == 200 && ress[1].status == 200){
  158. top.goFollowupNextQuestionaire();
  159. }else if(ress[0].status != 200){
  160. showErrorMsg(ress[0].msg);
  161. }else if(ress[1].status != 200){
  162. showErrorMsg(ress[1].msg);
  163. }
  164. })
  165. })
  166. }
  167. function initDrugNameSuggestInput() {
  168. $("input.j-drugName").bsSuggest({
  169. url: APIService.server+'doctor/prescriptionInfo/findDictByName?name=',
  170. getDataMethod:'url',
  171. idField: "drugCode",
  172. keyField: "drugName",
  173. effectiveFields: ['drugName','drugFormat'],
  174. effectiveFieldsAlias:{drugName: "药品名称",drugFormat:"规格"},
  175. ignorecase: true,
  176. fnProcessData: function(res) {
  177. return {
  178. value: res.data
  179. }
  180. }
  181. }).on('onSetSelectValue', function (e, v) {
  182. var rowData = v.json;
  183. rowData = JSON.parse(rowData);
  184. var $tr = $(this).closest("tr"),
  185. $unit = $tr.find(".unit-select");
  186. $unit.val(rowData.physicDoseUnitName);
  187. $unit.attr("data-id", rowData.physicDoseUnit);
  188. })
  189. }
  190. function initFreqSuggestInput(){
  191. $("input.frequency-select").bsSuggest({
  192. data: {value: recipe_frequency_dict},
  193. idField: "key",
  194. keyField: "name",
  195. getDataMethod:'data',
  196. effectiveFields: ['name'],
  197. ignorecase: true
  198. })
  199. }
  200. function initUnitInput(){
  201. $("input.unit-select").bsSuggest({
  202. data: {value: measure_unit_dict},
  203. idField: "key",
  204. keyField: "name",
  205. getDataMethod:'data',
  206. effectiveFields: ['name'],
  207. ignorecase: true
  208. })
  209. }
  210. //清空药品信息
  211. function clearDrugsInfo(){
  212. var $trs = $("tbody tr");
  213. for(var i=0; i<9; i++){
  214. var $tr = $($trs[i]),
  215. $inputs = $tr.find("input"),
  216. len = $inputs.length;
  217. for(var j=0; j<len; j++){
  218. var $input = $($inputs[j]);
  219. $input.val("");
  220. $input.attr("data-id", "");
  221. }
  222. }
  223. }
  224. function fillDrugsInfo(){
  225. //从缓存中获取选中的药品信息
  226. var drugsData = window.sessionStorage.getItem("chooseDrugs");
  227. if(drugsData){
  228. drugsData = JSON.parse(drugsData);
  229. var len = drugsData.length;
  230. if(len == 0){
  231. return false;
  232. }
  233. //先将药品分类
  234. var insulinList = [],
  235. normalList = [];
  236. for(var i=0; i<len; i++){
  237. var obj = drugsData[i];
  238. if(obj.subjectClass.substr(0,2)=='010' && obj.name.indexOf('胰岛素')>0){
  239. //胰岛素药品
  240. insulinList.push(obj);
  241. }else{
  242. normalList.push(obj)
  243. }
  244. }
  245. //如果表格中药品名称没有填写的均可以被覆盖,如果已填写的药品与处方中的药品名称一致,设定为相同药品
  246. var $trs1 = $("#table1 tbody tr"),
  247. $trs2 = $("#table2 tbody tr"),
  248. len1 = normalList.length,
  249. len2 = insulinList.length;
  250. if(len1 > 0){
  251. //填充普通药品
  252. var index1 = 0;
  253. for(var i1=0; i1<6; i1++){
  254. var $tr = $($trs1[i1]),
  255. $drugName = $tr.find(".j-drugName"),
  256. $unit = $tr.find(".unit-select"),
  257. $frequency = $tr.find(".frequency-select");
  258. if($drugName.val() == ''){
  259. if(index1 < len1){
  260. var obj1 = normalList[index1];
  261. $drugName.val(obj1.drugName);
  262. $drugName.attr("data-id", obj1.drugCode);
  263. $tr.find(".dose").val(obj1.physicDose);
  264. $unit.val(obj1.physicDoseUnitName);
  265. $unit.attr("data-id", obj1.physicDoseUnit);
  266. index1 ++;
  267. }else{
  268. break;
  269. }
  270. }else{
  271. var name = $drugName.val();
  272. //如果已经填写了内容,则判断药品名称是否一样
  273. for(var j1=0; j1<len1; j1++){
  274. var obj1 = normalList[j1];
  275. if(name == obj1.drugName){
  276. //从列表中删除这个对象
  277. normalList.splice(j1, 1);
  278. len1 --;
  279. break;
  280. }
  281. }
  282. }
  283. }
  284. }
  285. if(len2 >0){
  286. //填充胰岛素药品
  287. var index2 = 0;
  288. for(var i2=0; i2<6; i2++){
  289. var $tr = $($trs2[i2]),
  290. $drugName = $tr.find(".j-drugName"),
  291. $unit = $tr.find(".unit-select"),
  292. $frequency = $tr.find(".frequency-select");
  293. if($drugName.val() == ''){
  294. if(index2 < len2){
  295. var obj2 = insulinList[index2];
  296. $drugName.val(obj2.drugName);
  297. $drugName.attr("data-id", obj2.drugCode);
  298. $tr.find(".dose").val(obj2.physicDose);
  299. $unit.val(obj2.physicDoseUnitName);
  300. $unit.attr("data-id", obj2.physicDoseUnit);
  301. index2 ++;
  302. }else{
  303. break;
  304. }
  305. }else{
  306. var name = $drugName.val();
  307. //如果已经填写了内容,则判断药品名称是否一样
  308. for(var j2=0; j2<len2; j2++){
  309. var obj2 = normalList[j2];
  310. if(name == obj2.drugName){
  311. //从列表中删除这个对象
  312. insulinList.splice(j2, 1);
  313. len2 --;
  314. break;
  315. }
  316. }
  317. }
  318. }
  319. }
  320. }
  321. }
  322. top.fillChooseDrugs = fillDrugsInfo;