MMR05800.xjs 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  4. 마취환자기록 ( SSMMR05800_마취환자기록마스터.xfdl - JScript )
  5. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  6. */
  7. var instcd = "031";
  8. var anstrecno = "";
  9. var currentdate = "";
  10. var prcpmast_load = "";
  11. var prcpset_load = "";
  12. /**
  13. * @desc : 폼초기화 ( 마취환자 기록셋 & 기록항목 조회 )
  14. * @
  15. * @param :
  16. * @return :
  17. * @---------------------------------------------------
  18. */
  19. function fFormInit()
  20. {
  21. anstrecno = parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstrecno");
  22. // 기록 : default tab 처리
  23. sw_left1.tabindex = 0;
  24. // 현재일시
  25. currentdate = utlf_getCurrentDate() + utlf_getCurrentTime();
  26. ds_send_reqdata.setColumn(0,"currentdate" , currentdate);
  27. // 기록 Set 목록
  28. ds_send_reqdata.setColumn(0,"settype", "R");
  29. var oParam = {};
  30. oParam.id = "TRMMR04204";
  31. oParam.service = "anstrecapp.AnstRec";
  32. oParam.method = "reqGetAnstSet";
  33. oParam.inds = "reqdata=ds_send_reqdata";
  34. oParam.outds = "ds_init_recsetlist=item";
  35. oParam.async = false;
  36. oParam.callback = "cf_TRMMR04204";
  37. tranf_submit(oParam);
  38. // 기록 Set Code
  39. var recsetcd = parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"recsetcd");
  40. if (recsetcd == "0") { recsetcd = "-1"; }
  41. ds_send_reqdata.setColumn(0,"recsetcd", recsetcd);
  42. if (recsetcd == "-1") {
  43. // 마취기록 마스터 정보 조회
  44. var oParam = {};
  45. oParam.id = "TRMMR04201";
  46. oParam.service = "anstrecapp.AnstRec";
  47. oParam.method = "reqGetRecMast";
  48. oParam.inds = "reqdata=ds_send_reqdata";
  49. oParam.outds = "ds_recmast_item=item";
  50. oParam.async = false;
  51. oParam.callback = "cf_TRMMR04201";
  52. tranf_submit(oParam);
  53. } else {
  54. ds_send_setinfo.setColumn(0,"instcd" , instcd);
  55. ds_send_setinfo.setColumn(0,"settype", "R");
  56. ds_send_setinfo.setColumn(0,"setcd" , recsetcd);
  57. // 현재일시
  58. currentdate = utlf_getCurrentDate() + utlf_getCurrentTime();
  59. ds_send_setinfo.setColumn(0,"currentdate" , currentdate);
  60. dsf_setTypeFormat(ds_send_setinfo, "setcd:INT");
  61. // 마취기록 SET 아이템 조회하기..
  62. var oParam = {};
  63. oParam.id = "TRMMR04205";
  64. oParam.service = "anstrecapp.AnstRec";
  65. oParam.method = "reqGetRecSetItem";
  66. oParam.inds = "setinfo=ds_send_setinfo";
  67. oParam.outds = "ds_recmast_item=item";
  68. oParam.async = false;
  69. oParam.callback = "cf_TRMMR04205";
  70. tranf_submit(oParam);
  71. }
  72. if (anstrecno != "0")
  73. {
  74. // 마취기록번호
  75. ds_send_reqdata.setColumn(0,"anstrecno", anstrecno);
  76. // 마취환자 기록 조회
  77. var oParam = {};
  78. oParam.id = "TRMMR03704";
  79. oParam.service = "anstrecapp.AnstRec";
  80. oParam.method = "reqGetAnstRec";
  81. oParam.inds = "reqdata=ds_send_reqdata";
  82. oParam.outds = "ds_anstrec_item=item";
  83. oParam.async = false;
  84. oParam.callback = "cf_TRMMR03704";
  85. tranf_submit(oParam);
  86. }
  87. prcpmast_load = "";
  88. }
  89. function cf_TRMMR03704(sSvcId, nErrorCode, sErrorMsg) {
  90. if(nErrorCode < 0)
  91. {
  92. return;
  93. }
  94. else
  95. {
  96. // 마취환자 기록 체킹해주기
  97. fAnstRecChecked(ds_anstrec_item, sw_left1.case_rec.grd_recmast, "recitem", "checked", "rec", "rectype", "recnm", "subrec");
  98. }
  99. }
  100. function cf_TRMMR04204(sSvcId, nErrorCode, sErrorMsg) {
  101. if(nErrorCode < 0) return;
  102. }
  103. function cf_TRMMR04204_2(sSvcId, nErrorCode, sErrorMsg) {
  104. if(nErrorCode < 0)
  105. {
  106. return;
  107. }
  108. else
  109. {
  110. // SET 목록 콤보 리셋하기..
  111. ds_init_setlist1.filterstr = "clscd == '"+ sw_left1.case_set.rdo_settype.value + "'";
  112. // 콤보에 셋코드를 선택해주기...
  113. ds_send_setinfo.setColumn(0,"setcd",ds_hidden.getColumn(0,"prcpsetcd"));
  114. }
  115. }
  116. function cf_TRMMR04205(sSvcId, nErrorCode, sErrorMsg) {
  117. if(nErrorCode < 0) return;
  118. }
  119. function cf_TRMMR04205_2(sSvcId, nErrorCode, sErrorMsg) {
  120. if(nErrorCode < 0)
  121. {
  122. return;
  123. }
  124. else
  125. {
  126. // 마취환자 기록 체킹해주기
  127. fAnstRecChecked(ds_anstrec_item, sw_left1.case_rec.grd_recmast, "recitem", "checked", "rec", "rectype", "recnm", "subrec");
  128. }
  129. }
  130. /**
  131. * @desc : 처방 SET 조회
  132. * @
  133. * @param :
  134. * @return :
  135. * @---------------------------------------------------
  136. */
  137. function fPrcpSetLoad()
  138. {
  139. sw_left1.visible = true;
  140. if (prcpset_load != "Y") {
  141. // 전체 선택을 위한 그리드 셋..
  142. // grd_agent01.fixedcellcheckbox(0,0) = true;
  143. //grd_prcpset.fixedcellcheckbox(0,0) = true;
  144. grdf_initGrid(sw_left1.case_set.grd_prcpset);
  145. var setclscd = ds_send_reqdata.getColumn(0,"setclscd");
  146. if (utlf_isNull(setclscd)) {
  147. ds_send_reqdata.setColumn(0,"setclscd","1");
  148. // 그리드 초기화
  149. if (ds_prcpsetitem_item.rowcount> 1) {
  150. ds_prcpsetitem_item.clearData();
  151. }
  152. // 처방 SET 수술별 조회
  153. fComboSetlist();
  154. }
  155. prcpset_load = "Y";
  156. }
  157. }
  158. /**
  159. * @desc : 처방 마스터 조회
  160. * @
  161. * @param :
  162. * @return :
  163. * @---------------------------------------------------
  164. */
  165. function fPrcpMastLoad()
  166. {
  167. utlf_addLog(">>>>> fPrcpMastLoad : " + prcpmast_load + " >>>>>>");
  168. sw_left1.visible = true;
  169. if (prcpmast_load != "Y") {
  170. if(ds_send_req.rowcount == 0)
  171. {
  172. ds_send_req.addRow();
  173. }
  174. // 용법조회 (주사약)
  175. ds_send_req.setColumn(0,"cond1" , "I");
  176. ds_send_req.setColumn(0,"cond2" , 1);
  177. ds_send_req.setColumn(0,"cond3" , "");
  178. dsf_setTypeFormat(ds_send_req, "cond2:INT");
  179. var oParam = {};
  180. oParam.id = "TRMMR03710";
  181. oParam.service = "anstrecapp.AnstRec";
  182. oParam.method = "reqGetTmedTthdInfo";
  183. oParam.inds = "req=ds_send_req";
  184. oParam.outds = "ds_hidden_tmedmthdlist=tmedmthdlist";
  185. oParam.async = false;
  186. oParam.callback = "cf_TRMMR03710";
  187. tranf_submit(oParam);
  188. //공통코드 가져오기...
  189. //M0287:drug 소분류
  190. //zbcfGetCodeList(new Array("M0287"), new Array("/root/init/M0287"));
  191. var arrParam = [{dsNm: "ds_init_M0287", cdGrpId: "M0287"}
  192. ]
  193. appf_getCodeList(arrParam); //공통코드 조회
  194. ds_init_M0287.insertRow(0);
  195. ds_init_M0287.setColumn(0,"cdnm","전체");
  196. // Agent 시작일시, 종료일시 적용을 위한 기본 셋
  197. ds_hidden.setColumn(0,"agentfromdd", parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromdd"));
  198. ds_hidden.setColumn(0,"agentfromtm", parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromtm"));
  199. ds_hidden.setColumn(0,"agenttodd" , parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttodd"));
  200. ds_hidden.setColumn(0,"agenttotm" , parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttotm"));
  201. // 처방마스터 정보 조회
  202. ds_send_reqdata.setColumn(0,"clscd","");
  203. ds_send_reqdata.setColumn(0,"prcptype","");
  204. var oParam = {};
  205. oParam.id = "TRMMR04202";
  206. oParam.service = "anstrecapp.AnstRec";
  207. oParam.method = "reqGetPrcpMast";
  208. oParam.inds = "reqdata=ds_send_reqdata";
  209. oParam.outds = "ds_prcpmast_item=item";
  210. oParam.async = false;
  211. oParam.callback = "cf_TRMMR04202";
  212. tranf_submit(oParam);
  213. // 2008.01.04. drug... 소분류는 "많이쓰는약" 으로 디폴트 처리한다..
  214. ds_send_reqdata.setColumn(0,"clscd", "01");
  215. sw_left1.case_drug.cmb_clscd.value = "01";
  216. ds_send_reqdata.setColumn(0,"prcptype","D");
  217. ds_send_reqdata.setColumn(0,"currentdate",utlf_getCurrentDate());
  218. var oParam = {};
  219. oParam.id = "TRMMR04202_drug";
  220. oParam.service = "anstrecapp.AnstRec";
  221. oParam.method = "reqGetPrcpMast";
  222. oParam.inds = "reqdata=ds_send_reqdata";
  223. oParam.outds = "ds_drug_item=item";
  224. oParam.async = false;
  225. oParam.callback = "cf_TRMMR04202_drug";
  226. tranf_submit(oParam);
  227. // 혈액리스트 조회
  228. fGetBlodList();
  229. prcpmast_load = "Y";
  230. }
  231. //20131106 Start 처방 검색 후 DRUG가 세팅 안되는 오류 수정
  232. ds_grd_search.clearData();
  233. //20131106 End
  234. }
  235. function cf_TRMMR04202(sSvcId, nErrorCode, sErrorMsg) {
  236. if(nErrorCode < 0)
  237. {
  238. return;
  239. }
  240. else
  241. {
  242. ds_prcpmast_item.addColumn("checked","string");
  243. ds_prcpmast_item.addColumn("depth","string");
  244. ds_prcpmast_item.filter("prcptype == 'A'");
  245. ds_agent_item.copyData(ds_prcpmast_item,true);
  246. ds_prcpmast_item.filter("prcptype == 'D'");
  247. ds_drug_item.copyData(ds_prcpmast_item,true);
  248. ds_prcpmast_item.filter("prcptype == 'F'");
  249. ds_fluid_item.copyData(ds_prcpmast_item,true);
  250. ds_prcpmast_item.filter("prcptype == 'H'");
  251. ds_blod_item.copyData(ds_prcpmast_item,true);
  252. ds_prcpmast_item.filter("prcptype == 'P'");
  253. ds_proc_item.copyData(ds_prcpmast_item,true);
  254. ds_prcpmast_item.filter("");
  255. ds_agent_item.filter("clscd == '01'");
  256. ds_agent_item.applyChange();
  257. ds_agent01_item.copyData(ds_agent_item,true);
  258. ds_agent_item.filter("clscd == '02'");
  259. ds_agent_item.applyChange();
  260. ds_agent02_item.copyData(ds_agent_item,true);
  261. ds_agent_item.filter("clscd == '03'");
  262. ds_agent_item.applyChange();
  263. ds_agent03_item.copyData(ds_agent_item,true);
  264. ds_agent_item.filter("clscd == '04'");
  265. ds_agent_item.applyChange();
  266. ds_agent04_item.copyData(ds_agent_item,true);
  267. ds_agent_item.filter("");
  268. fDisplayAgent01();
  269. }
  270. }
  271. function cf_TRMMR03710(sSvcId, nErrorCode, sErrorMsg) {
  272. if(nErrorCode < 0) return;
  273. }
  274. /**
  275. * @desc : Inhalational Agent 인 경우 시작일시, 종료일시 셋해주기
  276. * @
  277. * @param :
  278. * @return :
  279. * @author :
  280. * @---------------------------------------------------
  281. */
  282. function fSetTimeAgent01()
  283. {
  284. ds_hidden.setColumn(0,"agentfromdd", parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromdd"));
  285. ds_hidden.setColumn(0,"agentfromtm", parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromtm"));
  286. ds_hidden.setColumn(0,"agenttodd" , parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttodd"));
  287. ds_hidden.setColumn(0,"agenttotm" , parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttotm"));
  288. }
  289. /**
  290. * @desc : Inhalational Agent : 별도로 Display (항목 선택해 주고, 시작일시, 종료일시 다시 보여주기)
  291. * @
  292. * @param :
  293. * @return :
  294. * @author :
  295. * @---------------------------------------------------
  296. */
  297. function fDisplayAgent01()
  298. {
  299. // Inhalational Agent 인 경우 시작일시, 종료일시 셋해주기
  300. var agentfromdd = ds_hidden.getColumn(0,"agentfromdd");
  301. var agentfromtm = ds_hidden.getColumn(0,"agentfromtm");
  302. var agenttodd = ds_hidden.getColumn(0,"agenttodd");
  303. var agenttotm = ds_hidden.getColumn(0,"agenttotm");
  304. var dataCnt = ds_agent01_item.rowcount;
  305. ds_agent01_item.addColumn("drugfromdd","string");
  306. ds_agent01_item.addColumn("drugfromtm","string");
  307. ds_agent01_item.addColumn("drugtodd","string");
  308. ds_agent01_item.addColumn("drugtotm","string");
  309. ds_agent01_item.addColumn("checked","string");
  310. for (var i=0 ; i < dataCnt ; i++) {
  311. ds_agent01_item.setColumn(i,"drugfromdd", agentfromdd);
  312. ds_agent01_item.setColumn(i,"drugfromtm", agentfromtm);
  313. ds_agent01_item.setColumn(i,"drugtodd", agenttodd);
  314. ds_agent01_item.setColumn(i,"drugtotm", agenttotm);
  315. }
  316. //var prcpRef = "/root/main/anstprcp/item";
  317. var prcpCnt = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.rowcount;
  318. // 전체 처방목록 중 Agent 의 소분류 01 (Inhalational Agent) 체킹해 주기
  319. if (anstrecno != "0") {
  320. for (var i=0 ; i <= prcpCnt ; i++) {
  321. var prcptype = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(i,"prcptype");
  322. var clscd = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(i,"clscd");
  323. if (prcptype == "A" && clscd == "01") {
  324. var prcpcd = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(i,"prcpcd");
  325. // 처방코드가 있는가?
  326. var dataCnt = ds_agent01_item.getCaseCount("prcpcd == '"+ prcpcd +"'");
  327. if (dataCnt > 0) {
  328. ds_agent01_item.setColumn(ds_agent01_item.findRowExpr("prcpcd == '"+ prcpcd +"'"),"checked", "true");
  329. var remark = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd", prcpcd, "remark");
  330. var tmpString = remark.split(".");
  331. if (tmpString.length == 4) {
  332. if (tmpString[0].length != 0) {
  333. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.findRowExpr("prcpcd == '"+ prcpcd +"'"),"drugfromdd",tmpString[0].replace(".",""));
  334. }
  335. if (tmpString[1].length != 0) {
  336. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.findRowExpr("prcpcd == '"+ prcpcd +"'"),"drugfromtm",tmpString[1].replace(".",""));
  337. }
  338. if (tmpString[2].length != 0) {
  339. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.findRowExpr("prcpcd == '"+ prcpcd +"'"),"drugtodd" ,tmpString[2].replace(".",""));
  340. }
  341. if (tmpString[3].length != 0) {
  342. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.findRowExpr("prcpcd == '"+ prcpcd +"'"),"drugtotm" ,tmpString[3].replace(".",""));
  343. }
  344. }
  345. }
  346. }
  347. }
  348. }
  349. }
  350. /**
  351. * @desc : 저장된 기록 정보를 그리드 트리뷰 에 체킹 표시하고 기록명칭의 추가기록도 보여준다
  352. * @
  353. * @param :
  354. * @
  355. * @return :
  356. * @author :
  357. * @---------------------------------------------------
  358. */
  359. function fAnstRecChecked(dsObj:Dataset, gridObj:Grid, levlColNm, checkedColNm, recColNm, rectypeColNm, recnmColNm, subrecColNm)
  360. {
  361. var dsgridObj = objects[gridObj.binddataset];
  362. for (var i=0 ; i < dsgridObj.rowcount ; i++) {
  363. dsgridObj.setColumn(i,checkedColNm, "false");
  364. dsgridObj.setColumn(i,subrecColNm, "");
  365. }
  366. var dataCnt = dsObj.rowcount;
  367. //그리드 트리뷰 에 체킹 표시
  368. for (var i = 0 ; i < dataCnt ; i++) {
  369. var recitem = dsObj.getColumn(i,levlColNm);
  370. var rectype = dsObj.getColumn(i, rectypeColNm);
  371. var recnm = dsObj.getColumn(i, recnmColNm);
  372. var subrec = dsObj.getColumn(i, subrecColNm);
  373. for (var j=0 ; j < dsgridObj.rowcount; j++) {
  374. var tmplevl = dsgridObj.getColumn(j, levlColNm);
  375. if (tmplevl == recitem) {
  376. dsgridObj.setColumn(j, checkedColNm, "true");
  377. if (rectype == "R" || rectype == "P") {
  378. if (!utlf_isNull(subrec)) {
  379. dsgridObj.setColumn(j,recColNm, fDisplayRec(recnm, subrec));
  380. dsgridObj.setColumn(j,subrecColNm,subrec);
  381. }
  382. }
  383. break;
  384. }
  385. }
  386. }
  387. }
  388. /**
  389. * @desc : 추가기록 정보 보여주기
  390. * @
  391. * @param :
  392. * @
  393. * @return :
  394. * @author :
  395. * @---------------------------------------------------
  396. */
  397. function fDisplayRec(recnm, subrec)
  398. {
  399. var recnmdata = recnm.split("_");
  400. if (recnmdata.length == 2) {
  401. recnm = recnmdata[0].replace("_","") + subrec + recnmdata[1].replace("_","");
  402. } else {
  403. recnm = recnm + " " + subrec;
  404. }
  405. return recnm;
  406. }
  407. /**
  408. * @desc : 추가기록 (예 : 몰핀 @ 수량 @ mg. -> 몰핀 45 mg. )
  409. * @
  410. * @param :
  411. * @return :
  412. * @---------------------------------------------------
  413. */
  414. function fAddSubRec()
  415. {
  416. // 선택 Row
  417. var selectedRow = ds_recmast_item.rowposition;
  418. ds_hidden.setColumn(0,"selectedrec", selectedRow);
  419. // checked 가 "true" 인가?
  420. var checked = ds_recmast_item.getColumn(selectedRow,"checked");
  421. if (checked == "true") {
  422. // subrec (추가기록정보가 있으면 input box에 적어주기
  423. var subrec = ds_recmast_item.getColumn(selectedRow,"subrec");
  424. ds_hidden.setColumn(0,"subrec", subrec);
  425. // 팝업으로 보여주자!!!
  426. fShowWndIptBox("subrec");
  427. } else {
  428. ds_hidden.setColumn(0,"subrec", "");
  429. }
  430. }
  431. /**
  432. * @desc : 그리드 트리뷰인 경우 선택에 의해 선택항목 체킹하여 bold체로 표현한다.
  433. * @ checked 가 true 이면 상위항목도 checked 를 true 로 한다.
  434. * @ checked 가 false 이면 하위항목도 checked 를 false 로 한다.
  435. * @param :
  436. * @ gridObj : grid 객체
  437. * @ depthColNm : depth 컬럼 참조
  438. * @ levlColNm : 레벨 컬럼 참조
  439. * @ suplevlColNm : 상위레벨 컬럼 참조
  440. * @ checkedCol : checked 컬럼 참조
  441. * @return :
  442. * @author :
  443. * @---------------------------------------------------
  444. */
  445. function fSetChecked(gridObj:Grid, depthColNm, levlColNm, suplevlColNm, checkedColNm)
  446. {
  447. // 선택된 로우에 대한 처리
  448. var dsgridObj = objects[gridObj.binddataset];
  449. var depth = dsgridObj.getColumn(dsgridObj.rowposition,depthColNm);
  450. var levl = dsgridObj.getColumn(dsgridObj.rowposition,levlColNm);
  451. var suplevl = dsgridObj.getColumn(dsgridObj.rowposition,suplevlColNm);
  452. var checked = dsgridObj.getColumn(dsgridObj.rowposition,checkedColNm);
  453. var checkedCol = gridObj.getBindCellIndex("body",checkedColNm);
  454. if (checked == "true") {
  455. for (var i = dsgridObj.rowposition; i >= 0 ; i--) {
  456. var tmpdepth = dsgridObj.getColumn(i,depthColNm);
  457. var tmplevl = dsgridObj.getColumn(i,levlColNm);
  458. var tmpsuplevl = dsgridObj.getColumn(i,suplevlColNm);
  459. var tmpchecked = dsgridObj.getColumn(i,checkedColNm);
  460. if (tmpdepth < 1) {
  461. break;
  462. }
  463. if (tmplevl == suplevl) {
  464. if (tmpchecked == checked) {
  465. break;
  466. }
  467. dsgridObj.setColumn(i, checkedColNm, checked);
  468. suplevl = tmpsuplevl;
  469. }
  470. }
  471. } else {
  472. for (var i = dsgridObj.rowposition+1; i < dsgridObj.rowcount; i++) {
  473. var tmpdepth = dsgridObj.getColumn(i,depthColNm);
  474. var tmplevl = dsgridObj.getColumn(i,levlColNm);
  475. var tmpsuplevl = dsgridObj.getColumn(i,suplevlColNm);
  476. if (tmpdepth <= depth) {
  477. break;
  478. }
  479. dsgridObj.setColumn(i, checkedColNm, checked);
  480. }
  481. }
  482. }
  483. /**
  484. * @desc : 처방마스터의 처방코드/처방명 검색
  485. * @param :
  486. * @
  487. * @return :
  488. * @author :
  489. * @---------------------------------------------------
  490. */
  491. function fGetPrcpDrugClscd()
  492. {
  493. currentdate = utlf_getCurrentDate() + utlf_getCurrentTime();
  494. ds_send_reqdata.setColumn(0,"currentdate", currentdate);
  495. var clscd = sw_left1.case_drug.cmb_clscd.value;
  496. ds_send_reqdata.setColumn(0,"data", "");
  497. ds_send_reqdata.setColumn(0,"clscd", clscd);
  498. ds_send_reqdata.setColumn(0,"prcptype","D");
  499. var oParam = {};
  500. oParam.id = "TRMMR04202";
  501. oParam.service = "anstrecapp.AnstRec";
  502. oParam.method = "reqGetPrcpMast";
  503. oParam.inds = "reqdata=ds_send_reqdata";
  504. oParam.outds = "ds_drug_item=item";
  505. oParam.async = false;
  506. oParam.callback = "cf_TRMMR04202_drug";
  507. tranf_submit(oParam);
  508. }
  509. /**
  510. * @desc : 처방마스터의 처방코드/처방명 검색
  511. * @param :
  512. * @
  513. * @return :
  514. * @author :
  515. * @---------------------------------------------------
  516. */
  517. function fSearchPrcpMast()
  518. {
  519. currentdate = utlf_getCurrentDate() + utlf_getCurrentTime();
  520. ds_send_reqdata.setColumn(0,"currentdate", currentdate);
  521. ds_send_reqdata.setColumn(0,"prcptype", "");
  522. ds_send_reqdata.setColumn(0,"clscd", "");
  523. var data = utlf_transNullToEmpty(sw_left1.case_search.ipt_search.value);
  524. ds_send_reqdata.setColumn(0,"data", data.toUpperCase());
  525. var oParam = {};
  526. oParam.id = "TRMMR04202";
  527. oParam.service = "anstrecapp.AnstRec";
  528. oParam.method = "reqGetPrcpMast";
  529. oParam.inds = "reqdata=ds_send_reqdata";
  530. oParam.outds = "ds_grd_search=item";
  531. oParam.async = false;
  532. oParam.callback = "cf_TRMMR04202_search";
  533. tranf_submit(oParam);
  534. }
  535. function cf_TRMMR04202_search(sSvcId, nErrorCode, sErrorMsg) {
  536. if(nErrorCode < 0) return;
  537. ds_grd_search.addColumn("checked","string");
  538. }
  539. /**
  540. * @desc : Agent, Drug, Fluid, Blood, Proc 에서의 처방추가 버튼 클릭
  541. * @param :
  542. * @
  543. * @return :
  544. * @author :
  545. * @---------------------------------------------------
  546. */
  547. function fAddBtnClick(prcptype, clscd)
  548. {
  549. if (prcptype == "A") {
  550. if (clscd == "02") {
  551. fAddAnstPrcp(sw_left1.case_agent.grd_agent02,ds_agent02_item);
  552. ds_agent_item.filter("clscd == '02'");
  553. ds_agent02_item.copyData(ds_agent_item,true);
  554. ds_agent_item.filter("");
  555. } else if (clscd == "03") {
  556. fAddAnstPrcp(sw_left1.case_agent.grd_agent03,ds_agent03_item);
  557. ds_agent_item.filter("clscd == '03'");
  558. ds_agent03_item.copyData(ds_agent_item,true);
  559. ds_agent_item.filter("");
  560. } else if (clscd == "04") {
  561. fAddAnstPrcp(sw_left1.case_agent.grd_agent04,ds_agent04_item );
  562. ds_agent_item.filter("clscd == '04'");
  563. ds_agent04_item.copyData(ds_agent_item,true);
  564. ds_agent_item.filter("");
  565. }
  566. } else if (prcptype == "D") {
  567. fAddAnstPrcp(sw_left1.case_drug.grd_drug,ds_drug_item);
  568. ds_prcpmast_item.filter("prcptype == 'D'");
  569. ds_drug_item.copyData(ds_prcpmast_item,true);
  570. ds_prcpmast_item.filter("");
  571. // 2008.01.04. drug... 선택한 소분류로 다시 조회하기..
  572. ds_send_reqdata.setColumn(0,"prcptype","D");
  573. ds_send_reqdata.setColumn(0,"currentdate",utlf_getCurrentDate());
  574. var oParam = {};
  575. oParam.id = "TRMMR04202_drug";
  576. oParam.service = "anstrecapp.AnstRec";
  577. oParam.method = "reqGetPrcpMast";
  578. oParam.inds = "reqdata=ds_send_reqdata";
  579. oParam.outds = "ds_drug_item=item";
  580. oParam.async = false;
  581. oParam.callback = "cf_TRMMR04202_drug";
  582. tranf_submit(oParam);
  583. } else if (prcptype == "F") {
  584. fAddAnstPrcp(sw_left1.case_fluid.grd_fluid,ds_fluid_item);
  585. ds_prcpmast_item.filter("prcptype == 'F'");
  586. ds_fluid_item.copyData(ds_prcpmast_item,true);
  587. ds_prcpmast_item.filter("");
  588. } else if (prcptype == "H") {
  589. fAddAnstPrcp(sw_left1.case_fluid.grd_fluid,ds_blod_item);
  590. ds_prcpmast_item.filter("prcptype == 'H'");
  591. ds_blod_item.copyData(ds_prcpmast_item,true);
  592. ds_prcpmast_item.filter("");
  593. } else if (prcptype == "P") {
  594. fAddAnstPrcp(sw_left1.case_proc.grd_proc,ds_proc_item);
  595. ds_prcpmast_item.filter("prcptype == 'P'");
  596. ds_proc_item.copyData(ds_prcpmast_item,true);
  597. ds_prcpmast_item.filter("");
  598. } else if (prcptype == "S") {
  599. fAddAnstPrcp(sw_left1.case_set.grd_prcpset,ds_prcpsetitem_item);
  600. ds_prcpsetitem_item.copyData(ds_prcpset_item,true);
  601. } else if (prcptype == "Z") {
  602. fAddAnstPrcp(sw_left1.case_search.grd_search,ds_grd_search);
  603. //2014/01/03
  604. ds_grd_search.setColumn(ds_grd_search.rowposition,"checked","false");
  605. //2014/01/03
  606. }
  607. }
  608. function cf_TRMMR04202_drug(sSvcId, nErrorCode, sErrorMsg) {
  609. if(nErrorCode < 0) return;
  610. ds_drug_item.addColumn("checked","string");
  611. }
  612. /**
  613. * @desc : 처방추가 버튼 클릭시 처방목록에 추가한다.
  614. * @param :
  615. * @
  616. * @return :
  617. * @author :
  618. * @---------------------------------------------------
  619. */
  620. function fAddAnstPrcp(gridObj, objDs:Dataset)
  621. {
  622. // 처방목록 노드
  623. //var AddRef = "/root/main/anstprcp/item";
  624. // 노드 갯수를 가져온후 노드 하나를 추가한다.
  625. var dataCnt =parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.rowcount;
  626. // agent, drug, fluid, blood, prog
  627. for (var i=0 ; i < objDs.rowcount ; i++) {
  628. if (objDs.getColumn(i,"checked") == "1")
  629. {
  630. objDs.setColumn(i,"checked","true");
  631. }
  632. var checked = objDs.getColumn(i,"checked");
  633. if (checked == "true" ) {
  634. var prcpcd = objDs.getColumn(i,"prcpcd");
  635. if (!utlf_isNull(prcpcd)) {
  636. var prcpcd = objDs.getColumn(i,"prcpcd");
  637. var prcptype = objDs.getColumn(i,"prcptype");
  638. var clscd = objDs.getColumn(i,"clscd");
  639. var prcpnm = objDs.getColumn(i,"prcpnm");
  640. var abbrnm = objDs.getColumn(i,"abbrnm");
  641. var prcpvol = objDs.getColumn(i,"prcpvol");
  642. var prcpvolunitnm = objDs.getColumn(i,"prcpvolunitnm");
  643. var drugmthdcd = objDs.getColumn(i,"drugmthdcd");
  644. var prcpappyn = objDs.getColumn(i,"prcpappyn");
  645. var totvolyn = objDs.getColumn(i,"totvolyn");
  646. var sortno = objDs.getColumn(i,"sortno");
  647. // 처방목록에 처방코드가 있는가?
  648. var cntprcpcd = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getCaseCount("prcpcd == '" + prcpcd + "'");
  649. if (cntprcpcd > 0 && prcptype != "F") {
  650. sysf_messageBox("이미 추가되었습니다. - [" + prcpnm+ "]", "E");
  651. } else {
  652. // 처방코드가 없다면 추가하자..
  653. var checkValue = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(dataCnt-1,"prcpnm");
  654. if (!utlf_isNull(checkValue) || dataCnt == "0") {
  655. dataCnt = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.addRow();
  656. }
  657. // 2008.09.23. 어렵다..
  658. var prcpseqno = 0;
  659. for (var j=0 ; j < dataCnt ; j++) {
  660. var tmp = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(j,"prcpcd");
  661. if (tmp == prcpcd) {
  662. prcpseqno = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(j,"prcpseqno");
  663. }
  664. }
  665. prcpseqno = parseInt(prcpseqno) + 1;
  666. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"prcpcd" , prcpcd);
  667. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"prcptype" , prcptype);
  668. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"prcpvol" , "");
  669. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"prcpvolunitnm" , prcpvolunitnm);
  670. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"prcpvolunitnm2", prcpvolunitnm);
  671. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"prcpnm" , prcpnm);
  672. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"abbrnm" , abbrnm);
  673. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"drugmthdcd" , drugmthdcd);
  674. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"recvol" , "");
  675. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"remark" , "");
  676. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"clscd" , clscd);
  677. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"prcpappyn" , prcpappyn);
  678. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"totvolyn" , totvolyn);
  679. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"sortno" , sortno);
  680. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"pcaflag" , "N");
  681. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"checked" , checked);
  682. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  683. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(dataCnt ,"prcpseqno" , prcpseqno);
  684. parent.parent.parent.parent.fAddRow(prcptype, prcpcd, sortno, prcpseqno);
  685. }
  686. }
  687. }
  688. }
  689. // 그리드 정렬후 노드셋 정렬
  690. parent.parent.case_anstprcp.iv_anstprcp.fSetAnstPrcp();
  691. // 메인 그리드 정렬
  692. //2014/05/16 이정택 수정
  693. parent.parent.parent.parent.fGridSort();
  694. //2014/05/16 이정택 수정
  695. //2012/12/26 Start 기록 & 처방에서 입력했을시에 오른쪽에 줄 반영
  696. parent.parent.parent.parent.fSetGrdColor();
  697. //2012/12/26 end
  698. }
  699. /**
  700. * @desc : 마우스 오른쪽 버튼 팝업창
  701. * @
  702. * @param :
  703. * @return :
  704. * @---------------------------------------------------
  705. *
  706. */
  707. function fMouseRghtBtnPopup(gridObj:Grid, job, e:GridMouseEventInfo)
  708. {
  709. if(e.row < 0 || e.col < 0) return;
  710. gridObj.setFocus();
  711. grdf_setSelectedCell(gridObj, e);
  712. gridObj.oncellclick.fireEvent(gridObj, new GridClickEventInfo());
  713. if (job == "subrec") {
  714. // checked "true" 이고 rectype 이 기록(R) 인 경우에만 팝업처리
  715. // checked 가 "true" 인가?
  716. var checked = gridObj.getCellText(gridObj.currentrow, gridObj.getBindCellIndex("body","checked"));
  717. if (checked == "true") {
  718. // rectype 이 기록(R) 인가?
  719. var rectype = gridObj.getCellText(gridObj.currentrow, gridObj.getBindCellIndex("body","rectype"));
  720. if (rectype == "R") {
  721. pmnmenu2.trackPopup(e.screenX,e.screenY);
  722. }
  723. }
  724. } else if (job == "search") {
  725. // 처방 에서 우클릭시 약품편람 팝업
  726. if (gridObj.currentrow >= 0) {
  727. pmnmenu7.trackPopup(e.screenX,e.screenY);
  728. }
  729. }
  730. }
  731. /**
  732. * @desc :마취기록 추가기록의 팝업
  733. * @
  734. * @param :
  735. * @return :
  736. * @---------------------------------------------------
  737. */
  738. function fShowWndIptBox(job)
  739. {
  740. sw_left1.case_rec.grup_subrec.visible = false;
  741. if (job == "subrec") {
  742. if (system.clientToScreenY < 700) {
  743. sw_left1.case_rec.grup_subrec.position.top = system.clientToScreenY-70;
  744. } else {
  745. sw_left1.case_rec.grup_subrec.position.top = system.clientToScreenY-150;
  746. }
  747. sw_left1.case_rec.grup_subrec.visible = true;
  748. }
  749. }
  750. /**
  751. * @desc : 추가기록 내용 마취기록에 적용하기..
  752. * @
  753. * @param :
  754. * @return :
  755. * @---------------------------------------------------
  756. *
  757. */
  758. function fSendSubRec()
  759. {
  760. // 선택 Row
  761. var selectedRow = ds_hidden.getColumn(0,"selectedrec");
  762. if (selectedRow > 0) {
  763. // checked 가 "true" 인가?
  764. var checked = ds_recmast_item.getColumn(selectedRow,"checked");
  765. if (checked == "true") {
  766. // rectype 이 기록(R), 처방(P) 인가?
  767. var rectype = ds_recmast_item.getColumn(selectedRow,"rectype");
  768. if (rectype == "R" || rectype == "P") {
  769. var recnm = ds_recmast_item.getColumn(selectedRow,"recnm");
  770. var subrec = ds_hidden.getColumn(0,"subrec");
  771. ds_recmast_item.setColumn(selectedRow,"rec", fDisplayRec(recnm, subrec));
  772. ds_recmast_item.setColumn(selectedRow,"subrec", subrec);
  773. }
  774. }
  775. }
  776. sw_left1.case_rec.grup_subrec.visible = false;
  777. ds_recmast_item.filter("checked == 'true'");
  778. ds_recmast_item.applyChange();
  779. // 기록 마스터의 체크된 정보를 마취환자 기록 인스턴스에 카피노드 하기..
  780. ds_anstrec_item.copyData(ds_recmast_item,true);
  781. ds_recmast_item.filter("");
  782. // 마취기록 체킹해주기
  783. fAnstRecChecked(ds_anstrec_item, sw_left1.case_rec.grd_recmast, "recitem", "checked", "rec", "rectype", "recnm", "subrec");
  784. }
  785. /**
  786. * @group : SET 버튼 클릭시 SET 목록 조회하여 콤보 초기화 or 리셋
  787. * @---------------------------------------------------
  788. * @type : function
  789. * @access : public
  790. * @desc :
  791. * @---------------------------------------------------
  792. */
  793. function fComboSetlist()
  794. {
  795. ds_send_reqdata.setColumn(0,"settype","P");
  796. var oParam = {};
  797. oParam.id = "TRMMR04204";
  798. oParam.service = "anstrecapp.AnstRec";
  799. oParam.method = "reqGetAnstSet";
  800. oParam.inds = "reqdata=ds_send_reqdata";
  801. oParam.outds = "ds_init_setlist=item";
  802. oParam.async = false;
  803. oParam.callback = "cf_TRMMR04204_2";
  804. tranf_submit(oParam);
  805. }
  806. /**
  807. * @group : SET 목록 조회 선택시 SET 아이템 보여주기
  808. * @---------------------------------------------------
  809. * @type : function
  810. * @access : public
  811. * @desc :
  812. * @---------------------------------------------------
  813. */
  814. function fRecSetItemDisplay()
  815. {
  816. var recsetcd = sw_left1.case_rec.cbo_recsetlist.value;
  817. parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.setColumn(0,"recsetcd" , ds_send_reqdata.getColumn(0,"recsetcd"));
  818. ds_send_setinfo.setColumn(0,"instcd" , instcd);
  819. ds_send_setinfo.setColumn(0,"settype", "R");
  820. ds_send_setinfo.setColumn(0,"setcd" , recsetcd);
  821. // 현재일시
  822. currentdate = utlf_getCurrentDate() + utlf_getCurrentTime();
  823. ds_send_setinfo.setColumn(0,"currentdate" , currentdate);
  824. if (sw_left1.case_rec.cbo_recsetlist.value != "-1")
  825. {
  826. // 마취기록 SET 아이템 조회하기..
  827. dsf_setTypeFormat(ds_send_setinfo, "setcd:INT");
  828. var oParam = {};
  829. oParam.id = "TRMMR04205";
  830. oParam.service = "anstrecapp.AnstRec";
  831. oParam.method = "reqGetRecSetItem";
  832. oParam.inds = "setinfo=ds_send_setinfo";
  833. oParam.outds = "ds_recmast_item=item";
  834. oParam.async = false;
  835. oParam.callback = "cf_TRMMR04205_2";
  836. tranf_submit(oParam);
  837. } else {
  838. // 마취기록 마스터 정보 조회
  839. var oParam = {};
  840. oParam.id = "TRMMR04201";
  841. oParam.service = "anstrecapp.AnstRec";
  842. oParam.method = "reqGetRecMast";
  843. oParam.inds = "reqdata=ds_send_reqdata";
  844. oParam.outds = "ds_recmast_item=item";
  845. oParam.async = false;
  846. oParam.callback = "cf_TRMMR04205_2";
  847. tranf_submit(oParam);
  848. }
  849. }
  850. function cf_TRMMR04201(sSvcId, nErrorCode, sErrorMsg) {
  851. if(nErrorCode < 0) return;
  852. }
  853. /**
  854. * @group : SET 목록 조회 선택시 SET 아이템 보여주기
  855. * @---------------------------------------------------
  856. * @type : function
  857. * @access : public
  858. * @desc :
  859. * @---------------------------------------------------
  860. */
  861. function fPrcpSetItemDisplay()
  862. {
  863. ds_send_setinfo.setColumn(0,"instcd",instcd);
  864. ds_send_setinfo.setColumn(0,"settype","P");
  865. ds_send_setinfo.setColumn(0,"setcd",sw_left1.case_set.cbo_setlist.value);
  866. // 현재일시
  867. currentdate = utlf_getCurrentDate() + utlf_getCurrentTime();
  868. ds_send_setinfo.setColumn(0,"currentdate" , currentdate);
  869. // 마취처방 SET 아이템 조회하기..
  870. dsf_setTypeFormat(ds_send_setinfo, "setcd:INT");
  871. var oParam = {};
  872. oParam.id = "TRMMR04206";
  873. oParam.service = "anstrecapp.AnstRec";
  874. oParam.method = "reqGetPrcpSetItem";
  875. oParam.inds = "setinfo=ds_send_setinfo";
  876. oParam.outds = "ds_prcpset_item=item";
  877. oParam.async = false;
  878. oParam.callback = "cf_TRMMR04206";
  879. tranf_submit(oParam);
  880. //
  881. }
  882. function cf_TRMMR04206(sSvcId, nErrorCode, sErrorMsg) {
  883. if(nErrorCode < 0)
  884. {
  885. return;
  886. }
  887. else
  888. {
  889. ds_prcpset_item.addColumn("checked","string");
  890. ds_prcpset_item.addColumn("depth","string");
  891. ds_prcpset_item.addColumn("remark","string");
  892. ds_prcpset_item.addColumn("recvol","string");
  893. ds_prcpsetitem_item.copyData(ds_prcpset_item);
  894. }
  895. }
  896. /**
  897. * @desc : 종료일시 적용 (선택된 Inhalational Agent)
  898. * @
  899. * @param :
  900. * @return :
  901. * @---------------------------------------------------
  902. */
  903. function fSetAnstToDt()
  904. {
  905. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간이랑 선택할 시작시간이 같으면 선택시간 변경한다..
  906. var anstfromdt = parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromdd") + parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromtm");
  907. var agenttodd = parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttodd");
  908. var agenttotm = parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttotm");
  909. var todt = agenttodd + agenttotm;
  910. if (anstfromdt > todt)
  911. {
  912. alert("종료일시가 마취시작일시 보다 작습니다.");
  913. return;
  914. }
  915. for (var i=0 ; i < ds_agent01_item.rowcount ; i++) {
  916. var checked = ds_agent01_item.getColumn(i,"checked");
  917. var depth = ds_agent01_item.getColumn(i,"depth");
  918. if (checked == "true" && depth == "1") {
  919. ds_agent01_item.setColumn(i,"drugtodd",agenttodd);
  920. ds_agent01_item.setColumn(i,"drugtotm",agenttotm);
  921. }
  922. }
  923. sw_left1.case_agent.grd_agent01.redraw();
  924. }
  925. /**
  926. * @desc : col = checked : 처방 목록 체크박스 클릭시 처방목록에서 추가/삭제 하고 메인 그리드에서 추가/삭제한다.
  927. * @
  928. * @param :
  929. * @return :
  930. * @---------------------------------------------------
  931. */
  932. function fCheckedPrcpA01(gridObj:Grid, objDs:Dataset, row)
  933. {
  934. if (gridObj.currentcol == gridObj.getBindCellIndex("body","checked")) {
  935. var checked = objDs.getColumn(row,"checked");
  936. var depth = objDs.getColumn(row,"depth");
  937. if ((checked == "false" || checked == "0") && depth == "1") {
  938. // 처방목록에서 삭제 하시겠습니까?
  939. var result = alert("처방목록에서 삭제 하시겠습니까?", "", 4 | 32 | 256);
  940. if (result == 6) { // yes
  941. // 삭제해주자
  942. fDelAnstPrcpA01(gridObj, objDs, row);
  943. } else {
  944. objDs.setColumn(row,"checked", "true");
  945. }
  946. } else if (checked == "true" || checked == "1") {
  947. // 추가해주자
  948. fAddAnstPrcpA01(gridObj, objDs, row);
  949. }
  950. }
  951. }
  952. /**
  953. * @desc : Agent 마스터 그리드 선택시 전체 처방 목록에 추가한다.
  954. * @ - Agent 의 소분류 01 (Inhalational Agent)
  955. * @ - 전체 처방목록에 있으면 skip
  956. * @param :
  957. * @
  958. * @return :
  959. * @author :
  960. * @---------------------------------------------------
  961. */
  962. function fAddAnstPrcpA01(gridObj:Grid, objDs:Dataset, row)
  963. {
  964. var prcpcd = objDs.getColumn(row,"prcpcd");
  965. var prcptype = objDs.getColumn(row,"prcptype");
  966. var clscd = objDs.getColumn(row,"clscd");
  967. var prcpnm = objDs.getColumn(row,"prcpnm");
  968. var abbrnm = objDs.getColumn(row,"abbrnm");
  969. var prcpvol = objDs.getColumn(row,"prcpvol");
  970. var prcpvolunitnm = objDs.getColumn(row,"prcpvolunitnm");
  971. var drugmthdcd = objDs.getColumn(row,"drugmthdcd");
  972. var prcpappyn = objDs.getColumn(row,"prcpappyn");
  973. var totvolyn = objDs.getColumn(row,"totvolyn");
  974. var sortno = objDs.getColumn(row,"sortno");
  975. // 처방목록 노드
  976. //var AddRef = "/root/main/anstprcp/item";
  977. // 처방목록에 처방코드가 있는가?
  978. var cntprcpcd = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getCaseCount("prcpcd == '" + prcpcd + "'");
  979. // 처방목록에 처방코드가 없는가? add
  980. if ( cntprcpcd > 0 ) {
  981. alert("이미 추가되었습니다. - [" + prcpnm+ "]");
  982. return;
  983. } else {
  984. // 노드 갯수를 가져온후 노드 하나를 추가한다.
  985. var dataCnt = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.rowcount;
  986. //var checkValue = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(dataCnt-1,"prcpnm");
  987. // 2008.09.23. 어렵다..
  988. var prcpseqno = 0;
  989. if(utlf_isNull(parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd",prcpcd,"prcpseqno")))
  990. {
  991. prcpseqno = 0;
  992. }
  993. else
  994. {
  995. prcpseqno = utlf_transNullToEmpty(parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd",prcpcd,"prcpseqno"));
  996. }
  997. prcpseqno = parseInt(prcpseqno) + 1;
  998. var newrow = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.addRow();
  999. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"prcpcd" , prcpcd);
  1000. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"prcptype" , prcptype);
  1001. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"prcpvol" , "");
  1002. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"prcpvolunitnm" , prcpvolunitnm);
  1003. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"prcpvolunitnm2", prcpvolunitnm);
  1004. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"prcpnm" , prcpnm);
  1005. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"abbrnm" , abbrnm);
  1006. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"drugmthdcd" , drugmthdcd);
  1007. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"recvol" , "");
  1008. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"remark" , "");
  1009. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"clscd" , clscd);
  1010. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"prcpappyn" , prcpappyn);
  1011. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"totvolyn" , totvolyn);
  1012. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"sortno" , sortno);
  1013. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"pcaflag" , "N");
  1014. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"checked" , "true");
  1015. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  1016. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(newrow,"prcpseqno" , prcpseqno);
  1017. // 그리드 정렬후 노드셋 정렬
  1018. parent.parent.case_anstprcp.iv_anstprcp.fSetAnstPrcp();
  1019. parent.parent.parent.parent.fAddRow(prcptype, prcpcd, sortno, prcpseqno);
  1020. // 메인 그리드 정렬
  1021. parent.parent.parent.parent.fGridSort();
  1022. // 2008.10.03. 검색에서 찾은 처방코드를 선택해 주자~~
  1023. ds_agent01_item.setColumn(ds_agent01_item.findRowExpr("prcpcd=='" + prcpcd + "'"),"checked","true");
  1024. }
  1025. }
  1026. /**
  1027. * @desc : Agent 마스터 그리드 선택 취소시 전체 처방 목록에 삭제한다.
  1028. * @ - Agent 의 소분류 01 (Inhalational Agent)
  1029. * @ - 전체 처방목록에서 del
  1030. * @param :
  1031. * @
  1032. * @return :
  1033. * @author :
  1034. * @---------------------------------------------------
  1035. */
  1036. function fDelAnstPrcpA01(gridObj, objDs:Dataset, row)
  1037. {
  1038. // 처방목록 노드
  1039. // 노드 갯수를 가져오기
  1040. var dataCnt = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.rowcount;
  1041. var prcpcd = objDs.getColumn(row,"prcpcd");
  1042. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  1043. var prcpseqno = objDs.getColumn(row,"prcpseqno");
  1044. // 처방목록에 처방코드가 있는가? 삭제
  1045. for (var j=0 ; j < dataCnt ; j++) {
  1046. var tmpprcptype = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(j,"prcptype");
  1047. var tmpclscd = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(j,"clscd");
  1048. var tmpprcpcd = parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(j,"prcpcd");
  1049. var tmpprcpseqno= parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(j,"prcpseqno");
  1050. if (tmpprcptype == "A" && tmpclscd == "01" && tmpprcpcd == prcpcd && tmpprcpseqno == prcpseqno) {
  1051. // 전체 처방목록의 항목 삭제
  1052. parent.parent.case_anstprcp.iv_anstprcp.ds_anstprcp_item.deleteRow(j);
  1053. // 투여일시 인스턴스도 삭제
  1054. parent.parent.parent.parent.fDestroyAnstItem(ds_anstitem, prcpcd, prcpseqno);
  1055. // 그리드 정렬후 노드셋 정렬
  1056. parent.parent.case_anstprcp.iv_anstprcp.fSetAnstPrcp();
  1057. break;
  1058. }
  1059. }
  1060. }
  1061. /**
  1062. * @group : 혈액리스트 조회
  1063. * @---------------------------------------------------
  1064. * @type : function
  1065. * @access : public
  1066. * @desc :
  1067. * @---------------------------------------------------
  1068. */
  1069. function fGetBlodList()
  1070. {
  1071. //pid = "12158831";
  1072. //ioflag = "o";
  1073. ds_send_reqdata.setColumn(0,"pid" , parent.parent.case_anstinfo.iv_anstinfo.pid);
  1074. ds_send_reqdata.setColumn(0,"ioflag" , parent.parent.case_anstinfo.iv_anstinfo.ioflag);
  1075. // prcpfromdd, prcptodd (수술예약등록일자, 수술확정일자)
  1076. var prcpfromdd = parent.parent.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"rgstdd");
  1077. var prcptodd = parent.parent.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"opcnfmdd");
  1078. var ansttodd = parent.parent.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttodd");
  1079. ds_send_reqdata.setColumn(0,"prcpfromdd" ,prcpfromdd);
  1080. ds_send_reqdata.setColumn(0,"prcptodd" ,prcptodd);
  1081. ds_send_reqdata.setColumn(0,"ansttodd" ,ansttodd);
  1082. // 혈액리스트 조회하기..
  1083. var oParam = {};
  1084. oParam.id = "TRMMR03713";
  1085. oParam.service = "anstrecapp.AnstRec";
  1086. oParam.method = "reqGetBlodList";
  1087. oParam.inds = "reqdata=ds_send_reqdata";
  1088. oParam.outds = "ds_blodlist_item=item";
  1089. oParam.async = false;
  1090. oParam.callback = "cf_TRMMR03713";
  1091. tranf_submit(oParam);
  1092. }
  1093. function cf_TRMMR03713(sSvcId, nErrorCode, sErrorMsg) {
  1094. if(nErrorCode < 0) return;
  1095. }
  1096. /**
  1097. * @group : 약품편람 팝업처리
  1098. * @---------------------------------------------------
  1099. * @type : function
  1100. * @access : public
  1101. * @desc :
  1102. * @---------------------------------------------------
  1103. */
  1104. function fDrugInfo() {
  1105. frmf_modal ( "SMADB01900","SMADB01900","","","","","","","","","","","M" );
  1106. }
  1107. /**
  1108. * @group : 혈액리스트 더블클릭시 혈액관련 처방항목 체크하여 항목추가한다.
  1109. * @---------------------------------------------------
  1110. * @type : function
  1111. * @access : public
  1112. * @desc :
  1113. * @---------------------------------------------------
  1114. */
  1115. function fSetBlodChecked() {
  1116. // 혈액리스트에서 선택된 혈액 처방코드를 읽는다.
  1117. var prcpcd = ds_blodlist_item.getColumn(ds_blodlist_item.rowposition,"prcpcd");
  1118. for (var i=0 ; i < ds_blod_item.rowcount ; i++) {
  1119. var tempprcpcd = ds_blod_item.getColumn(i,"prcpcd");
  1120. if (tempprcpcd == prcpcd) {
  1121. ds_blod_item.setColumn(i,"checked", "true");
  1122. break;
  1123. }
  1124. }
  1125. if (i < ds_blod_item.rowcount ) {
  1126. fAddBtnClick("H");
  1127. } else {
  1128. alert("마스터에 등록된 혈액종류가 아닙니다.");
  1129. }
  1130. }
  1131. /**
  1132. * @group : 혈액리스트 마우스 우클릭 후 혈액번호 복사 버튼 클릭 시 복사할 대상 행을 체크 할 수 있도록 UI visible
  1133. * @---------------------------------------------------
  1134. * @type : function
  1135. * @access : public
  1136. * @desc :
  1137. * @---------------------------------------------------
  1138. */
  1139. function fSetBlodno()
  1140. {
  1141. ds_grd_blodcopylist.clearData();
  1142. var rows = parent.parent.parent.parent.ds_grd_prog.rowcount;
  1143. for(i=0; i<rows; i++)
  1144. {
  1145. ds_grd_blodcopylist.addRow();
  1146. ds_grd_blodcopylist.setColumn(i,"seq", i+1);
  1147. ds_grd_blodcopylist.setColumn(i,"chk", "");
  1148. }
  1149. //sw_left1.case_fluid.grup_blodcopyform.grd_blodcopylist.redraw();
  1150. ds_grd_blodcopylist.rowposition = 0;
  1151. sw_left1.case_fluid.grup_blodcopyform.visible = true;
  1152. }
  1153. /**
  1154. * @group : 복사할 대상 행을 체크 하고 확인 버튼을 누르면 progress에 대상 혈액번호를 copy해준다.(single, multi)
  1155. * @---------------------------------------------------
  1156. * @type : function
  1157. * @access : public
  1158. * @desc :
  1159. * @---------------------------------------------------
  1160. */
  1161. function fCopyBlodno()
  1162. {
  1163. sw_left1.case_fluid.grup_blodcopyform.visible = false;
  1164. var seq = ds_grd_blodcopylist.lookup("chk" ,"1","seq");
  1165. var blodno = "";
  1166. var selectedRows = grdf_getSelectedRows( this.sw_left1.case_fluid.grd_blodlist);
  1167. if (selectedRows.length > 1)
  1168. {
  1169. for(i=0; i<selectedRows.length ; i++ )
  1170. {
  1171. blodno = blodno + ds_blodlist_item.getColumn(selectedRows[i], "prepblodseqno") + ", "
  1172. }
  1173. }
  1174. else
  1175. {
  1176. blodno = ds_blodlist_item.getColumn(ds_blodlist_item.rowposition,"prepblodseqno") + ", ";
  1177. }
  1178. var predata = utlf_transNullToEmpty(parent.parent.parent.parent.ds_grd_prog.getColumn(seq-1, "progrec"));
  1179. if (!utlf_isNull(predata))
  1180. {
  1181. predata = predata + ", ";
  1182. }
  1183. parent.parent.parent.parent.ds_grd_prog.setColumn(seq -1 , "progrec", predata + blodno.substr(0, blodno.length-2));
  1184. }
  1185. ]]></Script>