SMPIJ00600.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580
  1. /**
  2. * @(#) SMPIJ00700.js
  3. * 외래일일심사대상자 조회
  4. * 수정이력
  5. * - 2008. 07. 15 / 최초작성자 / 박지욱 (xrw 화면단에서 분리)
  6. */
  7. // 화면 open시(와 초기화 버튼 클릭시) 화면 초기화 기능을 수행한다.
  8. function fInitialize() {
  9. var patunitsrch1 = model.getValue("/root/send/patunitsrch1");
  10. // main / send / hidden 데이터를 초기화한다.
  11. fInitSrchData();
  12. model.setValue("/root/send/patunitsrch1", patunitsrch1);
  13. // 심사 화면에서 등록번호를 입력하고 Enter 친 경우 해당 환자를 조회하여 보여준다.
  14. if (patunitsrch1) { // 대상자 화면을 취소하고 닫은 후 다시 열때 기존에 심사하던 환자 정보로 다시 조회하지 않도록
  15. fSetPatUnitSrch1pidSrch();
  16. }
  17. //로그인한 심사자를 Default로 선택한다.
  18. var userid = getUserId(); // (common.js) 현재 로그인한 사용자 번호(ID)
  19. //페이지(rownum)를 0으로 세팅한다.
  20. model.setValue("root/hidden/rownum", -1);
  21. model.setValue("/root/hidden/userid",userid);
  22. //2011.01.17 경북대김순애샘요청 : 과별로 심사하기위해 막는다.
  23. //cmb_judgrid.value = userid;
  24. if(cmb_judgrid.label == ""){
  25. cmb_judgrid.value = "";
  26. }
  27. // 공통코드를 조회한다.
  28. // (ZBC001.js) com.ZBCMCODE에서 기초코드 값을 가져와서 Combo 컨트롤 item으로 설정하기 위해 사용한다.
  29. // 2008.03.18 박지욱 추가(심사상태P0379 공통코드 사용없이 하드코딩)
  30. zbcfGetCodeList(
  31. new Array("P0008","P0010","P0155","P0291", "P0288"),
  32. new Array("/root/init/P0008list","/root/init/P0010list","/root/init/P0155list","/root/init/P0291list","/root/init/P0288list") );
  33. // 2008. 07.19 보험유형에 보험+급여(11+21+22), 급여전체(21+22) 필드 추가
  34. var nodelist = instance1.selectNodes("/root/init/P0008list/P0008");
  35. var length = nodelist.length;
  36. model.makeValue("/root/init/P0008list/P0008["+ (length+1) +"]/cdnm","보험+급여");
  37. model.makeValue("/root/init/P0008list/P0008["+ (length+1) +"]/cdid","I");
  38. model.makeValue("/root/init/P0008list/P0008["+ (length+2) +"]/cdnm","급여전체");
  39. model.makeValue("/root/init/P0008list/P0008["+ (length+2) +"]/cdid","P");
  40. model.setValue("/root/send/clamfromdd", (new Date()).getDateFormat("YYYYMMDD"));
  41. submit("TRPIJ00601");
  42. model.removeNodeset("root/init/insukind");
  43. model.removeNodeset("root/init/suppkind");
  44. model.removeNodeset("root/init/orddeptcd");
  45. model.removeNodeset("root/init/orddrid");
  46. model.removeNodeset("root/init/judgrid");
  47. model.makeNode("root/init/insukind");
  48. model.makeNode("root/init/suppkind");
  49. model.makeNode("root/init/orddeptcd");
  50. model.makeNode("root/init/orddrid");
  51. model.makeNode("root/init/judgrid");
  52. model.copyNode("root/init/insukind", "root/hidden/tmp/insukind");
  53. model.copyNode("root/init/suppkind", "root/hidden/tmp/suppkind");
  54. model.copyNode("root/init/orddeptcd", "root/hidden/tmp/orddeptcd");
  55. model.copyNode("root/init/orddrid", "root/hidden/tmp/orddrid");
  56. model.copyNode("root/init/judgrid", "root/hidden/tmp/judgrid");
  57. model.removeNodeset("root/hidden/tmp/insukind");
  58. model.removeNodeset("root/hidden/tmp/suppkind");
  59. model.removeNodeset("root/hidden/tmp/orddeptcd");
  60. model.removeNodeset("root/hidden/tmp/orddrid");
  61. model.removeNodeset("root/hidden/tmp/judgrid");
  62. //model.refresh(); // refresh() 하지 않은 경우 공통코드가 combo 에 매칭되어 표시되지 않음
  63. cmb_ordfildcd.refresh();
  64. cmb_clamdeptcd.refresh();
  65. cmb_orddrid.refresh();
  66. cmb_insukind.refresh();
  67. cmb_suppkind.refresh();
  68. cmb_judgrid.refresh();
  69. cmb_workstat.refresh();
  70. }
  71. // main / send / hidden 데이터를 초기화한다.
  72. function fInitSrchData() {
  73. // grid를 인스턴스에 mapping후 인스턴스에 해당하는 빈줄 1줄이 생기므로 grid 초기화
  74. model.removeNodeset("/root/main/list1/otpt");
  75. // 진료과, 주치의 비활성화
  76. cmb_orddrid.disabled = true;
  77. model.resetInstanceNode("/root/send");
  78. // 오늘날짜로 청구일자을 표시한다.
  79. fSetClamDD();
  80. // 조회 조건을 초기화한다.
  81. model.setValue("/root/send/cmbtotordamt", "3");
  82. model.setValue("/root/send/cmbownbamt", "3");
  83. model.setValue("/root/send/choicdsrch1", "4"); // 4: EDI
  84. // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  85. grp_judgmemo.visible = false;
  86. model.resetInstanceNode("/root/hidden/otpt/judgmemo"); // 선택된 메모내역
  87. // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  88. fSetWorkStatCnt();
  89. model.resetInstanceNode("/root/hidden/sppmc02500/cond");
  90. model.resetInstanceNode("/root/hidden/smpic00200/judgsrch");
  91. model.removeNodeset("/root/hidden/smpic00200/rslt");
  92. // 페이지 수 초기화
  93. model.setValue("/root/hidden/rownum", 0);
  94. }
  95. // 청구일자 표시 함수
  96. function fSetClamDD() {
  97. var today = new Date();
  98. var baseyear = today.getDateFormat("YYYY"); // (dateHelper.js)에서 제공하는 함수를 사용하여 해당 년를 구한다.
  99. var basemonth = today.getDateFormat("MM");
  100. var baseday = today.getDateFormat("DD");
  101. var currentdd = baseyear + basemonth + baseday;
  102. model.setValue("/root/send/clamfromdd", currentdd);
  103. model.setValue("/root/send/clamtodd", currentdd);
  104. model.setValue("/root/hidden/otpt/basedd", currentdd);
  105. }
  106. // 화면 권한을 설정한다.
  107. function fCheckAuth() {
  108. var pAuth = !checkAuth("P"); // 출력권한(보고서 출력, 엑셀 내려받기 등)
  109. btn_excelsave.disabled = pAuth;
  110. btn_print.disabled = pAuth;
  111. }
  112. // "조회" Btn 외래일일 심사대상자 조회를 요청한다.
  113. function fGetOutDayJudgTrgtManList(){
  114. grp_judgmemo.visible = false; // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  115. model.removeNodeset("/root/main/list1/otpt");
  116. // 환자단위조회를 하는 경우
  117. var patunitsrch1 = model.getValue("/root/send/patunitsrch1").getTrim(); // (stringHelper.js) 문자열 앞뒤에 있는 공백 제거
  118. model.setValue("/root/send/patunitsrch1", patunitsrch1);
  119. if (patunitsrch1 == "") {
  120. model.setValue("/root/send/patunitsrch2", "");
  121. }
  122. else if (patunitsrch1.isNumber()) { // (numericHelper.js) 숫자가 입력된 경우 환자번호로 조회한다.
  123. model.setValue("/root/send/patunitsrch2", "pidSrch");
  124. }
  125. // 추가 : 20090813 JHP만든함수 zzu추가 성가에서 환자번호에 문자가들어있는경우 있음(ex : A108) 하여 각 문자 판단하여 앞두자리 판단하여 조회 여부 결정
  126. else if (fChkPidWordNumber(patunitsrch1) == true) {
  127. model.setValue("/root/send/patunitsrch2", "pidSrch");
  128. }
  129. else { // 문자가 입력된 경우 환자이름으로 조회한다.
  130. if (patunitsrch1.length > 1) {
  131. // 청구일자(fromdd ~ todd)를 확인한다.
  132. var clamfromdd = model.getValue("/root/send/clamfromdd");
  133. var clamtodd = model.getValue("/root/send/clamtodd");
  134. var basedd = model.getValue("/root/hidden/otpt/basedd");
  135. if (clamfromdd == "") {
  136. messageBox("환자이름으로 조회시 청구일자 시작일자는", "I003"); ///환자이름으로 조회시 청구일자 시작일자는 필수입력입니다.
  137. //model.refresh();
  138. return;
  139. }
  140. if (!isValidDateTime(clamfromdd)) {
  141. messageBox("올바른 형식의 시작일자를", "C001"); ///올바른 형식의 시작일자를 입력하십시오.
  142. //model.refresh();
  143. return;
  144. }
  145. if (!isValidDateTime(clamtodd)) {
  146. // 화면 초기화 시에 설정해 둔 오늘날짜로 종료일자를 설정한다.
  147. model.setValue("/root/send/clamtodd", basedd);
  148. //model.refresh();
  149. clamtodd = basedd;
  150. }
  151. var dateDif = getDateInterval(clamfromdd, clamtodd); // (dateHelper.js) 두 일자사이의 차를 일단위로 반환
  152. if (dateDif < 0) {
  153. messageBox("검색 시작일자가 종료일자 보다 이후", "E008"); ///검색 시작일자가 종료일자 보다 이후 입니다.
  154. //model.refresh();
  155. return;
  156. }
  157. else if (dateDif > 90) {
  158. messageBox("검색기간은 최대 한달(30일)", "E008"); ///검색기간은 최대 세달(90일) 입니다.
  159. //model.refresh();
  160. return;
  161. }
  162. model.setValue("/root/send/patunitsrch2", "nmSrch");
  163. } else {
  164. messageBox("환자단위조회시 검색할 환자이름은 2글자 이상", "C001"); ///환자단위조회시 검색할 환자이름은 2글자 이상 입력하십시오.
  165. model.setValue("/root/send/patunitsrch2", "");
  166. //model.refresh();
  167. return;
  168. }
  169. }
  170. // 환자단위조회를 하지 않는 경우
  171. if (model.getValue("/root/send/patunitsrch2") == "") {
  172. // 청구일자(fromdd ~ todd)를 확인한다.
  173. var clamfromdd = model.getValue("/root/send/clamfromdd");
  174. var clamtodd = model.getValue("/root/send/clamtodd");
  175. var basedd = model.getValue("/root/hidden/otpt/basedd");
  176. if (clamfromdd == "") {
  177. messageBox("청구일자 검색 시작일자는", "I003"); ///청구일자 시작일자는 필수입력입니다.
  178. //model.refresh();
  179. return;
  180. }
  181. if (!isValidDateTime(clamfromdd)) {
  182. messageBox("올바른 형식의 시작일자를", "C001"); ///올바른 형식의 시작일자를 입력하십시오.
  183. //model.refresh();
  184. return;
  185. }
  186. if (!isValidDateTime(clamtodd)) {
  187. // 화면 초기화 시에 설정해 둔 오늘날짜로 종료일자를 설정한다.
  188. model.setValue("/root/send/clamtodd", basedd);
  189. //model.refresh();
  190. clamtodd = basedd;
  191. }
  192. var dateDif = getDateInterval(clamfromdd, clamtodd); // (dateHelper.js) 두 일자사이의 차를 일단위로 반환
  193. if (dateDif < 0) {
  194. messageBox("검색 시작일자가 종료일자 보다 이후", "E008"); ///검색 시작일자가 종료일자 보다 이후 입니다.
  195. //model.refresh();
  196. return;
  197. }
  198. else if (dateDif > 31) {
  199. messageBox("검색기간은 최대 한달(30일)", "E008"); ///검색기간은 최대 세달(90일) 입니다.
  200. //model.refresh();
  201. return;
  202. }
  203. // 선별심사대상을 설정한다.
  204. var choicdsrch2 = model.getValue("/root/send/choicdsrch2").getTrim();
  205. model.setValue("/root/send/choicdsrch2", choicdsrch2);
  206. if (choicdsrch2 != "") {
  207. var choicdsrch1 = model.getValue("/root/send/choicdsrch1");
  208. if (choicdsrch1 == "") {
  209. messageBox("선별심사 조건을 명칭, 수가, EDI 중에", "C002"); ///선별심사 조건을 명칭, 수가, EDI 중에 선택하십시오.
  210. //model.refresh();
  211. return;
  212. }
  213. else if (choicdsrch1 == "1") { // 명칭인 경우
  214. /*
  215. for (var i=0; i < choicdsrch2.length; i++) {
  216. if (choicdsrch2.charCodeAt(i) > 255) { // 한글이 들어오면 255보다 크다.
  217. model.setValue("/root/send/choicdsrch1", "2"); // 2: 한글명
  218. }
  219. }
  220. */
  221. } else { // 수가와 EDI 코드 검색의 경우 대문자로 조건값을 변환한다.
  222. model.setValue("/root/send/choicdsrch2", choicdsrch2.toUpperCase());
  223. }
  224. }
  225. }
  226. // rownum 세팅
  227. model.setValue("/root/send/rownum", model.getValue("/root/hidden/rownum"));
  228. submit("TRPIJ00602");
  229. // 검색 결과를 표시한다.
  230. fSetSrchJudgTrgtMan();
  231. if (getOpenerUID()) { // (common.js) Opener의 UID를 리턴, Opener가 없으면 "" 리턴
  232. // 대상자 리스트에서 선택된 row를 초기화한다. (대상자조회 pre/next 에서 사용)
  233. model.resetInstanceNode(opener.root.hidden.smpij00600.rslt.selectedRow);
  234. }
  235. //model.refresh();
  236. }
  237. // 다음페이지 버튼 클릭
  238. function fGetOutDayJudgTrgtManList2() {
  239. grp_judgmemo.visible = false; // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  240. model.removeNodeset("/root/temp/list1/otpt");
  241. // 환자단위조회를 하는 경우
  242. var patunitsrch1 = model.getValue("/root/send/patunitsrch1").getTrim(); // (stringHelper.js) 문자열 앞뒤에 있는 공백 제거
  243. model.setValue("/root/send/patunitsrch1", patunitsrch1);
  244. if (patunitsrch1 == "") {
  245. model.setValue("/root/send/patunitsrch2", "");
  246. }
  247. else if (patunitsrch1.isNumber()) { // (numericHelper.js) 숫자가 입력된 경우 환자번호로 조회한다.
  248. model.setValue("/root/send/patunitsrch2", "pidSrch");
  249. } else { // 문자가 입력된 경우 환자이름으로 조회한다.
  250. if (patunitsrch1.length > 1) {
  251. // 청구일자(fromdd ~ todd)를 확인한다.
  252. var clamfromdd = model.getValue("/root/send/clamfromdd");
  253. var clamtodd = model.getValue("/root/send/clamtodd");
  254. var basedd = model.getValue("/root/hidden/otpt/basedd");
  255. if (clamfromdd == "") {
  256. messageBox("환자이름으로 조회시 청구일자 시작일자는", "I003"); ///환자이름으로 조회시 청구일자 시작일자는 필수입력입니다.
  257. //model.refresh();
  258. return;
  259. }
  260. if (!isValidDateTime(clamfromdd)) {
  261. messageBox("올바른 형식의 시작일자를", "C001"); ///올바른 형식의 시작일자를 입력하십시오.
  262. //model.refresh();
  263. return;
  264. }
  265. if (!isValidDateTime(clamtodd)) {
  266. // 화면 초기화 시에 설정해 둔 오늘날짜로 종료일자를 설정한다.
  267. model.setValue("/root/send/clamtodd", basedd);
  268. //model.refresh();
  269. clamtodd = basedd;
  270. }
  271. var dateDif = getDateInterval(clamfromdd, clamtodd); // (dateHelper.js) 두 일자사이의 차를 일단위로 반환
  272. if (dateDif < 0) {
  273. messageBox("검색 시작일자가 종료일자 보다 이후", "E008"); ///검색 시작일자가 종료일자 보다 이후 입니다.
  274. //model.refresh();
  275. return;
  276. }
  277. else if (dateDif > 90) {
  278. messageBox("검색기간은 최대 한달(30일)", "E008"); ///검색기간은 최대 세달(90일) 입니다.
  279. //model.refresh();
  280. return;
  281. }
  282. model.setValue("/root/send/patunitsrch2", "nmSrch");
  283. } else {
  284. messageBox("환자단위조회시 검색할 환자이름은 2글자 이상", "C001"); ///환자단위조회시 검색할 환자이름은 2글자 이상 입력하십시오.
  285. model.setValue("/root/send/patunitsrch2", "");
  286. //model.refresh();
  287. return;
  288. }
  289. }
  290. // 환자단위조회를 하지 않는 경우
  291. if (model.getValue("/root/send/patunitsrch2") == "") {
  292. // 청구일자(fromdd ~ todd)를 확인한다.
  293. var clamfromdd = model.getValue("/root/send/clamfromdd");
  294. var clamtodd = model.getValue("/root/send/clamtodd");
  295. var basedd = model.getValue("/root/hidden/otpt/basedd");
  296. if (clamfromdd == "") {
  297. messageBox("청구일자 검색 시작일자는", "I003"); ///청구일자 시작일자는 필수입력입니다.
  298. //model.refresh();
  299. return;
  300. }
  301. if (!isValidDateTime(clamfromdd)) {
  302. messageBox("올바른 형식의 시작일자를", "C001"); ///올바른 형식의 시작일자를 입력하십시오.
  303. //model.refresh();
  304. return;
  305. }
  306. if (!isValidDateTime(clamtodd)) {
  307. // 화면 초기화 시에 설정해 둔 오늘날짜로 종료일자를 설정한다.
  308. model.setValue("/root/send/clamtodd", basedd);
  309. //model.refresh();
  310. clamtodd = basedd;
  311. }
  312. var dateDif = getDateInterval(clamfromdd, clamtodd); // (dateHelper.js) 두 일자사이의 차를 일단위로 반환
  313. if (dateDif < 0) {
  314. messageBox("검색 시작일자가 종료일자 보다 이후", "E008"); ///검색 시작일자가 종료일자 보다 이후 입니다.
  315. //model.refresh();
  316. return;
  317. }
  318. else if (dateDif > 31) {
  319. messageBox("검색기간은 최대 한달(30일)", "E008"); ///검색기간은 최대 세달(90일) 입니다.
  320. //model.refresh();
  321. return;
  322. }
  323. // 선별심사대상을 설정한다.
  324. var choicdsrch2 = model.getValue("/root/send/choicdsrch2").getTrim();
  325. model.setValue("/root/send/choicdsrch2", choicdsrch2);
  326. if (choicdsrch2 != "") {
  327. var choicdsrch1 = model.getValue("/root/send/choicdsrch1");
  328. if (choicdsrch1 == "") {
  329. messageBox("선별심사 조건을 명칭, 수가, EDI 중에", "C002"); ///선별심사 조건을 명칭, 수가, EDI 중에 선택하십시오.
  330. //model.refresh();
  331. return;
  332. }
  333. else if (choicdsrch1 == "1") { // 명칭인 경우
  334. for (var i=0; i < choicdsrch2.length; i++) {
  335. if (choicdsrch2.charCodeAt(i) > 255) { // 한글이 들어오면 255보다 크다.
  336. model.setValue("/root/send/choicdsrch1", "2"); // 2: 한글명
  337. }
  338. }
  339. } else { // 수가와 EDI 코드 검색의 경우 대문자로 조건값을 변환한다.
  340. model.setValue("/root/send/choicdsrch2", choicdsrch2.toUpperCase());
  341. }
  342. }
  343. }
  344. // rownum 세팅
  345. model.setValue("/root/send/rownum", model.getValue("/root/hidden/rownum"));
  346. submit("TRPIJ00603");
  347. // 조회된 리스트에 붙이기 작업 수행
  348. var nodelist = instance1.selectNodes("/root/main/list1/otpt");
  349. var length = nodelist.length;
  350. var addnodelist = instance1.selectNodes("/root/temp/list1/otpt");
  351. var addlength = addnodelist.length;
  352. copyNodeType("/root/main/list1","/root/temp/list1","after");
  353. model.refresh();
  354. // 검색 결과를 표시한다.
  355. fSetSrchJudgTrgtMan();
  356. //model.refresh();
  357. }
  358. // 심사 화면에서 등록번호를 입력하고 Enter 친 경우 해당 환자를 조회하여 보여준다.
  359. function fSetPatUnitSrch1pidSrch(){
  360. var patunitsrch1 = opener.model.getValue("/root/hidden/smpij00600/cond/pid");
  361. if (patunitsrch1 != "") {
  362. grp_judgmemo.visible = false; // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  363. model.setValue("/root/send/patunitsrch1", patunitsrch1);
  364. model.setValue("/root/send/patunitsrch2", "pidSrch");
  365. model.setValue("/root/send/ioflag", "O");
  366. model.setValue("/root/hidden/rownum", 0);
  367. model.setValue("/root/send/rownum", 0);
  368. submit("TRPIJ00602");
  369. // 검색 결과를 표시한다.
  370. fSetSrchJudgTrgtMan();
  371. model.setFocus("ipt_patunitsrch");
  372. model.setValue(opener.root.hidden.smpij00600.rslt.oldPid, patunitsrch1); // 현재 조회된 환자의 등록번호를 저장
  373. //model.refresh();
  374. }
  375. }
  376. // 검색 결과를 표시한다.
  377. function fSetSrchJudgTrgtMan() {
  378. // 한글명칭 검색시 Rdo에 선택이 표시되지 않으므로
  379. if (model.getValue("/root/send/choicdsrch1") == "2") { // 2: 한글명
  380. model.setValue("/root/send/choicdsrch1", "1");
  381. }
  382. var srchmode = "otptmast";
  383. if (model.getValue("/root/send/patunitsrch1") == "" && model.getValue("/root/send/choicdsrch2")) {
  384. srchmode = "specotpt";
  385. }
  386. if (srchmode == "specotpt") { // 선별심사 모드인 경우
  387. grd_otptmast.visible = false;
  388. grd_specotpt.visible = true;
  389. cap_judgtrgtman.text = "선별심사 대상자";
  390. } else {
  391. grd_otptmast.visible = true;
  392. grd_specotpt.visible = false;
  393. cap_judgtrgtman.text = "일일심사 대상자";
  394. }
  395. var otptList = instance1.selectSingleNode("/root/main/list1/otpt");
  396. if (otptList == null) { // 조회된 대상자가 없는 경우
  397. messageBox("검색된 심사대상자가", "I004"); ///검색된 심사대상자가 없습니다.
  398. return;
  399. }
  400. otptList = instance1.selectSingleNode("/root/main/list1"); //root/main/list1
  401. var otptNode = otptList.childNodes; //root/main/list1/otpt
  402. if (srchmode == "specotpt") { // 선별심사 모드인 경우
  403. for (var i = 1; i <= otptNode.length; i++) { // 조회된 대상자 만큼 돌면서
  404. // 선별심사, 문제환자 처방 색깔 구분
  405. var spcljudgyn = model.getValue("/root/main/list1/otpt["+ i +"]/spcljudgyn");
  406. var probjudgflag = model.getValue( "/root/main/list1/otpt[" + i + "]/probjudgflag");
  407. var tdayinflag = model.getValue("/root/main/list1/otpt[" + i + "]/tdayinflag");
  408. // 2008.01.10 박지욱 수정 (범례 색상 주기), 당일입원환자 범례 추가
  409. if(spcljudgyn == "A"){
  410. grd_specotpt.rowStyle(i,"data","background-color") = "#ffe79d";
  411. }else if(tdayinflag != "N") {
  412. grd_specotpt.rowStyle(i,"data","background-color") = "#99cc00";
  413. }else{
  414. var chk_digit = i % 2; //2로 나눠서 나머지가 0 이면 짝수줄 이란 소리
  415. if(chk_digit != 0){
  416. grd_specotpt.rowStyle(i, "data", "background-color") = "#ffffff"; //짝수는 연한 회식
  417. }else{
  418. grd_specotpt.rowStyle(i, "data", "background-color") = "#f4f4f4"; //홀수는 그냥 힌색
  419. }
  420. }
  421. }
  422. } else {
  423. for (var i = 1; i <= otptNode.length; i++) { // 조회된 대상자 만큼 돌면서
  424. // 선별심사, 문제환자 처방 색깔 구분
  425. var spcljudgyn = model.getValue("/root/main/list1/otpt["+ i +"]/spcljudgyn");
  426. var probjudgflag = model.getValue( "/root/main/list1/otpt[" + i + "]/probjudgflag");
  427. var tdayinflag = model.getValue("/root/main/list1/otpt[" + i + "]/tdayinflag");
  428. // 2008.01.10 박지욱 수정 (범례 색상 주기)
  429. if(spcljudgyn == "A"){
  430. grd_otptmast.rowStyle(i,"data","background-color") = "#ffe79d";
  431. }else if(tdayinflag != "N") {
  432. grd_otptmast.rowStyle(i,"data","background-color") = "#99cc00";
  433. }else{
  434. var chk_digit = i % 2; //2로 나눠서 나머지가 0 이면 짝수줄 이란 소리
  435. if(chk_digit != 0){
  436. grd_otptmast.rowStyle(i, "data", "background-color") = "#ffffff"; //짝수는 연한 회식
  437. }else{
  438. grd_otptmast.rowStyle(i, "data", "background-color") = "#f4f4f4"; //홀수는 그냥 힌색
  439. }
  440. }
  441. }
  442. }
  443. // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  444. fSetWorkStatCnt();
  445. model.refresh();
  446. }
  447. // 총건수와 기타 심사상태에 따른 cnt를 표시한다.
  448. function fSetWorkStatCnt(){
  449. model.setValue("/root/hidden/otpt/totcnt", instance1.getXPathString("count(/root/main/list1/otpt)")); // 총건수
  450. model.setValue("/root/hidden/otpt/endcnt", instance1.getXPathString("count(/root/main/list1/otpt[dschjudgprcsstat='E'])")); // 완료
  451. model.setValue("/root/hidden/otpt/unjudgcnt", instance1.getXPathString("count(/root/main/list1/otpt[dschjudgprcsstat='A' or dschjudgprcsstat =''])")); // 미심사
  452. model.setValue("/root/hidden/otpt/retecnt", instance1.getXPathString("count(/root/main/list1/otpt[dschjudgprcsstat='D'])")); // 보류
  453. model.setValue("/root/hidden/otpt/delcnt", "0"); // 삭제
  454. model.setValue("/root/hidden/otpt/judgprcscnt", instance1.getXPathString("count(/root/main/list1/otpt[dschjudgprcsstat ='B'])")); // 심사중
  455. model.setValue("/root/hidden/otpt/rptclamcnt", "0"); // 재청구
  456. if (grd_specotpt.visible == true) { // 선별심사 모드인 경우
  457. var totCnt = 0;
  458. var cntE = 0; // 완료
  459. var cntA = 0; // 미심사
  460. var cntD = 0; // 보류
  461. var cntB = 0; // 심사중
  462. var prePid = "";
  463. var preOrddd = "";
  464. for (var i = 1; i < grd_specotpt.rows; i++) {
  465. var pid = model.getValue("/root/main/list1/otpt["+ i +"]/pid");
  466. var orddd = model.getValue("/root/main/list1/otpt["+ i +"]/orddd");
  467. if (prePid != pid || preOrddd != orddd) {
  468. var dschjudgprcsstat = model.getValue("/root/main/list1/otpt["+ i +"]/dschjudgprcsstat");
  469. if (dschjudgprcsstat == "E") {
  470. cntE++;
  471. } else if (dschjudgprcsstat == "A" || dschjudgprcsstat == "") {
  472. cntA++;
  473. } else if (dschjudgprcsstat == "D") {
  474. cntD++;
  475. } else if (dschjudgprcsstat == "B") {
  476. cntB++;
  477. }
  478. totCnt++;
  479. }
  480. prePid = pid;
  481. preOrddd = orddd;
  482. }
  483. model.setValue("/root/hidden/otpt/totcnt", totCnt);
  484. model.setValue("/root/hidden/otpt/endcnt", cntE);
  485. model.setValue("/root/hidden/otpt/unjudgcnt", cntA);
  486. model.setValue("/root/hidden/otpt/retecnt", cntD);
  487. model.setValue("/root/hidden/otpt/judgprcscnt", cntB);
  488. }
  489. }
  490. // 추가 : 20090813 JHP가만든 함수 zzu추가 성가에서 환자번호에 문자가들어있는경우 있음(ex : A108) 하여 각 문자 판단하여 앞두자리 판단하여 조회 여부 결정
  491. // 환자번호 문자 숫자 여부 판단. (isNaN 숫자가아닐경우 true, isFinite 숫자일경우 true)
  492. function fChkPidWordNumber(pid)
  493. {
  494. if( typeof( this ) == "undefined" ) return false;
  495. if( this.length == 0 ) return false;
  496. var thisSting = pid.toString();
  497. var firstpid = "";
  498. for( var i=0; i < thisSting.length; i++ ){
  499. var thisNumber = thisSting.substring( i, i+1 );
  500. // 숫자가 아니면
  501. if( isNaN( thisNumber ) ) firstpid = firstpid + 'W';
  502. // 숫자면
  503. if( isNaN( thisNumber ) == false ) firstpid = firstpid + 'N';
  504. // 공백이면 FALSE 리턴
  505. if( " " == thisNumber ) firstpid = firstpid + 'L';
  506. }
  507. var firstpidYN = firstpid.substring( 0, 2 );
  508. // 첫번째 두번째 글자 여부
  509. // 문자숫자, 숫자숫자 : pid로 판단 : true
  510. // 문자문자, 숫자문자 : 글자로 판단 : false
  511. // 그외 : 글자로 판단 : false
  512. if ( firstpidYN == "WN"){ return true}
  513. else if ( firstpidYN == "NN"){ return true}
  514. else if ( firstpidYN == "WW"){ return false}
  515. else if ( firstpidYN == "NW"){ return false}
  516. else { return false }
  517. }