consentOutpatient.js 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197
  1. /**
  2. * consent/outpatient
  3. */
  4. var mcare_mobile_consentOutpatient = function(){
  5. //상속
  6. mplus_mobile_consent.call(this);
  7. //변수
  8. var div = $("<div></div>");
  9. var tr = $("<tr></tr>");
  10. var th = $("<th></th>");
  11. var td = $("<td></td>");
  12. var table = $("<table></table>");
  13. var li = $("<li></li>");
  14. var a = $("<a></a>");
  15. var span = $("<span></span>");
  16. var button = $("<button></button>");
  17. $crudServiceBaseUrl = contextPath + "/mobile";
  18. var $btnSearchPatient = $('#btnSearchPatient');
  19. var $btnTotalSearchConsent = $('#btnTotalSearchConsent');
  20. var $btnSearchConsent = $('#btnSearchConsent');
  21. var $sltTreament = $('#sltTreament');
  22. var $dtpSrchdd = $('#dtpSrchdd');
  23. var $sltDoctor = $('#sltDoctor');
  24. var $txtSearchPatient = $('#txtSearchPatient');
  25. var $ulPatientList = $('#ulPatientList');
  26. var $ulAgreementCheck = $("#ulAgreementCheck");
  27. var $ulAgreementList = $("#ulAgreementList");
  28. var $ulConsentList = $("#ulConsentList");
  29. var $ulSetList = $('#ulSetList');
  30. var $dtpConsentStartDt = $('#dtpConsentStartDt');
  31. var $dtpConsentEndDt = $('#dtpConsentEndDt');
  32. var $sltCategory = $('#sltCategory');
  33. var $sltCategoryLower = $('#sltCategoryLower');
  34. var $txtConsentSrch = $('#txtConsentSrch');
  35. var $tabSet = $('#tabSet');
  36. var todayDateStr = '';
  37. var $btnPatientConsent = $('#btnPatientConsent');
  38. var $btnDoctorConsent = $('#btnDoctorConsent');
  39. var $menuType = 'O';
  40. var self = this;
  41. patientList = [];
  42. var patientInfo;
  43. var unfinishedConsentList = [];
  44. var agreementList = [];
  45. var setList = [];
  46. var totalConsentList = [];
  47. var doctorId;
  48. var doctorNm;
  49. /**
  50. * 초기화
  51. */
  52. this.init = function(){
  53. formDataInit();
  54. addEvent();
  55. initDropDownList();
  56. initSetList();
  57. if(jobKindCd=='0330'||jobKindCd=='0640'){
  58. $('input:radio[name=searchRadio]:input[value=""]').attr("checked", true);
  59. }else{
  60. $('input:radio[name=searchRadio]:input[value="C"]').attr("checked", true);
  61. };
  62. if((indexPage=='O'&&(jobKindCd=='1140'||jobKindCd=='1113'))
  63. ||(jobKindCd=='0330'||jobKindCd=='0640')){
  64. $sltTreament.selectpicker('val', deptCd);
  65. if($sltTreament.val()==null) {
  66. $sltTreament.selectpicker('val', '');
  67. }else{
  68. showDoctorList(deptCd);
  69. searchPatientList('Y');
  70. }
  71. };
  72. };
  73. var formDataInit = function(){
  74. // datepicker 초기화
  75. $('.datepicker').datepicker({'format': 'yyyy/mm/dd'});
  76. var today = new Date();
  77. var prevDay = new Date(Date.parse(new Date()) - 7 * 1000 * 60 * 60 * 24); //일주일전!!
  78. todayDateStr = moment(today).format('YYYY/MM/DD');
  79. var prevDayStr = moment(prevDay).format('YYYY/MM/DD');
  80. $("#divDtpSrchdd").datepicker('update', todayDateStr);
  81. $("#divDtpConsentStartDt").datepicker('update', prevDayStr);
  82. $("#divDtpConsentEndDt").datepicker('update', todayDateStr);
  83. };
  84. /**
  85. * 이벤트 등록
  86. */
  87. var addEvent = function(){
  88. $btnSearchPatient.on("click", function(e){
  89. $('span[name^="sort_"]').attr('sortType', '');
  90. searchPatientList('N');
  91. });
  92. $btnTotalSearchConsent.on("click", function(e){
  93. searchTotalConsentList('Y');
  94. });
  95. $btnSearchConsent.on("click", function(e){
  96. searchConsentList();
  97. });
  98. $tabSet.on("click", function(e){
  99. initSetList();
  100. });
  101. $btnPatientConsent.on("click", function(e){
  102. //일괄인증 버튼 제어
  103. $('.consentSignBox').css('display', 'none');
  104. initAggrementList("patient");
  105. });
  106. $btnDoctorConsent.on("click", function(e){
  107. //일괄인증 버튼 제어
  108. $('.consentSignBox').css('display', 'block');
  109. initAggrementList("docotr");
  110. });
  111. $('span[name^="sort_"]').on("click", function(e){
  112. self.loading("show");
  113. setTimeout(function(){
  114. var sortData = e.currentTarget.attributes.name.value.split('_');
  115. var sortKey = sortData[1];
  116. var sortType = sortData[2];
  117. var sortClassName = sortData[3];
  118. var sortOrder = $('span.'+sortClassName+'[name^="sort_"]')[0].attributes.sortType.value;
  119. $('span[name^="sort_"]').attr('sortType', '');
  120. if(sortOrder==undefined || sortOrder=='up'){
  121. sortPatientList(sortKey, sortType, 'down');
  122. $('span.'+sortClassName+'[name^="sort_"]').attr('sortType', 'down');
  123. }else{
  124. sortPatientList(sortKey, sortType, 'up');
  125. $('span.'+sortClassName+'[name^="sort_"]').attr('sortType', 'up');
  126. };
  127. self.loading("hide");
  128. }, 300);
  129. });
  130. };
  131. var initDropDownList = function(){
  132. //부서리스트
  133. var deptParam = {ordtype: 'O'};
  134. var deptResult = self.hospital.getDeptList(deptParam);
  135. $sltTreament.empty();
  136. for(var i=0; i<deptResult.length; i++){
  137. var option = $('<option value='+deptResult[i].deptcd+'>'+deptResult[i].deptnm+'</option>');
  138. $sltTreament.append(option);
  139. };
  140. $sltTreament.children(":first").attr("selected", true);
  141. $sltTreament.selectpicker('refresh');
  142. //진료과에 따른 의사조회 이벤트 연결
  143. $sltTreament.change(function() {
  144. showDoctorList(this.value);
  145. });
  146. //카테고리조회
  147. var categoryParam = {
  148. categoryId: '1'
  149. };
  150. var categoryResult = self.consent.getCategoryForDropdown(categoryParam);
  151. $sltCategory.empty();
  152. for(var i=0; i<categoryResult.length; i++){
  153. var option = $('<option value='+categoryResult[i].categoryId+'>'+categoryResult[i].categoryName+'</option>');
  154. $sltCategory.append(option);
  155. };
  156. $sltCategory.children(":first").attr("selected", true);
  157. $sltCategory.selectpicker('refresh');
  158. showCategoryLowerList(categoryResult[0].categoryId);
  159. //진료과에따른 하위 카테고리조회
  160. $sltCategory.change(function() {
  161. showCategoryLowerList(this.value);
  162. });
  163. };
  164. var showCategoryLowerList = function(categoryId){
  165. var param = {
  166. categoryId: categoryId
  167. };
  168. var result = self.consent.getCategoryForDropdown(param);
  169. $sltCategoryLower.empty();
  170. for(var i=0; i<result.length; i++){
  171. var option = $('<option value='+result[i].categoryId+'>'+result[i].categoryName+'</option>');
  172. $sltCategoryLower.append(option);
  173. };
  174. $sltCategoryLower.children(":first").attr("selected", true);
  175. $sltCategoryLower.selectpicker('refresh');
  176. };
  177. //진료과에 따른 의사조회
  178. var showDoctorList = function(doctorid){
  179. var param = {srchdd: $dtpSrchdd[0].value.replace(/\//g,''), orddeptcd: doctorid};
  180. var result = self.hospital.getDoctorList(param);
  181. $sltDoctor.empty();
  182. for(var i=0; i<result.length; i++){
  183. var option = $('<option value='+result[i].doctorid+'>'+result[i].doctornm+'</option>');
  184. $sltDoctor.append(option);
  185. };
  186. $sltDoctor.children(":first").attr("selected", true);
  187. $sltDoctor.selectpicker('refresh');
  188. };
  189. //환자리스트 조회
  190. var searchPatientList = function(firstYn){
  191. initPatientInfo();
  192. var param = {srchdd: $dtpSrchdd[0].value.replace(/\//g,''),
  193. orddeptcd: $sltTreament.val(),
  194. doctorid: $sltDoctor.val(),
  195. pid: $txtSearchPatient.val(),
  196. patstat: $(':radio[name="searchRadio"]:checked').val()};
  197. self.patient.getPatientList($menuType, param, firstYn);
  198. };
  199. //환자리스트 정렬
  200. var sortPatientList = function(sortKey, sortType, order){
  201. self.patient.setPatientList($menuType, patientList, sortKey, sortType, order);
  202. };
  203. //환자정보 초기화
  204. var initPatientInfo = function(){
  205. $ulAgreementList.empty();
  206. patientInfo = {};
  207. $("#tbPatientInfo").empty();
  208. unfinishedConsentList = [];
  209. $ulAgreementCheck.empty();
  210. $("#consentTap1 .sub-title").empty();
  211. };
  212. //환자정보 조회
  213. getPatientInfo = function(seq){
  214. initPatientInfo();
  215. var data = patientList[seq];
  216. var patientParam = { pid: data.pid,
  217. orddd: data.indd.replace(/\//g,''),
  218. ordtype: data.ordtype,
  219. orddeptcd: data.orddeptcd
  220. };
  221. var patientResult = self.hospital.getPatientInfo(patientParam);
  222. // target 환자 정보를 보관해 둔다
  223. patientInfo = patientResult[0];
  224. if( patientInfo == undefined ) {return;};
  225. doctorId = data.doctorid; //설명의사 설정하기위해 주치의ID를 보관
  226. doctorNm = data.doctornm; //설명의사 설정 - 주치의 이름 보관
  227. $("#divDtpConsentStartDt").datepicker('update', moment(patientInfo.ioaddate).format('YYYY/MM/DD'));
  228. for(var i=0; i<patientResult.length; i++){
  229. //환자정보 바인딩
  230. var trData = tr.clone().html(th.clone().text("내원일")).append(td.clone().text(moment(patientResult[i].ioaddate).format('YYYY/MM/DD')));
  231. var trData2 = tr.clone().html(th.clone().text("주치의")).append(td.clone().text(patientResult[i].iomaindrNm));
  232. var trData3 = tr.clone().html(th.clone().text("진단명")).append(td.clone().text(patientResult[i].iodxNm));
  233. var tdData4 = td.clone();
  234. for(var j=0; j<1; j++){
  235. tdData5= tdData4.append("").append("</br>"); //alert Data
  236. };
  237. var trData6 = tr.clone().addClass("infoalert").html(th.clone().text("Alert")).append(tdData5);
  238. var tableData = table.clone().addClass("patientData").html(trData).append(trData2).append(trData3).append(trData6);
  239. $("#consentTap1 .sub-title").text(patientResult[i].ioptID+" " + patientResult[i].ioptName+" "+ editAgeToIdNum(patientResult[i].iosexAgeYM) + "/"+patientResult[i].iojuminNo.split('-')[0]);
  240. $("#tbPatientInfo").append(tableData);
  241. };
  242. getUnfinishedConsentInfo(data);
  243. };
  244. //미작성동의서 조회
  245. var getUnfinishedConsentInfo = function(data){
  246. var consentParam = {
  247. patientCode: data.pid,
  248. startDt: patientInfo.ioaddate,
  249. endDt: moment(todayDateStr).format('YYYYMMDD'),
  250. consentState: "'UNFINISHED', 'TEMP'",
  251. jobKindCd: indexPage=='O'&&(jobKindCd=='1140'||jobKindCd=='1113')? 'ALL': jobKindCd
  252. };
  253. var consentResult = self.consent.getConsentList(consentParam);
  254. unfinishedConsentList = consentResult;
  255. //미작성동의서 리스트 바인딩
  256. var divCheckbox = div.clone().addClass("checkbox3 checkbox-check checkbox-light");
  257. $ulAgreementCheck.empty();
  258. for(var i=0; i<consentResult.length; i++){
  259. $ulAgreementCheck.append(
  260. li.clone().html(
  261. divCheckbox.clone().html($("<input type='checkbox' id='chkConsentUnfinished_"+(i+1)+"'></input>"))
  262. .append($("<label for='chkConsentUnfinished_"+(i+1)+"'></label>"))
  263. .append(span.clone().addClass("detail").text(consentResult[i].consentName))
  264. .append(span.clone().addClass("label "+
  265. (consentResult[i].consentState=='TEMP'? "label-temp":
  266. consentResult[i].consentState=='UNFINISHED'? "label-unfinished":
  267. consentResult[i].consentState=='ELECTR_CMP'? "label-electrCmp":
  268. consentResult[i].consentState=='CERTIFY_CMP'? "label-certifyCmp":
  269. consentResult[i].consentState=='PAPER_OUT'? "label-paperOut":
  270. consentResult[i].consentState=='VERBAL'? "label-verbal":"label-default")
  271. ).text(consentResult[i].consentStateDisp))
  272. .append(button.clone().addClass("text-right btn btn-default")
  273. .text("삭제").attr("seq", i))
  274. )
  275. )
  276. };
  277. $('#ulAgreementCheck li').on("click", function(e){
  278. //체크박스
  279. if(e.toElement.localName == "label") {
  280. var input = $(this).children().children("input");
  281. $(input).prop("checked", !$(input).prop("checked"));
  282. if($(input).prop("checked")){
  283. $(this).addClass('checked')
  284. }else {
  285. $(this).removeClass('checked')
  286. };
  287. }else if(e.toElement.localName == "button"){ //버튼클릭(삭제)
  288. }else{ //동의서 이름 클릭
  289. if(!$(this).hasClass("checked")){
  290. var input = $(this).children().children("input");
  291. $(input).prop("checked", true);
  292. $(this).addClass('checked');
  293. };
  294. // 담당의가 일반의사인 경우 무조건 출력전용이므로 alert 메시지 띄우고 리턴한다.
  295. // 16.12.12 #6225 siyoung.ahn
  296. if( doctorId.startsWith('5000')) {
  297. self.alert("담당의가 일반의사인 경우 출력전용입니다.");
  298. return;
  299. }
  300. //선택한 동의서만 가지고오기
  301. var selectedItems = $('#ulAgreementCheck li[class="checked"] input');
  302. var selectedConsentList = [];
  303. var printOnlyList = [];
  304. for( var i = 0; i < selectedItems.length; i++ ){
  305. // sequence 추출
  306. var seq = selectedItems[i].id.split('_')[1];
  307. seq = seq - 1;
  308. // 동의서 상태 체크
  309. var param = {consentmstrid: unfinishedConsentList[seq].consentMstRid,
  310. consentState: unfinishedConsentList[seq].consentState};
  311. var state = self.consent.checkConsentState(param);
  312. if( state == undefined ) { printOnlyList.push("["+unfinishedConsentList[seq].consentName+"] - 상태 조회 실패"); }
  313. else if (state.text == '-1') { printOnlyList.push("["+unfinishedConsentList[seq].consentName+"] - 상태 조회 실패"); }
  314. else if (state.text == '1') { printOnlyList.push("["+unfinishedConsentList[seq].consentName+"] - 이미 작성된 동의서"); }
  315. else if (state.text == '0'){
  316. selectedConsentList.push(unfinishedConsentList[seq]);
  317. }
  318. }
  319. var printOnlyAlertMsg = '';
  320. for(var j=0; j<printOnlyList.length; j++){
  321. printOnlyAlertMsg = printOnlyAlertMsg + printOnlyList[j];
  322. if(j!=printOnlyList.length-1) printOnlyAlertMsg = printOnlyAlertMsg +"\n";
  323. };
  324. if(printOnlyAlertMsg.length>0) {
  325. self.confirm("작성이 불가능한 동의서입니다.\n\n" + printOnlyAlertMsg, function(confirm){
  326. if(confirm){
  327. var global = self.consent.makeGlobalParam(patientInfo, doctorId);
  328. var consent = self.consent.makeConsentParam(patientInfo, selectedConsentList, doctorNm);
  329. var jsonssg = {
  330. "type" : "command",
  331. "functionType" : "consent",
  332. "value" : {
  333. "callbackFn" : "window.activeObj.consentCallback"
  334. },
  335. "userId": doctorId,
  336. "globalParam" : global,
  337. "consentParam" : consent
  338. };
  339. self.toNative(jsonssg);
  340. }
  341. });
  342. }else{
  343. if(selectedConsentList.length > 0){
  344. var global = self.consent.makeGlobalParam(patientInfo, doctorId);
  345. var consent = self.consent.makeConsentParam(patientInfo, selectedConsentList, doctorNm);
  346. var jsonssg = {
  347. "type" : "command",
  348. "functionType" : "consent",
  349. "value" : {
  350. "callbackFn" : "window.activeObj.consentCallback"
  351. },
  352. "userId" : doctorId,
  353. "globalParam" : global,
  354. "consentParam" : consent
  355. };
  356. self.toNative(jsonssg);
  357. };
  358. };
  359. };
  360. e.stopPropagation();
  361. e.preventDefault();
  362. });
  363. //삭제 이벤트걸기
  364. $('#ulAgreementCheck li button').on("click", function(e){
  365. self.confirm("삭제하시겠습니까?", function(confirm){
  366. if(confirm){
  367. $('#txtSeq').val(e.currentTarget.attributes.seq.value);
  368. $('#mplusConsentDeleteForm').modal('show');
  369. $('#btnConsentDelete').unbind();
  370. $('#btnConsentDelete').on('click', function(){
  371. var checkVal = $('#mplusConsentDeleteForm input[name=consentDeleteRadio]:checked').val();
  372. var deleteReasonText = $('#consentDeleteTextarea').val();
  373. deleteConsent($('#txtSeq').val(),
  374. checkVal=="slt4"? deleteReasonText: $('#mplusConsentDeleteForm input[name=consentDeleteRadio]:checked')[0].attributes.dataReason.value);
  375. });
  376. }
  377. });
  378. });
  379. };
  380. //동의서이력 리스트 초기화
  381. var initAggrementList = function(type){
  382. $ulAgreementList.empty();
  383. $('.consentSearchBox input[type=checkbox]').prop("checked", false);
  384. //환자별일경우 '전체' 디폴트체크
  385. if(type=="patient"){
  386. $('.consentSearchBox input[type=checkbox][value="ALL"]').prop("checked", "checked");
  387. }else{ //주치의별일경우 '미작성' 디폴트체크
  388. $('.consentSearchBox input[type=checkbox][value="\'ELECTR_CMP\'"]').prop("checked", "checked");
  389. }
  390. };
  391. //동의서 조회
  392. var searchTotalConsentList = function(alertYn){
  393. $ulAgreementList.empty();
  394. var divCheckbox = div.clone().addClass("checkbox3 checkbox-check checkbox-light");
  395. if($('#ulPatientList .list-group-item.active').parent()[0]==undefined){
  396. self.alert('조회할 환자를 선택해주세요.');
  397. return;
  398. };
  399. if( patientInfo == undefined ){
  400. self.alert('환자 정보가 정상 조회되지 않았습니다.');
  401. return;
  402. };
  403. var temConsentState = self.consent.makeConsentStateParam();
  404. if(temConsentState==undefined) return;
  405. if($('#btnPatientConsent').hasClass("active")){
  406. /*-------------------환자별 동의서 조회 시작---------------------*/
  407. var temIndex = $('#ulPatientList .list-group-item.active').parent()[0].id.split('_')[1];
  408. var data = patientList[temIndex];
  409. var param = {
  410. patientCode: data.pid,
  411. startDt: $dtpConsentStartDt[0].value.replace(/\//g,''),
  412. endDt: $dtpConsentEndDt[0].value.replace(/\//g,''),
  413. consentState: temConsentState,
  414. jobKindCd: indexPage=='O'&&(jobKindCd=='1140'||jobKindCd=='1113')? 'ALL': jobKindCd
  415. };
  416. var result = self.consent.getConsentList(param);
  417. // 오른쪽 동의서 리스트 보관
  418. agreementList = result;
  419. if(alertYn=='Y'&&(result==undefined||result.length==0)) {
  420. self.alert('조회된 데이터가 없습니다.');
  421. return;
  422. }else if(alertYn=='N'&&(result==undefined||result.length==0)) {return;};
  423. for(var i=0; i<result.length; i++){
  424. $ulAgreementList.addClass("agreementCheck").append(
  425. li.clone().html(
  426. divCheckbox.clone().html($("<input type='checkbox' id='chkConsentPatient_"+(i+1)+"'></input>"))
  427. .append($("<label for='chkConsentPatient_"+(i+1)+"'></label>"))
  428. .append(span.clone().addClass("document").text(result[i].consentName)
  429. .append(span.clone().addClass("label "+
  430. (result[i].consentState=='TEMP'? "label-temp":
  431. result[i].consentState=='UNFINISHED'? "label-unfinished":
  432. result[i].consentState=='ELECTR_CMP'? "label-electrCmp":
  433. result[i].consentState=='CERTIFY_CMP'? "label-certifyCmp":
  434. result[i].consentState=='PAPER_OUT'? "label-paperOut":
  435. result[i].consentState=='VERBAL'? "label-verbal":"label-default")
  436. ).text(result[i].consentStateDisp))
  437. )
  438. ));
  439. };
  440. //클릭이벤트 연결
  441. $('#ulAgreementList li').on("click", function(e){
  442. // 체크박스 클릭했을 때
  443. if(e.toElement.localName == "label") {
  444. var input = $(this).children().children("input");
  445. $(input).prop("checked", !$(input).prop("checked"));
  446. if($(input).prop("checked")) $(this).addClass('checked')
  447. else $(this).removeClass('checked')
  448. }else{
  449. // 동의서 내용을 클릭했을 때
  450. if(!$(this).hasClass("checked")){
  451. var input = $(this).children().children("input");
  452. $(input).prop("checked", true);
  453. $(this).addClass('checked');
  454. };
  455. var selectedSeq = $(this).children().children("input").attr('id').split('_')[1];
  456. var lastSelectedItem = agreementList[selectedSeq - 1];
  457. // 클릭한 동의서의 상태 체크
  458. // 환자서명이거나 전자인증의 경우 모두 체크해제 하고, 해당 동의서의 이미지를 띄움
  459. if( lastSelectedItem.consentState == 'ELECTR_CMP' || lastSelectedItem.consentState == 'CERTIFY_CMP' ) {
  460. // 체크해제
  461. $('#ulAgreementList li[class="checked"] input').prop("checked", false);
  462. $('#ulAgreementList li[class="checked"]').removeClass("checked");
  463. var param = {consentMstRid : lastSelectedItem.consentMstRid};
  464. var consentImageList = self.consent.getConsentImage(param);
  465. if(consentImageList == undefined || consentImageList.length==0) {self.alert("동의서 이미지 조회 실패"); return;};
  466. var imagePathList = [];
  467. $('#consentImgBox').empty();
  468. for( var i = 0; i < consentImageList.length; i++ ) {
  469. $('#consentImgBox').append(
  470. div.clone().append(
  471. "<img data-u='image' src='"+consentImageList[i].imagePath+"' width='100%'>"
  472. )
  473. )
  474. }
  475. $('.modal-backdrop').removeClass('in');
  476. $('.modal').modal('hide');
  477. $('#mplusConsentImageForm').modal("show");
  478. }
  479. // 담당의가 일반의사인 경우 무조건 출력전용이므로 alert 메시지 띄우고 리턴한다.
  480. // 16.12.12 #6225 siyoung.ahn
  481. if( doctorId.startsWith('5000')) {
  482. self.alert("담당의가 일반의사인 경우 출력전용입니다.");
  483. return;
  484. }
  485. //선택한 동의서만 가지고오기
  486. var selectedItems = $('#ulAgreementList li[class="checked"] input');
  487. var selectedConsentList = [];
  488. var printOnlyList = [];
  489. for( var i = 0; i < selectedItems.length; i++ ){
  490. // sequence 추출
  491. var seq = selectedItems[i].id.split('_')[1];
  492. seq = seq - 1;
  493. // data add
  494. if(agreementList[seq].consentState=="PAPER_OUT"||agreementList[seq].consentState=="FNU_PRINT"){
  495. //동의서 상태가 출력/FNU출력인 경우 걸러내기
  496. printOnlyList.push("["+agreementList[seq].consentName+"] - "+agreementList[seq].consentStateDisp);
  497. }else{
  498. // 동의서 상태 체크
  499. var param = {consentmstrid: agreementList[seq].consentMstRid,
  500. consentState: agreementList[seq].consentState};
  501. var state = self.consent.checkConsentState(param);
  502. if( state == undefined ) { printOnlyList.push("["+agreementList[seq].consentName+"] - 상태 조회 실패"); }
  503. else if (state.text == '-1') { printOnlyList.push("["+agreementList[seq].consentName+"] - 상태 조회 실패"); }
  504. else if (state.text == '1') { printOnlyList.push("["+agreementList[seq].consentName+"] - 이미 작성된 동의서"); }
  505. else if (state.text == '0'){
  506. selectedConsentList.push(agreementList[seq]);
  507. }
  508. };
  509. };
  510. //출력전용 메시지 생성
  511. var printOnlyAlertMsg = '';
  512. for(var j=0; j<printOnlyList.length; j++){
  513. printOnlyAlertMsg = printOnlyAlertMsg +printOnlyList[j];
  514. if(j!=printOnlyList.length-1) printOnlyAlertMsg = printOnlyAlertMsg +"\n";
  515. };
  516. if(printOnlyAlertMsg.length>0) {
  517. self.confirm("출력전용 및 작성이 불가능한 동의서입니다.\n\n" + printOnlyAlertMsg, function(confirm){
  518. if(confirm){
  519. //출력전용 동의서를 제외한 동의서가 있을경우?
  520. if(selectedConsentList.length > 0){
  521. var global = self.consent.makeGlobalParam(patientInfo, doctorId);
  522. var consent = self.consent.makeConsentParam(patientInfo, selectedConsentList, doctorNm);
  523. var jsonssg = {
  524. "type" : "command",
  525. "functionType" : "consent",
  526. "value" : {
  527. "callbackFn" : "window.activeObj.consentCallback"
  528. },
  529. "userId" : doctorId,
  530. "globalParam" : global,
  531. "consentParam" : consent
  532. };
  533. self.toNative(jsonssg);
  534. };
  535. }
  536. });
  537. }else{
  538. if(selectedConsentList.length > 0){
  539. var global = self.consent.makeGlobalParam(patientInfo, doctorId);
  540. var consent = self.consent.makeConsentParam(patientInfo, selectedConsentList, doctorNm);
  541. // 유효성 검사 추가할 것
  542. var jsonssg = {
  543. "type" : "command",
  544. "functionType" : "consent",
  545. "value" : {
  546. "callbackFn" : "window.activeObj.consentCallback"
  547. },
  548. "userId" : doctorId,
  549. "globalParam" : global,
  550. "consentParam" : consent
  551. };
  552. self.toNative(jsonssg);
  553. };
  554. };
  555. };
  556. e.stopPropagation();
  557. e.preventDefault();
  558. });
  559. /*-------------------환자별 동의서 조회 종료---------------------*/
  560. }else{
  561. /*-------------------주치의별 동의서 조회 시작---------------------*/
  562. var param = {
  563. userid: doctorId,
  564. status: temConsentState,
  565. fromdd: $dtpConsentStartDt[0].value.replace(/\//g,''),
  566. todd: $dtpConsentEndDt[0].value.replace(/\//g,'')
  567. };
  568. var result = self.consent.getUnfinishedListPerDoctor(param);
  569. // 오른쪽 동의서 리스트 보관
  570. agreementList = result;
  571. if(result==undefined||result.length==0) {
  572. self.alert('조회된 데이터가 없습니다.');
  573. return;
  574. };
  575. for(var i=0; i<result.length; i++){
  576. $('#ulAgreementList').addClass("agreementCheck").append(
  577. li.clone().html(
  578. divCheckbox.clone().html($("<input type='checkbox' id='chkDoctorConsentList_"+(i+1)+"'></input>"))
  579. .append($("<label for='chkDoctorConsentList_"+(i+1)+"'></label>"))
  580. .append(
  581. div.clone().addClass("list-row").html(
  582. span.clone().addClass("doctorConsentNum patientCode").text(result[i].patientCode+" ").append(span.clone().addClass("hngNm").text(result[i].hngnm))
  583. ).append(
  584. span.clone().addClass("doctorConsentName").html("")
  585. )
  586. )
  587. .append(
  588. div.clone().addClass("list-row").html(
  589. span.clone().addClass("doctorConsentNum").text(result[i].consentName)
  590. ).append(
  591. span.clone().addClass("doctorConsentName").html(
  592. span.clone().addClass("doctorConsentLabel label "+
  593. (result[i].consentState=='TEMP'? "label-temp":
  594. result[i].consentState=='UNFINISHED'? "label-unfinished":
  595. result[i].consentState=='ELECTR_CMP'? "label-electrCmp":
  596. result[i].consentState=='CERTIFY_CMP'? "label-certifyCmp":
  597. result[i].consentState=='PAPER_OUT'? "label-paperOut":
  598. result[i].consentState=='VERBAL'? "label-verbal":"label-default")
  599. ).text(result[i].consentState=='TEMP'? "임시저장":
  600. result[i].consentState=='UNFINISHED'? "미작성":
  601. result[i].consentState=='ELECTR_CMP'? "서명":
  602. result[i].consentState=='CERTIFY_CMP'? "인증":
  603. result[i].consentState=='PAPER_OUT'? "출력":
  604. result[i].consentState=='VERBAL'? "구두":"")
  605. )
  606. )
  607. )
  608. ));
  609. };
  610. //클릭이벤트 연결
  611. $('#ulAgreementList li').on("click", function(e){
  612. if(e.toElement.localName == "label"||e.toElement.localName == "input") { //체크박스 클릭했을때
  613. var input = $(this).children().children("input");
  614. $(input).prop("checked", !$(input).prop("checked"));
  615. if($(input).prop("checked")) $(this).addClass('checked')
  616. else $(this).removeClass('checked')
  617. }else{ //동의서내용 클릭했을때
  618. if(!$(this).hasClass("checked")){
  619. var input = $(this).children().children("input");
  620. $(input).prop("checked", true);
  621. $(this).addClass('checked');
  622. };
  623. /* 일괄인증 ON */
  624. if ( $('[name="bootstrapSwitch"]').bootstrapSwitch("state") ) {
  625. // ELECTR_CMP 상태인 것들만 뽑아내기
  626. // 그리고 이미지 조회도 정상적으로 된 애들
  627. var selectedItems = $('#ulAgreementList li[class="checked"] input');
  628. var batchSignParam = [];
  629. for( var i = 0; i < selectedItems.length; i++ ){
  630. // sequence 추출
  631. var seq = selectedItems[i].id.split('_')[1];
  632. seq = seq - 1;
  633. // data add
  634. if(agreementList[seq].consentState == 'ELECTR_CMP'){
  635. // 정상적으로 이미지정보가 조회되었을 때만
  636. var param = {consentMstRid : agreementList[seq].consentMstRid};
  637. var consentImageList = self.consent.getConsentImage(param);
  638. if(consentImageList == undefined || consentImageList.length==0) {continue;}
  639. else{
  640. var signParam = {
  641. consentMstRid: agreementList[seq].consentMstRid,
  642. consentImageRid: consentImageList[0].consentImageRid,
  643. certTarget: agreementList[seq].certtarget==null?"":agreementList[seq].certtarget
  644. }
  645. batchSignParam.push(signParam);
  646. }
  647. }
  648. };
  649. if( batchSignParam.length > 0 ) {
  650. var consentSignMsg = {
  651. "type" : "command",
  652. "functionType" : "consentSign",
  653. "value" : {
  654. "callbackFn" : "window.activeObj.consentSignCallback"
  655. },
  656. "consentSignParam" : batchSignParam,
  657. "userId": doctorId
  658. };
  659. self.toNative(consentSignMsg);
  660. } else {
  661. self.alert('인증 대상 동의서를 선택하세요.');
  662. }
  663. }
  664. /* 일괄인증 OFF */
  665. else {
  666. var selectedSeq = $(this).children().children("input").attr('id').split('_')[1];
  667. var lastSelectedItem = agreementList[selectedSeq - 1];
  668. // 클릭한 동의서의 상태 체크
  669. // 환자서명이거나 전자인증의 경우 모두 체크해제 하고, 해당 동의서의 이미지를 띄움
  670. if( lastSelectedItem.consentState == 'ELECTR_CMP' || lastSelectedItem.consentState == 'CERTIFY_CMP' ) {
  671. // 체크해제
  672. $('#ulAgreementList li[class="checked"] input').prop("checked", false);
  673. $('#ulAgreementList li[class="checked"]').removeClass("checked");
  674. var param = {consentMstRid : lastSelectedItem.consentMstRid};
  675. var consentImageList = self.consent.getConsentImage(param);
  676. if(consentImageList == undefined || consentImageList.length==0) {self.alert("동의서 이미지 조회 실패"); return;};
  677. var imagePathList = [];
  678. $('#consentImgBox').empty();
  679. for( var i = 0; i < consentImageList.length; i++ ) {
  680. $('#consentImgBox').append(
  681. div.clone().append(
  682. "<img data-u='image' src='"+consentImageList[i].imagePath+"' width='100%'>"
  683. )
  684. )
  685. }
  686. $('.modal-backdrop').removeClass('in');
  687. $('.modal').modal('hide');
  688. $('#mplusConsentImageForm').modal("show");
  689. };
  690. // 담당의가 일반의사인 경우 무조건 출력전용이므로 alert 메시지 띄우고 리턴한다.
  691. // 16.12.12 #6225 siyoung.ahn
  692. if( doctorId.startsWith('5000')) {
  693. self.alert("담당의가 일반의사인 경우 출력전용입니다.");
  694. return;
  695. }
  696. //선택한 동의서만 가꼬오기
  697. var selectedItems = $('#ulAgreementList li[class="checked"] input');
  698. var selectedConsentList = [];
  699. var printOnlyList = [];
  700. var patientId=''; //동일한 환자 체크하기위한 변수
  701. for( var i = 0; i < selectedItems.length; i++ ){
  702. // sequence 추출
  703. var seq = selectedItems[i].id.split('_')[1];
  704. seq = seq - 1;
  705. if(i==0){
  706. patientId = agreementList[seq].patientCode;
  707. };
  708. //동일한 환자인지 체크
  709. if(patientId != agreementList[seq].patientCode){
  710. self.alert("동일한 환자에 한해서만 동의서로 이동가능합니다.");
  711. return;
  712. };
  713. var patientId = agreementList[seq].patientCode;
  714. // data add
  715. if(agreementList[seq].consentState=="PAPER_OUT" || agreementList[seq].consentState=="FNU_PRINT"){
  716. //동의서 상태가 출력/FNU출력인 경우 걸러내기
  717. printOnlyList.push("["+agreementList[seq].consentName+"] - "+agreementList[seq].consentState=="PAPER_OUT"? "출력": "FNU출력");
  718. }else{
  719. // 동의서 상태 체크
  720. var param = {consentmstrid: agreementList[seq].consentMstRid,
  721. consentState: agreementList[seq].consentState};
  722. var state = self.consent.checkConsentState(param);
  723. if( state == undefined ) { printOnlyList.push("["+agreementList[seq].consentName+"] - 상태 조회 실패"); }
  724. else if (state.text == '-1') { printOnlyList.push("["+agreementList[seq].consentName+"] - 상태 조회 실패"); }
  725. else if (state.text == '1') { printOnlyList.push("["+agreementList[seq].consentName+"] - 이미 작성된 동의서"); }
  726. else if (state.text == '0'){
  727. selectedConsentList.push(agreementList[seq]);
  728. }
  729. };
  730. };
  731. if(selectedItems.length>0){
  732. //환자정보조회
  733. var patientSeq = selectedItems[0].id.split('_')[1];
  734. var patientData = agreementList[patientSeq - 1];
  735. var patientParam = {pid: patientData.patientCode,
  736. orddd: patientData.orddd,
  737. ordtype: patientData.visitType,
  738. orddeptcd: patientData.orddeptcd
  739. };
  740. var consentPatientInfo = self.hospital.getPatientInfo(patientParam)[0];
  741. if(consentPatientInfo==undefined|| consentPatientInfo.length==0){
  742. self.alert("환자정보 조회에 실패하였습니다.");
  743. return;
  744. };
  745. var printOnlyAlertMsg = '';
  746. for(var j=0; j<printOnlyList.length; j++){
  747. printOnlyAlertMsg = printOnlyAlertMsg +printOnlyList[j];
  748. if(j!=printOnlyList.length-1) printOnlyAlertMsg = printOnlyAlertMsg +"\n";
  749. };
  750. if(printOnlyAlertMsg.length>0) {
  751. self.confirm("출력전용 및 작성이 불가능한 동의서입니다.\n\n" + printOnlyAlertMsg, function(confirm){
  752. if(confirm){
  753. if(selectedConsentList.length > 0){
  754. var global = self.consent.makeGlobalParam(consentPatientInfo, doctorId);
  755. var consent = self.consent.makeConsentParam(consentPatientInfo, selectedConsentList, doctorNm);
  756. // 유효성 검사 추가할 것
  757. var jsonssg = {
  758. "type" : "command",
  759. "functionType" : "consent",
  760. "value" : {
  761. "callbackFn" : "window.activeObj.consentCallback"
  762. },
  763. "userId" : doctorId,
  764. "globalParam" : global,
  765. "consentParam" : consent
  766. };
  767. self.toNative(jsonssg);
  768. };
  769. }
  770. });
  771. }else{
  772. if(selectedConsentList.length > 0){
  773. var global = self.consent.makeGlobalParam(consentPatientInfo, doctorId);
  774. var consent = self.consent.makeConsentParam(consentPatientInfo, selectedConsentList, doctorNm);
  775. // 유효성 검사 추가할 것
  776. var jsonssg = {
  777. "type" : "command",
  778. "functionType" : "consent",
  779. "value" : {
  780. "callbackFn" : "window.activeObj.consentCallback"
  781. },
  782. "userId" : doctorId,
  783. "globalParam" : global,
  784. "consentParam" : consent
  785. };
  786. self.toNative(jsonssg);
  787. };
  788. };
  789. };
  790. };
  791. e.stopPropagation();
  792. e.preventDefault();
  793. }
  794. });
  795. /*-------------------주치의별 동의서 조회 종료---------------------*/
  796. };
  797. };
  798. //즐겨찾기 리스트 조회
  799. var initSetList = function(){
  800. $ulSetList.empty();
  801. var param = {};
  802. var result = self.consent.getConsentSetList(param);
  803. setList = result;
  804. var divCheckbox = div.clone().addClass("checkbox3 checkbox-check checkbox-light");
  805. for(var i=0; i<result.length; i++){
  806. $ulSetList.addClass("agreementCheck").append(
  807. li.clone().html(
  808. divCheckbox.clone().html($("<input type='checkbox' id='chkSetList_"+(i+1)+"'></input>"))
  809. .append($("<label for='chkSetList_"+(i+1)+"'></label>"))
  810. .append(span.clone().addClass("document").text(result[i].formName))
  811. .append(button.clone().addClass("text-right btn btn-default")
  812. .text("삭제").attr("formCd", result[i].formCd))
  813. ));
  814. };
  815. //클릭이벤트 연결
  816. $('#ulSetList li').on("click", function(e){
  817. if(e.toElement.localName == "label") { //체크박스클릭
  818. var input = $(this).children().children("input");
  819. $(input).prop("checked", !$(input).prop("checked"));
  820. if($(input).prop("checked")) $(this).addClass('checked')
  821. else $(this).removeClass('checked')
  822. }else if(e.toElement.localName == "button"){ //삭제버튼
  823. }else{ //동의서내용
  824. if(!$(this).hasClass("checked")){
  825. var input = $(this).children().children("input");
  826. $(input).prop("checked", true);
  827. $(this).addClass('checked');
  828. };
  829. if($('#ulPatientList .list-group-item.active').parent()[0]==undefined){
  830. self.alert('환자를 선택해주세요.');
  831. return;
  832. };
  833. // 담당의가 일반의사인 경우 무조건 출력전용이므로 alert 메시지 띄우고 리턴한다.
  834. // 16.12.12 #6225 siyoung.ahn
  835. if( doctorId.startsWith('5000')) {
  836. self.alert("담당의가 일반의사인 경우 출력전용입니다.");
  837. return;
  838. }
  839. //선택한 동의서만 가지고오기
  840. var selectedItems = $('#ulSetList li[class="checked"] input');
  841. var selectedConsentList = [];
  842. var printOnlyList = [];
  843. for( var i = 0; i < selectedItems.length; i++ ){
  844. // sequence 추출
  845. var seq = selectedItems[i].id.split('_')[1];
  846. seq = seq - 1;
  847. if(setList[seq].printOnly=="Y"){
  848. printOnlyList.push(setList[seq].formName);
  849. }else{
  850. //data add
  851. selectedConsentList.push(setList[seq]);
  852. };
  853. };
  854. var printOnlyAlertMsg = '';
  855. for(var j=0; j<printOnlyList.length; j++){
  856. printOnlyAlertMsg = printOnlyAlertMsg +"["+printOnlyList[j]+"]";
  857. if(j!=printOnlyList.length-1) printOnlyAlertMsg = printOnlyAlertMsg +"\n";
  858. };
  859. if(printOnlyAlertMsg.length>0) {
  860. self.confirm(printOnlyAlertMsg+"\n출력전용 동의서 입니다. \nPC에서 출력하세요.", function(confirm){
  861. if(confirm){
  862. if(selectedConsentList.length > 0){
  863. var global = self.consent.makeGlobalParam(patientInfo, doctorId);
  864. var consent = self.consent.makeNewConsentParam(patientInfo, selectedConsentList, doctorNm);
  865. // 유효성 검사 추가할 것
  866. var jsonssg = {
  867. "type" : "command",
  868. "functionType" : "consent",
  869. "value" : {
  870. "callbackFn" : "window.activeObj.consentCallback"
  871. },
  872. "userId": doctorId,
  873. "globalParam" : global,
  874. "consentParam" : consent
  875. };
  876. self.toNative(jsonssg);
  877. };
  878. }
  879. });
  880. }else{
  881. if(selectedConsentList.length > 0){
  882. var global = self.consent.makeGlobalParam(patientInfo, doctorId);
  883. var consent = self.consent.makeNewConsentParam(patientInfo, selectedConsentList, doctorNm);
  884. // 유효성 검사 추가할 것
  885. var jsonssg = {
  886. "type" : "command",
  887. "functionType" : "consent",
  888. "value" : {
  889. "callbackFn" : "window.activeObj.consentCallback"
  890. },
  891. "userId": doctorId,
  892. "globalParam" : global,
  893. "consentParam" : consent
  894. };
  895. self.toNative(jsonssg);
  896. };
  897. };
  898. };
  899. e.stopPropagation();
  900. e.preventDefault();
  901. });
  902. $('#ulSetList li button').on("click", function(e){
  903. delUserFormSetList(e);
  904. });
  905. };
  906. //동의서 검색
  907. var searchConsentList = function(){
  908. var param = {
  909. categoryId: $sltCategoryLower.val(),
  910. keyWord: $txtConsentSrch.val()
  911. };
  912. var result = self.consent.getConsentBySearch(param);
  913. // 오른쪽 동의서 리스트 보관
  914. totalConsentList = result;
  915. $ulConsentList.empty();
  916. if(result==undefined||result.length==0) {
  917. self.alert('조회된 데이터가 없습니다.');
  918. return;
  919. };
  920. //동의서 조회 리스트 바인딩
  921. var divCheckbox = div.clone().addClass("checkbox3 checkbox-check checkbox-light");
  922. for(var i=0; i<result.length; i++){
  923. $ulConsentList.addClass("agreementCheck").append(
  924. li.clone().html(
  925. divCheckbox.clone().html($("<input type='checkbox' id='chkConsentSearch_"+(i+1)+"'></input>"))
  926. .append($("<label for='chkConsentSearch_"+(i+1)+"'></label>"))
  927. .append(span.clone().addClass("document").text(result[i].formName)
  928. )
  929. .append(button.clone().addClass("text-right btn btn-default")
  930. .text("추가").attr("formCd", result[i].formCd))
  931. ));
  932. };
  933. //클릭이벤트 연결
  934. $('#ulConsentList li').on("click", function(e){
  935. if(e.toElement.localName == "label") { //체크박스클릭
  936. var input = $(this).children().children("input");
  937. $(input).prop("checked", !$(input).prop("checked"));
  938. if($(input).prop("checked")) $(this).addClass('checked')
  939. else $(this).removeClass('checked')
  940. }else if(e.toElement.localName == "button"){ //추가버튼클릭
  941. }else{ //동의서 내용클릭
  942. if(!$(this).hasClass("checked")){
  943. var input = $(this).children().children("input");
  944. $(input).prop("checked", true);
  945. $(this).addClass('checked');
  946. };
  947. if($('#ulPatientList .list-group-item.active').parent()[0]==undefined){
  948. self.alert('환자를 선택해주세요.');
  949. return;
  950. };
  951. // 담당의가 일반의사인 경우 무조건 출력전용이므로 alert 메시지 띄우고 리턴한다.
  952. // 16.12.12 #6225 siyoung.ahn
  953. if( doctorId.startsWith('5000')) {
  954. self.alert("담당의가 일반의사인 경우 출력전용입니다.");
  955. return;
  956. }
  957. //선택한 동의서만 가지고오기
  958. var selectedItems = $('#ulConsentList li[class="checked"] input');
  959. var selectedConsentList = [];
  960. var printOnlyList = [];
  961. for( var i = 0; i < selectedItems.length; i++ ){
  962. // sequence 추출
  963. var seq = selectedItems[i].id.split('_')[1];
  964. seq = seq - 1;
  965. if(totalConsentList[seq].prntOnly=="Y"){
  966. printOnlyList.push(totalConsentList[seq].formName);
  967. }else{
  968. //data add
  969. selectedConsentList.push(totalConsentList[seq]);
  970. };
  971. };
  972. var printOnlyAlertMsg = '';
  973. for(var j=0; j<printOnlyList.length; j++){
  974. printOnlyAlertMsg = printOnlyAlertMsg +"["+printOnlyList[j]+"]";
  975. if(j!=printOnlyList.length-1) printOnlyAlertMsg = printOnlyAlertMsg +"\n";
  976. };
  977. if(printOnlyAlertMsg.length>0) {
  978. self.confirm(printOnlyAlertMsg+"\n출력전용 동의서 입니다. \nPC에서 출력하세요.", function(confirm){
  979. if(confirm){
  980. if(selectedConsentList.length > 0){
  981. var global = self.consent.makeGlobalParam(patientInfo, doctorId);
  982. var consent = self.consent.makeNewConsentParam(patientInfo, selectedConsentList, doctorNm);
  983. // 유효성 검사 추가할 것
  984. var jsonssg = {
  985. "type" : "command",
  986. "functionType" : "consent",
  987. "value" : {
  988. "callbackFn" : "window.activeObj.consentCallback"
  989. },
  990. "userId": doctorId,
  991. "globalParam" : global,
  992. "consentParam" : consent
  993. };
  994. self.toNative(jsonssg);
  995. };
  996. }
  997. });
  998. }else{
  999. if(selectedConsentList.length > 0){
  1000. var global = self.consent.makeGlobalParam(patientInfo, doctorId);
  1001. var consent = self.consent.makeNewConsentParam(patientInfo, selectedConsentList, doctorNm);
  1002. var jsonssg = {
  1003. "type" : "command",
  1004. "functionType" : "consent",
  1005. "value" : {
  1006. "callbackFn" : "window.activeObj.consentCallback"
  1007. },
  1008. "userId": doctorId,
  1009. "globalParam" : global,
  1010. "consentParam" : consent
  1011. };
  1012. self.toNative(jsonssg);
  1013. };
  1014. };
  1015. };
  1016. e.stopPropagation();
  1017. e.preventDefault();
  1018. });
  1019. $('#ulConsentList li button').on("click", function(e){
  1020. setUserFormSetList(e);
  1021. });
  1022. }
  1023. //즐겨찾기 삭제
  1024. var delUserFormSetList = function(e){
  1025. self.confirm("삭제하시겠습니까?", function(confirm){
  1026. if(confirm){
  1027. var result = self.consent.delUserFormSetList({"formcd": e.currentTarget.attributes.formCd.value});
  1028. if(result.formcd!=null){
  1029. initSetList();
  1030. /*self.alert("삭제되었습니다.");*///16.11.12 고객사요청으로 제거
  1031. }else{
  1032. self.alert("실패했습니다.");
  1033. }
  1034. };
  1035. })
  1036. }
  1037. //즐겨찾기 추가
  1038. var setUserFormSetList = function(e){
  1039. self.confirm("즐겨찾기로 추가하시겠습니까?", function(confirm){
  1040. if(confirm){
  1041. var result = self.consent.setUserFormSetList({"formcd": e.currentTarget.attributes.formCd.value});
  1042. if(result.formcd!=null){
  1043. /*self.alert("추가되었습니다.");*///16.11.12 고객사요청으로 제거
  1044. }else{
  1045. self.alert("실패했습니다.");
  1046. }
  1047. };
  1048. })
  1049. }
  1050. //동의서 삭제
  1051. var deleteConsent = function(seq, reason){
  1052. $("#mplusConsentDeleteForm").modal("hide");
  1053. var delConsentInfo = unfinishedConsentList[seq];
  1054. var delConsentParam = {"consentMstRid": delConsentInfo.consentMstRid,
  1055. "patientCode": delConsentInfo.patientCode,
  1056. "clnDeptCode": delConsentInfo.clnDeptCd,
  1057. "ward": delConsentInfo.ward==null? "": delConsentInfo.ward,
  1058. "roomcd": delConsentInfo.roomCd==null? "": delConsentInfo.roomCd,
  1059. "formRid": delConsentInfo.formRid==null? "":delConsentInfo.formRid,
  1060. "consentState": delConsentInfo.consentState==null? "":delConsentInfo.consentState,
  1061. "reasonForUseN": reason
  1062. }
  1063. var result = self.consent.delConsent(delConsentParam);
  1064. if(result.text==delConsentInfo.consentMstRid){
  1065. /*self.alert("삭제되었습니다.");*///16.11.12 고객사요청으로 제거
  1066. getUnfinishedConsentInfo(patientList[$('#ulPatientList li a.active')[0].attributes.seq.value]);
  1067. }else{
  1068. self.alert("실패했습니다.");
  1069. }
  1070. }
  1071. // 단말기에서 호출할 콜백
  1072. this.consentCallback = function(data) {
  1073. //self.alert(data);
  1074. // 미작성 동의서 리프레쉬
  1075. getUnfinishedConsentInfo(patientList[$('#ulPatientList li a.active')[0].attributes.seq.value]);
  1076. // 오른쪽 동의서 리스트 리프레쉬
  1077. // 동의서 리스트가 오픈되어있을 떄만 해야하나?
  1078. searchTotalConsentList('N');
  1079. }
  1080. this.consentSignCallback = function(data){
  1081. if( typeof data === "string" ){
  1082. data = self.util.parseJson( data );
  1083. }
  1084. if( data.result != undefined ) {
  1085. data = data.result;
  1086. }
  1087. if( data.resultCode == '200') {
  1088. self.alert('인증 처리가 완료되었습니다.');
  1089. } else {
  1090. self.alert(data.errorMsg);
  1091. }
  1092. searchTotalConsentList('N');
  1093. }
  1094. };