SMMMO00900.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. /*
  2. 임상관찰기록(SMMNR00900.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var sCondPath = "/root/main/cond";
  7. var xChartHeaderListPath = "/root/main/chartheaderlist";
  8. var xStnddayClincObsRecListPath = "/root/main/clincobsrecinfo/stnddayclincobsrecinfo/stnddayclincobsreclist";
  9. var xFormerdayClincObsRecListPath = "/root/main/clincobsrecinfo/formerclincobsrecinfo/formerclincobsreclist";
  10. var xHoursClincObsRecList = "/root/main/clincobsrecinfo/hoursclincobsrecinfo/hoursclincobsreclist";
  11. var xDaysClincObsRecList = "/root/main/clincobsrecinfo/daysclincobsrecinfo/daysclincobsreclist";
  12. var xIntervalRecYNListPath = "/root/temp/clincobsrecinfo/intervalrecynlist";
  13. var xClincObsRecListPath = "/root/temp/clincobsrecinfo/clincobsreclist";
  14. var sAttrListPath = "/root/temp/clincobsrecinfo/attrlist";
  15. var sAttrListPath1 = "/root/temp/clincobsrecinfo/attrlist1";
  16. var xRecUserListPath = "/root/temp/clincobsrecinfo/recuserlist";
  17. var xTMSettingListPath = "/root/temp/clincobsrecinfo/tmsettinglist";
  18. var sAttrListTempPath = "/root/temp/attrinfo/attrlist";
  19. var sAttrListInitPath = "/root/temp/initcmblnfo/initcmblist";
  20. var xFormerIntervalRecYNListPath = "/root/temp/formerclincobsrecinfo/intervalrecynlist";
  21. var xFormerClincObsRecListPath = "/root/temp/formerclincobsrecinfo/clincobsreclist";
  22. var xFormerAttrListPath = "/root/temp/formerclincobsrecinfo/attrlist";
  23. var xFormerAttrListPath1 = "/root/temp/formerclincobsrecinfo/attrlist1";
  24. var xFormerRecUserListPath = "/root/temp/formerclincobsrecinfo/recuserlist";
  25. var xPamInfoPath = "/root/main/paminfo/pamlist"; // 환자정보
  26. var xDayCountListPath = "/root/main/daycountinfo/daycountlist";
  27. var xFormerDayCountListPath = "/root/main/formerdaycountinfo/daycountlist";
  28. var xResultPath = "/root/certtemp/recinfo";
  29. var xResultAttrPath = "/root/certattrtemp/recattrinfo";
  30. var xPathViewData = "/root/temp/clincobsrecinfo/rtnsigndata";
  31. var xFormerRecPath = "/root/temp/formerclincobsrecinfo";
  32. var sHeader = new Array();
  33. var sFormerHeader = new Array();
  34. var sPid = ""; // 환자번호
  35. var sIndd = ""; // 입원일자
  36. var sCretNo = ""; // 환자 일자별 일련번호
  37. var sInstcd = ""; // 기관코드
  38. var sIOFlag = ""; // 입원/외래 구분
  39. var sWardCD = ""; // 병동코드
  40. var sRoomCD = ""; // 병실코드
  41. var sJobKindCD = ""; // 직급코드
  42. var sIndschacptstat = "";
  43. var sDschdd = "";
  44. var sDayCountFlag = "";
  45. var sPopUpMenuFlag = "";
  46. var s4DateSrch = "";
  47. var sViewerRecDD = "";
  48. var sViewerFunc = "sign";
  49. var sMakeChartInfo = new Array();
  50. var sImageRecDD = "";
  51. var sPatNm = "";
  52. var sSexAge = "";
  53. var sDutplcecd = "";
  54. var sOrdDeptcd = "";
  55. var sMedispclid = "";
  56. var sUserFlag = "";
  57. var sUserDeptCd = "";
  58. var sUserId = "";
  59. var sSpParamInfo = "";
  60. var sParamInfo = "";
  61. /**
  62. * @group :
  63. * @ver : 2007.06.27
  64. * @by : 이은영
  65. * @---------------------------------------------------
  66. * @type : function
  67. * @access : public
  68. * @desc : 화면 초기화
  69. * @param :
  70. * @return :
  71. * @---------------------------------------------------
  72. */
  73. function fInitialize(pFlag){
  74. if(pFlag == "init"){
  75. sParamInfo = "";
  76. sSpParamInfo = "";
  77. }
  78. browser1.visible = false;
  79. model.setValue(sCondPath+"/srchflag", "2");
  80. sUserFlag = "2";
  81. model.setValue(sCondPath+"/cmbstatusx", "0");
  82. model.setValue(sCondPath+"/cmbstatusy", "0");
  83. model.setValue(sCondPath+"/rectm","060000");
  84. model.setValue(sCondPath+"/timeflag", "60");
  85. model.setValue(sCondPath+"/vwctrl_button","24hours");
  86. model.setValue(sCondPath+"/daycountinfo", "1 2 3 4 5 6");
  87. model.setValue(sCondPath+"/formerdaycountinfo", "1 2 3 4 5 6");
  88. // 환자정보 강제 세팅 ****************************************************
  89. model.setValue("/root/main/cond/pid", model.property("pid"));
  90. model.setValue("/root/main/cond/indd", model.property("indd"));
  91. model.setValue("/root/main/cond/cretno", model.property("cretno"));
  92. model.setValue("/root/main/cond/patnm", model.property("hngnm"));
  93. model.setValue("/root/main/cond/sexage", model.property("sexage"));
  94. model.setValue("/root/main/cond/orddeptnm", model.property("deptnm"));
  95. model.setValue("/root/main/cond/orddrnm", model.property("medispclnm"));
  96. model.setValue("/root/main/cond/wardroomnm", model.property("wardroomnm"));
  97. model.setValue("/root/main/cond/ordtype", "I");
  98. model.setValue("/root/main/cond/indschacptstat", "A");
  99. model.setValue("/root/main/cond/dschdd", "99991231");
  100. var sRecdate = "";
  101. var sRectime = "";
  102. if(getCurrentTime().substr(0,4) < "0700"){
  103. sRecdate = getDateCalc(getCurrentDate(),1,"-");
  104. }else{
  105. sRecdate = getCurrentDate();
  106. }
  107. model.setValue(sCondPath+"/recdd",sRecdate);
  108. model.setValue(sCondPath+"/formerrecdd", getDateCalc(model.getValue(sCondPath+"/recdd"),1));
  109. fSearchClincObsRec();
  110. }
  111. /**
  112. * @group :
  113. * @ver : 2007.07.11
  114. * @by : 이은영
  115. * @---------------------------------------------------
  116. * @type : function
  117. * @access : public
  118. * @desc : 이전/이후 날짜 Setting
  119. * @param :
  120. * @return :
  121. * @---------------------------------------------------
  122. */
  123. function fDateCalc(pFlag, pVWFlag, pTerm){
  124. var sRecDT = model.getValue(sCondPath+"/recdd")+model.getValue(sCondPath+"/rectm");
  125. switch(pVWFlag){
  126. case "24hours" :
  127. var sTime = eval(model.getValue(sCondPath+"/timeflag")) * pTerm;
  128. sRecDT = sRecDT.toDate("YYYYMMDDhhmmss");
  129. if(pFlag == "-"){
  130. sRecDT.setMinutes(sRecDT.getMinutes() - sTime);
  131. }else{
  132. sRecDT.getAddDate(sTime, "m");
  133. }
  134. model.setValue(sCondPath+"/recdd",getDateTime(sRecDT,'기본').substr(0,8));
  135. model.setValue(sCondPath+"/rectm",getDateTime(sRecDT,'기본').substr(8,6));
  136. break;
  137. }
  138. fSearchClincObsRec(pVWFlag);
  139. }
  140. /**
  141. * @group :
  142. * @ver : 2007.07.11
  143. * @by : 이은영
  144. * @---------------------------------------------------
  145. * @type : function
  146. * @access : public
  147. * @desc : 시작일자 계산
  148. * @param :
  149. * @return :
  150. * @---------------------------------------------------
  151. */
  152. function fCalStartDate(pDate, pTimeFlag){
  153. var sStartDT = pDate.toDate("YYYYMMDDhhmmss");
  154. var sTime = "";
  155. var sRemainder = 0;
  156. if(pTimeFlag != 1 ){
  157. sRemainder = eval(pDate.substr(10,2))%pTimeFlag;
  158. }
  159. sStartDT.setMinutes(sStartDT.getMinutes()-sRemainder);
  160. return sStartDT;
  161. }
  162. /**
  163. * @group :
  164. * @ver : 2007.08.16
  165. * @by : 이은영
  166. * @---------------------------------------------------
  167. * @type : function
  168. * @access : public
  169. * @desc : 그리드 Header 생성
  170. * @param :
  171. * @return :
  172. * @---------------------------------------------------
  173. */
  174. function fCreateHeader(pFlag){
  175. var sRecDT = "";
  176. //var sChartCapNm = "";
  177. var sGridCapNm = "";
  178. var sTimeFlag = 0;
  179. var sCDay = new Array();
  180. var sDayInfo = "";
  181. var iDayRow = 0;
  182. var sDayCountInfo = "";
  183. var sDateList = "";
  184. sHeader[1] = new Array();
  185. sHeader[2] = new Array();
  186. sHeader[1][0] = "날 짜";
  187. sHeader[2][0] = "시 간";
  188. model.removenode("/root/send");
  189. model.makeValue("/root/send/pid", sPid);
  190. model.makeValue("/root/send/indd", sIndd);
  191. model.makeValue("/root/send/cretno", sCretNo);
  192. model.makeValue("/root/send/instcd", sInstcd);
  193. model.makeValue("/root/send/ioflag", sIOFlag);
  194. switch(pFlag){
  195. case "24hours" :
  196. sTimeFlag = eval(model.getValue(sCondPath+"/timeflag"));
  197. sRecDT = model.getValue(sCondPath+"/recdd")+model.getValue(sCondPath+"/rectm");
  198. var sStartDT = fCalStartDate(sRecDT,sTimeFlag);
  199. var sTime = 0;
  200. for(var i=1; i<=25; i++){
  201. if(i>1){
  202. sStartDT = sStartDT.getAddDate(sTimeFlag,"m");
  203. }
  204. sHeader[1][i] = getDateTime(sStartDT,'기본').substr(0,8);
  205. if(iDayRow == 0 || sCDay[iDayRow-1] != sHeader[1][i]){
  206. sCDay[iDayRow] = sHeader[1][i];
  207. iDayRow++;
  208. }
  209. sHeader[2][i] = getDateTime(sStartDT,'기본').substr(8,2);
  210. }
  211. for(var iRow=1; iRow<=2; iRow++){
  212. // if(iRow == 2 && model.getValue(sCondPath+"/vwctrl_24hours") == "A") continue;
  213. for(var iCol=0; iCol<=24; iCol++){
  214. if(iRow == 1){
  215. // sChartCapNm += sHeader[iRow+1][iCol]; // day count
  216. if(iCol == 0){
  217. sGridCapNm += sHeader[iRow][iCol]; // 년월일
  218. }else{
  219. sGridCapNm += sHeader[iRow][iCol].toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일")+
  220. " ("+sHeader[iRow][iCol].toDate("YYYYMMDD").getDayOfWeek("k")+")";
  221. }
  222. }else if(iRow == 2){ // 시
  223. // sChartCapNm += sHeader[iRow][iCol];
  224. sGridCapNm += sHeader[iRow][iCol];
  225. if(iCol != 0){
  226. sGridCapNm += "시";
  227. // sChartCapNm += "시";
  228. }
  229. }
  230. if(iCol != 24){
  231. // if(iRow != 2) sChartCapNm += "^";
  232. sGridCapNm += "^";
  233. }
  234. }
  235. if(iRow != 2){
  236. // if((iRow%2)== 1) sChartCapNm += "|";
  237. sGridCapNm += "|";
  238. }
  239. }
  240. // grd_24hoursheader.caption = sChartCapNm;
  241. grd_24hoursclincobsreclist.caption = sGridCapNm;
  242. break;
  243. }
  244. }
  245. /**
  246. * @group :
  247. * @ver : 2008.07.30
  248. * @by : 양천덕
  249. * @---------------------------------------------------
  250. * @type : function
  251. * @access : public
  252. * @desc :
  253. * @param : 화면 초기화 초기화
  254. * @return :
  255. * @---------------------------------------------------
  256. */
  257. function fTPRviewInit(){
  258. model.removeNodeset(xHoursClincObsRecList);
  259. model.removeNodeset(xDaysClincObsRecList);
  260. model.removeNodeset(xStnddayClincObsRecListPath);
  261. model.removeNodeset(xFormerdayClincObsRecListPath);
  262. model.removeNodeset(xClincObsRecListPath);
  263. model.removeNodeset(xFormerRecPath);
  264. model.removeNodeset(xDayCountListPath);
  265. model.removeNodeset(xFormerDayCountListPath);
  266. model.removeNodeset(xPamInfoPath);
  267. model.removeNodeset(xRecUserListPath);
  268. model.removeNodeset(sAttrListPath1);
  269. model.removeNodeset(xFormerAttrListPath1);
  270. model.removeNodeset(xFormerRecUserListPath);
  271. model.removeNodeset("/root/init/clsinfo");
  272. model.removeNode("/root/temp/cond/patientgrup");
  273. grd_24hoursclincobsreclist.caption = "";
  274. if(getNodesetCount("/root/main/patinfo") > 0){
  275. model.setValue("/root/main/patinfo/pid", "");
  276. model.setValue("/root/main/patinfo/indd", "");
  277. model.setValue("/root/main/patinfo/cretno", "");
  278. model.setValue("/root/main/patinfo/ordtype", "");
  279. model.setValue("/root/main/patinfo/indschacptstat", "");
  280. model.setValue("/root/main/patinfo/dschdd", "");
  281. model.setValue("/root/main/patinfo/eroutdd", "");
  282. model.setValue("/root/main/patinfo/patnm", "");
  283. model.setValue("/root/main/patinfo/sexage", "");
  284. model.setValue("/root/main/patinfo/wardcd", "");
  285. model.setValue("/root/main/patinfo/roomcd", "");
  286. }
  287. sPid = "";
  288. sIndd = "";
  289. sCretNo = "";
  290. sInstcd = "";
  291. sIOFlag = "";
  292. sWardCD = "";
  293. sRoomCD = "";
  294. sIndschacptstat = "";
  295. sDschdd = "";
  296. sOrdDeptcd = "";
  297. sMedispclid = "";
  298. model.setValue(sCondPath+"/pid", "");
  299. }
  300. /**
  301. * @group :
  302. * @ver : 2007.08.16
  303. * @by : 이은영
  304. * @---------------------------------------------------
  305. * @type : function
  306. * @access : public
  307. * @desc : 임상관찰 기록 조회
  308. * @param :
  309. * @return :
  310. * @---------------------------------------------------
  311. */
  312. function fSearchClincObsRec(pClsFlag){
  313. if(model.getValue("/root/main/cond/pid") == ""){
  314. messageBox("환자를 선택하십시요","I");
  315. return;
  316. }
  317. var sStrTime = "";
  318. var sRecCnt = 0;
  319. var pFlag = model.getValue(sCondPath+"/vwctrl_button");
  320. fCreateHeader(pFlag);
  321. model.removeNode("/root/send");
  322. model.makeValue("/root/send/pid", model.getValue(sCondPath+"/pid"));
  323. model.makeValue("/root/send/indd", model.getValue(sCondPath+"/indd"));
  324. model.makeValue("/root/send/cretno", model.getValue(sCondPath+"/cretno"));
  325. model.makeValue("/root/send/instcd", model.getValue(sCondPath+"/instcd"));
  326. model.makeValue("/root/send/timeflag", model.getValue(sCondPath+"/timeflag"));
  327. model.makeValue("/root/send/srchdd",model.getValue(sCondPath+"/recdd"));
  328. model.makeValue("/root/send/fromdt",sHeader[1][1]+sHeader[2][1]+"00");
  329. model.removeNodeset(xHoursClincObsRecList);
  330. switch(pFlag){
  331. case "24hours" :
  332. var iHoursRecRow = 0;
  333. var iHoursDataRow = 0;
  334. var sBizLnkFlag = model.getValue(sCondPath+"/bizlnkflag");
  335. model.makeValue("/root/send/todt",sHeader[1][25]+sHeader[2][25]+"0000");
  336. model.makeValue("/root/send/recflag", "24hours");
  337. for(var i=1; i <= 25; i++){
  338. if(sStrTime == ""){
  339. sStrTime += sHeader[1][i]+sHeader[2][i]+"0000";
  340. }else{
  341. sStrTime += ","+sHeader[1][i]+sHeader[2][i]+"0000";
  342. }
  343. }
  344. model.makeValue("/root/send/strtime", sStrTime);
  345. if(model.getValue("/root/main/cond/bizlnkflag") == "Y"){
  346. model.makeValue("/root/send/bizdeptcd", sDutplcecd);
  347. }
  348. if(pClsFlag == "selectedcls"){
  349. model.makeValue("/root/send/clsinfo", model.getValue(sCondPath+"/hoursclsinfo"));
  350. }else{
  351. model.setValue(sCondPath+"/hoursclsinfo","");
  352. }
  353. grd_24hoursclincobsreclist.rebuild();
  354. submit("TRMOB00903");
  355. break;
  356. }
  357. }
  358. /**
  359. * 임상관찰 기록 Chart 그리기
  360. *
  361. * 수정이력
  362. * 2011-07-14 오전 10:26:33 chart 모듈 변경으로 인한 title 출력 파라미터 설정 추가
  363. * Chart 관련 파라미터 정보
  364. * @param chart의 종료선택 type(string) "pie","column","line"
  365. * @param print 출력버튼 type(boolean) true/false
  366. * @param title 출력 type (string) ex> "임상관찰"
  367. * @param Y축 title 출력 type (string) ex> "figure"
  368. * @param X축 값설정 type (string) ex>"06시 00분^07시 00분^08시 00분^09시 00분"
  369. * @param Y축 값설정 type (string) ex>"BP(S)^135^130^130^130|BP(D)^100^90^100^95|.."
  370. * @param 그래프의 width type (int) ex> 450
  371. * @param 그래프의 height type (int) ex> 270
  372. *
  373. */
  374. function visibleChart(){
  375. var strChart = "line";
  376. var bPrint = false;
  377. var strTitle = "임상관찰기록";
  378. var strYTitle = model.getValue("/root/main/cond/recdd");
  379. strYTitle = strTitle.substr(0,4)+"년"+strTitle.substr(4,2)+"월"+strTitle.substr(6,2)+"일";
  380. var iRowCnt = getNodesetCount("/root/main/clincobsrecinfo/hoursclincobsrecinfo/hoursclincobsreclist");
  381. var strXdata = "";
  382. var strYdata = "";
  383. if(iRowCnt > 0){
  384. strXdata = "07시^08시^09시^10시^11시^12시^13시^14시^15시^16시^17시^18시^19시^20시^21시^22시^23시^00시^01시^02시^03시^04시^05시^06시";
  385. strYdata = "";
  386. for(var i = 1; i <= iRowCnt; i++){
  387. if(model.getValue("/root/main/clincobsrecinfo/hoursclincobsrecinfo/hoursclincobsreclist["+i+"]/itemnm") != "V/S"){
  388. for(var j = 0; j <25; j++){
  389. if(j == 0){
  390. strYdata = strYdata + (model.getValue("/root/main/clincobsrecinfo/hoursclincobsrecinfo/hoursclincobsreclist["+i+"]/itemnm")).replace("…","")+"^";
  391. }else if(j == 24){
  392. if(i == iRowCnt){
  393. strYdata = strYdata + grd_24hoursclincobsreclist.valueMatrix(i+1,j);
  394. }else{
  395. strYdata = strYdata + grd_24hoursclincobsreclist.valueMatrix(i+1,j)+"|";
  396. }
  397. }else{
  398. strYdata = strYdata + grd_24hoursclincobsreclist.valueMatrix(i+1,j)+"^";
  399. }
  400. }
  401. }
  402. }
  403. var nWidth = 1500;
  404. var nHeight = 270;
  405. browser1.window.dataCharPicture(strChart, bPrint, strTitle, strYTitle, strXdata, strYdata, nWidth, nHeight);
  406. browser1.visible = true;
  407. }else{
  408. browser1.visible = false;
  409. }
  410. }