/** * mplus_mobile_clinic */ var mplus_mobile_clinic = function(){ //상속 mplus_common.call(this); var mplusPatient = new mplus_mobile_patient(); var mplusNursing = new mplus_nursing(); //super var self = this; //변수 var div = $('
'); var tr = $(''); var th = $(''); var td = $(''); var table = $('
'); var li = $('
  • '); var a = $(''); var span = $(''); var button = $(''); var deptList = new Array(); var wardList = new Array(); var requestToServer = true; var searchedPatientList = []; self.hospital.getDeptList('D', function(result) {deptList = result}); self.hospital.getDeptList('W', function(result) {wardList = result}); /** * 초기화 */ this.init = function(){ //여기서 모든화면 콤보박스데이터를 집어넣자!!! 그래야지 화면이동할때 속도가 오래걸리지않음!!! inInitDataSetting(); outInitDataSetting(); searchInitDataSetting(); inAddEvent(); inInit(); inSearchPatientList(); outAddEvent(); emerAddEvent(); searchAddEvent(); $('#clinicTab a[data-toggle="tab"]').unbind(); $('#clinicTab a[data-toggle="tab"]').on('click', function (e) { /*if($('#overlay').css('bottom')=='-49px'){*/ $('#openToggle').css({bottom:10}); //에니메이션을 넣으니 화면이 이동된후에 에니메이션 동작이 되어서 css만변경 $('#overlay').stop().animate({bottom:-290},500); $('#nursingPopup').stop().animate({bottom:-max},500); $('#newPopupFooter').css('display', 'none'); $('#patientList').css('margin-bottom', '0'); $('#searchPatientList').css('margin-bottom', '0'); $('#openToggle').removeClass('on'); $('#openToggle').find('.fa').removeClass('fa-chevron-down'); $('#openToggle').find('.fa').addClass('fa-chevron-up'); /*}*/ }); $('#clinicTab a[data-toggle="tab"]').on('shown.bs.tab', function (e) { $('.tab-pane').scrollTop(0); patientInfoInit(); if($("ul#clinicTab.nav-tabs li.active a").attr('aria-controls')=='tabIn'){ inInit(); inSearchPatientList(); }else if($("ul#clinicTab.nav-tabs li.active a").attr('aria-controls')=='tabOut'){ outInit(); outSearchPatientList(); }else if($("ul#clinicTab.nav-tabs li.active a").attr('aria-controls')=='tabEmer'){ emerInit(); emerInitDataSetting(); emerSearchPatientList(); }else if($("ul#clinicTab.nav-tabs li.active a").attr('aria-controls')=='tabSearch'){ searchInit(); }else{ /*slef.aler('에러메시지?');*/ } }); localStorage.setItem('treatType', treatType); }; var patientInfoInit = function(){ $('#divId').text(''); $('#divDiagName').text(''); $('#divOpName').text(''); $('#divOpDate').text(''); $('#divTreatDate').text(''); $('#divDoctorName').text(''); $('#tdNameNum').text(''); //로컬스토리지 정보는 없애야할지 테스트헤보고 넣기! }; /*----------------------- 입원 resource ----------------------*/ var $inTotalNumSpan = $('#inTotalNumSpan'), $inRoundBtn = $('#inRoundBtn'), $inInsertBtn = $('#inInsertBtn'), $rountInsertBtn = $('#rountInsertBtn'), $inSearchBtn = $('#inSearchBtn'), $inUlPatientList = $('#inUlPatientList'), $inSltDept = $('#inSltDept'), $inChkTotalView = $('#inChkTotalView'), $inBtnSortOpen = $('#inBtnSortOpen'), $inPidSearch = $('#inPidSearch'); var inRecentSearchType, //최근 검색했던 전체, 본인 여부(정렬시 필요) inPatientList = []; var inInit = function(){ treatType = 'I'; $inPidSearch.val(''); requestToServer = true; searchedPatientList = []; // TODO: 전문의 & 강사일 때만 회진 기능 이용할 수 있도록 구현하기 var jobKindCd = JSON.parse(localStorage.user).jobKindCd; $('#inChkTotalView').prop('checked', true); if(jobKindCd=='S' || jobKindCd=='G'){ //jobKindCd: S(전문의), G(강사) $inRoundBtn.css('display', 'initial'); $('#roundBtnWrap').css('display', 'initial'); if(jobKindCd=='S'){ $('#inChkTotalView').prop('checked', false); } }else{ $inRoundBtn.css('display', 'none'); $('#roundBtnWrap').css('display', 'none'); } var sortList = [{key: 'wardNm', type: 'string', value: '병동순'}, {key: 'age', type: 'number', value: '연령순'}, {key: 'patientNm', type: 'string', value: '이름순'}]; inRecentSearchType = ''; inPatientList = []; $inSltDept.val(localStorage.selectDeptCode); $inTotalNumSpan.text(0); $inUlPatientList.empty(); sortInit(sortList); $('#sortConfirmBtn').unbind(); $('#sortConfirmBtn').on("click", function(e){ $('#sortModal').modal('hide'); inSortPatientList($('#sltSort').val(), $('#sltSort option:selected').attr('type'), $('input[type="radio"][name="sortRadio"]:checked').val()); $('.header span').css('display', 'none'); $('.header.sort_'+$('#sltSort').val()+' .sort-icon-'+$('input[type="radio"][name="sortRadio"]:checked').val()).css('display', 'inline-block'); }); // 태블릿일 때는 회진 체크박스를 맨 앞으로 배치한다 if( self.isTablet() ) { $('#inPatientHeaderTablet').css('display', 'block'); $('#inPatientHeaderPhone').css('display', 'none'); }else{ $('#inPatientHeaderTablet').css('display', 'none'); $('#inPatientHeaderPhone').css('display', 'block'); } }; /** * 이벤트등록 */ var inAddEvent = function(){ $inRoundBtn.on('click', function(e){ if( self.isTablet() ) { $('#roundAllChkBoxWrapTablet').css('display', 'block'); }else{ $('#roundAllChkBoxWrapPhone').css('display', 'block'); $('.in-date-wrap').removeClass('pdr0').addClass('pd0'); $('.bed-wrap').removeClass('col-xs-5').addClass('col-xs-4'); $('.patientNm-wrap').removeClass('col-xs-4').addClass('col-xs-5'); $('.doctor-wrap').removeClass('col-xs-4').removeClass('pd0').addClass('col-xs-3').addClass('pdr0'); } $('.chk-box-wrap').css('display', 'block'); $('.empty-wrap').css('display', 'none'); $inRoundBtn.css('display', 'none'); $inInsertBtn.css('display', 'initial'); $('#roundAllChkBox').prop('checked', true).trigger('change'); }); $inInsertBtn.on('click', function(e){ if($('[id*=check_]:checked').length==0){ self.alert('환자를 선택해주세요.'); return; }; $('#dateRound')[0].value = self.util.toDate(new Date()); $('#timeRound')[0].value = '--:--'; $('#roundMemo').text('환자 및 보호자분은 질문사항을 미리 준비해 주시고 병실에서 대기하여 주시기 바랍니다.'); $('#modalRoundInsert').modal('show'); }); $rountInsertBtn.on('click', function(e){ //회진시간입력 로직 호출 var currentTime = new Date(); currentTime.setSeconds(00); if($('#dateRound').val()=='' || $('#timeRound').val()==''){ self.alert('회진시간을 입력해주세요.'); return; } var roundTime = new Date($('#dateRound').val() +' '+ $('#timeRound').val()); if(currentTime.getTime() - roundTime.getTime() > 0){ self.alert('회진시간은 현재시간 이후로 설정해주세요.'); return; } var patientInfo = JSON.parse(localStorage.user); var selectPatientList = []; var executeRoundFailList = []; var param = {'round': []}; for(var i=0; i<$('[id*=check_]:checked').length; i++){ var commentMsg = ''; if(patientInfo.hospitalCd=='10'){ commentMsg = '<강남세브란스병원 회진안내>\n'; }else{ commentMsg = '<세브란스병원 회진안내>\n'; } commentMsg = commentMsg + moment(currentTime).format('MM월 DD일') +' '+ $('#inSltDept option:selected').text() + ' ' + patientInfo.userNm + '선생님 ' + self.util.restoreRoundTime($('#timeRound').val()) + '부터 회진 예정입니다. \n' + '<전달사항>\n' + $('#roundMemo').val().replace( /\r?\n/g, "\n" ); var roundPatientInfo = { 'hospitalCd': localStorage.hospitalCd, //'patientId': $('[id*=check_]:checked')[i].value, // 20180622 shinsunwoo value 가 "ALL"로 나오는 오류로 수정 'patientId': inPatientList[$('[id*=check_]:checked')[i].id.split('_')[1]].patientId, 'inputDt': moment(currentTime).format('YYYYMMDD'), 'inputTm': moment(currentTime).format('HHmm00'), 'roundTreatMemo': commentMsg, 'roundTreatDt': moment($('#dateRound').val()).format('YYYYMMDD'), 'roundTreatTm': $('#timeRound').val().replace(':', '')+'00', 'departmentCd': inPatientList[$('[id*=check_]:checked')[i].id.split('_')[1]].departmentCd, 'userId': patientInfo.userId}; selectPatientList.push(inPatientList[$('[id*=check_]:checked')[i].id.split('_')[1]]); param.round.push(roundPatientInfo); } //실패 케이스 처리 var executeRoundTreatResult = self.treatment.executeRoundTreat(param); if( executeRoundTreatResult.result == undefined ){ $('#modalRoundInsert').modal('hide'); self.alert(executeRoundTreatResult.msg); return; } executeRoundTreatResult = executeRoundTreatResult.result; for(var j=0; j0){ var alertMsg = ''; $('#modalRoundInsert').modal('hide'); $('[id*=check_]').prop('checked', false); for(var j=0; j'; } alertMsg = alertMsg + '환자 회진정보 입력 실패하였습니다.'; self.alert(alertMsg); }else{ $inRoundBtn.css('display', 'initial'); $inInsertBtn.css('display', 'none'); $('#modalRoundInsert').modal('hide'); self.alert('환자 회진정보가 입력되었습니다.'); $('#roundAllChkBoxWrapPhone').css('display', 'none'); $('#roundAllChkBoxWrapTablet').css('display', 'none'); $('.chk-box-wrap').css('display', 'none'); $('.empty-wrap').css('display', 'block'); if(!self.isTablet()){ $('.in-date-wrap').removeClass('pd0').addClass('pdr0'); $('.bed-wrap').removeClass('col-xs-4').addClass('col-xs-5'); $('.patientNm-wrap').removeClass('col-xs-5').addClass('col-xs-4'); $('.doctor-wrap').removeClass('col-xs-3').removeClass('pdr0').addClass('col-xs-4').addClass('pd0'); } } }); $inSearchBtn.on('click', function(e){ $('.header span').css('display', 'none'); // 검색조건(진료과, 본인or전체) 변동사항이 없고, 환자번호 검색어가 입력된경우 // 서버로 따로 요청하지 않고 이미 받은 데이터에서 환자번호 필터링만 한다. if( !requestToServer && $inPidSearch.val().length > 0) { inPatientList = searchedPatientList.filter(val => {return val.patientId.indexOf($inPidSearch.val()) >= 0;}); inBindingPatientList(inRecentSearchType, inPatientList, null); } /*else if (!requestToServer && $inPidSearch.val().length == 0) { inPatientList = searchedPatientList; inBindingPatientList(inRecentSearchType, inPatientList, null); } */else { inSearchPatientList(); } }); $inBtnSortOpen.on("click", function(e){ $('#sortModal').modal('show'); }); $inPidSearch.on('click', function(e){ e.currentTarget.value = ''; }); $inSltDept.on('change', function(e){ requestToServer = true; }); $inChkTotalView.on('change', function(e){ requestToServer = true; }); }; /** * 기초데이터 셋팅 */ var inInitDataSetting = function(){ /* var sltList = deptList.concat(wardList); */ var deptList = JSON.parse(localStorage.user).departmentList; var sltList = deptList; $inSltDept.empty(); for(var i=0; i').clone().attr('value', sltList[i].departmentCd) .attr('departmentTyp', sltList[i].departmentTyp) .text(sltList[i].departmentNm); $inSltDept.append(option); } }; var inSearchPatientList = function(){ inRecentSearchType = $inChkTotalView.prop('checked')? 'all': 'mine'; $inUlPatientList.empty(); inPatientList = []; patientInfoInit(); //과별, 병동별 입원환자 조회 if($inChkTotalView.prop('checked')){ var type = $('#inSltDept option[value='+$('#inSltDept').val()+']').attr('departmentTyp'); var param; if(type=='D'){ param = { departmentCd: $inSltDept.val() }; }else{ param = { wardCd: $inSltDept.val() }; } self.treatment.getInPatListPerDeptOrWard(param, 'all', 'in'); /*bindingPatientList('all', patientList);*/ //과,병동 & 의사별 입원환자 조회 }else{ var type = $('#inSltDept option[value='+$('#inSltDept').val()+']').attr('departmentTyp'); var param; if(type=='D'){ param = { departmentCd: $inSltDept.val(), doctorId: loginUserId }; }else{ param = { wardCd: $inSltDept.val(), doctorId: loginUserId }; } self.treatment.getInPatListPerDDOrWD(param, 'mine'); /*patientList = self.treatment.getInPatListPerDDOrWD(param); bindingPatientList('mine', patientList);*/ } }; var inSortPatientList = function(key, type, method){ inPatientList = self.util.sortObj(inPatientList, key, type, method); inBindingPatientList(inRecentSearchType, inPatientList, null); }; inBindingPatientList = function(type, bindPatientList, extraMsg){ //all: 전체, mine: 본인 if( $inPidSearch.val().length > 0 ) { inPatientList = bindPatientList.filter(val => {return val.patientId.indexOf($inPidSearch.val()) >= 0;}); } else { inPatientList = bindPatientList; } if( requestToServer ) { searchedPatientList = bindPatientList; requestToServer = false; } if(!self.isTablet()){ $('.in-date-wrap').removeClass('pd0').addClass('pdr0'); $('.bed-wrap').removeClass('col-xs-4').addClass('col-xs-5'); $('.patientNm-wrap').removeClass('col-xs-5').addClass('col-xs-4'); $('.doctor-wrap').removeClass('col-xs-3').removeClass('pdr0').addClass('col-xs-4').addClass('pd0'); } $inUlPatientList.empty(); $inTotalNumSpan.text(inPatientList.length); if(inPatientList.length==0){ $inUlPatientList.append(li.clone().append(div.clone().addClass('text-center no-result').text('―'))); } $inRoundBtn.css('display', 'initial'); $inInsertBtn.css('display', 'none'); $('#roundAllChkBoxWrapPhone').css('display', 'none'); $('#roundAllChkBoxWrapTablet').css('display', 'none'); for(var i=0; i').attr('id', 'check_' + i).attr('for', 'check_' + i); var divRound = div.clone().addClass('num_b checkbox3 checkbox-sm checkbox-check checkbox-light col-xs-1 col-sm-1 pdr0 chk-box-wrap').append(checkbox); var divDoctor = div.clone().addClass('doctor col-xs-2 col-sm-2 pd0 doctor-wrap').text(inPatientList[i].departmentCd + ' / ' + inPatientList[i].doctorNm); var divDate = div.clone().addClass('date col-xs-3 col-sm-3 pdr0 in-date-wrap letter-control').text((inPatientList[i].inDt!=undefined&&inPatientList[i].inDt!=null&&inPatientList[i].inDt!=''? moment(inPatientList[i].inDt).format('YYYY-MM-DD'):'') + ' HOD ' + inPatientList[i].inDay); var divFirstRow = div12Row1.clone().append(divRound).append(divDay).append(divDate).append(divName).append(divNum).append(divDoctor); divPatientInfo.append(divFirstRow); } else { var div12Row1 = div.clone().addClass('col-xs-12 col-sm-8 pd0'); var div12Row2 = div.clone().addClass('col-xs-12 col-sm-4 pd0'); var divNum = div.clone().addClass('col-xs-3 col-sm-2 sexage').append( span.clone().text( (inPatientList[i].gender=='F'? 'F':'M') + ' / '+ inPatientList[i].age ) ); var divDay = div.clone().addClass('day col-xs-5 col-sm-3 pdr0 bed-wrap').text(inPatientList[i].wardNm + '/' + inPatientList[i].roomNm + '/' + inPatientList[i].bedNm); var divName = div.clone().addClass('name col-xs-4 col-sm-5 pd0 patientNm-wrap').text(inPatientList[i].patientNm + ' ' + inPatientList[i].patientId); var divEmpty = div.clone().addClass('clearfix visible-xs-block').text(' '); var checkbox = $('').attr('id', 'check_' + i).attr('for', 'check_' + i); var divRound = div.clone().addClass('num_b checkbox3 checkbox-sm checkbox-check checkbox-light col-xs-4 col-sm-2 pdr0 chk-box-wrap').append(checkbox); var divEmpty1 = div.clone().addClass('doctor col-xs-3 hidden-sm hidden-md hidden-lg empty-wrap').text(''); var divDoctor = div.clone().addClass('doctor col-xs-4 col-sm-5 pd0 doctor-wrap').text(inPatientList[i].departmentCd + ' / ' + inPatientList[i].doctorNm); var divDate = div.clone().addClass('date col-xs-5 col-sm-5 pdr0 in-date-wrap letter-control').text((inPatientList[i].inDt!=undefined&&inPatientList[i].inDt!=null&&inPatientList[i].inDt!=''? moment(inPatientList[i].inDt).format('YYYY-MM-DD'):'') + ' HOD ' + inPatientList[i].inDay); var divFirstRow = div12Row1.clone().append(divDay).append(divName).append(divNum); var divSecondRow = div12Row2.clone().append(divRound).append(divDate).append(divDoctor).append(divEmpty).append(divEmpty1); divPatientInfo.append(divFirstRow).append(divSecondRow); $('#inDateWrap').before($('#roundAllChkBoxWrapPhone')); } $inUlPatientList.append(li.clone().append(a.clone().addClass('list-group-item').attr('patientNo', i).attr('patientId', inPatientList[i].patientId).append(divPatientInfo))); $('.chk-box-wrap').css('display', 'none'); $('#roundAllChkBox').unbind(); $('#roundAllChkBox').on('change', function(e){ $('[id*=check_]').prop('checked', e.currentTarget.checked); }); }; $('#inUlPatientList .list-group-item').on('click',function(){ if(event.toElement.id.indexOf('check')>-1){ return; } $('.list-group-item').removeClass('active'); $(this).addClass('active'); var patientNo = event.currentTarget.attributes.patientNo.value; var patientInfo = inPatientList[patientNo]; patientInfo.treatDt=patientInfo.inDt; patientInfo.treatTyp=treatType; localStorage.setItem('patientInfo', JSON.stringify(patientInfo)); $('#nursingPopup [id*=popContent]').removeClass('in'); $('#nursingPopup #popContentNursingRecode').addClass('in'); if(!$('#openToggle').is('.on')){ $('#nursingRecodeTab.nav-tabs a[href="#tabInfo"]').tab('show'); }else{ mplusNursing.reInit($("ul#nursingRecodeTab.nav-tabs li.active a").attr('aria-controls')); } $('#newPopupFooter').css('display', 'block'); /*$('#nursingPopup').css('display', 'block');*/ $('.list-group-item').removeClass('active'); $(this).addClass('active'); // 선택한 환자의 스크롤 위치 구하기 var pos = $('#tabIn').scrollTop() + $('#inUlPatientList li a.list-group-item[patientno='+patientNo+']').offset().top; $('#patientList').css('margin-bottom', '100vh'); if( self.isTablet() ) { // 적절한 위치로 이동 $('#tabIn').animate({scrollTop: pos - 150}, 500); $('#nursingPopup').height(max2-245); $('#nursingPopup .tab-content .tab-pane').height(max2-317); $('#openToggle').stop().animate({bottom: wh-280 },500); }else{ // 적절한 위치로 이동 $('#tabIn').animate({scrollTop: pos - 77}, 500); $('#nursingPopup').height(max2-105); $('#nursingPopup .tab-content .tab-pane').height(max2-177); $('#openToggle').stop().animate({bottom: wh-140 },500); } $('#openToggle').addClass('on'); $('#openToggle').find('.fa').removeClass('fa-chevron-up'); $('#openToggle').find('.fa').addClass('fa-chevron-down'); $('#nursingPopup').stop().animate({bottom:0},500); $('#nursingPopup').css({'display': 'block'}); mplusNursing.init(); var patientInfo = inPatientList[event.currentTarget.attributes.patientNo.value]; patientInfo.treatTyp=treatType; localStorage.setItem('patientInfo', JSON.stringify(patientInfo)); var param = { hospitalCd: localStorage.hospitalCd, patientId: patientInfo.patientId }; var patientInfoData = self.nursing.getPatientInfo(param); bindingPatientDetail(patientInfo, patientInfoData); // 다음이벤트 (환자리스트가 아닌 화면영역을 클릭했을 때 토글 내려가게 하는 기능) 동작을 막기 위함 return false; }); }; /*----------------------- 입원 resource 종료 ----------------------*/ /*----------------------- 외래 resource ----------------------*/ var $outTotalNumSpan = $('#outTotalNumSpan'), $outSearchDate = $('#outSearchDate'), $outSearchBtn = $('#outSearchBtn'), $outUlPatientList = $('#outUlPatientList'), $outBtnSortOpen = $('#outBtnSortOpen'), $outSltDept = $('#outSltDept'), $outSltDoctor = $('#outSltDoctor'), $outPidSearch = $('#outPidSearch'); var outRecentSearchType, //최근 검색했던 전체, 본인 여부(정렬시 필요) outPatientList = []; var treatType = ''; var outInit = function(){ treatType = 'O'; $outPidSearch.val(''); requestToServer = true; searchedPatientList = []; $outSearchDate.val(moment(new Date()).format('YYYY-MM-DD')); var sortList = [{key: 'age', type: 'number', value: '연령순'}, {key: 'patientNm', type: 'string', value: '이름순'}, {key: 'treatTm', type: 'number', value: '진료시간순'}]; outRecentSearchType = ''; outPatientList = []; $outSltDept.val(localStorage.selectDeptCode).trigger('change'); if($outSltDept.val()==null){ $outSltDept[0].selectedIndex = 0; } $outTotalNumSpan.text(0); $outUlPatientList.empty(); sortInit(sortList); $('#sortConfirmBtn').unbind(); $('#sortConfirmBtn').on("click", function(e){ $('#sortModal').modal('hide'); outSortPatientList($('#sltSort').val(), $('#sltSort option:selected').attr('type'), $('input[type="radio"][name="sortRadio"]:checked').val()); $('.header span').css('display', 'none'); $('.header.sort_'+$('#sltSort').val()+' .sort-icon-'+$('input[type="radio"][name="sortRadio"]:checked').val()).css('display', 'inline-block'); }); $('#outChkTotalView').prop('checked', true); if(jobKindCd=='S'){ $('#outChkTotalView').prop('checked', false); $('#outSltDoctor').val(JSON.parse(localStorage.user).userId); if($('#outSltDoctor').val()==null) $('#outSltDoctor').val(' '); } }; var outAddEvent = function() { $outSearchBtn.on("click", function(e) { $('.header span').css('display', 'none'); // 검색조건(진료과, 진료의, 진료일) 변동사항이 없고, 환자번호 검색어가 입력된경우 // 서버로 따로 요청하지 않고 이미 받은 데이터에서 환자번호 필터링만 한다. if( !requestToServer && $outPidSearch.val().length > 0) { outPatientList = searchedPatientList.filter(val => {return val.patientId.indexOf($outPidSearch.val()) >= 0;}); outBindingPatientList(outPatientList, null); } else { outSearchPatientList(); } }); $outBtnSortOpen.on("click", function(e){ $('#sortModal').modal('show'); }); $outSltDept.on("change", function(e){ if( e.currentTarget.value == '' ) return; var doctorList = self.hospital.getDoctorList({ departmentCd: e.currentTarget.value }); $outSltDoctor.empty(); var totalOption = $('').clone().attr('value', ' ').text('전체'); $outSltDoctor.append(totalOption); for(var i=0; i').clone().attr('value', doctorList[i].doctorId).text(doctorList[i].doctorNm); $outSltDoctor.append(option); } }); $outPidSearch.on('click', function(e){ e.currentTarget.value = ''; }); $outSearchDate.on('change', function(e){ requestToServer = true; }); $outSltDept.on('change', function(e){ requestToServer = true; }); $outSltDoctor.on('change', function(e){ requestToServer = true; }); }; var outInitDataSetting = function(){ var deptList = JSON.parse(localStorage.user).departmentList; var userJobKindCd = JSON.parse(localStorage.user).jobKindCd; var sltList = deptList; $outSltDept.empty(); for(var i=0; i').clone().attr('value', sltList[i].departmentCd) .text(sltList[i].departmentNm); $outSltDept.append(option); } } }; var outSearchPatientList = function() { if($outSearchDate.val()==''){ self.alert('조회 일자를 입력해주세요.'); return; } $outUlPatientList.empty(); outPatientList = []; patientInfoInit(); //과별 외래환자 조회 if($outSltDoctor.val().trim() == ''){ var param; param = { treatDt: moment($outSearchDate.val()).format('YYYYMMDD'), departmentCd: $outSltDept.val() }; self.treatment.getOutPatList(param, 'out'); }else{ //전체해제, 진료과&병동선택 var param; param = { treatDt: moment($outSearchDate.val()).format('YYYYMMDD'), departmentCd: $outSltDept.val(), doctorId: $outSltDoctor.val() }; self.treatment.getOutPatList(param, 'out'); } }; var outSortPatientList = function(key, type, method){ var sortPatientList = self.util.sortObj(outPatientList, key, type, method); outBindingPatientList(sortPatientList, null); }; outBindingPatientList = function(bindPatientList, extraMsg){ //all: 전체, mine: 본인 if( $outPidSearch.val().length > 0 ) { outPatientList = bindPatientList.filter(val => {return val.patientId.indexOf($outPidSearch.val()) >= 0;}); } else { outPatientList = bindPatientList; } if( requestToServer ) { searchedPatientList = bindPatientList; requestToServer = false; } $outUlPatientList.empty(); $outTotalNumSpan.text(outPatientList.length); if(outPatientList.length==0){ $outUlPatientList.append(li.clone().append(div.clone().addClass('text-center no-result').text('―'))); } for(var i=0; i").text("퇴실사유: ")).append(span.clone().text(outPatientList[i].outRsn)); divOutReasonWrap.append(div.clone().addClass('col-xs-3 col-sm-2')).append(divOutReason); divRow.append(divOutReasonWrap); } $outUlPatientList.append(li.clone().append(divRow)); } $('#outPatientList .list-group-item').on('click',function(){ if(event.toElement.id.indexOf('check')>-1){ return; } $('.list-group-item').removeClass('active'); $(this).addClass('active'); var patientNo = event.currentTarget.attributes.patientNo.value; var patientInfo = outPatientList[patientNo]; patientInfo.treatDt=patientInfo.treatDt; patientInfo.treatTyp=treatType; localStorage.setItem('patientInfo', JSON.stringify(patientInfo)); $('#nursingPopup [id*=popContent]').removeClass('in'); $('#nursingPopup #popContentNursingRecode').addClass('in'); if(!$('#openToggle').is('.on')){ $('#nursingRecodeTab.nav-tabs a[href="#tabInfo"]').tab('show'); }else{ mplusNursing.reInit($("ul#nursingRecodeTab.nav-tabs li.active a").attr('aria-controls')); } $('#newPopupFooter').css('display', 'block'); /*$('#nursingPopup').css('display', 'block');*/ $('.list-group-item').removeClass('active'); $(this).addClass('active'); // 선택한 환자의 스크롤 위치 구하기 var pos = $('#tabOut').scrollTop() + $('#outUlPatientList li a.list-group-item[patientno='+patientNo+']').offset().top; $('#outPatientList').css('margin-bottom', '100vh'); if( self.isTablet() ) { // 적절한 위치로 이동 $('#tabOut').animate({scrollTop: pos - 150}, 500); $('#nursingPopup').height(max2-245); $('#nursingPopup .tab-content .tab-pane').height(max2-317); $('#openToggle').stop().animate({bottom: wh-280 },500); }else{ // 적절한 위치로 이동 $('#tabOut').animate({scrollTop: pos - 77}, 500); $('#nursingPopup').height(max2-105); $('#nursingPopup .tab-content .tab-pane').height(max2-177); $('#openToggle').stop().animate({bottom: wh-140 },500); } $('#openToggle').addClass('on'); $('#openToggle').find('.fa').removeClass('fa-chevron-up'); $('#openToggle').find('.fa').addClass('fa-chevron-down'); $('#nursingPopup').stop().animate({bottom:0},500); $('#nursingPopup').css({'display': 'block'}); mplusNursing.init(); var param = { hospitalCd: localStorage.hospitalCd, patientId: patientInfo.patientId }; var patientInfoData = self.nursing.getPatientInfo(param); bindingPatientDetail(patientInfo, patientInfoData); // 다음이벤트 (환자리스트가 아닌 화면영역을 클릭했을 때 토글 내려가게 하는 기능) 동작을 막기 위함 return false; /*$('.list-group-item').removeClass('active'); $(this).addClass('active'); $('#openToggle').stop().animate({bottom:240},500); $('#overlay').stop().animate({bottom:-49},500); $(this).addClass('active'); $('#footer').css('overflow','visible'); $('#openToggle').addClass('on'); $('#openToggle').find('.fa').removeClass('fa-chevron-up'); $('#openToggle').find('.fa').addClass('fa-chevron-down'); var patientInfo = outPatientList[event.currentTarget.attributes.patientNo.value]; localStorage.setItem('patientInfo', JSON.stringify(patientInfo)); var param = { patientId: patientInfo.patientId, departmentCd: patientInfo.departmentCd, treatTyp: treatType, treatDt: patientInfo.treatDt}; self.patient.getTreatInfo(param);*/ }); }; /*----------------------- 외래 resource 종료 ----------------------*/ /*----------------------- 응급 resource ----------------------*/ var $emerTotalNumSpan = $('#emerTotalNumSpan'), $emerSearchBtn = $('#emerSearchBtn'), $emerUlPatientList = $('#emerUlPatientList'), $emerBtnSortOpen = $('#emerBtnSortOpen'), $emerSltDept = $('#emerSltDept'), $emerPidSearch = $('#emerPidSearch'); var emerPatientList = []; var emerInit = function(){ treatType = 'E'; $emerPidSearch.val(''); requestToServer = true; var sortList = [{key: 'age', type: 'number', value: '연령순'}, {key: 'patientNm', type: 'string', value: '이름순'}]; emerPatientList = []; $emerUlPatientList.empty(); $emerTotalNumSpan.text(0); sortInit(sortList); $('#sortConfirmBtn').unbind(); $('#sortConfirmBtn').on("click", function(e){ $('#sortModal').modal('hide'); emerSortPatientList($('#sltSort').val(), $('#sltSort option:selected').attr('type'), $('input[type="radio"][name="sortRadio"]:checked').val()); $('.header span').css('display', 'none'); $('.header.sort_'+$('#sltSort').val()+' .sort-icon-'+$('input[type="radio"][name="sortRadio"]:checked').val()).css('display', 'inline-block'); }); }; /** * 이벤트등록 */ var emerAddEvent = function(){ $emerSearchBtn.on('click', function(e){ $('.header span').css('display', 'none'); // 검색조건(진료과) 변동사항이 없고, 환자번호 검색어가 입력된경우 // 서버로 따로 요청하지 않고 이미 받은 데이터에서 환자번호 필터링만 한다. if( !requestToServer && $emerPidSearch.val().length > 0) { emerPatientList = searchedPatientList.filter(val => {return val.patientId.indexOf($emerPidSearch.val()) >= 0;}); emerBindingPatientList(emerPatientList, null); } else { emerSearchPatientList(); } }); $emerBtnSortOpen.on("click", function(e){ $('#sortModal').modal('show'); }); $emerPidSearch.on('click', function(e){ e.currentTarget.value = ''; }); $emerSltDept.on('change', function(e){ requestToServer = true; }); }; /** * 기초데이터 셋팅 * 20180727 shinsunwoo 전체 옵션의 기본값을 'A'로 지정 */ var emerInitDataSetting = function(){ var sltList = deptList; $('#emerSltDept').empty(); var totalOption = $('').clone().attr('value', 'A') .text('전체'); $('#emerSltDept').append(totalOption); for(var i=0; i').clone().attr('value', sltList[i].departmentCd) .text(sltList[i].departmentNm); $('#emerSltDept').append(option); } $('#emerSltDept').val('A'); }; var emerSearchPatientList = function(){ $emerUlPatientList.empty(); emerPatientList = []; patientInfoInit(); var param = { departmentCd: $('#emerSltDept').val()==null? ' ': $('#emerSltDept').val() }; self.treatment.getErPatList(param, 'all'); /*bindingPatientList('all', patientList);*/ }; var emerSortPatientList = function(key, type, method){ emerPatientList = self.util.sortObj(emerPatientList, key, type, method); emerBindingPatientList(emerPatientList, null); }; emerBindingPatientList = function(bindPatientList, extraMsg){ //all: 전체 if( $emerPidSearch.val().length > 0 ) { emerPatientList = bindPatientList.filter(val => {return val.patientId.indexOf($emerPidSearch.val()) >= 0;}); } else { emerPatientList = bindPatientList; } if( requestToServer ) { searchedPatientList = bindPatientList; requestToServer = false; } $emerUlPatientList.empty(); $emerTotalNumSpan.text(emerPatientList.length); if(emerPatientList.length==0){ $emerUlPatientList.append(li.clone().append(div.clone().addClass('text-center no-result').text('―'))); } for(var i=0; i").text("퇴실사유: ")).append(span.clone().text(emerPatientList[i].outRsn)); divOutReasonWrap.append(div.clone().addClass('col-xs-3 col-sm-2')).append(divOutReason); divRow.append(divOutReasonWrap); } $emerUlPatientList.append(li.clone().append(divRow)); } $('#emerPatientList .list-group-item').on('click',function(){ if(event.toElement.id.indexOf('check')>-1){ return; } $('.list-group-item').removeClass('active'); $(this).addClass('active'); var patientNo = event.currentTarget.attributes.patientNo.value; var patientInfo = emerPatientList[patientNo]; patientInfo.treatDt=patientInfo.treatDt; patientInfo.treatTyp=treatType; localStorage.setItem('patientInfo', JSON.stringify(patientInfo)); $('#nursingPopup [id*=popContent]').removeClass('in'); $('#nursingPopup #popContentNursingRecode').addClass('in'); if(!$('#openToggle').is('.on')){ $('#nursingRecodeTab.nav-tabs a[href="#tabInfo"]').tab('show'); }else{ mplusNursing.reInit($("ul#nursingRecodeTab.nav-tabs li.active a").attr('aria-controls')); } $('#newPopupFooter').css('display', 'block'); /*$('#nursingPopup').css('display', 'block');*/ $('.list-group-item').removeClass('active'); $(this).addClass('active'); // 선택한 환자의 스크롤 위치 구하기 var pos = $('#tabEmer').scrollTop() + $('#emerUlPatientList li a.list-group-item[patientno='+patientNo+']').offset().top; $('#emerPatientList').css('margin-bottom', '100vh'); if( self.isTablet() ) { // 적절한 위치로 이동 $('#tabEmer').animate({scrollTop: pos - 150}, 500); $('#nursingPopup').height(max2-245); $('#nursingPopup .tab-content .tab-pane').height(max2-317); $('#openToggle').stop().animate({bottom: wh-280 },500); }else{ // 적절한 위치로 이동 $('#tabEmer').animate({scrollTop: pos - 77}, 500); $('#nursingPopup').height(max2-105); $('#nursingPopup .tab-content .tab-pane').height(max2-177); $('#openToggle').stop().animate({bottom: wh-140 },500); }; $('#openToggle').addClass('on'); $('#openToggle').find('.fa').removeClass('fa-chevron-up'); $('#openToggle').find('.fa').addClass('fa-chevron-down'); $('#nursingPopup').stop().animate({bottom:0},500); $('#nursingPopup').css({'display': 'block'}); mplusNursing.init(); var param = { hospitalCd: localStorage.hospitalCd, patientId: patientInfo.patientId }; var patientInfoData = self.nursing.getPatientInfo(param); bindingPatientDetail(patientInfo, patientInfoData); // 다음이벤트 (환자리스트가 아닌 화면영역을 클릭했을 때 토글 내려가게 하는 기능) 동작을 막기 위함 return false; /*$('.list-group-item').removeClass('active'); $(this).addClass('active'); $('#openToggle').stop().animate({bottom:240},500); $('#overlay').stop().animate({bottom:-49},500); $(this).addClass('active'); $('#footer').css('overflow','visible'); $('#openToggle').addClass('on'); $('#openToggle').find('.fa').removeClass('fa-chevron-up'); $('#openToggle').find('.fa').addClass('fa-chevron-down'); var patientInfo = emerPatientList[event.currentTarget.attributes.patientNo.value]; localStorage.setItem('patientInfo', JSON.stringify(patientInfo)); var param = { patientId: patientInfo.patientId, departmentCd: patientInfo.departmentCd, treatTyp: treatType, treatDt: patientInfo.treatDt}; self.patient.getTreatInfo(param);*/ }); }; /*----------------------- 응급 resource 종료 ----------------------*/ /*----------------------- 검색 resource ----------------------*/ var $searchSearchBtn = $('#searchSearchBtn'), $searchSearchDate = $('#searchSearchDate'), $searchUlPatientList = $('#searchUlPatientList'), $searchSearchConditionUpper = $('#searchSearchConditionUpper'), $searchSearchConditionLower = $('#searchSearchConditionLower'), $searchSearchConditionType = $('#searchSearchConditionType'); var searchPatientList = []; var searchInit = function(){ treatType = 'S'; $searchSearchDate.val(moment(new Date()).format('YYYY-MM-DD')); $('input[type="radio"][name="plist-search"][value="treat"]').prop('checked', true); searchSearchTypeChange('treat'); var sortList = [{key: 'wardNm', type: 'string', value: '병동순'}, {key: 'age', type: 'number', value: '연령순'}, {key: 'patientNm', type: 'string', value: '이름순'}]; searchPatientList = []; $searchUlPatientList.empty(); sortInit(sortList); if( self.isTablet() ){ $('#searchPatientHeaderPhone').css('display', 'none'); $('#searchPatientHeaderTablet').css('display', 'block'); }else{ $('#searchPatientHeaderPhone').css('display', 'block'); $('#searchPatientHeaderTablet').css('display', 'none'); } } /** * 이벤트등록 */ var searchAddEvent = function(){ $searchSearchBtn.on("click", function(e){ searchSearchPatientList(); }); /*$searchRecentSearchBtn.on("click", function(e){ searchSearchPatientList(); });*/ $('input[type="radio"][name="plist-search"]').on('change', function(e) { patientInfoInit(); searchSearchTypeChange(e.currentTarget.value); }); $('input[type="radio"][name="treatment"]').on('change', function(e) { $searchUlPatientList.empty(); searchPatientList = []; patientInfoInit(); if(e.currentTarget.value=='in'){ $searchSearchDate.attr('readonly', true); $('.treat-header').text('입원일'); }else{ $searchSearchDate.val(moment(new Date()).format('YYYY-MM-DD')); $searchSearchDate.attr('readonly', false); $('.treat-header').text('진료일'); } }); }; /** * 기초데이터 셋팅 */ var searchInitDataSetting = function(){ }; /** * 검색 상태변경 이벤트 */ var searchSearchTypeChange = function(type){ $searchSearchConditionUpper.empty(); $searchSearchConditionLower.empty(); $searchUlPatientList.empty(); searchPatientList = []; var conditionUpper; var conditionLower; if(type == 'treat'){ $searchSearchConditionUpper.attr('class', 'col-xs-5 pdr5'); $searchSearchConditionLower.attr('class', 'col-xs-5 pdl5'); conditionUpper = $('').clone().addClass('form-control').attr('id', 'searchSltDept'); for(var i=0; i').clone().attr('value', deptList[i].departmentCd) .text(deptList[i].departmentNm); conditionUpper.append(option); } conditionLower = $('').clone().addClass('form-control').attr('id', 'search_sltDoctor'); $searchSearchConditionType.css('display', 'block'); $searchSearchConditionUpper.html(conditionUpper); $searchSearchConditionLower.html(conditionLower); $('#searchSltDept').change(function(e) { var doctorList = self.hospital.getDoctorList({ departmentCd: e.currentTarget.value }); $('#search_sltDoctor').empty(); for(var i=0; i').clone().attr('value', doctorList[i].doctorId) .text(doctorList[i].doctorNm); conditionLower.append(option); } $searchSearchConditionLower.html(conditionLower); }); $('#searchSltDept').change(); $('input[type="radio"][name="treatment"][value="in"]').prop("checked", true); $searchSearchDate.val(moment(new Date()).format('YYYY-MM-DD')); $searchSearchDate.attr('readonly', true); }else if(type == 'hospital'){ $searchSearchConditionUpper.attr('class', 'col-xs-5 pdr5'); $searchSearchConditionLower.attr('class', 'col-xs-5 pdl5'); conditionUpper = $('').clone().addClass('form-control').attr('id', 'search_sltWard'); for(var i=0; i').clone().attr('value', wardList[i].departmentCd) .text(wardList[i].departmentNm); conditionUpper.append(option); } conditionLower = $('').clone().addClass('form-control').attr('id', 'searchSltDept'); for(var i=0; i').clone().attr('value', deptList[i].departmentCd) .text(deptList[i].departmentNm); conditionLower.append(option); } $searchSearchConditionType.css('display', 'none'); $searchSearchConditionUpper.html(conditionUpper); $searchSearchConditionLower.html(conditionLower); }else{ $searchSearchConditionUpper.attr('class', 'col-xs-5 pdr5'); $searchSearchConditionLower.attr('class', 'col-xs-5 pdl5'); conditionUpper = $('').clone().addClass('form-control').attr('id', 'search_sltPatientCondition').append( $('').clone().attr('value', 'name').text('환자명') ).append( $('').clone().attr('value', 'num').text('등록번호') ); conditionLower = $('').clone().addClass('form-control').attr('type', 'text').attr('placeholder', '검색').attr('id', 'search_txtSrData'); $searchSearchConditionType.css('display', 'none'); $searchSearchConditionUpper.html(conditionUpper); $searchSearchConditionLower.html(conditionLower); } }; var searchSearchPatientList = function(){ $searchUlPatientList.empty(); searchPatientList = []; patientInfoInit(); // 진료과/진료의 검색 if($('input[type="radio"][name="plist-search"]:checked').val()=='treat'){ var param = {}; if($('input[type="radio"][name="treatment"]:checked').val()=='in'){ param = { departmentCd: $('#searchSltDept').val(), doctorId: $('#search_sltDoctor').val() }; self.treatment.getInPatListPerDeptOrWard(param, 'I', 'search'); }else{ if($('#searchSearchDate').val()==''){ self.alert('조회 일자를 입력해주세요.'); return; } param = { departmentCd: $('#searchSltDept').val(), doctorId: $('#search_sltDoctor').val(), treatDt: moment($('#searchSearchDate').val()).format('YYYYMMDD') }; self.treatment.getOutPatList(param, 'search'); } //병동/진료과 검색 }else if($('input[type="radio"][name="plist-search"]:checked').val()=='hospital'){ var param = {}; param = { wardCd: $('#search_sltWard').val(), departmentCd: $('#searchSltDept').val() }; self.treatment.getSrPatListByWD(param); //재원환자검색 }else if($('input[type="radio"][name="plist-search"]:checked').val()=='patient'){ if($('#search_txtSrData').val()==''){ self.alert('조회할 '+ $('#search_sltPatientCondition option:selected').text() +'을(를) 입력해주세요.'); return; }else if($('#search_sltPatientCondition option:selected').val()=='name' && $('#search_txtSrData').val().length<2){ self.alert($('#search_sltPatientCondition option:selected').text() + '을 2글자 이상 입력해주세요.'); return; } var param = {}; if($('#search_sltPatientCondition').val()=='name'){ param = { patientNm: $('#search_txtSrData').val() }; }else{ param = { patientId: $('#search_txtSrData').val() }; } self.treatment.getSrPatList(param); }else{ } }; searchBindingPatientList = function(bindPatientList, extraMsg){ //all: 전체, mine: 본인 searchPatientList = bindPatientList; if(searchPatientList.length==0){ $searchUlPatientList.append(li.clone().append(div.clone().addClass('text-center no-result').text('―'))); } for(var i=0; i/g, '>').replace(/\n/g, '
    ')); $('#nursingCurrentStat').html(patientInfoData.currentStat.replace(//g, '>').replace(/\n/g, '
    ')); }else{ $('#nursingPopupId').text(patientInfo.patientId); $('#nursingPopupNameNum').text(''); $('#nursingPopupBirth').text(''); $('#nursingPopupSex').text(''); $('#nursingPopupRoom').text(''); $('#nursingDiagnosisNm').text(''); $('#nursingOperatingDt').text(''); $('#nursingOperatingNm').text(''); $('#nursingInDt').text(''); $('#nursingInRsn').text(''); $('#nursingCurrentStat').text(''); } }; };