SPMMO00400.js 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 퇴원예고 ( SPMMO00400_퇴원예고.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var sPAMINFOLIST = "/root/temp/paminfo/list";
  7. /**
  8. * @desc : 화면 초기화
  9. * @
  10. * @param :
  11. * @return :
  12. * @author : 오지훈
  13. * @---------------------------------------------------
  14. */
  15. function fInitialize_SPMMO00400(){
  16. var paminfo = getGlobalVariable("paminfo");
  17. setCSVToNode("/root/temp/paminfo", paminfo);
  18. model.setValue("/root/init/today", getCurrentDate());
  19. var dschdclrtyn = model.getValue(sPAMINFOLIST + "/dschdclrtyn");
  20. var dschdclrdt = model.getValue(sPAMINFOLIST + "/dschdclrdt");
  21. var dschdclrtrgstid = model.getValue(sPAMINFOLIST + "/dschdclrtrgstid");
  22. var dschdclrtrgstdt = model.getValue(sPAMINFOLIST + "/dschdclrtrgstdt");
  23. var dschdclrtrgstnm = model.getValue(sPAMINFOLIST + "/dschdclrtrgstnm");
  24. var indschacptstat = model.getValue(sPAMINFOLIST + "/indschacptstat");
  25. var hngnm = model.getValue(sPAMINFOLIST + "/hngnm");
  26. var dethdt = model.getValue(sPAMINFOLIST + "/dethdt");
  27. if(indschacptstat == "D" || indschacptstat == "T"){
  28. messageBox("이미 퇴원한 환자", "E008");
  29. window.close();
  30. return;
  31. }
  32. if(dschdclrtyn == "N"){ //퇴원예고가 안된경우
  33. model.setValue("/root/main/cond/dclrflag" , "N");
  34. //CP에서 퇴원일이 이정된 경우, 퇴원예고일을 설정 (2008.08.06 JJE)
  35. if (dethdt != "" && dethdt != "-") { // 사망등록 되었을경우 사망일자로 설정.
  36. model.setValue("/root/main/cond/dclrdd" , dethdt.substr(0, 8));
  37. } else {
  38. var SMMMP00800_dclrdd = opener.javascript.getParameter("SMMMP00800_dclrdd");
  39. if( SMMMP00800_dclrdd == null || SMMMP00800_dclrdd == "" ){
  40. model.setValue("/root/main/cond/dclrdd" , getCurrentDate());
  41. }else{
  42. model.setValue("/root/main/cond/dclrdd" , SMMMP00800_dclrdd);
  43. }
  44. }
  45. model.setValue("/root/main/cond/dclrtm" , getCurrentTime().substr(0,6));
  46. model.setValue("/root/main/cond/dclrtrgstnm", getUserName());
  47. btn_dschcncl.disabled = true; //예고취소 버튼 비활성화
  48. model.refresh();
  49. }else{ //퇴원예고가 된 경우
  50. model.setValue("/root/main/cond/dclrflag" , dschdclrtyn);
  51. model.setValue("/root/main/cond/dclrdd" , dschdclrdt.substr(0,8));
  52. model.setValue("/root/main/cond/dclrtm" , dschdclrdt.substr(8,6));
  53. model.setValue("/root/main/cond/dclrtrgstdt", dschdclrtrgstdt);
  54. model.setValue("/root/main/cond/dclrtrgstnm", dschdclrtrgstnm);
  55. btn_dschrgst.disabled = true; //예고등록 버튼 비활성화
  56. model.refresh();
  57. }
  58. model.setFocus("ipt_dclrtm");
  59. model.refresh();
  60. }
  61. /**
  62. * @desc : 예고일자 변경시
  63. * @ 현재일자 보다 예고일자가 작은 경우, 경고 메시지를 띄운다.
  64. * @param :
  65. * @return :
  66. * @author : 오지훈
  67. * @---------------------------------------------------
  68. */
  69. function fChngDschDclrDD(){
  70. /*
  71. var dethdt = model.getValue(sPAMINFOLIST + "/dethdt"); // 사망일자
  72. var dclrdd = model.getValue("/root/main/cond/dclrdd");
  73. var curdd = model.getValue("/root/init/today");
  74. if (dethdt != "" && dethdt != "-") { // 사망등록 되었을경우 사망일자로 설정.
  75. messageBox("사망환자는 예고일자가 사망일자로 고정 됩니다.", "C999");
  76. model.setValue("/root/main/cond/dclrdd", dethdt.substr(0, 8));
  77. } else {
  78. if(curdd > dclrdd){ //현재 일자보다 예고일자가 작은 경우 error발생
  79. messageBox("예고일자는 현재일자 보다 앞선 날짜로", "C001");
  80. model.setValue("/root/main/cond/dclrdd", curdd);
  81. }else{
  82. model.setFocus("ipt_dclrtm");
  83. }
  84. }
  85. model.refresh();
  86. */
  87. }
  88. /**
  89. * @desc : 퇴원예고 등록 및 취소
  90. * @
  91. * @param : 퇴원예고 등록/취소 여부 sDschDclrtYN - Y / N
  92. * @return :
  93. * @author : 오지훈
  94. * @---------------------------------------------------
  95. */
  96. function fSaveDschDclr(dschdclrtyn){
  97. if(fRequireRgst(dschdclrtyn) == false){
  98. //fInitialize_SPMMO00400(); // 화면을 초기화
  99. return;
  100. }
  101. model.removeNodeset("/root/send/savedata");
  102. var pid = model.getValue(sPAMINFOLIST + "/pid");
  103. var indd = model.getValue(sPAMINFOLIST + "/indd");
  104. var cretno = model.getValue(sPAMINFOLIST + "/cretno");
  105. var seqno = model.getValue(sPAMINFOLIST + "/seqno");
  106. var ordtype = model.getValue(sPAMINFOLIST + "/ioflag");
  107. var dschdclrdt = model.getValue("/root/main/cond/dclrdd") +
  108. model.getValue("/root/main/cond/dclrtm");
  109. var orddeptcd = model.getValue(sPAMINFOLIST + "/orddeptcd");
  110. if(dschdclrtyn == "Y"){ // 예고등록시
  111. // 퇴원예고일 이후 처방 여부를 체크한다. 20121213 엄영만
  112. if(!fCheckDschAfterPrcpExist()) return;
  113. // 퇴원예고 등록시 반환요청(E) 처방 여부를 체크한다. 20130803 엄영만 버튼 위치로 이동 처리(2013.08.05)
  114. //if(!fCheckReturnPrcpExist()) return;
  115. // 완료되지 않은 의뢰(Consult)를 체크한다. 20130205 엄영만
  116. if(!fCheckConsultExist()) return;
  117. // 제왕절개 안정성 평가 관련 기록 여부를 체크한다. 20120104 엄영만
  118. if(!fCheckChildbirthRec()) return;
  119. // 퇴원예고시 GOS 기록지 작성 여부 체크한다. 20130227 엄영만 심사실 요청
  120. if(!fCheckDschApoplexyRec()) return;
  121. // 퇴원예고시 DRG환자의 경우 DRG 질점검표 작성 여부를 체크한다. 2013/05/03
  122. if(!fCheckDrgRecExist()) return;
  123. }
  124. /*
  125. **퇴원예고 등록시 중증체크 추가. BY SONJY 2008-08-18
  126. **중증등록번호를 가진 환자가 응급실에서 진료 후 퇴원오더 시 암상병이 없으면 ALERT
  127. **by sonjy 2008-08-18
  128. */
  129. if( ordtype == "E" && dschdclrtyn == "Y" ) {
  130. messageBox("응급환자를 다른 병원에 전원하는 경우에\n 반드시 응급의료에 관한 법률에 위배되지 않도록\n 1339 정보센터에 연락하시고, 전원의뢰서를 작성해 주시기 바랍니다.", "I");
  131. model.makeValue("/root/send/req/pid" , pid);
  132. model.makeValue("/root/send/req/indd" , indd);
  133. model.makeValue("/root/send/req/cretno" , cretno);
  134. model.makeValue("/root/send/req/ordtype" , ordtype);
  135. model.makeValue("/root/send/req/instcd" , model.getValue(sPAMINFOLIST + "/instcd"));
  136. //by sonjy 20100202 진료과 추가
  137. model.makeValue("/root/send/req/orddeptcd", model.getValue(sPAMINFOLIST + "/orddeptcd"));
  138. if(submit("TRMMO00121")){
  139. if( model.getValue("/root/main/prcpetcinfo/savecncrhist/cncrhistyn") == "Y" ) {
  140. if( messageBox( model.getValue ( "/root/main/prcpetcinfo/savecncrhist/cncrhistmsg" ) + " 주상병을 변경하고 특례", "Q009") == 6 ) {
  141. btn_close.dispatch("DOMActivate");
  142. return ; //blocking
  143. }
  144. //return ; blocking하진 않음.
  145. } else if( model.getValue("/root/main/prcpetcinfo/serdiagermsg/serdiageryn") == "Y" ) {
  146. //20080102 마정민 수정: 중증응급 등록한자의 진단명 alert 변경요청번호 533
  147. messageBox( model.getValue ( "/root/main/prcpetcinfo/serdiagermsg/serdiagermsg" ), "I" ) ;
  148. //20080102 서소영 선생님 blocking처리 요청
  149. return;
  150. }
  151. if ( model.getValue("/root/main/prcpetcinfo/diagrcdchkmsg/diagrcdchkyn") == "Y" ) {
  152. //응급실 퇴원 예고 시 주상병이 R코드인 경우 퇴원예고 블러킹 [요청번호 10232]
  153. messageBox( model.getValue ( "/root/main/prcpetcinfo/diagrcdchkmsg/diagrcdchkmsg" ), "I" ) ;
  154. btn_close.dispatch("DOMActivate");
  155. return ;
  156. }
  157. } else {
  158. return;
  159. }
  160. }
  161. // CP 퇴원예정일보다 조기 퇴원 시 CP Drop 유도 (2008.10.28 JJE) (s)
  162. var cpObj = getOpenWindow("SMMMP00800");
  163. if( dschdclrtyn == "Y" && cpObj != null ){
  164. //입원 CP, 퇴원필요step의 퇴원예고일 < 퇴원예정일 => drop
  165. var cpflagcd = cpObj.model.getValue("/root/main/masterinfo/info/cpgflagcd");
  166. var ioflagcd = cpObj.model.getValue("/root/main/masterinfo/info/ioflagcd");
  167. var dschschedd = cpObj.instance1.selectSingleNode("/root/main/steppath/info[decirflag='D']/prcpdd");
  168. if( cpflagcd == "01" && ioflagcd == "I" && dschschedd != null ){
  169. if( model.getValue("/root/main/cond/dclrdd") < dschschedd.text ){
  170. if( messageBox("조기퇴원입니다. CP Drop을" , "Q004" ) == "6" ){
  171. setParameter("SMMMO043_cpgappno", cpObj.model.getValue("/root/temp1/getdata/cpgappno"));
  172. setParameter("SMMMO043_drop" , "N");
  173. modal("SPMMP02300"); //drop팝업
  174. if( getParameter("SMMMO043_drop") == "Y" ){
  175. cpObj.model.setValue("/root/temp1/getdata/appstat", "50");
  176. }else{
  177. messageBox("퇴원예고가 등록되지" , "E007" );
  178. return;
  179. }
  180. }else{
  181. messageBox("퇴원예고가 등록되지" , "E007" );
  182. return;
  183. }
  184. }
  185. /*
  186. else if( model.getValue("/root/main/cond/dclrdd") > dschschedd.text ){
  187. if( messageBox("퇴원지연입니다. CP Drop을" , "Q004" ) == "6" ){
  188. setParameter("SMMMO043_cpgappno", cpObj.model.getValue("/root/temp1/getdata/cpgappno"));
  189. setParameter("SMMMO043_drop" , "N");
  190. modal("SPMMP02300"); //drop팝업
  191. if( getParameter("SMMMO043_drop") == "Y" ){
  192. cpObj.model.setValue("/root/temp1/getdata/appstat", "50");
  193. }else{
  194. messageBox("퇴원예고가 등록되지" , "E007" );
  195. return;
  196. }
  197. }else{
  198. messageBox("퇴원예고가 등록되지" , "E007" );
  199. return;
  200. }
  201. }
  202. */
  203. }
  204. }
  205. //(e)
  206. model.makeValue("/root/send/savedata/pid" , pid);
  207. model.makeValue("/root/send/savedata/indd" , indd);
  208. model.makeValue("/root/send/savedata/cretno" , cretno);
  209. model.makeValue("/root/send/savedata/seqno" , seqno);
  210. model.makeValue("/root/send/savedata/ordtype" , ordtype);
  211. model.makeValue("/root/send/savedata/dschdclrdt" , dschdclrdt);
  212. model.makeValue("/root/send/savedata/dschdclrtyn", dschdclrtyn);
  213. model.makeValue("/root/send/savedata/orddeptcd", orddeptcd);
  214. if(submit("TXMMO00401") == true){
  215. //2012/07/30 Start
  216. if(ordtype=="E"){ // 응급실 환자 중 퇴원예고를 할 경우 귀가로 의사결정 되도록 로직 추가
  217. model.makeNode("/root/main/cnt");
  218. model.makeValue("/root/send/savedata/instcd", getUserInfo("dutplceinstcd"));
  219. model.makeValue("/root/send/savedata/orddd", indd);
  220. model.makeValue("/root/send/savedata/decisionkind", "H");
  221. submit("TXMMO26001");
  222. //if(submit("TXMMO26001")){
  223. // opener.opener.javascript.setParameter("adflag", "H");
  224. //}
  225. }
  226. //2012/07/30 End
  227. opener.javascript.setParameter("SPMMO00400_rtn_useyn", "Y");
  228. //CP (s)
  229. //2008.07.07 cp퇴원예고때문에 추가함
  230. opener.javascript.setParameter("SPMMO00400_dclrdd", model.getValue("/root/main/cond/dclrdd") );
  231. //2009.01.16 입퇴원기록지 미작성->작성후 퇴원예고 버튼 다시클릭한 경우 CP exclusion 사유 재조회
  232. fGetCpExclusionRsn("A");
  233. //CP (e)
  234. window.close();
  235. }else { // 2008.08.29 pym
  236. opener.javascript.setParameter("SPMMO00400_rtn_useyn", "N");
  237. //CP이면서 exception msg가 "입퇴원요약기록지를 기록해야 합니다." 일 경우, 입퇴원요약기록지 호출 (2008.11.10 JJE) (s)
  238. model.setValue("/root/init/trmmp00808endyn", "N"); //CP아닌 경우, 입퇴원요약기록지 작성 후 다시 exclusion 사유 조회하기 위해, 초기값 설정
  239. if( instance1.selectSingleNode("/root/properties/error/code") != null && cpObj != null ){ //CP인 경우, 입퇴원요약기록 자동 로딩
  240. if( model.getValue("/root/properties/error/code") == "emr.info.11007" && model.getValue("/root/properties/error/msg") == "입퇴원요약지를 기록해야 합니다.....!" ){
  241. var mainObj = getMainViewer();
  242. var scrnID = mainObj.javascript.getScreenID();
  243. if( scrnID == "SMMMR00100" && mainObj.instance1.selectSingleNode("/root/main/mainlist/medireclist[formcd='0000000680']") != null ){
  244. var formrecseq = mainObj.instance1.selectSingleNode("/root/main/mainlist/medireclist[formcd='0000000680']/formrecseq").text;
  245. var formrecdd = mainObj.instance1.selectSingleNode("/root/main/mainlist/medireclist[formcd='0000000680']/formrecdd").text;
  246. }else{
  247. var formrecseq = "";
  248. var formrecdd = model.getValue("/root/main/cond/dclrdd");
  249. }
  250. if(scrnID == "SMMMR00100"){
  251. mainObj.window.javascript.fOpenFormByOther("0000000680", formrecseq, "", formrecdd);
  252. }else{
  253. setGlobalVariable("linked_cpformcd", "0000000680", "emr");
  254. setGlobalVariable("linked_cpformrecseq", formrecseq, "emr");
  255. setGlobalVariable("linked_cpformrecdd", formrecdd, "emr");
  256. mainObj.javascript.navigate("SMMMR00100");
  257. }
  258. }
  259. } else if (model.getValue("/root/properties/error/code") =="emr.info.11007"){ // 입퇴원요약지를 작성하지 않은 경우 바로 입퇴원기록지를 열어줌
  260. fInOutBrifEMRScrn() ; // 입퇴원기록지는 진료기록메인 화면이 열린 경우만 열어주도록 함
  261. } else if (model.getValue("/root/properties/error/code") =="emr.info.11008"){ // 입원 경과기록지를 열어줌
  262. fInProgressEMRScrn() ;
  263. }
  264. //(e)
  265. }
  266. }
  267. /**
  268. * @desc : 퇴원예고 등록여부를 MessageBox를 띄움
  269. * @
  270. * @param :
  271. * @return :
  272. * @author : 오지훈
  273. * @---------------------------------------------------
  274. */
  275. function fRequireRgst(bflag){
  276. var dclrdd = model.getValue("/root/main/cond/dclrdd");
  277. var dclrtm = model.getValue("/root/main/cond/dclrtm");
  278. if(dclrtm.length < 4){
  279. messageBox("퇴원예고 시간을 정확하게", "C001");
  280. return false;
  281. }
  282. var hngnm = model.getValue(sPAMINFOLIST + "/hngnm");
  283. if(bflag == "Y"){
  284. var rtnval = messageBox("[" + hngnm + "] 환자를 퇴원예고 등록을 " , "Q004");
  285. }else if(bflag == "N"){
  286. var rtnval = messageBox("[" + hngnm + "] 환자를 퇴원예고 취소를 " , "Q004");
  287. }
  288. if(rtnval == 6){ // '예' 클릭
  289. return true;
  290. }else if(rtnval == 7){ // '아니오' 클릭
  291. return false;
  292. }
  293. }
  294. /**
  295. * @desc : 입원의뢰서 화면 open
  296. * @
  297. * @param :
  298. * @return :
  299. * @author : 오지훈
  300. * @---------------------------------------------------
  301. */
  302. function fOpenInReq(){
  303. var param = model.getValue("/root/temp/paminfo/list/pid") + "▦" +
  304. model.getValue("/root/temp/paminfo/list/hngnm") + "▦" +
  305. model.getValue("/root/temp/paminfo/list/orddeptcd") + "▦" +
  306. model.getValue("/root/temp/paminfo/list/orddrid") + "▦" +
  307. model.getValue("/root/temp/paminfo/list/insukind") + "▦" +
  308. model.getValue("/root/temp/paminfo/list/suppkind") + "▦" +
  309. model.getValue("/root/temp/paminfo/list/indd") + "▦" +
  310. model.getValue("/root/temp/paminfo/list/cretno") + "▦" +
  311. "I";
  312. setParameter("SPMMO00100_param", param);
  313. fPrcpModal("SPMMO00100", 100, 40);
  314. }
  315. /**
  316. * @desc : 재진예약 화면 open
  317. * @
  318. * @param :
  319. * @return :
  320. * @author : 오지훈
  321. * @---------------------------------------------------
  322. */
  323. function fOpenOrdRsrv(){
  324. setParameter("SMPMO00300_PARAM1", model.getValue("/root/temp/paminfo/list/orddeptcd")); //진료과코드
  325. setParameter("SMPMO00300_PARAM2", model.getValue("/root/temp/paminfo/list/orddrid")); //진료의ID
  326. setParameter("SMPMO00300_PARAM3", model.getValue("/root/temp/paminfo/list/pid")); //등록번호
  327. fPrcpModal("SMPMO00300", 0, 80);
  328. }
  329. /**
  330. * @desc : CP의 Exclusion 을 조회한다
  331. * @
  332. * @param :popFlag (A:평가팝업을 위해, 그외(E):exclusion을 위해)
  333. * @return :
  334. * @author : 전지은
  335. * @---------------------------------------------------
  336. */
  337. function fGetCpExclusionRsn( popFlag ){
  338. if( isNull(popFlag) ) popFlag = "E";
  339. if( popFlag == "E" && model.getValue("/root/init/trmmp00808endyn") == "Y" ){
  340. return; //이미 한번 exclusion 사유를 search했다면 return
  341. } else if( popFlag == "E" && opener.model.getValue("/root/main/masterinfo/info/cpgflagcd") == "02" ){
  342. return; //## CPG일 경우, exclusion 팝업 사용 안 함. 20100426 KHJ
  343. }
  344. var paminfoNode = opener.instance1.selectSingleNode("/root/paminfo/list");
  345. var patflagNode = opener.instance1.selectSingleNode("/root/patflag/list/prcpgenrflag");
  346. var prcpgenrflag = "";
  347. var orddd = "";
  348. if(paminfoNode == null ) return;
  349. if(patflagNode == null ) prcpgenrflag = opener.model.getValue("/root/paminfo/list/ioflag");
  350. else prcpgenrflag = opener.model.getValue( "/root/patflag/list/prcpgenrflag" );
  351. if ( prcpgenrflag == "O" ) {
  352. orddd = opener.model.getValue( "/root/paminfo/list/orddd" );
  353. } else {
  354. orddd = opener.model.getValue( "/root/paminfo/list/indd" );
  355. }
  356. model.makeNode("/root/send/cpdata");
  357. model.makeValue("/root/send/cpdata/orddd" , orddd);
  358. model.makeValue("/root/send/cpdata/pid" , opener.model.getValue("/root/paminfo/list/pid") );
  359. model.makeValue("/root/send/cpdata/cretno" , opener.model.getValue("/root/paminfo/list/cretno"));
  360. model.makeValue("/root/send/cpdata/orddeptcd" , opener.model.getValue("/root/paminfo/list/orddeptcd"));
  361. if( submit("TRMMP00808") ){
  362. if( instance1.selectSingleNode("/root/main/cpexclusionlist/info") != null ){
  363. var mon = getCurrentMonitorNumber();
  364. var cpObj = getOpenWindow("SMMMP00800");
  365. //CP 적용 전 퇴원예고 시 exclusion 제외..
  366. if( cpObj == null ){
  367. modal("SPMMP02400", mon, "55", "60", "SPMMP02400", "/root/main/cpexclusionlist", "/root/main/cpexclusionlist", "sysmenu:hidden; icon:visible", false);
  368. }
  369. }
  370. }
  371. model.setValue("/root/init/trmmp00808endyn", "Y"); //설정값 변경
  372. model.removeNode("/root/send/cpdata");
  373. //2008-02-11 손주연 추가
  374. //endstep 처방 발행 후 평가 입력 없이 퇴원예고를 할경우 평가 입력창을 띄워준다.
  375. //퇴원 예고시 평가 팝업은 잠시 막음 처리 해달라고 요청함 (2008.. 09. 11. 이혜승)
  376. if( popFlag == "E" ){
  377. if( instance1.selectSingleNode("/root/main/cpexclusionlist/valuinfo") != null ){
  378. modal("SPMMP02500", getCurrentMonitorNumber(), "55", "60", "SPMMP02500", "/root/main/cpexclusionlist/valuinfo", "/root/hidden"); // 퇴원예고시 평가 팝업잠시 막음
  379. }
  380. }
  381. }
  382. function fInOutBrifEMRScrn() {
  383. var mainobj = getMainViewer();
  384. var mainscrnid = mainobj.javascript.getScreenID(); //메인화면의 기록지 ID
  385. curFormLoaderObj = getOpenWindow("SSMMR01100"); //활성화된 서식로더창 체크
  386. if(curFormLoaderObj != null){ //서식로더 Close : 2009-06-03 : 이상현 D/L 요청 : 김영학 ;
  387. curFormLoaderObj.javascript.fClose();
  388. } //서식로더 close()
  389. if(mainobj != null){
  390. var wndid = "SMMMR00100"; //진료기록화면이 default
  391. if(mainscrnid == wndid){
  392. mainobj.javascript.fOpenNewForm("0000000680");
  393. }
  394. }
  395. }
  396. // 경과기록을 Open 한다.
  397. function fInProgressEMRScrn () {
  398. var mainobj = getMainViewer();
  399. var mainscrnid = mainobj.javascript.getScreenID(); //메인화면의 기록지 ID
  400. curFormLoaderObj = getOpenWindow("SSMMR01100"); //활성화된 서식로더창 체크
  401. if(curFormLoaderObj != null){ //서식로더 Close : 2009-06-03 : 이상현 D/L 요청 : 김영학 ;
  402. curFormLoaderObj.javascript.fClose();
  403. } //서식로더 close()
  404. if(mainobj != null){
  405. var wndid = "SMMMR00100"; //진료기록화면이 default
  406. if(mainscrnid == wndid){
  407. mainobj.javascript.fOpenNewForm("0900006893");
  408. }
  409. }
  410. }
  411. /**
  412. * @desc : 제왕절개분만 적정성평가 위험도 보정요인 서식 기록 유무 확인(submit)
  413. * @param : prcpflag: 처방구분 0: ( 의사처방, CP, 항암프로토콜, 임시), 2:간호, 4:지원부서
  414. savekindflag: 0:인증저장, 1:임시저장
  415. saveNode: 저장노드
  416. 심사실 김현주(6127) 요청 2012.01.05일 정규 배포 본원만 적용하고 칠곡은 적용하지 않음.
  417. * @return : true, false
  418. * @authur : 엄영만 2011. 11. 01
  419. */
  420. function fCheckChildbirthRec(){
  421. var bRtn = true;
  422. // 제왕절개분만 적정성평가 관련 기록 여부를 체크한다. 2012.0103 엄영만
  423. var sChkChildbirthRecYn = fGetHardCDList("Y", 321, 3); // 321 제왕절개분만 적정성평가 관련 기록 체크여부 처방 제한 사용 여부
  424. var sOrddeptcd = model.getValue(sPAMINFOLIST + "/orddeptcd");
  425. fGetHardCDList("N", 322, 0 , "/root/hidden/childbirthdeptlist"); // 322 제왕절개분만 적정성평가 관련 기록 체크 주진료과
  426. if (sChkChildbirthRecYn == "Y"
  427. && !isNull(model.getValue("/root/hidden/childbirthdeptlist/hardcd[hardcd='"+sOrddeptcd+"']/hardcd" )) ) {
  428. var sCheckCode = "";
  429. var sCheckAlertMsg = "";
  430. var sCheckErrorMsg = "";
  431. var sCheckPrcpExist = "N"; // 제왕절개 관련 처방 존재 여부 디폴트 N 없음.
  432. var pid = model.getValue (sPAMINFOLIST + "/pid");
  433. var indd = model.getValue (sPAMINFOLIST + "/indd");
  434. var cretno = model.getValue (sPAMINFOLIST + "/cretno");
  435. model.makeValue("/root/childbirthchkrec/reqdata/pid", pid);
  436. model.makeValue("/root/childbirthchkrec/reqdata/indd", indd);
  437. model.makeValue("/root/childbirthchkrec/reqdata/cretno", cretno);
  438. model.makeValue("/root/childbirthchkrec/reqdata/prcpexist", sCheckPrcpExist);
  439. submit("TRMMO00138", false);
  440. var sChkRecList = model.instances(0).selectNodes( "/root/childbirthchkrec/rtndata" );
  441. for ( var i=1; i <= sChkRecList.length; i++ ) {
  442. var sCheckCode = model.getValue ( "/root/childbirthchkrec/rtndata[" + i + "]/checkcode" );
  443. if(sCheckCode == "ALERT"){
  444. if(sCheckAlertMsg == "")
  445. sCheckAlertMsg = model.getValue ( "/root/childbirthchkrec/rtndata[" + i + "]/checkmsg");
  446. else
  447. sCheckAlertMsg = sCheckAlertMsg + "\n" + model.getValue ( "/root/childbirthchkrec/rtndata[" + i + "]/checkmsg");
  448. }
  449. else if (sCheckCode == "ERROR"){
  450. if(sCheckErrorMsg == "")
  451. sCheckErrorMsg = model.getValue ( "/root/childbirthchkrec/rtndata[" + i + "]/checkmsg");
  452. else
  453. sCheckErrorMsg = sCheckErrorMsg + "\n" + model.getValue ( "/root/childbirthchkrec/rtndata[" + i + "]/checkmsg");
  454. }
  455. }
  456. if (sCheckAlertMsg != ""){
  457. sCheckAlertMsg = "※ 제왕절개 분만 적정성 평가 관련 사항 ※\n\n분만수술 처방이 있는 산부인과 환자에 대해\n\n"
  458. + sCheckAlertMsg + "\n\n" + "해당 기록 작성 되지 않으면 퇴원 예고가 불가능 합니다."
  459. if(getUserInfo("dutplceinstcd") == "031")
  460. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 심사실(6127)"
  461. else if(getUserInfo("dutplceinstcd") == "032")
  462. sCheckAlertMsg = sCheckAlertMsg + "\n" + "문의처: 심사실(2180)"
  463. sCheckAlertMsg = sCheckAlertMsg + "\n\n지금 작성"
  464. var selectedval = messageBox(sCheckAlertMsg, 'S001');
  465. if(selectedval == "6") { // 지금 작성 하면 서식을 팝업으로 뛰우고 "아니오" 선택 하면 그대로 처방 저장 진행
  466. var formcd = model.getValue("/root/childbirthchkrec/rtndata[1]/checkformcd"); // 첫 행의 서식 팝업
  467. var ioflag = model.getValue (sPAMINFOLIST + "/ioflag");
  468. var orddeptcd = model.getValue (sPAMINFOLIST + "/orddeptcd");
  469. var medispclid = model.getValue (sPAMINFOLIST + "/medispclid");
  470. var orddeptnm = model.getValue (sPAMINFOLIST + "/orddeptnm");
  471. var hngnm = model.getValue (sPAMINFOLIST + "/hngnm");
  472. var sa = model.getValue (sPAMINFOLIST + "/sex") +"/"+ model.getValue (sPAMINFOLIST + "/age");
  473. var roomcd = model.getValue (sPAMINFOLIST + "/roomcd");
  474. var disparam = pid +"▦" + hngnm +"▦" + sa+"▦" + orddeptnm +"▦" + roomcd + "▦";
  475. setParameter("pid", pid);
  476. setParameter("orddd", indd);
  477. setParameter("cretno", cretno);
  478. setParameter("ioflag", ioflag);
  479. setParameter("orddeptcd", orddeptcd);
  480. setParameter("orddrid", medispclid);
  481. setParameter("disppatinfo", disparam); //등록번호▦환자명▦성별/나이▦진료과▦병실▦
  482. setParameter("openmode", "newform"); //오픈모드는 “recform”
  483. setParameter("formcd", formcd);
  484. modal("SSMMR01100", 1, 0, 0 ,"", "", "");
  485. bRtn = false;
  486. }else if(selectedval == "2") { // 취소 선택
  487. bRtn = false;
  488. }else { // 아니오 선택
  489. bRtn = false;
  490. }
  491. } else {
  492. bRtn = true;
  493. }
  494. }
  495. return bRtn;
  496. }
  497. /**
  498. * @desc : 퇴원예고일자 이후의 처방 존재 유무 확인(submit)
  499. * @param :
  500. * @return : true, false
  501. * @authur : 엄영만 2012. 12. 13
  502. */
  503. function fCheckDschAfterPrcpExist(){
  504. var bRtn = true;
  505. var sCheckCode = "";
  506. var sCheckAlertMsg = "";
  507. var sCheckErrorMsg = "";
  508. var sCheckPrcpExist = "N"; // 퇴원예고일 이후 처방 존재 여부 디폴트 N 없음.
  509. var pid = model.getValue(sPAMINFOLIST + "/pid");
  510. var indd = model.getValue(sPAMINFOLIST + "/indd");
  511. var cretno = model.getValue(sPAMINFOLIST + "/cretno");
  512. var dclrdd = model.getValue("/root/main/cond/dclrdd"); // 퇴원 예고일
  513. model.makeValue("/root/dschafterprcp/reqdata/pid", pid);
  514. model.makeValue("/root/dschafterprcp/reqdata/indd", indd);
  515. model.makeValue("/root/dschafterprcp/reqdata/cretno", cretno);
  516. model.makeValue("/root/dschafterprcp/reqdata/dclrdd", dclrdd);
  517. if(submit("TRMMO00401", false)){
  518. var nCnt = model.getValue("/root/dschafterprcp/rtndata/cnt");
  519. if(nCnt > 0) {
  520. if( "6" == messageBox("퇴원예고일자보다 미래인 처방이 존재합니다.\n퇴원예고일자를 변경하시거나 미래 처방을 삭제하신 후 진행하여 주시기 바랍니다.\n\n계속 진행 하시겠습니까?", 'Q999')) {
  521. bRtn = true;
  522. } else {
  523. bRtn = false;
  524. }
  525. }
  526. }
  527. return bRtn;
  528. }
  529. /**
  530. * @desc : 반환요청(E) 처방 존재 유무 확인(submit)
  531. * @param :
  532. * @return : true, false
  533. * @authur : 엄영만 2012. 12. 13
  534. */
  535. function fCheckReturnPrcpExist(){
  536. var bRtn = true;
  537. var pid = model.getValue(sPAMINFOLIST + "/pid");
  538. var indd = model.getValue(sPAMINFOLIST + "/indd");
  539. var cretno = model.getValue(sPAMINFOLIST + "/cretno");
  540. var orddeptcd = model.getValue(sPAMINFOLIST + "/orddeptcd");
  541. model.makeValue("/root/checkreturnprcp/reqdata/pid", pid);
  542. model.makeValue("/root/checkreturnprcp/reqdata/indd", indd);
  543. model.makeValue("/root/checkreturnprcp/reqdata/cretno", cretno);
  544. //model.makeValue("/root/checkreturnprcp/reqdata/orddeptcd", orddeptcd);
  545. if(submit("TRMMO00404", false)){
  546. var nCnt = model.getValue("/root/checkreturnprcp/rtndata/cnt");
  547. if(nCnt > 0) {
  548. if ( "6" == messageBox("[반환요청] 상태의 처방이 존재 하여 퇴원예고를 진행할 수 없습니다.\n\n반환요청 처방 내역을 확인 하시겠습니까?", 'Q999')) {
  549. setParameter("SPMMO50400_pid", pid);
  550. setParameter("SPMMO50400_indd", indd);
  551. setParameter("SPMMO50400_cretno", cretno);
  552. //setParameter("SPMMO50400_orddeptcd", orddeptcd);
  553. modal("SPMMO50400");
  554. }
  555. bRtn = false;
  556. }
  557. }
  558. return bRtn;
  559. }
  560. /**
  561. * @desc : 완료되지 않은 의뢰(Consult) 유무 확인(submit)
  562. * @param :
  563. * @return : true, false
  564. * @authur : 엄영만 2013. 02. 05
  565. */
  566. function fCheckConsultExist(){
  567. var bRtn = true;
  568. if(fContainsHardCD("419", "Y")) { // 체크 사용 여부
  569. var pid = model.getValue(sPAMINFOLIST + "/pid");
  570. var orddd = model.getValue(sPAMINFOLIST + "/indd");
  571. var cretno = model.getValue(sPAMINFOLIST + "/cretno");
  572. model.removenode("/root/checkconsult");
  573. model.makeValue("/root/checkconsult/reqdata/pid", pid);
  574. model.makeValue("/root/checkconsult/reqdata/orddd", orddd);
  575. model.makeValue("/root/checkconsult/reqdata/cretno", cretno);
  576. if(submit("TRMMO00402", false)){
  577. var nCnt = model.getValue("/root/checkconsult/rtndata/cnt");
  578. if(nCnt > 0) {
  579. if( "6" == messageBox("회신되지 않은 의뢰내역이 존재합니다.\n의뢰내역을 삭제 하시거나, 회신완료 후 퇴원예고를 진행하여 주시기 바랍니다.\n\n의뢰내역을 확인 하시겠습니까?", 'Q999')) {
  580. var ioflag = model.getValue(sPAMINFOLIST + "/ioflag");
  581. var orddeptcd = model.getValue(sPAMINFOLIST + "/orddeptcd");
  582. var orddrid = model.getValue(sPAMINFOLIST + "/medispclid");
  583. var param = pid +"▦"+ orddd+ "▦" +cretno+ "▦" + ioflag +"▦"+ orddeptcd +"▦"+ orddrid +"▦"; //pid▦orddd▦cretno▦ioflag▦orddeptcd▦orddrid▦
  584. var screenid = "SPMMO00400";
  585. var wndobj = getOpenWindow("SMMMR05000");
  586. if(wndobj != null){
  587. setParameter("SMMMR05000_param_pinfo", param);
  588. setParameter("SMMMR05000_screenid", screenid);
  589. wndobj.javascript.fInitalize();
  590. wndobj.window.restore(); //최소화 시킨 창을 최대화 시킴
  591. wndobj.window.activate();
  592. }else{
  593. setParameter("SMMMR05000_param_pinfo", param);
  594. setParameter("SMMMR05000_screenid", screenid);
  595. open("SMMMR05000", 2, 0, 0);
  596. }
  597. }
  598. bRtn = false;
  599. }
  600. }
  601. }
  602. return bRtn;
  603. }
  604. /**
  605. * @desc : 급성 뇌졸중 평가관련 GOS 기재 유무 확인(submit)
  606. * @return : true, false
  607. * @authur : 엄영만 2013. 02. 27 심사실 김순애 파트장님 요청으로 2013년 3월 1일 이후 입원 환자 부터 퇴원 시 적용
  608. */
  609. function fCheckDschApoplexyRec(){
  610. var bRtn = true;
  611. var sIndd = model.getValue(sPAMINFOLIST + "/indd");
  612. var sOrddeptcd = model.getValue(sPAMINFOLIST + "/orddeptcd");
  613. if (sIndd >= "20130301" && fContainsHardCD("421", sOrddeptcd)) { // 퇴원예고시 뇌졸증 평가 관련 GOS 기록 체크 주진료과(신경외과)
  614. var sCheckErrorMsg = "";
  615. var sPid = model.getValue(sPAMINFOLIST + "/pid");
  616. var sCretNo = model.getValue(sPAMINFOLIST + "/cretno");
  617. model.makeValue("/root/dschapoplexyrec/reqdata/pid", sPid);
  618. model.makeValue("/root/dschapoplexyrec/reqdata/indd", sIndd);
  619. model.makeValue("/root/dschapoplexyrec/reqdata/cretno", sCretNo);
  620. submit("TRMMO00403", false);
  621. var sChkRecList = model.instances(0).selectNodes( "/root/dschapoplexyrec/rtndata" );
  622. for ( var i=1; i <= sChkRecList.length; i++ ) {
  623. sCheckErrorMsg = model.getValue ( "/root/dschapoplexyrec/rtndata[" + i + "]/checkmsg");
  624. }
  625. if (sCheckErrorMsg != ""){
  626. sCheckErrorMsg = "※ 급성 뇌졸중 평가 관련 GOS 기재 요청 ※\n\n주 진단코드가 I60-I63인 신경외과 2013년 03월 이후 입원 환자에 대해\n\n" + sCheckErrorMsg + "\n\n" + "해당 기록 작성 후 퇴원예고가 가능 합니다."
  627. if(getUserInfo("dutplceinstcd") == "031")
  628. sCheckErrorMsg = sCheckErrorMsg + "\n" + "문의처: 심사실(6131)"
  629. else if(getUserInfo("dutplceinstcd") == "032")
  630. sCheckErrorMsg = sCheckErrorMsg + "\n" + "문의처: 심사실(2180)"
  631. messageBox(sCheckErrorMsg, 'E000');
  632. var formcd = model.getValue("/root/dschapoplexyrec/rtndata[1]/checkformcd"); // 첫 행의 서식 팝업
  633. var ioflag = model.getValue (sPAMINFOLIST + "/ioflag");
  634. var medispclid = model.getValue (sPAMINFOLIST + "/medispclid");
  635. var orddeptnm = model.getValue (sPAMINFOLIST + "/orddeptnm");
  636. var hngnm = model.getValue (sPAMINFOLIST + "/hngnm");
  637. var sa = model.getValue (sPAMINFOLIST + "/sex") +"/"+ model.getValue (sPAMINFOLIST + "/age");
  638. var roomcd = model.getValue (sPAMINFOLIST + "/roomcd");
  639. var disparam = sPid +"▦" + hngnm +"▦" + sa+"▦" + orddeptnm +"▦" + roomcd + "▦";
  640. setParameter("pid", sPid);
  641. setParameter("orddd", sIndd);
  642. setParameter("cretno", sCretNo);
  643. setParameter("ioflag", ioflag);
  644. setParameter("orddeptcd", sOrddeptcd);
  645. setParameter("orddrid", medispclid);
  646. setParameter("disppatinfo", disparam); //등록번호▦환자명▦성별/나이▦진료과▦병실▦
  647. setParameter("openmode", "newform"); //오픈모드는 “recform”
  648. setParameter("formcd", formcd);
  649. modal("SSMMR01100", 1, 0, 0 ,"", "", "");
  650. bRtn = false;
  651. } else {
  652. bRtn = true;
  653. }
  654. }
  655. return bRtn;
  656. }
  657. /**
  658. * @desc : 퇴원예고시 DRG환자의 경우 DRG 질 점검표 작성 여부를 체크
  659. * @return : true, false
  660. * @authur : 이정택 2013. 05. 03
  661. */
  662. function fCheckDrgRecExist(){
  663. //var drgyn = getPatientInfoDetail("drgyn");
  664. var sIndd = model.getValue(sPAMINFOLIST + "/indd");
  665. var sPid = model.getValue(sPAMINFOLIST + "/pid");
  666. var sCretNo = model.getValue(sPAMINFOLIST + "/cretno");
  667. model.makeValue("/root/send/reqdata/pid", sPid);
  668. model.makeValue("/root/send/reqdata/indd", sIndd);
  669. model.makeValue("/root/send/reqdata/cretno", sCretNo);
  670. if(submit("TRMMO50002")){
  671. var existyn = model.getValue("/root/main/chkdrgrecexist/item/existyn");
  672. if(existyn=="Y"){ //작성 유
  673. return true;
  674. }else{ //작성 무
  675. var sCheckAlertMsg = "DRG 환자로 DRG 질 점검표를 작성하지 않으면 \n";
  676. sCheckAlertMsg += "퇴원 예고가 불가능 합니다.";
  677. sCheckAlertMsg = sCheckAlertMsg + "\n지금 작성"
  678. var selectedval = messageBox(sCheckAlertMsg, 'S001');
  679. if(selectedval == "6") {
  680. modal("SMMMR06900", 1, 0, 0 ,"", "", "");
  681. }
  682. return false;
  683. }
  684. }
  685. }