SMAER00800.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 약속SET관리 ( SMAER00800_결과조회.xrw - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  7. */
  8. var sPRMSPRCPSETLIST = "/root/main/prmsprcpsetinfo/prmsprcpsetlist";
  9. var sPRMSPRCPSETLIST_HIDDEN = "/root/hidden/prmsprcpsetinfo/prmsprcpsetlist";
  10. var sETCPRMSPRCPSETDETLLIST = "/root/main/etcprmsprcpsetdetlinfo/etcprmsprcpsetdetllist";
  11. var sPRMSPRCPSETLIST_TMP = "/root/hidden/etcprmsprcpsettmp/etcprmsprcpsetlist";
  12. var sDIAGHISTINFO = "/root/hidden/diaghistinfo/diaghist";
  13. /**
  14. * @desc : 처방 TreeView변경(TAB버튼 클릭Event)
  15. * @
  16. * @param :
  17. * @return :
  18. * @---------------------------------------------------
  19. */
  20. function fChngSetTreeView(setflag){
  21. //약속SET 처방/진단/수술 TAB버튼 클릭시, Radio선택값을 default로 개인 설정, 부서선택 콤보박스 disabled
  22. caption2.attribute("visibility") = "visible";
  23. caption3.attribute("visibility") = "hidden";
  24. caption7.attribute("visibility") = "hidden";
  25. cmb_deptset.disabled = true;
  26. model.setValue("/root/main/cond/prmsflag", "P");
  27. if(setflag == "prmsdiag"){
  28. fReqSetTreeView("P", "D", "D");
  29. model.setValue("/root/main/cond/settypecd", "D");
  30. iviewer1.src="SMMMB00800_약속진단관리.xrw";
  31. model.toggle("prmscomn");
  32. }else if(setflag == "prmsprcp"){
  33. fReqSetTreeView("P", "D", "P");
  34. model.setValue("/root/main/cond/settypecd", "P");
  35. // iviewer1.src="SMMMB00200_약속처방SET관리.xrw";
  36. iviewer1.src="SPAER00804_처방SET관리.xrw";
  37. model.toggle("prmscomn");
  38. }else if(setflag == "prmsop"){
  39. fReqSetTreeView("P", "D", "O");
  40. model.setValue("/root/main/cond/settypecd", "O");
  41. iviewer1.src="SMMMB00700_약속수술관리.xrw";
  42. model.toggle("prmscomn");
  43. }else if(setflag == "protocol"){
  44. //프로토콜처방은 부서(D)만 있으며, 약속처방SET과 동일한 iviewer화면 사용한다.
  45. fReqSetTreeView("D", "D", "C");
  46. model.setValue("/root/main/cond/settypecd", "C");
  47. iviewer1.src="SMMMB00200_약속처방SET관리.xrw";
  48. model.toggle("protocol");
  49. }
  50. //SET폴더명 지운 후, treeview의 node path의 ref를 해체(TF 버그,추후 수정)
  51. model.setValue("/root/main/cond/foldernm", "");
  52. model.setValue(trv_prmsprcpsetlist.attribute("ref"), "");
  53. trv_prmsprcpsetlist.rebuild();
  54. }
  55. /**
  56. * @desc : 마우스 오른쪽 버튼 팝업창
  57. * @
  58. * @param :
  59. * @return :
  60. * @---------------------------------------------------
  61. */
  62. function fMouseRghtBtnPopup(){
  63. if(fChkValidMouseBtn() != true){return;}
  64. if(event.button == 3){
  65. if(trv_prmsprcpsetlist.isCell(event.target) && trv_prmsprcpsetlist.focusIndex > -1)
  66. window.setPopupMenu(true, "/root/hidden/menu/menu", "label", "func", false); //팝업창 셋팅
  67. }else{
  68. window.setPopupMenu(false);
  69. }
  70. }
  71. /**
  72. * @desc : 새폴더 추가
  73. * @
  74. * @param :
  75. * @return :
  76. * @---------------------------------------------------
  77. */
  78. function fAddPrmsDiagSet(){
  79. var item = trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.selectedIndex);
  80. var rowPos = item.index + 1;
  81. if(fSetPrmsDiagInfo(rowPos, "i")!=-1){
  82. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/status", "i");
  83. model.refresh();
  84. fShowWndIptBox();
  85. }
  86. }
  87. /**
  88. * @desc : 폴더 삭제
  89. * @
  90. * @param :
  91. * @return :
  92. * @---------------------------------------------------
  93. */
  94. function fDelPrmsDiagSet(){
  95. var item = trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.selectedIndex);
  96. var rowPos = item.index + 1;
  97. if(fSetPrmsDiagInfo(rowPos, "d")!= -1){
  98. fSavePrmsDiagSet();
  99. }
  100. iviewer1.window.javascript.fClrGridData();
  101. }
  102. /**
  103. * @desc : 폴더 수정
  104. * @
  105. * @param :
  106. * @return :
  107. * @---------------------------------------------------
  108. */
  109. function fUpdtPrmsDiagSet(){
  110. var item = trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.selectedIndex);
  111. var rowPos = item.index + 1;
  112. if(fSetPrmsDiagInfo(rowPos, "u")!=-1){
  113. fShowWndIptBox();
  114. }
  115. }
  116. /**
  117. * @desc : 약속진단 SET저장
  118. * @
  119. * @param :
  120. * @return :
  121. * @---------------------------------------------------
  122. */
  123. function fSavePrmsDiagSet(){
  124. var setnm = model.getValue("/root/main/iptbox/setnm");
  125. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setnm", setnm);
  126. model.copyNode("/root/send/savedata", sPRMSPRCPSETLIST_HIDDEN);
  127. if(submit("TXMMB00601")){
  128. model.setValue(trv_prmsprcpsetlist.attribute("ref"), "");
  129. trv_prmsprcpsetlist.rebuild();
  130. }
  131. }
  132. /**
  133. * @desc : 약속진단관리 폴더명을 입력할 InputBox를 보여줌.
  134. * @
  135. * @param :
  136. * @return :
  137. * @---------------------------------------------------
  138. */
  139. function fShowWndIptBox(){
  140. group1.attribute("top") = event.clientY;
  141. group1.attribute("height") = 55;
  142. model.setFocus("ipt_setnm");
  143. model.refresh();
  144. }
  145. /**
  146. * @desc : 약속진단 SET정보 SETTING
  147. * @
  148. * @param :
  149. * @return :
  150. * @---------------------------------------------------
  151. */
  152. function fSetPrmsDiagInfo(rowpos, status){
  153. var setno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setno");
  154. var settypecd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/settypecd");
  155. if(status == "u" && setno == 1){
  156. messageBox("선택한 폴더는 수정", "E001");
  157. return -1;
  158. }else if(status == "d" && setno == 1){
  159. messageBox("선택한 폴더는 삭제", "E001");
  160. return -1;
  161. }else if(settypecd == "E"){
  162. messageBox("선택한 폴더는 사용", "E001");
  163. return -1;
  164. }
  165. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  166. var supsetno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/supsetno");
  167. var setkindcd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setkindcd");
  168. var setclscd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setclscd");
  169. var settrgtcd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/settrgtcd");
  170. var settypecd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/settypecd");
  171. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  172. var sortno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/sortno");
  173. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/levl" , levl);
  174. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setno" , setno);
  175. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setkindcd", setkindcd);
  176. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setclscd" , setclscd);
  177. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/settrgtcd", settrgtcd);
  178. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/settypecd", settypecd);
  179. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/status" , status);
  180. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/setnm" , setnm);
  181. if(status == "i"){
  182. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/supsetno" , setno);
  183. }else{
  184. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/supsetno" , supsetno);
  185. }
  186. if(sortno == "")
  187. sortno = 1000;
  188. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/sortno" , sortno);
  189. model.refresh();
  190. }
  191. /**
  192. * @desc : 약속진단SET Drag
  193. * @
  194. * @param :
  195. * @return :
  196. * @---------------------------------------------------
  197. */
  198. function fPrmsDiagSetDrag(){
  199. if(fChkValidMouseBtn() != true){
  200. return;
  201. }
  202. var item = trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.selectedIndex);
  203. var rowpos = item.index + 1;
  204. fSetPrmsDiagInfo(rowpos, "u");
  205. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  206. model.setValue("/root/main/iptbox/setnm", setnm);
  207. model.refresh();
  208. }
  209. /**
  210. * @desc : 약속진단SET Drop
  211. * @
  212. * @param :
  213. * @return :
  214. * @---------------------------------------------------
  215. */
  216. function fPrmsDiagSetDrop(){
  217. if(fChkValidMouseBtn() != true){
  218. return;
  219. }
  220. var rowpos = trv_prmsprcpsetlist.mouseRow + 1;
  221. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  222. var setno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setno");
  223. var supsetno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/supsetno");
  224. var cmplevl = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/levl");
  225. var cmpsetno = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/setno");
  226. var cmpsupsetno = model.getValue(sPRMSPRCPSETLIST_HIDDEN + "/supsetno");
  227. if(setno == cmpsetno){
  228. //messageBox("동일한 위치로 이동", "E001");
  229. trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.mouseRow).attribute("background-color") = "#ffffff";
  230. trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.mouseRow).attribute("text-decoration") = "";
  231. return;
  232. }else if(setno == cmpsupsetno){
  233. trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.mouseRow).attribute("background-color") = "#ffffff";
  234. trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.mouseRow).attribute("text-decoration") = "";
  235. //messageBox("지정된 위치로 이동", "E001");
  236. return;
  237. }
  238. //이동하는 SET폴더의 depth가 도착하는 곳보다 낮은 레벨일 경우,
  239. //자신의 child node 아래로 이동하는 것을 방지함.
  240. if(cmplevl < levl){
  241. var rootlevl;
  242. var rootsetno;
  243. while(cmplevl != rootlevl){
  244. rootlevl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  245. rootsetno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setno");
  246. rowpos--;
  247. }
  248. if(rootsetno == cmpsetno){
  249. //messageBox("지정된 위치로 이동", "E001");
  250. return;
  251. }
  252. }
  253. model.setValue(sPRMSPRCPSETLIST_HIDDEN + "/supsetno" , setno);
  254. model.refresh();
  255. fSavePrmsDiagSet();
  256. }
  257. /**
  258. * @desc : 약속SET상세 조회
  259. * @
  260. * @param :
  261. * @return :
  262. * @---------------------------------------------------
  263. */
  264. function fReqPrmsDetlSet(){
  265. var item = trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.selectedIndex);
  266. var rowpos = item.index + 1;
  267. var setno = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setno");
  268. var settypecd = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/settypecd");
  269. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  270. iviewer1.model.setValue("/root/hidden/prmsprcpsetdetlset/setno" , setno);
  271. iviewer1.model.setValue("/root/hidden/prmsprcpsetdetlset/settypecd", settypecd);
  272. iviewer1.model.setValue("/root/hidden/prmsprcpsetdetlset/setnm", setnm);
  273. iviewer1.model.refresh();
  274. iviewer1.window.javascript.fReqGetPrmsSet();
  275. }
  276. /**
  277. * @desc : Mouse Drag Drop
  278. * @
  279. * @param :
  280. * @return : void
  281. * @authur : 오지훈 2007. 4. 24
  282. * @---------------------------------------------------
  283. */
  284. function fOndrop(){
  285. if(fChkValidMouseBtn() != true){
  286. return;
  287. }
  288. var rowpos = trv_prmsprcpsetlist.mouseRow + 1;
  289. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  290. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  291. var x = event.clientX;
  292. var maxposX = 24 + 16 * (levl - 1) + ( 13 * setnm.length);
  293. var minposX = 24 + 16 * (levl - 1);
  294. if(maxposX > x){
  295. fPrmsDiagSetDrop();
  296. }else{
  297. return;
  298. }
  299. }
  300. /**
  301. * @desc : Mouse Drag Over
  302. * @
  303. * @param :
  304. * @return : void
  305. * @authur : 오지훈 2007. 4. 24
  306. * @---------------------------------------------------
  307. */
  308. function fMouseOver(){
  309. if(fChkValidMouseBtn() != true){
  310. return;
  311. }
  312. var rowpos = trv_prmsprcpsetlist.mouseRow + 1;
  313. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  314. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  315. var x = event.clientX;
  316. var maxposX = 24 + 16 * (levl - 1) + ( 10 * setnm.length);
  317. var minposX = 24 + 16 * (levl - 1);
  318. if(maxposX > x){
  319. for ( var i = 0; i < trv_prmsprcpsetlist.length; i++ ) {
  320. trv_prmsprcpsetlist.item(i).attribute("background-color") = "#ffffff";
  321. trv_prmsprcpsetlist.item(i).attribute("text-decoration") = "";
  322. }
  323. trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.mouseRow).attribute("background-color") = "#ece1ec";
  324. trv_prmsprcpsetlist.item(trv_prmsprcpsetlist.mouseRow).attribute("text-decoration") = "underline";
  325. }
  326. }
  327. /**
  328. * @desc : 폴더명 검색할 경우 검색한 위치로 focus를 이동한다.
  329. * @
  330. * @param :
  331. * @return : void
  332. * @authur : 오지훈 2007. 4. 24
  333. * @---------------------------------------------------
  334. */
  335. function fSrchFolderNM(){
  336. var foldernm = model.getValue("/root/main/cond/foldernm");
  337. for(var i=1; i <= trv_prmsprcpsetlist.length; i++){
  338. var setnm = model.getValue("/root/main/prmsprcpsetinfo/prmsprcpsetlist[" + i + "]/setnm");
  339. if(setnm == foldernm){
  340. break;
  341. }
  342. }
  343. trv_prmsprcpsetlist.select(i-1);
  344. trv_prmsprcpsetlist.rebuild();
  345. }
  346. /**
  347. * @desc : TreeView에 Drag상태로 Mouse over된 경우 item의 background color를 clear함
  348. * @
  349. * @param :
  350. * @return : void
  351. * @authur : 오지훈 2007. 4. 24
  352. * @---------------------------------------------------
  353. */
  354. function fOnDragMouseOver(){
  355. if(fChkValidMouseBtn() != true){
  356. return;
  357. }
  358. var treeObj = document.controls.item(event.currentTarget);
  359. var rowpos = trv_prmsprcpsetlist.mouseRow + 1;
  360. var levl = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/levl");
  361. var setnm = model.getValue(sPRMSPRCPSETLIST + "[" + rowpos + "]/setnm");
  362. var x = event.clientX;
  363. var maxposX = 24 + 16 * (levl - 1) + ( 10 * setnm.length);
  364. var minposX = 24 + 16 * (levl - 1);
  365. if(maxposX > x){
  366. if( trv_prmsprcpsetlist.selectedIndex != treeObj.mouseRow ) {
  367. for ( var i = 0; i < treeObj.length; i++ ) {
  368. treeObj.item(i).attribute("background-color") = "#ffffff";
  369. }
  370. treeObj.item(treeObj.mouseRow).attribute("background-color") = "#ece1ec";
  371. }
  372. }
  373. }
  374. /**
  375. * @desc : 약속처방 SET의 처방 복사
  376. * @
  377. * @param :
  378. * @return : void
  379. * @authur : 오지훈 2007. 4. 24
  380. * @---------------------------------------------------
  381. */
  382. function fPasteCD() {
  383. if ( btn_prcp.selected ) {
  384. iviewer1.window.javascript.fPasteRow();
  385. } else if( btn_diag.selected ) {
  386. iviewer1.window.javascript.fPasteDiagCD();
  387. } else if( btn_op.selected ) {
  388. iviewer1.window.javascript.fPasteOpCD();
  389. }
  390. }
  391. /**
  392. * @desc : 마우스 버튼 클릭 유효성 검사
  393. * : 조건1 - 콤보박스 전체 선택인 경우 불가
  394. * @
  395. * @param :
  396. * @return : true / false
  397. * @authur : 오지훈 2007. 4. 24
  398. * @---------------------------------------------------
  399. */
  400. function fChkValidMouseBtn(){
  401. var prmsflag = model.getValue("/root/main/cond/prmsflag");
  402. if(prmsflag == "T")
  403. return false;
  404. else
  405. return true;
  406. }
  407. /**
  408. * @desc : Radio 값 변경 처리
  409. * @
  410. * @param :
  411. * @return : true / false
  412. * @authur : 오지훈 2007. 4. 24
  413. * @---------------------------------------------------
  414. */
  415. function fChngRadioBtnVal(){
  416. iviewer1.model.removeNodeset("/root/main/etcprmsprcpsetdetlinfo/etcprmsprcpsetdetllist");
  417. iviewer1.model.refresh();
  418. var prmsflag = model.getValue("/root/main/cond/prmsflag");
  419. var settypecd = model.getValue("/root/main/cond/settypecd");
  420. if(prmsflag == "P"){
  421. //Radio버튼 개인 선택시, 부서코드 콤보 disabled, 약속처방SET 조회
  422. cmb_deptset.disabled = true;
  423. caption2.attribute("visibility") = "visible";
  424. caption3.attribute("visibility") = "hidden";
  425. caption7.attribute("visibility") = "hidden";
  426. fReqSetTreeView("P", "D", settypecd);
  427. iviewer1.window.javascript.fSetBtnDisabled(false);
  428. }else if(prmsflag == "D"){
  429. //Radio버튼 과 선택시, 부서코드 콤보 disabled, 과별 약속처방SET 조회
  430. cmb_deptset.disabled = true;
  431. caption2.attribute("visibility") = "hidden";
  432. caption3.attribute("visibility") = "visible";
  433. caption7.attribute("visibility") = "hidden";
  434. fReqSetTreeView("D", "D", settypecd);
  435. iviewer1.window.javascript.fSetBtnDisabled(false);
  436. }else if(prmsflag == "T"){
  437. //Radio버튼 타과 선택시, 부서코드 콤보 enabled, 약속SET별 부서조회, 현재 조회된 약속SET 삭제
  438. cmb_deptset.disabled = false;
  439. caption2.attribute("visibility") = "hidden";
  440. caption3.attribute("visibility") = "hidden";
  441. caption7.attribute("visibility") = "visible";
  442. model.removeNodeset("/root/main/prmsprcpsetinfo/prmsprcpsetlist");
  443. fReqPrmsSetDept("D", "D", settypecd);
  444. model.setValue("/root/main/cond/deptsetcd", "-");
  445. iviewer1.window.javascript.fSetBtnDisabled(true);
  446. }
  447. //SET폴더명 지운 후, treeview의 node path의 ref를 해체(TF 버그,추후 수정)
  448. model.setValue("/root/main/cond/foldernm", "");
  449. model.setValue(trv_prmsprcpsetlist.attribute("ref"), "");
  450. trv_prmsprcpsetlist.rebuild();
  451. model.refresh();
  452. }
  453. /**
  454. * @desc : 부서코드 콤보 변경 처리
  455. * @
  456. * @param :
  457. * @return : true / false
  458. * @authur : 오지훈 2007. 6. 27
  459. * @---------------------------------------------------
  460. */
  461. function fChngDeptCombo(){
  462. var deptcd = model.getValue("/root/main/prmsprcp/cond/deptcd");
  463. if(deptcd != "-"){
  464. fReqSetTreeView("D", "D", "P", "D", deptcd, cmb_deptset.label);
  465. }
  466. }
  467. /**
  468. * @desc : 약속SET 처방/진단/수술/프로토콜 조회
  469. * @
  470. * @param : setkindcd - SET종류코드(개인P/부서D)
  471. * : setclscd - SET분류코드(의사D)
  472. * : settypecd - SET분류코드(처방P/진단D/수술O/프로토콜C)
  473. * : procflag - 처리구분(부서SET:D)
  474. * : deptcd - 부서코드
  475. * : deptnm - 부서명
  476. * @return :
  477. * @authur : 오지훈 2007. 6. 27
  478. * @---------------------------------------------------
  479. */
  480. function fReqSetTreeView(setkindcd, setclscd, settypecd, procflag, deptcd, deptnm){
  481. model.removeNodeset("/root/send/reqdata");
  482. model.makeValue("/root/send/reqdata/setkindcd", setkindcd); //개인, 부서
  483. model.makeValue("/root/send/reqdata/setclscd" , setclscd); //의사
  484. model.makeValue("/root/send/reqdata/settypecd", settypecd); //처방, 진단, 수술, 프로토콜
  485. model.makeValue("/root/send/reqdata/procflag" , procflag); //처리구분(부서SET 조회시 설정)
  486. model.makeValue("/root/send/reqdata/deptcd" , deptcd); //부서코드(부서SET 조회시 설정)
  487. model.makeValue("/root/send/reqdata/deptnm" , deptnm); //부서명 (부서SET 조회시 설정)
  488. submit("TRMMB00601");
  489. }
  490. /**
  491. * @desc : 약속SET 처방/진단/수술 부서 조회
  492. * : 처방/진단/수술 약속SET을 등록한 부서를 조회한다.
  493. *
  494. * @param : setkindcd - SET종류코드(개인P/부서D)
  495. * : setclscd - SET분류코드(의사D)
  496. * : settypecd - SET분류코드(처방P/진단D/수술O/프로토콜C)
  497. *
  498. * @return :
  499. * @authur : 오지훈 2007. 6. 27
  500. * @---------------------------------------------------
  501. */
  502. function fReqPrmsSetDept(setkindcd, setclscd, settypecd){
  503. model.removeNodeset("/root/send/reqdata");
  504. model.makeValue("/root/send/reqdata/setkindcd", setkindcd); //개인, 부서
  505. model.makeValue("/root/send/reqdata/setclscd" , setclscd ); //의사
  506. model.makeValue("/root/send/reqdata/settypecd", settypecd); //처방, 진단, 수술, 프로토콜
  507. submit("TRMMB00604");
  508. }
  509. /**
  510. * @desc : 타과 부서 약속SET 조회(타과Combo 선택 Event)
  511. * @
  512. * @param :
  513. * @return :
  514. * @authur : 오지훈 2007. 6. 27
  515. * @---------------------------------------------------
  516. */
  517. function fSelectDeptCmb(){
  518. var deptcd = model.getValue("/root/main/cond/deptsetcd");
  519. var settypecd = model.getValue("/root/main/cond/settypecd");
  520. fReqSetTreeView("D", "D", settypecd, "D", deptcd, cmb_deptset.label);
  521. }
  522. /**
  523. * @desc : 통합결과조회
  524. * @
  525. * @param :
  526. * @return :
  527. * @authur : 김건기 2009.07.14
  528. * @---------------------------------------------------
  529. */
  530. function fGetSytsRsltRefList(chkcheck, srchflag){
  531. model.SetValue("/root/send/data/singdata/chkcheck", chkcheck);
  532. // 분류별
  533. if (srchflag == "B") {
  534. btn_case1.selected = true;
  535. model.toggle("case1");
  536. if (chkcheck == "A") {
  537. datagrid2.visible = false;
  538. grp_makedset.visible = false;
  539. grd_subresultdetail1.visible = false;
  540. grd_subresultdetail2.visible = true;
  541. } else {
  542. datagrid2.visible = false;
  543. grp_makedset.visible = false;
  544. grd_subresultdetail2.visible = false;
  545. grd_subresultdetail1.visible = true;
  546. }
  547. fGetWideListX1(switch1, grd_maindaily);
  548. // 조건 체크
  549. var check = fGetMainListCondiCheck_Case1();
  550. if ( check == "0" ) return true;
  551. if ( model.getValue("/root/send/data/singdata/chkcheck") == "ALL" ) {
  552. fcheckyn();
  553. }
  554. // Grid 초기화
  555. fInitGrid();
  556. // Progress Start
  557. openLoadingBar();
  558. // 환자정보
  559. fGetMainSrchPatInfo();
  560. model.setValue("/root/send/data/singdata/srchflag", srchflag);
  561. submit("TRAER00830",false);
  562. model.makeNode("/root/main/patinfo/patinfolist");
  563. copyNodesetType("/root/main/patinfo/patinfolist", "/root/hidden/patinfo/patinfolist" , "replace");
  564. //model.refresh();
  565. var srchLength1 = model.instances(0).selectNodes( "/root/main/ordlist1/maindailylist" ).length;
  566. // 일자별 전체조회일경우만 기준일자 조회
  567. if ( srchLength1 > 0 ) {
  568. var orddd = model.getValue("/root/main/baseorddd/initorddd/orddd");
  569. var gubun = model.getValue("/root/main/baseorddd/initorddd/gubun");
  570. var srchLength1 = model.instances(0).selectNodes( "/root/main/ordlist1/maindailylist" ).length;
  571. // Grid Background Color Clear
  572. for ( var i = 1; i <= srchLength1; i++ ) {
  573. grd_maindaily.rowstyle( i , "data" , "background-color" ) = "#ffffff";
  574. }
  575. for ( var i = 1; i <= srchLength1; i++ ) {
  576. // 전자서명번호가 존재하면 색상을 변경한다. 즉, 사본출력가능한 처방이면서 원래 서식모양으로 보여주기 위해, 20080214
  577. if ( model.getValue("/root/main/ordlist1/maindailylist[" + i + "]/signno") == "") {
  578. var signno = 0;
  579. }else {
  580. var signno = parseInt(model.getValue("/root/main/ordlist1/maindailylist[" + i + "]/signno"));
  581. }
  582. if ( signno > 0 ) {
  583. grd_maindaily.rowstyle( i , "data" , "background-color" ) = "#b9e5fb";
  584. }
  585. }
  586. // 1. execprcpuniqno가 0이 아니면서(검사/치료만적용)
  587. // 2. Signno가 동일 값이면
  588. // => 다중처방 단일서식이기에 결과내역은 한 건만 조회되게 한다.
  589. var flag = "N";
  590. for ( var i = 1; i <= srchLength1; i++ ) {
  591. var execprcpuniqno = model.getValue("/root/main/ordlist1/maindailylist[" + i + "]/execprcpuniqno");
  592. var signno = model.getValue("/root/main/ordlist1/maindailylist[" + i + "]/signno");
  593. if ( execprcpuniqno != "0" && signno != "0" && signno != "" ) {
  594. for ( var j = 1; j <= srchLength1; j++ ) {
  595. var vsignno = model.getValue("/root/main/ordlist1/maindailylist[" + j + "]/signno");
  596. if ( i != j && signno == vsignno ) {
  597. // 다중 처방이면서 단일서식 결과가 존재합니다
  598. model.setValue("/root/main/ordlist1/maindailylist[" + j + "]/check", "N");
  599. flag = "Y";
  600. }
  601. }
  602. }
  603. if ( flag == "Y" ) break;
  604. }
  605. model.refresh();
  606. // 기본설정 기능으로 결과상세조회할 지 의 여부를 판단한다. 20090109
  607. fGetResultContinueListInit1();
  608. // 날짜별 정렬
  609. fSort();
  610. } else {
  611. model.refresh();
  612. }
  613. // Progress End
  614. closeLoadingBar();
  615. // 그룹별
  616. } else if (srchflag == "G") {
  617. btn_case5.selected = true;
  618. model.toggle("case5");
  619. if (chkcheck == "A") {
  620. datagrid2.visible = false;
  621. grp_makedset.visible = false;
  622. grd_subresultdetail1.visible = false;
  623. grd_subresultdetail2.visible = true;
  624. } else {
  625. datagrid2.visible = false;
  626. grp_makedset.visible = false;
  627. grd_subresultdetail2.visible = false;
  628. grd_subresultdetail1.visible = true;
  629. }
  630. fGetWideListX1(switch1, grd_maindaily);
  631. // 조건 체크
  632. var check = fGetMainListCondiCheck_Case1();
  633. if ( check == "0" ) return true;
  634. if ( model.getValue("/root/send/data/singdata/chkcheck") == "ALL" ) {
  635. fcheckyn();
  636. }
  637. // Grid 초기화
  638. fInitGrid();
  639. // Progress Start
  640. openLoadingBar();
  641. // 환자정보
  642. fGetMainSrchPatInfo();
  643. model.setValue("/root/send/data/singdata/srchflag", srchflag);
  644. submit("TRAER00830",false);
  645. model.makeNode("/root/main/patinfo/patinfolist");
  646. copyNodesetType("/root/main/patinfo/patinfolist", "/root/hidden/patinfo/patinfolist" , "replace");
  647. var srchLength1 = model.instances(0).selectNodes( "/root/main/ordlist1/maindailylist" ).length;
  648. var cnt = 0;
  649. // 일자별 전체조회일경우만 기준일자 조회
  650. if ( srchLength1 > 0 ) {
  651. var orddd = model.getValue("/root/main/baseorddd/initorddd/orddd");
  652. var gubun = model.getValue("/root/main/baseorddd/initorddd/gubun");
  653. var srchLength1 = model.instances(0).selectNodes( "/root/main/ordlist1/maindailylist" ).length;
  654. // Grid Background Color Clear
  655. for ( var i = 1; i <= srchLength1; i++ ) {
  656. datagrid1.rowstyle( i , "data" , "background-color" ) = "#ffffff";
  657. }
  658. // 전자서명번호가 존재하면 색상을 변경한다. 즉, 사본출력가능한 처방이면서 원래 서식모양으로 보여주기 위해, 20080214
  659. for ( var i = 1; i <= srchLength1; i++ ) {
  660. if ( model.getValue("/root/main/ordlist1/maindailylist[" + i + "]/signno") == "") {
  661. var signno = 0;
  662. }else {
  663. var signno = parseInt(model.getValue("/root/main/ordlist1/maindailylist[" + i + "]/signno"));
  664. }
  665. if ( signno > 0 ) {
  666. datagrid1.rowstyle( i , "data" , "background-color" ) = "#b9e5fb";
  667. }
  668. }
  669. // 1. execprcpuniqno가 0이 아니면서(검사/치료만적용)
  670. // 2. Signno가 동일 값이면
  671. // => 다중처방 단일서식이기에 결과내역은 한 건만 조회되게 한다.
  672. var flag = "N";
  673. for ( var i = 1; i <= srchLength1; i++ ) {
  674. var execprcpuniqno = model.getValue("/root/main/ordlist1/maindailylist[" + i + "]/execprcpuniqno");
  675. var signno = model.getValue("/root/main/ordlist1/maindailylist[" + i + "]/signno");
  676. //alert(execprcpuniqno);
  677. if ( execprcpuniqno != "0" && signno != "0" && signno != "" ) {
  678. for ( var j = 1; j <= srchLength1; j++ ) {
  679. var vsignno = model.getValue("/root/main/ordlist1/maindailylist[" + j + "]/signno");
  680. //alert('i->' + i + ', j->' + j + ', signno->' + signno + ', vsignno->' + vsignno);
  681. if ( i != j && signno == vsignno ) {
  682. model.setValue("/root/main/ordlist1/maindailylist[" + j + "]/check", "N");
  683. flag = "Y";
  684. }
  685. }
  686. }
  687. if ( flag == "Y" ) break;
  688. }
  689. model.refresh();
  690. // 기본설정 기능으로 결과상세조회할 지 의 여부를 판단한다. 20090109
  691. fGetResultContinueListInit2();
  692. // 날짜별 정렬
  693. fSort2();
  694. } else {
  695. model.refresh();
  696. }
  697. // Progress End
  698. closeLoadingBar();
  699. // SET별
  700. } else if (srchflag == "S") {
  701. // SET전체항목조회 비활성화
  702. grp_makedset.visible = false;
  703. datagrid2.visible = true;
  704. grd_subresultdetail1.visible = false;
  705. model.setValue("/root/send/setdata/setkindcd", "D");
  706. // 진행상태
  707. } else if (srchflag == "P") {
  708. // 조건 체크
  709. var check = fGetMainListCondiCheck_Case4();
  710. if ( check == "0" ) return true;
  711. }
  712. }