MMR06000.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 마취환자기록 ( SPMMR06000_마취환자기록PCA.xrw - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01 2008-07-05
  6. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  7. */
  8. var instcd = "012";
  9. var anstrecno = "";
  10. var currentdate = "";
  11. /**
  12. * @desc : 폼초기화 ( PCA TYPE , PCA MODE , 처방목록 가져오기 )
  13. * @
  14. * @param :
  15. * @return :
  16. * @---------------------------------------------------
  17. */
  18. function fFormInit()
  19. {
  20. anstrecno = window.opener.iv_anstinfo.model.getValue("/root/main/anstinfo/anstrecno");
  21. // 현재일시
  22. currentdate = getCurrentDate() + getCurrentTime();
  23. model.setValue("/root/send/reqdata/currentdate" , currentdate);
  24. // PCA TYPE 목록 (SET)
  25. model.setValue("/root/send/reqdata/settype", "P");
  26. model.setValue("/root/send/reqdata/clscd", "5");
  27. submit("TRMMR06000","","/root/send/reqdata", "/root/init/pcatypelist/item");
  28. // PCA MODE 목록 (공통코드)
  29. zbcfGetCodeList(new Array("M0482"), new Array("/root/init/M0482"));
  30. model.refresh();
  31. // 용법 가져오기..
  32. copyNodeset("/root/hidden/tmedmthd/tmedmthdlist", "/root/hidden/tmedmthd/tmedmthdlist", "replace", model, window.parent.iv_anstprcp.model);
  33. model.refresh();
  34. // 마취환자의 PCA type, mode, total vol 정보를 가져옴
  35. var pcatypecd = window.opener.iv_anstinfo.model.getValue("/root/main/anstinfo/pcatypecd");
  36. var pcamodecd = window.opener.iv_anstinfo.model.getValue("/root/main/anstinfo/pcamodecd");
  37. var pcatotvol = window.opener.iv_anstinfo.model.getValue("/root/main/anstinfo/pcatotvol");
  38. model.setValue("/root/main/pcainfo/pcatypecd", pcatypecd);
  39. model.setValue("/root/main/pcainfo/pcamodecd", pcamodecd);
  40. model.setValue("/root/main/pcainfo/pcatotvol", pcatotvol);
  41. model.setValue("/root/send/reqdata/pcatypecd", pcatypecd);
  42. model.setValue("/root/send/reqdata/pcamodecd", pcamodecd);
  43. model.refresh();
  44. // PCA type 에 따른 처방셋 조회
  45. fPrcpSetItemDisplay();
  46. // 마취환자의 PCA 처방 정보를 가져옴
  47. copyNodeset("/root/main/prcplist/item", "/root/main/anstprcp/item[pcaflag='Y']", "replace", model, window.parent.iv_anstprcp.model);
  48. model.refresh();
  49. // 전체 선택을 위한 그리드 셋..
  50. grd_prcpset.fixedcellcheckbox(0,0) = true;
  51. // 사용자 직종에 따른 권한 버튼 처리.
  52. // 의사 : 0330
  53. // 1. 저장버튼
  54. var drChkFlag = fGetHardCDList("1");
  55. if (drChkFlag == "true")
  56. {
  57. grp_pca.disabled = false;
  58. }
  59. }
  60. /**
  61. * @group : PCA TYPE 목록 선택시 SET 아이템 보여주기
  62. * @ver : 2007-08-24
  63. * @by : 이은영
  64. * @---------------------------------------------------
  65. * @type : function
  66. * @access : public
  67. * @desc :
  68. * @---------------------------------------------------
  69. */
  70. function fPrcpSetItemDisplay()
  71. {
  72. model.setValue("/root/send/setinfo/setcd",cbo_pcatype.value);
  73. // 현재일시
  74. currentdate = getCurrentDate() + getCurrentTime();
  75. model.setValue("/root/send/setinfo/currentdate" , currentdate);
  76. // 마취처방 SET 아이템 조회하기..
  77. submit("TRMMR04206");
  78. }
  79. /**
  80. * @desc : 노드셋 갯수 구하기
  81. * @
  82. * @param :
  83. * @
  84. * @return :
  85. * @author :
  86. * @---------------------------------------------------
  87. */
  88. function getNodeList(strPath) {
  89. var node = instance1.selectNodes(strPath);
  90. if(node == null)
  91. return 0;
  92. return node;
  93. }
  94. /**
  95. * @desc : 마우스 오른쪽 버튼 팝업창
  96. * @
  97. * @param :
  98. * @return :
  99. * @---------------------------------------------------
  100. *
  101. */
  102. function fMouseRghtBtnPopup(gridObj, job)
  103. {
  104. if (event.button == 3) {
  105. if (gridObj.isCell(event.target)) {
  106. if (job == "prcp") {
  107. window.setPopupMenu(true, "/root/hidden/menu6/menu", "label", "func", false);
  108. }
  109. } else {
  110. window.setPopupMenu(false);
  111. }
  112. } else {
  113. window.setPopupMenu(false);
  114. }
  115. }
  116. /**
  117. * @desc : 적용 버튼 클릭
  118. * @param :
  119. * @
  120. * @return :
  121. * @author :
  122. * @---------------------------------------------------
  123. */
  124. function fAddBtnClick(prcptype, clscd)
  125. {
  126. // type, mode
  127. var pcatypecd = model.getValue("/root/send/reqdata/pcatypecd");
  128. var pcamodecd = model.getValue("/root/send/reqdata/pcamodecd");
  129. model.setValue("/root/main/pcainfo/pcatypecd", pcatypecd);
  130. model.setValue("/root/main/pcainfo/pcamodecd", pcamodecd);
  131. model.refresh();
  132. // type, mode 일반정보에 set 하기
  133. window.parent.iv_anstinfo.model.makeValue("/root/main/anstinfo/pcatypecd", pcatypecd);
  134. window.parent.iv_anstinfo.model.makeValue("/root/main/anstinfo/pcamodecd", pcamodecd);
  135. window.parent.iv_anstinfo.model.refresh();
  136. fAddAnstPrcp(grd_prcpset,"/root/main/prcpsetitem/item");
  137. copyNodeset("/root/main/prcplist/item", "/root/main/anstprcp/item[pcaflag='Y']", "replace", model, window.parent.iv_anstprcp.model);
  138. model.refresh();
  139. }
  140. /**
  141. * @desc : type, mode, totvol 정보 넘겨주기
  142. * @
  143. * @param :
  144. * @return :
  145. * @author :
  146. * @---------------------------------------------------
  147. */
  148. function fSendData()
  149. {
  150. var pcatypecd = model.getValue("/root/main/pcainfo/pcatypecd");
  151. var pcamodecd = model.getValue("/root/main/pcainfo/pcamodecd");
  152. var pcatotvol = model.getValue("/root/main/pcainfo/pcatotvol");
  153. window.opener.iv_anstinfo.model.makeValue("/root/main/anstinfo/pcatypecd", pcatypecd);
  154. window.opener.iv_anstinfo.model.makeValue("/root/main/anstinfo/pcamodecd", pcamodecd);
  155. window.opener.iv_anstinfo.model.makeValue("/root/main/anstinfo/pcatotvol", pcatotvol);
  156. window.opener.iv_anstinfo.model.refresh();
  157. window.close();
  158. }
  159. /**
  160. * @desc : 처방추가 버튼 클릭시 처방목록에 추가한다.
  161. * @param :
  162. * @
  163. * @return :
  164. * @author :
  165. * @---------------------------------------------------
  166. */
  167. function fAddAnstPrcp(gridObj, ref)
  168. {
  169. // 처방목록 노드
  170. var AddRef = "/root/main/anstprcp/item";
  171. // 노드 갯수를 가져온후 노드 하나를 추가한다.
  172. var dataCnt = getNodesetCnt(window.parent.iv_anstprcp.model, AddRef);
  173. // agent, drug, fluid, blood, prog
  174. for (var i=1 ; i < gridObj.rows ; i++) {
  175. var checked = model.getValue(ref+"[" + i + "]/checked");
  176. if (checked == "true") {
  177. var prcpcd = model.getValue(ref+"[" + i + "]/prcpcd");
  178. if (prcpcd != "" && prcpcd != null) {
  179. var prcptype = model.getValue(ref+"[" + i + "]/prcptype");
  180. var clscd = model.getValue(ref+"[" + i + "]/clscd");
  181. var prcpnm = model.getValue(ref+"[" + i + "]/prcpnm");
  182. var abbrnm = model.getValue(ref+"[" + i + "]/abbrnm");
  183. var prcpvol = model.getValue(ref+"[" + i + "]/prcpvol");
  184. var prcpvolunitnm = model.getValue(ref+"[" + i + "]/prcpvolunitnm");
  185. var drugmthdcd = model.getValue(ref+"[" + i + "]/drugmthdcd");
  186. var prcpappyn = model.getValue(ref+"[" + i + "]/prcpappyn");
  187. var totvolyn = model.getValue(ref+"[" + i + "]/totvolyn");
  188. var sortno = model.getValue(ref+"[" + i + "]/sortno");
  189. model.setValue(ref+"[" + i + "]/checked", "false");
  190. // 처방목록에 처방코드가 있는가?
  191. var cntprcpcd = getNodesetCnt(window.parent.iv_anstprcp.model, AddRef+"[prcpcd = '" + prcpcd + "']");
  192. if (cntprcpcd > 0 && prcptype != "F") {
  193. alert("이미 추가되었습니다. - [" + prcpnm+ "]");
  194. /** 처방은 한번만 한다..................................2007.10.09.
  195. // 처방코드가 있다면 용량만 더하자..
  196. for (var j=1 ; j <= dataCnt ; j++) {
  197. var tmpprcpcd = model.getValue(AddRef+"[" + j + "]/prcpcd");
  198. if (prcpcd == tmpprcpcd) {
  199. var tmpprcpvol = model.getValue(AddRef+"["+ j +"]/prcpvol");
  200. prcpvol = Number(prcpvol) + Number(tmpprcpvol);
  201. model.setValue(AddRef+"["+ j +"]/prcpvol", prcpvol);
  202. break;
  203. }
  204. }
  205. */
  206. } else {
  207. // 처방코드가 없다면 추가하자..
  208. var checkValue = window.parent.iv_anstprcp.model.getValue(AddRef+"["+dataCnt+"]/prcpnm");
  209. if (checkValue != "" || dataCnt == "0") {
  210. dataCnt = dataCnt + 1;
  211. }
  212. // 2008.09.23. 어렵다..
  213. var prcpseqno = 0;
  214. for (var j=1 ; j <= dataCnt ; j++) {
  215. var tmp = window.parent.iv_anstprcp.model.getValue(AddRef+"["+ j +"]/prcpcd");
  216. if (tmp == prcpcd) {
  217. prcpseqno = window.parent.iv_anstprcp.model.getValue(AddRef+"["+ j +"]/prcpseqno");
  218. }
  219. }
  220. prcpseqno = parseInt(prcpseqno) + 1;
  221. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/prcpcd" , prcpcd);
  222. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/prcptype" , prcptype);
  223. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/prcpvol" , "");
  224. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/prcpvolunitnm" , prcpvolunitnm);
  225. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/prcpvolunitnm2", prcpvolunitnm);
  226. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/prcpnm" , prcpnm);
  227. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/abbrnm" , abbrnm);
  228. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/drugmthdcd" , drugmthdcd);
  229. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/recvol" , "");
  230. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/remark" , "");
  231. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/clscd" , clscd);
  232. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/prcpappyn" , prcpappyn);
  233. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/totvolyn" , totvolyn);
  234. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/sortno" , sortno);
  235. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/pcaflag" , "Y");
  236. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/checked" , checked);
  237. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  238. window.parent.iv_anstprcp.model.makeValue(AddRef+"["+dataCnt+"]/prcpseqno" , prcpseqno);
  239. window.parent.iv_anstprcp.model.refresh();
  240. window.parent.javascript.fAddRow(prcptype, prcpcd, sortno, prcpseqno);
  241. }
  242. }
  243. }
  244. }
  245. // 그리드 정렬후 노드셋 정렬
  246. window.parent.iv_anstprcp.window.javascript.fSetAnstPrcp();
  247. // 메인 그리드 정렬
  248. window.parent.javascript.fGridSort();
  249. }
  250. /**
  251. * @desc : PCA 목록 삭제 메뉴 클릭시 처방목록에서 삭제하고 메인 그리드에서 삭제한다.
  252. * @
  253. * @param :
  254. * @return :
  255. * @---------------------------------------------------
  256. */
  257. function fDelPrcpList()
  258. {
  259. var gridObj = grd_anstprcp;
  260. var ref = "/root/main/prcplist/item";
  261. if (gridObj.row > 0 && gridObj.row < gridObj.rows)
  262. {
  263. var prcptype = model.getValue(ref+"["+ gridObj.row +"]/prcptype");
  264. var prcpcd = model.getValue(ref+"["+ gridObj.row +"]/prcpcd");
  265. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  266. var prcpseqno = model.getValue(ref+"["+ gridObj.row +"]/prcpseqno");
  267. // 노드 갯수를 가져온후 노드 하나를 추가한다.
  268. var dataCnt = getNodesetCnt(window.parent.iv_anstprcp.model, "/root/main/anstprcp/item");
  269. for (var i = 1 ; i <= dataCnt ; i++)
  270. {
  271. var tmpprcpcd = window.parent.iv_anstprcp.model.getValue("/root/main/anstprcp/item["+ i +"]/prcpcd");
  272. var tmpprcpseqno = window.parent.iv_anstprcp.model.getValue("/root/main/anstprcp/item["+ i +"]/prcpseqno");
  273. if (tmpprcpcd == prcpcd && tmpprcpseqno == prcpseqno) {
  274. window.parent.iv_anstprcp.window.grd_anstprcp.row = i;
  275. window.parent.iv_anstprcp.window.javascript.fDelPrcpList();
  276. break;
  277. }
  278. }
  279. }
  280. copyNodeset("/root/main/prcplist/item", "/root/main/anstprcp/item[pcaflag='Y']", "replace", model, window.parent.iv_anstprcp.model);
  281. model.refresh();
  282. }