SMMMO00200.js 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734
  1. /**
  2. * @desc : 화면초기화
  3. * @
  4. * @param :
  5. * @return :
  6. * @author : 문세희
  7. * @---------------------------------------------------
  8. */
  9. function fInitAfSignScrn(){
  10. var admininfo = model.getValue ( "/root/admininfo" );
  11. var pid = "";
  12. var orddd = "";
  13. var cretno = "";
  14. var instcd = "";
  15. var ioflag = "";
  16. var issdept = "";
  17. var indschacptstat = "";
  18. var dschdd = "";
  19. //PRN 적용여부를 실시간으로 가져와서 체크한다. 2010-01-02 by LYJ
  20. reqHardCodeInfo("/root/hidden/prnprcpyninfo", "/root/hidden/prnprcpyninfo", "173");
  21. model.makeValue( "/root/save/saveflaginfo/prnprcpyninfo", model.getValue("/root/hidden/prnprcpyninfo/hardcd/hardcd") );
  22. pid = opener.javascript.getParameter ( "SMMMO00200_pid" );
  23. if (!isNull ( pid )) {
  24. orddd = opener.javascript.getParameter ( "SMMMO00200_orddd");
  25. cretno = opener.javascript.getParameter ( "SMMMO00200_cretno");
  26. instcd = opener.javascript.getParameter ( "SMMMO00200_instcd");
  27. ioflag = opener.javascript.getParameter ( "SMMMO00200_ioflag");
  28. issdept = opener.javascript.getParameter ( "SMMMO00200_issdept");
  29. } else {
  30. var pamInfoCvs = getGlobalVariable("paminfo"); //상단정보가 있을 경우는 검색
  31. var patFlagCvs = getGlobalVariable("patflag");
  32. var pid = "";
  33. if(pamInfoCvs.length > 0){
  34. model.removeNodeSet ( "/root/paminfo/list" );
  35. model.removeNodeSet ( "/root/patflag/list" );
  36. setCSVToNode ( "/root/paminfo", pamInfoCvs );
  37. setCSVToNode ( "/root/patflag" , patFlagCvs );
  38. pid = model.getValue ( "/root/paminfo/list/pid" );
  39. ioflag = model.getValue ( "/root/paminfo/list/ioflag" );
  40. if ( ioflag == "O" || ioflag == "S") {
  41. orddd = model.getValue ( "/root/paminfo/list/orddd" );
  42. } else {
  43. orddd = model.getValue ( "/root/paminfo/list/indd" );
  44. }
  45. cretno = model.getValue ( "/root/paminfo/list/cretno" );
  46. instcd = model.getValue ( "/root/paminfo/list/instcd");
  47. }
  48. model.setValue("/root/init/srchcond2", pid);
  49. model.setValue("/root/init/srchcond3", model.getValue("/root/paminfo/list/hngnm"));
  50. model.setValue("/root/init/orddd", orddd);
  51. model.setValue("/root/init/orddeptnm", model.getValue("/root/paminfo/list/orddeptnm"));
  52. model.setValue("/root/init/wardcd", model.getValue("/root/paminfo/list/wardcd"));
  53. }
  54. if ( !isNull ( pid )) {
  55. model.setValue ( "/root/send/cond1", "1");
  56. model.setValue ( "/root/send/cond2", pid);
  57. model.setValue ( "/root/send/cond3", instcd);
  58. model.setValue ( "/root/send/cond4", "Y");
  59. model.setValue ( "/root/send/cond5", "N");
  60. model.setValue ( "/root/send/cond6", ioflag);
  61. model.setValue ( "/root/send/cond7", pid);
  62. model.setValue ( "/root/send/cond8", orddd);
  63. model.setValue ( "/root/send/cond9", cretno);
  64. model.setValue("/root/init/srchcond2", pid);
  65. if (!submit ( "TRMMO00200",false )) { //검색 시작 값이 없으면 clear 한다.
  66. fClearAddPrcp();
  67. return;
  68. }
  69. var srcNodeList = model.instances(0).selectNodes("/root/patordinfo/patordinfolist");
  70. var currentDate = getCurrentDate();
  71. model.setValue("/root/formerkey/pseuacptflag", "N");
  72. if ( srcNodeList.length < 1) {
  73. model.setValue ("/root/init/srchcond1", "1" );
  74. model.setValue ("/root/init/srchcond2", pid);
  75. model.setValue ("/root/init/srchcond5", ((getCurrentDate().toDate()).getAddDate(-12,"M")).getDateFormat());
  76. fAfSignPatSrch();
  77. } else if ( srcNodeList.length == 1 ) { //값이 한개면 바로 화면에 보여준다.
  78. var pid = model.getValue("/root/patordinfo/patordinfolist/pid" );
  79. var orddd = model.getValue("/root/patordinfo/patordinfolist/orddd" );
  80. var cretno = model.getValue("/root/patordinfo/patordinfolist/cretno" );
  81. var instcd = model.getValue("/root/patordinfo/patordinfolist/instcd" );
  82. var ioflag = model.getValue("/root/patordinfo/patordinfolist/ioflag" );
  83. var orddeptcd = model.getValue("/root/patordinfo/patordinfolist/orddeptcd" );
  84. var orddrid = model.getValue("/root/patordinfo/patordinfolist/orddrid" );
  85. var insukind = model.getValue("/root/patordinfo/patordinfolist/insukindcd" );
  86. var suppkind = model.getValue("/root/patordinfo/patordinfolist/suppkind" );
  87. var drvalidyn = model.getValue("/root/patordinfo/patordinfolist/drvalidyn" ); // 퇴직 여부
  88. indschacptstat = model.getValue("/root/patordinfo/patordinfolist/indschacptstat" );
  89. dschdd = model.getValue("/root/patordinfo/patordinfolist/dschdd" );
  90. if ( drvalidyn == "N" || drvalidyn == "H") { // 퇴직 또는 휴직 중인 의사
  91. model.setValue ("/root/init/srchcond1", "1" );
  92. model.setValue ("/root/init/srchcond2", pid);
  93. model.setValue ("/root/init/srchcond5", ((getCurrentDate().toDate()).getAddDate(-12,"M")).getDateFormat());
  94. fAfSignPatSrch();
  95. } else if ( "T" == indschacptstat && admininfo.substring( 0, 1 ) == "Y") {
  96. model.setValue ("/root/init/srchcond1", "1" );
  97. model.setValue ("/root/init/srchcond2", pid);
  98. model.setValue ("/root/init/srchcond5", ((getCurrentDate().toDate()).getAddDate(-12,"M")).getDateFormat());
  99. fAfSignPatSrch();
  100. } else {
  101. // 진료일과 현재일이 다른 경우 가접수 후 데이타 셋팅
  102. if ( currentDate != orddd && ( ioflag == "O" || ioflag == "S" )) {
  103. // 진단명 조회를 위한 구 키 셋팅
  104. model.setValue("/root/formerkey/pid", pid);
  105. model.setValue("/root/formerkey/orddd_old", orddd);
  106. model.setValue("/root/formerkey/cretno_old", cretno);
  107. model.setValue("/root/formerkey/instcd", instcd);
  108. model.setValue("/root/formerkey/genrflagcd_old", ioflag);
  109. model.setValue("/root/formerkey/pseuacptflag", "Y");
  110. var returnkey = fSetAssumAccept(pid, orddd, cretno, "O", orddeptcd, orddrid);
  111. if (returnkey == false) return ;
  112. pid = model.getValue("/root/execpatordinfo/execpatordinfolist/otpt_pid" );
  113. orddd = model.getValue("/root/execpatordinfo/execpatordinfolist/otpt_orddd" );
  114. cretno = model.getValue("/root/execpatordinfo/execpatordinfolist/otpt_cretno" );
  115. model.setValue("/root/formerkey/orddd", orddd);
  116. model.setValue("/root/formerkey/cretno", cretno);
  117. model.setValue("/root/formerkey/genrflagcd", ioflag);
  118. } else if ( (ioflag == "I" || ioflag == "D" || ioflag == "E") && indschacptstat == "D" ) {
  119. // 진단명 조회를 위한 구 키 셋팅
  120. model.setValue("/root/formerkey/pid", pid);
  121. model.setValue("/root/formerkey/orddd_old", orddd);
  122. model.setValue("/root/formerkey/cretno_old", cretno);
  123. model.setValue("/root/formerkey/instcd", instcd);
  124. model.setValue("/root/formerkey/genrflagcd_old", ioflag);
  125. model.setValue("/root/formerkey/pseuacptflag", "Y");
  126. var returnkey = fSetAssumAccept(pid, orddd, cretno, "I", orddeptcd, orddrid, insukind, suppkind );
  127. if (returnkey == false) return ;
  128. pid = model.getValue ( "/root/followup/followup/otpt_pid" );
  129. orddd = model.getValue ( "/root/followup/followup/otpt_orddd" );
  130. cretno = model.getValue ( "/root/followup/followup/otpt_cretno" );
  131. ioflag = "O" ; // 강제로 외래 셋팅
  132. model.setValue( "/root/patordinfo/patordinfolist/ioflag", ioflag);
  133. model.setValue("/root/formerkey/orddd", orddd);
  134. model.setValue("/root/formerkey/cretno", cretno);
  135. model.setValue("/root/formerkey/genrflagcd", ioflag);
  136. }
  137. fAddPrcpInitConDone( pid, orddd, cretno, instcd, ioflag , "N", dschdd );
  138. }
  139. } else if ( srcNodeList.length >= 1 ) { //값이 한개이상이면 팝업을 띄운다.
  140. var xpt = window.screenleft + 50;
  141. var ypt = window.screenTop + 80;
  142. var coord = getRelativeCoordinate ( xpt, ypt );
  143. var mon = coord[0];
  144. xpt = coord[1];
  145. ypt = coord[2];
  146. modal ( "SPMMO09100", mon, xpt, ypt, "patordinfo", "/root/patordinfo", "/root/patordinfo", "", false );
  147. // 팝업에서 취소 시 이벤트 처리
  148. var cancelKey = getParameter ( "SPMMO09100_rtnyn");
  149. if (cancelKey != "Y") {
  150. fClearAddPrcp();
  151. clearParameter("SPMMO09100_rtnyn" );
  152. return ;
  153. }
  154. model.removeNodeset("/root/patordinfo/patordinfolist");
  155. var rtnparam = getParameter( "SPMMO09100_rtn_param");
  156. setCSVToNode("/root/patordinfo", rtnparam, "patordinfolist");
  157. var pid = getParameter ( "SPMMO09100_pid" );
  158. var orddd = getParameter ( "SPMMO09100_orddd");
  159. var cretno = getParameter ( "SPMMO09100_cretno");
  160. var instcd = getParameter ( "SPMMO09100_instcd");
  161. var ioflag = getParameter ( "SPMMO09100_ioflag");
  162. var orddeptcd = getParameter ( "SPMMO09100_orddeptcd");
  163. var orddrid = getParameter ( "SPMMO09100_orddrid");
  164. var insukind = getParameter ( "SPMMO09100_insukind");
  165. var suppkind = getParameter ( "SPMMO09100_suppkind");
  166. indschacptstat = getParameter ( "SPMMO09100_indschacptstat");
  167. dschdd = getParameter ( "SPMMO09100_dschdd");
  168. if ( getParameter ( "SPMMO09100_dc") != "DC" ) {
  169. // 진료일과 현재일이 다른 경우 가접수 후 데이타 셋팅
  170. if ( currentDate != orddd && (ioflag == "O" || ioflag == "S")) {
  171. // 진단명 조회를 위한 구 키 셋팅
  172. model.setValue("/root/formerkey/pid", pid);
  173. model.setValue("/root/formerkey/orddd_old", orddd);
  174. model.setValue("/root/formerkey/cretno_old", cretno);
  175. model.setValue("/root/formerkey/instcd", instcd);
  176. model.setValue("/root/formerkey/genrflagcd_old", ioflag);
  177. model.setValue("/root/formerkey/pseuacptflag", "Y");
  178. var returnkey = fSetAssumAccept(pid, orddd, cretno, "O", orddeptcd, orddrid);
  179. if (returnkey == false) return ;
  180. pid = model.getValue ( "/root/execpatordinfo/execpatordinfolist/otpt_pid" );
  181. orddd = model.getValue ( "/root/execpatordinfo/execpatordinfolist/otpt_orddd" );
  182. cretno = model.getValue ( "/root/execpatordinfo/execpatordinfolist/otpt_cretno" );
  183. model.setValue("/root/formerkey/orddd", orddd);
  184. model.setValue("/root/formerkey/cretno", cretno);
  185. model.setValue("/root/formerkey/genrflagcd", ioflag);
  186. } else if ( (ioflag == "I" || ioflag == "D" || ioflag == "E") && indschacptstat == "D" ) {
  187. // 진단명 조회를 위한 구 키 셋팅
  188. model.setValue("/root/formerkey/pid", pid);
  189. model.setValue("/root/formerkey/orddd_old", orddd);
  190. model.setValue("/root/formerkey/cretno_old", cretno);
  191. model.setValue("/root/formerkey/instcd", instcd);
  192. model.setValue("/root/formerkey/genrflagcd_old", ioflag);
  193. model.setValue("/root/formerkey/pseuacptflag", "Y");
  194. var returnkey = fSetAssumAccept(pid, orddd, cretno, "I", orddeptcd, orddrid, insukind, suppkind );
  195. if (returnkey == false) return ;
  196. pid = model.getValue ( "/root/followup/followup/otpt_pid" );
  197. orddd = model.getValue ( "/root/followup/followup/otpt_orddd" );
  198. cretno = model.getValue ( "/root/followup/followup/otpt_cretno" );
  199. ioflag = "O" ; // 강제로 외래 셋팅
  200. model.setValue( "/root/patordinfo/patordinfolist/ioflag", ioflag);
  201. model.setValue("/root/formerkey/orddd", orddd);
  202. model.setValue("/root/formerkey/cretno", cretno);
  203. model.setValue("/root/formerkey/genrflagcd", ioflag);
  204. }
  205. }
  206. clearParameter("SPMMO09100_pid" );
  207. clearParameter("SPMMO09100_orddd");
  208. clearParameter("SPMMO09100_cretno");
  209. clearParameter("SPMMO09100_instcd");
  210. clearParameter("SPMMO09100_ioflag");
  211. clearParameter("SPMMO09100_orddeptcd");
  212. clearParameter("SPMMO09100_orddrid");
  213. clearParameter("SPMMO09100_indschacptstat");
  214. clearParameter("SPMMO09100_dschdd");
  215. clearParameter("SPMMO09100_insukind");
  216. clearParameter("SPMMO09100_suppkind");
  217. if ( isNull(pid )) {
  218. fClearAddPrcp();
  219. } else {
  220. fAddPrcpInitConDone( pid, orddd, cretno, instcd, ioflag , "N", dschdd );
  221. }
  222. }
  223. }
  224. if ( ioflag == "O" ) caption14.visible = true; //원내처방사유
  225. if (isNull(issdept)) issdept = getUserInfo( "dutplcecd" ); //발행처
  226. model.setValue ( "/root/init/issdept", issdept );
  227. var depthngnm = model.getValue ( "/root/init/issdept/dept[deptcd='" + issdept + "']/depthngnm" );
  228. var sDutPlceCd = getUserInfo("dutplcecd");
  229. if ( isNull(depthngnm)) {
  230. if (sDutPlceCd != "4072000000" && sDutPlceCd != "4070700000" ) { // 심사실 요청으로 메세지 팝업 제거 2012.09.18 엄영만
  231. messageBox ( "현재 시행부서처방의 발행부서는 [" + getUserInfo ( "dutplcenm" ) + "] 입니다. \n해당부서 코드는 발행부서로 등록되어 있지는 않습니다. \n다른 발행부서로 처방을 등록하시려면 발행처를 수정하여 주십시오.", "E");
  232. }
  233. }
  234. if (getScreenMenuParameter() == "PAM") {
  235. cmb_prcpkind.disabled = true;
  236. }
  237. zesfInitSign();
  238. model.removeNode ( "/root/init/prcpkindcd/M0003[cdid=80]" );
  239. model.setValue ( "/root/init/setprcpyn", "Y" );
  240. if (sDutPlceCd != "4072000000" && sDutPlceCd != "4070700000" ) { // 심사실 요청으로 전처방탭 조회 하도록 수정. 2012.09.18 엄영만
  241. if (ivw_prcp3 != null) {
  242. ivw_prcp3.visible = false;
  243. ivw_prcp3.src = "SMMMO02100_전회처방.xrw";
  244. }
  245. }
  246. //20131119 이정택 추가(산정특례 기간 알 수 있도록 표시)
  247. if(!isNull(model.getValue( "/root/initsrchprcp/prcpetccnts/message"))){
  248. model.makeValue("/root/init/message", model.getValue( "/root/initsrchprcp/prcpetccnts/message"));
  249. }else{
  250. model.makeValue("/root/init/message", "");
  251. }//20131119
  252. }
  253. /**
  254. * @desc : 환자 조회
  255. * @
  256. * @param :
  257. * @return :
  258. * @author : 문세희
  259. * @---------------------------------------------------
  260. */
  261. function fAfSignPatSrch(){
  262. var adminInfo = model.getValue ( "/root/admininfo" );
  263. var srchcond4 = model.getValue ( "/root/init/srchcond4" );
  264. setParameter("SPMMO09100_paminfoyn", model.getValue ( "/root/init/paminfoyn" ));
  265. if (isNull(srchcond4)) {
  266. model.setValue ( "/root/init/srchcond4", "-" );
  267. model.refresh();
  268. }
  269. // 누락처방입력 정보 초기화
  270. setGlobalVariable("SPMMO16800_rtn1", "");
  271. model.resetInstanceNode("/root/prcpresn");
  272. // 구 인스턴스 초기화
  273. model.resetInstanceNode("/root/formerkey");
  274. model.resetInstanceNode("/root/paminfo");
  275. clearParameter("SPMMO09100_pid" );
  276. clearParameter("SPMMO09100_orddd");
  277. clearParameter("SPMMO09100_cretno");
  278. clearParameter("SPMMO09100_instcd");
  279. clearParameter("SPMMO09100_ioflag");
  280. clearParameter("SPMMO09100_orddeptcd");
  281. clearParameter("SPMMO09100_orddrid");
  282. clearParameter("SPMMO09100_indschacptstat");
  283. clearParameter("SPMMO09100_rtnyn");
  284. clearParameter("SPMMO09100_dschdd");
  285. clearParameter("SPMMO09100_dc");
  286. clearParameter("SPMMO09100_insukind");
  287. clearParameter("SPMMO09100_suppkind");
  288. clearParameter("SPMMO09100_drvalidyn");
  289. model.setValue ( "/root/init/rrgstno1", "");
  290. model.setValue ( "/root/init/rrgstno2", "");
  291. model.setValue ( "/root/init/orddeptnm", "");
  292. model.setValue ( "/root/init/sex", "");
  293. model.setValue ( "/root/init/age", "");
  294. model.setValue ( "/root/init/wardcd", "");
  295. model.setValue ( "/root/init/orddd", "");
  296. model.setValue ( "/root/send/cond1", model.getValue ( "/root/init/srchcond1" ));
  297. if ( model.getValue ( "/root/send/cond1") == "1" ) {
  298. model.setValue ( "/root/send/cond2", model.getValue ("/root/init/srchcond2" ));
  299. } else {
  300. //이름으로 검색할 경우
  301. model.setValue ( "/root/send/cond2", model.getValue ("/root/init/srchcond3" ));
  302. }
  303. model.setValue ( "/root/send/cond3", getUserInfo("dutplceinstcd"));
  304. model.setValue ( "/root/send/cond4", "N");
  305. model.setValue ( "/root/send/cond5", "N");
  306. model.setValue ( "/root/send/cond6", model.getValue ("/root/init/srchcond4"));
  307. model.setValue ( "/root/send/cond10", model.getValue ("/root/init/srchcond5"));
  308. model.setValue ( "/root/send/cond11", model.getValue ("/root/init/srchcond6"));
  309. if (!submit ( "TRMMO00200",false )) { //검색 시작 값이 없으면 clear 한다.
  310. fClearAddPrcp();
  311. return;
  312. }
  313. var srcNodeList = model.instances(0).selectNodes("/root/patordinfo/patordinfolist");
  314. var currentDate = getCurrentDate();
  315. model.setValue("/root/formerkey/pseuacptflag", "N");
  316. if ( srcNodeList.length >= 1 ) { //값이 한개이상이면 팝업을 띄운다.
  317. var xpt = window.screenleft + 50;
  318. var ypt = window.screenTop + 80;
  319. var coord = getRelativeCoordinate ( xpt, ypt );
  320. var mon = coord[0];
  321. xpt = coord[1];
  322. ypt = coord[2];
  323. modal ( "SPMMO09100", mon, xpt, ypt, "patordinfo", "/root/patordinfo", "/root/patordinfo", "", false );
  324. // 팝업에서 취소 시 이벤트 처리
  325. var cancelKey = getParameter ( "SPMMO09100_rtnyn");
  326. if (cancelKey != "Y") {
  327. fClearAddPrcp();
  328. clearParameter("SPMMO09100_rtnyn" );
  329. clearParameter("SPMMO09100_paminfoyn" );
  330. return ;
  331. }
  332. model.removeNodeset("/root/patordinfo/patordinfolist");
  333. var rtnparam = getParameter( "SPMMO09100_rtn_param");
  334. setCSVToNode("/root/patordinfo", rtnparam, "patordinfolist");
  335. var pid = getParameter ( "SPMMO09100_pid" );
  336. var orddd = getParameter ( "SPMMO09100_orddd");
  337. var cretno = getParameter ( "SPMMO09100_cretno");
  338. var instcd = getParameter ( "SPMMO09100_instcd");
  339. var ioflag = getParameter ( "SPMMO09100_ioflag");
  340. var orddeptcd = getParameter ( "SPMMO09100_orddeptcd");
  341. var orddrid = getParameter ( "SPMMO09100_orddrid");
  342. var indschacptstat = getParameter ( "SPMMO09100_indschacptstat");
  343. var dschdd = getParameter ( "SPMMO09100_dschdd");
  344. var insukind = getParameter ( "SPMMO09100_insukind");
  345. var suppkind = getParameter ( "SPMMO09100_suppkind");
  346. var dcflag = getParameter ( "SPMMO09100_dc");
  347. var drvalidyn = getParameter ( "SPMMO09100_drvalidyn");
  348. //var srchdd = getParameter ( "SPMMO09100_srchdd");
  349. var srchdd = ""; // 기존에 입원일자로 조회 하던것을 퇴원 일자로 조회 하도록 수정 응급실 내원후 병동 이동일 경우 icdr에 ordtype 'E' 로 존재 하여 상단정보 조회시 오류 발생 방지 2014.07.11 엄영만
  350. if(dschdd == "99991231") {
  351. srchdd = getCurrentDate();
  352. } else {
  353. srchdd = dschdd;
  354. }
  355. if ( dcflag != "DC" ) {
  356. if ( currentDate != orddd && (ioflag == "O" || ioflag == "S")) { // 진료일과 현재일이 다른 경우 가접수 후 데이타 셋팅. 20090604 퇴원후 바로 가접수처리건때문에 외래에만 적용.
  357. // 진단명 조회를 위한 구 키 셋팅
  358. model.setValue("/root/formerkey/pid", pid);
  359. model.setValue("/root/formerkey/orddd_old", orddd);
  360. model.setValue("/root/formerkey/cretno_old", cretno);
  361. model.setValue("/root/formerkey/instcd", instcd);
  362. model.setValue("/root/formerkey/genrflagcd_old", ioflag);
  363. model.setValue("/root/formerkey/pseuacptflag", "Y");
  364. var returnkey = fSetAssumAccept(pid, orddd, cretno, "O", orddeptcd, orddrid);
  365. if (returnkey == false) return ;
  366. pid = model.getValue ( "/root/execpatordinfo/execpatordinfolist/otpt_pid" );
  367. orddd = model.getValue ( "/root/execpatordinfo/execpatordinfolist/otpt_orddd" );
  368. cretno = model.getValue ( "/root/execpatordinfo/execpatordinfolist/otpt_cretno" );
  369. model.setValue("/root/formerkey/orddd", orddd);
  370. model.setValue("/root/formerkey/cretno", cretno);
  371. model.setValue("/root/formerkey/genrflagcd", ioflag);
  372. } else if ( (ioflag == "I" || ioflag == "D" || ioflag == "E") && indschacptstat == "D" ) {
  373. // 진단명 조회를 위한 구 키 셋팅
  374. model.setValue("/root/formerkey/pid", pid);
  375. model.setValue("/root/formerkey/orddd_old", orddd);
  376. model.setValue("/root/formerkey/cretno_old", cretno);
  377. model.setValue("/root/formerkey/instcd", instcd);
  378. model.setValue("/root/formerkey/genrflagcd_old", ioflag);
  379. model.setValue("/root/formerkey/pseuacptflag", "Y");
  380. var returnkey = fSetAssumAccept(pid, orddd, cretno, "I", orddeptcd, orddrid, insukind, suppkind );
  381. if (returnkey == false) return ;
  382. pid = model.getValue ( "/root/followup/followup/otpt_pid" );
  383. orddd = model.getValue ( "/root/followup/followup/otpt_orddd" );
  384. cretno = model.getValue ( "/root/followup/followup/otpt_cretno" );
  385. ioflag = "O" ; // 강제로 외래 셋팅
  386. model.setValue( "/root/patordinfo/patordinfolist/ioflag", ioflag);
  387. model.setValue("/root/formerkey/orddd", orddd);
  388. model.setValue("/root/formerkey/cretno", cretno);
  389. model.setValue("/root/formerkey/genrflagcd", ioflag);
  390. }
  391. }
  392. clearParameter("SPMMO09100_pid" );
  393. clearParameter("SPMMO09100_orddd");
  394. clearParameter("SPMMO09100_cretno");
  395. clearParameter("SPMMO09100_instcd");
  396. clearParameter("SPMMO09100_ioflag");
  397. clearParameter("SPMMO09100_orddeptcd");
  398. clearParameter("SPMMO09100_orddrid");
  399. clearParameter("SPMMO09100_indschacptstat");
  400. clearParameter("SPMMO09100_rtnyn");
  401. clearParameter("SPMMO09100_dschdd");
  402. clearParameter("SPMMO09100_dc");
  403. clearParameter("SPMMO09100_insukind");
  404. clearParameter("SPMMO09100_suppkind");
  405. clearParameter("SPMMO09100_drvalidyn");
  406. if ( isNull(pid )) {
  407. fClearAddPrcp();
  408. } else {
  409. var sPamInfoYn = model.getValue ( "/root/init/paminfoyn" );
  410. if ( dcflag == "DC" || sPamInfoYn == "Y") { // 상단정보 설정(과거처방DC, 상단정보 연계)
  411. // 퇴직의사에 대해서 admin 권한을 가진 사람일 경우는 입원일로 체크하도록 한다.
  412. var sTopSrchDd = "";
  413. if ( drvalidyn == "N" && adminInfo.substring(0, 6) == "YYYYYY") {
  414. sTopSrchDd = orddd;
  415. }
  416. fSetTopPatInfo(instcd, ioflag, pid, orddd, cretno, sTopSrchDd);
  417. setParameter("SPMMO08900_rtn_useyn", ""); // 처방 저장후 의사처방화면 설정로직을 스킵 하기 위해
  418. } else {
  419. var sDutPlceCd = getUserInfo("dutplcecd");
  420. if (sDutPlceCd != "4072000000" && sDutPlceCd != "4070700000" ) { // 심사실에서 가퇴원 환자 선택시 상단 정보 삭제 되지 않도록 처리 2013.09.25 엄영만
  421. delPatientInfos();
  422. }
  423. }
  424. if(adminInfo.substring(0, 6) != "YYYYYY") {
  425. fAddPrcpInitConDone( pid, orddd, cretno, instcd, ioflag , "N", dschdd );
  426. } else {
  427. fAddPrcpInitConDone( pid, orddd, cretno, instcd, ioflag , "N", dschdd , srchdd);
  428. }
  429. fPatDethInfo(); //사망환자 alert(2009.12.21 JJE)
  430. }
  431. }
  432. model.refresh();
  433. }
  434. /**
  435. * @desc : 상단 정보를 셋팅 한다.
  436. * @
  437. * @param :
  438. * @return :
  439. * @author : 2014-06-09 엄영만
  440. * @---------------------------------------------------
  441. */
  442. function fSetTopPatInfo(sInstCd, sIoFlag, sPid, sOrdDd, sCretNo, sSrchDd) {
  443. var sTopIoFlag = "";
  444. if(sIoFlag == "O" || sIoFlag =="S") { //외래, 건진
  445. sTopIoFlag = "O";
  446. } else if(sIoFlag == "I" || sIoFlag =="D") { //입원환자, DSC
  447. sTopIoFlag = "I";
  448. } else if(sIoFlag == "E") { //응급실
  449. sTopIoFlag = "E";
  450. }
  451. var sParam = sTopIoFlag + "▦"
  452. + sPid + "▦"
  453. + sOrdDd + "▦"
  454. + sCretNo + "▦"
  455. + sInstCd + "▦"
  456. + sSrchDd;
  457. setParameter("condparam", sParam);
  458. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  459. }
  460. /**
  461. * @desc : 후인증 대상 검사
  462. * @
  463. * @param :
  464. * @return :
  465. * @author : 오지훈
  466. * @---------------------------------------------------
  467. */
  468. function fChkAfSignUser(){
  469. //20090302 마정민 수정 의사 직정코드가 아니면 모두 후인증 팝업 뜨도록 수정
  470. var jobkindcd = getUserInfo("jobkindcd");
  471. var userid = getUserInfo("userid");
  472. if ( isNull(model.getValue ( "/root/initsrch/drjobkindcd[trgtcd='" + jobkindcd + "']/trgtcd" ))) {
  473. //후인증 대상의사 선택 팝업 띄움
  474. if (!fChkAfSignPrcpInfo()){
  475. return false;
  476. }
  477. var prcpflag = model.getValue("/root/init/prcpauthflag");
  478. if(!fPrcpSave(prcpflag)) {
  479. model.removeNodeset("/root/prcpdc/prcplist");
  480. }
  481. } else {
  482. var prcpflag = model.getValue("/root/init/prcpauthflag");
  483. if(!fPrcpSave(prcpflag)) {
  484. model.removeNodeset("/root/prcpdc/prcplist");
  485. }
  486. }
  487. }
  488. /**
  489. * @desc : 후인증 처방 검사
  490. * : H2 - 수술
  491. * : A2 - 경구
  492. * : A4 - 외용
  493. * : A6 - 주사
  494. * : C2 - 영상
  495. * : C4 - Angio
  496. * : B2 - 진검
  497. * : B4 - 수혈
  498. * @param :
  499. * @return :
  500. * @author : 오지훈
  501. * @---------------------------------------------------
  502. */
  503. function fChkAfSignPrcpInfo(){
  504. //var prcpclscd = model.getValue("/root/main/prcp/prcplist[prcpclscd='H2' or prcpclscd='A2' or prcpclscd='A4' or prcpclscd='A6' or prcpclscd='C2' or prcpclscd='C4' or prcpclscd='B2' or prcpclscd='B4' or prcpclscd='G2']/prcpclscd");
  505. var chkprcpclscd = "";
  506. var chkearnclscd = "";
  507. var chkaftcertyn = "";
  508. //20090302 마정민 수정: 후인증 처방종류, 수익분류 체크. hardcd 테이블 정보 이용
  509. for (var i=1; i < grd_prcplist.rows; i++) {
  510. chkprcpclscd = model.getValue("/root/main/prcp/prcplist[" + i + "]/prcpclscd");
  511. chkearnclscd = model.getValue("/root/main/prcp/prcplist[" + i + "]/tempcol2");
  512. if (!isNull(model.getValue ( "/root/initsrch/aftcertprcpcls[trgtcd='" + chkprcpclscd + "']/trgtcd" ))) {
  513. chkaftcertyn = "Y";
  514. break;
  515. } else if (!isNull(model.getValue ( "/root/initsrch/aftcertearncls[trgtcd='" + chkearnclscd + "']/trgtcd" ))) {
  516. chkaftcertyn = "Y";
  517. break;
  518. }
  519. }
  520. if ( chkaftcertyn == "Y" ) {
  521. var ioflag = model.getValue ( "/root/paminfo/list/ioflag");
  522. if ( ioflag == "O" || ioflag == "S" ) {
  523. setParameter("SPMMB04100_orddrid", model.getValue ( "/root/paminfo/list/orddrid" ));
  524. } else {
  525. setParameter("SPMMB04100_orddrid", model.getValue ( "/root/paminfo/list/medispclid" ));
  526. }
  527. setParameter("SPMMB04100_defdeptcd", model.getValue ( "/root/paminfo/list/orddeptcd" ));
  528. setParameter("SPMMB04100_prcpcd", model.getValue ( "/root/init/prcpdd" ));
  529. modal("SPMMB04100");
  530. var useyn = getParameter("SPMMB04100_useyn");
  531. if (useyn != "Y") {
  532. return false;
  533. }
  534. if(useyn == "Y"){ //후인증 선택의사로 설정
  535. var orddrid = getParameter("SPMMB04100_orddrid");
  536. } else if(useyn == "X"){ //환자의 전문의로 설정
  537. var ioflag = model.getValue("/root/patflag/list/prcpgenrflag");
  538. if(ioflag == "O" || ioflag == "S"){ //외래, 건진
  539. var orddrid = model.getValue("/root/paminfo/list/orddrid");
  540. }else{
  541. var orddrid = model.getValue("/root/paminfo/list/medispclid");
  542. }
  543. }
  544. fSetAfSignDr(orddrid); //후인증 구분 및 의사 설정
  545. }
  546. return true;
  547. }
  548. /**
  549. * @desc : 후인증 구분 및 의사 설정
  550. * @
  551. * @param :
  552. * @return :
  553. * @author : 오지훈
  554. * @---------------------------------------------------
  555. */
  556. function fSetAfSignDr( orddrid ) {
  557. //20090302 마정민 수정: 후인증 처방종류, 수익분류 체크. hardcd 테이블 정보 이용
  558. for (var i=1; i < grd_prcplist.rows; i++) {
  559. chkprcpclscd = model.getValue("/root/main/prcp/prcplist[" + i + "]/prcpclscd");
  560. chkearnclscd = model.getValue("/root/main/prcp/prcplist[" + i + "]/tempcol2");
  561. if (!isNull(model.getValue ( "/root/initsrch/aftcertprcpcls[trgtcd='" + chkprcpclscd + "']/trgtcd" ))) {
  562. model.setValue("/root/main/prcp/prcplist[" + i + "]/aftcertflag", "01");
  563. model.setValue("/root/main/prcp/prcplist[" + i + "]/aftcertdrid", orddrid);
  564. } else if (!isNull(model.getValue ( "/root/initsrch/aftcertearncls[trgtcd='" + chkearnclscd + "']/trgtcd" ))) {
  565. model.setValue("/root/main/prcp/prcplist[" + i + "]/aftcertflag", "01");
  566. model.setValue("/root/main/prcp/prcplist[" + i + "]/aftcertdrid", orddrid);
  567. }
  568. }
  569. }
  570. /**
  571. * @desc : 발생일이 틀릴 경우 가접수 발생
  572. * @
  573. * @param :
  574. * @return :
  575. * @author : 문세희
  576. * @---------------------------------------------------
  577. */
  578. function fSetAssumAccept( pid, orddd, cretno, ioflag, orddeptcd, orddrid, insukind, suppkind ){
  579. // 수진정보가 외래, 입원일 경우 따로 처리
  580. if (ioflag == "O") {
  581. model.makeValue("root/send/flag", "I");
  582. model.makeValue("root/send/otpt_pid", pid);
  583. model.makeValue("root/send/otpt_orddd", orddd);
  584. model.makeValue("root/send/otpt_cretno", cretno);
  585. model.makeValue("root/send/otpt_orddeptcd", orddeptcd);
  586. model.makeValue("root/send/otpt_orddrid", orddrid);
  587. model.makeValue("root/send/otpt_histstat", "T");
  588. if(submit("TRMMO09101") == false){
  589. // 진단명 조회를 위한 구 인스턴스 초기화
  590. model.resetInstanceNode("/root/formerkey");
  591. return false;
  592. }
  593. } else if (ioflag == "I") {
  594. var otpt_flag = "I"; // 구분 정보
  595. var otpt_orddd = getCurrentDate(); // 발생일
  596. var otpt_orddeptcd = orddeptcd; // 발생부서
  597. var otpt_orddrid = orddrid; // 발생의
  598. var otpt_ordtm = eval(getCurrentTime().substr(0,4)); // 현재 시간
  599. var otpt_rsrvflag = "P"; // 시행부서 처방 'P'
  600. var sess_userid = getUserInfo("userid"); // 사용자 ID
  601. var indd = orddd; // 입원일
  602. var otpt_pid = pid; // 환자ID
  603. var otpt_etcordflag = "-" ; // 재활 :M 외에는 넣지 말것, 기타접수구분
  604. var otpt_medamtestmyn = "N"; // 'N' 진찰료산정여부 면제
  605. var otpt_medamtfreeresn = "17"; // 진찰료미산정사유 - '17' 시행부서처방
  606. model.makeValue("/root/send/cond1", otpt_flag);
  607. model.makeValue("/root/send/cond3", otpt_orddd);
  608. model.makeValue("/root/send/cond4", otpt_orddeptcd);
  609. model.makeValue("/root/send/cond5", otpt_orddrid);
  610. model.makeValue("/root/send/cond6", otpt_ordtm);
  611. model.makeValue("/root/send/cond7", otpt_rsrvflag);
  612. model.makeValue("/root/send/cond8", sess_userid);
  613. model.makeValue("/root/send/cond9", indd);
  614. model.makeValue("/root/send/cond10", cretno);
  615. model.makeValue("/root/send/cond11", otpt_pid);
  616. model.makeValue("/root/send/cond12", otpt_etcordflag);
  617. model.makeValue("/root/send/cond13", otpt_medamtestmyn);
  618. model.makeValue("/root/send/cond14", otpt_medamtfreeresn);
  619. model.makeValue("/root/send/cond15", insukind);
  620. model.makeValue("/root/send/cond16", suppkind);
  621. if(submit("TXMMO00107") == false){
  622. // 진단명 조회를 위한 구 인스턴스 초기화
  623. model.resetInstanceNode("/root/formerkey");
  624. return false;
  625. }
  626. }
  627. }
  628. /**
  629. * @desc : 간호에서 환자의 사망정보 불러오기
  630. * @
  631. * @param :
  632. * @return :
  633. * @author : 박유진
  634. * @---------------------------------------------------
  635. */
  636. function fPatDethInfo(){
  637. var pid = model.getValue("/root/paminfo/list/pid");
  638. if(!isNull(pid)){
  639. model.makeValue("root/send/getpatdethinfo",pid);
  640. if(submit("TRMMO00216", false)){
  641. var dethyn = model.getValue("/root/temp/deth/dethinfo/dethyn");
  642. if(dethyn=="Y"){
  643. var dethdd = model.getValue("/root/temp/deth/dethinfo/dethdd");
  644. messageBox( dethdd + " 사망 등록된", "I005");
  645. }
  646. }
  647. model.removeNode ("root/send/getpatdethinfo");
  648. }
  649. }