SMMMR06900.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  1. /**
  2. * 최초 로딩시
  3. */
  4. function fInit() {
  5. //사용자 정보가 없으면 닫기
  6. fGetPatInfo();
  7. //하드코드 정보 조회
  8. fGethardcdArrayList(new Array('hardcd5901|5901', 'hardcd5902|5902', 'hardcd5903|5903', 'hardcd5904|5904', 'hardcd5905|5905', 'hardcd5906|5906', 'hardcd5907|5907', 'hardcd5908|5908', 'hardcd5909|5909', 'hardcd5910|5910', 'hardcd5911|5911',
  9. 'hardcd5912|5912', 'hardcd5913|5913', 'hardcd5914|5914', 'hardcd5915|5915', 'hardcd5916|5916', 'hardcd5917|5917', 'hardcd5918|5918', 'hardcd5919|5919', 'hardcd5920|5920', 'hardcd5921|5921', 'hardcd5922|5922', 'hardcd5923|5923',
  10. 'hardcd5931|5931', 'hardcd5932|5932', 'hardcd5933|5933', 'hardcd5934|5934', 'hardcd5935|5935', 'hardcd5936|5936'),
  11. new Array('/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init','/root/init',
  12. '/root/init','/root/init','/root/init','/root/init','/root/init','/root/init', '/root/init','/root/init','/root/init','/root/init','/root/init','/root/init'));
  13. //상세정보 조회
  14. fGetDetlInfo();
  15. //버튼 처리(심사/심사파트, 의사 구분하여)
  16. fProcBtn();
  17. }
  18. /**
  19. * 선택한 환자 정보 설정
  20. */
  21. function fGetPatInfo() {
  22. var node = getGlobalVariable("paminfo");
  23. setCSVToNode("/root/main/session/paminfo", node);
  24. if (model.getValue("/root/main/session/paminfo/list/pid") == "") {
  25. if(checkOpener() && opener.model.getValue("/root/hidden/temp/pid") != "") {
  26. var p = opener.model;
  27. model.setValue("/root/send/reqdata/pid", p.getValue("pid"));
  28. model.setValue("/root/send/reqdata/orddd", p.getValue("indd"));
  29. model.setValue("/root/send/reqdata/cretno", p.getValue("cretno"));
  30. model.setValue("/root/send/reqdata/ordtype", p.getValue("ordtype"));
  31. } else {
  32. messageBox("환자를 선택하지", "E007");
  33. opener.close();
  34. }
  35. } else {
  36. //진단 조회용
  37. model.setValue("/root/send/reqdata/instcd", model.getValue("/root/main/session/paminfo/list/instcd"));
  38. model.setValue("/root/send/reqdata/pid", model.getValue("/root/main/session/paminfo/list/pid"));
  39. model.setValue("/root/send/reqdata/orddd", model.getValue("/root/main/session/paminfo/list/indd"));
  40. model.setValue("/root/send/reqdata/cretno", model.getValue("/root/main/session/paminfo/list/cretno"));
  41. model.setValue("/root/send/reqdata/ioflag", model.getValue("/root/main/session/paminfo/list/ioflag"));
  42. model.setValue("/root/send/reqdata/orddeptcd", model.getValue("/root/main/session/paminfo/list/orddeptcd"));
  43. model.setValue("/root/send/reqdata/fromdd", model.getValue("/root/main/session/paminfo/list/indd"));
  44. model.setValue("/root/send/reqdata/todd", model.getValue("/root/main/session/paminfo/list/dschdd"));
  45. }
  46. return true;
  47. }
  48. /**
  49. * 원무 정보로 서식 상세정보 조회
  50. */
  51. function fGetDetlInfo() {
  52. if (submit("TRMMR09000")) {
  53. //서식 원무정보 설정
  54. if(checkOpener() && opener.model.getValue("/root/hidden/temp/pid") != "") {
  55. var p = opener.model;
  56. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010001']/itemval1", p.getValue("/root/hidden/temp/orddeptcd"));
  57. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010002']/itemval1", p.getValue("/root/hidden/temp/hngnm"));
  58. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010003']/itemval1", p.getValue("/root/hidden/temp/rrgstno"));
  59. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010004']/itemval1", p.getValue("/root/hidden/temp/dschdd"));
  60. //심사실 로그인정보.. dutplce
  61. } else {
  62. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010001']/itemval1", model.getValue("/root/main/session/paminfo/list/orddeptcd"));
  63. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010002']/itemval1", model.getValue("/root/main/session/paminfo/list/hngnm"));
  64. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010003']/itemval1", model.getValue("/root/main/session/paminfo/list/rrgstno1")+ ""+ model.getValue("/root/main/session/paminfo/list/rrgstno2"));
  65. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010004']/itemval1", model.getValue("/root/main/session/paminfo/list/dschdd"));
  66. }
  67. /**
  68. * 환자과별 설정
  69. * 안과 :2120000000, 외과 : 2040000000, 산부인과 : 2100000000, 이비인후과 : 2130000000
  70. */
  71. switch (model.getValue("/root/main/detlinfo/formdetl[itemcd='DI010001']/itemval1")) {//model.getValue("/root/main/session/paminfo/list/orddeptcd")) {
  72. case '2120000000' :
  73. cmb2_3a.choices.itemset.attribute("nodeset") = "/root/init/hardcd5908/hardcd[hardcd='1']";
  74. rdo_5931.attribute("required") = "{msg:'[단안/양안] 여부'}";
  75. rdo_5932.attribute("required") = "{msg:'[소절개/대절개] 여부'}";
  76. model.toggle("안과");
  77. break;
  78. case '2040000000' :
  79. case '2040400000' :
  80. case '2041300000' :
  81. case '2041700000' :
  82. cmb2_3a.choices.itemset.attribute("nodeset") = "/root/init/hardcd5908/hardcd[hardcd='3' or hardcd='4' or hardcd='5']";
  83. //rdo_5933.attribute("required") = "{msg:'[개복술/복강경수술] 여부'}";
  84. //rdo_5934.attribute("required") = "{msg:'[편측/양측] 여부'}";
  85. model.toggle('외과');
  86. break;
  87. case '2100000000' :
  88. cmb2_3a.choices.itemset.attribute("nodeset") = "/root/init/hardcd5908/hardcd[hardcd='6' or hardcd = '7']";
  89. rdo_5935.attribute("required") = "{msg:'[개복술/자궁경/복강경수술] 여부'}";
  90. model.toggle('산부인과');
  91. break;
  92. case '2130000000' :
  93. cmb2_3a.choices.itemset.attribute("nodeset") = "/root/init/hardcd5908/hardcd[hardcd='2']";
  94. rdo_5936.attribute("required") = "{msg:'[부비동 내시경사용] 여부'}";
  95. model.toggle('이비인후과');
  96. break;
  97. default :
  98. switch1.visible = false;
  99. }
  100. //아직 저장된 주진단, 기타진단이 없는 경우 진단내역 조회
  101. if (model.getValue("/root/main/detlinfo/formdetl[itemcd='DI010006']/itemval1") == "") {
  102. fGetDiagInfo(); //진단 정보 조회
  103. } else {
  104. var s = "/root/temp/diaginfo/diagcdlist";
  105. var iCnt = getNodesetCount(s);
  106. var iFirst = 7;
  107. for (var i = 9; i <= 38; i++) { //기타진단 저장을 위한 노드가 10개밖에 없다네~~
  108. if (model.getValue("/root/main/detlinfo/formdetl[itemcd='DI0100"+ (i+"").getLeftPad(2, "0") +"']/itemval1") == "") {
  109. i++;
  110. continue;
  111. }
  112. grd_diag.addRow();
  113. grd_diag.valueMatrix(grd_diag.row, grd_diag.colRef("diagcd")) = model.getValue("/root/main/detlinfo/formdetl[itemcd='DI0100"+ ((i++)+"").getLeftPad(2, "0") +"']/itemval1");
  114. grd_diag.valueMatrix(grd_diag.row, grd_diag.colRef("diaghngnm")) = model.getValue("/root/main/detlinfo/formdetl[itemcd='DI0100"+ ((i++)+"").getLeftPad(2, "0") +"']/itemval1");
  115. grd_diag.valueMatrix(grd_diag.row, grd_diag.colRef("poa")) = model.getValue("/root/main/detlinfo/formdetl[itemcd='DI0100"+ (i+"").getLeftPad(2, "0") +"']/itemval1");
  116. }
  117. }
  118. //2.3 수술 합병증 및 부작용은 상위 콤보값에 따라 세분류 콤보값이 달라짐
  119. cmb2_3a.dispatch("xforms-value-changed");
  120. //수술 합병증 관련 델리미터("|") 포함된 문자열을 그리드에 설정
  121. var s = grd2_3.nodeset;
  122. var val = model.getValue("/root/main/detlinfo/formdetl[itemcd='DI010054']/itemval1");
  123. if (val.indexOf("|") != -1) {
  124. var arr = val.split("|");
  125. for (var i = 0; i < arr.length; i++) { //그리드 기 선택된 값의 체크박스 설정
  126. for (var j = 0; j <= grd2_3.rows; j++) {
  127. if (grd2_3.valueMatrix(j, grd2_3.colRef("hardcd")) == arr[i]) {
  128. grd2_3.valueMatrix(j, grd2_3.colRef("chk")) = "true";
  129. }
  130. }
  131. }
  132. }
  133. }
  134. model.refresh();
  135. }
  136. /***
  137. * 진단 정보 조회
  138. */
  139. function fGetDiagInfo() {
  140. //주진단 조회 //현재 주진단 부진단 구분이 SUBMIT에는 있는데.... 쿼리에는 없음.. 그래서 kindcdflag에 값을 loop안에서 구분하여.. 설정해줘야 할것 같은데..
  141. model.makeValue("/root/send/reqdata/mskind", "M");
  142. if (submit("TRMMR02908")) {
  143. var s = "/root/temp/diaginfo/diagcdlist";
  144. var iCnt = getNodesetCount(s);
  145. for (var i = 0; i < iCnt; i++) {
  146. if (model.getValue(s+"["+ (i+1) +"]/diagkindcdflag") == "S") {
  147. grd_diag.addRow();
  148. grd_diag.valueMatrix(grd_diag.row, grd_diag.colRef("diagcd")) = model.getValue(s+"["+ (i+1) +"]/diagcd");
  149. grd_diag.valueMatrix(grd_diag.row, grd_diag.colRef("diaghngnm")) = model.getValue(s+"["+ (i+1) +"]/diaghngnm");
  150. grd_diag.valueMatrix(grd_diag.row, grd_diag.colRef("poa")) = "";
  151. } else if (model.getValue(s+"["+ (i+1) +"]/diagkindcdflag") == "M") {
  152. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010006']/itemval1", model.getValue(s+"["+ (i+1) +"]/diagcd"));
  153. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010007']/itemval1", model.getValue(s+"["+ (i+1) +"]/diaghngnm"));
  154. }
  155. }
  156. grd_diag.refresh();
  157. }
  158. //기타주진단 조회
  159. /**
  160. model.makeValue("/root/send/reqdata/mskind", "S");
  161. if (submit("TRMMR02908")) {
  162. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010006']/itemval1", model.getValue("/root/temp/diaginfo/diaghngnm"));
  163. }
  164. */
  165. }
  166. /**
  167. * 설명 비고 팝업
  168. */
  169. function fProcBtn() {
  170. if (getUserInfo("jobkindcd").indexOf("03") > -1) { //의사인 경우 '저장만 보이게'
  171. opener.btn_save.visible = "true";
  172. opener.btn_complete.visible = "false";
  173. opener.btn_cancel.visible = "false";
  174. }
  175. if (getUserInfo("dutplcecd") == "4072000000" || getUserInfo("dutplcecd") == '4070700000') { //심사팀, 심사파트인 경우
  176. opener.btn_save.visible = "true";
  177. opener.btn_complete.visible = "true";
  178. opener.btn_cancel.visible = "true";
  179. }
  180. if (model.getValue("/root/main/detlinfo/master/status") == "C") {
  181. opener.btn_save.disabled = true;
  182. opener.btn_complete.disabled = true;
  183. opener.btn_cancel.disabled = false;
  184. } else {//if (model.getValue("/root/main/detlinfo/master/status") == "A") {
  185. opener.btn_save.disabled = false;
  186. opener.btn_complete.disabled = false;
  187. opener.btn_cancel.disabled = true;
  188. }
  189. }
  190. /**
  191. * 설명 비고 팝업
  192. */
  193. function fShowDesc() {
  194. var iEventX = parseInt(event.clientX, 10) - 315;
  195. var iEventY = parseInt(event.clientY, 10) + 10;
  196. grp_desc.attribute("style") = style="left:"+ iEventX +"px; top:"+ iEventY +"px; width:315px; height:230px; ";
  197. var iLen = arguments.length;
  198. var s = "";
  199. for (var i = 0; i < iLen; i++) {
  200. var arr = arguments[i].split('|');
  201. s += "\n"+ model.getValue("/root/init/hardcd"+arr[0]+"/hardcd[hardcd='"+arr[1]+"']/hardcdnm");
  202. }
  203. if (iLen > 1) {
  204. s = s.substr(1);
  205. }
  206. model.setValue("/root/hidden/desc", s);
  207. model.refresh();
  208. grp_desc.visible = true;
  209. }
  210. /**
  211. * 현재 의료질 향상 점검표 서식 정보 저장
  212. */
  213. function fConfirm(status) {
  214. var msg = "저장";
  215. model.makeValue("/root/main/detlinfo/master/status", status);
  216. switch (status) {
  217. case "A":
  218. msg = "저장";
  219. break;
  220. case "C":
  221. msg = "종결";
  222. break;
  223. case "R":
  224. model.makeValue("/root/main/detlinfo/master/status", "A");
  225. msg = "종결취소";
  226. break;
  227. default :
  228. msg = "저장";
  229. }
  230. //기타진단 저장 그리드 자료를 서식 자료로
  231. var s = "/root/main/diaginfo/diagcdlist";
  232. var iCnt = getNodesetCount(s);
  233. var iFirst = 9;
  234. var diagnm = "";
  235. var poa = "";
  236. var diagcd = "";
  237. for (var i = 1; i<= 10; i++) {//i <= iCnt; i++) { //기타진단 저장 그리드 자료를 서식 자료로
  238. if (i > iCnt) {
  239. diagcd = "";
  240. diagnm = "";
  241. poa = "";
  242. } else {
  243. diagcd = model.getValue("/root/main/diaginfo/diagcdlist["+i+"]/diagcd");
  244. diagnm = model.getValue("/root/main/diaginfo/diagcdlist["+i+"]/diaghngnm");
  245. poa = model.getValue("/root/main/diaginfo/diagcdlist["+i+"]/poa");
  246. }
  247. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI0100"+ ((iFirst++)+"").getLeftPad(2, "0") +"']/itemval1", diagcd);
  248. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI0100"+ ((iFirst++)+"").getLeftPad(2, "0") +"']/itemval1", diagnm);
  249. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI0100"+ ((iFirst++)+"").getLeftPad(2, "0") +"']/itemval1", poa);
  250. }
  251. //수술 합병증 관련 그리드 선택을 델리미터('|') 포함된 문자열로
  252. s = grd2_3.nodeset;
  253. iCnt = getNodesetCount(s);
  254. var rslt = "";
  255. for (var i = 1; i <= iCnt; i++) {
  256. if (model.getValue(s+"["+ i +"]/chk") == "true") {
  257. rslt += "|" + model.getValue(s+"["+ i +"]/hardcd");
  258. }
  259. }
  260. //if (iCnt > 1) {
  261. //rslt = rslt.substring(1);
  262. model.setValue("/root/main/detlinfo/formdetl[itemcd='DI010054']/itemval1" , rslt);
  263. //}
  264. if (!fValidAll()) {
  265. return;
  266. }
  267. //로그인 구분에 따라.. status설정?? 20130508
  268. model.makeValue("/root/main/detlinfo/masterinfo", getPrcpNodeListCSV(instance1.selectNodes("/root/main/detlinfo/master")));
  269. if (submit("TXMMR09000")) {
  270. if (model.getValue("/root/hidden/savedetl/rslt/success") == "true") {
  271. messageBox(msg+"되었습니다.", "I000");
  272. fProcBtn();
  273. }
  274. }
  275. }
  276. /**
  277. * 주/기타 진단 팝업
  278. */
  279. function fPopDiag(o) {
  280. setParameter("SPMMO03100_patinfo", model.getValue("/root/send/reqdata/pid")+"▦"+model.getValue("/root/send/reqdata/orddd"));
  281. fPrcpModal ("SPMMO03100", 5, 40);
  282. if ( getParameter( "SPMMO03100_rtn_useyn" ) == "Y" ) {
  283. var rtn = getParameter( "SPMMO03100_rtn" ); //이걸 왜 델리미터 문자열로 반환해서 이고생인지.. 걍 인스턴스로 주던가 하면 명확할텐데.. 넘겨줄때 스트링문자열로 바꿔 넘겨받아서 또 잘라서 배열이나 다른 형태로 또 바꿔.. 에효!!
  284. var list = fTransList(rtn); //델리미터로 구분된 문자열을 자바형태의 ArrayList로 변환
  285. if (o.grid == "" || o.grid == "undefined" || o.grid == undefined) {
  286. document.all(o.cd).value = list.get(0).get("diagcd");
  287. document.all(o.nm).value = list.get(0).get("diaghngnm");
  288. } else {
  289. var t = document.all(o.grid);
  290. var iRow = t.row;
  291. var iTot = iRow + list.length();
  292. var j = 0;
  293. for (var i = iRow; i < iTot; i++) { //현재 로우부터 선택된 행 만큼
  294. var m = list.get(j++);
  295. if (i >= t.rows) {
  296. t.addRow(); //행이 없을 경우 행추가
  297. }
  298. t.valueMatrix(i, t.colRef(o.cd)) = m.get("diagcd");
  299. t.valueMatrix(i, t.colRef(o.nm)) = m.get("diaghngnm");
  300. }
  301. }
  302. model.refresh();
  303. setParameter( "SPMMO03100_rtn_useyn", "" );
  304. }
  305. }
  306. /**
  307. * 필수 입력 및 유효성 체크
  308. * attribute이용
  309. * ex) required="Y" , requiredEither="{obj:'rdo2_1_1b', msg:'예/아니오'}", requiredWith="{obj:['rdo1_1_1', 'rdo1_1_2', 'rdo1_1_3'], msg:'수술전 검사 시점', when:'B'}"
  310. */
  311. function fValidAll() {
  312. var w = document.controls;
  313. for (var i =0; i < w.length; i++) {
  314. var o = w.item(i);
  315. var v = null;
  316. //필수 입력
  317. if (o.attribute("required") != "" ) {
  318. eval("v = "+o.attribute("required")); //넣어두기는 object형태로 넣어뒀는데.. 문자열로 인식해서 eval로 다시 오브젝트 형태로 바꿔줌
  319. if (o.value == "") {
  320. messageBox(v.msg+"은(는)", "I003");
  321. model.setFocus(o.attribute("id"));
  322. return;
  323. }
  324. }
  325. //두개의 값중 하나는 필수
  326. if (o.attribute("requiredEither") != "" ) {
  327. if (o.value == "") {
  328. eval("v = "+o.attribute("requiredEither"));
  329. if (document.all(v.obj).value == "") {
  330. messageBox(v.msg+" 둘중 하나를 반드시 ", "C002");
  331. model.setFocus(v.obj);
  332. return;
  333. }
  334. }
  335. }
  336. //연결된 다른 컨트롤의 값이 필수
  337. if (o.attribute("requiredWithOne") != "") {
  338. if (o.value != "") {
  339. eval("v ="+o.attribute("requiredWithOne"));
  340. var arr = v.obj;
  341. var bExist = false;
  342. if (o.elementName == "xforms:select1" && o.attribute("appearance") == "full") { //라디오 일 경우 해당 컨트롤이 체크된 경우만 체크 수행
  343. if (v.when != o.value) {
  344. continue;
  345. }
  346. }
  347. for (var j = 0; j < arr.length && !bExist; j++) {
  348. var t = document.all(arr[j]);
  349. if (t.value != "") {
  350. bExist = true;
  351. break;
  352. }
  353. }
  354. if (!bExist) {
  355. messageBox(v.msg+" 중 하나를 반드시 ", "C002");
  356. model.setFocus(v.obj);
  357. return;
  358. }
  359. }
  360. }
  361. //연결된 다른 컨트롤의 값이 필수
  362. if (o.attribute("requiredWithAll") != "") {
  363. if (o.value != "") {
  364. eval("v ="+o.attribute("requiredWithAll"));
  365. var arr = v.obj;
  366. var bExist = true;
  367. if (o.elementName == "xforms:select1" && o.attribute("appearance") == "full") { //라디오 일 경우 해당 컨트롤이 체크된 경우만 체크 수행
  368. if (v.when != o.value) {
  369. continue;
  370. }
  371. }
  372. for (var j = 0; j < arr.length && bExist; j++) {
  373. var t = document.all(arr[j]);
  374. if (t.elementName == "xforms:datagrid") { //데이타 그리드 일때 체크된 값이 있는지 체크
  375. var iChk = getNodesetCount(t.nodeset+"[chk='true']");
  376. if (iChk == 0) {
  377. bExist = false;
  378. }
  379. } else {
  380. if (t.value == "") {
  381. bExist = false;
  382. }
  383. }
  384. }
  385. if (!bExist) {
  386. messageBox(v.msg+" 를 반드시 ", "C002");
  387. model.setFocus(v.obj);
  388. return;
  389. }
  390. }
  391. }
  392. }
  393. var poi = model.getValue("/root/main/detlinfo/formdetl[itemcd='DI010008']/itemval1") ;
  394. if (poi =="") {
  395. messageBox("주진단의 POI이 없습니다", "I999");
  396. return;
  397. }
  398. //외과 예외사항
  399. var patdeptcd = model.getValue("/root/main/detlinfo/formdetl[itemcd='DI010001']/itemval1") ;
  400. if (patdeptcd =="2040000000") {
  401. if (rdo_5933.value == "" && rdo_5934.value =="") {
  402. var msg ="[개복술/복강경수술] 여부 또는 [편측/양측] 여부를 반드시 입력하셔야 합니다";
  403. messageBox(msg, "I999");
  404. return;
  405. }
  406. }
  407. return true;
  408. }
  409. /**
  410. * 진단 팝업으로 받은 델리미터 문자열을 ArrayList<Map>(emr/common/util.js)로 변경해서 반환
  411. */
  412. function fTransList(s) {
  413. var colSep = "▦";
  414. var rowSep = "▩";
  415. var arrRow = s.split(rowSep);
  416. var list = new ArrayList();
  417. for (var i = 1; i < arrRow.length; i++) {
  418. var arrName = arrRow[0].split(colSep);
  419. var arrCol = arrRow[i].split(colSep);
  420. var curMap = new Map();
  421. for (var j = 0; j < arrCol.length; j++) {
  422. curMap.put(arrName[j], arrCol[j]);
  423. }
  424. if (arrCol.length > 0 && arrRow[i] != "") {
  425. list.add(curMap);
  426. }
  427. }
  428. return list;
  429. }