"use strict"; /** * mplus_safety_bleeding */ var mplus_safety_bleeding = function() { console.log("Start----------"); // 상속 mplus_common.call(this); console.log("End----------"); // 상위 객체 생성 //var mplusPatient = new mplus_mobile_patient(); //var mplusNursing = new mplus_nursing(); //super var self = this; //==== 변수 { ==== // column 정렬의 토글 상태 제어용 : 0: not selected, 1:오름차순, 2:내림차순 var varToggleCol1 = 0; var varToggleCol2 = 0; var varToggleCol3 = 0; var varToggleCol4 = 0; var varToggleCol5 = 0; var varToggleCol6 = 0; var varToggleCol7 = 0; var varToggleCol8 = 0; var varResultLists = []; var varSearchCls = "OP"; // 조회구분(I:입원, O:외래, E:응급, OP:수술, T:시술, C:협진) var varSearchDateGap = 2; // 날짜검색 간격 //투약번호 Length처리 var inputBleedingLength = 0; //==== 변수 } ==== /** * 초기화 */ this.init = function() { //여기서 모든화면 콤보박스데이터를 집어넣자!!! 그래야지 화면이동할때 속도가 오래걸리지않음!!! // 접근 권한 체크 checkAccessPermission(); // 초기 화면 조건 구성 initCondition(); // 이벤트 초기화 addEvent(); // 환자 검색 실행 및 환자 정보 화면 출력 //searchPatient(); $("#txtBleedingPatientSearch").focus(); }; //==== 접근 권한 체크 { ==== var checkAccessPermission = function() { //if( !self.common.checkAccessJobKind( "1000")){ // self.alertTrue("접근 권한이 없습니다.", self.common.gotoDefaultHomePage); //} //if( !self.common.checkAccessUserAuth( "01")){ // self.alertTrue("접근 권한이 없습니다.", self.common.gotoDefaultHomePage); //} //self.common.disableElements( $("#myModalBtn")); }; //==== 접근 권한 체크 } ==== //==== 초기화 설정 { ==== var initCondition = function() { // 초기 화면 조건 구성 //환자정보 초기화 initPatientInfo(); // 종료 날짜를 현재 날짜로 등록 var varCurDate = new Date(); var strCurDate = self.util.toDate(new Date()); $("#dateBleedingEndDt").val(strCurDate); // 시작 날짜를 날짜 검색 간격 전 날짜를 등록 var var2DaysAgo = varCurDate; var2DaysAgo.setDate(varCurDate.getDate() - varSearchDateGap); var str2DaysAgo = self.util.toDate(var2DaysAgo); //$("#dateOppatientStartDt").val( str2DaysAgo); $("#dateBleedingStartDt").val(str2DaysAgo); }; /** * 환자 정보 초기화 */ var initPatientInfo = function() { //$("#divResultRows").empty(); //채혈 실행 버튼 $("#btnBleedingAct").attr("disabled", true); $(".patient-name").text("환자명"); $(".patient-gender").text("성별"); $(".patient-age").text("나이"); $(".patient-birthDt").text("생년월일"); $(".dept-name").text("실시부서"); $(".user-name").text("실시자명"); $(".user-code").text("(사원번호)"); // $(".modal-patient-name").text("-"); // $(".modal-patient-id").text("-"); // $(".modal-patient-age-gender").text("-"); // $(".modal-patient-treat-cls").text("-"); }; /** * 채혈실시 초기화 */ var initInputBleeding = function() { $("#bleedingActionNum").empty(); //CheckBoxLength 초기화 inputBleedingLength = 0; //처방번호 체크 for (var fCnt = 0; fCnt < varResultLists.length; fCnt++) { if ($("#checkBleedingSel" + fCnt).is(":checked")) { var tempSpan = "

" + '' + varResultLists[fCnt].col4 + " " + varResultLists[fCnt].col2 + " " + varResultLists[fCnt].col3 + "" + //+ "  " "

"; $("#bleedingActionNum").append(tempSpan); inputBleedingLength++; } } //eventMakeBarcodeCondition(); }; var initBarcodeInputBleeding = function(barcodeData) { for (var fCnt = 0; fCnt < varResultLists.length; fCnt++) { if (varResultLists[fCnt].col4 == barcodeData) { $("#checkBleedingSel" + fCnt).prop("checked", true); $(".checkClassBleedingSel").trigger("change"); return true; } } return false; }; // 환자정보 요청 var getPatientInfo = function() { var param = { hospitalCd: "", userId: gLoginUserId, patientId: $("#txtBleedingPatientSearch").val() }; self.medical.getPatientInfo(param, processGetPatientInfo); }; // 채혈 목록을 처리 var processGetPatientInfo = function(lists) { $(".patient-name").text(lists[0].patientNm); $(".patient-gender").text(lists[0].gender); $(".patient-age").text(lists[0].age); $(".patient-birthDt").text(lists[0].birthDt); $(".dept-name").text(lists[0].deptNm); $(".user-name").text(gLoginUserNm); $(".user-code").text(gLoginUserId); // $(".modal-patient-name").text(lists[0].patientNm); // $(".modal-patient-id").text(lists[0].patientId); // $(".modal-patient-age-gender").text(lists[0].age + " / " + lists[0].gender); // $(".modal-patient-treat-cls").text("입원"); getSpecimenList(); $("#txtBleedingNumberSearchTxt").focus(); }; // 채혈실시 var inputBleeding = function() { var params = { param: [] }; for (var fCnt = 0; fCnt < inputBleedingLength; fCnt++) { params.param.push({ param1: $("#spanInputBleedingNum" + fCnt).text(), param2: "20190101", param3: "121212", param4: "aaa" /* 파티마 actSpecimen 추가 예정 부분 hospitalCd: varResultLists, userId: gLoginUserId, specimenCd: "", specimenNm: "", actSpecimenType: "", actSpecimenDtTm: "", actType: "" */ }); } self.safety.inputBleeding(params, processInputBleeding); }; var processInputBleeding = function(lists) { if (lists != undefined && lists.length > 0) { var inputCnt = 0; for (var fCnt = 0; fCnt < lists.length; fCnt++) { if (lists[fCnt].returnCd == "0000") { inputCnt++; } } self.alert(inputCnt + "건 처리되었습니다."); //데이터 초기화 $("#mplusAlertBleedingAction").modal("hide"); initPatientInfo(); getPatientInfo(); $("#txtBleedingNumberSearchTxt").focus(); } else { self.alert("처리중 오류가 발생했습니다."); } }; var checkInputBleedingData = function() { if ($("#dateBleedingActionDate").val() == "") { self.alert("채혈 실시일을 입력해주세요."); return false; } else if ($("#dateBleedingActionTime").val() == "") { self.alert("채혈 시간을 입력해주세요."); return false; } //변경 return true; //바코드 체크 var btnInPutActBarcodeCheck = false; for (var fCnt = 0; fCnt < inputBleedingLength; fCnt++) { console.log("TEST : " + $("#btnInPutActBarcode" + fCnt).is("[disabled]")); if (!$("#btnInPutActBarcode" + fCnt).is("[disabled]")) { btnInPutActBarcodeCheck = true; } } if (btnInPutActBarcodeCheck) { self.alert("채혈번호 바코드를 확인해주세요."); return false; } return true; }; var settingSetInputBleeding = function() { $("#dateBleedingActionDate").val(moment(new Date()).format("YYYY-MM-DD")); $("#dateBleedingActionTime").val(moment(new Date()).format("HH:mm:ss")); }; var checkBarcodeNum = function(barcodeNum) { for (var fCnt = 0; fCnt < inputBleedingLength; fCnt++) { if (barcodeNum == $("#spanInputBleedingNum" + fCnt).text()) { $("#spanInputBleedingNum" + fCnt).css("color", "blue"); $("#btnInPutActBarcode" + fCnt).attr("disabled", true); } } }; // 채혈정보 var getSpecimenList = function() { var param = { hospitalCd: "", userId: gLoginUserId, patientId: $("#txtBleedingPatientSearch").val(), specimenSearchCls: "0" }; self.safety.getSpecimenList(param, processGetSpecimenList); }; var processGetSpecimenList = function(lists){ varResultLists = lists; var strDisplayTemp = ""; $("#list-group").empty(); if( lists.length == 0){ // strDisplayTemp = "

검색 결과가 없습니다.
" // + "
"; $("#alertEmptyPatient").modal("show"); } for( var i = 0; i < lists.length; i++){ strDisplayTemp += "
  • " + "
    " + "
    " + lists[i].specimenNm + "
    " + "
    " + lists[i].specimenDtTm + "
    " + "
    " + "
  • "; // strDisplayTemp += "
    " // + "
    " // + "
    " // + "
    " // + "
    " + lists[i].col2 + "
    " // + "
    " + lists[i].col3 + "
    " // + "
    " + lists[i].col4 + "
    " // + "
    " + lists[i].col5 + "
    " // + "
    " + lists[i].col6 + "
    " // + "
    " + lists[i].col7 + "
    " // + "
    " // + "
    " // + "
    "; // //console.log( i + " : " + lists[i].patientId + " : " + lists[i].patientNm); } $("#list-group").append(strDisplayTemp); // element 추가 eventMakeCondition(); }; //==== 초기화 설정 } ==== //==== 이벤트 설정 { ==== var addEvent = function() { // 컬럼 클릭의 정렬 이벤트 eventColumnClick(); eventRowClick(); eventCondition(); eventBackBlock(); }; // 20190228 shinsunwoo 환자의 바코드 추출 toNative 호출 var readBarcode = function(barMode) { var callbackFn = "window.activeObj.readBarcodeCallBack"; if (barMode == "search") { callbackFn = "window.activeObj.readBarcodeCallBack"; } else if (barMode == "check") { callbackFn = "window.activeObj.readBarcodeCallBackCheck"; } else if (barMode == "number") { callbackFn = "window.activeObj.readBarcodeCallBackNumber"; } else { callbackFn = "window.activeObj.readBarcodeCallBack"; } console.log("call readBarcode"); var msg = { type: "command", functionType: "readBarcode", value: { callbackFn: callbackFn } }; self.toNative(msg); }; // 20190228 shinsunwoo 환자의 바코드 추출 callback 처리 this.readBarcodeCallBack = function(returnCode) { var results = new Object(); if (typeof returnCode === "string") { results = self.util.parseJson(returnCode); } else { results = returnCode; } if (results.success != undefined && results.success == "true") { console.log("readBarcode : success"); console.log(results.result); $("#txtBleedingPatientSearch").val(results.result); getPatientInfo(); } else { console.log("readBarcode : failed"); self.alert("readBarcode APP function 호출 오류 "); } }; this.readBarcodeCallBackCheck = function(returnCode) { var results = new Object(); if (typeof returnCode === "string") { results = self.util.parseJson(returnCode); } else { results = returnCode; } if (results.success != undefined && results.success == "true") { console.log("readBarcode : success"); console.log(results.result); checkBarcodeNum(results.result); } else { console.log("readBarcode : failed"); self.alert("readBarcode APP function 호출 오류 "); } }; this.deviceBarcodeCallBackCheck = function(returnCode) { var results = new Object(); if (typeof returnCode === "string") { results = self.util.parseJson(returnCode); } else { results = returnCode; } if (results.success != undefined && results.success == "true") { console.log("readBarcode : success"); console.log(results.result); checkBarcodeNum(results.result); } else { console.log("readBarcode : failed"); self.alert("readBarcode APP function 호출 오류 "); } }; this.readBarcodeCallBackNumber = function(returnCode) { var results = new Object(); if (typeof returnCode === "string") { results = self.util.parseJson(returnCode); } else { results = returnCode; } if (results.success != undefined && results.success == "true") { console.log("readBarcode : success"); console.log(results.result); $("#txtBleedingNumberSearchTxt").val(results.result); $("#txtBleedingNumberSearchTxt").trigger("keydown"); } else { console.log("readBarcode : failed"); self.alert("readBarcode APP function 호출 오류 "); } }; //검색 페이지 뒤로가기 막기 var eventBackBlock = function() { $(window).off("pageshow"); $(window).bind("pageshow", function(event) { if (event.originalEvent.persisted) { document.location.reload(); } }); }; var eventColumnClick = function() { /* $("#divResultHeaderColumn1").off("click"); $("#divResultHeaderColumn1").on("click", function(){ //alert("column1 clicked!!"); sortColumn( 1, "patientId"); }); $("#divResultHeaderColumn2").off("click"); $("#divResultHeaderColumn2").on("click", function(){ //alert("column2 clicked!!"); sortColumn( 2, "patientNm"); }); $("#divResultHeaderColumn3").off("click"); $("#divResultHeaderColumn3").on("click", function(){ //alert("column3 clicked!!"); sortColumn( 3, "roomNm"); }); $("#divResultHeaderColumn4").off("click"); $("#divResultHeaderColumn4").on("click", function(){ //alert("column4 clicked!!"); sortColumn( 4, "age"); }); $("#divResultHeaderColumn5").off("click"); $("#divResultHeaderColumn5").on("click", function(){ //alert("column5 clicked!!"); sortColumn( 5, "operationDt"); }); $("#divResultHeaderColumn6").off("click"); $("#divResultHeaderColumn6").on("click", function(){ //alert("column6 clicked!!"); sortColumn( 6, "anesthesiaTy"); }); $("#divResultHeaderColumn7").off("click"); $("#divResultHeaderColumn7").on("click", function(){ //alert("column7 clicked!!"); sortColumn( 7, "deptNm"); }); $("#divResultHeaderColumn8").off("click"); $("#divResultHeaderColumn8").on("click", function(){ //alert("column8 clicked!!"); sortColumn( 8, "operationStatNm"); }); */ }; var eventRowClick = function() {}; var eventCondition = function() { ///////////////////////////////////////////////////////////////////////////////// 2019.09.04 추가 Start //데이터 전체길이 입력시 검색 $("#txtBleedingPatientSearch").off("keydown"); $("#txtBleedingPatientSearch").on("keydown", function(e) { if ( e.keyCode == 13 && $("#txtBleedingPatientSearch").val().length != 0 ) { initPatientInfo(); getPatientInfo(); } else if ( e.keyCode == 13 && $("#txtBleedingPatientSearch").val().length == 0 ) { self.alert("환자번호를 입력해주세요."); $("#txtBleedingPatientSearch").focus(); } }); //포커스 초기화 $("#txtBleedingPatientSearch").off("focus"); $("#txtBleedingPatientSearch").on("focus", function() { $(this).val(""); }); //데이터 전체길이 입력시 검색 $("#txtBleedingNumberSearchTxt").off("keydown"); $("#txtBleedingNumberSearchTxt").on("keydown", function(e) { if (e.keyCode == 13 && varResultLists.length != 0) { if (!initBarcodeInputBleeding($(this).val())) { self.alert("처방되지 않은 검체번호를 입력하셨습니다."); return; } $(this).val(""); } else if (e.keyCode == 13 && varResultLists.length == 0) { self.alert("환자번호를 검색해주세요."); $("#txtBleedingPatientSearch").focus(); } }); //포커스 초기화 $("#txtBleedingNumberSearchTxt").off("focus"); $("#txtBleedingNumberSearchTxt").on("focus", function() { $(this).val(""); $(this).prop("placeholder", "채혈바코드를 스캔해주세요."); }); // 투약번호 선택 처리 $("#btnBarcodeSearchSelect").off("click"); $("#btnBarcodeSearchSelect").on("click", function() { $("#txtBleedingNumberSearchTxt").val(""); $("#txtBleedingNumberSearchTxt").focus(); }); // 바코드 검색 $("#btnBarcodeSearch").off("click"); $("#btnBarcodeSearch").on("click", function() { $("#txtBleedingNumberSearchTxt").val(""); readBarcode("number"); }); $("#mplusAlert").off("hidden.bs.modal"); $("#mplusAlert").on("hidden.bs.modal", function() { $("#txtBleedingNumberSearchTxt").focus(); }); ///////////////////////////////////////////////////////////////////////////////// 2019.09.04 추가 End // 환자 조회 이벤트 처리 $("#btnBleedingList").off("click"); $("#btnBleedingList").on("click", function() { var searchTxt = $("#txtBleedingPatientSearch").val(); if (searchTxt == "") { self.alert("환자번호를 입력해주세요."); return; } initPatientInfo(); getPatientInfo(); }); // 바코드 검색 $("#btnBarcodeSearch").off("click"); $("#btnBarcodeSearch").on("click", function() { $("#txtBleedingPatientSearch").val(""); readBarcode("search"); }); // 채혈처리 $("#btnInputBleedingAct").off("click"); $("#btnInputBleedingAct").on("click", function() { initInputBleeding(); settingSetInputBleeding(); $("#mplusAlertBleedingAction").modal("show"); }); // 채혈실시 선택 $("#checkBleedingAll").off("change"); $("#checkBleedingAll").on("change", function() { if ($("#checkBleedingAll").is(":checked")) { $(".checkClassBleedingSel").prop("checked", true); $(".checkClassBleedingSel").trigger("change"); } else { $(".checkClassBleedingSel").prop("checked", false); $(".checkClassBleedingSel").trigger("change"); } }); // 채혈실시 $("#btnBleedingAct").off("click"); $("#btnBleedingAct").on("click", function() { if (checkInputBleedingData()) { inputBleeding(); } }); // 투약취소 $("#btnBleedingCancel").off("click"); $("#btnBleedingCancel").on("click", function() { $("#mplusAlertBleedingAction").modal("hide"); $("#txtBleedingNumberSearchTxt").focus(); }); }; var eventMakeCondition = function() { $(".checkClassBleedingSel").off("change"); $(".checkClassBleedingSel").on("change", function() { var checkSelected = false; for (var fCnt = 0; fCnt < varResultLists.length; fCnt++) { if ($("#checkBleedingSel" + fCnt).is(":checked")) { checkSelected = true; break; } } if (checkSelected) { $("#btnInputBleedingAct").attr("disabled", false); } else { $("#btnInputBleedingAct").attr("disabled", true); } }); }; var eventMakeBarcodeCondition = function() { $(".classBtnInPutActBarcode").off("click"); $(".classBtnInPutActBarcode").on("click", function() { //readBarcode("check"); //TEST 삭제 for (var fCnt = 0; fCnt < inputBleedingLength; fCnt++) { checkBarcodeNum($("#spanInputBleedingNum" + fCnt).text()); } }); }; //==== 이벤트 설정 } ==== //==== 환자 정보 조회 처리 { ==== //==== 환자 정보 조회 처리 } ==== //==== 컬럼 정렬 프로세스 { ==== // 컬럼 상태를 초기화 처리 var initColumnStatus = function() { varToggleCol1 = 0; varToggleCol2 = 0; varToggleCol3 = 0; varToggleCol4 = 0; varToggleCol5 = 0; varToggleCol6 = 0; varToggleCol7 = 0; varToggleCol8 = 0; // 컬럼 정렬 아이콘 초기화 : ▼ ▲ $("#spanSortColumn1").text(""); $("#spanSortColumn2").text(""); $("#spanSortColumn3").text(""); $("#spanSortColumn4").text(""); $("#spanSortColumn5").text(""); $("#spanSortColumn6").text(""); $("#spanSortColumn7").text(""); $("#spanSortColumn8").text(""); }; // 컬럼 상태를 설정(정렬 조건 적용) var setColumnStatus = function( columnNo){ // 클릭된 column의 현재 상태를 백업 var copyToggleStatus = 0; if( columnNo == 1) copyToggleStatus = varToggleCol1; else if( columnNo == 2) copyToggleStatus = varToggleCol2; else if( columnNo == 3) copyToggleStatus = varToggleCol3; else if( columnNo == 4) copyToggleStatus = varToggleCol4; else if( columnNo == 5) copyToggleStatus = varToggleCol5; else if( columnNo == 6) copyToggleStatus = varToggleCol6; else if( columnNo == 7) copyToggleStatus = varToggleCol7; else if( columnNo == 8) copyToggleStatus = varToggleCol8; // column 상태를 초기화 initColumnStatus(); // 클릭된 column의 백업된 상태에서 한단계 진핸된 상태로 변경 if( columnNo == 1) copyToggleStatus == 0 ? varToggleCol1 = 1 : copyToggleStatus == 1 ? varToggleCol1 = 2 : varToggleCol1 = 1; else if( columnNo == 2) copyToggleStatus == 0 ? varToggleCol2 = 1 : copyToggleStatus == 1 ? varToggleCol2 = 2 : varToggleCol2 = 1; else if( columnNo == 3) copyToggleStatus == 0 ? varToggleCol3 = 1 : copyToggleStatus == 1 ? varToggleCol3 = 2 : varToggleCol3 = 1; else if( columnNo == 4) copyToggleStatus == 0 ? varToggleCol4 = 1 : copyToggleStatus == 1 ? varToggleCol4 = 2 : varToggleCol4 = 1; else if( columnNo == 5) copyToggleStatus == 0 ? varToggleCol5 = 1 : copyToggleStatus == 1 ? varToggleCol5 = 2 : varToggleCol5 = 1; else if( columnNo == 6) copyToggleStatus == 0 ? varToggleCol6 = 1 : copyToggleStatus == 1 ? varToggleCol6 = 2 : varToggleCol6 = 1; else if( columnNo == 7) copyToggleStatus == 0 ? varToggleCol7 = 1 : copyToggleStatus == 1 ? varToggleCol7 = 2 : varToggleCol7 = 1; else if( columnNo == 8) copyToggleStatus == 0 ? varToggleCol8 = 1 : copyToggleStatus == 1 ? varToggleCol8 = 2 : varToggleCol8 = 1; // 정렬 상태 화면에 그리기 varToggleCol1 == 1 ? $("#spanSortColumn1").text("▲") : varToggleCol1 == 2 ? $("#spanSortColumn1").text("▼") : $("#spanSortColumn1").text(""); varToggleCol2 == 1 ? $("#spanSortColumn2").text("▲") : varToggleCol2 == 2 ? $("#spanSortColumn2").text("▼") : $("#spanSortColumn2").text(""); varToggleCol3 == 1 ? $("#spanSortColumn3").text("▲") : varToggleCol3 == 2 ? $("#spanSortColumn3").text("▼") : $("#spanSortColumn3").text(""); varToggleCol4 == 1 ? $("#spanSortColumn4").text("▲") : varToggleCol4 == 2 ? $("#spanSortColumn4").text("▼") : $("#spanSortColumn4").text(""); varToggleCol5 == 1 ? $("#spanSortColumn5").text("▲") : varToggleCol5 == 2 ? $("#spanSortColumn5").text("▼") : $("#spanSortColumn5").text(""); varToggleCol6 == 1 ? $("#spanSortColumn6").text("▲") : varToggleCol6 == 2 ? $("#spanSortColumn6").text("▼") : $("#spanSortColumn6").text(""); varToggleCol7 == 1 ? $("#spanSortColumn7").text("▲") : varToggleCol7 == 2 ? $("#spanSortColumn7").text("▼") : $("#spanSortColumn7").text(""); varToggleCol8 == 1 ? $("#spanSortColumn8").text("▲") : varToggleCol8 == 2 ? $("#spanSortColumn8").text("▼") : $("#spanSortColumn8").text(""); }; // 컬럼 상태를 조회(정렬 조건 적용) var getColumnStatus = function( columnNo){ if( columnNo == 1) return varToggleCol1; else if( columnNo == 2) return varToggleCol2; else if( columnNo == 3) return varToggleCol3; else if( columnNo == 4) return varToggleCol4; else if( columnNo == 5) return varToggleCol5; else if( columnNo == 6) return varToggleCol6; else if( columnNo == 7) return varToggleCol7; else if( columnNo == 8) return varToggleCol8; }; // 컬럼의 정렬을 실행 var sortColumn = function( columnNo, fieldName){ // 컬럼 상태 설정 setColumnStatus( columnNo); // 오름차순, 내림차순 선택 var isAscending = true; getColumnStatus( columnNo) == 1 ? isAscending = true : getColumnStatus( columnNo) == 2 ? isAscending = false : isAscending = true; // 정렬 실행 self.common.sortArrayObject( varResultLists, fieldName, isAscending); // 환자 정보 다시 그리기 drawPatientList(); } //==== 컬럼 정렬 프로세스 } ==== };