SPPMI03200.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. function fInit() {
  2. model.resetInstanceNode("/root/send/cond");
  3. model.resetInstanceNode("/root/send/agmtdesc");
  4. model.resetInstanceNode("/root/main/agmtlist");
  5. model.resetInstanceNode("/root/main/printinfo");
  6. model.resetInstanceNode("/root/main/ininfo");
  7. model.resetInstanceNode("/root/main/agmtcount");
  8. model.resetInstanceNode("/root/init");
  9. model.resetInstanceNode("/root/hidden");
  10. model.resetInstanceNode("/root/tmp");
  11. model.setValue("/root/send/cond/agmttype", 0); // 구분:전체
  12. model.setValue("/root/send/agmtdesc/ocrtype", "S"); // O:OCR, S:전자서명
  13. model.setValue("/root/send/agmtdesc/agmttype", "1");
  14. model.setValue("/root/send/agmtdesc/fromdd", getCurrentDate());
  15. var todd = getNewDate();
  16. todd = todd.getAddDate(364, "D");
  17. todd = getDateTime(todd, "D");
  18. model.setValue("/root/send/agmtdesc/todd", todd);
  19. cmb_type.disabled = false;
  20. combo1.disabled = false;
  21. model.refresh();
  22. }
  23. // OCRNO입력
  24. function fSetBcode() {
  25. setInputNodeCurText();
  26. var sOcrTagNo = model.getValue("/root/send/cond/ocrtagno");
  27. if (isNull(sOcrTagNo) || sOcrTagNo.length < 13) {
  28. //messageBox("OCR코드가 정상적으로 입력되지 않았습니다.", "C000");
  29. return false;
  30. }
  31. // 검색 실시
  32. fSearch();
  33. }
  34. /*일괄등록(마감)방식을 채택함으로 인해 자동등록은 하지 않음
  35. function fAutoRgst() {
  36. var pid = model.getValue("/root/main/ininfo/pid");
  37. var indd = model.getValue("/root/main/ininfo/indd");
  38. var agmttype = model.getValue("/root/main/ininfo/agmttype");
  39. // 자동신청 확인용 메세지 - 입원결정서 있는 경우
  40. if (messageBox(model.getValue("/root/send/agmtdesc/hngnm")
  41. + "(" + pid + ")의 "
  42. + "입원일자 : " + indd + "건을 "
  43. + "약정서 (" + model.getValue("/root/send/cond/ocrtagno").substr(0, 13)
  44. + ")에 등록하시겠습니까?\r\n\r\n"
  45. + "시작일자는 " + indd + "로 설정됩니다. "
  46. , "Q000") == '6') {
  47. model.setValue("/root/send/agmtdesc/fromdd", indd);
  48. model.makeValue("/root/send/agmtdesc/updateflag", "U");
  49. model.makeValue("/root/send/agmtdesc/formcd", fGetFromCd(model.getValue("/root/send/agmtdesc/agmttype")));
  50. if (submit("TXPMI03202")) {
  51. // 의무기록 연동이 되어 있지 않은 경우 연동실시
  52. if (model.getValue("/root/send/agmtdesc/emrif") == "N") {
  53. if (fOCRSave()) {
  54. // 연동 성공시 자동 닫기
  55. model.close();
  56. }
  57. }
  58. }
  59. }
  60. }
  61. */
  62. /**
  63. * fPrintAgmt 입원약정서 신규출력
  64. *
  65. * @param pid : 환자번호
  66. * @param orddd : 진료일자
  67. * @param orddeptcd : 진료과
  68. * @param orddrid : 진료의
  69. * @param agmttype : 약정서구분(1:일반약정서, 2:기간약정서)
  70. * @param rsrvyn : 입원결정서유무
  71. * */
  72. function fPrintAgmt(pid, orddd, orddeptcd, orddrid, agmttype, rsrvyn, roomnm, roomcnt, insukind, todd, cretno) {
  73. model.makeValue("/root/send/printcond/pid", pid);
  74. model.makeValue("/root/send/printcond/orddd", orddd);
  75. model.makeValue("/root/send/printcond/orddeptcd", orddeptcd);
  76. model.makeValue("/root/send/printcond/orddrid", orddrid);
  77. // model.makeValue("/root/send/printcond/formcd", formcd);
  78. model.makeValue("/root/send/printcond/agmttype", agmttype);
  79. model.makeValue("/root/send/printcond/rsrvyn", rsrvyn);
  80. model.makeValue("/root/send/printcond/ocrtype", "O"); // 서식종류(O:OCR, S:전자서명)
  81. model.setValue("/root/send/agmtdesc/ocrtype", "O"); // 자동연동 시 디폴트 처리(O:OCR, S:전자서명)
  82. // 입원약정서 저장 및 OCR출력정보 취득
  83. if (submit("TXPMI03203")) {
  84. var usernm = getUserName();
  85. var curdate = getCurrentDate();
  86. var curtm = getCurrentTime();
  87. model.makeValue("/root/main/printinfo/usernm", usernm);
  88. model.makeValue("/root/main/printinfo/curdate", curdate);
  89. model.makeValue("/root/main/printinfo/curtm", curtm);
  90. model.makeValue("/root/main/printinfo/roomnm", roomnm);
  91. model.makeValue("/root/main/printinfo/roomcnt", roomcnt);
  92. model.makeValue("/root/main/printinfo/insukind", insukind);
  93. model.makeValue("/root/main/printinfo/orddd", orddd);
  94. model.makeValue("/root/main/printinfo/fromdd", orddd);
  95. model.makeValue("/root/main/printinfo/todd", todd);
  96. model.makeValue("/root/main/printinfo/rsrvyn", rsrvyn);
  97. // 일반약정서
  98. if (agmttype == "1") {
  99. exeReportPreview("RPPMI03401","XMLSTR" , "" , "" , "true" , "", "", "", "", "true");
  100. // 기간약정서
  101. } else {
  102. exeReportPreview("RPPMI03402","XMLSTR" , "" , "" , "true" , "", "", "", "", "true");
  103. }
  104. // 원무에서 출력하는 경우, 자동연동기능 추가(입원결정시에는 제외)
  105. if (rsrvyn == "N") {
  106. // 연동기능 구현을 위한 파라미터 설정
  107. model.setValue("/root/send/agmtdesc/pid", pid);
  108. model.setValue("/root/send/agmtdesc/ocrtagno", model.getValue("/root/main/printinfo/ocrtagno"));
  109. model.setValue("/root/send/agmtdesc/agmttype", agmttype);
  110. model.setValue("/root/send/agmtdesc/indd", orddd);
  111. model.makeValue("/root/send/agmtdesc/emrif", "N");
  112. model.makeValue("/root/send/agmtdesc/cretno", cretno);
  113. model.makeValue("/root/send/agmtdesc/orddeptcd", orddeptcd);
  114. model.makeValue("/root/send/agmtdesc/medispclid", orddrid);
  115. model.makeValue("/root/send/agmtdesc/ocrtype", "O"); // 원무 출력 시 자동연동 처리용 ocrtype
  116. fOCRSave();
  117. }
  118. }
  119. }
  120. function fOCRSave() {
  121. // 연동대상검증 : 대상이 선택되지 않았거나, 이미 연동이 완료된 데이터는 제외시킴
  122. if (isNull(model.getValue("/root/send/agmtdesc/pid"))) {
  123. messageBox("대상이 선택되지 않았습니다.", "C000");
  124. return;
  125. }
  126. if (model.getValue("/root/send/agmtdesc/emrif") == "Y") {
  127. messageBox("이미 연동이 완료된 데이터입니다.", "C000");
  128. return;
  129. }
  130. // 연동은 OCR 서식만 가능(전자서명 불가)
  131. if (model.getValue("/root/send/agmtdesc/ocrtype") != "O") {
  132. messageBox("전사서명서식은 연동 불가능합니다. (자동연동)", "C000");
  133. return ;
  134. }
  135. // formcd 설정
  136. model.makeValue("/root/send/agmtdesc/formcd", fGetFromCd(model.getValue("/root/send/agmtdesc/agmttype")));
  137. // 의무기록 연동위한 데이터 조회
  138. submit("TRPMI03205");
  139. // 파라미터 세팅
  140. var ocrtagno = model.getValue("/root/main/ocrinfo/ocrtagno");
  141. var pid = model.getValue("/root/main/ocrinfo/pid");
  142. var orddd = model.getValue("/root/main/ocrinfo/orddd");
  143. var cretno = model.getValue("/root/main/ocrinfo/cretno");
  144. var ordtype = model.getValue("/root/main/ocrinfo/ordtype");
  145. var orddeptcd = model.getValue("/root/main/ocrinfo/orddeptcd");
  146. var orddrid = model.getValue("/root/main/ocrinfo/orddrid");
  147. var formcd = model.getValue("/root/main/ocrinfo/formcd");
  148. var formfromdt = model.getValue("/root/main/ocrinfo/formfromdt");
  149. var pagecnt = model.getValue("/root/main/ocrinfo/pagecnt");
  150. if(!fSaveOCRIF(ocrtagno, pid, orddd, cretno, ordtype, orddeptcd, orddrid, formcd, formfromdt, "", "", pagecnt)){
  151. messageBox("통합기록 연동중 오류가 발생하였습니다. ","C999");
  152. return false;
  153. } else {
  154. // 입원약정서 관리화면에서 호출한 경우만 재조회(입원등록 IF에서는 호출 제외)
  155. if (cretno == null) {
  156. messageBox("정상적으로 등록되었습니다. ","I000");
  157. fSearch();
  158. // 다음데이터 입력을 위한 포커스 이동
  159. model.setFocus("ipt_ocrtagnoif");
  160. }
  161. return true;
  162. }
  163. }
  164. function fGetFromCd(agmttype) {
  165. var formcd;
  166. var nodeCnt = getNodesetCount("/root/init/prncd/hardcd");
  167. // 구분에 맞춰 폼코드 처리(1:일반약정서 / 2:기간약정서 / 3:개인정보이용동의서)
  168. for (i = 1; i <= nodeCnt; i++) {
  169. if (agmttype == model.getValue("/root/init/prncd/hardcd[" + i + "]/cdseqno")) {
  170. formcd = model.getValue("/root/init/prncd/hardcd[" + i + "]/hardcd");
  171. break;
  172. }
  173. }
  174. return formcd;
  175. }
  176. function fSearch() {
  177. // 조회
  178. if (submit("TRPMI03201")) {
  179. model.resetInstanceNode("/root/send/agmtdesc");
  180. model.refresh();
  181. }
  182. }
  183. // ivr용 - 입원일자에 유효한 입원약정서 유무 조회(자동출력의 기준으로 사용)
  184. function fReqGetInAgmtCount(pid, indd, agmttype) {
  185. model.setValue("/root/send/cond/pid", pid);
  186. model.setValue("/root/send/cond/fromdd", indd);
  187. model.setValue("/root/send/cond/agmttype", agmttype);
  188. // 조회
  189. if (submit("TRPMI03204")) {
  190. if (parseInt(model.getValue("/root/main/agmtcount/cnt")) > 0) {
  191. return true;
  192. } else {
  193. return false;
  194. }
  195. }
  196. }
  197. function fRePrintOcr() {
  198. if (isNull(model.getValue("/root/send/agmtdesc/ocrtagno"))) {
  199. messageBox("약정서 정보를 선택해주십시요.", "C000");
  200. return;
  201. }
  202. if (model.getValue("/root/send/agmtdesc/scanyn") != "Y") {
  203. model.makeValue("/root/main/printinfo/instcd", model.getValue("/root/send/agmtdesc/instcd"));
  204. model.makeValue("/root/main/printinfo/ocrtagno", model.getValue("/root/send/agmtdesc/ocrtagno"));
  205. model.makeValue("/root/main/printinfo/pid", model.getValue("/root/send/agmtdesc/pid"));
  206. model.makeValue("/root/main/printinfo/hngnm", model.getValue("/root/send/agmtdesc/hngnm"));
  207. model.makeValue("/root/main/printinfo/rrgstno1", model.getValue("/root/send/agmtdesc/rrgstno").substr(0,6));
  208. model.makeValue("/root/main/printinfo/rrgstno2", model.getValue("/root/send/agmtdesc/rrgstno").substr(6,13));
  209. model.makeValue("/root/main/printinfo/address", model.getValue("/root/send/agmtdesc/address"));
  210. model.makeValue("/root/main/printinfo/hometel", model.getValue("/root/send/agmtdesc/hometel"));
  211. model.makeValue("/root/main/printinfo/mpphontel", model.getValue("/root/send/agmtdesc/mpphontel"));
  212. model.makeValue("/root/main/printinfo/hospnm", model.getValue("/root/send/agmtdesc/hospnm"));
  213. model.makeValue("/root/main/printinfo/ordcentnm", model.getValue("/root/send/agmtdesc/ordcentnm"));
  214. model.makeValue("/root/main/printinfo/orddeptnm", model.getValue("/root/send/agmtdesc/orddeptnm"));
  215. model.makeValue("/root/main/printinfo/usernm", getUserName());
  216. model.makeValue("/root/main/printinfo/curdate", getCurrentDate());
  217. model.makeValue("/root/main/printinfo/curtm", getCurrentTime());
  218. model.makeValue("/root/main/printinfo/roomnm", model.getValue("/root/send/agmtdesc/roomnm"));
  219. model.makeValue("/root/main/printinfo/roomcnt", "");
  220. model.makeValue("/root/main/printinfo/insukind", model.getValue("/root/send/agmtdesc/insukind"));
  221. model.makeValue("/root/main/printinfo/orddd", model.getValue("/root/send/agmtdesc/indd"));
  222. model.makeValue("/root/main/printinfo/fromdd", model.getValue("/root/send/agmtdesc/fromdd"));
  223. model.makeValue("/root/main/printinfo/todd", model.getValue("/root/send/agmtdesc/todd"));
  224. // 일반약정서
  225. if (model.getValue("/root/send/agmtdesc/agmttype") == "1") {
  226. exeReportPreview("RPPMI03401","XMLSTR" , "" , "" , "true" , "", "", "", "", "true");
  227. // 기간약정서
  228. } else {
  229. exeReportPreview("RPPMI03402","XMLSTR" , "" , "" , "true" , "", "", "", "", "true");
  230. }
  231. } else {
  232. messageBox("스캔이 완료되었습니다. 재출력은 OCR반납화면에서 하시기 바랍니다.", "C000");
  233. return;
  234. /*
  235. // 혹시 의무기록 스캔 이후의 약정서를 출력해야 할 경우 아래의 처리 태우면 됨
  236. model.resetInstanceNode("/root/send/iemr");
  237. model.makeValue("/root/send/iemr/ocrcode", model.getValue("/root/send/agmtdesc/ocrtagno"));
  238. if((window.children.item("imgemrviewer") == null)
  239. && (model.getValue("/root/send/iemr/ocrcode") != "")) {
  240. window.load("../../../emr/imgemrweb/xrw/SSMRC03100.xrw", "modeless", "imgemrviewer", "", "/root/send/iemr", "/root/hidden/temp");
  241. window.children.item("imgemrviewer").document.title = "Image EMR Viewer";
  242. }
  243. */
  244. }
  245. }
  246. // 입원약정서 재출력 - 입원등록화면에서 재출력할 경우 사용
  247. function rePrintAgmtPid(pid, indd) {
  248. // 초기화
  249. fInit();
  250. model.setValue("/root/send/cond/pid", pid);
  251. model.setValue("/root/send/cond/indd", indd);
  252. model.setValue("/root/send/cond/agmttype", "1"); // 일반약정서
  253. // 약정서 조회
  254. submit("TRPMI03201");
  255. // 약정서 데이터 설정
  256. model.copyNode("/root/send/agmtdesc", "/root/main/agmtlist[1]");
  257. // 약정서가 없는 경우 관리화면으로 유도
  258. if (isNull(model.getValue("/root/send/agmtdesc/ocrtagno"))) {
  259. messageBox("입원약정서가 재출력에 문제가 발생했습니다. 입원약정서관리화면에서 확인하세요.", "C000");
  260. return;
  261. }
  262. // 일반약정서 출력용
  263. model.setValue("/root/send/agmtdesc/agmttype", "1");
  264. // 약정서 재출력
  265. fRePrintOcr();
  266. }