SMMNP01500.xjs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868
  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-09-04
  7. * Description :
  8. *---------------------------------------------------------------------------------------
  9. * Modify Date Modifier Modify Description
  10. *---------------------------------------------------------------------------------------
  11. * 2014-09-04 Live Converter TF->XP
  12. *
  13. *---------------------------------------------------------------------------------------
  14. ****************************************************************************************/
  15. var xPathData = "/root/main/MnpmcartData/MnpmcartList" ; //
  16. var xPathInput = "/root/init/WorkData/InputData" ; //
  17. var tColWidth = "74,90,70,80,121,55,291,30,73,0,0,0,0,0,0,0,0,0,0#" // 집도
  18. + "74,90,70,80,121,55,179,33,70,0,0,0,0,0,0,0,0,0,0" ; // 마취
  19. var tWidth = tColWidth.split("#");
  20. /****************************************************************************************
  21. * Function : fFormInit
  22. * Description : 화면 초기화 실행
  23. * Argument :
  24. * :
  25. * return type :
  26. * Creator :
  27. ****************************************************************************************/
  28. function fFormInit() {
  29. ds_grd_cartlist.clearData();
  30. ds_grd_copyoplist.clearData();
  31. //화면 open시, ICD9색인탭이 기본
  32. /*btn_icd10.selected = true;*/
  33. /*model.toggle("icd9");*/
  34. fReqGetIndxList();
  35. group3.radio1.value = "";
  36. ds_req.clearData();
  37. var rowno = ds_req.addRow();
  38. ds_req.setColumn(rowno, "flag", "X");
  39. ds_req.setColumn(rowno, "searchitem", "XX");
  40. ds_req.setColumn(rowno, "deptflag", "011");
  41. var oParam = {};
  42. oParam.id = "TRMNP01512";
  43. oParam.service = "opanstapp.OpAnstPatMngt";
  44. oParam.method = "reqGetPerfDeptList";
  45. oParam.inds = "req=ds_req";
  46. oParam.outds = "ds_deptlist=deptlist";
  47. oParam.async = false;
  48. oParam.callback = "fn_callback_TRMNP01512";
  49. tranf_submit(oParam);
  50. // frmf_addComboItem("group3.cmb_orddept" , "전 체", "", "above");
  51. // addComboItem("cmb_orddept2" , "전 체", "", "above" );
  52. // removeComboItem("cmb_orddept2" , "전 체", "", "above" );
  53. dsf_addDsItem(ds_init_cmb_orddept , "deptcd", "depthngnm", "전 체", "", "above");
  54. dsf_addDsItem(ds_init_cmb_orddept2, "deptcd", "depthngnm", "전 체", "", "above");
  55. group3.cmb_orddept.index = 0;
  56. group3.cmb_orddept2.index = 0;
  57. grdf_initGrid(group3.grd_cartlist);
  58. // grd_cartlist.fixedcellcheckbox(0,1) = true;
  59. var arrParam = [{dsNm: "ds_M0016", cdGrpId: "M0016"}
  60. ,{dsNm: "ds_M0357", cdGrpId: "M0357"}
  61. ,{dsNm: "ds_M0017", cdGrpId: "M0017"}
  62. ,{dsNm: "ds_M0341", cdGrpId: "M0341"}
  63. ]
  64. appf_getCodeList(arrParam);
  65. // model.makeNode("/root/hidden/updatelist");
  66. var jobkindcd = sysf_getUserInfo("jobkindcd");
  67. var jobcd = jobkindcd.substr(0,2);
  68. if( !utlf_isNull(jobkindcd) && jobcd == "03"){ // 집도과, 집도의, 수술명이 사용유무 정보가 Y인 것 조회
  69. group3.cmb_orddept.value = sysf_getUserInfo("dutplcecd"); // 집도과 정보 셋팅
  70. var ev = new ItemChangeEventInfo;
  71. frmf_inputEnterKey("group3.cmb_orddept", "onitemchanged", ev );
  72. group3.cmb_perf.value = sysf_getUserInfo("userid"); // 집도의 정보 셋팅
  73. group3.radio1.value = "Y"; // 수술명 사용이 Y인 것만 조회
  74. var ev = new ClickEventInfo;
  75. frmf_inputEnterKey("group3.button4", "onclick", ev );
  76. group3.grd_cartlist.setFocus();
  77. }
  78. group3.grp_sea.checkbox1.value = "ALL";
  79. }
  80. /****************************************************************************************
  81. * Function : fReqGetIndxList
  82. * Description : ICD9 INDEX 조회
  83. * Argument :
  84. * :
  85. * return type :
  86. * Creator :
  87. ****************************************************************************************/
  88. function fReqGetIndxList(){
  89. ds_reqdata.clearData();
  90. ds_reqdata.setColumn(ds_reqdata.addRow(),"indxflag","9");
  91. var oParam = {};
  92. oParam.id = "TRMNP01502";
  93. oParam.service = "opanstapp.OpAnstStocMngt";
  94. oParam.method = "reqGetIndxList";
  95. oParam.inds = "reqdata=ds_reqdata";
  96. oParam.outds = "ds_indxcdlist=indxcdlist";
  97. oParam.async = false;
  98. oParam.callback = "cf_TRMNP01502";
  99. tranf_submit(oParam);
  100. }
  101. function cf_TRMNP01502(sSvcId, nErrorCode, sErrorMsg) {
  102. if(nErrorCode < 0) return;
  103. ds_indxcdlist.updateColID("hngnm","indxhngnm");
  104. ds_indxcdlist.updateColID("engnm","indxengnm");
  105. ds_indxcdlist.rowposition = -1;
  106. }
  107. /****************************************************************************************
  108. * Function : fReqGetICD9CDList
  109. * Description : ICD9 용어 조회
  110. * Argument :
  111. * :
  112. * return type :
  113. * Creator :
  114. ****************************************************************************************/
  115. function fReqGetICD9CDList(pFlag){
  116. var indxcd, refopnm, refcond, condflag;
  117. if( ds_indxcdlist.rowposition > -1 ) {
  118. var nRow = ds_indxcdlist.rowposition; //현재 선택된 row
  119. var nLev = ds_indxcdlist.getColumn(nRow, "levl"); //현재 가르키고 있는 레벨 값
  120. //현재 가르키고 있는 값의 자식의 row 구하기
  121. var nLastChildRow = group3.grp_grid.switch1.icd9.trv_icd9indxcdlist.getTreeChildRow(nRow, 0);
  122. sysf_trace("nLastChildRow = "+nLastChildRow);
  123. if(nLastChildRow > -1){ //자식노드가 있을경우->상위index를 클릭한 경우, 조회하지 않는다.
  124. return;
  125. }
  126. indxcd = ds_indxcdlist.getColumn(nRow, "indxcd");
  127. }
  128. if( pFlag == "2" ) {//Tree 조회시
  129. //트리 선택시 검색어 및 전체 검색 초기화
  130. group3.grp_sea.input1.value = "";
  131. group3.grp_sea.checkbox1.value = "";
  132. }else if ( pFlag == "1" ) {//검색조건 조회시 전체 검색
  133. group3.grp_sea.checkbox1.value = "ALL";
  134. }
  135. refopnm = group3.grp_sea.input1.value;
  136. refcond = group3.grp_sea.checkbox1.value;
  137. if( refcond == "empty" ){
  138. refcond = "";
  139. }
  140. trace("refcond : " + refcond);
  141. condflag = utlf_isHangul(refopnm);
  142. if( utlf_isNull(indxcd) ) { indxcd = "0"; }//인덱스 코드가 없으면 0으로 셋팅 맵핑시 인덱스 코드가 없으면 값이 안넘어감.
  143. if( (indxcd == "0")&& utlf_isNull(refopnm) ) {
  144. sysf_messageBox("수술명 검색 조건을 입력하지 ", "E007");
  145. return;
  146. }
  147. ds_reqdata.clearData();
  148. var nRow = ds_reqdata.addRow();
  149. ds_reqdata.setColumn(nRow,"icd9indxcd",indxcd);
  150. ds_reqdata.setColumn(nRow,"refopnm" ,refopnm);
  151. ds_reqdata.setColumn(nRow,"refcond" ,refcond);
  152. ds_reqdata.setColumn(nRow,"condflag" ,condflag);
  153. var oParam = {};
  154. oParam.id = "TRMNP01511";
  155. oParam.service = "opanstapp.OpAnstStocMngt";
  156. oParam.method = "reqGetICD9CdList";
  157. oParam.inds = "reqdata=ds_reqdata";
  158. oParam.outds = "ds_grd_cartlist=diagcdlist";
  159. oParam.async = false;
  160. oParam.callback = "cf_TRMNP01511";
  161. tranf_submit(oParam);
  162. }
  163. function cf_TRMNP01511(sSvcId, nErrorCode, sErrorMsg) {
  164. if(nErrorCode < 0) return;
  165. ds_grd_cartlist.deleteColumn("chkflag");
  166. dsf_setDefaultVal(ds_grd_cartlist, "chkflag:N,usehours:00,usemins:00,opposturecd:00,opdirecflag:-,anstmthdcd:00,opcntmdg:0,uptstat:-");
  167. }
  168. /****************************************************************************************
  169. * Function : fSelectOpNm
  170. * Description : 수술명 복사
  171. * Argument :
  172. * :
  173. * return type :
  174. * Creator :
  175. ****************************************************************************************/
  176. function fSelectOpNm(){
  177. var cnt = 0;
  178. ds_grd_copyoplist.clearData(); //수술명복사 그리드 초기화
  179. for( var iRow = 0; iRow < ds_grd_cartlist.rowcount; iRow++ ) {
  180. if(ds_grd_cartlist.getColumn(iRow,"chkflag")=="Y") {
  181. if(!utlf_isNull(ds_grd_cartlist.getColumn(iRow,"ccrtno"))) {
  182. if(ds_grd_cartlist.getColumn(iRow,"useflag")=="N") {
  183. sysf_messageBox("미 사용중인 수술명은 선택 ", "E001");
  184. ds_grd_copyoplist.clearData();
  185. return;
  186. }
  187. ds_grd_copyoplist.copyRow(ds_grd_copyoplist.addRow(),ds_grd_cartlist,iRow); // 해당 데이터셋 카피(1열)
  188. cnt++;
  189. }else {
  190. sysf_messageBox("미 등록된 수술명은 선택 ", "E001");
  191. ds_grd_copyoplist.clearData();
  192. return;
  193. }
  194. }
  195. }
  196. if( cnt < 1 ) {
  197. sysf_messageBox("선택하신 수술명이 ", "I004");
  198. return;
  199. }
  200. }
  201. /****************************************************************************************
  202. * Function : fSearchCartList
  203. * Description : Case Cart MASTER 정보 가져오기
  204. * Argument :
  205. * :
  206. * return type :
  207. * Creator :
  208. ****************************************************************************************/
  209. function fSearchCartList() {
  210. if(group3.cmb_orddept.value == "") {
  211. sysf_messageBox("집도과를 선택하지 ", "E007");
  212. group3.cmb_orddept.setFocus();
  213. return;
  214. }
  215. ds_reqdata.clearData();
  216. var rowno = ds_reqdata.addRow();
  217. ds_reqdata.setColumn(rowno, "perfdeptcd", group3.cmb_orddept.value);
  218. ds_reqdata.setColumn(rowno, "perfdrid", group3.cmb_perf.value);
  219. ds_reqdata.setColumn(rowno, "useflag", group3.radio1.value);
  220. ds_reqdata.setColumn(rowno, "cartgubn", "O");
  221. var oParam = {};
  222. oParam.id = "TRMNP01513";
  223. oParam.service = "opanstapp.OpAnstStocMngt";
  224. oParam.method = "reqGetOpNmList";
  225. oParam.inds = "reqdata=ds_reqdata";
  226. oParam.outds = "ds_grd_cartlist=diagcdlist";
  227. oParam.async = false;
  228. oParam.callback = "cf_TRMNP01513";
  229. tranf_submit(oParam);
  230. }
  231. function cf_TRMNP01513(sSvcId, nErrorCode, sErrorMsg) {
  232. if(nErrorCode < 0) return;
  233. ds_grd_cartlist.deleteColumn("chkflag");
  234. dsf_setDefaultVal(ds_grd_cartlist, "chkflag:N,uptstat:-");
  235. }
  236. /****************************************************************************************
  237. * Function : fClear
  238. * Description : 수술명 복사 초기화
  239. * Argument :
  240. * :
  241. * return type :
  242. * Creator :
  243. ****************************************************************************************/
  244. function fClear() {
  245. ds_grd_copyoplist.clearData(); //수술명복사 그리드 초기화
  246. ds_init_cmb_perf2.clearData(); //집도의 콤보리스트 초기화
  247. group3.cmb_orddept2.value = ""; //수술명복사 집도과 초기화
  248. group3.cmb_perf2.value = ""; //수술명복사 집도의 초기화
  249. group3.rd_copyflag.value = ""; //수술명복사 조건 초기화
  250. }
  251. /****************************************************************************************
  252. * Function : fOpNmSave
  253. * Description : Case Cart MASTER 자료저장하기
  254. * Argument :
  255. * :
  256. * return type :
  257. * Creator :
  258. ****************************************************************************************/
  259. function fOpNmSave(pFlag){
  260. var ccrtno, opcd, useflag, statflag;
  261. var cnt = 0;
  262. var perfdeptcd = group3.cmb_orddept.value;
  263. var perfdrid = group3.cmb_perf.value;
  264. var deptinit = ds_init_cmb_orddept.getColumn(ds_init_cmb_orddept.findRow("deptcd",perfdeptcd), "deptengabbr");
  265. sysf_trace("deptinit : "+deptinit);
  266. if( utlf_isNull(perfdeptcd) ) {
  267. sysf_messageBox("집도과를 선택하지 ", "E007");
  268. group3.cmb_orddept.setFocus();
  269. return;
  270. }
  271. if( utlf_isNull(perfdrid) ) {
  272. sysf_messageBox("집도의를 선택하지 ", "E007");
  273. group3.cmb_perf.setFocus();
  274. return;
  275. }
  276. ds_savedata.clearData();
  277. for(var iRow = 0; iRow < ds_grd_cartlist.rowcount; iRow++ ) {
  278. if( ds_grd_cartlist.getColumn(iRow, "chkflag") == "Y") {
  279. ccrtno = ds_grd_cartlist.getColumn(iRow, "ccrtno");
  280. opcd = ds_grd_cartlist.getColumn(iRow, "opcd");
  281. useflag = ds_grd_cartlist.getColumn(iRow, "useflag");
  282. usehours = ds_grd_cartlist.getColumn(iRow, "usehours"); // 소요시간(시)
  283. usemins = ds_grd_cartlist.getColumn(iRow, "usemins"); // 소요시간(분)
  284. opposturecd = ds_grd_cartlist.getColumn(iRow, "opposturecd"); // 수술체위
  285. opdirecflag = ds_grd_cartlist.getColumn(iRow, "opdirecflag"); //수술위치
  286. anstmthdcd = ds_grd_cartlist.getColumn(iRow, "anstmthdcd"); //마취방법
  287. opcntmdg = ds_grd_cartlist.getColumn(iRow, "opcntmdg"); //수술창상
  288. opusetm = usehours.concat(usemins);
  289. uptstat = ds_grd_cartlist.getColumn(iRow, "uptstat"); //update상태 정보
  290. if( pFlag != "D" ) {
  291. if( useflag == "Y" && uptstat != "U") {
  292. sysf_messageBox("이미 사용중인 수술명", "E008");
  293. return;
  294. }
  295. }else {
  296. if( useflag == "N" ) {
  297. sysf_messageBox("이미 미사용 수술명", "E008");
  298. return;
  299. }
  300. }
  301. if( utlf_isNull(ccrtno) ) {//등록된 카트가 아니면 신규등록, 등록된 카트이면서 미사용중이면 수정
  302. statflag = "I";
  303. useflag = "Y"
  304. }else {
  305. statflag = "U";
  306. useflag = "Y"
  307. }
  308. if( pFlag == "D" ) {//삭제이면
  309. statflag = "D";
  310. useflag = "N"
  311. }
  312. var rowno1 = ds_savedata.addRow();
  313. ds_savedata.setColumn(rowno1, "m" , statflag);
  314. ds_savedata.setColumn(rowno1, "opcd" , opcd);
  315. ds_savedata.setColumn(rowno1, "orddeptcd" , perfdeptcd);
  316. ds_savedata.setColumn(rowno1, "perfid" , perfdrid);
  317. ds_savedata.setColumn(rowno1, "cartgubn" , "O");
  318. ds_savedata.setColumn(rowno1, "useflag" , useflag);
  319. ds_savedata.setColumn(rowno1, "deptinit" , deptinit);
  320. ds_savedata.setColumn(rowno1, "ccrtno" , ccrtno);
  321. ds_savedata.setColumn(rowno1, "opusetm" , opusetm);
  322. ds_savedata.setColumn(rowno1, "opposturecd" , opposturecd);
  323. ds_savedata.setColumn(rowno1, "opdirecflag" , opdirecflag);
  324. ds_savedata.setColumn(rowno1, "anstmthdcd" , anstmthdcd);
  325. ds_savedata.setColumn(rowno1, "opcntmdg" , opcntmdg);
  326. cnt++;
  327. }
  328. }
  329. if( cnt > 0 ) {
  330. ds_reqdata.clearData();
  331. var rowno = ds_reqdata.addRow();
  332. ds_reqdata.setColumn(rowno, "perfdeptcd", perfdeptcd);
  333. ds_reqdata.setColumn(rowno, "perfdrid" , perfdrid);
  334. ds_reqdata.setColumn(rowno, "useflag" , group3.radio1.value);
  335. ds_reqdata.setColumn(rowno, "cartgubn" , "O");
  336. var oParam = {};
  337. oParam.id = "TXMNP01503";
  338. oParam.service = "opanstapp.OpAnstStocMngt";
  339. oParam.method = "reqInsOpNmList";
  340. oParam.inds = "reqdata=ds_reqdata savedata=ds_savedata";
  341. oParam.outds = "ds_grd_cartlist=diagcdlist";
  342. oParam.async = false;
  343. oParam.callback = "cf_TXMNP01503";
  344. tranf_submit(oParam);
  345. }else {
  346. sysf_messageBox("수술명이 선택되지", "E007");
  347. return;
  348. }
  349. }
  350. function cf_TXMNP01503(sSvcId, nErrorCode, sErrorMsg) {
  351. if(nErrorCode < 0) return;
  352. ds_grd_cartlist.deleteColumn("chkflag");
  353. dsf_setDefaultVal(ds_grd_cartlist, "chkflag:N,uptstat:-");
  354. }
  355. /* ------------------------------------------------- */
  356. /* desc : Case Cart MASTER 자료저장하기 */
  357. /* param : pModel - Model */
  358. /* tNode - Target Node */
  359. /* sNode - Source Node */
  360. /* return : */
  361. /* -------------------------------------------------- */
  362. function fRow2setValue(){
  363. var grdID;
  364. if( model.getValue("/root/init/WorkData/cond/cartgubn") == "O" ) {//수술
  365. grdID = grd_cartlist;
  366. } else {
  367. grdID = grd_anstcartlist;
  368. }
  369. if (grdID.rows < 1) {
  370. return;
  371. }
  372. var DrRead = "N";
  373. var sNode = "/root/main/MnpmcartData/MnpmcartList["+grdID.row+"]";
  374. model.setValue(xPathInput + "/ccrtno" , model.getValue(sNode +"/ccrtno" ));
  375. var DeptCode = model.getValue(sNode +"/orddeptcd" );
  376. if (inp_orddeptcd.value != DeptCode) DrRead = "Y";
  377. model.removenode("/root/send");
  378. model.makeValue("/root/send/reqdata/conflag", "2");
  379. model.makeValue("/root/send/reqdata/lrgcd", model.getValue(sNode +"/lrgcd"));
  380. submit("TRMNP01505", false);
  381. model.removenode("/root/send");
  382. model.makeValue("/root/send/reqdata/opgrp1" , model.getValue(sNode +"/lrgcd"));
  383. model.makeValue("/root/send/reqdata/opgrp2" , model.getValue(sNode +"/mdlcd"));
  384. model.makeValue("/root/send/reqdata/sortflag" , "N");
  385. submit("TRMNP01503", false);
  386. model.setValue(xPathInput + "/orddeptcd" , model.getValue(sNode +"/orddeptcd"));
  387. model.setValue(xPathInput + "/perfid" , model.getValue(sNode +"/perfid"));
  388. model.setValue(xPathInput + "/opcd" , model.getValue(sNode +"/opcd"));
  389. model.setValue(xPathInput + "/appdd" , model.getValue(sNode +"/appdd"));
  390. model.setValue(xPathInput + "/perfavgoptm" , model.getValue(sNode +"/perfavgoptm"));
  391. model.setValue(xPathInput + "/perfavgdowntm", model.getValue(sNode +"/perfavgdowntm"));
  392. model.setValue(xPathInput + "/useflag" , model.getValue(sNode +"/useflag"));
  393. model.setValue(xPathInput + "/anstkind" , model.getValue(sNode +"/anstkind"));
  394. model.setValue(xPathInput + "/anstageflag" , model.getValue(sNode +"/anstageflag"));
  395. model.setValue(xPathInput + "/lrgcd" , model.getValue(sNode +"/lrgcd"));
  396. model.setValue(xPathInput + "/mdlcd" , model.getValue(sNode +"/mdlcd"));
  397. if ( DrRead == "Y") fDrCombo(2, DeptCode); // 집도(마취의) 가져오기
  398. grp_input.refresh();
  399. }
  400. /****************************************************************************************
  401. * Function : fOpCopy
  402. * Description : 수술명 복사
  403. * Argument :
  404. * :
  405. * return type :
  406. * Creator :
  407. ****************************************************************************************/
  408. function fOpCopy(){
  409. var perfdeptcd = group3.cmb_orddept2.value;
  410. var perfid = group3.cmb_perf2.value;
  411. var copyflag = group3.rd_copyflag.value;
  412. trace("copyflag : " + copyflag);
  413. if( perfdeptcd == "" ) {
  414. sysf_messageBox("복사할 집도과를 ", "C002");
  415. group3.cmb_orddept2.setFocus();
  416. return;
  417. }else if( perfid == "" ) {
  418. sysf_messageBox("복사할 집도의를 ", "C002");
  419. group3.cmb_perf2.setFocus();
  420. return;
  421. }else if( copyflag == "" ) {
  422. sysf_messageBox("복사 조건을 ", "C002");
  423. group3.rd_copyflag.setFocus();
  424. return;
  425. }
  426. ds_copylist.clearData();
  427. var cnt = 0;
  428. for( var i=0; i < ds_grd_copyoplist.rowcount; i++ ) {
  429. var chk = ds_grd_copyoplist.getColumn(i,"chkflag");
  430. var opcd = ds_grd_copyoplist.getColumn(i,"opcd");
  431. var ccrtno = ds_grd_copyoplist.getColumn(i,"ccrtno");
  432. var opposturecd = ds_grd_copyoplist.getColumn(i,"opposturecd"); //수술체위
  433. var opdirecflag = ds_grd_copyoplist.getColumn(i,"opdirecflag"); //수술위치
  434. var anstmthdcd = ds_grd_copyoplist.getColumn(i,"anstmthdcd"); //마취방법
  435. var opcntmdg = ds_grd_copyoplist.getColumn(i,"opcntmdg"); //수술창상
  436. var usehours = ds_grd_copyoplist.getColumn(i,"usehours"); //소요시간(시)
  437. var usemins = ds_grd_copyoplist.getColumn(i,"usemins"); //소요시간(분)
  438. var opusetm = usehours.concat(usemins);
  439. if( chk == "Y" ) {
  440. var nRow = ds_copylist.addRow();
  441. ds_copylist.setColumn(nRow,"ccrtno" ,ccrtno);
  442. ds_copylist.setColumn(nRow,"opcd" ,opcd);
  443. ds_copylist.setColumn(nRow,"copyflag" ,copyflag);
  444. ds_copylist.setColumn(nRow,"perfdeptcd" ,perfdeptcd);
  445. ds_copylist.setColumn(nRow,"perfid" ,perfid);
  446. ds_copylist.setColumn(nRow,"opusetm" ,opusetm);
  447. ds_copylist.setColumn(nRow,"opposturecd",opposturecd);
  448. ds_copylist.setColumn(nRow,"opdirecflag",opdirecflag);
  449. ds_copylist.setColumn(nRow,"anstmthdcd" ,anstmthdcd);
  450. ds_copylist.setColumn(nRow,"opcntmdg" ,opcntmdg);
  451. cnt++;
  452. }
  453. }
  454. if( cnt > 0 ) {
  455. trace(ds_copylist.saveXML());
  456. tranf_submit({id:"TXMNP01502"
  457. , service:"opanstapp.OpAnstCCrtGoodMngt"
  458. , method:"reqInsCopyCartList"
  459. , inds:"copylist=ds_copylist"
  460. , outds:""
  461. , args:""
  462. , callback:""
  463. , async:"false"
  464. });
  465. fClear();//수술명 복사 초기화
  466. }else {
  467. sysf_messageBox("선택하신 수술명이 ", "I004");
  468. }
  469. }
  470. function fCheckCartCode(pCode){
  471. var sCode = "";
  472. var sNode = "/root/main/MnpmcartData/MnpmcartList";
  473. var sRowCnt = grd_cartlist.rows-grd_cartlist.fixedrows;
  474. for (var i=1;i<=sRowCnt; i++){
  475. sCode = model.getValue(sNode + "["+i+"]/ccrtno");
  476. if (pCode == sCode) {
  477. return true;
  478. }
  479. }
  480. return false;
  481. }
  482. function fOpCodePopup() {
  483. var xpos = event.screenX;
  484. var ypos = event.screenY-300;
  485. open("SPMNP01500", 1, xpos, ypos,"SPMNP01500","/root/init/WorkData/oplist", "/root/Cond/oplist");
  486. var iProperties = getParameter("SendData");
  487. var iSplit_Value = iProperties.split("|");
  488. if (iSplit_Value.length > 0) {
  489. model.setValue(xPathInput + "/opcd" , iSplit_Value[0]); // CODE
  490. model.setValue(xPathInput + "/opkname", iSplit_Value[1]); // NAME
  491. }
  492. }
  493. // --------------------------------------------------
  494. // Switch 속성변경 처리하는 함수
  495. // --------------------------------------------------
  496. function fViewToggle() {
  497. if (sToggle == 0) {
  498. grp_grid.attribute("width" ) = "1195";
  499. lin_grid.attribute("x2" ) = "1195";
  500. grd_cartlist.attribute("width" ) = "1195";
  501. bbt_excel.visible = true;
  502. } else {
  503. bbt_excel.visible = false;
  504. grp_grid.attribute("width" ) = "726";
  505. lin_grid.attribute("x2" ) = "724";
  506. grd_cartlist.attribute("width" ) = "724";
  507. }
  508. grp_grid.refresh();
  509. }
  510. /* --------------------------------------------------*/
  511. /* type : function */
  512. /* access : public */
  513. /* desc : 집도과(마취과) 콤보아이템 가져오기 */
  514. /* param : */
  515. /* return : */
  516. /* --------------------------------------------------*/
  517. function fDeptCombo(pFlag) {
  518. removeComboItem("cmb_orddept" );
  519. model.removenode("/root/send" );
  520. model.makeValue("/root/send/flag" , "X" );
  521. model.makeValue("/root/send/searchitem", "XX" );
  522. model.makeValue("/root/send/deptflag" , pFlag );
  523. submit("TRMNP00102", false);
  524. model.removeNodeset("/root/main/DeptLists/deptlist");
  525. model.copyNode("/root/main/DeptLists", "/root/init/DeptLists");
  526. }
  527. /****************************************************************************************
  528. * Function : fDrCombo
  529. * Description : 집도의(마취의) 콤보아이템 가져오기
  530. * Argument :
  531. * :
  532. * return type :
  533. * Creator :
  534. ****************************************************************************************/
  535. function fDrCombo(pCls, pDept) {
  536. ds_reqdata.clearData();
  537. ds_reqdata.setColumn(ds_reqdata.addRow(), "orddept", pDept);
  538. tranf_submit({id:"TRMNP00103"
  539. , service:"opanstapp.OpAnstPatMngt"
  540. , method:"reqGetDrInfo"
  541. , inds:"reqdata=ds_reqdata"
  542. , outds:"ds_drlist=drlist"
  543. , args:""
  544. , callback:""
  545. , async:"false"
  546. });
  547. if (pCls ==1) {//수술명 등록용 집도의 리스트
  548. ds_init_cmb_perf.clearData();
  549. dsf_copyDs(ds_init_cmb_perf, ds_drlist, "replace");
  550. frmf_addComboItem("group3.cmb_perf" , "전 체", "", "above");
  551. group3.cmb_perf.value = "";
  552. }
  553. if (pCls ==2) {//수술명 복사용 집도의 리스트
  554. ds_init_cmb_perf2.clearData();
  555. dsf_copyDs(ds_init_cmb_perf2, ds_drlist, "replace");
  556. frmf_addComboItem("group3.cmb_perf2" , "전 체", "", "above");
  557. group3.cmb_perf2.value = "";
  558. }
  559. }
  560. /* --------------------------------------------------*/
  561. /* type : function */
  562. /* access : public */
  563. /* desc : 콤보아이템 제거 */
  564. /* param : */
  565. /* return : */
  566. /* --------------------------------------------------*/
  567. function removeComboItem( comboID ) {
  568. var comboObj = document.all.item(comboID);
  569. var comboItemNodeSet = comboObj.choices.itemset.attribute("nodeset");
  570. model.removenode(comboItemNodeSet + "[1]");
  571. model.refresh();
  572. }
  573. // --------------------------------------------------
  574. // 화면 Query 시 처리하는 함수
  575. // --------------------------------------------------
  576. function fCheckCartGubn() {
  577. var sCartGubn = model.getValue("/root/init/WorkData/cond/cartgubn"); // Cart구분 O:수술
  578. model.removeNodeset("/root/main/MnpmcartData/MnpmcartList");
  579. model.setValue("/root/init/WorkData/cond/anstkind" , "");
  580. model.setValue("/root/init/WorkData/cond/anstageflag", "");
  581. model.setValue(xPathInput + "/anstkind" , "");
  582. model.setValue(xPathInput + "/anstageflag", "");
  583. //cmb_anstkind.refresh();
  584. //cmb_anstageflag.refresh();
  585. if (sCartGubn == "O") {
  586. cap_dr.text = "집 도 의";
  587. cap_dept.text = "집 도 과";
  588. cap_in_dr.text = "집 도 의";
  589. cap_in_dept.text = "집 도 과";
  590. cmb_anstkind.disabled = true; //마취방법 비활성화
  591. cmb_anstageflag.disabled = true; //연령대 비활성화
  592. grd_anstcartlist.visible = flase;
  593. grd_cartlist.visible = true;
  594. model.setValue(xPathInput + "/anstopflag" , "");
  595. grp_dr.disabled = true;
  596. cmb_orddept.disabled = false;
  597. //grd_cartlist.colhidden(2) = false;
  598. //grd_cartlist.colhidden(4) = true;
  599. //grd_cartlist.colhidden(5) = true;
  600. model.removeNodeset("/root/init/drlist");
  601. fDeptCombo("011"); // 집도과
  602. addComboItem("cmb_orddept", "전 체", "", "above" );
  603. } else {
  604. cap_dr.text = "마 취 의";
  605. cap_dept.text = "마 취 과";
  606. cap_in_dr.text = "마 취 의";
  607. cap_in_dept.text = "마 취 과";
  608. cmb_anstkind.disabled = false; //마취방법 활성화
  609. cmb_anstageflag.disabled = false; //연령대 활성화
  610. grd_anstcartlist.visible = true;
  611. grd_cartlist.visible = false;
  612. grp_dr.disabled = false;
  613. cmb_orddept.disabled = true;
  614. //grd_cartlist.colhidden(2) = true;
  615. //grd_cartlist.colhidden(4) = false;
  616. //grd_cartlist.colhidden(5) = false;
  617. fDeptCombo("012"); // 마취과
  618. }
  619. fInputDataClear();
  620. var curtDate = getCurrentDate();
  621. var curtYYMM = curtDate.substr(0, 8);
  622. model.setValue("/root/init/WorkData/InputData/appdd", curtYYMM);//적용일자는 현재일로 셋팅
  623. cmb_orddept.selectedIndex = 1;
  624. fDrCombo(1, model.getValue("/root/init/WorkData/cond/orddept"));
  625. model.refresh();
  626. }
  627. //
  628. function fInputDataClear() {
  629. model.setValue(xPathInput + "/ccrtno" ,"" );
  630. model.setValue(xPathInput + "/orddeptcd" ,"" );
  631. model.setValue(xPathInput + "/perfid" ,"" );
  632. model.setValue(xPathInput + "/opcd" ,"" );
  633. model.setValue(xPathInput + "/appdd" ,"" );
  634. model.setValue(xPathInput + "/perfavgoptm" ,"" );
  635. model.setValue(xPathInput + "/perfavgdowntm","" );
  636. model.setValue(xPathInput + "/useflag" ,"Y" );
  637. model.setValue(xPathInput + "/recstat" ,"" );
  638. model.setValue(xPathInput + "/depthngnm" ,"" );
  639. model.setValue(xPathInput + "/usernm" ,"" );
  640. model.setValue(xPathInput + "/opkname" ,"" );
  641. model.setValue(xPathInput + "/anstkind" ,"" );
  642. model.setValue(xPathInput + "/anstageflag" ,"");
  643. model.setValue(xPathInput + "/anstopflag" ,"");
  644. model.setValue(xPathInput + "/copydr" ,"" );
  645. model.setValue(xPathInput + "/copydept" ,"" );
  646. model.setValue(xPathInput + "/nameflag" ,"" );
  647. model.setValue(xPathInput + "/copyflag" ,"" );
  648. grp_input.refresh();
  649. }
  650. // --------------------------------------------------
  651. // Grid 속성변경 처리하는 함수
  652. // --------------------------------------------------
  653. function fSetAttribute(pIdx) {
  654. var sWidth = tWidth[pIdx].split(",");
  655. for (i = 0; i < sWidth.length; i++) {
  656. grd_cartlist.colwidth(i+1) = sWidth[i];
  657. }
  658. }
  659. /* ------------------------------------------------- */
  660. /* SMMNP01500_Case Cart MASTER */
  661. /* */
  662. /* ------------------------------------------------- */
  663. /* group : EMR 간호 수술마취 */
  664. /* ver : 2008.10.14 */
  665. /* by : 김진명 */
  666. /* ------------------------------------------------- */
  667. /* SMMNP01500_Case Cart MASTER */
  668. /* */
  669. /* desc :수술명 사용 전환 */
  670. /* --------------------------------------------------*/
  671. function fConvertOP(useflag) {
  672. model.removenode("/root/send");
  673. var SendData = "ccrtno▦useflag";
  674. var ccrtno, cnt=0;
  675. for( var i = 0; i < grd_cartlist.rows; i++ ) {
  676. if( model.getValue("/root/main/MnpmcartData/MnpmcartList[" + i + "]/chk") == "true" ) {
  677. cnt++
  678. ccrtno = model.getValue("/root/main/MnpmcartData/MnpmcartList[" + i + "]/ccrtno")
  679. SendData = SendData + "▩" + ccrtno + "▦" + useflag;
  680. }
  681. }
  682. if( cnt > 0 ) {
  683. model.makeValue("/root/send/senddata", SendData);
  684. model.makeValue("/root/send/reqdata/orddeptcd" , model.getValue("/root/init/WorkData/cond/orddept" )); // 진료과코드
  685. model.makeValue("/root/send/reqdata/perfid" , model.getValue("/root/init/WorkData/cond/perfdr" )); // 집도의ID
  686. model.makeValue("/root/send/reqdata/useflag" , model.getValue("/root/init/WorkData/cond/useflag" )); // 사용여부
  687. model.makeValue("/root/send/reqdata/cartgubn" , model.getValue("/root/init/WorkData/cond/cartgubn" )); // Cart구분(O:수술,A:마취)
  688. model.makeValue("/root/send/reqdata/anstkind" , model.getValue("/root/init/WorkData/cond/anstkind" )); // 마취종류(코드정의서 M0017 참조)
  689. model.makeValue("/root/send/reqdata/anstageflag", model.getValue("/root/init/WorkData/cond/anstageflag")); // 수술마취나이구분(코드 M0246 참조)
  690. submit("TXMNP01501"); // 수술명 사용 전환
  691. }
  692. }
  693. /****************************************************************************************
  694. * Function : fCheckUseHours
  695. * Description : 수술소요 시간(hour)입력 정보 체크 및 수정
  696. * Argument :
  697. * :
  698. * return type :
  699. * Creator :
  700. ****************************************************************************************/
  701. function fCheckUseHours(grdFlag, selRow){
  702. var hours;
  703. if(grdFlag == "original") hours = ds_grd_cartlist.getColumn(selRow,"usehours");
  704. if(grdFlag == "copy") hours = ds_grd_copyoplist.getColumn(selRow,"usehours");
  705. var addZeroHours = "0";
  706. if(isNull(hours) ){
  707. return addZeroHours.concat("0");
  708. }else if(hours.length < 2){
  709. return addZeroHours.concat(hours);
  710. }else{
  711. return hours;
  712. }
  713. }
  714. /****************************************************************************************
  715. * Function : fn_callback_TRMNP01512
  716. * Description : 과/의사 정보 불러와 집도과/집도의 콤보데이터셋에 copy
  717. * Argument :
  718. * :
  719. * return type :
  720. * Creator :
  721. ****************************************************************************************/
  722. function fn_callback_TRMNP01512() {
  723. dsf_copyDs(ds_init_cmb_orddept, ds_deptlist, "replace");
  724. dsf_copyDs(ds_init_cmb_orddept2, ds_deptlist, "replace");
  725. }
  726. /* ------------------------------------------------- */
  727. /* ------End Of List ------------------------------- */
  728. /* -------------------------------------------------- */
  729. ]]></Script>