LAZ001.xjs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  3. * System Name : HIT
  4. * Job Name :
  5. * File Name : LAZ001.xjs
  6. * Creator : LISBC
  7. * Make Date : 2014-02-05
  8. *
  9. * Description : 진단검사 공통 JS 파일
  10. *---------------------------------------------------------------------------------------
  11. * Modify Date Modifier Modify Description
  12. *---------------------------------------------------------------------------------------
  13. * 2014-02-18 HIT
  14. * xxxxxxxxxxx
  15. *---------------------------------------------------------------------------------------
  16. ****************************************************************************************/
  17. /**********************************************************************************
  18. * Name : gf_calcSingle
  19. * Description : 진검 계산식
  20. * Argument : pRow (데이터를 입력한 row), pForm [호출하는 화면명), pMainRow (검사항목별일 경우 화면에 보이는 메인 그리드 row)
  21. * return Type : Null
  22. * Author : Autumn
  23. ***********************************************************************************/
  24. function gf_calcSingle (pRow, pForm, pMainRow) {
  25. var sPID = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow,"pid"));
  26. var vDScript = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow,"calformcnts"));
  27. var vAppTestcnt = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow,"apptestcnt"));
  28. var vAppTclscd = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow,"apptclscd"));
  29. var vAcptA = new Array(10);
  30. var r = "";
  31. if (vDScript.getTrim() != "") {
  32. var vAcptCnt = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow,"acptcnt"));
  33. vDScript = gf_calcDScript (vDScript, vAcptCnt) ;
  34. vDScript = gf_patBaseCalcInfo(vDScript, sPID); //환자기본정보 파라미터 replace
  35. vDScript = gf_calcValue (pRow, vDScript, vAcptCnt, pForm, "SINGLE");
  36. var rslt = gf_calcEval(vDScript);
  37. // 호출하는 화면에 따라 나머지를 처리한다.
  38. switch (pForm) {
  39. case "SSLLR80100" :
  40. var strLHR10001 = true;
  41. if (vAppTclscd.getTrim() != "") {
  42. var vApplytclscdA = vAppTclscd.split(",");
  43. for (var i = 0; i < vApplytclscdA.length; i++) {
  44. if ( vApplytclscdA[i].getTrim() == "B105000001"
  45. && (utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow,"inptrslt")) == "" || utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow,"inptrslt")) == 0)){
  46. strLHR10001 = false;
  47. }
  48. var findrow = ds_grid_grd_TestInfoCnts.findRow("testcd",vApplytclscdA[i].getTrim());
  49. if(findrow < 0){ // 못찾으면 abnormal 검색한다.
  50. var n = ds_abnormallist.rowcount;
  51. for(k = 0; k < n; k++){
  52. if(strLHR10001 && utlf_transNullToEmpty(ds_abnormallist.getColumn(k,"testcd")) == vApplytclscdA[i].getTrim()){
  53. nRow = ds_copy_abnormallist.addRow();
  54. ds_copy_abnormallist.copyRow(nRow,ds_abnormallist,k);
  55. lf_lIbAbResult(utlf_transNullToEmpty(ds_abnormallist.getColumn(k,"testcd2")) , rslt);
  56. break;
  57. }
  58. }
  59. if(utlf_transNullToEmpty(ds_abnormallist.getColumn(k,"parentidx")) == pRow) {
  60. r = "C";
  61. }
  62. } else {
  63. ds_grid_grd_TestInfoCnts.setColumn(findrow,"bufinptrslt",rslt);
  64. lf_cvtResultCode(findrow);
  65. gv_rowCulcu = true;
  66. ds_grid_grd_TestInfoCnts.rowposition = findrow;
  67. grp2.grd_TestInfoCnts.setCellPos(grp2.grd_TestInfoCnts.getBindCellIndex("Body","bufinptrslt"));
  68. grp2.grd_TestInfoCnts.setFocus();
  69. gv_rowCulcu = false;
  70. lf_cvtViewResult();
  71. //if ((utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"reptrslt")) == "")
  72. if ((utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"inptrslt")) == "")
  73. && (utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"tclskind")) == "5")) {
  74. if(utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"rsltstat")) == "-") { //결과저장하기 전.
  75. //if(utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"bfreptrslt")) == "") { //이전결과가 없는경우.
  76. if(utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"bfinptrslt")) == "") { //이전결과가 없는경우.
  77. ds_grid_grd_TestInfoCnts.deleteRow(findrow); //row 삭제
  78. }
  79. } else {
  80. //if(utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"bfreptrslt")) == "") { //이전결과가 없는경우.
  81. if(utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"bfinptrslt")) == "") { //이전결과가 없는경우.
  82. ds_grid_grd_TestInfoCnts.setColumn(findrow, "visible", "false");
  83. ds_grid_grd_TestInfoCnts.filter("visible != 'false'");
  84. }
  85. }
  86. }
  87. }
  88. }
  89. }
  90. return r;
  91. case "SMLLR00400" :
  92. case "SMLLR00500" :
  93. var vCdList = ds_cond_refparam.getColumn(0, "tclscdlist2").split("▦");
  94. var pos = -1;
  95. for(var i = 0; i < vCdList.length; i++) {
  96. if(vCdList[i] == vAppTclscd) {
  97. pos = i;
  98. break;
  99. }
  100. }
  101. if (pos > -1) {
  102. var readonly = ds_grid_grd_testlist.getColumn(pMainRow, "readonly" + (pos+1));
  103. if( readonly != "1" ){
  104. lf_calcRsltEnterKey(rslt, pMainRow, pos + gStartCol);
  105. }
  106. }
  107. break;
  108. }
  109. }
  110. }
  111. /**********************************************************************************
  112. * Name : gf_calcMulty
  113. * Description : 진검 계산식 팝업시 사용 (단 한 검체번호인 경우만 적용됨)
  114. * Argument : pForm [호출하는 화면명), bPopup(화면 호픈여부), bValueCheck
  115. * return Type :
  116. * Author : Autumn
  117. ***********************************************************************************/
  118. function gf_calcMulty (pForm, bPopup, bValueCheck) {
  119. ds_grid_grd_Calcu_TestInfoCnts.clearData();
  120. var apptclscd = "";
  121. var spccd = "";
  122. var calformcnts = "";
  123. var sFindRow = -1;
  124. var nRow = -1;
  125. var sPID = "";
  126. for (var i = 0; i < ds_grid_grd_TestInfoCnts.rowcount; i++) {
  127. sPID = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(i, "pid"));
  128. apptclscd = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(i, "apptclscd"));
  129. spccd = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(i, "spccd"));
  130. calformcnts = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(i, "calformcnts"));
  131. if (apptclscd == "" || spccd == "" || calformcnts == "") continue;
  132. sFindRow = ds_grid_grd_Calcu_TestInfoCnts.findRowExpr("apptclscd=='"+apptclscd+"' && spccd=='"+spccd+"'");
  133. if (sFindRow == -1) {
  134. nRow = ds_grid_grd_Calcu_TestInfoCnts.addRow();
  135. ds_grid_grd_Calcu_TestInfoCnts.copyRow(nRow, ds_grid_grd_TestInfoCnts, i);
  136. }
  137. }
  138. //abnormal 계산식 있는지 검색
  139. for (var i = 0; i < ds_abnormallist.rowcount; i++) {
  140. apptclscd = utlf_transNullToEmpty(ds_abnormallist.getColumn(i, "apptclscd"));
  141. spccd = utlf_transNullToEmpty(ds_abnormallist.getColumn(i, "spccd"));
  142. calformcnts = utlf_transNullToEmpty(ds_abnormallist.getColumn(i, "calformcnts"));
  143. if (apptclscd == "" || spccd == "" || calformcnts == "") continue;
  144. sFindRow = ds_grid_grd_Calcu_TestInfoCnts.findRowExpr("apptclscd=='"+apptclscd+"' && spccd=='"+spccd+"'");
  145. if (sFindRow == -1) {
  146. nRow = ds_grid_grd_Calcu_TestInfoCnts.addRow();
  147. ds_grid_grd_Calcu_TestInfoCnts.copyRow(nRow, ds_abnormallist, i);
  148. }
  149. }
  150. ds_grid_grd_Calcu.clearData();
  151. for (var pRow = 0; pRow < ds_grid_grd_Calcu_TestInfoCnts.rowcount; pRow++) {
  152. var vDScript = utlf_transNullToEmpty(ds_grid_grd_Calcu_TestInfoCnts.getColumn(pRow,"calformcnts"));
  153. var vAppTclscd = utlf_transNullToEmpty(ds_grid_grd_Calcu_TestInfoCnts.getColumn(pRow,"apptclscd"));
  154. var vAcptA = new Array(10);
  155. var r = "";
  156. nRow = ds_grid_grd_Calcu.addRow();
  157. ds_grid_grd_Calcu.setColumn(nRow, "tclscd" , vAppTclscd);
  158. ds_grid_grd_Calcu.setColumn(nRow, "calformcnts", vDScript);
  159. var fRow = ds_grid_grd_TestInfoCnts.findRow("testcd", vAppTclscd);
  160. if (fRow > -1){
  161. ds_grid_grd_Calcu.setColumn(nRow, "tclsscrnnm", ds_grid_grd_TestInfoCnts.getColumn(fRow, "tclsscrnnm"));
  162. }
  163. //ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", ds_grid_grd_TestInfoCnts.getColumn(fRow, "reptrslt"));
  164. ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", ds_grid_grd_TestInfoCnts.getColumn(fRow, "inptrslt"));
  165. ds_grid_grd_Calcu.setColumn(nRow, "bcno" , ds_grid_grd_TestInfoCnts.getColumn(fRow, "bcno"));
  166. if (vDScript.getTrim() != "") {
  167. var vAcptCnt = utlf_transNullToEmpty(ds_grid_grd_Calcu_TestInfoCnts.getColumn(pRow,"acptcnt"));
  168. vDScript = gf_calcDScript (vDScript, vAcptCnt) ;
  169. vDScript = gf_patBaseCalcInfo(vDScript, sPID); //환자기본정보 파라미터 replace
  170. vDScript = gf_calcValue (pRow, vDScript, vAcptCnt, pForm, "MULTY");
  171. if (!bPopup) {
  172. var rslt = gf_calcEval(vDScript);
  173. if ((vAppTclscd.getTrim() != "")) {
  174. var vApplytclscdA = vAppTclscd.split(",");
  175. for (var i = 0; i < vApplytclscdA.length; i++) {
  176. var findrow = ds_grid_grd_TestInfoCnts.findRow("testcd",vApplytclscdA[i].getTrim());
  177. if(findrow < 0){ // 못찾으면 abnormal 검색한다.
  178. } else {
  179. //if (bValueCheck && utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"reptrslt")) != "") {
  180. if (bValueCheck && utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"inptrslt")) != "") {
  181. //ds_grid_grd_TestInfoCnts.setColumn(findrow,"tooltip",vTooltipText + "\n" + vTooltip);
  182. } else {
  183. if (utlf_transNullToEmpty(rslt) != "") {
  184. ds_grid_grd_TestInfoCnts.setColumn(findrow,"bufinptrslt",rslt);
  185. lf_cvtResultCode(findrow);
  186. }
  187. gv_rowCulcu = true;
  188. ds_grid_grd_TestInfoCnts.rowposition = findrow;
  189. grp2.grd_TestInfoCnts.setCellPos(grp2.grd_TestInfoCnts.getBindCellIndex("Body","bufinptrslt"));
  190. grp2.grd_TestInfoCnts.setFocus();
  191. gv_rowCulcu = false;
  192. lf_cvtViewResult();
  193. }
  194. }
  195. }
  196. }
  197. }
  198. }
  199. }
  200. if (ds_grid_grd_Calcu.rowcount > 0) {
  201. grp2.btn_calcu.visible = true;
  202. } else {
  203. grp2.btn_calcu.visible = false;
  204. }
  205. if (bPopup) {
  206. PopupDiv00.trackPopup(application.mainframe.position.left+xpos, application.mainframe.position.top+ypos - 150);
  207. PopupDiv00.show();
  208. }
  209. }
  210. /**********************************************************************************
  211. * Name : gf_calcDScript
  212. * Description : 진검 계산식 (계산식에 포함된 검사에 결과가 입력된 경우)
  213. * Argument : pDScript (계산공식), pAcptCnt [건수)
  214. * return Type : pDScript
  215. * Author : Autumn
  216. ***********************************************************************************/
  217. function gf_calcDScript (pDScript, pAcptCnt) {
  218. var sDScript = pDScript;
  219. var sPreScript = "";
  220. for (var i = 1; i <= pAcptCnt; i++) {
  221. sPreScript += "var p" + i + " = #p" + i + "#;" + "\n";
  222. sPreScript += "if (p" + i + " == null) return;" + "\n";
  223. }
  224. sDScript = sPreScript + "return " + sDScript + ";";
  225. return sDScript ;
  226. }
  227. /**********************************************************************************
  228. * Name : gf_patBaseCalcInfo
  229. * Description : 진검 계산식 (환자기본정보 체크)
  230. * Argument : pDScript (계산공식), pPID [환자번호)
  231. * return Type : pDScript
  232. * Author : Autumn
  233. ***********************************************************************************/
  234. function gf_patBaseCalcInfo (pDScript, pPID) {
  235. var sDScript = pDScript;
  236. ds_patBaseCalcInfo.filter("");
  237. if (utlf_trim(pPID) != "") {
  238. ds_patBaseCalcInfo.filter("pid == '" + pPID + "'");
  239. }
  240. if (ds_patBaseCalcInfo.rowcount > 0) {
  241. for (var i = 0; i <ds_patBaseCalcInfo.rowcount; i++) {
  242. var sTag = "";
  243. if(utlf_transNullToEmpty(ds_patBaseCalcInfo.getColumn(i,"vsrecord")) != "") {
  244. if ( !utlf_transNullToEmpty(ds_patBaseCalcInfo.getColumn(i,"vsrecord")).isNumber()
  245. && !utlf_transNullToEmpty(ds_patBaseCalcInfo.getColumn(i,"vsrecord")).isFloat() ) {
  246. sTag = "'";
  247. }
  248. }
  249. sDScript = sDScript.replace(ds_patBaseCalcInfo.getColumn(i, "vsname"), sTag + utlf_transNullToEmpty(ds_patBaseCalcInfo.getColumn(i, "vsrecord")) + sTag);
  250. }
  251. }
  252. return sDScript;
  253. }
  254. /**********************************************************************************
  255. * Name : gf_calcEval
  256. * Description : 진검 계산식 ()
  257. * Argument : pDScript (계산공식)
  258. * return Type : pDScript
  259. * Author : Autumn
  260. ***********************************************************************************/
  261. function gf_calcEval(pDScript) {
  262. var rslt = eval(pDScript);
  263. if (rslt == "0") {
  264. } else if (utlf_transNullToEmpty(rslt) == "") {
  265. rslt = "";//return;
  266. }
  267. var er = /^[0-9]*[.][0-9]+$/;//utlf_isNumber, utlf_isFloat 로 체크가 안되는 float 체크용
  268. if (utlf_isNumber(rslt) || utlf_isFloat(rslt) || er.test(rslt)) {
  269. rslt = Number((eval(pDScript)).toFixed(10));
  270. }
  271. return rslt;
  272. }
  273. /**********************************************************************************
  274. * Name : gf_calcValue
  275. * Description : 진검 계산식 적용
  276. * Argument : pRow (데이터를 입력한 row), pDScript (계산식), pAcptCnt (검사코드갯수), pForm [호출하는 화면명), pFlag (결과입력(SINGLE)/계산공식화면(MULTY))
  277. * return Type : pDScript
  278. * Author : Autumn
  279. ***********************************************************************************/
  280. function gf_calcValue (pRow, pDScript, pAcptCnt, pForm, pFlag) {
  281. var sDScript = pDScript;
  282. var sPID = "";
  283. var sBcNo = "";
  284. var acpt = "";
  285. var spccd = "";
  286. var fromdd = "";
  287. var sFind = "";
  288. var sFind1 = "";
  289. var sFind2 = "";
  290. var sTag = "";
  291. var nRow = -1;
  292. for (var i = 1; i <= pAcptCnt; i++) {
  293. var iCnt = i;
  294. iCnt = iCnt.toString().getLeftPad(2,"0");
  295. if (pFlag == "SINGLE") {
  296. sPID = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow, "pid"));
  297. sBcNo = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow, "bcno"));
  298. acpt = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow, "acpt"+ iCnt));
  299. spccd = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow, "acptspc"+ iCnt));
  300. fromdd = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(pRow, "fromdd"));
  301. } else {
  302. sPID = utlf_transNullToEmpty(ds_grid_grd_Calcu_TestInfoCnts.getColumn(pRow, "pid"));
  303. sBcNo = utlf_transNullToEmpty(ds_grid_grd_Calcu_TestInfoCnts.getColumn(pRow, "bcno"));
  304. acpt = utlf_transNullToEmpty(ds_grid_grd_Calcu_TestInfoCnts.getColumn(pRow, "acpt"+ iCnt));
  305. spccd = utlf_transNullToEmpty(ds_grid_grd_Calcu_TestInfoCnts.getColumn(pRow, "acptspc"+ iCnt));
  306. fromdd = utlf_transNullToEmpty(ds_grid_grd_Calcu_TestInfoCnts.getColumn(pRow, "fromdd"));
  307. }
  308. switch (acpt) {
  309. case "UV" : // 유린량
  310. sFind = ds_grid_grd_patList.rowposition;
  311. sTag = "";
  312. if(utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrvol")) == "") {
  313. sDScript = sDScript.replace("#p"+i.toString()+"#", "null");
  314. } else {
  315. if ( !utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrvol")).isNumber()
  316. && !utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrvol")).isFloat() ) {
  317. sTag = "'";//return;
  318. }
  319. sDScript = sDScript.replace("#p"+i.toString()+"#", sTag + utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrvol")) + sTag);
  320. }
  321. //계산식 팝업 그리드 설정
  322. if (pFlag == "MULTY") {
  323. nRow = ds_grid_grd_Calcu.addRow();
  324. ds_grid_grd_Calcu.setColumn(nRow, "tclscd", acpt);
  325. ds_grid_grd_Calcu.setColumn(nRow, "calformcnts", "p"+i.toString());
  326. ds_grid_grd_Calcu.setColumn(nRow, "bcno", utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"bcno")));
  327. ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrvol")));
  328. }
  329. break;
  330. case "UT" : //유린시간
  331. sFind = ds_grid_grd_patList.rowposition;
  332. sTag = "";
  333. if(utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrtm")) == ""){
  334. sDScript = sDScript.replace("#p"+i.toString()+"#", "null");
  335. } else {
  336. if ( !utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrtm")).isNumber()
  337. && !utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrtm")).isFloat() ) {
  338. sTag = "'";//return;
  339. }
  340. sDScript = sDScript.replace("#p"+i.toString()+"#", sTag + utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrtm")) + sTag);
  341. }
  342. //계산식 팝업 그리드 설정
  343. if (pFlag == "MULTY") {
  344. var nRow = ds_grid_grd_Calcu.addRow();
  345. ds_grid_grd_Calcu.setColumn(nRow, "tclscd", acpt);
  346. ds_grid_grd_Calcu.setColumn(nRow, "calformcnts", "p"+i.toString());
  347. ds_grid_grd_Calcu.setColumn(nRow, "bcno", utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"bcno")));
  348. ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", utlf_transNullToEmpty(ds_grid_grd_patList.getColumn(sFind,"urinextrtm")));
  349. }
  350. break;
  351. default : //그외
  352. switch (pForm) {
  353. case "SSLLR80100" :
  354. sFind = ds_grid_grd_TestInfoCnts.findRowExpr("testcd=='"+acpt+ "' && spccd=='"+spccd+"'" ); //같은 바코드내에서 검색
  355. sFind1 = ds_grid_grd_TestInfoCnts.findRowExpr("testcd=='"+acpt+ "' && spccd=='"+spccd+"'" ); //같은 바코드내에서 검색
  356. sFind2 = ds_grid_grd_TestInfoCnts.findRowExpr("tclscd=='"+acpt+ "' && spccd=='"+spccd+"'" ); //같은 바코드내에서 검색
  357. break;
  358. case "SMLLR00400" :
  359. case "SMLLR00500" :
  360. sFind = ds_grid_grd_TestInfoCnts.findRowExpr("bcno=='" + sBcNo + "' && testcd=='"+acpt+ "' && spccd=='"+spccd+"'" ); //같은 바코드내에서 검색
  361. sFind1 = ds_grid_grd_TestInfoCnts.findRowExpr("bcno=='" + sBcNo + "' && testcd=='"+acpt+ "' && spccd=='"+spccd+"'" ); //같은 바코드내에서 검색
  362. sFind2 = ds_grid_grd_TestInfoCnts.findRowExpr("bcno=='" + sBcNo + "' && tclscd=='"+acpt+ "' && spccd=='"+spccd+"'" ); //같은 바코드내에서 검색
  363. if (sFind < 0) {
  364. sFind = ds_grid_grd_TestInfoCnts.findRowExpr("pid=='" + sPID + "' && testcd=='"+acpt+ "' && spccd=='"+spccd+"'" ); // 같은 환자번호내에서 검색
  365. sFind1 = ds_grid_grd_TestInfoCnts.findRowExpr("pid=='" + sPID + "' && testcd=='"+acpt+ "' && spccd=='"+spccd+"'" ); // 같은 환자번호내에서 검색
  366. sFind2 = ds_grid_grd_TestInfoCnts.findRowExpr("pid=='" + sPID + "' && tclscd=='"+acpt+ "' && spccd=='"+spccd+"'" ); // 같은 환자번호내에서 검색
  367. }
  368. break;
  369. }
  370. var sDsName = "ds_grid_grd_TestInfoCnts";
  371. if (sFind < 0 && ds_bftest.rowcount > 0) { //해당 검사코드를 찾지 못하면 타검사결과를 참조
  372. switch (pForm) {
  373. case "SSLLR80100" :
  374. sFind = ds_bftest.findRowExpr("testcd=='"+acpt+ "' && spccd=='"+spccd+ "' && fromdd=='"+fromdd+"'");
  375. sFind1 = ds_bftest.findRowExpr("testcd=='"+acpt+ "' && spccd=='"+spccd+ "' && fromdd=='"+fromdd+"'");
  376. sFind2 = ds_bftest.findRowExpr("tclscd=='"+acpt+ "' && spccd=='"+spccd+ "' && fromdd=='"+fromdd+"'");
  377. break;
  378. case "SMLLR00400" :
  379. case "SMLLR00500" :
  380. sFind = ds_bftest.findRowExpr("pid=='" + sPID + "' && testcd=='"+acpt+ "' && spccd=='"+spccd + "' && fromdd=='"+fromdd+"'"); // 같은 환자번호내에서 검색
  381. sFind1 = ds_bftest.findRowExpr("pid=='" + sPID + "' && testcd=='"+acpt+ "' && spccd=='"+spccd + "' && fromdd=='"+fromdd+"'"); // 같은 환자번호내에서 검색
  382. sFind2 = ds_bftest.findRowExpr("pid=='" + sPID + "' && tclscd=='"+acpt+ "' && spccd=='"+spccd + "' && fromdd=='"+fromdd+"'"); // 같은 환자번호내에서 검색
  383. break;
  384. }
  385. sDsName = "ds_bftest";
  386. }
  387. //계산식 팝업 그리드 설정
  388. if (pFlag == "MULTY") {
  389. nRow = ds_grid_grd_Calcu.addRow();
  390. ds_grid_grd_Calcu.setColumn(nRow, "tclscd" , acpt);
  391. ds_grid_grd_Calcu.setColumn(nRow, "calformcnts", "p"+i.toString());
  392. ds_grid_grd_Calcu.setColumn(nRow, "tclsscrnnm" , utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"tclsscrnnm")));
  393. ds_grid_grd_Calcu.setColumn(nRow, "bcno" , utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"bcno")));
  394. }
  395. if (pFlag == "MULTY" && sDsName == "ds_bftest") {
  396. ds_grid_grd_Calcu.setColumn(nRow, "stat", utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"stat")));
  397. }
  398. //if(utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")) == ""){
  399. if(utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")) == ""){
  400. sFind = sFind2;
  401. //if(utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")) == "") {
  402. if(utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")) == "") {
  403. if(pFlag == "SINGLE" && pAcptCnt == 2) return "";
  404. sDScript = sDScript.replace("#p"+i.toString()+"#", "null");
  405. if (pFlag == "MULTY") {
  406. //ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")));
  407. ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")));
  408. }
  409. } else {
  410. // 20130411 JJH ADD : 결과값이 숫자가 아니면 Return
  411. sFind = sFind1;
  412. var sTag = "";
  413. // if ( !utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")).isNumber()
  414. // && !utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")).isFloat() ) {
  415. if ( !utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")).isNumber()
  416. && !utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")).isFloat() ) {
  417. sTag = "'";//return;
  418. }
  419. sFind = sFind2;
  420. // sDScript = sDScript.replace("#p"+i.toString()+"#", sTag + utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")) + sTag);
  421. sDScript = sDScript.replace("#p"+i.toString()+"#", sTag + utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")) + sTag);
  422. if (pFlag == "MULTY") {
  423. // ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", sTag + utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")) + sTag);
  424. ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", sTag + utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")) + sTag);
  425. }
  426. }
  427. } else {
  428. // 20130411 JJH ADD : 결과값이 숫자가 아니면 Return
  429. sFind = sFind1;
  430. sTag = "";
  431. // if ( !utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")).isNumber()
  432. // && !utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")).isFloat() ) {
  433. if ( !utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")).isNumber()
  434. && !utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")).isFloat() ) {
  435. sTag = "'";//return;
  436. }
  437. // sDScript = sDScript.replace("#p"+i.toString()+"#", sTag + utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")) + sTag);
  438. sDScript = sDScript.replace("#p"+i.toString()+"#", sTag + utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")) + sTag);
  439. if (pFlag == "MULTY") {
  440. // ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", sTag + utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"reptrslt")) + sTag);
  441. ds_grid_grd_Calcu.setColumn(nRow, "reptrslt", sTag + utlf_transNullToEmpty(this.objects[sDsName].getColumn(sFind,"inptrslt")) + sTag);
  442. }
  443. }
  444. break;
  445. }
  446. }
  447. return sDScript;
  448. }]]></Script>