SPPMI02800.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. // 초기화
  2. function fInit(){
  3. // 원무공통코드조회
  4. pamfGetCodeList(new Array("PK018"), new Array("/root/init/PAM/PK018list"));
  5. // 인스턴스 초기화
  6. model.resetInstanceNode("/root/send");
  7. model.resetInstanceNode("/root/main/uproomsignlist");
  8. model.resetInstanceNode("/root/main/signinfo");
  9. model.refresh();
  10. // 신청인 서명여부 표시
  11. fsign_chk();
  12. // 관계 서명여부 표시
  13. fsign_Rely_chk();
  14. // 버튼제어
  15. btn_update.disabled = true;
  16. btn_insert.disabled = true;
  17. // 싸인패드 초기화
  18. fsignpad_init();
  19. // 포커스 설정
  20. model.setfocus("input1", true);
  21. // 개인정보이용동의서 출력을 위한 서식코드 취득
  22. reqHardCodeInfo("/root/send/reqdata", "/root/init/prncd", "5604");
  23. // 부모창에서 넘겨진 파라미터 검증
  24. if (checkOpener()) {
  25. var pid = opener.javascript.getParameter("SPZHA20101_PARM_PID");
  26. var indd = opener.javascript.getParameter("SPZHA20101_PARM_INDD");
  27. var autoflag = opener.javascript.getParameter("SPZHA20101_PARM_AUTOFLAG");
  28. model.setValue("/root/send/pid", pid);
  29. model.setValue("/root/send/indd", indd);
  30. model.refresh();
  31. // 차트번호가 존재하는 경우에만 조회실시
  32. if (!isNull(pid)) {
  33. // 초기조회
  34. fGetUpRoomSignList();
  35. // 자동실시인 경우에만 처리
  36. if (autoflag == "Y") {
  37. // 검색결과가 1건 + 서명 N 인경우 자동으로 설정
  38. if (grd_signlist.rows == 2) {
  39. // 전자동의서 기본출력 처리 by 조중래 20151104
  40. if (model.getValue("/root/init/PAM/PK018list/PK018[cdid='" + app.clientIp + "']/cdnm") == "Y"
  41. && messageBox("상급병실신청서", "Q017") == "6") {
  42. // 정보 설정
  43. fSetSignInfo();
  44. // 구분설정 S:전자동의서
  45. model.setValue("/root/main/signinfo/ocrtype", "S");
  46. setOCRType();
  47. // 자동저장
  48. fSave("I");
  49. }
  50. }
  51. }
  52. }
  53. }
  54. }
  55. // 상급병실신청리스트 조회
  56. function fGetUpRoomSignList() {
  57. if (isNull(model.getValue("/root/send/pid"))
  58. || isNull(model.getValue("/root/send/indd"))) {
  59. messageBox("환자번호 및 입원일자는 필수입니다.", "E000");
  60. return;
  61. }
  62. submit("TRPMI02801");
  63. btn_update.disabled = true;
  64. btn_insert.disabled = true;
  65. }
  66. // 상급병실신청 서명정보설정
  67. function fSetSignInfo() {
  68. var grdRow = grd_signlist.row;
  69. if (grdRow < 1) {
  70. grdRow = 1; // 초기값 설정용 - 전자동의서 자동출력 처리용
  71. }
  72. // 상세정보 설정
  73. model.copyNode("/root/main/signinfo" , "/root/main/uproomsignlist[" + grdRow +"]" );
  74. model.refresh();
  75. // 신규저장 / 수정 버튼제어
  76. if (model.getValue("/root/main/signinfo/signyn") != "N") {
  77. model.makeValue("/root/main/signinfo/updateflag" , "U");
  78. btn_update.disabled = false;
  79. btn_insert.disabled = true;
  80. } else {
  81. model.makeValue("/root/main/signinfo/updateflag" , "I");
  82. btn_update.disabled = true;
  83. btn_insert.disabled = false;
  84. }
  85. // 사인표시부 초기화
  86. fsignpad_init();
  87. // 신청인 서명여부 표시
  88. fsign_chk();
  89. // 관계 서명여부 표시
  90. fsign_Rely_chk();
  91. // 구분 제어
  92. setOCRType();
  93. }
  94. //신청인 서명
  95. function fsign_req(){
  96. // 상급병실 신청정보가 있을 때만 처리
  97. if (isNull(model.getValue("/root/main/signinfo/pid"))) {
  98. messageBox("상급병실 신청정보가 선택되지 않았습니다. \r\n오른쪽 리스트에서 해당 정보를 선택한 후 진행하십시요.", "C000");
  99. return;
  100. }
  101. fsignpad_init();
  102. fsignpad_request(0);
  103. model.makeValue("/root/main/signinfo/elctappsignyn1", "Y");
  104. }
  105. //신청인 서명확인
  106. function fsign_confirm(){
  107. var flag = model.getValue("/root/main/signinfo/elctappsignyn1");
  108. if(flag == "Y"){
  109. // 전자서명 저장
  110. fsignpad_save();
  111. model.setValue("/root/main/signinfo/elctsignkey1" , model.getValue("/root/result/sign/elctsignkey") , true);
  112. model.setValue("/root/main/signinfo/elctsigncnts1", model.getValue("/root/result/sign/elctsigncnts") , true);
  113. // 전자서명 싸인패드에 표시
  114. fsignpad_view(model.getValue("/root/main/signinfo/elctsignkey1") , model.getValue("/root/main/signinfo/elctsigncnts1"));
  115. //서명유무 체크
  116. fsign_chk();
  117. return true;
  118. } else {
  119. messageBox("신청인 서명이 입력되지 않았습니다.", "C000");
  120. return false;
  121. }
  122. }
  123. //서명유무 체크
  124. function fsign_chk(){
  125. var appsigncnts = model.getValue("/root/main/signinfo/elctsignkey1");
  126. if (appsigncnts == "-" || appsigncnts == "") {
  127. caption12.attribute("style") = "background-color:#cce8ff;";
  128. }else{
  129. caption12.attribute("style") = "background-color:#ff0000;";
  130. }
  131. }
  132. //신청인관계 서명
  133. function fsign_Rely_req(){
  134. // 서명확인용 버튼기능 수행
  135. if (fsign_confirm() != true) {
  136. return;
  137. }
  138. // 신청인관계는 신청인 서명이 존재할 때만 서명가능함
  139. if (model.getValue("/root/main/signinfo/elctappsignyn1") != 'Y') {
  140. messageBox("신청인 서명이 입력되지 않았습니다.", "C000");
  141. return;
  142. }
  143. fsignpad_init();
  144. fsignpad_request(0);
  145. model.makeValue("/root/main/signinfo/elctappsignyn2", "Y");
  146. }
  147. //신청인관계 서명확인
  148. function fsign_Rely_confirm(){
  149. var flag = model.getValue("/root/main/signinfo/elctappsignyn2");
  150. if(flag == "Y"){
  151. // 전자서명 저장
  152. fsignpad_save();
  153. model.setValue("/root/main/signinfo/elctsignkey2" , model.getValue("/root/result/sign/elctsignkey") , true);
  154. model.setValue("/root/main/signinfo/elctsigncnts2", model.getValue("/root/result/sign/elctsigncnts") , true);
  155. // 전자서명 싸인패드에 표시
  156. fsignpad_view(model.getValue("/root/main/signinfo/elctsignkey2") , model.getValue("/root/main/signinfo/elctsigncnts2"));
  157. //서명유무 체크
  158. fsign_Rely_chk();
  159. return true;
  160. } else {
  161. messageBox("관계가 입력되지 않았습니다.", "C000");
  162. return false;
  163. }
  164. }
  165. //서명유무 체크
  166. function fsign_Rely_chk(){
  167. var apprelacnts = model.getValue("/root/main/signinfo/elctsignkey2");
  168. if (apprelacnts == "-" || apprelacnts == "") {
  169. caption14.attribute("style") = "background-color:#cce8ff;";
  170. } else {
  171. caption14.attribute("style") = "background-color:#ff0000;";
  172. }
  173. }
  174. // 신규저장
  175. function fSave(flag) {
  176. if (model.getValue("/root/main/signinfo/ocrtype") == "" || model.getValue("/root/main/signinfo/ocrtype") == null) {
  177. messageBox("서식구분은 필수입력입니다.", "C000");
  178. return;
  179. }
  180. // 관계서명확인용 버튼기능 수행(서면서명/전자동의서 작성의 경우 체크제외)
  181. if (model.getValue("/root/main/signinfo/ocrtype") == "E" && fsign_Rely_confirm() != true) {
  182. return;
  183. }
  184. // 신청인 및 관계데이터가 모두 존재할 경우에만 저장처리(서면서명/전자동의서 작성의 경우 체크제외)
  185. if (model.getValue("/root/main/signinfo/ocrtype") == "E") {
  186. if (isNull(model.getValue("/root/main/signinfo/elctsignkey1"))
  187. || isNull(model.getValue("/root/main/signinfo/elctsignkey2"))) {
  188. messageBox("신청인 또는 관계가 입력되지 않았습니다.", "C000");
  189. return;
  190. }
  191. }
  192. // 전자동의서 체크실시
  193. if (model.getValue("/root/main/signinfo/ocrtype") == "S") {
  194. // OCRTAG 등록
  195. // 1. 병동에서 OCR서식을 출력하여 내려온 경우에 수동입력
  196. // 2. 전자동의서를 통한 입력
  197. if (model.getValue("/root/main/signinfo/ocrtag") == ""
  198. || model.getValue("/root/main/signinfo/ocrtag") == null) {
  199. // 서식코드 취득
  200. model.makeValue("/root/main/signinfo/formcd", model.getValue("/root/init/prncd/hardcd[cdseqno='7']/hardcd")); // 7:상급병실신청서 0000001801
  201. model.makeValue("/root/main/signinfo/orddd", model.getValue("/root/main/signinfo/indd"));
  202. model.makeValue("/root/main/signinfo/ordtype", "I");
  203. model.makeValue("/root/main/signinfo/flag", "U"); // 상급병실신청서
  204. // 전자동의서
  205. var ocrtag = fPrintOcrConsent("/root/main/signinfo");
  206. if (ocrtag == "" || ocrtag == null) {
  207. messageBox("전자동의서가 정상적으로 처리되지 않았습니다. ", "C000");
  208. return false;
  209. } else {
  210. model.setValue("/root/main/signinfo/ocrtag", ocrtag);
  211. }
  212. }
  213. // 전자동의서 모듈 혹은 병동에서 내려온 서식등록의 유효성 체크
  214. if (model.getValue("/root/main/signinfo/ocrtag").length != 13) {
  215. messageBox("전자동의서 OCRTAG가 없거나 비정상입니다. \r\n전자동의서를 다시 저장하거나,병실에서 내려온 신청서의 OCRTAG를 정확히 입력해주십시요.", "C000");
  216. return false;
  217. }
  218. }
  219. /*
  220. if(messageBox("내역을 저장 하시겠습니까? ", "Q999") != "6"){
  221. return;
  222. }
  223. */
  224. // 신규저장
  225. if (flag == "I") {
  226. if (submit("TXPMI02802")) {
  227. messageBox("정상적으로 처리되었습니다.", "I000");
  228. }
  229. // 신규저장시 창닫기
  230. model.close();
  231. }
  232. // 수정
  233. if (flag == "U") {
  234. if (submit("TXPMI02802")) {
  235. messageBox("정상적으로 처리되었습니다.", "I000");
  236. }
  237. }
  238. // 이중등록방지 seqno가 변경되었음
  239. btn_insert.disabled = true;
  240. btn_update.disabled = true;
  241. /* 입퇴원결정서 재출력을 위해 정보는 초기화하지 않음
  242. // 서명상세정보 초기화
  243. model.resetInstanceNode("/root/main/signinfo");
  244. model.refresh();
  245. fsignpad_init();
  246. */
  247. }
  248. // 입퇴원결정서 재출력
  249. function fPrint() {
  250. var inpt_pid = model.getValue("/root/main/signinfo/pid");
  251. // 상급병실 신청정보가 있을 때만 처리
  252. if (isNull(inpt_pid)) {
  253. messageBox("상급병실 신청정보가 선택되지 않았습니다. \r\n오른쪽 리스트에서 해당 정보를 선택한 후 진행하십시요.", "C000");
  254. return;
  255. }
  256. model.makeValue("/root/send/data41/instcd", model.getValue("/root/main/signinfo/instcd"));
  257. model.makeValue("/root/send/data41/pid", model.getValue("/root/main/signinfo/pid"));
  258. model.makeValue("/root/send/data41/indd", model.getValue("/root/main/signinfo/indd"));
  259. model.makeValue("/root/send/data41/cretno", model.getValue("/root/main/signinfo/cretno"));
  260. model.makeValue("/root/send/data41/orddeptcd", model.getValue("/root/main/signinfo/orddeptcd"));
  261. // 병동병실 정보 추가. 2011.11.18. 노회식
  262. model.makeValue("/root/send/data41/wardcd", model.getValue("/root/main/signinfo/wardcd"));
  263. model.makeValue("/root/send/data41/roomcd", model.getValue("/root/main/signinfo/roomcd"));
  264. model.makeValue("/root/send/data41/roomgrdecd", model.getValue("/root/main/signinfo/roomgrdecd"));
  265. model.makeValue("/root/send/data41/fromdd", model.getValue("/root/main/signinfo/fromdd"));
  266. submit("TRPMI01202");
  267. // 상급병실 신청내역 있을경우 기존 병실정보에 엎어서 출력.
  268. model.setValue("/root/hidden/rsltflag/indeciprint/wardnm", model.getValue("/root/hidden/rsltflag/patappinfo1/wardnm"));
  269. model.setValue("/root/hidden/rsltflag/indeciprint/roomcd", model.getValue("/root/hidden/rsltflag/patappinfo1/roomcd"));
  270. model.setValue("/root/hidden/rsltflag/indeciprint/bedcnt", model.getValue("/root/hidden/rsltflag/patappinfo1/bedcnt"));
  271. model.setValue("/root/hidden/rsltflag/indeciprint/diffamt", model.getValue("/root/hidden/rsltflag/patappinfo1/extrapay"));
  272. model.makeValue("/root/hidden/rsltflag/patappinfo1/signimgsign", model.getValue("/root/hidden/rsltflag/patappinfo1/elctappsigncnts"));
  273. model.makeValue("/root/hidden/rsltflag/patappinfo1/signimgrela", model.getValue("/root/hidden/rsltflag/patappinfo1/elctapprelacnts"));
  274. // 전과전실 선택진료 사인 추가 2011.11.18 노회식
  275. model.makeValue("/root/hidden/rsltflag/patappinfo1/signimgsign1", model.getValue("/root/hidden/rsltflag/patappinfo1/elctsigncnts1"));
  276. model.makeValue("/root/hidden/rsltflag/patappinfo1/signimgrela1", model.getValue("/root/hidden/rsltflag/patappinfo1/elctsigncnts2"));
  277. setGlobalVariable("SPPAO00100_강제출력여부", "Y" ,"p");
  278. model.removenode("/root/hidden/rsltflag/indeciprint/diagnm");
  279. model.makeNode("/root/hidden/rsltflag/indeciprint/diagnm");
  280. model.setValue("/root/hidden/rsltflag/indeciprint/diagnm", model.getValue("/root/temp/diagnm"));
  281. //공통코드 P0045에서 프린터 명칭과 트레이 호출 - 입퇴원결정서
  282. fGetPrintName();
  283. var print_name = getGlobalVariable("SPPAO00100_P0045_6_nm","p");
  284. var print_tray = getGlobalVariable("SPPAO00100_P0045_6_tray","p");
  285. //입퇴원결정서 프린터
  286. if(print_name != "false"){
  287. exeReportPreview("RPPMI01201", "XMLSTR", "", "", print_name, "", "", "", "", "true", "", "", print_tray, "", "", "", "", "", "", "", "");
  288. }
  289. // 자보환자안내문 출력
  290. if(model.getValue("/root/hidden/rsltflag/indeciprint/insukindcd") == "31" || model.getValue("root/main/ptin/ptin_insukind") == "31") {
  291. //공통코드 P0045에서 프린터 명칭과 트레이 호출 - 자보환자안내문
  292. submit("TRPMI01203");
  293. var print_name = getGlobalVariable("SPPAO00100_P0045_100_nm","p");
  294. var print_tray = getGlobalVariable("SPPAO00100_P0045_100_tray","p");
  295. //디폴트 프린터
  296. if(print_name != "false"){
  297. exeReportPreview("RPPMI01203", "XMLSTR", "", "", print_name, "", "", "", "", "true", "", "", print_tray, "", "", "2", "", "", "", "", "");
  298. }
  299. }
  300. setGlobalVariable("SPPAO00100_강제출력여부", "" ,"p");
  301. }
  302. // 서면서명체크 제어
  303. function setOCRType() {
  304. var ocrtype = model.getValue("/root/main/signinfo/ocrtype");
  305. // 전자서명 이외의 경우 버튼제어
  306. if (ocrtype != "E") {
  307. button1.disabled = true;
  308. //button5.disabled = true;
  309. button4.disabled = true;
  310. //button6.disabled = true;
  311. model.makeValue("/root/main/signinfo/elctappsignyn1", "");
  312. model.makeValue("/root/main/signinfo/elctsignkey1", "");
  313. model.makeValue("/root/main/signinfo/elctsigncnts1", "");
  314. model.makeValue("/root/main/signinfo/elctappsignyn2", "");
  315. model.makeValue("/root/main/signinfo/elctsignkey2", "");
  316. model.makeValue("/root/main/signinfo/elctsigncnts2", "");
  317. fsign_chk();
  318. fsign_Rely_chk();
  319. } else {
  320. button1.disabled = false;
  321. button4.disabled = false;
  322. }
  323. model.refresh();
  324. }
  325. // 상급병실신청서OCR서식 재출력
  326. function fPrintRmsn() {
  327. var pid = model.getValue ( "/root/main/signinfo/pid" );
  328. if (pid == null || pid == "") {
  329. messageBox("환자정보가 선택되지 않았습니다.", "E000");
  330. return;
  331. }
  332. // 구분에 맞춰 폼코드 처리(7:상급병실신청서)
  333. var formcd = model.getValue("/root/init/prncd/hardcd[cdseqno='7']/hardcd");
  334. var orddd = model.getValue("/root/main/signinfo/indd");
  335. var cretno = model.getValue("/root/main/signinfo/cretno");
  336. var ordtype = model.getValue("/root/main/signinfo/ordtype");
  337. fPerPrintOCR(formcd, pid, orddd, cretno, ordtype, "");
  338. }