SMMMO04800M.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. CONSULT ( SMMMO04800_CONSULT.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var sCNSTPATLIST_PATH = "/root/main/cnstpatinfo/cnstpatlist";
  7. var sORDERBY = "";
  8. /**
  9. * @desc : 화면 초기화
  10. * @
  11. * @param :
  12. * @return :
  13. * @author : 오지훈
  14. * @---------------------------------------------------
  15. */
  16. function fInitialize_SMMMO04800(){
  17. model.removeNodeset(sCNSTPATLIST_PATH);
  18. model.setValue("/root/main/cond/fromdd" ,((getCurrentDate().toDate()).getAddDate(-3)).getDateFormat()); //시작일자는 3일 전
  19. model.setValue("/root/main/cond/todd" , getCurrentDate()); // 종료일자
  20. model.setValue("/root/main/cond/orddeptcd", getUserInfo("dutplcecd")); //진료과
  21. model.setValue("/root/main/cond/orddrid", "-"); //진료의
  22. model.setValue("/root/main/cond/oproomcd", "-"); //수술방
  23. model.setValue("/root/main/cond/reqflag" , "-"); //의뢰구분
  24. model.setValue("/root/main/cond/replyn" , "-"); //회신구분
  25. model.setValue("/root/main/cond/ioflag", "-"); //진료구분
  26. fReqCnstPatList(model.getValue("/root/main/cond/queryflag"));
  27. }
  28. /**
  29. * @desc : 의뢰(CONSULT)환자 조회
  30. * @
  31. * @param : queryflag - 쿼리구분
  32. * orgin 조회버튼 클릭
  33. * recv 과별받은 건
  34. * req 과별보낸 건
  35. * pid 환자별 보낸 건
  36. * @return :
  37. * @author : 오지훈
  38. * @---------------------------------------------------
  39. */
  40. function fReqCnstPatList(queryflag){
  41. model.setValue("/root/main/cond/queryflag", queryflag);
  42. model.copyNode("/root/send/reqdata", "/root/main/cond");
  43. //2011.05.01진상찬 페이지 처리추가(10건씩)
  44. var offset = parseInt(model.getValue("root/page/curpage"));
  45. //1page면 offset은 0, 1page가 아니면 offset은 page수 * 10 (한페이지당 10건씩 보여줌)
  46. if(offset == 1)
  47. {
  48. offset = offset - 1;
  49. }
  50. else
  51. {
  52. offset = (offset - 1) * 10;
  53. }
  54. model.makeValue("/root/send/reqdata/offset", String(offset)); //몇번째 데이터 부터 조회할지 지정
  55. model.makeValue("/root/send/reqdata/pagesize", model.getValue("root/page/pagesize")); //한페이지에 보여줄 건수(10건고정)
  56. //if(submit("TRMMO04801")){
  57. if(submit("TRMOB00004")){
  58. var totrow = grd_cnstpatlist.rows;
  59. model.setValue("/root/main/totcnt/totcnt", totrow-1);
  60. model.copyNode(opener.instance1.selectSingleNode("root/cond/cnstpatlist"), instance1.selectSingleNode("root/main/cond"));
  61. model.copyNode(opener.instance1.selectSingleNode("root/temp/cnstpatlist"), instance1.selectSingleNode("root/init"));
  62. }
  63. /////////////////////////////////
  64. var maxpage = parseInt(model.getValue("/root/main/cnstpatinfo/retcnt/cnspatlistcnt"));
  65. //alert(model.getValue("/root/main/cnstpatinfo/retcnt/cnspatlistcnt"));
  66. if(maxpage < 10)
  67. {
  68. model.setValue("/root/page/maxpage", "1");
  69. }
  70. else
  71. {
  72. maxpage = (maxpage / 10) - ((maxpage % 10) / 10) + 1;
  73. model.setValue("/root/page/maxpage", String(maxpage));
  74. model.refresh();
  75. }
  76. /////////////////////////////////
  77. var orderby = model.getValue("/root/main/cond/orderby");
  78. var sortcol = model.getValue("/root/main/cond/sortcol");
  79. if(sortcol != "" && orderby != ""){
  80. sORDERBY = orderby;
  81. //nodeListSort(grd_oppatlist.nodeset, grd_oppatlist.colAttribute(sortcol, "ref"), sORDERBY);
  82. grd_cnstpatlist.colsort(sortcol) = sORDERBY
  83. grd_cnstpatlist.sort(1, 1, grd_cnstpatlist.rows -1, grd_cnstpatlist.cols -1) = "usersort";
  84. grd_cnstpatlist.gridToInstance();
  85. grd_cnstpatlist.refresh();
  86. }
  87. }
  88. /**
  89. * @desc : 의뢰(consult)환자 환자기본정보설정
  90. * @
  91. * @param :
  92. * @return :
  93. * @author : 오지훈
  94. * @---------------------------------------------------
  95. */
  96. function fReqCnstPatPamInfo(){
  97. var currow = grd_cnstpatlist.row;
  98. var ioflag = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/ioflag");
  99. var pid = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/pid");
  100. var instcd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/instcd");
  101. var formrecseq = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/formrecseq");
  102. if(ioflag == "O" || ioflag == "S"){
  103. var orddd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/acptorddd");
  104. var cretno= model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/acptcretno");
  105. return; //외래는 현재 협의 중
  106. }else{
  107. var orddd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/orddd");
  108. var cretno= model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/cretno");
  109. }
  110. var param = "C" + "▦" + ioflag + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + formrecseq;
  111. setParameter("condparam", param);
  112. modal("SPMMO08900", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  113. var useyn = getParameter("SPMMO08900_rtn_useyn");
  114. if(useyn == "Y"){
  115. setParameter("SPMMO08900_rtn_useyn", "");
  116. return true;
  117. }else{
  118. return false;
  119. }
  120. }
  121. /**
  122. * @desc : 환자 선택 후, 환자 정보 조회 및 기록지 화면 연동
  123. * @
  124. * @param :
  125. * @return :
  126. * @author : 오지훈
  127. * @---------------------------------------------------
  128. */
  129. function fSelectCnstPat(){
  130. var ordrecflag = model.getValue(opener.instance1.selectSingleNode("root/main/cond/ordrecflag")); //기록지연결 여부
  131. var currow = grd_cnstpatlist.row;
  132. if(currow < 1){
  133. return;
  134. }
  135. var ioflag = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/ioflag");
  136. var reqptype = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/reqptype");
  137. var pid = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/pid");
  138. var hngnm = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/hngnm");
  139. if(ioflag == "O"){
  140. messageBox("의뢰환자리스트에서 외래환자의 처방 및 진료기록을 작성", "E001");
  141. return;
  142. }
  143. //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가
  144. if(fChkScrnDisable()==false){
  145. return;
  146. }
  147. //CP환자 여부 확인
  148. if(fChkCPPatValid(currow)==false){
  149. return;
  150. }
  151. // 진료기록에 수정된 사항이 있을 경우 저장할 것인지 묻는 함수 호출 : 2009. 07. 27 김영학
  152. var mainobj = getMainViewer();
  153. var mainscrnid = mainobj.javascript.getScreenID(); //메인화면의 기록지 ID
  154. if(mainscrnid == "SMMMR00100"){
  155. var prvIntRecPamInfRtn = mainobj.window.javascript.fPrevInitRecPamInfo();
  156. if(prvIntRecPamInfRtn == false){
  157. return;
  158. }// 기록지에 필수 입력사항을 입력하지 않았을 때 그냥 넘어가 버리는 오류 수정 20100305 LYJ
  159. }
  160. //상단정보 설정
  161. var mainObj = getMainViewer();
  162. //var mainObj = getViewer("sysMessage");
  163. if(fReqCnstPatPamInfo()==true){
  164. opener.javascript.setParameter("SMMMO04100_reqptype", reqptype);
  165. var cpflag = opener.model.getValue("/root/cpflag");
  166. var ordrecflag = opener.model.getValue("/root/main/cond/ordrecflag");
  167. var recflag = opener.model.getValue("/root/main/cond/recflag");
  168. var chngflag = opener.model.getValue("/root/main/cond/chngflag");
  169. var mainObj = getMainViewer();
  170. if (recflag == "Y") {
  171. var mainObj = getMainViewer();
  172. curEmrRecObj = getOpenWindow("SMMRI00400"); //활성화된 진료기록 화면 object loading
  173. curExamRsltObj = getOpenWindow("SMAER00800"); //활성화된 검사결과 화면 object loading
  174. curNurTprObj = getOpenWindow("SMMNR00900"); //활성화된 간호 TPR 화면 object loading
  175. curNurBSEMRObj = getOpenWindow("SMMNR02500"); //활성화된 간호 TPR 화면 object loading
  176. curGrphObj = getOpenWindow("SPMRF05200"); //활성화된 그래프 서식 화면 object loading
  177. curCunsultObj = getOpenWindow("SMMMR05000"); //활성화된 Consult 화면 object loading
  178. curExamRsltNewObj = getOpenWindow("SMMMI00100"); //활성화된 검사결과 화면 object loading
  179. //if(curEmrRecObj != null){curEmrRecObj.javascript.fClose();} //진료기록 화면 close
  180. var wndobj = getOpenWindow("SMMRI00400");
  181. if(wndobj != null)
  182. {
  183. setParameter("SMMRI00400_param_pid" , model.getValue("/root/source/pid"));
  184. setParameter("SMMRI00400_param_chosflag", model.getValue("/root/main/paminfo/list/ordtype"));
  185. wndobj.javascript.fInitalize();
  186. activateChild("SMMRI00400");
  187. }
  188. if(curExamRsltObj != null){
  189. curExamRsltObj.model.setvalue("/root/send/data/singdata/srchpid", pid );
  190. curExamRsltObj.javascript.btn_srch.dispatch("DOMActivate");
  191. } //검사결과 화면 refresh;
  192. if(curNurTprObj != null){ //간호 TPR 화면 refresh : 2008-11-28 : 김영학 ;
  193. curNurTprObj.javascript.fInitialize("init");
  194. } //간호 TPR 화면 refresh;
  195. if(curNurBSEMRObj != null){ //혈당간호기록 refresh : 2008-12-24 : 김영학 ;
  196. curNurBSEMRObj.javascript.fInitialize("init");
  197. } //혈당간호기록 refresh;
  198. if(curGrphObj != null){ //그래프 서식 refresh : 2009-01-02 : 박민규 SW 요청 : 김영학 ;
  199. curGrphObj.javascript.fInitialize();
  200. } //그래프 서식 refresh;
  201. // if(curCunsultObj != null && consulyn !="T"){
  202. if(curCunsultObj != null && consulyn !="T"){
  203. curCunsultObj.javascript.fInitalize();
  204. } //그래프 서식 refresh;
  205. if(curExamRsltNewObj != null){
  206. curExamRsltNewObj.model.setvalue("/root/send/data/singdata/srchpid", pid );
  207. curExamRsltNewObj.javascript.btn_srch.dispatch("DOMActivate");
  208. } //검사결과 화면 NEW refresh;
  209. curCpObj = mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading
  210. curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  211. curCpSrchObj = mainObj.javascript.getOpenWindow("SPMMP01200"); //활성화된 CP 검색 화면 object loading
  212. if(curPrcpObj != null) {curPrcpObj.javascript.fPrcpWndClose(); } ////활성화된 처방Main 화면이 있는 경우 close
  213. if(curCpObj != null){curCpObj.javascript.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close
  214. if(curCpSrchObj != null){curCpSrchObj.javascript.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  215. clearParameter("SMMMO04100_ANSWCNT");
  216. opener.javascript.fChngEMRScrn();// 진료기록 Open
  217. } else {
  218. opener.javascript.fOpenPrcpMainWnd();
  219. //mainObj.window.javascript.openEmrScrn("SMMMO00100"); //처방화면 open
  220. }
  221. }
  222. /*
  223. if(fReqCnstPatPamInfo(currow)==true){
  224. opener.javascript.fOpenPrcpMainWnd();
  225. }
  226. */
  227. /*
  228. if(fReqCnstPatPamInfo()== true){
  229. if(ordrecflag == "N"){ //기록지연결 여부 Y인 경우, main화면 진료기록지 교체, 화면상단정보 설정 및 처방화면 OPEN
  230. fOpenOrdRecMainWnd();
  231. }else{
  232. fOpenEmptyWnd(); //기록지연결 여부 N인 경우, main화면 빈화면 교체, 화면상단정보 설정 및 처방화면 OPEN
  233. }
  234. }*/
  235. }
  236. /**
  237. * @desc : CP환자 여부 검사
  238. * @
  239. * @param :
  240. * @return :
  241. * @author : 오지훈
  242. * @---------------------------------------------------
  243. */
  244. function fChkCPPatValid(currow){
  245. var pid = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/pid");
  246. var orddd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/orddd");
  247. var cretno = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/cretno");
  248. var ioflag = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/ioflag");
  249. var hngnm = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/hngnm");
  250. var orddeptcd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/orddeptcd");
  251. var acptorddd = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/acptorddd");
  252. var acptcretno = model.getValue(sCNSTPATLIST_PATH + "[" + currow + "]/acptcretno");
  253. if(ioflag == "O"){ //외래인 경우, 외래접수, 외래생성번호 있는지 확인 후에 처방화면을 open
  254. if(acptorddd != "" && acptcretno != ""){
  255. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N");
  256. return true;
  257. }else{
  258. messageBox("[" + hngnm + "]환자는 외래접수가 되지", "E007");
  259. return false;
  260. }
  261. }
  262. model.removeNodeset("/root/send/reqdata");
  263. model.makeValue("/root/send/reqdata/pid" , pid);
  264. model.makeValue("/root/send/reqdata/orddd" , orddd);
  265. model.makeValue("/root/send/reqdata/cretno" , cretno);
  266. model.makeValue("/root/send/reqdata/hngnm" , hngnm); //추가(2008.08.25)
  267. model.makeValue("/root/send/reqdata/prcpgenrflag", ioflag);
  268. model.makeValue("/root/send/reqdata/srchtabflag" , "D"); //대상자리스트탭(I/D):조회결과orddd,cretno는 외래이력의 수전정보임
  269. if(submit("TRMMO04303")==true){ //CP적용 여부 확인
  270. var cppatnode = instance1.selectNodes("/root/init/rsltgetdata/getdata");
  271. if(cppatnode.length < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우
  272. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N"); //처방open
  273. return true;
  274. }else{ //CP적용환자 tbl에 유효한 데이터가 있는 경우
  275. var appstat = model.getValue("/root/init/rsltgetdata/getdata/appstat");
  276. var cpgnm = model.getValue("/root/init/rsltgetdata/getdata/cpgnm");
  277. var cpgappno = model.getValue("/root/init/rsltgetdata/getdata/cpgappno");
  278. var msgcnts = model.getValue("/root/init/rsltgetdata/getdata/msgcnts");
  279. var msgflag = model.getValue("/root/init/rsltgetdata/getdata/msgflag");
  280. var prtlflagcd = model.getValue("/root/init/rsltgetdata/getdata/prtlflagcd"); //01:CP,02:CPG
  281. if(appstat == 52){
  282. //case52: 입원장 CP
  283. var rtnval = messageBox(msgcnts, msgflag);
  284. if(rtnval == 6){
  285. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "X"); // CP Main open
  286. return true;
  287. }else{
  288. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N");
  289. if(fUpdtCPPatAppStatVal(41) != false && instance1.selectSingleNode(sCNSTPATLIST_PATH + "[" + currow + "]/cpyn") != null){ //41 : CP 취소
  290. model.setValue(sCNSTPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  291. return;
  292. }else{
  293. return false;
  294. }
  295. }
  296. }else{
  297. if( prtlflagcd == "02" && isNull(appstat) && msgflag == "P" ){ //모니터링구분:대상자탐색 Case. CPG & 호출flag:Popup(appyn:평가용여부)
  298. //CPG적용대상자 알림 팝업 호출 (2009.05.04)
  299. setParameter("SMMMO041_hngnm" , hngnm);
  300. setParameter("SMMMO041_pid" , pid);
  301. setParameter("SMMMO041_cretno" , cretno);
  302. setParameter("SMMMO041_orddd" , orddd);
  303. setParameter("SMMMO041_ordtype" , ioflag);
  304. setParameter("SMMMO041_orddeptcd" , orddeptcd);
  305. setParameter("SMMMO041_slipnm" , model.getValue(instance1.selectSingleNode("root/init/rsltgetdata/getdata/msgcnts"))); //cpgno▦cpghistseq▦cpgnm▦slipno▦slipnm▦valusgeyn▦valunm▦guidedocucnts
  306. setParameter("SMMMO041_cpgmntrflag", appstat); //null, SPMMP03200화면에서 cpgmntrflag(M or S)으로 따짐
  307. setParameter("SMMMO041_cpgappno" , cpgappno); //적용중인 CP가 존재하면 값이 있음
  308. setParameter("SMMMO041_cpgnm" , cpgnm); //적용중인 CP가 존재하면 값이 있음
  309. modal("SPMMP03200"); //CP대상자 알람 팝업
  310. if( cpgappno > 0 && cpgappno != getParameter("SPMMP032_cpgappno") && instance1.selectSingleNode(sCNSTPATLIST_PATH + "[" + currow + "]/cpyn") != null){ //진행중인 CP가 있는데 팝업에서 Drop한 경우 CP여부 N으로..
  311. model.setValue(sCNSTPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  312. }
  313. if( !isNull(getParameter("SPMMP032_cpgappno")) && getParameter("SPMMP032_cpgappno") > 0 ){
  314. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "Y"); //CPG적용한 경우, MGPS 호출
  315. }else{
  316. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N"); //미적용 시 처방 화면 호출
  317. }
  318. clearParameter("SPMMP032_cpgappno");
  319. clearParameter("SMMMO041_hngnm");
  320. clearParameter("SMMMO041_pid");
  321. clearParameter("SMMMO041_cretno");
  322. clearParameter("SMMMO041_orddd");
  323. clearParameter("SMMMO041_ordtype");
  324. clearParameter("SMMMO041_orddeptcd");
  325. clearParameter("SMMMO041_slipnm");
  326. clearParameter("SMMMO041_cpgmntrflag");
  327. clearParameter("SMMMO041_cpgappno");
  328. clearParameter("SMMMO041_cpgnm");
  329. return true;
  330. }else{
  331. //case 12 : D0 ~ D1 CP
  332. //그외 case : (10 : 진행중...)
  333. if( !isNull(msgcnts) && !isNull(msgflag) ){
  334. //12: D0 처방일과 == 입원일 -> Drop 유도
  335. //그외: 오늘날짜 > CP퇴원예정일 -> Drop 유도
  336. messageBox(msgcnts, msgflag);
  337. setParameter("SMMMO043_cpgappno", cpgappno); //drop 팝업에서 인식할 수 있는 param
  338. setParameter("SMMMO043_drop" , "N"); //drop 팝업에서 인식할 수 있는 param
  339. modal("SPMMP02300"); //Drop 팝업 호출
  340. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N");
  341. if( getParameter("SMMMO043_drop") == "Y" ){
  342. model.setValue(sINPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  343. }else{
  344. return false;
  345. }
  346. clearParameter("SMMMO043_cpgappno");
  347. clearParameter("SMMMO043_drop");
  348. return true;
  349. }
  350. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "Y");
  351. return true;
  352. }
  353. }
  354. }
  355. }
  356. }