SMMMI00100.xjs 31 KB

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