MMR01400.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. var gRef_MediFormView = "/root/main/prcplist";
  2. var IMGE_SZ = 500;
  3. var instance = document.models(0).instances(0);
  4. var gExtnFuncFlag = true;
  5. /**
  6. * @desc : 화면 초기화
  7. * @id :
  8. * @event : xforms-ready
  9. * @return : void
  10. * @authur : 박종훈
  11. */
  12. function fReadyForm()
  13. {
  14. grd_prcp.autoresize = true;
  15. }
  16. /**
  17. * @desc : 조회내역 클리어
  18. * @id :
  19. * @event : xforms-ready
  20. * @return : void
  21. * @authur : 박종훈
  22. */
  23. function fClear()
  24. {
  25. model.removeNodeset(gRef_MediFormView);
  26. }
  27. /**
  28. * @desc : 처방내역 조회
  29. * @id :
  30. * @event : xforms-ready
  31. * @return : void
  32. * @authur : 박종훈
  33. */
  34. function fRefOrdCnts(comn_cont_reccnts)
  35. {
  36. var fromdd = comn_cont_reccnts.fromdd;
  37. var todd = comn_cont_reccnts.todd;
  38. model.makeValue("/root/send/prcp/pid", comn_cont_reccnts.pid);
  39. //model.makeValue("/root/send/prcp/pid", "1846");
  40. model.makeValue("/root/send/prcp/orddeptcd", comn_cont_reccnts.formrecdeptcd);
  41. model.makeValue("/root/send/prcp/fromdd", fromdd);
  42. model.makeValue("/root/send/prcp/todd", todd);
  43. submit("TRMMR01401");
  44. var nodelistPrcp = instance.selectNodes("/root/main/prcplist");
  45. if(nodelistPrcp.length >= 1){
  46. var prcpcls = "";
  47. var cmt = "";
  48. grd_prcp.attribute("ref") = "";
  49. for(var i = 1; i <= nodelistPrcp.length; i++)
  50. {
  51. prcpcls = model.getValue("/root/main/prcplist[" + i + "]/prcpcls").substring(0, 3);
  52. if(prcpcls == "처방일")
  53. {
  54. model.makeValue("/root/main/prcplist[" + i + "]/viewflag", "recinfo");
  55. }else{
  56. model.makeValue("/root/main/prcplist[" + i + "]/viewflag", "data");
  57. }
  58. }
  59. fDrawGrid();
  60. }
  61. }
  62. /**
  63. * @desc : 그리드 그리기 로직
  64. * @id :
  65. * @event :
  66. * @return : void
  67. * @authur : 박종훈
  68. */
  69. var gfontSz = 11;
  70. function fDrawGrid()
  71. {
  72. grd_prcp.visible = false;
  73. grd_prcp.rebuild();
  74. var colref_viewflag = grd_prcp.colref("viewflag");
  75. var viewflag;
  76. var degnitemlevlno;
  77. //var ft_std = 11;
  78. var ft_std = 0;
  79. var ft_header = (ft_std + gfontSz + 1) + "pt";
  80. var ft_cnts = (ft_std + gfontSz) + "pt";
  81. var ft_tail = (ft_std + gfontSz - 1) + "pt";
  82. var padng = 15;
  83. for (var i = 1; i <= grd_prcp.rows; i++)
  84. {
  85. viewflag = grd_prcp.valueMatrix(i, colref_viewflag);
  86. if (viewflag == "recinfo")
  87. {
  88. //grd_prcp.rowheight(i) = grd_prcp.rowheight(i) + 3;
  89. grd_prcp.rowheight(i) = 30;
  90. grd_prcp.mergebyfree(i, 0, i, 3);
  91. grd_prcp.rowstyle(i, "data", "text-align") = "left";
  92. grd_prcp.rowstyle(i, "data", "background-color") = "#cce8ff";
  93. }
  94. }
  95. grd_prcp.refresh();
  96. grd_prcp.visible = true;
  97. }
  98. /**
  99. * @desc : 그리드 Row형식 셋팅
  100. * @id :
  101. * @event :
  102. * @return : void
  103. * @authur : 박종훈
  104. */
  105. function fSetRowStyle(rowidx, backColr, fontWei, fontSize, padLeft)
  106. {
  107. grd_prcp.rowstyle(rowidx, "data", "background-color") = backColr;
  108. grd_prcp.rowstyle(rowidx, "data", "font-weight") = fontWei;
  109. grd_prcp.rowStyle(rowidx, "data", "font-size") = fontSize;
  110. if (padLeft == "IMGE")
  111. {
  112. grd_prcp.rowStyle(rowidx, "data", "background-position") = "center";
  113. }
  114. else
  115. {
  116. grd_prcp.rowStyle(rowidx, "data", "padding-left") = padLeft;
  117. grd_prcp.rowStyle(rowidx, "data", "background-image") = "";
  118. }
  119. }
  120. /**
  121. * @desc : 메뉴 확인버튼 클릭시
  122. * @id :
  123. * @event :
  124. * @return : void
  125. * @authur : 박종훈
  126. */
  127. function fCnfm()
  128. {
  129. var nodelist = instance1.selectNodes("/root/hidden/formlist[chk='Y' and value!='-']/value");
  130. var arrSrcFormCds = null;
  131. //alert((nodelist.length +"/"+ getNodesetCount("/root/hidden/formlist")));
  132. if (nodelist.length != getNodesetCount("/root/hidden/formlist[value!='-']"))
  133. {
  134. arrSrcFormCds = new Array(nodelist.length);
  135. for (var i=0; i<nodelist.length; i++)
  136. {
  137. arrSrcFormCds[i] = nodelist.item(i).text;
  138. }
  139. }
  140. nodelist = instance1.selectNodes("/root/hidden/itemlist[chk='Y' and value!='-']/value");
  141. var arrItemBaseCds = null;
  142. //alert((nodelist.length +"/"+ getNodesetCount("/root/hidden/itemlist")));
  143. if (nodelist.length != getNodesetCount("/root/hidden/itemlist"))
  144. {
  145. arrItemBaseCds = new Array(nodelist.length);
  146. for (var i=0; i<nodelist.length; i++)
  147. {
  148. arrItemBaseCds[i] = nodelist.item(i).text;
  149. }
  150. }
  151. grup_menu.visible = false;
  152. return fFiltering(arrSrcFormCds, arrItemBaseCds);
  153. }
  154. /**
  155. * @desc : 메뉴 취소버튼 클릭시
  156. * @id :
  157. * @event :
  158. * @return : void
  159. * @authur : 박종훈
  160. */
  161. function fCncl()
  162. {
  163. grup_menu.visible = false;
  164. }
  165. var gSrcFormCds = "";
  166. var gItemBaseCds = "";
  167. /**
  168. * @desc : 기록내용 필터링
  169. * @id :
  170. * @event :
  171. * @return : void
  172. * @authur : 박종훈
  173. */
  174. function fFiltering(pArrSrcFormCds, pArrItemBaseCds)
  175. {
  176. var stmtForm = "";
  177. var stmtItem = "";
  178. if (pArrSrcFormCds != null)
  179. {
  180. for (var i = 0; i < pArrSrcFormCds.length; i++)
  181. {
  182. if (stmtForm != "")
  183. stmtForm += " or ";
  184. stmtForm += "srcformcd='" +pArrSrcFormCds[i]+ "'";
  185. }
  186. }
  187. if (pArrItemBaseCds != null)
  188. {
  189. for (var i = 0; i < pArrItemBaseCds.length; i++)
  190. {
  191. if (stmtItem != "")
  192. stmtItem += " or ";
  193. stmtItem += "fstlevlitembasecd='" +pArrItemBaseCds[i]+ "'";
  194. }
  195. }
  196. var stmt = "";
  197. if (stmtForm != "")
  198. {
  199. stmt = "(" + stmtForm + ")";
  200. }
  201. if (stmt != "" && stmtItem != "")
  202. {
  203. stmt += " and ";
  204. }
  205. if (stmtItem != "")
  206. {
  207. stmt += "(" + stmtItem + " or fstlevlitembasecd='-1')";
  208. }
  209. if (gFilterCond == stmt)
  210. {
  211. return false;
  212. }
  213. else
  214. {
  215. return fExeFilter(stmt);
  216. }
  217. }
  218. /**
  219. * @desc : 최근 폰트 사이즈로 보이기
  220. * @id :
  221. * @event :
  222. * @return : void
  223. * @authur : 박종훈
  224. */
  225. function fShowLstFtSz()
  226. {
  227. if (gExtnFuncFlag == false) return;
  228. if(event.button == 3)
  229. {
  230. if (! grup_menu.visible)
  231. {
  232. grup_menu.attribute("left") = event.clientX;
  233. grup_menu.attribute("top") = event.clientY;
  234. var widGrup = parseInt(grup_menu.attribute("width"));
  235. var widGrd = parseInt(grd_prcp.attribute("width"));
  236. if (widGrd < event.clientX + widGrup)
  237. {
  238. grup_menu.attribute("left") = widGrd - widGrup - 17;
  239. }
  240. var heiGrup = parseInt(grup_menu.attribute("height"));
  241. var heiGrd = parseInt(grd_prcp.attribute("height"));
  242. if (heiGrd < event.clientY + heiGrup)
  243. {
  244. grup_menu.attribute("top") = heiGrd - heiGrup;
  245. }
  246. }
  247. grup_menu.visible = !grup_menu.visible;
  248. event.propagate = "stop";
  249. }
  250. else
  251. {
  252. grup_menu.visible = false;
  253. }
  254. }
  255. /**
  256. * @desc : 폰트 사이즈 변경
  257. * @id :
  258. * @event :
  259. * @return : void
  260. * @authur : 박종훈
  261. */
  262. function fChgFontSz()
  263. {
  264. grup_menu.visible = false;
  265. if (grd_fntsz.row != 0)
  266. {
  267. if (gfontSz != parseInt(grd_fntsz.valueMatrix(grd_fntsz.row, grd_fntsz.colref("value"))))
  268. {
  269. gfontSz = parseInt(grd_fntsz.valueMatrix(grd_fntsz.row, grd_fntsz.colref("value")));
  270. if (fCnfm() == false)
  271. {
  272. fDrawGrid();
  273. }
  274. }
  275. }
  276. }
  277. /**
  278. * @desc : 기록 인스턴스 연결
  279. * @
  280. * @param :
  281. * @return :
  282. * @authur : 박종훈
  283. */
  284. function fSetRecItemValue()
  285. {
  286. var viewflag = grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("viewflag"));
  287. var nodelist;
  288. var preFix = "[formrecseq = '" + grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("formrecseq")) + "'";
  289. var postFix = " and viewflag='data']";
  290. //var postFix = " and viewflag='data' and (rectermcd != '' or recitemcd != '' or reccnts != '')]";
  291. switch (viewflag)
  292. {
  293. case "data":
  294. nodelist = instance1.selectNodes(gRef_ViewMediFormView +
  295. preFix +
  296. postFix);
  297. var reciteminfo = new RECITEM_INFO();
  298. reciteminfo.degnitemkind = grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("degnitemkind"));
  299. reciteminfo.degnitemcd = "";
  300. reciteminfo.degnitemlevlcd = grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("degnitemlevlcd"));
  301. reciteminfo.rectermcd = grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("rectermcd"));
  302. reciteminfo.recitemcd = grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("recitemcd"));
  303. reciteminfo.reccnts = grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("reccnts"));
  304. parent.window.javascript.fSetRecItemValueBydegnitemlevlcd(reciteminfo);
  305. fRecurSelect(grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("formrecseq")),
  306. grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("fstlevlitemcd")),
  307. grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("degnitemno")));
  308. break;
  309. case "fstlevl":
  310. nodelist = instance1.selectNodes(gRef_ViewMediFormView +
  311. preFix +
  312. " and fstlevlitemcd = '" + grd_prcp.valueMatrix(grd_prcp.row, grd_prcp.colref("fstlevlitemcd")) +"'"+
  313. postFix);
  314. fSetRecItemValueByNodeList(nodelist);
  315. break;
  316. default:
  317. nodelist = instance1.selectNodes(gRef_ViewMediFormView +
  318. preFix +
  319. postFix);
  320. fSetRecItemValueByNodeList(nodelist);
  321. break;
  322. }
  323. }
  324. /**
  325. * @desc : 노드리스트별 기록 인스턴스 연결을 위한 재귀함수
  326. * @
  327. * @param :
  328. * @return :
  329. * @authur : 박종훈
  330. */
  331. function fRecurSelect(formrecseq, fstlevlitemcd, degnitemno)
  332. {
  333. var nodelist = instance1.selectNodes(gRef_ViewMediFormView + "[viewflag='data' and formrecseq = '" +formrecseq+
  334. "' and fstlevlitemcd = '" +fstlevlitemcd+ "' and supdegnitemno = '" +degnitemno+ "']");
  335. for (var i=0; i<nodelist.length; i++)
  336. {
  337. fRecurSelect(formrecseq, fstlevlitemcd, nodelist.item(i).getXPathString("degnitemno"));
  338. }
  339. fSetRecItemValueByNodeList(nodelist);
  340. }
  341. /**
  342. * @desc : 노드리스트별 기록 인스턴스 연결
  343. * @
  344. * @param :
  345. * @return :
  346. * @authur : 박종훈
  347. */
  348. function fSetRecItemValueByNodeList(nodelist)
  349. {
  350. var reciteminfo;
  351. for (var i=0; i<nodelist.length; i++)
  352. {
  353. if (nodelist.item(i).getXPathString("rectermcd") != "" ||
  354. nodelist.item(i).getXPathString("recitemcd") != "" ||
  355. nodelist.item(i).getXPathString("reccnts") != "" )
  356. {
  357. reciteminfo = new RECITEM_INFO();
  358. reciteminfo.degnitemkind = nodelist.item(i).getXPathString("degnitemkind");
  359. reciteminfo.degnitemcd = "";
  360. reciteminfo.degnitemlevlcd = nodelist.item(i).getXPathString("degnitemlevlcd");
  361. reciteminfo.rectermcd = nodelist.item(i).getXPathString("rectermcd");
  362. reciteminfo.recitemcd = nodelist.item(i).getXPathString("recitemcd");
  363. reciteminfo.reccnts = nodelist.item(i).getXPathString("reccnts");
  364. parent.window.javascript.fSetRecItemValueBydegnitemlevlcd(reciteminfo);
  365. }
  366. }
  367. }
  368. /*
  369. function fConfirm()
  370. {
  371. getSubFormData();
  372. var refTarget = "/root/main/subform";
  373. var refUniqInfo = "/root/hidden/forminfo/formdegnseqno";
  374. if(findNode(opener.model, refTarget + "[@id='" + model.getValue(refUniqInfo) + "']"))
  375. opener.model.removeNode(refTarget + "[@id='" + model.getValue(refUniqInfo) + "']");
  376. var cntSubForm = getNodesetCnt(opener.model, refTarget);
  377. copyNodeset(opener.model, model, refTarget + "[" + (cntSubForm + 1) + "]", refTarget);
  378. opener.model.makeValue(refTarget + "[" + (cntSubForm + 1) + "]/@id", model.getValue(refUniqInfo));
  379. opener.model.makeValue(refTarget + "[" + (cntSubForm + 1) + "]/@type", "formdegnseqno");
  380. window.close();
  381. }
  382. function fTmpSave()
  383. {
  384. getSubFormData();
  385. fSetFormRecInfo("N");
  386. }
  387. function fSignedSave()
  388. {
  389. getSubFormData();
  390. fSetFormRecInfo("Y");
  391. }
  392. */
  393. /**
  394. * @desc : 복사하기(클립보드에복사)
  395. * @id :
  396. * @event :
  397. * @return : void
  398. * @authur : 박종훈
  399. */
  400. function fSendBufCnts()
  401. {
  402. if (gExtnFuncFlag == false) return;
  403. var bufCnts = "";
  404. var rowidx;
  405. var colref_viewcnts = grd_prcp.colref("precinfo");
  406. //var colref_degnitemlevlno = grd_prcp.colref("degnitemlevlno");
  407. //var colref_imgehei = grd_prcp.colref("imgehei");
  408. //var degnitemlevlno;
  409. for (var i = 0; i < grd_prcp.selectedRows; i++)
  410. {
  411. rowidx = grd_prcp.selectedRow(i);
  412. //degnitemlevlno = grd_prcp.valueMatrix(rowidx, colref_degnitemlevlno);
  413. bufCnts += grd_prcp.valueMatrix(rowidx, colref_viewcnts) + "\r\n";
  414. }
  415. window.clipBoardData = bufCnts;
  416. //alert(bufCnts);
  417. }