"use strict"; /** * mplus_medical_barpatient */ var mplus_medical_barpatient = function(){ // 상속 mplus_common.call(this); // 상위 객체 생성 //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 = "I";// 조회구분(I:입원, O:외래, E:응급, OP:수술, T:시술, C:협진) //==== 변수 } ==== /** * 초기화 */ this.init = function(){ //여기서 모든화면 콤보박스데이터를 집어넣자!!! 그래야지 화면이동할때 속도가 오래걸리지않음!!! // 접근 권한 체크 checkAccessPermission(); // 초기 화면 조건 구성 initCondition(); // 이벤트 초기화 addEvent(); // 환자 검색 실행 및 환자 정보 화면 출력 //2019-01-02 위치변경 //searchPatient(); }; //==== 접근 권한 체크 { ==== 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(){ // 초기 화면 조건 구성 // 날짜를 현재 날짜로 등록 var varCurDate = new Date(); var strCurDate = self.util.toDate( new Date()); $("#dateInpatientSearchDt").val( strCurDate); //2019-01-04 자동 검색 기능 수정 //Ajax의 비동기로 인해 callback함수에 다음 작업 처리 // 진료과 로드 //getDeptList( varSearchCls); // 병동 로드 //getWardList( varSearchCls); // 텍스트 검색 내용 초기화 //$("#txtInpatientSearchTxt").val(""); // 신규환자 체크 초기화 //$("#chkInpatientIsNewPatient")[0].checked = false; //화면 부서 및 권한 처리 self.common.authorityCheck("#sltInpatientDeptCd"); }; // 진료과 목록을 요청 var getDeptList = function( searchCls){ var param = { userId: gLoginUserId, searchCls: searchCls }; self.medical.getDeptList(param, processGetDeptList); }; // 진료과 목록을 처리 var processGetDeptList = function( lists){ var strDisplayTemp = ""; $("#sltInpatientDeptCd").empty(); strDisplayTemp += ""; for( var i = 0; i < lists.length; i++){ strDisplayTemp += ""; } $("#sltInpatientDeptCd").append(strDisplayTemp); // element 추가 // 진료과 목록에 현재 지정된 과가 존재하는 경우, 지정된 과의 담당의 목록을 띄워줌 if( self.util.isValueInSelect( $("#sltInpatientDeptCd")[0], localStorage.selectedDeptCd)){ // 기본 진료과 설정 $("#sltInpatientDeptCd").val(localStorage.selectedDeptCd); // 기본 진료과의 해당 지정의 목록을 조회 getDoctorListByDept( $("#sltInpatientDeptCd").val(), varSearchCls); }else{ //2019-01-02 위치변경 searchPatient(); } }; // 진료의 목록을 요청 var getDoctorListByDept = function( deptCd, searchCls){ var param = { userId: gLoginUserId, deptCd: deptCd, searchCls: searchCls }; self.medical.getDoctorListByDept(param, processGetDoctorListByDept); }; // 진료의 목록을 처리 var processGetDoctorListByDept = function( lists){ var strDisplayTemp = ""; $("#sltInpatientSelectedDrId").empty(); strDisplayTemp += ""; for( var i = 0; i < lists.length; i++){ strDisplayTemp += ""; } $("#sltInpatientSelectedDrId").append(strDisplayTemp); // element 추가 //2019-01-09 전공의 항목에 사용자 id, 이름 이 없을경우 %전공의로 선택 처리 //20190528 백병원 공통 요구 사항 전공의 처리 제외 $("#sltInpatientSelectedDrId").val(self.common.commonResidentSelect($("#sltInpatientSelectedDrId")[0], localStorage.selectedUserNm, gLoginUserId)); searchPatient(); /* // 진료의 목록에 현재 로그인 이름이 존재하는 경우, 로그인 이름을 선택 if( self.util.isValueInSelect( $("#sltInpatientSelectedDrId")[0], gLoginUserId)){ // 기본 진료의 설정 $("#sltInpatientSelectedDrId").val(gLoginUserId); // 기본 진료과의 해당 지정의 목록을 조회 searchPatient(); }else{ //$("#sltInpatientSelectedDrId").val($("#sltInpatientSelectedDrId option:first").val()); searchPatient(); }*/ } // 병동 목록을 요청 var getWardList = function( searchCls){ var param = { userId: gLoginUserId, searchCls: searchCls }; self.medical.getWardList(param, processGetWardList); }; // 병동 목록을 처리 var processGetWardList = function( lists){ var strDisplayTemp = ""; $("#sltInpatientWardCd").empty(); strDisplayTemp += ""; for( var i = 0; i < lists.length; i++){ strDisplayTemp += ""; } $("#sltInpatientWardCd").append(strDisplayTemp); // element 추가 // 병동 목록에 현재 지정된 과(병동)가 존재하는 경우, 지정된 병동의 병실 목록을 띄워줌 if( self.util.isValueInSelect( $("#sltInpatientWardCd")[0], localStorage.selectedDeptCd)){ // 기본 병동 설정 $("#sltInpatientWardCd").val(localStorage.selectedDeptCd); // 기본 병동의 병실 리스트 조회 getRoomListByWard( $("#sltInpatientWardCd").val(), varSearchCls); } } // 병실 목록을 요청 var getRoomListByWard = function( wardCd, searchCls){ var param = { userId: gLoginUserId, wardCd: wardCd, searchCls: searchCls }; self.medical.getRoomListByWard(param, processGetRoomListByWard); }; // 병실 목록을 처리 var processGetRoomListByWard = function( lists){ var strDisplayTemp = ""; $("#sltInpatientRoomCd").empty(); strDisplayTemp += ""; for( var i = 0; i < lists.length; i++){ strDisplayTemp += ""; } $("#sltInpatientRoomCd").append(strDisplayTemp); // element 추가 } //==== 초기화 설정 } ==== //==== 이벤트 설정 { ==== var addEvent = function(){ // 컬럼 클릭의 정렬 이벤트 eventColumnClick(); eventRowClick(); eventCondition(); eventBackBlock(); }; //검색 페이지 뒤로가기 막기 var eventBackBlock = function(){ $(window).off("backbutton"); $(window).bind("backbutton", 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, "deptNm"); }); $("#divResultHeaderColumn6").off("click"); $("#divResultHeaderColumn6").on("click", function(){ //alert("column6 clicked!!"); sortColumn( 6, "specialistNm"); }); $("#divResultHeaderColumn7").off("click"); $("#divResultHeaderColumn7").on("click", function(){ //alert("column7 clicked!!"); sortColumn( 7, "hospitalizationDt"); }); $("#divResultHeaderColumn8").off("click"); $("#divResultHeaderColumn8").on("click", function(){ //alert("column8 clicked!!"); sortColumn( 8, "birthDt"); }); }; var eventRowClick = function(){ // 환자 선택 이벤트 처리 $("#divResultRows .patient-row").off("click"); // 기존 이벤트 해제 $("#divResultRows .patient-row").on("click", function(e){ var patientNo = e.currentTarget.attributes.patientNo.value; var patientId = e.currentTarget.attributes.patientId.value; var patientNm = e.currentTarget.attributes.patientNm.value; var age = e.currentTarget.attributes.age.value; var gender = e.currentTarget.attributes.gender.value; var treatCls = e.currentTarget.attributes.treatCls.value; var receiptNo = e.currentTarget.attributes.receiptNo.value; var deptCd = e.currentTarget.attributes.deptCd.value; var doctorId = e.currentTarget.attributes.doctorId.value; // 환자 정보 셋팅 self.common.setSelectedPatient( patientId, patientNm, age, gender, treatCls, receiptNo, deptCd, doctorId); //alert("row clicked!! " + patientNo + " : " + patientId + " : " + deptCd ); // 환자 정보 화면 띄우기 $("#modalPatientInfo").modal("show"); mplusModalPatientinfo.init(); }); }; var eventCondition = function(){ // 진료과의 change 이벤트 처리 $("#sltInpatientDeptCd").off("change"); $("#sltInpatientDeptCd").on("change", function(){ getDoctorListByDept( $("#sltInpatientDeptCd").val(), varSearchCls); }); // 진료의 change 이벤트 처리 $("#sltInpatientSelectedDrId").off("change"); $("#sltInpatientSelectedDrId").on("change", function(){ searchPatient(); }); // 병동의 change 이벤트 처리 $("#sltInpatientWardCd").off("change"); $("#sltInpatientWardCd").on("change", function(){ getRoomListByWard( $("#sltInpatientWardCd").val(), varSearchCls); }); // 환자 조회 이벤트 처리 $("#btnInpatientSearch").off("click"); $("#btnInpatientSearch").on("click", function(){ // 환자 검색 실행 및 환자 정보 화면 출력 searchPatient(); }); // 설정 초기화 이벤트 처리 $("#btnInpatientReset").off("click"); $("#btnInpatientReset").on("click", function(){ initCondition(); // 환자 검색 실행 및 환자 정보 화면 출력 searchPatient(); }); // 20190228 바코드 환자 검색 버튼 실행 $("#btnBarcodeSearch").off("click"); // 기존 이벤트 해제 $("#btnBarcodeSearch").on("click", function(e){ readBarcode(); }); } //==== 이벤트 설정 } ==== //==== 환자 정보 조회 처리 { ==== // 환자 정보 조회 var searchPatient = function(){ var param = { userId: gLoginUserId, searchDt: moment($("#dateInpatientSearchDt").val()).format("YYYYMMDD"), deptCd: $("#sltInpatientDeptCd").val(), selectedDrId: $("#sltInpatientSelectedDrId").val(), wardCd: $("#sltInpatientWardCd").val(), roomCd: $("#sltInpatientRoomCd").val(), searchTxtCls: $("#sltInpatientSearchTxtCls").val(), searchTxt: $("#txtInpatientSearchTxt").val(), isNewPatient: $("#chkInpatientIsNewPatient").is(":checked") ? "1" : "0" }; console.log( param); self.medical.getInPatientList(param, processSearchPatient); }; // 환자 정보 조회 결과 처리 var processSearchPatient = function(lists){ // 1. 환자 조회 결과 리스트를 varResultLists로 복사 varResultLists = lists; // 2. 환자 검색 결과 리스트를 재정리 : 중복이름 체크 rebuildPatientList(); // 3. 환자 검색 결과를 화면에 disaplay drawPatientList(); }; // 환자 검색 결과 리스트를 재정리 : 중복이름 체크 var rebuildPatientList = function(){ // 사용자명 중복 체크 // 1. 환자리스트틀 임시환자리스트로 복사 // 2. 임시환자리스트에서 환자명으로 정렬 // 3. 임시환자리스트에서 중복 사용자 리스트를 추출 // 4. 환자리스트에 중복환자를 수정하면서 중복환자명인 경우 중복상태코드(중복순번)를 추가 var tempList = varResultLists; var dupList = []; // 정렬 실행 self.common.sortArrayObject( tempList, "patientNm", true); // 중복 환자 리스트 추출 for( var i = 1; i < tempList.length; i++){ // 중복 환자명이 있는 경우 if( tempList[i-1].patientNm == tempList[i].patientNm){ console.log( "중복환자명 : " + i + " : " + tempList[i].patientNm); // 중복리스트의 이미기록된 경우는 skip함 if( dupList[dupList.length - 1] != tempList[i].patientNm){ dupList.push( tempList[i].patientNm); } else { //console.log( "중복환자명(skip) : " + i + " : " + tempList[i].patientNm); } } } // 기존 환자 정보에 중복 여부 체크용 변수(dupNo) 추가, 0:중복 없음, 1,2,3,4,5,6,...(중복순번) for( var i = 0; i < varResultLists.length; i++){ varResultLists[i].dupNo = 0; for( var j = 0; j < dupList.length; j++){ if( varResultLists[i].patientNm == dupList[j]){ varResultLists[i].dupNo = j + 1; // 1,2,3,4,5,6,.... //console.log( "중복 dupNo : " + varResultLists[i].dupNo); break; } } } }; // 환자 정보 화면에 그리기 var drawPatientList = function(){ var lists = varResultLists; var strDisplayTemp = ""; $("#divResultRows").empty(); if( lists.length == 0){ strDisplayTemp = "
검색 결과가 없습니다.
" + "
"; } for( var i = 0; i < lists.length; i++){ var tmpDupCheck = lists[i].dupNo > 0 ? "same-name" : ""; // strDisplayTemp += "
" // + "
" // + "
" + lists[i].patientId + "
" // + "
" + lists[i].patientNm + tmpDupCheck + "
" // + "
" + lists[i].wardNm + "/" + lists[i].roomNm + "/" + lists[i].bedNm + "
" // + "
" + lists[i].age + "/" + lists[i].gender + "
" // + "
" // + "
" // + "
" + lists[i].deptNm + "/" + lists[i].doctorNm + "
" // + "
" + lists[i].specialistNm + "
" // + "
" + lists[i].hospitalizationDt + "
" // + "
" + lists[i].birthDt + "
" // + "
" // + "
" // ; strDisplayTemp += "
" + "
" + "
" + "
" + lists[i].patientId + "
" + "
" + lists[i].patientNm + "
" + "
" + lists[i].roomNm + "/" + lists[i].bedNm + "
" + "
" + lists[i].age + "/" + lists[i].gender + "
" + "
" + "
" + "
" + lists[i].deptNm + "/" + lists[i].doctorNm + "
" + "
" + lists[i].specialistNm + "
" + "
" + lists[i].hospitalizationDt + "
" + "
" + lists[i].birthDt + "
" + "
" + "
" + "
" ; //console.log( i + " : " + lists[i].patientId + " : " + lists[i].patientNm); } $("#divResultRows").append(strDisplayTemp); // element 추가 eventRowClick(); // 클릭 이벤트 처리 } //==== 환자 정보 조회 처리 } ==== //==== 컬럼 정렬 프로세스 { ==== // 컬럼 상태를 초기화 처리 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(); }; //==== 컬럼 정렬 프로세스 } ==== // 20190228 shinsunwoo 환자의 바코드 추출 toNative 호출 var readBarcode = function(){ console.log('call readBarcode'); var msg = { type : "command", functionType : "readBarcode", value : { callbackFn : "window.activeObj.readBarcodeCallBack" } }; 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); self.alert( "results.result = " + results.result); } else { console.log("readBarcode : failed"); self.alert( "readBarcode APP function 호출 오류 " ); } }; };