MMR04200.js 65 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 마취기록마스터관리 ( SMMMR04200_마취기록마스터관리.xrw - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  7. */
  8. var instcd = "012";
  9. var job = "1";
  10. // 1 : 마취기록마스터
  11. // 2 : 처방목록마스터
  12. // 3 : 마취기록셋
  13. // 4 : 마취처방셋
  14. // 5 : 마취V/S항목마스터
  15. // 6 : 마취V/S항목셋
  16. // 7 : 시간기록항목마스터
  17. // 8 : Progress Note
  18. function fSetJob(flag){
  19. job = flag;
  20. model.setValue("/root/send/setinfo/instcd", "");
  21. model.setValue("/root/send/setinfo/status", "");
  22. model.setValue("/root/send/setinfo/setcd", "");
  23. model.setValue("/root/send/setinfo/setnm", "");
  24. model.setValue("/root/send/setinfo/settype", "");
  25. model.setValue("/root/send/setinfo/valiyn", "");
  26. }
  27. var trv_selectedIndex = -1;
  28. var currentdate = "";
  29. var ocsrow = "1";
  30. // 사용자 권한..
  31. var user_auth_r = false;
  32. var user_auth_x = false;
  33. var user_auth_p = false;
  34. // 화면로딩
  35. var sw_recmast_load = "N";
  36. var sw_prcpmast_load = "N";
  37. var sw_recset_load = "N";
  38. var sw_prcpset_load = "N";
  39. var sw_vsmast_load = "N";
  40. var sw_vsset_load = "N";
  41. var sw_timerec_load = "N";
  42. var sw_prognote_load = "N";
  43. var sHardCdNo = "9964";
  44. /**
  45. * @desc : 폼초기화
  46. * @
  47. * @param :
  48. * @return :
  49. * @---------------------------------------------------
  50. */
  51. function fFormInit()
  52. {
  53. // 사용자 권한 체킹하여 버튼 비활성화함.
  54. fUserAuth();
  55. // 급여구분 공통코드
  56. zbcfGetCodeList(new Array( "M0029"), new Array( "/root/init/M0029"));
  57. //급여변경시 체크 위해 (처방화면에서 환자초기검색 값을 가져옴)
  58. fInitSrchLogin();
  59. // 처음 텝 화면
  60. model.toggle("case_recmast");
  61. btn_recmast.dispatch("DOMActivate");
  62. // 현재일시
  63. currentdate = getCurrentDate() + getCurrentTime();
  64. model.setValue("/root/send/reqdata/currentdate" , currentdate);
  65. model.setValue("/root/send/recinfo/currentdate" , currentdate);
  66. model.setValue("/root/send/recinfo/instcd" , instcd);
  67. model.setValue("/root/main/prcp/prcplist/status", "S");
  68. model.setValue("/root/init/prcpdd" , getCurrentDate());
  69. // 마취기록마스터 조회
  70. submit("TRMMR04201");
  71. // 트리 리셋해주기 (마취기록마스터, 기록 SET)
  72. setTree(grd_recmast , grd_recmast.colref("depth"), grd_recmast.colref("recnm"), false);
  73. setTree(grd_rec , grd_rec.colref("depth"), grd_rec.colref("recnm"), false);
  74. // 2008.01.21. 폴더 접기
  75. for (var i = 1; i <grd_recmast.rows ; i++) {
  76. var depth = model.getValue("/root/main/recmast/item["+ i +"]/depth");
  77. if (depth == "4") {
  78. grd_recmast.iscollapsed(i) = 1;
  79. }
  80. }
  81. }
  82. /**
  83. * @desc : 사용자 권한 체킹하여 버튼 비활성화함
  84. * @
  85. * @param :
  86. * @return :
  87. * @---------------------------------------------------
  88. */
  89. function fUserAuth()
  90. {
  91. // 사용자 권한 체킹하여 버튼 비활성화함.
  92. user_auth_r = checkAuth("R");
  93. user_auth_x = checkAuth("X");
  94. user_auth_p = checkAuth("P");
  95. model.setValue("/root/init/user_auth_r", user_auth_r);
  96. model.setValue("/root/init/user_auth_x", user_auth_x);
  97. model.setValue("/root/init/user_auth_p", user_auth_p);
  98. model.refresh();
  99. btn_updown.disabled = !user_auth_x
  100. btn_saverecitem.disabled = !user_auth_x
  101. btn_del.disabled = !user_auth_x
  102. btn_save.disabled = !user_auth_x
  103. btn_add.disabled = !user_auth_x
  104. btn_saverecset.disabled = !user_auth_x
  105. btn_recsetnm.disabled = !user_auth_x
  106. btn_prcpsetnm.disabled = !user_auth_x
  107. btn_delprcpset.disabled = !user_auth_x
  108. btn_saveprcpset.disabled = !user_auth_x
  109. btn_addprcpset.disabled = !user_auth_x
  110. btn_delvs.disabled = !user_auth_x
  111. btn_savevs.disabled = !user_auth_x
  112. btn_addvs.disabled = !user_auth_x
  113. btn_addrow.disabled = !user_auth_x
  114. btn_delrow.disabled = !user_auth_x
  115. btn_moveup.disabled = !user_auth_x
  116. btn_movedown.disabled = !user_auth_x
  117. btn_sorttm.disabled = !user_auth_x
  118. btn_deltm.disabled = !user_auth_x
  119. btn_savetm.disabled = !user_auth_x
  120. btn_addrow2.disabled = !user_auth_x
  121. btn_delrow2.disabled = !user_auth_x
  122. btn_savenote.disabled = !user_auth_x
  123. }
  124. /**
  125. * @desc : 마취 처방 마스터 조회
  126. * @
  127. * @param :
  128. * @return :
  129. * @---------------------------------------------------
  130. */
  131. function fPrcpMastLoad()
  132. {
  133. if (sw_prcpmast_load != "Y") {
  134. // 용법조회 (주사약)
  135. model.setValue ( "/root/send/cond1" , "I");
  136. model.setValue ( "/root/send/cond2" , 1);
  137. model.setValue ( "/root/send/cond3" , "");
  138. submit("TRMMR03710");
  139. // Agent, Drug 소분류 공통코드
  140. zbcfGetCodeList(new Array( "M0286", "M0287"), new Array( "/root/init/M0286", "/root/init/M0287"));
  141. // 그리드 콤보를 숨긴다. (agent, drug 소분류)
  142. grd_prcplist.colhidden(grd_prcplist.colref("abbrnm")) = 1;
  143. grd_prcplist.colhidden(grd_prcplist.colref("a_clscd")) = 1;
  144. grd_prcplist.colhidden(grd_prcplist.colref("d_clscd")) = 1;
  145. // 처음 텝 화면
  146. model.toggle("case_agent");
  147. btn_agent.dispatch("DOMActivate");
  148. sw_prcpmast_load = "Y";
  149. }
  150. }
  151. /**
  152. * @desc : 기록 Set 조회
  153. * @
  154. * @param :
  155. * @return :
  156. * @---------------------------------------------------
  157. */
  158. function fRecSetLoad()
  159. {
  160. if (sw_recset_load != "Y") {
  161. // 기록 set 조회 - 트리뷰
  162. model.setValue("/root/send/reqdata/settype","R");
  163. submit("TRMMR04204","","/root/send/reqdata","/root/main/recset/item");
  164. sw_recset_load = "Y";
  165. }
  166. }
  167. /**
  168. * @desc : 처방 Set 조회
  169. * @
  170. * @param :
  171. * @return :
  172. * @---------------------------------------------------
  173. */
  174. function fPrcpSetLoad()
  175. {
  176. if (sw_prcpset_load != "Y") {
  177. // 처방 set 조회 - 트리뷰
  178. model.setValue("/root/send/reqdata/settype","P");
  179. submit("TRMMR04204","","/root/send/reqdata","/root/main/prcpset/item");
  180. sw_prcpset_load = "Y";
  181. }
  182. }
  183. /**
  184. * @desc : V/S Set 조회
  185. * @
  186. * @param :
  187. * @return :
  188. * @---------------------------------------------------
  189. */
  190. function fVSSetLoad()
  191. {
  192. if (sw_vsset_load != "Y") {
  193. // V/S set 조회 - 트리뷰
  194. model.setValue("/root/send/reqdata/settype","V");
  195. submit("TRMMR04204","","/root/send/reqdata","/root/main/vsset/item");
  196. sw_vsset_load = "Y";
  197. // V/S 마스터 조회
  198. fVSMastLoad();
  199. }
  200. }
  201. /**
  202. * @desc : V/S 마스터 조회
  203. * @
  204. * @param :
  205. * @return :
  206. * @---------------------------------------------------
  207. */
  208. function fVSMastLoad()
  209. {
  210. if (sw_vsmast_load != "Y") {
  211. // V/S 마스터 조회
  212. submit("TRMMR04207");
  213. // V/S 선택해제
  214. for (var i=1 ; i < grd_vsmast.rows ; i++) {
  215. model.setValue("/root/main/vsmast/item["+ i +"]/checked", "false");
  216. }
  217. model.refresh();
  218. sw_vsmast_load = "Y";
  219. }
  220. }
  221. /**
  222. * @desc : 시간기록항목 마스터
  223. * @
  224. * @param :
  225. * @return :
  226. * @---------------------------------------------------
  227. */
  228. function fTimeRecLoad()
  229. {
  230. if (sw_timerec_load != "Y") {
  231. // 시간기록항목 마스터 조회
  232. submit("TRMMR04210");
  233. sw_timerec_load = "Y";
  234. }
  235. }
  236. /**
  237. * @desc : Progress Note
  238. * @
  239. * @param :
  240. * @return :
  241. * @---------------------------------------------------
  242. */
  243. function fProgNoteLoad()
  244. {
  245. if (sw_prognote_load != "Y") {
  246. fProgNoteInfo();
  247. sw_prognote_load = "Y";
  248. }
  249. }
  250. /**
  251. * @desc : 마우스 오른쪽 버튼 팝업창
  252. * @
  253. * @param :
  254. * @return :
  255. * @---------------------------------------------------
  256. *
  257. */
  258. function fMouseRghtBtnPopup(obj)
  259. {
  260. // job
  261. // 1 : 마취기록마스터 그리드
  262. // 2 : 처방목록 그리드
  263. // 3 : 마취기록셋 트리
  264. // 4 : 마취처방셋 트리
  265. // 5 : 마취V/S항목마스터
  266. // 6 : 마취V/S항목셋
  267. if (event.button == 3) {
  268. if (obj.isCell(event.target)) {
  269. // 사용자 권한에 따라 메뉴 팝업 처리
  270. if (user_auth_x == true) {
  271. if (job == "1") {
  272. if (obj.row == 1) {
  273. window.setPopupMenu(true, "/root/temp/menu2/menu", "label", "func", false);
  274. } else {
  275. window.setPopupMenu(true, "/root/temp/menu1/menu", "label", "func", false);
  276. }
  277. } else if (job == "2") {
  278. if (obj.row > 0 && obj.row < obj.rows -1) {
  279. window.setPopupMenu(true, "/root/temp/menu3/menu", "label", "func", false);
  280. } else {
  281. window.setPopupMenu(false);
  282. }
  283. } else if (job == "3") {
  284. var row = trv_selectedIndex + 1;
  285. var depth = model.getValue("/root/main/recset/item[" + row + "]/depth");
  286. if (depth == "1") {
  287. window.setPopupMenu(true, "/root/temp/menu4/menu", "label", "func", false);
  288. } else {
  289. window.setPopupMenu(true, "/root/temp/menu5/menu", "label", "func", false);
  290. }
  291. } else if (job == "4") {
  292. var row = trv_selectedIndex + 1;
  293. var depth = model.getValue("/root/main/prcpset/item[" + row + "]/depth");
  294. if (depth == "1") {
  295. window.setPopupMenu(true, "/root/temp/menu4/menu", "label", "func", false);
  296. } else {
  297. window.setPopupMenu(true, "/root/temp/menu5/menu", "label", "func", false);
  298. }
  299. } else if (job == "6") {
  300. var row = trv_selectedIndex + 1;
  301. var depth = model.getValue("/root/main/vsset/item[" + row + "]/depth");
  302. if (depth == "1") {
  303. window.setPopupMenu(true, "/root/temp/menu4/menu", "label", "func", false);
  304. } else {
  305. window.setPopupMenu(true, "/root/temp/menu5/menu", "label", "func", false);
  306. }
  307. }
  308. } else {
  309. window.setPopupMenu(false);
  310. }
  311. } else {
  312. window.setPopupMenu(false);
  313. }
  314. } else {
  315. window.setPopupMenu(false);
  316. }
  317. }
  318. /**
  319. * @desc : 마취기록 마스터 명칭 팝업 (등록/수정).
  320. * @
  321. * @param :
  322. * @return :
  323. * @---------------------------------------------------
  324. */
  325. function fShowWndIptBox()
  326. {
  327. // job
  328. // 1 : 마취기록마스터 그리드
  329. // 2 : 처방목록 그리드
  330. // 3 : 마취기록셋 트리
  331. // 4 : 마취처방셋 트리
  332. // 5 : 마취V/S항목마스터
  333. // 6 : 마취V/S항목셋
  334. if (job == "1") {
  335. if (event.clientY < 700) {
  336. grup_saveas.attribute("top") = event.clientY-30;
  337. } else {
  338. grup_saveas.attribute("top") = event.clientY-130;
  339. }
  340. grup_saveas.visible = "true";
  341. } else if (job == "2") {
  342. } else if (job == "3") {
  343. grup_recset.attribute("top") = event.clientY;
  344. grup_recset.visible = "true";
  345. } else if (job == "4") {
  346. grup_prcpset.attribute("top") = event.clientY;
  347. grup_prcpset.visible = "true";
  348. } else if (job == "6") {
  349. grup_vsset.attribute("top") = event.clientY;
  350. grup_vsset.visible = "true";
  351. }
  352. }
  353. /**
  354. * @desc : 추가 (기록항목)
  355. * @
  356. * @param :
  357. * @return :
  358. * @---------------------------------------------------
  359. */
  360. function fAddItem(){
  361. fSetRecItem("i");
  362. fShowWndIptBox();
  363. }
  364. /**
  365. * @desc : 삭제 (기록항목)
  366. * @
  367. * @param :
  368. * @return :
  369. * @---------------------------------------------------
  370. */
  371. function fDelItem(){
  372. fSetRecItem("d");
  373. fSaveRecItem();
  374. }
  375. /**
  376. * @desc : 수정 (기록항목)
  377. * @
  378. * @param :
  379. * @return :
  380. * @---------------------------------------------------
  381. */
  382. function fUpdtItem(){
  383. fSetRecItem("u");
  384. fShowWndIptBox();
  385. }
  386. /**
  387. * @desc : 검색된 처방항목을 목록에서 삭제하기
  388. * @
  389. * @param :
  390. * @return :
  391. * @---------------------------------------------------
  392. */
  393. function fDelPrcpItem(){
  394. grd_prcplist.deleteRow(grd_prcplist.row,true);
  395. }
  396. /**
  397. * @desc : 마취기록 마스터항목 SETTING
  398. * @
  399. * @param :
  400. * @return :
  401. * @---------------------------------------------------
  402. */
  403. function fSetRecItem(status){
  404. var recitem = model.getValue("/root/main/recmast/item[" + grd_recmast.row + "]/recitem");
  405. var suprecitem = model.getValue("/root/main/recmast/item[" + grd_recmast.row + "]/suprecitem");
  406. var recnm = model.getValue("/root/main/recmast/item[" + grd_recmast.row + "]/recnm");
  407. var rectype = model.getValue("/root/main/recmast/item[" + grd_recmast.row + "]/rectype");
  408. model.setValue("/root/send/recinfo/status" , status);
  409. model.setValue("/root/send/recinfo/instcd" , instcd);
  410. model.setValue("/root/send/recinfo/recitem" , recitem);
  411. model.setValue("/root/send/recinfo/suprecitem" , suprecitem);
  412. model.setValue("/root/send/recinfo/recnm" , recnm);
  413. model.setValue("/root/send/recinfo/rectype" , rectype);
  414. // supitemindxseq : 새로운 등록이면 상위정보, 수정이면 기존정보
  415. if(status == "i"){
  416. model.setValue("/root/send/recinfo/recitem" , "");
  417. model.setValue("/root/send/recinfo/suprecitem" , recitem);
  418. model.setValue("/root/send/recinfo/recnm" , "");
  419. model.setValue("/root/send/recinfo/rectype" , "R");
  420. }
  421. model.refresh();
  422. }
  423. /**
  424. * @desc : 마취기록 마스터항목 SAVE
  425. * @
  426. * @param :
  427. * @return :
  428. * @---------------------------------------------------
  429. */
  430. function fSaveRecItem(){
  431. // 현재일시
  432. currentdate = getCurrentDate() + getCurrentTime();
  433. model.setValue("/root/send/recinfo/currentdate", currentdate);
  434. // 정렬순서
  435. model.setValue("/root/send/recinfo/sortno", "0");
  436. grup_saveas.visible = "false";
  437. submit("TXMMR04201");
  438. setTree(grd_recmast , grd_recmast.colref("depth"), grd_recmast.colref("recnm"), false);
  439. }
  440. /**
  441. * @desc : 마취처방 마스터항목 조회
  442. * @
  443. * @param :
  444. * @return :
  445. * @---------------------------------------------------
  446. */
  447. function fSetPrcpItem(prcptype, flag)
  448. {
  449. // 현재일시
  450. currentdate = getCurrentDate() + getCurrentTime();
  451. model.setValue("/root/send/reqdata/currentdate", currentdate);
  452. // flag
  453. // one : 마취기록마스터 - 처방마스터조회 (각 처방구분에 따라 하나 그리드에 표시)
  454. // other: 마취처방마스터 - 처방마스터조회 (각 처방구분에 따라 다른 그리드에 표시)
  455. if (flag == "one") {
  456. // 처방구분
  457. model.setValue("/root/send/reqdata/prcptype", prcptype);
  458. model.setValue("/root/send/reqdata/clscd", "");
  459. var search_flag = model.getValue("/root/hidden/search/flag");
  460. var search_data = model.getValue("/root/hidden/search/data");
  461. model.setValue("/root/send/reqdata/flag", search_flag);
  462. model.setValue("/root/send/reqdata/data", search_data.toUpperCase());
  463. model.refresh();
  464. submit("TRMMR04202","","/root/send/reqdata","/root/main/prcpmast/item");
  465. } else if (flag == "other") {
  466. if (prcptype == "") {
  467. // 처방구분
  468. prcptype = model.getValue("/root/send/reqdata/prcptype");
  469. var search_flag = model.getValue("/root/hidden/search/flag");
  470. var search_data = model.getValue("/root/hidden/search/data");
  471. model.setValue("/root/send/reqdata/flag", search_flag);
  472. model.setValue("/root/send/reqdata/data", search_data.toUpperCase());
  473. } else {
  474. // 검색 텍스트 클리어한다.
  475. model.setValue("/root/send/reqdata/data", "");
  476. }
  477. // 처방구분
  478. model.setValue("/root/send/reqdata/prcptype", prcptype);
  479. model.makeValue("/root/temp/prcptype", prcptype);
  480. var prcptypenm = "";
  481. var resultRef = "";
  482. if (prcptype == "A") {
  483. prcptypenm = "Agent";
  484. resultRef = "/root/main/agent";
  485. } else if (prcptype == "D") {
  486. prcptypenm = "Drug";
  487. resultRef = "/root/main/drug";
  488. } else if (prcptype == "F") {
  489. prcptypenm = "Fluid";
  490. resultRef = "/root/main/fluid";
  491. } else if (prcptype == "H") {
  492. prcptypenm = "Blood";
  493. resultRef = "/root/main/blod";
  494. } else if (prcptype == "P") {
  495. prcptypenm = "Proc";
  496. resultRef = "/root/main/proc";
  497. } else {
  498. prcptypenm = "";
  499. resultRef = "";
  500. }
  501. if (prcptypenm.length > 0 ) {
  502. cap_prcptype.value = prcptypenm;
  503. submit("TRMMR04202","","/root/send/reqdata", resultRef+"/item");
  504. }
  505. // 처방목록 : 그리드 콤보를 숨긴다. (agent, drug 소분류)
  506. if (prcptype == "A") {
  507. grd_prcplist.colhidden(grd_prcplist.colref("abbrnm")) = 0;
  508. grd_prcplist.colhidden(grd_prcplist.colref("a_clscd")) = 0;
  509. grd_prcplist.colhidden(grd_prcplist.colref("d_clscd")) = 1;
  510. grd_prcplist.colhidden(grd_prcplist.colref("f_clscd")) = 1;
  511. grd_prcplist.colhidden(grd_prcplist.colref("drugmthdspccd")) = 0;
  512. grd_prcplist.colhidden(grd_prcplist.colref("prcpappyn")) = 0;
  513. grd_prcplist.colhidden(grd_prcplist.colref("totvolyn")) = 0;
  514. cmb_clscd.visible = false;
  515. } else if (prcptype == "D") {
  516. grd_prcplist.colhidden(grd_prcplist.colref("abbrnm")) = 0;
  517. grd_prcplist.colhidden(grd_prcplist.colref("a_clscd")) = 1;
  518. grd_prcplist.colhidden(grd_prcplist.colref("d_clscd")) = 0;
  519. grd_prcplist.colhidden(grd_prcplist.colref("f_clscd")) = 1;
  520. grd_prcplist.colhidden(grd_prcplist.colref("drugmthdspccd")) = 0;
  521. grd_prcplist.colhidden(grd_prcplist.colref("prcpappyn")) = 0;
  522. grd_prcplist.colhidden(grd_prcplist.colref("totvolyn")) = 0;
  523. cmb_clscd.visible = true;
  524. } else if (prcptype == "F") {
  525. grd_prcplist.colhidden(grd_prcplist.colref("abbrnm")) = 0;
  526. grd_prcplist.colhidden(grd_prcplist.colref("a_clscd")) = 1;
  527. grd_prcplist.colhidden(grd_prcplist.colref("d_clscd")) = 1;
  528. grd_prcplist.colhidden(grd_prcplist.colref("f_clscd")) = 0;
  529. grd_prcplist.colhidden(grd_prcplist.colref("drugmthdspccd")) = 0;
  530. grd_prcplist.colhidden(grd_prcplist.colref("prcpappyn")) = 0;
  531. grd_prcplist.colhidden(grd_prcplist.colref("totvolyn")) = 0;
  532. cmb_clscd.visible = false;
  533. } else if (prcptype == "H") {
  534. grd_prcplist.colhidden(grd_prcplist.colref("abbrnm")) = 0;
  535. grd_prcplist.colhidden(grd_prcplist.colref("a_clscd")) = 1;
  536. grd_prcplist.colhidden(grd_prcplist.colref("d_clscd")) = 1;
  537. grd_prcplist.colhidden(grd_prcplist.colref("f_clscd")) = 1;
  538. grd_prcplist.colhidden(grd_prcplist.colref("drugmthdspccd")) = 1;
  539. grd_prcplist.colhidden(grd_prcplist.colref("prcpappyn")) = 1;
  540. grd_prcplist.colhidden(grd_prcplist.colref("totvolyn")) = 1;
  541. cmb_clscd.visible = false;
  542. } else {
  543. grd_prcplist.colhidden(grd_prcplist.colref("abbrnm")) = 1;
  544. grd_prcplist.colhidden(grd_prcplist.colref("a_clscd")) = 1;
  545. grd_prcplist.colhidden(grd_prcplist.colref("d_clscd")) = 1;
  546. grd_prcplist.colhidden(grd_prcplist.colref("f_clscd")) = 1;
  547. grd_prcplist.colhidden(grd_prcplist.colref("drugmthdspccd")) = 1;
  548. grd_prcplist.colhidden(grd_prcplist.colref("prcpappyn")) = 1;
  549. grd_prcplist.colhidden(grd_prcplist.colref("totvolyn")) = 1;
  550. cmb_clscd.visible = false;
  551. }
  552. fRefreshPrcplist();
  553. }
  554. }
  555. /**
  556. * @desc : 처방 리스트 초기화
  557. * @
  558. * @param :
  559. * @return :
  560. * @---------------------------------------------------
  561. */
  562. function fRefreshPrcplist()
  563. {
  564. for (var i=1 ; i < grd_prcplist.rows ; i++) {
  565. var status = model.getValue("/root/main/prcp/prcplist[1]/status");
  566. if (status != "S") {
  567. model.removenode( "/root/main/prcp/prcplist[1]");
  568. } else {
  569. model.setValue("/root/main/prcp/prcplist[1]/prcpnm", "");
  570. model.setValue("/root/main/prcp/prcplist[1]/abbrnm", "");
  571. model.setValue("/root/main/prcp/prcplist[1]/a_clscd", "01");
  572. model.setValue("/root/main/prcp/prcplist[1]/d_clscd", "01");
  573. model.setValue("/root/main/prcp/prcplist[1]/f_clscd", "01");
  574. model.setValue("/root/main/prcp/prcplist[1]/prcpappyn", "Y");
  575. model.setValue("/root/main/prcp/prcplist[1]/totvolyn", "Y");
  576. }
  577. }
  578. model.refresh();
  579. grd_prcplist.rebuild();
  580. // 마취처방마스터-전체조회 (처방타입은 원래대로 해주기...)
  581. var prcptype = model.getValue("/root/send/reqdata/prcptype");
  582. model.setValue("/root/send/reqdata/clscd","");
  583. model.setValue("/root/send/reqdata/prcptype","");
  584. submit("TRMMR04202","","/root/send/reqdata","/root/main/prcplist/item");
  585. model.setValue("/root/send/reqdata/prcptype", prcptype);
  586. model.refresh();
  587. }
  588. /**
  589. * @desc : 마취처방 마스터항목 Add
  590. * @
  591. * @param :
  592. * @return :
  593. * @---------------------------------------------------
  594. */
  595. function fAddPrcpItem(status){
  596. // 처방타입
  597. var prcptype = model.getValue("/root/send/reqdata/prcptype");
  598. //20111222
  599. if(prcptype==""){
  600. var prcptype = model.getValue("/root/temp/prcptype");
  601. }
  602. //20111222
  603. if (prcptype == "") {
  604. alert("선택된 처방구분이 없습니다."); return;
  605. }
  606. if (grd_prcplist.rows < 3) {
  607. alert("선택된 처방내역이 없습니다."); return;
  608. }
  609. var obj = grd_prcplist;
  610. var ref ;
  611. if (prcptype == "A") {
  612. ref = "/root/main/agent/item"
  613. } if (prcptype == "D") {
  614. ref = "/root/main/drug/item"
  615. } if (prcptype == "F") {
  616. ref = "/root/main/fluid/item"
  617. } if (prcptype == "H") {
  618. ref = "/root/main/blod/item"
  619. } if (prcptype == "P") {
  620. ref = "/root/main/proc/item"
  621. }
  622. // 현재일시
  623. currentdate = getCurrentDate() + getCurrentTime();
  624. model.setValue("/root/send/reqdata/currentdate", currentdate);
  625. var savedata ="status▦instcd▦prcptype▦clscd▦prcpcd▦prcpnm▦abbrnm▦prcpvol▦prcpvolunitnm▦drugmthdcd▦prcpappyn▦totvolyn▦grupsnglflag▦currentdate▩";
  626. var dataString = "";
  627. for (var i=1 ; i < obj.rows -1 ; i++) {
  628. var prcpcd = model.getValue("/root/main/prcp/prcplist[" + i + "]/prcpcd");
  629. var prcpnm = model.getValue("/root/main/prcp/prcplist[" + i + "]/prcpnm");
  630. var prcpvol = model.getValue("/root/main/prcp/prcplist[" + i + "]/prcpvol");
  631. var prcpvolunitnm = model.getValue("/root/main/prcp/prcplist[" + i + "]/prcpvolunitnm");
  632. var drugmthdcd = model.getValue("/root/main/prcp/prcplist[" + i + "]/drugmthdspccd");
  633. var grupsnglflag = model.getValue("/root/main/prcp/prcplist[" + i + "]/grupsnglflag");
  634. // 투여방법약어명 : 투여방법코드 값으로 투여방법약어명을 읽어온다.
  635. var drugmthdabbrnm = obj.textmatrix(i, obj.colref("drugmthdspccd"));
  636. // 약어명 : 추가된 내용으로 그리드에서 바로 읽어서 처리한다.
  637. var abbrnm = obj.textmatrix(i, obj.colref("abbrnm"));
  638. // 소분류 : 추가된 내용으로 그리드에서 바로 읽어서 처리한다.
  639. var clscd = "00";
  640. if (prcptype == "A") {
  641. clscd = obj.valueMatrix(i, obj.colref("a_clscd"));
  642. if (clscd == "") { clscd = "01" }
  643. } else if (prcptype == "D") {
  644. clscd = obj.valueMatrix(i, obj.colref("d_clscd"));
  645. if (clscd == "") { clscd = "01" }
  646. } else if (prcptype == "F") {
  647. clscd = obj.valueMatrix(i, obj.colref("f_clscd"));
  648. if (clscd == "") { clscd = "01" }
  649. }
  650. // 처방이동유무, 총용량기록여부 (추가내용)
  651. var prcpappyn = obj.textmatrix(i, obj.colref("prcpappyn"));
  652. if (prcpappyn == "") { prcpappyn = "Y" }
  653. var totvolyn = obj.textmatrix(i, obj.colref("totvolyn"));
  654. if (totvolyn == "") { totvolyn = "Y" }
  655. if (prcptype == "H") {
  656. prcpappyn = "N"; totvolyn = "Y";
  657. } else if (prcptype == "P") {
  658. prcpappyn = "Y"; totvolyn = "N";
  659. }
  660. // 2008.01.07. 등록시... 마취처방마스터에 기등록되었는가?
  661. var tmpprcptype = model.getValue("/root/main/prcplist/item[prcpcd ='"+ prcpcd +"']/prcptype");
  662. if (tmpprcptype != "") {
  663. var msg = "";
  664. if (tmpprcptype == "A") {
  665. msg = "Agent";
  666. } else if (tmpprcptype == "D") {
  667. msg = "Drug";
  668. } else if (tmpprcptype == "F") {
  669. msg = "Fluid";
  670. } else if (tmpprcptype == "H") {
  671. msg = "Blood";
  672. }
  673. alert( msg + " 에 기등록된 처방코드 입니다." + "\n\n" + "[" + prcpcd + " : " + prcpnm + "]");
  674. } else {
  675. dataString = dataString + status + "▦" + instcd + "▦" + prcptype + "▦" + clscd + "▦" ;
  676. dataString = dataString + prcpcd + "▦" + prcpnm + "▦" + abbrnm + "▦" + prcpvol + "▦" + prcpvolunitnm + "▦" ;
  677. dataString = dataString + drugmthdcd + "▦" + prcpappyn + "▦" + totvolyn + "▦" + grupsnglflag + "▦" + currentdate + "▩";
  678. }
  679. }
  680. if (dataString.length > 0 ) {
  681. model.setValue("/root/send/savedata", savedata + dataString);
  682. submit("TXMMR04202","","/root/send/savedata",ref);
  683. }
  684. fRefreshPrcplist();
  685. }
  686. /**
  687. * @desc : 마취처방 마스터항목 저장/삭제
  688. * @
  689. * @param :
  690. * @return :
  691. * @---------------------------------------------------
  692. */
  693. function fSavePrcpItem(status){
  694. // 처방타입
  695. var prcptype = model.getValue("/root/send/reqdata/prcptype");
  696. if (prcptype == "") {
  697. alert("처방항목을 선택하시오."); return;
  698. }
  699. var obj ;
  700. var ref ;
  701. if (prcptype == "A") {
  702. obj = grd_agent;
  703. ref = "/root/main/agent/item"
  704. } if (prcptype == "D") {
  705. obj = grd_drug;
  706. ref = "/root/main/drug/item"
  707. } if (prcptype == "F") {
  708. obj = grd_fluid;
  709. ref = "/root/main/fluid/item"
  710. } if (prcptype == "H") {
  711. obj = grd_blod;
  712. ref = "/root/main/blod/item"
  713. } if (prcptype == "P") {
  714. obj = grd_proc;
  715. ref = "/root/main/proc/item"
  716. }
  717. // 현재일시
  718. currentdate = getCurrentDate() + getCurrentTime();
  719. model.setValue("/root/send/reqdata/currentdate", currentdate);
  720. var savedata ="status▦instcd▦prcptype▦clscd▦prcpcd▦prcpnm▦abbrnm▦prcpvol▦prcpvolunitnm▦drugmthdcd▦prcpappyn▦totvolyn▦currentdate▩";
  721. var dataString = "";
  722. for (var i=1 ; i <= obj.rows ; i++) {
  723. var checked = model.getValue(ref +"["+ i +"]/checked");
  724. if (checked == "true") {
  725. prcptype = model.getValue(ref +"["+ i +"]/prcptype");
  726. var prcpcd = model.getValue(ref +"["+ i +"]/prcpcd");
  727. var prcpnm = model.getValue(ref +"["+ i +"]/prcpnm");
  728. var prcpvol = model.getValue(ref +"["+ i +"]/prcpvol");
  729. var prcpvolunitnm = model.getValue(ref +"["+ i +"]/prcpvolunitnm");
  730. var drugmthdcd = model.getValue(ref +"["+ i +"]/drugmthdcd");
  731. var prcpappyn = model.getValue(ref +"["+ i +"]/prcpappyn");
  732. var totvolyn = model.getValue(ref +"["+ i +"]/totvolyn");
  733. var abbrnm = "";
  734. var clscd = "00";
  735. if (prcptype == "A" || prcptype == "D" || prcptype == "F" || prcptype == "H" ) {
  736. abbrnm = model.getValue(ref +"["+ i +"]/abbrnm");
  737. clscd = model.getValue(ref +"["+ i +"]/clscd");
  738. }
  739. dataString = dataString + status + "▦" + instcd + "▦" + prcptype + "▦" + clscd + "▦" ;
  740. dataString = dataString + prcpcd + "▦" + prcpnm + "▦" + abbrnm + "▦" + prcpvol + "▦" + prcpvolunitnm + "▦";
  741. dataString = dataString + drugmthdcd + "▦" + prcpappyn + "▦" + totvolyn + "▦" + currentdate + "▩";
  742. }
  743. }
  744. if (dataString.length > 0 ) {
  745. model.setValue("/root/send/savedata", savedata + dataString);
  746. submit("TXMMR04202","","/root/send/savedata",ref);
  747. }
  748. }
  749. /**
  750. * @desc : 추가 (SET)
  751. * @
  752. * @param :
  753. * @return :
  754. * @---------------------------------------------------
  755. */
  756. function fAddSet(){
  757. fSetSetInfo("i");
  758. fShowWndIptBox();
  759. }
  760. /**
  761. * @desc : 삭제 (SET)
  762. * @
  763. * @param :
  764. * @return :
  765. * @---------------------------------------------------
  766. */
  767. function fDelSet(){
  768. fSetSetInfo("d");
  769. fSaveSetInfo();
  770. }
  771. /**
  772. * @desc : 수정 (SET)
  773. * @
  774. * @param :
  775. * @return :
  776. * @---------------------------------------------------
  777. */
  778. function fUpdtSet(){
  779. fSetSetInfo("u");
  780. fShowWndIptBox();
  781. }
  782. /**
  783. * @desc : 마취기록 SET
  784. * @
  785. * @param :
  786. * @return :
  787. * @---------------------------------------------------
  788. */
  789. function fSetSetInfo(status)
  790. {
  791. var ref;
  792. var treeObj;
  793. if (job == "3") {
  794. ref = "/root/main/recset/item";
  795. treeObj = trv_recset;
  796. } else if (job == "4") {
  797. ref = "/root/main/prcpset/item";
  798. treeObj = trv_prcpset;
  799. } else if (job == "6") {
  800. ref = "/root/main/vsset/item";
  801. treeObj = trv_vsset;
  802. }
  803. var item = treeObj.item(treeObj.selectedIndex);
  804. if (item == null) { return; }
  805. var rowPos = item.index + 1;
  806. var setcd = model.getValue(ref+"[" + rowPos + "]/setcd");
  807. var setnm = model.getValue(ref+"[" + rowPos + "]/setnm");
  808. var settype = model.getValue(ref+"[" + rowPos + "]/settype");
  809. var anstmthdcd = model.getValue(ref+"[" + rowPos + "]/anstmthdcd");
  810. var anstmthdcdsub = model.getValue(ref+"[" + rowPos + "]/anstmthdcdsub");
  811. var clscd = model.getValue(ref+"[" + rowPos + "]/clscd");
  812. var valiyn = "Y";
  813. // 추가인 경우~
  814. if(status == "i"){
  815. setnm = "";
  816. }
  817. // 삭제인 경우~
  818. if(status == "d"){
  819. valiyn = "N";
  820. }
  821. model.setValue("/root/send/setinfo/instcd", instcd);
  822. model.setValue("/root/send/setinfo/status", status);
  823. model.setValue("/root/send/setinfo/setcd", setcd);
  824. model.setValue("/root/send/setinfo/setnm", setnm);
  825. model.setValue("/root/send/setinfo/settype", settype);
  826. model.setValue("/root/send/setinfo/anstmthdcd", anstmthdcd);
  827. model.setValue("/root/send/setinfo/anstmthdcdsub", anstmthdcdsub);
  828. model.setValue("/root/send/setinfo/clscd", clscd);
  829. model.setValue("/root/send/setinfo/valiyn", valiyn);
  830. model.refresh();
  831. }
  832. /**
  833. * @desc : 마취 SET SAVE
  834. * @
  835. * @param :
  836. * @return :
  837. * @---------------------------------------------------
  838. */
  839. function fSaveSetInfo()
  840. {
  841. // 정렬순서
  842. model.setValue("/root/send/setinfo/sortno", "0");
  843. if (job == "3") {
  844. // SET 소분류
  845. model.setValue("/root/send/setinfo/clscd", "1");
  846. submit("TXMMR04204","","/root/send/setinfo","/root/main/recset/item");
  847. grup_recset.visible = "false";
  848. } else if (job == "4") {
  849. submit("TXMMR04204","","/root/send/setinfo","/root/main/prcpset/item");
  850. grup_prcpset.visible = "false";
  851. } else if (job == "6") {
  852. // SET 소분류
  853. model.setValue("/root/send/setinfo/clscd", "1");
  854. submit("TXMMR04204","","/root/send/setinfo","/root/main/vsset/item");
  855. grup_vsset.visible = "false";
  856. }
  857. }
  858. /**
  859. * @desc : 마취 SET 선택시 background-color 주기..
  860. * @
  861. * @param :
  862. * @return :
  863. * @---------------------------------------------------
  864. */
  865. function fTreeSelected(treeObj)
  866. {
  867. for ( var i = 0; i < treeObj.length; i++ ) {
  868. treeObj.item(i).attribute("background-color") = "#ffffff";
  869. treeObj.item(i).attribute("text-decoration") = "";
  870. }
  871. if (treeObj.selectedIndex < 0) { return; }
  872. treeObj.item(treeObj.selectedIndex).attribute("background-color") = "#ece1ec";
  873. treeObj.item(treeObj.selectedIndex).attribute("text-decoration") = "";
  874. if (treeObj.selectedIndex == 0) {
  875. fSetSetInfo("i");
  876. } else if (treeObj.selectedIndex > 0) {
  877. fSetSetInfo("u");
  878. }
  879. }
  880. /**
  881. * @desc : 마취 SET 선택시 조회하기
  882. * @
  883. * @param :
  884. * @return :
  885. * @---------------------------------------------------
  886. */
  887. function fTreeChanged(treeObj)
  888. {
  889. trv_selectedIndex = treeObj.selectedIndex;
  890. // 현재일시
  891. currentdate = getCurrentDate() + getCurrentTime();
  892. model.setValue("/root/send/setinfo/currentdate", currentdate);
  893. if (job == "3") {
  894. var row = trv_selectedIndex + 1;
  895. var depth = model.getValue("/root/main/recset/item[" + row + "]/depth");
  896. if (depth == "1") { return; }
  897. // 마취기록 SET 아이템 조회하기..
  898. submit("TRMMR04205");
  899. // 트리 리셋해주기
  900. setTree(grd_recset , grd_recset.colref("depth"), grd_recset.colref("recnm"), false);
  901. // 마취기록 체킹해주기
  902. fAnstRecChecked("/root/main/recsetitem/item", grd_rec, "recitem", "checked");
  903. } else if (job == "4") {
  904. var row = trv_selectedIndex + 1;
  905. var depth = model.getValue("/root/main/prcpset/item[" + row + "]/depth");
  906. if (depth == "1") { return; }
  907. // 마취처방 SET 아이템 조회하기..
  908. submit("TRMMR04206");
  909. //kimsj 091205 TEMP DATA
  910. model.removenodeset("/root/hidden/prcpsetitem");
  911. copyNodeset("/root/hidden/prcpsetitem", "/root/main/prcpsetitem");
  912. } else if (job == "6") {
  913. var row = trv_selectedIndex + 1;
  914. var depth = model.getValue("/root/main/vsset/item[" + row + "]/depth");
  915. if (depth == "1") { return; }
  916. // V/S SET 아이템 조회하기..
  917. submit("TRMMR04209");
  918. }
  919. }
  920. /**
  921. * @desc : 그리드 트리뷰 더블 클릭시 체킹 표시
  922. * @
  923. * @param :
  924. * @
  925. * @return :
  926. * @author :
  927. * @---------------------------------------------------
  928. */
  929. function fRecDbClick(gridObj)
  930. {
  931. // 셋을 선택했는가?
  932. var setcd = model.getValue("/root/send/setinfo/setcd");
  933. if (setcd == "0" || setcd == "") {
  934. alert("기록 SET 을 먼저 선택하십시오.");
  935. return;
  936. }
  937. // 그리드 트리뷰 더블 클릭시 체킹 토글
  938. var getChecked = model.getValue("/root/main/recmast/item[" + gridObj.row + "]/checked");
  939. if (getChecked == "true") {
  940. getChecked = "false";
  941. } else {
  942. getChecked = "true";
  943. }
  944. model.setValue("/root/main/recmast/item[" + gridObj.row + "]/checked", getChecked);
  945. // 그리드 트리뷰 더블 클릭시 체킹 표시
  946. fSetChecked(gridObj, "depth", "recitem", "suprecitem", "checked");
  947. // 마취기록 마스터의 첫번째 로우는 항상 체크 안된 상태로 유지
  948. fSetCheckedStyle(gridObj, 1, gridObj.colref("checked"), "false");
  949. // 선택된 기록항목만 SET 항목으로 copy 하자..
  950. copyNodeset("/root/main/recsetitem/item", "/root/main/recmast/item[checked = 'true']");
  951. model.refresh();
  952. // 첫번째 항목에는 셋명칭을 보여준다. (INSERT ROW)
  953. grd_recset.insertRow(1,"above","false");
  954. model.makeValue("/root/main/recsetitem/item[1]/depth", "1");
  955. model.makeValue("/root/main/recsetitem/item[1]/recnm", model.getValue("/root/send/setinfo/setnm"));
  956. model.refresh();
  957. // 트리 리셋해주기
  958. setTree(grd_recset , grd_recset.colref("depth"), grd_recset.colref("recnm"), false);
  959. }
  960. /**
  961. * @desc : 그리드 트리뷰인 경우 선택에 의해 선택항목 체킹하여 bold체로 표현한다.
  962. * @ checked 가 true 이면 상위항목도 checked 를 true 로 한다.
  963. * @ checked 가 false 이면 하위항목도 checked 를 false 로 한다.
  964. * @param :
  965. * @ gridObj : grid 객체
  966. * @ depthColNm : depth 컬럼 참조
  967. * @ levlColNm : 레벨 컬럼 참조
  968. * @ suplevlColNm : 상위레벨 컬럼 참조
  969. * @ checkedCol : checked 컬럼 참조
  970. * @return :
  971. * @author :
  972. * @---------------------------------------------------
  973. */
  974. function fSetChecked(gridObj, depthColNm, levlColNm, suplevlColNm, checkedColNm)
  975. {
  976. // 선택된 로우에 대한 처리
  977. var depth = gridObj.textmatrix(gridObj.row, gridObj.colref(depthColNm));
  978. var levl = gridObj.textmatrix(gridObj.row, gridObj.colref(levlColNm));
  979. var suplevl = gridObj.textmatrix(gridObj.row, gridObj.colref(suplevlColNm));
  980. var checked = gridObj.textmatrix(gridObj.row, gridObj.colref(checkedColNm));
  981. var checkedCol = gridObj.colref(checkedColNm);
  982. // 선택항목 처리
  983. fSetCheckedStyle(gridObj, gridObj.row, checkedCol, checked);
  984. if (checked == "true") {
  985. for (var i = gridObj.row -1 ; i > 0 ; i--) {
  986. var tmpdepth = gridObj.textmatrix(i, gridObj.colref(depthColNm));
  987. var tmplevl = gridObj.textmatrix(i, gridObj.colref(levlColNm));
  988. var tmpsuplevl = gridObj.textmatrix(i, gridObj.colref(suplevlColNm));
  989. var tmpchecked = gridObj.textmatrix(i, gridObj.colref(checkedColNm));
  990. if (tmpdepth < 1) {
  991. break;
  992. }
  993. if (tmplevl == suplevl) {
  994. if (tmpchecked == checked) {
  995. break;
  996. }
  997. fSetCheckedStyle(gridObj, i, checkedCol, checked);
  998. suplevl = tmpsuplevl;
  999. }
  1000. }
  1001. } else {
  1002. for (var i = gridObj.row+1; i < gridObj.rows; i++) {
  1003. var tmpdepth = gridObj.textmatrix(i, gridObj.colref(depthColNm));
  1004. var tmplevl = gridObj.textmatrix(i, gridObj.colref(levlColNm));
  1005. var tmpsuplevl = gridObj.textmatrix(i, gridObj.colref(suplevlColNm));
  1006. if (tmpdepth <= depth) {
  1007. break;
  1008. }
  1009. fSetCheckedStyle(gridObj, i, checkedCol, checked);
  1010. }
  1011. }
  1012. gridObj.refresh();
  1013. }
  1014. /**
  1015. * @desc : 그리드 트리뷰인 경우 선택상태값(true/false)와 표현(bold/normal)을 한다.
  1016. * @param :
  1017. * @ gridObj : grid 객체
  1018. * @ checkedRow : 선택 로우
  1019. * @ checkedCol : 선택 컬럼
  1020. * @ checked : 선택 상태
  1021. * @return :
  1022. * @author :
  1023. * @---------------------------------------------------
  1024. */
  1025. function fSetCheckedStyle(gridObj, checkedRow, checkedCol, checked)
  1026. {
  1027. gridObj.textmatrix(checkedRow, checkedCol) = checked;
  1028. if (checked == "true") {
  1029. gridObj.rowStyle(checkedRow, "data", "font-weight") = "bold";
  1030. gridObj.rowStyle(checkedRow, "data", "color") = "#0000ff";
  1031. } else {
  1032. gridObj.rowStyle(checkedRow, "data", "font-weight") = "normal";
  1033. gridObj.rowStyle(checkedRow, "data", "color") = "#000000";
  1034. }
  1035. }
  1036. /**
  1037. * @desc : 저장된 기록 정보를 그리드 트리뷰 에 체킹 표시
  1038. * @
  1039. * @param :
  1040. * @
  1041. * @return :
  1042. * @author :
  1043. * @---------------------------------------------------
  1044. */
  1045. function fAnstRecChecked(dataPath, gridObj, levlColNm, checkedColNm)
  1046. {
  1047. gridObj.allstyle( "all", "font-weight" ) = "normal";
  1048. gridObj.allstyle( "all", "color") = "#000000";
  1049. for (var i=1 ; i < gridObj.rows ; i++) {
  1050. gridObj.textmatrix(i, gridObj.colref(checkedColNm)) = "false";
  1051. }
  1052. var dataCnt = getNodesetCnt(model, dataPath);
  1053. var levlCol = gridObj.colref(levlColNm);
  1054. var checkedCol = gridObj.colref(checkedColNm);
  1055. //그리드 트리뷰 에 체킹 표시
  1056. for (var i = 1 ; i <= dataCnt ; i++) {
  1057. var recitem = model.getValue(dataPath + "["+ i + "]/" +levlColNm);
  1058. for (var j=1 ; j < gridObj.rows ; j++) {
  1059. var tmplevl = gridObj.textmatrix(j, levlCol);
  1060. if (tmplevl == recitem) {
  1061. fSetCheckedStyle(gridObj, j, checkedCol, "true");
  1062. break;
  1063. }
  1064. }
  1065. }
  1066. }
  1067. /**
  1068. * @desc : 마취기록 SET 아이템 등록/삭제
  1069. * @
  1070. * @param :
  1071. * @return :
  1072. * @---------------------------------------------------
  1073. */
  1074. function fSaveSetRecItem()
  1075. {
  1076. // 셋을 선택했는가?
  1077. var setcd = model.getValue("/root/send/setinfo/setcd");
  1078. var settype = model.getValue("/root/send/setinfo/settype");
  1079. if (setcd == "0" || setcd == "") {
  1080. alert("기록 SET 을 먼저 선택하십시오.");
  1081. return;
  1082. }
  1083. // SET 아이템 노드
  1084. var ref = "/root/main/recsetitem/item";
  1085. // 현재일시
  1086. currentdate = getCurrentDate() + getCurrentTime();
  1087. var status = "i"
  1088. var valiyn = "Y"
  1089. // 노드 갯수를 가져온다.
  1090. var dataCnt = getNodesetCnt(model, ref);
  1091. var savedata ="status▦instcd▦setcd▦settype▦linkcd▦prcpvol▦valiyn▦currentdate▩";
  1092. var dataString = "";
  1093. for (var i=1 ; i <= dataCnt ; i++) {
  1094. var linkcd = model.getValue(ref+"["+ i +"]/recitem");
  1095. var prcpvol = "";
  1096. if (linkcd != "0" && linkcd != "" && linkcd != null) {
  1097. dataString = dataString + status + "▦" + instcd + "▦" + setcd + "▦" + settype + "▦" + linkcd + "▦";
  1098. dataString = dataString + prcpvol + "▦" + valiyn + "▦" + currentdate + "▩";
  1099. }
  1100. }
  1101. if (dataString.length > 0 ) {
  1102. model.setValue("/root/send/savedata", savedata + dataString);
  1103. submit("TXMMR04205","","/root/send/savedata",ref);
  1104. // 트리 리셋해주기
  1105. setTree(grd_recset , grd_recset.colref("depth"), grd_recset.colref("recnm"), false);
  1106. // 마취기록 체킹해주기
  1107. fAnstRecChecked("/root/main/recsetitem/item", grd_rec, "recitem", "checked");
  1108. }
  1109. }
  1110. /**
  1111. * @desc : 마취처방 SET 아이템 등록/삭제
  1112. * @
  1113. * @param :
  1114. * @return :
  1115. * @---------------------------------------------------
  1116. */
  1117. function fSaveSetPrcpItem(status)
  1118. {
  1119. // 셋을 선택했는가?
  1120. var setcd = model.getValue("/root/send/setinfo/setcd");
  1121. var settype = model.getValue("/root/send/setinfo/settype");
  1122. if (setcd == "0" || setcd == "") {
  1123. alert("기록 SET 을 먼저 선택하십시오.");
  1124. return;
  1125. }
  1126. // SET 아이템 노드
  1127. if (status == "i") {
  1128. var ref = "/root/main/prcpmast/item";
  1129. } else {
  1130. var ref = "/root/main/prcpsetitem/item";
  1131. }
  1132. // 현재일시
  1133. currentdate = getCurrentDate() + getCurrentTime();
  1134. var valiyn = "Y"
  1135. // 노드 갯수를 가져온다.
  1136. var dataCnt = getNodesetCnt(model, ref);
  1137. var savedata ="status▦instcd▦setcd▦settype▦linkcd▦prcpvol▦valiyn▦payflagcd▦currentdate▩";
  1138. var dataString = "";
  1139. for (var i=1 ; i <= dataCnt ; i++) {
  1140. var checked = model.getValue(ref+"["+ i +"]/checked");
  1141. if (checked == "true") {
  1142. var linkcd = model.getValue(ref+"["+ i +"]/prcpcd");
  1143. var prcpvol = model.getValue(ref+"["+ i +"]/prcpvol");
  1144. var payflagcd = model.getValue(ref+"["+ i +"]/payflagcd");
  1145. if (status == "i") {
  1146. var prcpCnt = getNodesetCnt(model,"/root/main/prcpsetitem/item[linkcd = '"+ linkcd +"']");
  1147. if (prcpCnt == 0) {
  1148. dataString = dataString + status + "▦" + instcd + "▦" + setcd + "▦" + settype + "▦" + linkcd + "▦";
  1149. dataString = dataString + prcpvol + "▦" + valiyn + "▦" + payflagcd + "▦" +currentdate + "▩";
  1150. }
  1151. } else {
  1152. dataString = dataString + status + "▦" + instcd + "▦" + setcd + "▦" + settype + "▦" + linkcd + "▦";
  1153. dataString = dataString + prcpvol + "▦" + valiyn + "▦" + payflagcd + "▦" + currentdate + "▩";
  1154. }
  1155. model.setValue(ref+"["+ i +"]/checked","false");
  1156. }
  1157. }
  1158. if (dataString.length > 0 ) {
  1159. model.setValue("/root/send/savedata", savedata + dataString);
  1160. submit("TXMMR04206","","/root/send/savedata","/root/main/prcpsetitem/item");
  1161. //kimsj 091205 TEMP DATA
  1162. model.removenodeset("/root/hidden/prcpsetitem");
  1163. copyNodeset("/root/hidden/prcpsetitem", "/root/main/prcpsetitem");
  1164. }
  1165. }
  1166. /**
  1167. * @desc : V/S SET 아이템 등록/삭제
  1168. * @
  1169. * @param :
  1170. * @return :
  1171. * @---------------------------------------------------
  1172. */
  1173. function fSaveSetVSItem(status)
  1174. {
  1175. // 셋을 선택했는가?
  1176. var setcd = model.getValue("/root/send/setinfo/setcd");
  1177. var settype = model.getValue("/root/send/setinfo/settype");
  1178. if (setcd == "0" || setcd == "") {
  1179. alert("기록 SET 을 먼저 선택하십시오.");
  1180. return;
  1181. }
  1182. // SET 아이템 노드
  1183. if (status == "i") {
  1184. var ref = "/root/main/vsmast/item";
  1185. } else {
  1186. var ref = "/root/main/vssetitem/item";
  1187. }
  1188. // 현재일시
  1189. currentdate = getCurrentDate() + getCurrentTime();
  1190. var valiyn = "Y"
  1191. // 노드 갯수를 가져온다.
  1192. var dataCnt = getNodesetCnt(model, ref);
  1193. var savedata ="status▦instcd▦setcd▦settype▦linkcd▦prcpvol▦valiyn▦currentdate▩";
  1194. var dataString = "";
  1195. for (var i=1 ; i <= dataCnt ; i++) {
  1196. var checked = model.getValue(ref+"["+ i +"]/checked");
  1197. if (checked == "true") {
  1198. var linkcd = model.getValue(ref+"["+ i +"]/vsitemcd");
  1199. var prcpvol = "";
  1200. if (status == "i") {
  1201. var prcpCnt = getNodesetCnt(model,"/root/main/vssetitem/item[linkcd = '"+ linkcd +"']");
  1202. if (prcpCnt == 0) {
  1203. dataString = dataString + status + "▦" + instcd + "▦" + setcd + "▦" + settype + "▦" + linkcd + "▦";
  1204. dataString = dataString + prcpvol + "▦" + valiyn + "▦" + currentdate + "▩";
  1205. }
  1206. } else {
  1207. dataString = dataString + status + "▦" + instcd + "▦" + setcd + "▦" + settype + "▦" + linkcd + "▦";
  1208. dataString = dataString + prcpvol + "▦" + valiyn + "▦" + currentdate + "▩";
  1209. }
  1210. model.setValue(ref+"["+ i +"]/checked","false");
  1211. }
  1212. }
  1213. if (dataString.length > 0 ) {
  1214. model.setValue("/root/send/savedata", savedata + dataString);
  1215. submit("TXMMR04208","","/root/send/savedata","/root/main/vssetitem/item");
  1216. }
  1217. }
  1218. /**
  1219. * @desc : 그리드 선택시 처방 SET 아이템 추가/삭제
  1220. * @
  1221. * @param :
  1222. * @
  1223. * @return :
  1224. * @author :
  1225. * @---------------------------------------------------
  1226. */
  1227. function fPrcpSetItem(gridObj)
  1228. {
  1229. // 셋을 선택했는가?
  1230. var setcd = model.getValue("/root/send/setinfo/setcd");
  1231. if (setcd == "0" || setcd == "") {
  1232. alert("처방 SET 을 먼저 선택하십시오.");
  1233. model.setValue("/root/main/prcpmast/item[" + gridObj.row + "]/checked", "false");
  1234. return;
  1235. }
  1236. // 선택된 처방 항목만 SET 항목으로 copy 하자.. (처방타입별로 삭제 했다가 추가해 준다)
  1237. var prcptype = model.getValue("/root/send/reqdata/prcptype");
  1238. model.removeNodeset("/root/main/prcpsetitem/item[prcptype = '"+ prcptype +"']");
  1239. model.refresh();
  1240. copyNodeset("/root/main/prcpsetitem/item", "/root/main/prcpmast/item[checked = 'true']", "add");
  1241. model.refresh();
  1242. // 처방 셋 아이템 목록의 인스턴스 정렬해 주기...
  1243. gridObj = grd_prcpset;
  1244. var colRef1 = "prcptype"; //구분
  1245. var colRef2 = "clscd"; //소분류
  1246. var colRef3 = "sortno"; //정렬
  1247. var colRef4 = "prcpnm"; //처방명칭
  1248. gridObj.colsort(gridObj.colRef(colRef1)) = "asc";
  1249. gridObj.colsort(gridObj.colRef(colRef2)) = "asc";
  1250. gridObj.colsort(gridObj.colRef(colRef3)) = "asc";
  1251. gridObj.colsort(gridObj.colRef(colRef4)) = "asc";
  1252. gridObj.sort(gridObj.fixedrows, gridObj.fixedcols, gridObj.rows - 1, gridObj.cols - 1) = "usersort";
  1253. gridObj.gridToInstance();
  1254. }
  1255. /**
  1256. * @desc : 마취 V/S 등록 관련 항목 초기화 해주기...
  1257. * @
  1258. * @param :
  1259. * @return :
  1260. * @---------------------------------------------------
  1261. */
  1262. function fInitVSInfo()
  1263. {
  1264. model.setValue("/root/send/vsinfo/instcd", instcd);
  1265. model.setValue("/root/send/vsinfo/status", "i");
  1266. model.setValue("/root/send/vsinfo/vsitemnm", "");
  1267. model.setValue("/root/send/vsinfo/defaultyn", "Y");
  1268. model.setValue("/root/send/vsinfo/style", "00");
  1269. model.setValue("/root/send/vsinfo/point", "01");
  1270. model.setValue("/root/send/vsinfo/color", "0x000000");
  1271. model.setValue("/root/send/vsinfo/graphappyn", "Y");
  1272. model.setValue("/root/send/vsinfo/sortno", "0");
  1273. model.setValue("/root/send/vsinfo/leftaxis", "0");
  1274. model.setValue("/root/send/vsinfo/rangemin", "");
  1275. model.setValue("/root/send/vsinfo/rangemax", "");
  1276. model.setValue("/root/send/vsinfo/interval", "");
  1277. model.refresh();
  1278. // 그리드에 색 주기
  1279. fGraphBackColor();
  1280. }
  1281. /**
  1282. * @desc : 마취 V/S 마스터항목 Add
  1283. * @
  1284. * @param :
  1285. * @return :
  1286. * @---------------------------------------------------
  1287. */
  1288. function fAddVSItem()
  1289. {
  1290. model.setValue("/root/send/vsinfo/instcd", instcd);
  1291. model.setValue("/root/send/vsinfo/status", "i");
  1292. model.setValue("/root/send/vsinfo/vsitemcd", "0");
  1293. var status = model.getValue("/root/send/vsinfo/status");
  1294. var vsitemcd = model.getValue("/root/send/vsinfo/vsitemcd");
  1295. var vsitemnm = model.getValue("/root/send/vsinfo/vsitemnm");
  1296. var defaultyn = model.getValue("/root/send/vsinfo/defaultyn");
  1297. var style = model.getValue("/root/send/vsinfo/style");
  1298. var point = model.getValue("/root/send/vsinfo/point");
  1299. var color = model.getValue("/root/send/vsinfo/color");
  1300. var graphappyn = model.getValue("/root/send/vsinfo/graphappyn");
  1301. var leftaxis = model.getValue("/root/send/vsinfo/leftaxis");
  1302. var sortno = model.getValue("/root/send/vsinfo/sortno");
  1303. var rangemin = model.getValue("/root/send/vsinfo/rangemin");
  1304. var rangemax = model.getValue("/root/send/vsinfo/rangemax");
  1305. var interval = model.getValue("/root/send/vsinfo/interval");
  1306. var cdistestcd = model.getValue("/root/send/vsinfo/cdistestcd"); // KNUH 20110420 최원돈 CDIS 검사항목 연동
  1307. // 값이 있는지 확인해야지..
  1308. if (vsitemnm.length == 0) { messageBox("V/S 항목 명칭을 " , "C001"); return; }
  1309. if (defaultyn.length == 0) { messageBox("항상표시 여부를 " , "C002"); return; }
  1310. if (point.length == 0) { messageBox("포인트 스타일을 " , "C003"); return; }
  1311. if (color.length == 0) { messageBox("그래프 색을 " , "C003"); return; }
  1312. if (leftaxis.length == 0) { messageBox("축 구분을 " , "C003"); return; }
  1313. if (sortno.length == 0) { messageBox("정렬 순서를 " , "C003"); return; }
  1314. if (graphappyn.length == 0) { messageBox("그래프 적용 유무를 ", "C003"); return; }
  1315. var savedata = "status▦vsitemcd▦vsitemnm▦defaultyn▦style▦point▦color▦leftaxis▦graphappyn▦sortno▦";
  1316. savedata = savedata + "rangemin▦rangemax▦interval▦instcd▦currentdate▦cdistestcd▩";
  1317. var dataString = status + "▦" + vsitemcd + "▦" + vsitemnm + "▦" + defaultyn + "▦" ;
  1318. dataString = dataString + style + "▦" + point + "▦" + color + "▦" ;
  1319. dataString = dataString + leftaxis + "▦" + graphappyn + "▦" + sortno + "▦";
  1320. dataString = dataString + rangemin + "▦" + rangemax + "▦" + interval + "▦";
  1321. dataString = dataString + instcd + "▦" + currentdate + "▦" + cdistestcd + "▩";
  1322. if (dataString.length > 0 ) {
  1323. model.setValue("/root/send/savedata", savedata + dataString);
  1324. submit("TXMMR04207");
  1325. }
  1326. // 등록 관련 항목 초기화 해주기...
  1327. fInitVSInfo();
  1328. }
  1329. /**
  1330. * @desc : 마취 V/S 마스터항목 저장/삭제
  1331. * @
  1332. * @param :
  1333. * @return :
  1334. * @---------------------------------------------------
  1335. */
  1336. function fSaveVSItem(status)
  1337. {
  1338. var obj = grd_vsmast;
  1339. var ref = "/root/main/vsmast/item";
  1340. var savedata = "status▦vsitemcd▦vsitemnm▦defaultyn▦style▦point▦color▦leftaxis▦graphappyn▦sortno▦";
  1341. savedata = savedata + "rangemin▦rangemax▦interval▦instcd▦currentdate▦cdistestcd▩";
  1342. var dataString = "";
  1343. for (var i=1 ; i <= obj.rows ; i++) {
  1344. var checked = model.getValue(ref +"["+ i +"]/checked");
  1345. if (checked == "true") {
  1346. var prcpcd = model.getValue(ref +"["+ i +"]/prcpcd");
  1347. var prcpnm = model.getValue(ref +"["+ i +"]/prcpnm");
  1348. var prcpvol = model.getValue(ref +"["+ i +"]/prcpvol");
  1349. var prcpvolunitnm = model.getValue(ref +"["+ i +"]/prcpvolunitnm");
  1350. var vsitemcd = model.getValue(ref +"["+ i +"]/vsitemcd");
  1351. var vsitemnm = model.getValue(ref +"["+ i +"]/vsitemnm");
  1352. var defaultyn = model.getValue(ref +"["+ i +"]/defaultyn");
  1353. var style = model.getValue(ref +"["+ i +"]/style");
  1354. var point = model.getValue(ref +"["+ i +"]/point");
  1355. var color = model.getValue(ref +"["+ i +"]/color");
  1356. var leftaxis = "0";
  1357. var graphappyn = model.getValue(ref +"["+ i +"]/graphappyn");
  1358. var cdistestcd = model.getValue(ref +"["+ i +"]/cdistestcd");
  1359. var rangemin = model.getValue(ref +"["+ i +"]/rangemin");
  1360. var rangemax = model.getValue(ref +"["+ i +"]/rangemax");
  1361. var interval = model.getValue(ref +"["+ i +"]/interval");
  1362. dataString = dataString + status + "▦" + vsitemcd + "▦" + vsitemnm + "▦" + defaultyn + "▦" ;
  1363. dataString = dataString + style + "▦" + point + "▦" + color + "▦" ;
  1364. dataString = dataString + leftaxis + "▦" + graphappyn + "▦" + i + "▦";
  1365. dataString = dataString + rangemin + "▦" + rangemax + "▦" + interval + "▦";
  1366. dataString = dataString + instcd + "▦" + currentdate + "▦" + cdistestcd + "▩";
  1367. }
  1368. }
  1369. if (dataString.length > 0 ) {
  1370. model.setValue("/root/send/savedata", savedata + dataString);
  1371. submit("TXMMR04207");
  1372. }
  1373. }
  1374. /**
  1375. * @desc : V/S 항목 리스트의 그래프 색 그리드에 적용하기
  1376. * @
  1377. * @param :
  1378. * @return :
  1379. * @---------------------------------------------------
  1380. */
  1381. function fGraphBackColor()
  1382. {
  1383. for (var i=1 ; i < grd_vsmast.rows ; i++) {
  1384. var color = model.getValue("/root/main/vsmast/item["+ i +"]/color");
  1385. grd_vsmast.cellStyle("background-color", i, grd_vsmast.colref("colorvalue")) = Number(color);
  1386. }
  1387. }
  1388. /**
  1389. * @desc : 기록 마스터 항목의 같은 레벨에서 위로 이동한다.
  1390. * @
  1391. * @param :
  1392. * @return :
  1393. * @---------------------------------------------------
  1394. */
  1395. function moveItemUp(grdObj)
  1396. {
  1397. var ref = "/root/main/recmast/item";
  1398. var tmpref = "/root/main/recmast/tmpitem";
  1399. model.removeNodeset(tmpref);
  1400. var cnt_degnitemlist = parseInt( getNodesetCount(ref) );
  1401. var grd_rowidx = grdObj.row;
  1402. var rowidx = -1;
  1403. var std_degnitemlevlno = model.getValue(ref +"["+ grd_rowidx +"]/depth");
  1404. var flag = false;
  1405. for (var i = grd_rowidx-1; i >= 1; i--)
  1406. {
  1407. if (std_degnitemlevlno == model.getValue(ref +"["+ i +"]/depth"))
  1408. {
  1409. rowidx = i;
  1410. break;
  1411. }
  1412. else if (std_degnitemlevlno > model.getValue(ref +"["+ i +"]/depth"))
  1413. {
  1414. break;
  1415. }
  1416. }
  1417. if (rowidx == -1) return;
  1418. copyNodeset(tmpref, ref +"["+ grd_rowidx +"]", "add");
  1419. model.removeNodeset(ref +"["+ grd_rowidx +"]");
  1420. for (var i = grd_rowidx; i <= cnt_degnitemlist; i++)
  1421. {
  1422. if (std_degnitemlevlno < model.getValue(ref +"["+ grd_rowidx +"]/depth"))
  1423. {
  1424. copyNodeset(tmpref, ref +"["+ grd_rowidx +"]", "add");
  1425. model.removeNodeset(ref +"["+ grd_rowidx +"]");
  1426. }
  1427. else
  1428. {
  1429. break;
  1430. }
  1431. }
  1432. for (var i = rowidx; i >= 0; i--)
  1433. {
  1434. if (std_degnitemlevlno == model.getValue(ref +"["+ i +"]/depth"))
  1435. {
  1436. var cnt_tmpdegnitemlist = parseInt( getNodesetCount(tmpref) );
  1437. for (var j = cnt_tmpdegnitemlist; j >= 1; j--)
  1438. {
  1439. var node = instance1.selectSingleNode(tmpref +"["+ j +"]");
  1440. var cp_node = node.cloneNode(true);
  1441. cp_node.nodeName = "item";
  1442. model.duplicate("/root/main/recmast", cp_node, "*["+(i)+"]");
  1443. }
  1444. break;
  1445. }
  1446. }
  1447. model.refresh();
  1448. setTree(grdObj , grdObj.colref("depth"), grdObj.colref("recnm"), false);
  1449. grdObj.refresh();
  1450. grdObj.row = rowidx;
  1451. }
  1452. /**
  1453. * @desc : 기록 마스터 항목의 같은 레벨에서 아래로 이동한다.
  1454. * @
  1455. * @param :
  1456. * @return :
  1457. * @---------------------------------------------------
  1458. */
  1459. function moveItemDown(grdObj)
  1460. {
  1461. var ref = "/root/main/recmast/item";
  1462. var tmpref = "/root/main/recmast/tmpitem";
  1463. model.removeNodeset(tmpref);
  1464. var cnt_degnitemlist = parseInt( getNodesetCount(ref +"") );
  1465. var grd_rowidx = grdObj.row;
  1466. var rowidx = -1;
  1467. var std_degnitemlevlno = model.getValue(ref +"["+ grd_rowidx +"]/depth");
  1468. var flag = false;
  1469. //for (var i = grd_rowidx-1; i >= 1; i--)
  1470. var i;
  1471. for (i = grd_rowidx+1; i <= cnt_degnitemlist; i++)
  1472. {
  1473. if (std_degnitemlevlno == model.getValue(ref +"["+ i +"]/depth"))
  1474. {
  1475. if (flag)
  1476. {
  1477. rowidx = i;
  1478. break;
  1479. }
  1480. else
  1481. {
  1482. flag = true;
  1483. }
  1484. }
  1485. else if (std_degnitemlevlno > model.getValue(ref +"["+ i +"]/depth"))
  1486. {
  1487. rowidx = i;
  1488. break;
  1489. }
  1490. }
  1491. if (i == cnt_degnitemlist+1 && flag) rowidx = i;
  1492. if (rowidx == -1) return;
  1493. copyNodeset(tmpref, ref +"["+ grd_rowidx +"]", "add");
  1494. model.removeNodeset(ref +"["+ grd_rowidx +"]");
  1495. for (i = grd_rowidx; i <= cnt_degnitemlist; i++)
  1496. {
  1497. if (std_degnitemlevlno < model.getValue(ref +"["+ grd_rowidx +"]/depth"))
  1498. {
  1499. copyNodeset(tmpref, ref +"["+ grd_rowidx +"]", "add");
  1500. model.removeNodeset(ref +"["+ grd_rowidx +"]");
  1501. }
  1502. else
  1503. {
  1504. break;
  1505. }
  1506. }
  1507. var cnt_tmpdegnitemlist = parseInt( getNodesetCount(tmpref) );
  1508. for (var j = cnt_tmpdegnitemlist; j >= 1; j--)
  1509. {
  1510. var node = instance1.selectSingleNode(tmpref +"["+ j +"]");
  1511. var cp_node = node.cloneNode(true);
  1512. cp_node.nodeName = "item";
  1513. model.duplicate("/root/main/recmast", cp_node, "*["+ (rowidx-cnt_tmpdegnitemlist) +"]");
  1514. }
  1515. model.refresh();
  1516. setTree(grdObj , grdObj.colref("depth"), grdObj.colref("recnm"), false);
  1517. grdObj.refresh();
  1518. grdObj.row = rowidx-cnt_tmpdegnitemlist;
  1519. }
  1520. /**
  1521. * @desc : 마취기록 마스터항목 순서 SAVE
  1522. * @
  1523. * @param :
  1524. * @return :
  1525. * @---------------------------------------------------
  1526. */
  1527. function fSaveRecItemSortNo(){
  1528. // 현재일시
  1529. currentdate = getCurrentDate() + getCurrentTime();
  1530. var savedata ="status▦instcd▦recitem▦suprecitem▦rectype▦recnm▦sortno▦currentdate▩";
  1531. var dataString = "";
  1532. var ref = "/root/main/recmast/item";
  1533. var dataCnt = getNodesetCnt(model, ref);
  1534. var depth = "";
  1535. var tmpdepth = "";
  1536. var sortno = 0;
  1537. for (var i=1 ; i <= dataCnt ; i++) {
  1538. var status = "u";
  1539. var recitem = model.getValue(ref +"[" + i + "]/recitem");
  1540. var suprecitem = model.getValue(ref +"[" + i + "]/suprecitem");
  1541. var rectype = model.getValue(ref +"[" + i + "]/rectype");
  1542. var recnm = model.getValue(ref +"[" + i + "]/recnm");
  1543. sortno = sortno + 1;
  1544. dataString = dataString + status + "▦" + instcd + "▦" + recitem + "▦" + suprecitem + "▦";
  1545. dataString = dataString + rectype + "▦" + recnm + "▦" + sortno + "▦" + currentdate + "▩";
  1546. }
  1547. if (dataString.length > 0 ) {
  1548. model.setValue("/root/send/savedata", savedata + dataString);
  1549. submit("TXMMR04201","","/root/send/savedata",ref);
  1550. setTree(grd_recmast , grd_recmast.colref("depth"), grd_recmast.colref("recnm"), false);
  1551. }
  1552. }
  1553. /**
  1554. * @desc : OCS 처방 검색시 시작 로우 ~ 끝 로우까지 디폴트 처리한다.
  1555. * @
  1556. * @param :
  1557. * @return :
  1558. * @---------------------------------------------------
  1559. */
  1560. function fOCSRowDefault(flag){
  1561. if (flag == "start") {
  1562. ocsrow = grd_prcplist.row;
  1563. } else if (flag == "end") {
  1564. for (var i = ocsrow ; i < grd_prcplist.rows ; i++)
  1565. {
  1566. model.makeValue("/root/main/prcp/prcplist[" + i + "]/a_clscd","01");
  1567. model.makeValue("/root/main/prcp/prcplist[" + i + "]/d_clscd","01");
  1568. model.makeValue("/root/main/prcp/prcplist[" + i + "]/f_clscd","01");
  1569. model.makeValue("/root/main/prcp/prcplist[" + i + "]/prcpappyn","Y");
  1570. model.makeValue("/root/main/prcp/prcplist[" + i + "]/totvolyn","Y");
  1571. }
  1572. model.refresh();
  1573. grd_prcplist.refresh();
  1574. grd_prcplist.rebuild();
  1575. }
  1576. }
  1577. /**
  1578. * @desc : 그리드 항목을 위/아래로 이동한다.
  1579. * @
  1580. * @param :
  1581. * @return :
  1582. * @authur : 2008.06.09. 이은영
  1583. * @---------------------------------------------------
  1584. */
  1585. function moveGridRow(flag, grdObj, ref)
  1586. {
  1587. if (grdObj == null)
  1588. {
  1589. // 처방타입
  1590. var prcptype = model.getValue("/root/send/reqdata/prcptype");
  1591. if (prcptype == "") {
  1592. alert("처방항목을 선택하시오."); return;
  1593. }
  1594. if (prcptype == "A") {
  1595. grdObj = grd_agent;
  1596. ref = "/root/main/agent"
  1597. } if (prcptype == "D") {
  1598. grdObj = grd_drug;
  1599. ref = "/root/main/drug"
  1600. } if (prcptype == "F") {
  1601. grdObj = grd_fluid;
  1602. ref = "/root/main/fluid"
  1603. } if (prcptype == "H") {
  1604. grdObj = grd_blod;
  1605. ref = "/root/main/blod"
  1606. } if (prcptype == "P") {
  1607. grdObj = grd_proc;
  1608. ref = "/root/main/proc"
  1609. } if (prcptype == "V") {
  1610. grdObj = grd_vsmast;
  1611. ref = "/root/main/vsmast"
  1612. } if (prcptype == "T") {
  1613. grdObj = grd_timerec;
  1614. ref = "/root/main/timerec"
  1615. }
  1616. }
  1617. var grdref = ref + "/item";
  1618. var tmpref = ref + "/tmpitem";
  1619. model.removeNodeset(tmpref);
  1620. var grd_rowidx = grdObj.row;
  1621. var grd_addrow = 0;
  1622. var grd_rows = 0;
  1623. var grd_top = 0;
  1624. if (flag == "up") {
  1625. grd_addrow = grd_rowidx - 1;
  1626. grd_rows = grdObj.rows;
  1627. grd_top = 1;
  1628. } else if (flag == "down") {
  1629. grd_addrow = grd_rowidx + 1;
  1630. grd_rows = grdObj.rows -1;
  1631. grd_top = 0;
  1632. }
  1633. if (grd_rowidx > grd_top && grd_rowidx < grd_rows)
  1634. {
  1635. copyNodeset(tmpref, grdref +"["+ grd_rowidx +"]", "add");
  1636. model.removeNodeset(grdref +"["+ grd_rowidx +"]");
  1637. var node = instance1.selectSingleNode(tmpref +"[1]");
  1638. var cp_node = node.cloneNode(true);
  1639. cp_node.nodeName = "item";
  1640. model.duplicate(ref, cp_node, "*["+ grd_addrow +"]");
  1641. grdObj.row = grd_addrow;
  1642. model.refresh();
  1643. }
  1644. }
  1645. /**
  1646. * @desc : V/S 마스터항목 순서 SAVE
  1647. * @
  1648. * @param :
  1649. * @return :
  1650. * @authur : 2008.06.09. 이은영
  1651. * @---------------------------------------------------
  1652. */
  1653. function fSaveVSItemSortNo(){
  1654. // 현재일시
  1655. currentdate = getCurrentDate() + getCurrentTime();
  1656. var savedata ="status▦instcd▦vsitemcd▦sortno▦currentdate▩";
  1657. var dataString = "";
  1658. var ref = "/root/main/vsmast/item";
  1659. var dataCnt = getNodesetCnt(model, ref);
  1660. var sortno = 0;
  1661. var status = "u";
  1662. for (var i=1 ; i <= dataCnt ; i++) {
  1663. var vsitemcd = model.getValue(ref +"[" + i + "]/vsitemcd")
  1664. sortno = sortno + 1;
  1665. dataString = dataString + status + "▦" + instcd + "▦" + vsitemcd + "▦" + sortno + "▦" + currentdate + "▩";
  1666. }
  1667. if (dataString.length > 0 ) {
  1668. model.setValue("/root/send/savedata", savedata + dataString);
  1669. submit("TXMMR04210","","/root/send/savedata", ref);
  1670. }
  1671. }
  1672. /**
  1673. * @desc : 처방 마스터항목 순서 SAVE
  1674. * @
  1675. * @param :
  1676. * @return :
  1677. * @authur : 2008.06.09. 이은영
  1678. * @---------------------------------------------------
  1679. */
  1680. function fSavePrcpItemSortNo(){
  1681. // 처방타입
  1682. var prcptype = model.getValue("/root/send/reqdata/prcptype");
  1683. if (prcptype == "") {
  1684. alert("처방항목을 선택하시오."); return;
  1685. }
  1686. var obj ;
  1687. var ref ;
  1688. if (prcptype == "A") {
  1689. obj = grd_agent;
  1690. ref = "/root/main/agent/item"
  1691. } if (prcptype == "D") {
  1692. obj = grd_drug;
  1693. ref = "/root/main/drug/item"
  1694. } if (prcptype == "F") {
  1695. obj = grd_fluid;
  1696. ref = "/root/main/fluid/item"
  1697. } if (prcptype == "H") {
  1698. obj = grd_blod;
  1699. ref = "/root/main/blod/item"
  1700. } if (prcptype == "P") {
  1701. obj = grd_proc;
  1702. ref = "/root/main/proc/item"
  1703. }
  1704. // 현재일시
  1705. currentdate = getCurrentDate() + getCurrentTime();
  1706. model.setValue("/root/send/reqdata/currentdate", currentdate);
  1707. var savedata ="status▦instcd▦prcptype▦prcpcd▦sortno▦currentdate▩";
  1708. var dataString = "";
  1709. var status = "u";
  1710. var sortno = 0;
  1711. for (var i=1 ; i <= obj.rows ; i++) {
  1712. prcptype = model.getValue(ref +"["+ i +"]/prcptype");
  1713. var prcpcd = model.getValue(ref +"["+ i +"]/prcpcd");
  1714. sortno = sortno + 1;
  1715. dataString = dataString + status + "▦" + instcd + "▦" + prcptype + "▦" + prcpcd + "▦" + sortno + "▦" + currentdate + "▩";
  1716. }
  1717. if (dataString.length > 0 ) {
  1718. model.setValue("/root/send/savedata", savedata + dataString);
  1719. submit("TXMMR04209","","/root/send/savedata",ref);
  1720. }
  1721. }
  1722. /**
  1723. * @desc : 시간기록 마스터항목 순서 SAVE
  1724. * @
  1725. * @param :
  1726. * @return :
  1727. * @authur : 2009.02.05. 이은영
  1728. * @---------------------------------------------------
  1729. */
  1730. function fSaveTimeRecSortNo(){
  1731. // 현재일시
  1732. currentdate = getCurrentDate() + getCurrentTime();
  1733. var savedata ="status▦instcd▦tmreccd▦sortno▦currentdate▩";
  1734. var dataString = "";
  1735. var ref = "/root/main/timerec/item";
  1736. var dataCnt = getNodesetCnt(model, ref);
  1737. var sortno = 0;
  1738. var status = "u";
  1739. for (var i=1 ; i <= dataCnt ; i++) {
  1740. var tmreccd = model.getValue(ref +"[" + i + "]/tmreccd")
  1741. sortno = sortno + 1;
  1742. dataString = dataString + status + "▦" + instcd + "▦" + tmreccd + "▦" + sortno + "▦" + currentdate + "▩";
  1743. }
  1744. if (dataString.length > 0 ) {
  1745. model.setValue("/root/send/savedata", savedata + dataString);
  1746. submit("TXMMR04212","","/root/send/savedata", ref);
  1747. }
  1748. }
  1749. /**
  1750. * @desc : 마취 시간기록 마스터항목 저장/삭제
  1751. * @
  1752. * @param :
  1753. * @return :
  1754. * @---------------------------------------------------
  1755. */
  1756. function fSaveTimeRec(status)
  1757. {
  1758. var obj = grd_timerec;
  1759. var ref = "/root/main/timerec/item";
  1760. var savedata = "status▦tmreccd▦tmrecnm▦memo▦sortno▦instcd▦currentdate▩";
  1761. var dataString = "";
  1762. for (var i=1 ; i <= obj.rows ; i++) {
  1763. var checked = model.getValue(ref +"["+ i +"]/checked");
  1764. if (checked == "true") {
  1765. var tmreccd = model.getValue(ref +"["+ i +"]/tmreccd");
  1766. var tmrecnm = model.getValue(ref +"["+ i +"]/tmrecnm");
  1767. var memo = model.getValue(ref +"["+ i +"]/memo");
  1768. if (tmreccd == "") {
  1769. status = "i";
  1770. }
  1771. dataString = dataString + status + "▦" + tmreccd + "▦" + tmrecnm + "▦" + memo + "▦";
  1772. dataString = dataString + i + "▦" + instcd + "▦" + currentdate + "▩";
  1773. }
  1774. }
  1775. if (dataString.length > 0 ) {
  1776. model.setValue("/root/send/savedata", savedata + dataString);
  1777. submit("TXMMR04211");
  1778. }
  1779. }
  1780. /**
  1781. * @desc : 마취처방 SET 급여구분 수정
  1782. * @
  1783. * @param :
  1784. * @return :
  1785. * @---------------------------------------------------
  1786. */
  1787. function fPayflagcdSet()
  1788. {
  1789. var currow = grd_prcpset.row;
  1790. var prcpcd = model.getValue("/root/main/prcpsetitem/item[" + currow + "]/prcpcd");
  1791. var payflagcd = model.getValue("/root/main/prcpsetitem/item[" + currow + "]/payflagcd");
  1792. var prcpclscdno = model.getValue("/root/main/prcpsetitem/item[" + currow + "]/prcpclscdno");
  1793. var earnclscd = model.getValue ( "/root/initsrch/earnclsauto[earnclsflag='1' and earnclscd='" + prcpclscdno + "']/earnclscd" );
  1794. if ( !isNull(earnclscd) && payflagcd == "1" ) {
  1795. messageBox ( "영상MRI 및 핵의학 PET CT, MRI는 급여구분이 '급여/일반'만", "I006" );
  1796. for ( var i = 1; i < grd_prcpset.rows; i++) {
  1797. if ( model.getValue("/root/hidden/prcpsetitem/item[" + i + "]/prcpcd") == prcpcd ) {
  1798. model.setValue ("/root/main/prcpsetitem/item[" + currow + "]/payflagcd", model.getValue("/root/hidden/prcpsetitem/item[" + i + "]/payflagcd") );
  1799. break;
  1800. }
  1801. }
  1802. } else {
  1803. model.setValue ("/root/main/prcpsetitem/item[" + currow + "]/payflagcd", payflagcd );
  1804. for ( var i = 1; i < grd_prcpset.rows; i++) {
  1805. if ( model.getValue("/root/hidden/prcpsetitem/item[" + i + "]/prcpcd") == prcpcd ) {
  1806. model.setValue ("/root/hidden/prcpsetitem/item[" + i + "]/payflagcd", payflagcd );
  1807. break;
  1808. }
  1809. }
  1810. }
  1811. }
  1812. /**
  1813. * @---------------------------------------------------
  1814. * @creat : 20110418
  1815. * @author : 최원돈
  1816. * @desc : CDIS검사항목을 셋팅한다.
  1817. * @---------------------------------------------------
  1818. */
  1819. function setCdis(ps_cancelyn, ps_nmspec, ps_cdistestcd)
  1820. {
  1821. var iRow = grd_vsmast.row - grd_vsmast.fixedRows + 1;
  1822. if (ps_cancelyn == "N")
  1823. {
  1824. if (model.getValue("/root/temp/cdiscallgridyn") == "Y") // Grid에서 Popup Call
  1825. {
  1826. grd_vsmast.valueMatrix(iRow, grd_vsmast.colRef("nmspec")) = ps_nmspec;
  1827. grd_vsmast.valueMatrix(iRow, grd_vsmast.colRef("cdistestcd")) = ps_cdistestcd;
  1828. }
  1829. else // 등록 부분에서 Popup Call
  1830. {
  1831. model.setValue("/root/send/vsinfo/nmspec", ps_nmspec);
  1832. model.setValue("/root/send/vsinfo/cdistestcd", ps_cdistestcd);
  1833. }
  1834. model.setValue("/root/main/vsmast/item[" + iRow + "]/checked", "true");
  1835. }
  1836. }
  1837. /**
  1838. * @desc : 마취 Progress Note 저장/삭제
  1839. * @
  1840. * @param :
  1841. * @return :
  1842. * @---------------------------------------------------
  1843. */
  1844. function fSaveProgressNote(status)
  1845. {
  1846. var prognoteCnt = getNodesetCnt(model, "/root/main/prognote/dhrcdlist[trgtcdnm = '']");
  1847. if( prognoteCnt > 0 ){
  1848. messageBox("Progress Note 명칭을 " , "C001");
  1849. return;
  1850. }
  1851. model.makeValue("/root/send/savedata/dhrcdlist", grd_prognote.getUpdateData());
  1852. if ( submit("TXMMB08402") ) {
  1853. fProgNoteInfo();
  1854. messageBox("저장되었습니다. \n설정값은 다시 로그인 하여야 적용 됩니다.", "I");
  1855. }
  1856. }
  1857. function fProgNoteInfo(){
  1858. // 시간기록항목 마스터 조회
  1859. model.makeValue("/root/send/reqdata/userid", getUserInfo("userid"));
  1860. model.makeValue("/root/send/reqdata/deptcd", getUserInfo("dutplcecd"));
  1861. model.makeValue("/root/send/reqdata/hardcdno", sHardCdNo);
  1862. if (submit("TRMMB08402")){
  1863. model.resetInstanceNode("/root/main/prognote/dhrcdlist");
  1864. copyNodesetType("/root/main/prognote/dhrcdlist", "/root/temp2/recv/dhrcdlist", "replace", model, model);
  1865. grd_prognote.clearStatus();
  1866. model.removeNodeset("/root/temp2/recv");
  1867. model.refresh();
  1868. }
  1869. }