SMMMO04400M.js 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 응급환자리스트 ( SMMMO04400_응급환자리스트.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var sERPATLIST_PATH = "/root/main/erpatinfo/erpatlist";
  7. var sORDERBY = "";
  8. /**
  9. * @desc : 화면 초기화
  10. * @
  11. * @param :
  12. * @return :
  13. * @author : 오지훈
  14. * @---------------------------------------------------
  15. */
  16. function fInitialize_SMMMO04400(){
  17. model.removeNodeset(sERPATLIST_PATH);
  18. model.setValue("/root/main/cond/srchdd" , getCurrentDate());
  19. mmbfGetHardCodeInfo("/root/send/reqdata" , "/root/init/eroverallday", 189); // 4-6-24 적용 여부 2010-03-22 LYJ
  20. model.setValue("/root/main/cond/orddeptcd", "2280000000"); //응급의학과 기본 세팅getUserInfo("dutplcecd")); //진료과
  21. model.setValue("/root/main/cond/medispclid", "-"); //주치의
  22. model.setValue("/root/main/cond/atdoctid", "-"); //담당의
  23. model.setValue("/root/main/cond/wardcd", "-"); //병동
  24. model.setValue("/root/main/cond/erorddeptcd", "-"); //호출진료과
  25. model.setValue("/root/main/cond/ermedispclid", "-"); //호출의사
  26. fReqSectionInfo();
  27. fReqERPatList();
  28. }
  29. /**
  30. * @desc : 응급환자리스트 조회
  31. * @
  32. * @param :
  33. * @return :
  34. * @author : 오지훈
  35. * @---------------------------------------------------
  36. */
  37. function fReqERPatList(){
  38. model.removeNodeset("/root/send/reqdata");
  39. model.makeNode("/root/send/reqdata");
  40. model.copyNode("/root/send/reqdata", "/root/main/cond");
  41. //2011.05.01진상찬 페이지 처리추가(10건씩)
  42. var offset = parseInt(model.getValue("root/page/curpage"));
  43. //1page면 offset은 0, 1page가 아니면 offset은 page수 * 10 (한페이지당 10건씩 보여줌)
  44. if(offset == 1)
  45. {
  46. offset = offset - 1;
  47. }
  48. else
  49. {
  50. offset = (offset - 1) * 10;
  51. }
  52. model.makeValue("/root/send/reqdata/offset", String(offset)); //몇번째 데이터 부터 조회할지 지정
  53. model.makeValue("/root/send/reqdata/pagesize", model.getValue("root/page/pagesize")); //한페이지에 보여줄 건수(10건고정)
  54. //alert(model.getValue("/root/send/reqdata/offset"));
  55. //alert(model.getValue("/root/send/reqdata/pagesize"));
  56. //if(submit("TRMMO04401")==true){
  57. if(submit("TRMOB00002")){
  58. model.copyNode(opener.instance1.selectSingleNode("root/temp/erpatlist"), instance1.selectSingleNode("root/init"));
  59. model.copyNode(opener.instance1.selectSingleNode("root/cond/erpatlist"), instance1.selectSingleNode("root/main/cond"));
  60. var ercurpatcnt = grd_erpatlist.rows -1;
  61. model.makeValue("/root/main/erpatinfo/erpatcnt/ercurpatcnt", ercurpatcnt);
  62. out_curpatcnt.refresh();
  63. }
  64. /////////////////////////////////
  65. var maxpage = parseInt(model.getValue("/root/main/erpatinfo/erpatcnt/erpattotalcnt"));
  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_erpatlist.nodeset, grd_erpatlist.colAttribute(sortcol, "ref"), sORDERBY);
  82. grd_erpatlist.colsort(sortcol) = sORDERBY
  83. grd_erpatlist.sort(1, 1, grd_erpatlist.rows -1, grd_erpatlist.cols -1) = "usersort";
  84. grd_erpatlist.gridToInstance();
  85. }
  86. //fChngColorERPatList(); //응급 환자 중증 상태에 따라 색깔을 변경
  87. grd_erpatlist.refresh();
  88. }
  89. /**
  90. * @desc : 환자 선택 후, 환자 정보 조회 및 기록지 화면 연동
  91. * @
  92. * @param :
  93. * @return :
  94. * @author : 오지훈
  95. * @---------------------------------------------------
  96. */
  97. function fSelectERPat(){
  98. var ordrecflag = model.getValue(opener.instance1.selectSingleNode("root/main/cond/ordrecflag"));
  99. var currow = grd_erpatlist.row;
  100. if(currow < 1){
  101. return;
  102. }
  103. if(fChkArrivalTime()== false) { //응급실 콜비짓 여부에 따라 처방/기록 인증저장 제한하기 위한 값 셋팅 20100526 LYJ
  104. model.makeValue("/root/main/cond/callvisityn" , "N");
  105. parent.window.javascript.setParameter("SMMMO04100_callvisityn", "N");
  106. messageBox("응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.", "E");
  107. }else {
  108. model.makeValue("/root/main/cond/callvisityn" , "Y");
  109. parent.window.javascript.setParameter("SMMMO04100_callvisityn", "Y");
  110. }
  111. //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가
  112. if(fChkScrnDisable()==false){
  113. return;
  114. }
  115. //변경요청(8106) : 응급간호에서 삭제처리한 환자 선택 시 blocking 메세지 처리 추가 (2009.10.09 JJE)
  116. //triage 기록지 여부 체크 전, 삭제환자 여부 체크하여 처방입력 blocking
  117. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  118. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  119. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  120. var visitno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno");
  121. fChkInCnclYN(pid, orddd, cretno, "C"); //return 없음, 진료기록창만 호출하므로 아래에서 컨트롤 함
  122. //CP환자 여부 확인
  123. if(fChkCPPatValid(currow)==false){
  124. return;
  125. }
  126. // 응급환자에 대한 중증체류시간 팝업 띄우는 부분 시작
  127. // 작성일 2010.03.09
  128. // 작성자 김광성(kskim)
  129. // 관련 xrw : SPMMO21300_중증체류시간
  130. var wndobj = getOpenWindow("SPMMO21300");
  131. var sysMessageobj = getViewer("sysMessage");
  132. if( wndobj == null ){
  133. if( !isNull( model.getValue(sERPATLIST_PATH + "[" + currow + "]/recovwardnm") ) ){
  134. var SPMMO21300_param = pid+ "▦" + orddd + "▦" + cretno + "▦" + visitno;
  135. sysMessageobj.window.javascript.setParameter("SPMMO21300_param", SPMMO21300_param);
  136. sysMessageobj.window.javascript.open("SPMMO21300",1,1280 - 300,100,"SPMMO21300", "", "", "", "", "", "" );
  137. sysMessageobj.window.javascript.getOpenWindow("SPMMO21300"); // SPMMO21300 윈도우를 열고나서 윈도우 객체를 가져옴
  138. }
  139. }
  140. else{
  141. if( !isNull( model.getValue(sERPATLIST_PATH + "[" + currow + "]/recovwardnm") ) ){
  142. var SPMMO21300_param = pid+ "▦" + orddd + "▦" + cretno + "▦" + visitno;
  143. sysMessageobj.window.javascript.setParameter("SPMMO21300_param", SPMMO21300_param);
  144. wndobj.javascript.fStartWnd(); // SPMMO21300팝업 화면 데이터 reflash기능을 담당
  145. }
  146. else{
  147. wndobj.javascript.fCloseWnd();
  148. }
  149. }
  150. // 응급환자에 대한 중증체류시간 팝업 띄우는 부분 끝. kskim
  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(fReqERPatPamInfo()==true){
  164. var cpflag = opener.model.getValue("/root/cpflag");
  165. var ordrecflag = opener.model.getValue("/root/main/cond/ordrecflag");
  166. var recflag = opener.model.getValue("/root/main/cond/recflag");
  167. var chngflag = opener.model.getValue("/root/main/cond/chngflag");
  168. var mainObj = getMainViewer();
  169. var currow = grd_erpatlist.row;
  170. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  171. var hngnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  172. var inCnclYN = model.getValue("/root/hidden/erincnclinfo/info/incnclyn"); //응급간호 삭제 여부
  173. setParameter("SMMMO00100_callvisityn", model.getValue("/root/main/cond/callvisityn")); // 응급실 콜비짓 여부 20100526 LYJ
  174. if (recflag == "Y" || inCnclYN == "Y") { //inCnclYN 조건 추가 (2009.10.26 by JJE)
  175. var mainObj = getMainViewer();
  176. curEmrRecObj = getOpenWindow("SMMRI00400"); //활성화된 진료기록 화면 object loading
  177. curExamRsltObj = getOpenWindow("SMAER00800"); //활성화된 검사결과 화면 object loading
  178. curNurTprObj = getOpenWindow("SMMNR00900"); //활성화된 간호 TPR 화면 object loading
  179. curNurBSEMRObj = getOpenWindow("SMMNR02500"); //활성화된 간호 TPR 화면 object loading
  180. curGrphObj = getOpenWindow("SPMRF05200"); //활성화된 그래프 서식 화면 object loading
  181. curCunsultObj = getOpenWindow("SMMMR05000"); //활성화된 Consult 화면 object loading
  182. curExamRsltNewObj = getOpenWindow("SMMMI00100"); //활성화된 검사결과 화면 object loading
  183. //if(curEmrRecObj != null){curEmrRecObj.javascript.fClose();} //진료기록 화면 close
  184. var wndobj = getOpenWindow("SMMRI00400");
  185. if(wndobj != null)
  186. {
  187. setParameter("SMMRI00400_param_pid" , model.getValue("/root/source/pid"));
  188. setParameter("SMMRI00400_param_chosflag", model.getValue("/root/main/paminfo/list/ordtype"));
  189. wndobj.javascript.fInitalize();
  190. activateChild("SMMRI00400");
  191. }
  192. if(curExamRsltObj != null){
  193. curExamRsltObj.model.setvalue("/root/send/data/singdata/srchpid", pid );
  194. curExamRsltObj.javascript.btn_srch.dispatch("DOMActivate");
  195. } //검사결과 화면 refresh;
  196. if(curNurTprObj != null){ //간호 TPR 화면 refresh : 2008-11-28 : 김영학 ;
  197. curNurTprObj.javascript.fInitialize("init");
  198. } //간호 TPR 화면 refresh;
  199. if(curNurBSEMRObj != null){ //혈당간호기록 refresh : 2008-12-24 : 김영학 ;
  200. curNurBSEMRObj.javascript.fInitialize("init");
  201. } //혈당간호기록 refresh;
  202. if(curGrphObj != null){ //그래프 서식 refresh : 2009-01-02 : 박민규 SW 요청 : 김영학 ;
  203. curGrphObj.javascript.fInitialize();
  204. } //그래프 서식 refresh;
  205. // if(curCunsultObj != null && consulyn !="T"){
  206. if(curCunsultObj != null){
  207. curCunsultObj.javascript.fInitalize();
  208. } //그래프 서식 refresh;
  209. if(curExamRsltNewObj != null){
  210. curExamRsltNewObj.model.setvalue("/root/send/data/singdata/srchpid", pid );
  211. curExamRsltNewObj.javascript.btn_srch.dispatch("DOMActivate");
  212. } //검사결과 화면 NEW refresh;
  213. curCpObj = mainObj.javascript.getOpenWindow("SMMMP00800"); //활성화된 CP Main 화면 object loading
  214. curPrcpObj = mainObj.javascript.getOpenWindow("SMMMO00100"); //활성화된 처방Main 화면 object loading
  215. curCpSrchObj = mainObj.javascript.getOpenWindow("SPMMP01200"); //활성화된 CP 검색 화면 object loading
  216. if(curPrcpObj != null) {curPrcpObj.javascript.fPrcpWndClose(); } ////활성화된 처방Main 화면이 있는 경우 close
  217. if(curCpObj != null){curCpObj.javascript.fCloseGPS();} //활성화된 CP Main화면이 있는 경우 close
  218. if(curCpSrchObj != null){curCpSrchObj.javascript.fCpSrchWndClose();} //활성화된 CP검색화면이 있는 경우 close
  219. clearParameter("SMMMO04100_ANSWCNT");
  220. opener.javascript.fChngEMRScrn();// 진료기록 Open
  221. } else {
  222. opener.javascript.fOpenPrcpMainWnd();
  223. //mainObj.window.javascript.openEmrScrn("SMMMO00100"); //처방화면 open
  224. }
  225. //fChkErTriagePatList(); // 트라이제 기록지 작성이 안되어 있으면 트리아제를 열어준다.
  226. }
  227. }
  228. /**
  229. * @desc : 응급환자 상단정보 호출
  230. * @
  231. * @param :
  232. * @return :
  233. * @author : 오지훈
  234. * @---------------------------------------------------
  235. */
  236. function fReqERPatPamInfo(){
  237. var iRow = grd_erpatlist.row;
  238. var pid = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/pid");
  239. var indd = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/indd");
  240. var cretno = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/cretno");
  241. var instcd = model.getValue(sERPATLIST_PATH + "[" + iRow + "]/instcd");
  242. var srchdd = model.getValue("/root/main/cond/srchdd");
  243. var callvisityn = model.getValue("/root/main/cond/callvisityn"); // 응급실 콜비짓 여부 추가 20100526 LYJ
  244. var param = "E" + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd + "▦" + srchdd + "▦" + callvisityn ;// 응급실 콜비짓 여부 추가 20100526 LYJ
  245. setParameter("condparam", param);
  246. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  247. var useyn = getParameter("SPMMO08900_rtn_useyn");
  248. if(useyn == "Y"){
  249. setParameter("SPMMO08900_rtn_useyn", "");
  250. return true;
  251. }else{
  252. return false;
  253. }
  254. }
  255. /**
  256. * @desc : 기본구역 조회
  257. * @
  258. * @param :
  259. * @return :
  260. * @author : 오지훈
  261. * @---------------------------------------------------
  262. */
  263. function fReqSectionInfo(){
  264. model.removeNodeset("/root/send/reqdata");
  265. model.makeValue("/root/send/reqdata/baseclsflag" , "B");
  266. model.makeValue("/root/send/reqdata/supbasetypecd", "BD");
  267. //submit("TRMMO04402");
  268. submit("TRMOB00008");
  269. }
  270. /**
  271. * @desc : 응급환자 정보에 따라 그리드의 row와 cell font color변경
  272. * @
  273. * @param :
  274. * @return :
  275. * @author : 오지훈
  276. * @---------------------------------------------------
  277. */
  278. function fChngColorERPatList(){
  279. var colorflag = model.getValue("/root/init/colorflag/hardcd/hardcd");
  280. if (colorflag =="A") {
  281. var iRow = grd_erpatlist.rows;
  282. for(i= 1 ; i < iRow ; i ++ ){
  283. //+ 글자색 지정
  284. if(model.getValue(sERPATLIST_PATH + "[" + i + "]/prcpcolor") == "N") {
  285. grd_erpatlist.rowStyle(i, "data", "color") = "#0033CC";
  286. } else if( model.getValue(sERPATLIST_PATH + "[" + i + "]/staytime") == "Y" &&
  287. (model.getValue(sERPATLIST_PATH + "[" + i + "]/patstat") == "" &&
  288. model.getValue(sERPATLIST_PATH + "[" + i + "]/adrvflag") == "" ) ) {
  289. grd_erpatlist.rowStyle(i, "data", "color") = "#ff0000";
  290. }
  291. // 배경색 지정
  292. var tmcolor = model.getValue(sERPATLIST_PATH + "[" + i + "]/tmcolor");
  293. if (isNull(tmcolor)) {
  294. tmcolor = "FFFFFF";
  295. }
  296. grd_erpatlist.rowStyle(i, "data", "background-color") = "#" + tmcolor;
  297. //Census 미등록 환자
  298. if(model.getValue(sERPATLIST_PATH + "["+i+"]/chosdd") == ""){
  299. grd_erpatlist.rowStyle(i, "data", "background-color") = "#ffefd6";
  300. }
  301. if(model.getValue(sERPATLIST_PATH + "["+i+"]/recovwardcd") != "-"){
  302. grd_erpatlist.rowStyle(i, "data", "background-color") = "#ffff99";
  303. }
  304. //활력징후 대상자
  305. if(model.getValue(sERPATLIST_PATH + "[" + i + "]/actsymp") == "Y") {
  306. grd_erpatlist.cellstyle("background-color", i, grd_erpatlist.colRef("bed")) = "#ff0000";
  307. grd_erpatlist.cellstyle("color", i, grd_erpatlist.colRef("bed")) = "#000000";
  308. }
  309. }
  310. } else {
  311. var totrow = grd_erpatlist.rows;
  312. var curcol = grd_erpatlist.colRef("serdiagflag");
  313. var currecovcol = grd_erpatlist.colRef("recovwardnm");
  314. var curadrvflag = grd_erpatlist.colRef("adrvflag");
  315. for(var rowcnt = 1 ; rowcnt < totrow ; rowcnt++){
  316. // var serdiagval = grd_erpatlist.valueMatrix(rowcnt, curcol); 중증을 가져오는 부분을 getValue로 처리하도록 수정 (2008.09.01 : 김영학)
  317. var serdiagval = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/serdiagflag");
  318. var recovwardnm = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/recovwardnm");
  319. var color = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/color");
  320. var adrvcolor = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/adrvcolor");
  321. var adrvflag = model.getValue(sERPATLIST_PATH + "[" + rowcnt + "]/adrvflag");
  322. if(serdiagval != "-" || serdiagval != ""){
  323. //serdiagval = eval(serdiagval);
  324. serdiagval = parseInt(serdiagval);
  325. switch(serdiagval){
  326. case 1 : grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#ff0000";
  327. break;
  328. case 2 : grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#ff6600";
  329. break;
  330. case 3 : grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#0000ff";
  331. break;
  332. case 4 : grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#000000";
  333. break;
  334. case 5 : grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#000000";
  335. break;
  336. default : grd_erpatlist.cellstyle("color", rowcnt, curcol) = "#ffffff";
  337. break;
  338. }
  339. }
  340. if (!isNull(recovwardnm )) {
  341. grd_erpatlist.cellstyle("color", rowcnt, currecovcol) = "#ff0000";
  342. }
  343. if (!isNull(adrvcolor )) {
  344. grd_erpatlist.cellstyle("color", rowcnt, curadrvflag) = "#ff0000";
  345. }
  346. grd_erpatlist.rowStyle(rowcnt, "data", "background-color") = "#" + color;
  347. }
  348. }
  349. }
  350. /**
  351. * @desc : CP환자 여부 검사
  352. * @
  353. * @param :
  354. * @return :
  355. * @author : 오지훈
  356. * @---------------------------------------------------
  357. */
  358. function fChkCPPatValid(currow){
  359. fChkErTriagePatList();
  360. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  361. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  362. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  363. var cpyn = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cpyn");
  364. var hngnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  365. var orddeptcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddeptcd");
  366. var ioflag = model.getValue(sERPATLIST_PATH + "[" + currow + "]/ioflag");
  367. if(isNull(orddeptcd)) orddeptcd = model.getValue("/root/main/cond/orddeptcd");
  368. if(isNull(ioflag)) ioflag = "E";
  369. model.removeNodeset("/root/send/reqdata");
  370. model.makeValue("/root/send/reqdata/pid" , pid);
  371. model.makeValue("/root/send/reqdata/orddd" , orddd);
  372. model.makeValue("/root/send/reqdata/cretno" , cretno);
  373. model.makeValue("/root/send/reqdata/hngnm" , hngnm);
  374. model.makeValue("/root/send/reqdata/prcpgenrflag", ioflag);
  375. model.makeValue("/root/send/reqdata/srchtabflag" , "E"); //대상자리스트탭 구분
  376. if(submit("TRMMO04303")==true){
  377. var cppatnode = instance1.selectNodes("/root/init/rsltgetdata/getdata");
  378. if(cppatnode.length < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우
  379. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N");
  380. return true;
  381. }else{ //CP적용환자 tbl에 유효한 데이터가 있는 경우
  382. var appstat = model.getValue("/root/init/rsltgetdata/getdata/appstat");
  383. var cpgnm = model.getValue("/root/init/rsltgetdata/getdata/cpgnm");
  384. var cpgappno = model.getValue("/root/init/rsltgetdata/getdata/cpgappno");
  385. var msgcnts = model.getValue("/root/init/rsltgetdata/getdata/msgcnts");
  386. var msgflag = model.getValue("/root/init/rsltgetdata/getdata/msgflag");
  387. var prtlflagcd = model.getValue("/root/init/rsltgetdata/getdata/prtlflagcd"); //01:CP,02:CPG
  388. if(appstat == 52){
  389. //case52: 입원장 CP
  390. var rtnval = messageBox(msgcnts, msgflag);
  391. if(rtnval == 6){
  392. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "X"); // CP Main open
  393. return true;
  394. }else{
  395. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N");
  396. if(fUpdtCPPatAppStatVal(41) != false && instance1.selectSingleNode(sERPATLIST_PATH + "[" + currow + "]/cpyn") != null){ //41 : CP 취소
  397. model.setValue(sERPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  398. return;
  399. }else{
  400. return false;
  401. }
  402. }
  403. }else{
  404. if( prtlflagcd == "02" && isNull(appstat) && msgflag == "P" ){ //모니터링구분:대상자탐색 Case. CPG & 호출flag:Popup(appyn:평가용여부)
  405. //CPG적용대상자 알림 팝업 호출 (2009.05.04)
  406. setParameter("SMMMO041_hngnm" , hngnm);
  407. setParameter("SMMMO041_pid" , pid);
  408. setParameter("SMMMO041_cretno" , cretno);
  409. setParameter("SMMMO041_orddd" , orddd);
  410. setParameter("SMMMO041_ordtype" , ioflag);
  411. setParameter("SMMMO041_orddeptcd" , orddeptcd);
  412. setParameter("SMMMO041_slipnm" , model.getValue(instance1.selectSingleNode("root/init/rsltgetdata/getdata/msgcnts"))); //cpgno▦cpghistseq▦cpgnm▦slipno▦slipnm▦valusgeyn▦valunm▦guidedocucnts
  413. setParameter("SMMMO041_cpgmntrflag", appstat); //null, SPMMP03200화면에서 cpgmntrflag(M or S)으로 따짐
  414. setParameter("SMMMO041_cpgappno" , cpgappno); //적용중인 CP가 존재하면 값이 있음
  415. setParameter("SMMMO041_cpgnm" , cpgnm); //적용중인 CP가 존재하면 값이 있음
  416. modal("SPMMP03200"); //CP대상자 알람 팝업
  417. if( cpgappno > 0 && cpgappno != getParameter("SPMMP032_cpgappno") && instance1.selectSingleNode(sERPATLIST_PATH + "[" + currow + "]/cpyn") != null){ //진행중인 CP가 있는데 팝업에서 Drop한 경우 CP여부 N으로..
  418. model.setValue(sERPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  419. }
  420. if( !isNull(getParameter("SPMMP032_cpgappno")) && getParameter("SPMMP032_cpgappno") > 0 ){
  421. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "Y"); //CPG적용한 경우, MGPS 호출
  422. }else{
  423. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N"); //미적용 시 처방 화면 호출
  424. }
  425. clearParameter("SPMMP032_cpgappno");
  426. clearParameter("SMMMO041_hngnm");
  427. clearParameter("SMMMO041_pid");
  428. clearParameter("SMMMO041_cretno");
  429. clearParameter("SMMMO041_orddd");
  430. clearParameter("SMMMO041_ordtype");
  431. clearParameter("SMMMO041_orddeptcd");
  432. clearParameter("SMMMO041_slipnm");
  433. clearParameter("SMMMO041_cpgmntrflag");
  434. clearParameter("SMMMO041_cpgappno");
  435. clearParameter("SMMMO041_cpgnm");
  436. return true;
  437. }else{
  438. //case 12 : D0 ~ D1 CP
  439. //그외 case : (10 : 진행중...)
  440. if( !isNull(msgcnts) && !isNull(msgflag) ){
  441. //12: D0 처방일과 == 입원일 -> Drop 유도
  442. //그외: 오늘날짜 > CP퇴원예정일 -> Drop 유도
  443. messageBox(msgcnts, msgflag);
  444. setParameter("SMMMO043_cpgappno", cpgappno); //drop 팝업에서 인식할 수 있는 param
  445. setParameter("SMMMO043_drop" , "N"); //drop 팝업에서 인식할 수 있는 param
  446. modal("SPMMP02300");
  447. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "N");
  448. if( getParameter("SMMMO043_drop") == "Y" ){
  449. model.setValue(sINPATLIST_PATH + "[" + currow + "]/cpyn", "N");
  450. }else{
  451. return false;
  452. }
  453. clearParameter("SMMMO043_cpgappno");
  454. clearParameter("SMMMO043_drop");
  455. return true;
  456. }
  457. model.setValue(opener.instance1.selectSingleNode("root/cpflag"), "Y");
  458. return true;
  459. }
  460. }
  461. }
  462. }
  463. }
  464. /**
  465. * @desc : CP환자 적용상태값 변경
  466. * @
  467. * @param :
  468. * @return :
  469. * @author : 오지훈
  470. * @---------------------------------------------------
  471. */
  472. function fUpdtCPPatAppStatVal(appstat){
  473. var cpgappno = model.getValue("/root/init/rsltgetdata/getdata/cpgappno");
  474. model.removeNodeset("/root/send/savedata");
  475. model.makeValue("/root/send/savedata/cpgappno", cpgappno);
  476. model.makeValue("/root/send/savedata/appstat" , appstat);
  477. if(submit("TXMMO04301")==false){
  478. return false;
  479. }
  480. }
  481. /**
  482. * @desc : Visit Time 체크하여 처방창 오픈 유무 결정
  483. * @ 타과나 call time이 없을 경우는 처방창이 열리지만 같은과나 해당의사의 경우
  484. * @ Visit Time이 없을 경우는 처방창이 열리지 않도록 함
  485. * @param :
  486. * @return :
  487. * @author : 김영학
  488. * @---------------------------------------------------
  489. */
  490. function fChkArrivalTime() {
  491. var userdeptcd = getUserInfo("dutplcecd");
  492. var userid = getUserId();
  493. var currow = grd_erpatlist.row;
  494. var orddoctid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/orddoctid");
  495. var orddeptcd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/erorddeptcd");
  496. var erorddeptcd = model.getValue("/root/init/hardcdno/hardcd/hardcd");
  497. if (userdeptcd != erorddeptcd) { // 응급의학과가 아니면 도착시간이 없으면 처방창을 열지 못하도록 함.
  498. if (userid == orddoctid || userdeptcd == orddeptcd) { // 담당의 아이디 조건에서 과 포함함 : 2009. 07. 04)
  499. var visttm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visttm");
  500. if (visttm =="------") {
  501. return false;
  502. }
  503. }
  504. }
  505. }
  506. /**
  507. * @desc : Triage기록 작성유무
  508. * @param :
  509. * @return :
  510. * @author : 김영학
  511. * @---------------------------------------------------
  512. */
  513. function fChkErTriagePatList() {
  514. var currow = grd_erpatlist.row;
  515. var messageobj = getViewer("sysMessage");
  516. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  517. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  518. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno")
  519. var sa = model.getValue(sERPATLIST_PATH + "[" + currow + "]/sa");
  520. var hngnm = model.getValue(sERPATLIST_PATH + "[" + currow + "]/hngnm");
  521. var condparam = sa.split("/");
  522. var sex = condparam[0];
  523. var age = condparam[1];
  524. model.makeValue("/root/send/reqdata/pid" , pid);
  525. model.makeValue("/root/send/reqdata/orddd" , orddd);
  526. model.makeValue("/root/send/reqdata/cretno" , cretno);
  527. if (submit("TRMMO04403")==true) {
  528. var cnts = model.getValue("/root/hidden/pattriagelist/erpatlist/pid");
  529. if (isNull(cnts)) {
  530. if (messageBox ( "Triage 기록이 작성되지 않았습니다. \n 작성하시겠습니까?", "Q" ) == "6" ) {
  531. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + sex + "▦" + age + "▦▦" + hngnm;
  532. messageobj.window.javascript.setParameter("SPMNE04400_param", param); //parameter
  533. curErTriageObj = getOpenWindow("SPMNE04400"); //활성화된 진료기록 화면 object loading
  534. if (curErTriageObj != null) {
  535. curErTriageObj.window.javascript.fInitialize_SPMNE04400();
  536. curErTriageObj.window.activate();
  537. } else {
  538. //messageobj.window.javascript.open("SPMNE04400", 2, null, null, "SPMNE04400", "", "", "", false);
  539. messageobj.window.javascript.open("SPMNE04400", 2, null, null, "SPMNE04400", "", "", "", false);
  540. curErTriageObj = getOpenWindow("SPMNE04400"); //활성화된 진료기록 화면 object loading
  541. curErTriageObj.window.activate();
  542. }
  543. } else {
  544. curErTriageObj = getOpenWindow("SPMNE04400"); //활성화된 진료기록 화면 object loading
  545. if (curErTriageObj != null) {
  546. curErTriageObj.javascript.button2.dispatch("DOMActivate");
  547. }
  548. }
  549. } else {
  550. curErTriageObj = getOpenWindow("SPMNE04400"); //활성화된 진료기록 화면 object loading
  551. if (curErTriageObj != null) {
  552. curErTriageObj.javascript.button2.dispatch("DOMActivate");
  553. }
  554. }
  555. }
  556. }
  557. /**
  558. * @desc : 의사 스케쥴등록
  559. * @
  560. * @param :
  561. * @return :
  562. * @author :박유진
  563. * @---------------------------------------------------
  564. */
  565. function fSaveErCallVisit(){
  566. open("SPMMO30000");
  567. }
  568. /**
  569. * @desc : 중증 의사 호출
  570. * @
  571. * @param :
  572. * @return :
  573. * @author : 김영학
  574. * @---------------------------------------------------
  575. */
  576. function fOpenNurseERCallDr(){
  577. var currow = grd_erpatlist.row;
  578. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  579. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  580. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno")
  581. var visitno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno")
  582. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + visitno;
  583. setParameter("SMMNE05200_param", param);
  584. modal("SMMNE05200");
  585. fReqERPatList();
  586. }
  587. /**
  588. * @desc : 중증 의사 당직 관리
  589. * @
  590. * @param :
  591. * @return :
  592. * @author : 김영학
  593. * @---------------------------------------------------
  594. */
  595. function fOpenNurseERDrScheDrList() {
  596. modal("SMMNE05100");
  597. }
  598. /**
  599. * @desc : 중증의사 Visit 등록
  600. * @
  601. * @param :
  602. * @return :
  603. * @author : 김영학
  604. * @---------------------------------------------------
  605. */
  606. function fOpenNurseERVisitDr() {
  607. modal("SMMNE05300");
  608. }
  609. /**
  610. * @desc : 호출 의사 사용자 관리
  611. * @
  612. * @param :
  613. * @return :
  614. * @author : 김영학
  615. * @---------------------------------------------------
  616. */
  617. function fOpenDrList() {
  618. var bpcallyn = model.getValue("/root/init/bpcallyn/hardcd/hardcd");
  619. if ( !isNull(bpcallyn) && bpcallyn == "Y") {
  620. setParameter("SMMNE05000_bpcallyn", "Y");
  621. setParameter("SMMNE05000_param", "Y^Y^Y^Y^Y^Y^Y");
  622. } else {
  623. setParameter("SMMNE05000_bpcallyn", "N");
  624. setParameter("SMMNE05000_param", "Y^Y^Y^Y^N^Y^Y");
  625. }
  626. modal("SMMNE05000");
  627. }
  628. /**
  629. * @desc : 응급실호출 등록 화면 Open
  630. * @
  631. * @param :
  632. * @return :
  633. * @author : 오지훈
  634. * @---------------------------------------------------
  635. */
  636. function fOpenDrCallDeaction(){
  637. var currow = grd_erpatlist.row;
  638. if(currow < 1){
  639. return;
  640. }
  641. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  642. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  643. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  644. var visitno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno");
  645. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + visitno;
  646. setParameter("SPMMO32300_param", param);
  647. modal("SPMMO32300");
  648. fReqERPatList();
  649. }
  650. /**
  651. * @desc : 응급실호출 내역추가 화면 Open
  652. * @
  653. * @param :
  654. * @return :
  655. * @author : 김소정
  656. * @---------------------------------------------------
  657. */
  658. function fOpenDrCallAddition(){
  659. var currow = grd_erpatlist.row;
  660. if(currow < 1){
  661. return;
  662. }
  663. var pid = model.getValue(sERPATLIST_PATH + "[" + currow + "]/pid");
  664. var orddd = model.getValue(sERPATLIST_PATH + "[" + currow + "]/indd");
  665. var cretno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/cretno");
  666. var visitno = model.getValue(sERPATLIST_PATH + "[" + currow + "]/visitno");
  667. var param = pid + "▦" + orddd + "▦" + cretno + "▦" + visitno;
  668. setParameter("SPMMO32400_param", param);
  669. modal("SPMMO32400");
  670. fReqERPatList();
  671. }