infusion.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831
  1. "use strict";
  2. /**
  3. * mplus_safety_infusion
  4. */
  5. var mplus_safety_infusion = function(){
  6. // 상속
  7. mplus_common.call(this);
  8. // 상위 객체 생성
  9. //var mplusPatient = new mplus_mobile_patient();
  10. //var mplusNursing = new mplus_nursing();
  11. //super
  12. var self = this;
  13. //==== 변수 { ====
  14. // column 정렬의 토글 상태 제어용 : 0: not selected, 1:오름차순, 2:내림차순
  15. var varToggleCol1 = 0;
  16. var varToggleCol2 = 0;
  17. var varToggleCol3 = 0;
  18. var varToggleCol4 = 0;
  19. var varToggleCol5 = 0;
  20. var varToggleCol6 = 0;
  21. var varToggleCol7 = 0;
  22. var varToggleCol8 = 0;
  23. var varResultLists = [];
  24. var varSearchCls = "OP";// 조회구분(I:입원, O:외래, E:응급, OP:수술, T:시술, C:협진)
  25. var varSearchDateGap = 2; // 날짜검색 간격
  26. //투약번호 Length처리
  27. var inputInfusionLength = 0;
  28. var sliderCapacity = $("#sliderCapacity");
  29. var sliderDisCapacity = $("#sliderDisCapacity");
  30. //==== 변수 } ====
  31. /**
  32. * 초기화
  33. */
  34. this.init = function(){ //여기서 모든화면 콤보박스데이터를 집어넣자!!! 그래야지 화면이동할때 속도가 오래걸리지않음!!!
  35. // 접근 권한 체크
  36. checkAccessPermission();
  37. // 초기 화면 조건 구성
  38. initCondition();
  39. // 이벤트 초기화
  40. addEvent();
  41. // 환자 검색 실행 및 환자 정보 화면 출력
  42. //searchPatient();
  43. $("#txtInfusionPatientSearchTxt").focus();
  44. };
  45. //==== 접근 권한 체크 { ====
  46. var checkAccessPermission = function(){
  47. //if( !self.common.checkAccessJobKind( "1000")){
  48. // self.alertTrue("접근 권한이 없습니다.", self.common.gotoDefaultHomePage);
  49. //}
  50. //if( !self.common.checkAccessUserAuth( "01")){
  51. // self.alertTrue("접근 권한이 없습니다.", self.common.gotoDefaultHomePage);
  52. //}
  53. //self.common.disableElements( $("#myModalBtn"));
  54. };
  55. //==== 접근 권한 체크 } ====
  56. //==== 초기화 설정 { ====
  57. var initCondition = function(){
  58. // 초기 화면 조건 구성
  59. //환자정보 초기화
  60. initPatientInfo();
  61. //slider 초기화
  62. sliderCapacity.slider({ value: 100 });
  63. $("#txtInfusionSize").val(sliderCapacity.val());
  64. sliderDisCapacity.slider({ value: 100 });
  65. $("#txtInfusionDisSize").val(sliderDisCapacity.val());
  66. // 종료 날짜를 현재 날짜로 등록
  67. var varCurDate = new Date();
  68. var strCurDate = self.util.toDate( new Date());
  69. $("#dateInfusionEndDt").val( strCurDate);
  70. // 시작 날짜를 날짜 검색 간격 전 날짜를 등록
  71. var var2DaysAgo = varCurDate;
  72. var2DaysAgo.setDate( varCurDate.getDate() - varSearchDateGap);
  73. var str2DaysAgo = self.util.toDate( var2DaysAgo);
  74. //$("#dateOppatientStartDt").val( str2DaysAgo);
  75. $("#dateInfusionStartDt").val( str2DaysAgo);
  76. };
  77. //환자 정보 초기화
  78. var initPatientInfo = function(){
  79. //$("#divResultRows").empty();
  80. //투약 실행 버튼
  81. $("#btnInputInfusionAct").attr("disabled" , true);
  82. $(".modal-patient-name").text("-");
  83. $(".modal-patient-id").text("-");
  84. $(".modal-patient-age-gender").text("-");
  85. $(".modal-patient-treat-cls").text("-");
  86. };
  87. //투약실시 초기화
  88. var initInputInfusion = function(){
  89. $("#infusionActionNum").empty();
  90. //CheckBoxLength 초기화
  91. inputInfusionLength = 0;
  92. //처방번호 체크
  93. for(var fCnt = 0 ; fCnt < varResultLists.length ; fCnt++){
  94. if($("#checkInfusionSel" + fCnt).is(":checked")){
  95. var tempSpan = "<p>"
  96. + "<span id=\"spanInputInfusionNum" + inputInfusionLength +"\" style=\"color:red;\">" + varResultLists[fCnt].col6 + "</span>"
  97. + "&nbsp;&nbsp;<button type=\"button\" name=\"button\" class=\"btn btn-primary classBtnInPutActBarcode\" btnLength=\"" + inputInfusionLength + "\" id=\"btnInPutActBarcode" + inputInfusionLength + "\" style=\"color: #ffffff;background: #0067a1;text-align: center;\">"
  98. + "<span style=\"color:white;\">⊙</span>"
  99. + "</button><p/>";
  100. $("#infusionActionNum").append(tempSpan);
  101. inputInfusionLength++;
  102. //시작 종료 버튼 처리
  103. if(varResultLists[fCnt].col11 == "Y"){
  104. $("#btnInfusionAct").attr("disabled" , true);
  105. }else{
  106. $("#btnInfusionAct").attr("disabled" , false);
  107. }
  108. if(varResultLists[fCnt].col12 == "Y"){
  109. $("#btnInfusionEnd").attr("disabled" , true);
  110. }else{
  111. $("#btnInfusionEnd").attr("disabled" , false);
  112. }
  113. }
  114. }
  115. eventMakeBarcodeCondition();
  116. };
  117. //바코드 리딩 후 투약실시 초기화
  118. var initBarcodeInputInfusion = function(barcodeData){
  119. $("#infusionActionNum").empty();
  120. //CheckBoxLength 초기화
  121. inputInfusionLength = 0;
  122. //처방번호 체크
  123. for(var fCnt = 0 ; fCnt < varResultLists.length ; fCnt++){
  124. if(varResultLists[fCnt].col6 == barcodeData){
  125. var tempSpan = "<p>"
  126. + "<span id=\"spanInputInfusionNum" + inputInfusionLength +"\" style=\"color:blue;\">" + varResultLists[fCnt].col6 + "</span>"
  127. //+ "&nbsp;&nbsp;<button type=\"button\" name=\"button\" class=\"btn btn-primary classBtnInPutActBarcode\" btnLength=\"" + inputInfusionLength + "\" id=\"btnInPutActBarcode" + inputInfusionLength + "\" style=\"color: #ffffff;background: #0067a1;text-align: center;\">"
  128. //+ "<span style=\"color:white;\">⊙</span></button>"
  129. + "<p/>";
  130. $("#infusionActionNum").append(tempSpan);
  131. inputInfusionLength++;
  132. //시작 종료 버튼 처리
  133. if(varResultLists[fCnt].col11 == "Y"){
  134. $("#btnInfusionAct").attr("disabled" , true);
  135. }else{
  136. $("#btnInfusionAct").attr("disabled" , false);
  137. }
  138. if(varResultLists[fCnt].col12 == "Y"){
  139. $("#btnInfusionEnd").attr("disabled" , true);
  140. }else{
  141. $("#btnInfusionEnd").attr("disabled" , false);
  142. }
  143. return true;
  144. }
  145. }
  146. return false;
  147. //eventMakeBarcodeCondition();
  148. };
  149. // 환자정보 요청
  150. var getPatientInfo = function(){
  151. var param = {
  152. userId: $("#txtInfusionPatientSearchTxt").val(),
  153. patientId: "",
  154. receiptNo: "",
  155. treatCls: "I"
  156. };
  157. self.medical.getPatientInfo(param, processGetPatientInfo);
  158. };
  159. // 투약 목록을 처리
  160. var processGetPatientInfo = function( lists){
  161. $(".modal-patient-name").text(lists[0].patientNm);
  162. $(".modal-patient-id").text(lists[0].patientId);
  163. $(".modal-patient-age-gender").text(lists[0].age + " / " + lists[0].gender);
  164. $(".modal-patient-treat-cls").text("입원");
  165. getInfusionList();
  166. $("#txtInfusionNumberSearchTxt").focus();
  167. };
  168. // 투약실시
  169. var inputStartInfusion = function(){
  170. var params = {param: []};
  171. for(var fCnt = 0 ; fCnt < inputInfusionLength ; fCnt++){
  172. params.param.push({
  173. param1: $("#spanInputInfusionNum" + fCnt).text(),
  174. param2: "20190101",
  175. param3: "121212",
  176. param4: "aaa",
  177. param5: $("#txtInfusionSize").val()
  178. });
  179. }
  180. self.safety.inputStartInfusion(params, processInputStartInfusion);
  181. };
  182. // 투약종료
  183. var inputEndInfusion = function(){
  184. var params = {param: []};
  185. for(var fCnt = 0 ; fCnt < inputInfusionLength ; fCnt++){
  186. params.param.push({
  187. param1: $("#spanInputInfusionNum" + fCnt).text(),
  188. param2: "20190101",
  189. param3: "121212",
  190. param4: "aaa",
  191. param5: $("#txtInfusionDisSize").val()
  192. });
  193. }
  194. self.safety.inputStartInfusion(params, processInputEndInfusion);
  195. };
  196. var processInputStartInfusion = function(lists){
  197. if(lists != undefined && lists.length > 0){
  198. var inputCnt = 0;
  199. for(var fCnt = 0 ; fCnt < lists.length ; fCnt++){
  200. if(lists[fCnt].returnCd == "0000"){
  201. inputCnt++;
  202. }
  203. }
  204. self.alert(inputCnt + "건 처리되었습니다.");
  205. //데이터 초기화
  206. $("#mplusAlertInfusionAction").modal("hide");
  207. initPatientInfo();
  208. getPatientInfo();
  209. $("#txtInfusionNumberSearchTxt").focus();
  210. }else{
  211. self.alert("처리중 오류가 발생했습니다.");
  212. }
  213. };
  214. var processInputEndInfusion = function(lists){
  215. if(lists != undefined && lists.length > 0){
  216. var inputCnt = 0;
  217. for(var fCnt = 0 ; fCnt < lists.length ; fCnt++){
  218. if(lists[fCnt].returnCd == "0000"){
  219. inputCnt++;
  220. }
  221. }
  222. self.alert(inputCnt + "건 처리되었습니다.");
  223. //데이터 초기화
  224. $("#mplusAlertInfusionAction").modal("hide");
  225. initPatientInfo();
  226. getPatientInfo();
  227. $("#txtInfusionNumberSearchTxt").focus();
  228. }else{
  229. self.alert("처리중 오류가 발생했습니다.");
  230. }
  231. };
  232. var checkInputInfusionData = function(){
  233. if($("#dateInfusionActionDate").val() == ""){
  234. self.alert("투약일을 입력해주세요.");
  235. return false;
  236. } else if($("#dateInfusionActionTime").val() == "") {
  237. self.alert("투약시간을 입력해주세요.");
  238. return false;
  239. }
  240. //바코드 체크
  241. /*
  242. var btnInPutActBarcodeCheck = false;
  243. for(var fCnt = 0 ; fCnt < inputInfusionLength ; fCnt++){
  244. console.log("TEST : " + $("#btnInPutActBarcode" + fCnt).is("[disabled]"));
  245. if(!$("#btnInPutActBarcode" + fCnt).is("[disabled]")){
  246. btnInPutActBarcodeCheck = true;
  247. }
  248. }
  249. if(btnInPutActBarcodeCheck){
  250. self.alert("투약번호 바코드를 확인해주세요.");
  251. return false;
  252. }
  253. */
  254. return true;
  255. };
  256. var settingSetInputInfusion = function(){
  257. $("#dateInfusionActionDate").val(moment(new Date()).format("YYYY-MM-DD"));
  258. $("#dateInfusionActionTime").val(moment(new Date()).format("HH:mm:ss"));
  259. $("#dateInfusionEndDate").val(moment(new Date()).format("YYYY-MM-DD"));
  260. $("#dateInfusionEndTime").val(moment(new Date()).format("HH:mm:ss"));
  261. };
  262. var checkBarcodeNum = function(barcodeNum){
  263. for(var fCnt = 0 ; fCnt < inputInfusionLength ; fCnt++){
  264. if(barcodeNum == $("#spanInputInfusionNum" + fCnt).text()){
  265. $("#spanInputInfusionNum" + fCnt).css("color" , "blue");
  266. $("#btnInPutActBarcode" + fCnt).attr("disabled" , true);
  267. }
  268. }
  269. };
  270. // 투약정보
  271. var getInfusionList = function(){
  272. var param = {
  273. userId: "",
  274. patientId: "",
  275. receiptNo: "",
  276. treatCls: ""
  277. };
  278. self.safety.getInfusionList(param, processGetInfusionList);
  279. };
  280. var processGetInfusionList = function(lists){
  281. varResultLists = lists;
  282. var strDisplayTemp = "";
  283. $("#divResultRows").empty();
  284. if( lists.length == 0){
  285. strDisplayTemp = "<div class=\"row text-center\" style=\"line-height: 60px; vertical-align: middle;\"> 검색 결과가 없습니다. </div>"
  286. + "<div style=\"height: 55vh;\"></div>";
  287. }
  288. for( var i = 0; i < lists.length; i++){
  289. strDisplayTemp += "<div class=\"chart-content well\">"
  290. + " <div class=\"row patient-row\" patientNo=\"" + i + "\" patientId=\"" + lists[i].col1 + "\" patientNm=\"" + lists[i].col2 + "\" age=\"" + lists[i].col2 + "\" gender=\"" + lists[i].col2 + "\" treatCls=\"" + lists[i].col2 + "\" receiptNo=\"" + lists[i].col2 + "\" deptCd=\"" + lists[i].col2.trim() + "\" doctorId=\"" + lists[i].col2 + "\">"
  291. + " <div class=\"col-xs-12\">"
  292. //+ " <div class=\"col-xs-1 text-center\" style=\"padding:0px;\"><input type=\"checkbox\" class=\"form-check-input checkClassInfusionSel\" id=\"checkInfusionSel" + i + "\"></div>"
  293. + " <div class=\"col-xs-2 text-center\" style=\"padding:0px;\">" + moment(lists[i].col1).format("MM-DD") + "</div>"
  294. + " <div class=\"col-xs-1 text-center\" style=\"padding:0px;\">" + lists[i].col2 + "</div>"
  295. + " <div class=\"col-xs-1 text-center\" style=\"padding:0px;\">" + lists[i].col3 + "</div>"
  296. + " <div class=\"col-xs-1 text-center\" style=\"padding:0px;\">" + lists[i].col4 + "</div>"
  297. + " <div class=\"col-xs-7 text-center\" style=\"padding:0px;\">" + lists[i].col5 + "</div>"
  298. + " </div>"
  299. + "</div>"
  300. + "</div>";
  301. //console.log( i + " : " + lists[i].patientId + " : " + lists[i].patientNm);
  302. }
  303. $("#divResultRows").append(strDisplayTemp); // element 추가
  304. eventMakeCondition();
  305. };
  306. //==== 초기화 설정 } ====
  307. //==== 이벤트 설정 { ====
  308. var addEvent = function(){
  309. // 컬럼 클릭의 정렬 이벤트
  310. eventColumnClick();
  311. eventRowClick();
  312. eventCondition();
  313. eventBackBlock();
  314. };
  315. // 20190228 shinsunwoo 환자의 바코드 추출 toNative 호출
  316. var readBarcode = function(barMode){
  317. var callbackFn = "window.activeObj.readBarcodeCallBack";
  318. if(barMode == "search"){
  319. callbackFn = "window.activeObj.readBarcodeCallBack";
  320. }else if(barMode == "check"){
  321. callbackFn = "window.activeObj.readBarcodeCallBackCheck";
  322. }else if(barMode == "number"){
  323. callbackFn = "window.activeObj.readBarcodeCallBackNumber";
  324. }else{
  325. callbackFn = "window.activeObj.readBarcodeCallBack";
  326. }
  327. console.log('call readBarcode');
  328. var msg = {
  329. type : "command",
  330. functionType : "readBarcode",
  331. value : {
  332. callbackFn : callbackFn
  333. }
  334. };
  335. self.toNative( msg );
  336. };
  337. // 20190228 shinsunwoo 환자의 바코드 추출 callback 처리
  338. this.readBarcodeCallBack = function( returnCode){
  339. var results = new Object();
  340. if( typeof returnCode === "string" ){
  341. results = self.util.parseJson( returnCode );
  342. } else {
  343. results = returnCode;
  344. }
  345. if( results.success != undefined && results.success == "true" ) {
  346. console.log("readBarcode : success");
  347. console.log( results.result);
  348. $("#txtInfusionPatientSearchTxt").val(results.result)
  349. getPatientInfo();
  350. } else {
  351. console.log("readBarcode : failed");
  352. self.alert( "readBarcode APP function 호출 오류 " );
  353. }
  354. };
  355. this.readBarcodeCallBackCheck = function( returnCode){
  356. var results = new Object();
  357. if( typeof returnCode === "string" ){
  358. results = self.util.parseJson( returnCode );
  359. } else {
  360. results = returnCode;
  361. }
  362. if( results.success != undefined && results.success == "true" ) {
  363. console.log("readBarcode : success");
  364. console.log( results.result);
  365. checkBarcodeNum(results.result);
  366. } else {
  367. console.log("readBarcode : failed");
  368. self.alert( "readBarcode APP function 호출 오류 " );
  369. }
  370. };
  371. this.readBarcodeCallBackNumber = function( returnCode){
  372. var results = new Object();
  373. if( typeof returnCode === "string" ){
  374. results = self.util.parseJson( returnCode );
  375. } else {
  376. results = returnCode;
  377. }
  378. if( results.success != undefined && results.success == "true" ) {
  379. console.log("readBarcode : success");
  380. console.log( results.result);
  381. $("#txtInfusionNumberSearchTxt").val(results.result);
  382. $("#txtInfusionNumberSearchTxt").trigger("keydown");
  383. } else {
  384. console.log("readBarcode : failed");
  385. self.alert( "readBarcode APP function 호출 오류 " );
  386. }
  387. };
  388. this.deviceBarcodeCallBackCheck = function( returnCode){
  389. var results = new Object();
  390. if( typeof returnCode === "string" ){
  391. results = self.util.parseJson( returnCode );
  392. } else {
  393. results = returnCode;
  394. }
  395. if( results.success != undefined && results.success == "true" ) {
  396. console.log("readBarcode : success");
  397. console.log( results.result);
  398. checkBarcodeNum(results.result);
  399. } else {
  400. console.log("readBarcode : failed");
  401. self.alert( "readBarcode APP function 호출 오류 " );
  402. }
  403. };
  404. //검색 페이지 뒤로가기 막기
  405. var eventBackBlock = function(){
  406. $(window).off("pageshow");
  407. $(window).bind("pageshow", function(event) {
  408. if (event.originalEvent.persisted) {
  409. document.location.reload();
  410. }
  411. });
  412. };
  413. var eventColumnClick = function(){
  414. /*
  415. $("#divResultHeaderColumn1").off("click");
  416. $("#divResultHeaderColumn1").on("click", function(){
  417. //alert("column1 clicked!!");
  418. sortColumn( 1, "patientId");
  419. });
  420. $("#divResultHeaderColumn2").off("click");
  421. $("#divResultHeaderColumn2").on("click", function(){
  422. //alert("column2 clicked!!");
  423. sortColumn( 2, "patientNm");
  424. });
  425. $("#divResultHeaderColumn3").off("click");
  426. $("#divResultHeaderColumn3").on("click", function(){
  427. //alert("column3 clicked!!");
  428. sortColumn( 3, "roomNm");
  429. });
  430. $("#divResultHeaderColumn4").off("click");
  431. $("#divResultHeaderColumn4").on("click", function(){
  432. //alert("column4 clicked!!");
  433. sortColumn( 4, "age");
  434. });
  435. $("#divResultHeaderColumn5").off("click");
  436. $("#divResultHeaderColumn5").on("click", function(){
  437. //alert("column5 clicked!!");
  438. sortColumn( 5, "operationDt");
  439. });
  440. $("#divResultHeaderColumn6").off("click");
  441. $("#divResultHeaderColumn6").on("click", function(){
  442. //alert("column6 clicked!!");
  443. sortColumn( 6, "anesthesiaTy");
  444. });
  445. $("#divResultHeaderColumn7").off("click");
  446. $("#divResultHeaderColumn7").on("click", function(){
  447. //alert("column7 clicked!!");
  448. sortColumn( 7, "deptNm");
  449. });
  450. $("#divResultHeaderColumn8").off("click");
  451. $("#divResultHeaderColumn8").on("click", function(){
  452. //alert("column8 clicked!!");
  453. sortColumn( 8, "operationStatNm");
  454. });
  455. */
  456. };
  457. var eventRowClick = function(){
  458. };
  459. var eventCondition = function(){
  460. ///////////////////////////////////////////////////////////////////////////////// 2019.09.04 추가 Start
  461. //데이터 전체길이 입력시 검색
  462. $("#txtInfusionPatientSearchTxt").off("keydown");
  463. $("#txtInfusionPatientSearchTxt").on("keydown" , function(e){
  464. if (e.keyCode == 13 && $("#txtInfusionPatientSearchTxt").val().length != 0) {
  465. initPatientInfo();
  466. getPatientInfo();
  467. }else if(e.keyCode == 13 && $("#txtInfusionPatientSearchTxt").val().length == 0){
  468. self.alert("환자번호를 입력해주세요.");
  469. $("#txtInfusionPatientSearchTxt").focus();
  470. }
  471. });
  472. //포커스 초기화
  473. $("#txtInfusionPatientSearchTxt").off("focus");
  474. $("#txtInfusionPatientSearchTxt").on("focus" , function(){
  475. $(this).val("");
  476. });
  477. //데이터 전체길이 입력시 검색
  478. $("#txtInfusionNumberSearchTxt").off("keydown");
  479. $("#txtInfusionNumberSearchTxt").on("keydown" , function(e){
  480. if (e.keyCode == 13 && varResultLists.length != 0) {
  481. if(!initBarcodeInputInfusion($(this).val())){
  482. self.alert("처방되지 않은 투약번호를 입력하셨습니다.");
  483. return;
  484. }
  485. settingSetInputInfusion();
  486. $("#mplusAlertInfusionAction").modal("show");
  487. $(this).val("");
  488. }else if(e.keyCode == 13 && varResultLists.length == 0){
  489. self.alert("환자번호를 검색해주세요.");
  490. $("#txtInfusionPatientSearchTxt").focus();
  491. }
  492. });
  493. //포커스 초기화
  494. $("#txtInfusionNumberSearchTxt").off("focus");
  495. $("#txtInfusionNumberSearchTxt").on("focus" , function(){
  496. $(this).val("");
  497. $(this).prop("placeholder" , "IVF바코드를 스캔해주세요.");
  498. });
  499. // 투약번호 선택 처리
  500. $("#btnBarcodeSearchSelect").off("click");
  501. $("#btnBarcodeSearchSelect").on("click", function(){
  502. $("#txtInfusionNumberSearchTxt").val("");
  503. $("#txtInfusionNumberSearchTxt").focus();
  504. });
  505. // 바코드 검색
  506. $("#btnBarcodeSearch").off("click");
  507. $("#btnBarcodeSearch").on("click", function(){
  508. $("#txtInfusionNumberSearchTxt").val("");
  509. readBarcode("number");
  510. });
  511. $("#mplusAlert").off("hidden.bs.modal");
  512. $("#mplusAlert").on("hidden.bs.modal", function () {
  513. $("#txtInfusionNumberSearchTxt").focus();
  514. });
  515. ///////////////////////////////////////////////////////////////////////////////// 2019.09.04 추가 End
  516. // 환자 조회 이벤트 처리
  517. $("#btnInfusionSearch").off("click");
  518. $("#btnInfusionSearch").on("click", function(){
  519. var searchTxt = $("#txtInfusionPatientSearchTxt").val();
  520. if(searchTxt == ""){
  521. self.alert("환자번호를 입력해주세요.");
  522. return;
  523. }
  524. initPatientInfo();
  525. getPatientInfo();
  526. });
  527. // 바코드 검색
  528. $("#btnBarcodeSearch").off("click");
  529. $("#btnBarcodeSearch").on("click", function(){
  530. $("#txtInfusionPatientSearchTxt").val("");
  531. readBarcode("search");
  532. });
  533. // 투약처리
  534. $("#btnInputInfusionAct").off("click");
  535. $("#btnInputInfusionAct").on("click", function(){
  536. initInputInfusion();
  537. settingSetInputInfusion();
  538. $("#mplusAlertInfusionAction").modal("show");
  539. });
  540. // 투약실시 선택
  541. /*
  542. $("#checkInfusionAll").off("change");
  543. $("#checkInfusionAll").on("change", function(){
  544. if($("#checkInfusionAll").is(":checked")){
  545. $(".checkClassInfusionSel").prop("checked" , true);
  546. $(".checkClassInfusionSel").trigger("change");
  547. }else{
  548. $(".checkClassInfusionSel").prop("checked" , false);
  549. $(".checkClassInfusionSel").trigger("change");
  550. }
  551. });
  552. */
  553. // 투약실시
  554. $("#btnInfusionAct").off("click");
  555. $("#btnInfusionAct").on("click", function(){
  556. if(checkInputInfusionData()){
  557. inputStartInfusion();
  558. }
  559. });
  560. // 투약종료
  561. $("#btnInfusionEnd").off("click");
  562. $("#btnInfusionEnd").on("click", function(){
  563. if(checkInputInfusionData()){
  564. inputEndInfusion();
  565. }
  566. });
  567. // 투약취소
  568. $("#btnInfusionCancel").off("click");
  569. $("#btnInfusionCancel").on("click", function(){
  570. $("#mplusAlertInfusionAction").modal("hide");
  571. $("#txtInfusionNumberSearchTxt").focus();
  572. });
  573. //slider 이벤트
  574. sliderCapacity.on("input change", function(e) {
  575. $("#txtInfusionSize").val($(this).val());
  576. });
  577. sliderDisCapacity.on("input change", function(e) {
  578. $("#txtInfusionDisSize").val($(this).val());
  579. });
  580. };
  581. var eventMakeCondition = function() {
  582. $(".checkClassInfusionSel").off("change");
  583. $(".checkClassInfusionSel").on("change", function(){
  584. //하나의 수액만 처리
  585. if($(this).is(":checked")){
  586. $(".checkClassInfusionSel").prop("checked" , false);
  587. $(this).prop("checked" , true);
  588. $("#btnInputInfusionAct").attr("disabled" , false);
  589. }else{
  590. $("#btnInputInfusionAct").attr("disabled" , true);
  591. }
  592. });
  593. };
  594. var eventMakeBarcodeCondition = function() {
  595. $(".classBtnInPutActBarcode").off("click");
  596. $(".classBtnInPutActBarcode").on("click", function(){
  597. //readBarcode("check");
  598. //TEST 삭제
  599. console.log("spanInputInfusionNum0 : " + $("#spanInputInfusionNum0").text());
  600. checkBarcodeNum($("#spanInputInfusionNum0").text());
  601. });
  602. };
  603. //==== 이벤트 설정 } ====
  604. //==== 환자 정보 조회 처리 { ====
  605. //==== 환자 정보 조회 처리 } ====
  606. //==== 컬럼 정렬 프로세스 { ====
  607. // 컬럼 상태를 초기화 처리
  608. var initColumnStatus = function(){
  609. varToggleCol1 = 0;
  610. varToggleCol2 = 0;
  611. varToggleCol3 = 0;
  612. varToggleCol4 = 0;
  613. varToggleCol5 = 0;
  614. varToggleCol6 = 0;
  615. varToggleCol7 = 0;
  616. varToggleCol8 = 0;
  617. // 컬럼 정렬 아이콘 초기화 : ▼ ▲
  618. $("#spanSortColumn1").text("");
  619. $("#spanSortColumn2").text("");
  620. $("#spanSortColumn3").text("");
  621. $("#spanSortColumn4").text("");
  622. $("#spanSortColumn5").text("");
  623. $("#spanSortColumn6").text("");
  624. $("#spanSortColumn7").text("");
  625. $("#spanSortColumn8").text("");
  626. };
  627. // 컬럼 상태를 설정(정렬 조건 적용)
  628. var setColumnStatus = function( columnNo){
  629. // 클릭된 column의 현재 상태를 백업
  630. var copyToggleStatus = 0;
  631. if( columnNo == 1)
  632. copyToggleStatus = varToggleCol1;
  633. else if( columnNo == 2)
  634. copyToggleStatus = varToggleCol2;
  635. else if( columnNo == 3)
  636. copyToggleStatus = varToggleCol3;
  637. else if( columnNo == 4)
  638. copyToggleStatus = varToggleCol4;
  639. else if( columnNo == 5)
  640. copyToggleStatus = varToggleCol5;
  641. else if( columnNo == 6)
  642. copyToggleStatus = varToggleCol6;
  643. else if( columnNo == 7)
  644. copyToggleStatus = varToggleCol7;
  645. else if( columnNo == 8)
  646. copyToggleStatus = varToggleCol8;
  647. // column 상태를 초기화
  648. initColumnStatus();
  649. // 클릭된 column의 백업된 상태에서 한단계 진핸된 상태로 변경
  650. if( columnNo == 1)
  651. copyToggleStatus == 0 ? varToggleCol1 = 1 : copyToggleStatus == 1 ? varToggleCol1 = 2 : varToggleCol1 = 1;
  652. else if( columnNo == 2)
  653. copyToggleStatus == 0 ? varToggleCol2 = 1 : copyToggleStatus == 1 ? varToggleCol2 = 2 : varToggleCol2 = 1;
  654. else if( columnNo == 3)
  655. copyToggleStatus == 0 ? varToggleCol3 = 1 : copyToggleStatus == 1 ? varToggleCol3 = 2 : varToggleCol3 = 1;
  656. else if( columnNo == 4)
  657. copyToggleStatus == 0 ? varToggleCol4 = 1 : copyToggleStatus == 1 ? varToggleCol4 = 2 : varToggleCol4 = 1;
  658. else if( columnNo == 5)
  659. copyToggleStatus == 0 ? varToggleCol5 = 1 : copyToggleStatus == 1 ? varToggleCol5 = 2 : varToggleCol5 = 1;
  660. else if( columnNo == 6)
  661. copyToggleStatus == 0 ? varToggleCol6 = 1 : copyToggleStatus == 1 ? varToggleCol6 = 2 : varToggleCol6 = 1;
  662. else if( columnNo == 7)
  663. copyToggleStatus == 0 ? varToggleCol7 = 1 : copyToggleStatus == 1 ? varToggleCol7 = 2 : varToggleCol7 = 1;
  664. else if( columnNo == 8)
  665. copyToggleStatus == 0 ? varToggleCol8 = 1 : copyToggleStatus == 1 ? varToggleCol8 = 2 : varToggleCol8 = 1;
  666. // 정렬 상태 화면에 그리기
  667. varToggleCol1 == 1 ? $("#spanSortColumn1").text("▲") : varToggleCol1 == 2 ? $("#spanSortColumn1").text("▼") : $("#spanSortColumn1").text("");
  668. varToggleCol2 == 1 ? $("#spanSortColumn2").text("▲") : varToggleCol2 == 2 ? $("#spanSortColumn2").text("▼") : $("#spanSortColumn2").text("");
  669. varToggleCol3 == 1 ? $("#spanSortColumn3").text("▲") : varToggleCol3 == 2 ? $("#spanSortColumn3").text("▼") : $("#spanSortColumn3").text("");
  670. varToggleCol4 == 1 ? $("#spanSortColumn4").text("▲") : varToggleCol4 == 2 ? $("#spanSortColumn4").text("▼") : $("#spanSortColumn4").text("");
  671. varToggleCol5 == 1 ? $("#spanSortColumn5").text("▲") : varToggleCol5 == 2 ? $("#spanSortColumn5").text("▼") : $("#spanSortColumn5").text("");
  672. varToggleCol6 == 1 ? $("#spanSortColumn6").text("▲") : varToggleCol6 == 2 ? $("#spanSortColumn6").text("▼") : $("#spanSortColumn6").text("");
  673. varToggleCol7 == 1 ? $("#spanSortColumn7").text("▲") : varToggleCol7 == 2 ? $("#spanSortColumn7").text("▼") : $("#spanSortColumn7").text("");
  674. varToggleCol8 == 1 ? $("#spanSortColumn8").text("▲") : varToggleCol8 == 2 ? $("#spanSortColumn8").text("▼") : $("#spanSortColumn8").text("");
  675. };
  676. // 컬럼 상태를 조회(정렬 조건 적용)
  677. var getColumnStatus = function( columnNo){
  678. if( columnNo == 1)
  679. return varToggleCol1;
  680. else if( columnNo == 2)
  681. return varToggleCol2;
  682. else if( columnNo == 3)
  683. return varToggleCol3;
  684. else if( columnNo == 4)
  685. return varToggleCol4;
  686. else if( columnNo == 5)
  687. return varToggleCol5;
  688. else if( columnNo == 6)
  689. return varToggleCol6;
  690. else if( columnNo == 7)
  691. return varToggleCol7;
  692. else if( columnNo == 8)
  693. return varToggleCol8;
  694. };
  695. // 컬럼의 정렬을 실행
  696. var sortColumn = function( columnNo, fieldName){
  697. // 컬럼 상태 설정
  698. setColumnStatus( columnNo);
  699. // 오름차순, 내림차순 선택
  700. var isAscending = true;
  701. getColumnStatus( columnNo) == 1 ? isAscending = true : getColumnStatus( columnNo) == 2 ? isAscending = false : isAscending = true;
  702. // 정렬 실행
  703. self.common.sortArrayObject( varResultLists, fieldName, isAscending);
  704. // 환자 정보 다시 그리기
  705. drawPatientList();
  706. };
  707. //==== 컬럼 정렬 프로세스 } ====
  708. };