SMMMO05100.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 수술마취스케줄조회 ( SMMMO05100_수술마취스케줄조회.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var sOPANSTSCHELIST_PATH = "/root/main/opanstschelist/opanstschelist";
  7. /**
  8. * @desc : 화면 초기화
  9. * @
  10. * @param :
  11. * @return :
  12. * @author : 오지훈
  13. * @---------------------------------------------------
  14. */
  15. function fInitialize_SMMMO05100(){
  16. zbcfGetCodeList(new Array("M0013",
  17. "M0015",
  18. "M0017",
  19. "M0020",
  20. "M0022",
  21. "M0243",
  22. "M0244",
  23. "M0245",
  24. "M0356"),
  25. new Array("/root/init/M0013",
  26. "/root/init/M0015",
  27. "/root/init/M0017",
  28. "/root/init/M0020",
  29. "/root/init/M0021",
  30. "/root/init/M0243",
  31. "/root/init/M0244",
  32. "/root/init/M0245",
  33. "/root/init/M0356")); //공통코드 조회
  34. mmbfGetHardCodeInfoNm("/root/send/reqdata", "/root/init/oppatflag", 89); //수술환자구분
  35. zbcfGetDeptCodeList(getUserInfo("dutplceinstcd"), "orduseyn", "D", "/root/init/orddept"); //부서코드 콤보조회
  36. addComboInstance("/root/init/orddept", "deptcd^depthngnm", "-^전체", "dept"); //부서콤보 전체추가
  37. // 조회조건에 병동 추가 20110713 김영학
  38. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/wardinfo", "W"); //병동코드 콤보
  39. addComboInstance("/root/init/wardinfo", "deptcd^depthngnm", "-^전체", "dept"); //부서콤보 전체추가
  40. reqOpRoomList(getCurrentDate(), "/root/init/oproomlist", "total"); //수술방 콤보조회
  41. addComboInstance("/root/init/oproomlist", "oproomcd^oproomnm", "-^전체" , "oproomlist"); //수술방콤보 '전체' 추가
  42. addComboInstance("/root/init/oproomlist", "oproomcd^oproomnm", "0000^방없음", "oproomlist"); //수술방콤보 '방없음'추가
  43. addComboInstance("/root/init/M0014", "cdid^cdnm", "-^전체" , "M0014"); //수술예정시작시간 '전체' 추가
  44. addComboInstance("/root/init/M0015", "cdid^cdnm", "삭제^삭제", "M0015"); //수술상태 '삭제' 표기 2013-05-02 KJS
  45. model.setValue("/root/main/cond/opfromdd", getCurrentDate()); //시작일자
  46. var todd = ((getCurrentDate().toDate()).getAddDate(3)).getDateFormat();
  47. model.setValue("/root/main/cond/optodd" , todd);//종료일자
  48. model.setValue("/root/main/cond/oproomcd" , "-"); //수술방
  49. model.setValue("/root/main/cond/opfromtmcd" , "-"); //수술예정시작시간
  50. model.setValue("/root/main/cond/perfdeptcd" , getUserInfo("dutplcecd")); //진료과
  51. model.setValue("/root/main/cond/wardcd" , "-"); //병동 기본값은 전체가 되도록 20110713 김영학
  52. // 2008.09.23 매핑되는 진료과가 없을경우에는 전체로 선택되도록
  53. var deptList = instance1.selectSingleNode("/root/init/orddept/dept[deptcd = "+ getUserInfo("dutplcecd") +"]");
  54. if(deptList == null){ model.setValue("/root/main/cond/perfdeptcd" , "-");
  55. model.setValue("/root/main/cond/perfdrid" , "-");
  56. }
  57. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist2", combo2.value, "0330");
  58. addComboInstance("/root/init/userlist2", "userid^usernm", "-^전체", "usercombo"); //조회용 집도의 전체항목 추가
  59. model.setValue("/root/main/cond/perfdrid","-");
  60. // (e)
  61. model.setValue("/root/main/cond/anstmthdcd", "-"); //마취구분
  62. model.removeNodeset(sOPANSTSCHELIST_PATH);
  63. //강남성모는 외래 disable
  64. //if(getUserInfo("dutplceinstcd") == "012") rdo_out.disabled = true;
  65. model.refresh();
  66. }
  67. /**
  68. * @desc : 수술환자 상단정보 설정
  69. * @
  70. * @param :
  71. * @return :
  72. * @author : 오지훈
  73. * @---------------------------------------------------
  74. */
  75. function fSetOpPatTopInfo(){
  76. var viewtype = model.getValue("/root/main/cond/viewtype");
  77. var iRow;
  78. if (viewtype == "W") {
  79. iRow = grd_ward.row;
  80. } else {
  81. iRow = grd_opanstschelist.row;
  82. }
  83. if(iRow < 1){
  84. return;
  85. }
  86. var opstatcd = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/opstatcd"); //수술상태코드
  87. if(opstatcd == "19" || opstatcd == "29" || opstatcd == "39" || opstatcd == "49"){ //취소인 경우, 상단정보 조회 설정하지 않음
  88. return;
  89. }
  90. var ioflag = "T"; //수술일 경우, T
  91. var pid = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/pid"); //등록번호
  92. var opcnfmdd = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/opcnfmdd"); //수술일자
  93. var cretno = "";
  94. var instcd = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/instcd"); //기관코드
  95. var perfdeptcd = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/perfdeptcd"); //집도과코드
  96. var perfdrid = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/perfdrid"); //집도과코드
  97. var patflag = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/ioflag"); //환자 외래입원구분
  98. var procflag = "F";
  99. var oprsrvno = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/oprsrvno"); //수술예약번호
  100. var ophistno = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/ophistno"); //수술이력번호
  101. var srchdd = model.getValue(sOPANSTSCHELIST_PATH + "[" + iRow + "]/opcnfmdd"); //조회일자
  102. var param = ioflag + "▦"
  103. + pid + "▦"
  104. + opcnfmdd + "▦"
  105. + cretno + "▦"
  106. + instcd + "▦"
  107. + perfdeptcd + "▦"
  108. + perfdrid + "▦"
  109. + patflag + "▦"
  110. + procflag + "▦"
  111. + oprsrvno + "▦"
  112. + ophistno + "▦"
  113. + srchdd;
  114. setParameter("condparam", param);
  115. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  116. }
  117. /**
  118. * @desc : 그리드 data 엑셀화일로 저장
  119. * @
  120. * @param :
  121. * @return :
  122. * @author : 오지훈
  123. * @---------------------------------------------------
  124. */
  125. function fSaveGridToExcel(){
  126. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  127. if(fileName != ""){
  128. var viewtype = model.getValue("/root/main/cond/viewtype");
  129. if (viewtype == "W") {
  130. grd_ward.saveExcel(fileName, "SheetName", false, false, "", "", false);
  131. } else {
  132. grd_opanstschelist.saveExcel(fileName, "SheetName", false, false, "", "", false);
  133. }
  134. }
  135. }
  136. /**
  137. * @desc : 마취방법 콤보값 변경시
  138. * @
  139. * @param :
  140. * @return :
  141. * @author : 오지훈
  142. * @---------------------------------------------------
  143. */
  144. function fChngAnstMthdCmb(cmbObj, cmbObjTrgt, cmbPath){
  145. var anstmthdcd = cmbObj.value;
  146. if(anstmthdcd == "01"){
  147. cmbObjTrgt.choices.itemset.attribute("nodeset") = "/root/init/M0243/M0243";
  148. }else if(anstmthdcd == "02"){
  149. cmbObjTrgt.choices.itemset.attribute("nodeset") = "/root/init/M0244/M0244";
  150. }else if(anstmthdcd == "03"){
  151. cmbObjTrgt.choices.itemset.attribute("nodeset") = "/root/init/M0245/M0245";
  152. }
  153. model.setValue(cmbPath, "00");
  154. model.refresh();
  155. }
  156. /**
  157. * @desc : 수술마취환자 조회
  158. * @
  159. * @param :
  160. * @return :
  161. * @author : 오지훈
  162. * @---------------------------------------------------
  163. */
  164. function fReqOpAnstPatList(){
  165. model.copyNode("/root/send/reqdata","/root/main/cond");
  166. submit("TRMMO05102");
  167. setTree(grd_opanstschelist, 1, 0, true);
  168. }
  169. /**
  170. * @desc : 진단 검색
  171. * @
  172. * @param :
  173. * @return :
  174. * @author : 오지훈
  175. * @---------------------------------------------------
  176. */
  177. function fSrchDiag(){
  178. var diagnm = model.getValue("/root/main/cond/diaghngnm");
  179. if(diagnm.length > 1){
  180. var ch = diagnm.charAt(1);
  181. if(isNumber(ch) == true){ //입력값의 두번째 자리 문자가 숫자인 경우 코드로 검색
  182. setParameter("SPMMO00800_cond1", 1);
  183. setParameter("SPMMO00800_cond2", 1);
  184. setParameter("SPMMO00800_cond3", "E");
  185. setParameter("SPMMO00800_cond4", getCurrentDate());
  186. setParameter("SPMMO00800_cond5", diagnm);
  187. }else{ //입력값의 두번쨰 자리 문자가 숫자가 아닌 경우 단어 검색
  188. bFlag = fIsHangul(diagnm);
  189. if(bFlag == "E"){ //입력값이 영문인 경우
  190. setParameter("SPMMO00800_cond1", 2);
  191. setParameter("SPMMO00800_cond2", 2);
  192. setParameter("SPMMO00800_cond3", "E");
  193. setParameter("SPMMO00800_cond4", getCurrentDate());
  194. setParameter("SPMMO00800_cond5", diagnm);
  195. }else if(bFlag == "H"){ //입력값이 한글인 경우
  196. setParameter("SPMMO00800_cond1", 2);
  197. setParameter("SPMMO00800_cond2", 2);
  198. setParameter("SPMMO00800_cond3", "H");
  199. setParameter("SPMMO00800_cond4", getCurrentDate());
  200. setParameter("SPMMO00800_cond5", diagnm);
  201. }else{
  202. messageBox("검색어를 정확하게", "C001");
  203. return;
  204. }
  205. }
  206. }else{
  207. messageBox("검색어는 두 글자 이상", "C001");
  208. return;
  209. }
  210. modal("SPMMO00800");
  211. var useyn = getParameter("SPMMO00800_rtn_useyn");
  212. if(useyn == "Y"){
  213. setParameter("SPMMO00800_rtn_useyn", "");
  214. var rtnparam = getParameter("SPMMO00800_rtn");
  215. rtnparam = rtnparam.split("▩");
  216. var tmpstr = rtnparam[1];
  217. tmpstr = tmpstr.split("▦");
  218. model.setValue("/root/main/cond/diaghngnm", tmpstr[2]);
  219. model.setValue("/root/main/cond/diagcd" , tmpstr[9]);
  220. }else{
  221. model.setValue("/root/main/cond/diaghngnm", "");
  222. model.setValue("/root/main/cond/diagcd" , "");
  223. }
  224. model.refresh();
  225. }
  226. /**
  227. * @desc : 수술 검색
  228. * @
  229. * @param :
  230. * @return :
  231. * @author : 오지훈
  232. * @---------------------------------------------------
  233. */
  234. function fSrchOp(){
  235. var opnm = model.getValue("/root/main/cond/ophngnm");
  236. if(opnm.length > 1){
  237. var ch = opnm.charAt(0);
  238. if(isNumber(ch) == true){ //입력값의 첫번째 자리가 숫자인 경우 코드로 검색
  239. var param = getCurrentDate() + "▦" + //opschedd
  240. "" + "▦" + //perfdeptcd
  241. "" + "▦" + //perfdrid
  242. opnm + "▦" + //opcd
  243. "" + "▦" + //opnm
  244. ""; //queryflag
  245. }else{ //입력값의 첫번째 자리가 문자인 경우 수술명으로 검색
  246. var param = getCurrentDate() + "▦" + //opschedd
  247. "" + "▦" + //perfdeptcd
  248. "" + "▦" + //perfdrid
  249. "" + "▦" + //opcd
  250. opnm + "▦" + //opnm
  251. ""; //queryflag
  252. }
  253. }else{
  254. messageBox("검색어는 두 글자 이상", "C001");
  255. return;
  256. }
  257. setParameter("SPMMO11000_param", param);
  258. modal("SPMMO11000");
  259. var useyn = getParameter("SPMMO11000_rtn_useyn");
  260. if(useyn == "Y"){
  261. var rtnparam = getParameter("SPMMO11000_rtn_param");
  262. rtnparam = rtnparam.split("▦");
  263. model.setValue("/root/main/cond/opcd" , rtnparam[1]);
  264. model.setValue("/root/main/cond/ophngnm" , rtnparam[2]);
  265. setParameter("SPMMO11000_rtn_useyn", "N");
  266. }
  267. model.refresh();
  268. }
  269. /**
  270. * @desc : 통합기록조회 화면 open
  271. * @
  272. * @param :
  273. * @return :
  274. * @author : 오지훈
  275. * @---------------------------------------------------
  276. */
  277. function fOpenTotRecSrch(){
  278. var currow = grd_opanstschelist.row;
  279. if(currow < 1){
  280. messageBox("통합기록조회를 검색할 환자를", "C002");
  281. return;
  282. }
  283. var pid = model.getValue(sOPANSTSCHELIST_PATH + "[" + currow + "]/pid");
  284. var mainobj = getMainViewer();
  285. var xpt = window.screenleft + eval(0);
  286. var ypt = window.screenTop + eval(0);
  287. var coord = getRelativeCoordinate ( xpt, ypt );
  288. var mon = coord[0];
  289. xpt = coord[1];
  290. ypt = coord[2];
  291. setParameter("SMMRI00400_param_pid", pid);
  292. mainobj.javascript.open("SMMRI00400", mon, xpt, ypt);
  293. }
  294. /**
  295. * @desc : 통합검사결과 화면 Open
  296. * @
  297. * @param :
  298. * @return :
  299. * @author : 오지훈
  300. * @---------------------------------------------------
  301. */
  302. function fOpenTotExamRslt(){
  303. var currow = grd_opanstschelist.row;
  304. if(currow < 1){
  305. messageBox("통합검사결과 조회를 검색할 환자를", "C002");
  306. return;
  307. }
  308. var pid = model.getValue(sOPANSTSCHELIST_PATH + "[" + currow + "]/pid");
  309. model.setValue("/root/source/pid", pid);
  310. var mainobj = getMainViewer();
  311. var xpt = window.screenleft + eval(0);
  312. var ypt = window.screenTop + eval(0);
  313. var coord = getRelativeCoordinate ( xpt, ypt );
  314. var mon = coord[0];
  315. xpt = coord[1];
  316. ypt = coord[2];
  317. mainobj.javascript.open("SMAER00800", mon, xpt, ypt, "SMAER00800", "/root/source/pid", "/root/send/data/singdata/srchpid");
  318. }
  319. /**
  320. * @desc : grid 컬럼정보 setting
  321. * @
  322. * @param :
  323. * @return :
  324. * @author :
  325. * @---------------------------------------------------
  326. */
  327. function setOrderInfoOfCol(grdid, refdata, sizedata){
  328. var grdobj = document.controls.item(grdid);
  329. var refarr = refdata.split("^");
  330. var sizearr = sizedata.split("^");
  331. for(var i = 0; i < refarr.length; i++){
  332. var colcnt = grdobj.colref("" + refarr[i] + "");
  333. grdobj.colMove(i, colcnt, "before", false);
  334. var size = sizearr[i];
  335. if(size == 0){ // size of column 0 -> hidden
  336. grdobj.colHidden(i) = true;
  337. }else{
  338. grdobj.colHidden(i) = false;
  339. }
  340. grdobj.colWidth(i) = eval(size);
  341. }
  342. grdobj.rebuild();
  343. }
  344. /**
  345. * @desc : grid 타이틀 컬럼 정보 저장
  346. * @
  347. * @param :
  348. * @return :
  349. * @author :
  350. * @---------------------------------------------------
  351. */
  352. function getOrderInfoOfCol(grdid){
  353. var refdata = ""; // ref
  354. var sizedata = ""; // size
  355. var grdobj = document.controls.item(grdid);
  356. var totcol = grdobj.cols;
  357. for(var i = 0; i < totcol; i++){
  358. var refval = grdobj.colAttribute(i, "ref");
  359. refdata += refval + "^";
  360. var sizeval = grdobj.colWidth(i);
  361. sizedata += sizeval + "^";
  362. }
  363. refdata = refdata.substring(0 , refdata.length-1);
  364. sizedata = sizedata.substring(0, sizedata.length-1);
  365. var scrnid = model.getValue("/root/hidden/listval/uuee/scrnid");
  366. var compscnts = model.getValue("/root/hidden/listval/uuee/compscnts");
  367. if (refdata == compscnts) {
  368. messageBox("변경된 데이터가","I004");
  369. return;
  370. }
  371. if (scrnid == "") {
  372. model.setValue("/root/send/listval/uuee/flag","I");
  373. } else {
  374. model.setValue("/root/send/listval/uuee/flag","U");
  375. }
  376. model.setValue("/root/send/listval/uuee/scrnid","SMMMO05100");
  377. model.setValue("/root/send/listval/uuee/compsnm","grd_opanstschelist");
  378. model.setValue("/root/send/listval/uuee/compscnts",refdata);
  379. model.setValue("/root/send/listval/uuee/compsrefcnts","");
  380. model.setValue("/root/send/listval/uuee/compssizecnts",sizedata);
  381. if ( submit("TXPIJ00402") ) {
  382. messageBox("사용자 환경 저장이","I002");
  383. }
  384. }
  385. /**
  386. * @desc : Grid Onmousedown Event
  387. * @
  388. * @param :
  389. * @author :
  390. * @---------------------------------------------------
  391. */
  392. function fPrintGroupVisible(){
  393. group5.visible = true;
  394. }
  395. /**
  396. * @desc : Print Event
  397. * @
  398. * @param :
  399. * @author :
  400. * @---------------------------------------------------
  401. */
  402. function fPrint(grdObj){
  403. var selcnt = grdObj.selectedRows;
  404. if ( selcnt > 1 ) {
  405. messageBox("한 환자만","C002"); //선택하십시오
  406. return;
  407. }
  408. var row = grdObj.selectedRow(0);
  409. var oprsrvno = model.getValue("/root/main/opanstschelist/opanstschelist[" +row+ "]/oprsrvno");
  410. model.makeNode("/root/send/report/print");
  411. copyNodesetType("/root/send/report/print","/root/main/opanstschelist/opanstschelist[oprsrvno="+oprsrvno+"]","replace", model, model);
  412. model.makeValue("/root/send/report/print/nursenm", getUserInfo("usernm"));
  413. exeReportPreview("RPMNP09000", "XMLSTR", "/root/send/report");
  414. // exeReportPreview("RPMNP09000", "XMLSTR", "/root/send/report", "", "true","","","","","true", "", "");
  415. }