SMPIZ00200.xjs 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type ="xscript4.0"><![CDATA[/*
  3. - 상병관련 Function
  4. --------------------------------
  5. - fDiagSeqUp : 상병순서 위로
  6. - fDiagSeqDown : 상병순서 아래로
  7. - fSortDiagNo : 상병SORT
  8. - fDiagGridInsertRow : 행삽입
  9. - fDiagGridInsertRowMulti : 행추가(5줄)
  10. - fDiagGridDeleteRow : 행삭제
  11. - fDiagGridDeleteCancel : 삭제취소
  12. - fSearchDiageCode : 상병코드 PopUp 조회
  13. - fSearchSPPIZ00400 : 상병코드 PopUp 조회호출
  14. - fSetDiagCdNm : 상병코드 PopUp 반영
  15. */
  16. var gToday = new Date();
  17. var gBaseyear = gToday.getDateFormat("YYYY"); // (dateHelper.js)에서 제공하는 함수를 사용하여 해당 년를 구한다.
  18. var gBasemonth = gToday.getDateFormat("MM");
  19. var gBaseday = gToday.getDateFormat("DD");
  20. var gCurrentdd = gBaseyear + gBasemonth + gBaseday;
  21. var gCurrentym = gBaseyear + gBasemonth;
  22. var gClopSize = "AUTO"; // 현재상태 DEFAULT, FULL, AUTO, CHANGE
  23. // 20100614 환경초기화를 위한 로딩상태 저장
  24. var gCldihist_refdata = "";
  25. var gCldihist_sizedata = "";
  26. var gClodhist_refdata = "";
  27. var gClodhist_sizedata = "";
  28. var gClophist_refdata = "";
  29. var gClophist_sizedata = "";
  30. ///////////////////////////////////////////////////////////////////////////
  31. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "상병순서 위로"
  32. function fDiagSeqUp() {
  33. var rowstatus = grd_cldihist.rowstatus(grd_cldihist.row);
  34. if (rowstatus == 4) { // 4 : delete
  35. return;
  36. }
  37. var diagseq = parseInt(model.getValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagseq")); // 선택된 줄의 NO
  38. if (diagseq > 1) { // 첫번째 줄이 아닌 경우
  39. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagseq", --diagseq);
  40. if (rowstatus == 0 || rowstatus == 2) {
  41. grd_cldihist.rowstatus(grd_cldihist.row) = 2; // 2 : update
  42. }
  43. // 바로 위 상병순서와 중복되는 경우
  44. var nextrow = grd_cldihist.row - 1;
  45. var nextdiagseq = model.getValue(grd_cldihist.nodeset + "["+ nextrow +"]_diagseq");
  46. if (diagseq == nextdiagseq) {
  47. model.setValue(grd_cldihist.nodeset + "["+ nextrow +"]_diagseq", ++diagseq);
  48. rowstatus = grd_cldihist.rowstatus(nextrow);
  49. if (rowstatus == 0 || rowstatus == 2) {
  50. grd_cldihist.rowstatus(nextrow) = 2; // 2 : update
  51. }
  52. }
  53. // 20100329 MT002 입력체크
  54. if ( model.getValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagseq") == "1"
  55. && model.getValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_vcode") != ""
  56. ) {
  57. fSetDiagMT002(model.getValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_vcode"));
  58. }
  59. fSortDiagNo(false);
  60. }
  61. }
  62. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "상병순서 아래로"
  63. function fDiagSeqDown() {
  64. var rowstatus = grd_cldihist.rowstatus(grd_cldihist.row);
  65. if (rowstatus == 4) { // 4 : delete
  66. return;
  67. }
  68. // 삭제 상태가 아닌 마지막 줄을 찾는다.
  69. var lastRow = grd_cldihist.rows - 1;
  70. for (var i = 1; i < grd_cldihist.rows; i++) {
  71. if (grd_cldihist.rowstatus(i) == 4) { // delete
  72. lastRow = i - 1;
  73. i = grd_cldihist.rows;
  74. }
  75. }
  76. var diagseq = parseInt(model.getValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagseq")); // 선택된 줄의 NO
  77. if (diagseq < lastRow) { // 마지막 줄이 아닌 경우
  78. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagseq", ++diagseq);
  79. if (rowstatus == 0 || rowstatus == 2) {
  80. grd_cldihist.rowstatus(grd_cldihist.row) = 2; // 2 : update
  81. }
  82. // 바로 아래 상병순서와 중복되는 경우
  83. var nextrow = grd_cldihist.row + 1;
  84. var nextdiagseq = model.getValue(grd_cldihist.nodeset + "["+ nextrow +"]_diagseq");
  85. if (diagseq == nextdiagseq) {
  86. model.setValue(grd_cldihist.nodeset + "["+ nextrow +"]_diagseq", --diagseq);
  87. rowstatus = grd_cldihist.rowstatus(nextrow);
  88. if (rowstatus == 0 || rowstatus == 2) {
  89. grd_cldihist.rowstatus(nextrow) = 2; // 2 : update
  90. }
  91. }
  92. // 20100329 MT002 입력체크
  93. if ( model.getValue(grd_cldihist.nodeset + "["+ nextrow +"]_diagseq") == "1"
  94. && model.getValue(grd_cldihist.nodeset + "["+ nextrow +"]_vcode") != ""
  95. ) {
  96. fSetDiagMT002(model.getValue(grd_cldihist.nodeset + "["+ nextrow +"]_vcode"));
  97. }
  98. fSortDiagNo(false);
  99. }
  100. }
  101. // "상병순서 위로_아래로" 순서 변경 후에 상병 순서 NO에 따라 sorting 작업
  102. function fSortDiagNo(isNumbering) {
  103. var delcnt = 0;
  104. for (var i = 1; i < grd_cldihist.rows; i++) {
  105. grd_cldihist.rowHidden(i) = false;
  106. }
  107. if (isNumbering == false) {
  108. var maxRow = parseInt(grd_cldihist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  109. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow, grd_cldihist.colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  110. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  111. grd_cldihist.gridToInstance();
  112. }
  113. var cldino = 1;
  114. for (var i = 1; i < grd_cldihist.rows; i++) {
  115. // 2.----------------------------------------------------------------------
  116. if (grd_cldihist.rowstatus(i) != 4) { // delete
  117. var diagseq = model.getValue(grd_cldihist.nodeset + "["+ i +"]_diagseq");
  118. if (grd_cldihist.rowstatus(i) == 0 && diagseq != cldino) {
  119. grd_cldihist.rowstatus(i) = 2; // 2 : update
  120. }
  121. model.setValue(grd_cldihist.nodeset + "["+ i +"]_diagseq", cldino++);
  122. } else {
  123. delcnt++;
  124. }
  125. }
  126. var maxRow = parseInt(grd_cldihist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  127. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow, grd_cldihist.colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  128. if (delcnt > 0) {
  129. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow - delcnt, grd_cldihist.colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  130. }
  131. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  132. grd_cldihist.gridToInstance();
  133. /*
  134. grd_cldihist.setFocus();
  135. grd_cldihist.row = 1;
  136. */
  137. var rowstatus;
  138. for (var i = 1; i < grd_cldihist.rows; i++) {
  139. rowstatus = grd_cldihist.rowstatus(i);
  140. if (rowstatus > 3) { // 삭제상태
  141. grd_cldihist.rowHidden(i) = true;
  142. } else {
  143. grd_cldihist.rowHidden(i) = false;
  144. }
  145. }
  146. }
  147. // 사용자가 입력한 숫자를 기준으로 상병순서 부여
  148. function fChangeDiagNo() {
  149. var row = grd_cldihist.row;
  150. if (grd_cldihist.rowstatus(row) != 1 && grd_cldihist.rowstatus(row) != 3) { // 1 : insert, 3 : insert & new
  151. grd_cldihist.rowstatus(row) = 2; // 2 : update
  152. }
  153. var newseq = model.getValue(grd_cldihist.nodeset + "["+ row +"]_diagseq");
  154. var oldseq = ds_hidden_list1_cldi.getColumn(0, "oldseq");
  155. var vcode = model.getValue(grd_cldihist.nodeset + "["+ row +"]_vcode");
  156. if (newseq) {
  157. newseq = parseInt(model.getValue(grd_cldihist.nodeset + "["+ row +"]_diagseq"), 10); // '09' 와 같은 형식으로 입력한 경우 -> 9로 처리
  158. // 삭제상태가 아닌 중복된 번호가 있는지 체크한다.
  159. var sameRow = 0;
  160. for (var i = 1; i < grd_cldihist.rows; i++) {
  161. var diagseq = model.getValue(grd_cldihist.nodeset + "["+ i +"]_diagseq");
  162. if (row != i && diagseq == newseq) {
  163. sameRow = i;
  164. i = grd_cldihist.rows;
  165. }
  166. }
  167. if (sameRow > 0) { // 중복된 상병순서의 row가 있음
  168. if (newseq < oldseq) { // 이전보다 앞번호를 입력한 경우
  169. for (var j = sameRow; j < row; j++) {
  170. var rowstatus = grd_cldihist.rowstatus(j);
  171. if (rowstatus != 4) {
  172. var curseq = parseInt(model.getValue(grd_cldihist.nodeset + "["+ j +"]_diagseq"), 10);
  173. if (rowstatus != 1 && rowstatus != 3) {
  174. if (model.getValue(grd_cldihist.nodeset + "["+ j +"]_diagseq") != (curseq+1)) {
  175. grd_cldihist.rowstatus(j) = 2;
  176. }
  177. }
  178. model.setValue(grd_cldihist.nodeset + "["+ j +"]_diagseq", curseq+1);
  179. }
  180. }
  181. }
  182. else { // 이전보다 뒷번호를 입력한 경우
  183. for (var j = row+1; j <= sameRow; j++) {
  184. var rowstatus = grd_cldihist.rowstatus(j);
  185. if (rowstatus != 4) {
  186. var curseq = parseInt(model.getValue(grd_cldihist.nodeset + "["+ j +"]_diagseq"), 10);
  187. if (rowstatus != 1 && rowstatus != 3) {
  188. if (model.getValue(grd_cldihist.nodeset + "["+ j +"]_diagseq") != (curseq-1)) {
  189. grd_cldihist.rowstatus(j) = 2;
  190. }
  191. }
  192. model.setValue(grd_cldihist.nodeset + "["+ j +"]_diagseq", curseq-1);
  193. }
  194. }
  195. }
  196. fSortDiagNo(false);
  197. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한 20090918 정승우
  198. // 20100329 MT002 입력체크
  199. if ( newseq == "1" && oldseq != "1" && vcode != "") {
  200. fSetDiagMT002(vcode);
  201. }
  202. } else { // 중복된 상병순서의 row가 없는 경우
  203. fSortDiagNo(false); // 현재 부여된 순번으로 sort 후
  204. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한 20090918 정승우
  205. }
  206. } else { // 순번을 삭제한 경우
  207. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagseq", oldseq);
  208. grd_cldihist.rowstatus(row) = ds_hidden_list1_cldi.getColumn(0, "oldrowstat");
  209. //
  210. //model.refresh();
  211. //grd_cldihist.refresh();
  212. fDiagGridInsertRow("Y", "N"); // 상병마지막 그리드에 한
  213. }
  214. }
  215. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삽입"
  216. function fDiagGridInsertRow(addyn, selectyn) {
  217. var iInsertRow = 0;
  218. if (grd_cldihist.rows == 1 || addyn == "Y") {
  219. iInsertRow = grd_cldihist.row;
  220. grd_cldihist.addRow(true, false);
  221. } else {
  222. iInsertRow = grd_cldihist.row;
  223. grd_cldihist.insertRow(iInsertRow, "below", true);
  224. }
  225. var nowRow = 0;
  226. nowRow = grd_cldihist.row;
  227. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagkindcd", "C");
  228. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagseq", grd_cldihist.row);
  229. // 청구과, 진료개시일은 주상병을 기준으로 부여한다.
  230. var clamdeptcd = model.getValue(grd_cldihist.nodeset + "_clamdeptcd");
  231. if (clamdeptcd == "") { // 주상병의 진료과가 입력되지 않은 경우 인적사항의 청구과를 입력한다.
  232. clamdeptcd = model.getValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_clamdeptcd");
  233. }
  234. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_clamdeptcd", clamdeptcd);
  235. var ordfromdd = model.getValue(grd_cldihist.nodeset + "_ordfromdd");
  236. if (ordfromdd) {
  237. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_ordfromdd", ordfromdd);
  238. } else {
  239. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_ordfromdd", model.getValue(grd_diaghistlist.nodetset + "[" + grd_diaghistlist.row + "]_ordfromdd"));
  240. }
  241. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_toot", "-");
  242. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_vcode", ""); // 20100308 추가
  243. // 상병이력조회에서 호출된 경우가 아니면
  244. if (selectyn != "Y") {
  245. fSortDiagNo(true);
  246. }
  247. // edit mode 설정위한것임 절대 지우지 말것.
  248. //grd_cldihist.refresh();
  249. if (addyn != "Y") {
  250. grd_cldihist.row = nowRow;
  251. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  252. grd_cldihist.dispatch("onentercell");
  253. }
  254. }
  255. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  256. function fDiagGridAddRow() {
  257. grd_cldihist.insertRow(grd_cldihist.rows - 1, "below", false);
  258. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagkindcd", "C");
  259. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagseq", grd_cldihist.row);
  260. // 청구과, 진료개시일은 주상병을 기준으로 부여한다.
  261. var clamdeptcd = model.getValue(grd_cldihist.nodeset + "_clamdeptcd");
  262. if (clamdeptcd == "") { // 주상병의 진료과가 입력되지 않은 경우 인적사항의 청구과를 입력한다.
  263. clamdeptcd = model.getValue(grd_cldihist.nodeset + "_clamdeptcd");
  264. }
  265. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_clamdeptcd", clamdeptcd);
  266. var ordfromdd = model.getValue(grd_cldihist.nodeset + "_ordfromdd");
  267. if (ordfromdd) {
  268. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_ordfromdd", ordfromdd);
  269. } else {
  270. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_ordfromdd", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_ordfromdd"));
  271. }
  272. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_toot", "-");
  273. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_vcode", ""); // 20100308 추가
  274. //grd_cldihist.refresh();
  275. fSortDiagNo(true);
  276. // edit mode 설정위한것임 절대 지우지 말것.
  277. //grd_cldihist.refresh();
  278. grd_cldihist.row = grd_cldihist.rows -1;
  279. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  280. grd_cldihist.dispatch("onentercell");
  281. }
  282. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가(5줄)"
  283. function fDiagGridInsertRowMulti() {
  284. for (var i = 1; i <= 5; i++) {
  285. grd_cldihist.insertRow(grd_cldihist.rows - 1, "below", false);
  286. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagkindcd", "C");
  287. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagseq", grd_cldihist.row);
  288. // 청구과, 진료개시일은 주상병을 기준으로 부여한다.
  289. var clamdeptcd = model.getValue(grd_cldihist.nodeset + "_clamdeptcd");
  290. if (clamdeptcd == "") { // 주상병의 진료과가 입력되지 않은 경우 인적사항의 청구과를 입력한다.
  291. clamdeptcd = model.getValue(grd_cldihist.nodeset + "_clamdeptcd");
  292. }
  293. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_clamdeptcd", clamdeptcd);
  294. var ordfromdd = model.getValue(grd_cldihist.nodeset + "_ordfromdd");
  295. if (ordfromdd) {
  296. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_ordfromdd", ordfromdd);
  297. } else {
  298. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_ordfromdd", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_ordfromdd"));
  299. }
  300. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_toot", "-");
  301. model.setValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_vcode", ""); // 20100308 추가
  302. }
  303. //grd_cldihist.refresh();
  304. fSortDiagNo(true);
  305. // edit mode 설정위한것임 절대 지우지 말것.
  306. //grd_cldihist.refresh();
  307. grd_cldihist.row = grd_cldihist.rows - 5;
  308. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  309. grd_cldihist.dispatch("onentercell");
  310. }
  311. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삭제"
  312. function fDiagGridDeleteRow() {
  313. // 여러 row를 동시에 선택하고 삭제하는 기능을 부여한다.
  314. for (var i = 0; i < grd_cldihist.selectedRows; i++) {
  315. var row = grd_cldihist.selectedrow(i);
  316. var rowstatus = grd_cldihist.rowstatus(row);
  317. if (rowstatus == 4) { // 4 : delete
  318. //return;
  319. }
  320. else if ( (rowstatus == 1 || rowstatus == 3) && rowstatus != 0) { // 1 : insert, 3 : insert & new
  321. model.resetInstanceNode(grd_cldihist.nodeset + "["+ row +"]_diagcd");
  322. model.resetInstanceNode(grd_cldihist.nodeset + "["+ row +"]_diagnm");
  323. model.resetInstanceNode(grd_cldihist.nodeset + "["+ row +"]_diagengnm");
  324. grd_cldihist.deleteRow(row, false); // 해당 라인을 Grid에서 삭제한다.
  325. } else { // 0 : new, 2 : update
  326. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagseq", "D"+row);
  327. grd_cldihist.rowstatus(row) = 4; // 4 : delete 상태로 stat를 변경한다.
  328. }
  329. }
  330. fSortDiagNo(true);
  331. }
  332. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "삭제 취소"
  333. function fDiagGridDeleteCancel() {
  334. // 여러 row를 동시에 선택하고 삭제취소하는 기능을 부여한다.
  335. for (var i = 0; i < grd_cldihist.selectedRows; i++) {
  336. var row = grd_cldihist.selectedrow(i);
  337. var rowstatus = grd_cldihist.rowstatus(row);
  338. if (rowstatus == 4) { // 4 : delete
  339. grd_cldihist.rowstatus(row) = 2 // 2 : update 상태로 stat를 변경한다.
  340. }
  341. }
  342. fSortDiagNo(true);
  343. }
  344. // 상병코드를 조회하여 해당 정보를 표시하거나 상병코드 조회용 Popup을 호출한다.
  345. function fSearchDiageCode() {
  346. var row = grd_cldihist.row;
  347. var diagcd = model.getValue(grd_cldihist.nodeset + "["+ row +"]_diagcd");
  348. if (diagcd) {
  349. ds_hidden_sppiz00400_rslt.clearData();
  350. // 상병 Data가 2007년 이후로 설정되어 있으므로 임시로 현재 날짜를 넘긴다.
  351. //dsf_makeValue( ds_hidden_sppiz00400_cond, "basedd", "string", ds_main_item1_clbs.getColumn(0, "clamym"));
  352. ds_hidden_sppiz00400_cond.clearData(); ds_hidden_sppiz00400_cond.addRow();
  353. dsf_makeValue( ds_hidden_sppiz00400_cond, "basedd", "string", utlf_getCurrentDate()); // (dateHelper.js) 현재날짜 반환
  354. dsf_makeValue( ds_hidden_sppiz00400_cond, "diagcd", "string", diagcd);
  355. dsf_makeValue( ds_hidden_sppiz00400_cond, "diagnm", "string", "");
  356. dsf_makeValue( ds_hidden_sppiz00400_cond, "selectedrdodiagkind", "string", "1");
  357. // submit("TRPID20306"); // 입력된 상병코드로 emr.mrtmicd10 테이블을 조회한다.
  358. var oParam = {};
  359. oParam.id = "TRPID20306";
  360. oParam.service = "aftjudgapp.InAftJudg";
  361. oParam.method = "reqGetSickAndWounded";
  362. oParam.inds = "req=ds_";
  363. oParam.outds = "ds_=cond ds_=rslt";
  364. oParam.async = false;
  365. oParam.callback = "cf_TRPID20306";
  366. tranf_submit(oParam);
  367. /*
  368. function cf_TRPID20306(sSvcId, nErrorCode, sErrorMsg) {
  369. if(nErrorCode < 0) return;
  370. }
  371. function cf_TRPID20306(sSvcId, nErrorCode, sErrorMsg) {
  372. arErrorCode.push(sSvcId, nErrorCode);
  373. }
  374. arErrorCode.pop("TRPID20306") > -1
  375. arErrorCode.pop("TRPID20306") < 0
  376. */
  377. /*
  378. var nodeList = instance1.selectNodes("ds_init_diagcd_diagcdlist[diagcd='" + diagcd + "']");
  379. if (nodeList.length == 1) {
  380. //dsf_makeValue( ds_hidden, "srchdiagcd", "string", "" );
  381. //model.copyNode("ds_hidden_srchdiagcd", nodeList);
  382. var diagListCSV = getNodeListCSV(nodeList);
  383. diagList1 = diagListCSV.split("▩");
  384. diagList2 = diagList1[1].split("▦");
  385. dsf_makeValue( ds_hidden_sppiz00400_rslt, "diagcd", "string", diagList2[0]);
  386. dsf_makeValue( ds_hidden_sppiz00400_rslt, "diaghngnm", "string", diagList2[1]);
  387. dsf_makeValue( ds_hidden_sppiz00400_rslt, "diagengnm", "string", diagList2[2]);
  388. }
  389. */
  390. var rsltList = instance1.selectSingleNode("ds_hidden_sppiz00400_rslt");
  391. if (rsltList != null && rsltList.length == 0) {
  392. // 조회된 결과가 1건이면
  393. fSetDiagCdNm();
  394. // 다음칸에 자동 포커스 2008-11-26
  395. row++;
  396. grd_cldihist.row = row;
  397. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  398. grd_cldihist.dispatch("onentercell");
  399. } else {
  400. // 조회된 결과가 없거나 여러 건이면
  401. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  402. fSearchSPPIZ00400();
  403. if (model.getValue(grd_cldihist.nodeset + "["+ row +"]_diagnm") == "" && model.getValue(grd_cldihist.nodeset + "["+ row +"]_diagengnm") == "") {
  404. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagcd", ds_hidden_list1_cldi.getColumn(0, "olddiagcd"));
  405. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagnm", ds_hidden_list1_cldi.getColumn(0, "olddiagnm"));
  406. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagengnm", ds_hidden_list1_cldi.getColumn(0, "oldengnm"));
  407. grd_cldihist.rowstatus(row) = ds_hidden_list1_cldi.getColumn(0, "oldrowstat");
  408. //grd_cldihist.refresh();
  409. return;
  410. } else {
  411. // 다음칸에 자동 포커스 2008-11-26
  412. row++;
  413. if (row < grd_cldihist.rows) {
  414. grd_cldihist.row = row;
  415. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  416. grd_cldihist.dispatch("onentercell");
  417. }
  418. }
  419. }
  420. } else {
  421. // 상병 Grid에 상병코드를 입력하지 않고 Enter 친 경우
  422. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  423. fSearchSPPIZ00400();
  424. // 다음칸에 자동 포커스 2008-11-26
  425. row++;
  426. grd_cldihist.row = row;
  427. grd_cldihist.col = grd_cldihist.colRef("diagcd");
  428. grd_cldihist.dispatch("onentercell");
  429. if (model.getValue(grd_cldihist.nodeset + "["+ row +"]_diagcd") == "") {
  430. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagcd", ds_hidden_list1_cldi.getColumn(0, "olddiagcd"));
  431. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagnm", ds_hidden_list1_cldi.getColumn(0, "olddiagnm"));
  432. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagengnm", ds_hidden_list1_cldi.getColumn(0, "oldengnm"));
  433. grd_cldihist.rowstatus(row) = ds_hidden_list1_cldi.getColumn(0, "oldrowstat");
  434. //grd_cldihist.refresh();
  435. return;
  436. }
  437. }
  438. // 삭제 상태였던 상병코드를 조회하여 수정한 경우를 위해 순번을 다시 부여한다.
  439. // 2008-11-26
  440. // fSortDiagNo(true);
  441. }
  442. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  443. function fSearchSPPIZ00400() {
  444. ds_hidden_sppiz00400_rslt.clearData();
  445. dsf_makeValue( ds_hidden_sppiz00400_rslt, "diagcd", "string", "" );
  446. dsf_makeValue( ds_hidden_sppiz00400_rslt, "diaghngnm", "string", "" );
  447. dsf_makeValue( ds_hidden_sppiz00400_rslt, "diagengnm", "string", "" );
  448. ds_hidden_sppiz00400_cond.clearData(); ds_hidden_sppiz00400_cond.addRow();
  449. ds_hidden_sppiz00400_cond.setColumn( 0, "basedd", utlf_getCurrentDate()); // (dateHelper.js) 현재날짜 반환
  450. ds_hidden_sppiz00400_cond.setColumn( 0, "diagcd", model.getValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagcd"));
  451. ds_hidden_sppiz00400_cond.setColumn( 0, "diagnm", "");
  452. ds_hidden_sppiz00400_cond.setColumn( 0, "selectedrdodiagkind","3"); // 사용자가 직접검색하여 입력 할수 있도록 임의의 값(3)을 넣어줌
  453. frmf_modal("SPPIZ00400", "SPPIZ00400", "ds_hidden_sppiz00400_cond""-"ds_init"", "", "1", "10", "10", "", "", "", "", "", "M"); // SPPIZ00400_상병코드조회.xrw
  454. }
  455. // [SPPIZ00400_상병코드조회.xrw 에서 호출] 상병코드조회 팝업에서 선택한 상병을 상병 그리드에 반영
  456. function fSetDiagCdNm() {
  457. var row = grd_cldihist.row;
  458. if (row > 0) {
  459. var diagcd = ds_hidden_sppiz00400_rslt.getColumn(0, "diagcd");
  460. var diaghngnm = ds_hidden_sppiz00400_rslt.getColumn(0, "diaghngnm");
  461. var diagengnm = ds_hidden_sppiz00400_rslt.getColumn(0, "diagengnm");
  462. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagcd", diagcd);
  463. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagnm", diaghngnm);
  464. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagengnm", diagengnm);
  465. // 해당 상병의 한글상병명과 영문상병명이 Message 용 output 컨트롤에 표시된다.
  466. ds_hidden_list3.setColumn( 0, "msgspclformat", "상병코드 - "+ diagcd +" / "+ diaghngnm +" / "+ diagengnm);
  467. // 20100308 특정내역 조회 추가
  468. model.setValue(grd_cldihist.nodeset + "["+ row +"]_vcode", fGetDiagVcode(diagcd));
  469. // 20100329 MT002 입력체크
  470. if ( model.getValue(grd_cldihist.nodeset + "["+ row +"]_diagseq") == "1"
  471. && model.getValue(grd_cldihist.nodeset + "["+ row +"]_vcode") != ""
  472. ) {
  473. fSetDiagMT002(model.getValue(grd_cldihist.nodeset + "["+ row +"]_vcode"));
  474. }
  475. //20090918 정승우 행추가
  476. var addval1 = ds_main_list1_diag.getColumn(row, "rowstat"));
  477. var addval2 = grd_cldihist.rowstatus(row);
  478. var rowstatus = grd_cldihist.rowstatus(row);
  479. if (rowstatus != 1 && rowstatus != 3) { // 1 : insert, 3 : insert & new
  480. grd_cldihist.rowstatus(row) = 2; // 2 : update
  481. }
  482. // 4. 빈 row에 대한 입력은 행 추가를 발생시킨다. (그외에는 행추가가 일어나지 않는다.)
  483. //20090918 정승우 행추가
  484. if (addval1 == "" && (addval2 == 1 || addval2 == 3)) fDiagGridInsertRow("Y", "N");
  485. }
  486. }
  487. // 20100329 김용민 추가 상병row 로 MT002 입력
  488. // incode null 경우는 주상병의 특정기호 체크, null아니면 바로입력체크
  489. function fSetDiagMT002(incode) {
  490. var gridrowstatus = "";
  491. var existsyn = "N";
  492. var vcode = "";
  493. if ( incode == "" ) {
  494. for (var i = 1; i < grd_cldihist.rows; i++) {
  495. if ( grd_cldihist.rowHidden(i) == false
  496. && model.getValue(grd_cldihist.nodeset + "["+ i +"]_diagseq") == "1"
  497. && model.getValue(grd_cldihist.nodeset + "["+ i +"]_vcode") != ""
  498. ) {
  499. vcode = model.getValue(grd_cldihist.nodeset + "["+ i +"]_vcode")
  500. break;
  501. }
  502. }
  503. } else {
  504. vcode = incode;
  505. }
  506. if ( vcode != "" ) {
  507. for (var i = 1; i < grd_clsphist.rows; i++) {
  508. spclcd = ds_main_list3_clsp.getColumn(i, "spclcd");
  509. spclspec = ds_main_list3_clsp.getColumn(i, "spclspec");
  510. gridrowstatus = grd_clsphist.rowstatus(i);
  511. if ( vcode == spclspec && spclcd == "MT002" && gridrowstatus != 4 ) {
  512. existsyn = "Y";
  513. }
  514. }
  515. if ( existsyn != "Y" ) {
  516. var ans = sysf_messageBox( vcode + " 상병입니다.\n\n"
  517. + "MT002 특정내역을 \n\n"
  518. + "입력"
  519. , "S001");
  520. if ( ans == 6 ) { // yes
  521. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  522. grd_clsphist.insertRow(clsprow++, true);
  523. ds_main_list3.setColumn( clsprow , "unitflag", "M");
  524. ds_main_list3.setColumn( clsprow , "edilnno", 0);
  525. ds_main_list3.setColumn( clsprow , "snglcalcscorcd", "-");
  526. ds_main_list3.setColumn( clsprow , "spclcd", "MT002");
  527. ds_main_list3.setColumn( clsprow , "cdnm", "특정기호");
  528. ds_main_list3.setColumn( clsprow , "spclspec", vcode);
  529. ds_main_list3.setColumn( clsprow , "spclformat", "X(4)");
  530. ds_main_list3.setColumn( clsprow , "detldesc", "");
  531. ds_main_list3.setColumn( clsprow , "oldedilnno", "");
  532. ds_main_list3.setColumn( clsprow , "clodseqno", "");
  533. // 특정내역 줄번호_특정코드에 따라 sorting 작업
  534. fSortSpclNo();
  535. //grd_clsphist.refresh();
  536. }
  537. }
  538. }
  539. }
  540. // 20100308 김용민 추가 (상병코드로 특정기호 조회)
  541. function fGetDiagVcode(diagcd) {
  542. var vcode = "";
  543. var spclcd = "";
  544. var spclspec = "";
  545. var gridrowstatus = "";
  546. var existsyn = "N";
  547. ds_hidden_getvcode.clearData();
  548. dsf_makeValue( ds_hidden_getvcode_cond, "diagcd", "string", diagcd);
  549. dsf_makeValue( ds_hidden_getvcode_cond, "ioflag", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_ioflagcd"));
  550. dsf_makeValue( ds_hidden_getvcode_cond, "insukind", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_insukindcd"));
  551. dsf_makeValue( ds_hidden_getvcode_cond, "suppkind", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_suppkindcd"));
  552. dsf_makeValue( ds_hidden_getvcode_cond, "ordfromdd", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_ordfromdd"));
  553. dsf_makeValue( ds_hidden_getvcode_rslt, "vcode", "string", "");
  554. // submit("TRPID20313"); // 상병코드로 특정기호 조회
  555. var oParam = {};
  556. oParam.id = "TRPID20313";
  557. oParam.service = "aftjudgapp.InAftJudg";
  558. oParam.method = "reqGetDiagcdVcode";
  559. oParam.inds = "req=ds_";
  560. oParam.outds = "ds_=cond ds_=rslt";
  561. oParam.async = false;
  562. oParam.callback = "cf_TRPID20313";
  563. tranf_submit(oParam);
  564. /*
  565. function cf_TRPID20313(sSvcId, nErrorCode, sErrorMsg) {
  566. if(nErrorCode < 0) return;
  567. }
  568. function cf_TRPID20313(sSvcId, nErrorCode, sErrorMsg) {
  569. arErrorCode.push(sSvcId, nErrorCode);
  570. }
  571. arErrorCode.pop("TRPID20313") > -1
  572. arErrorCode.pop("TRPID20313") < 0
  573. */
  574. vcode = ds_hidden_getvcode_rslt.getColumn(0, "vcode")
  575. /*
  576. //////////////////////////////////////////
  577. // 반환전에 특정내역 입력한다.
  578. //////////////////////////////////////////
  579. if ( vcode != "" ) {
  580. for (var i = 1; i < grd_clsphist.rows; i++) {
  581. spclcd = ds_main_list3_clsp.getColumn(i, "spclcd");
  582. spclspec = ds_main_list3_clsp.getColumn(i, "spclspec");
  583. gridrowstatus = grd_clsphist.rowstatus(i);
  584. if ( vcode == spclspec && spclcd == 'MT002' && gridrowstatus != 4 ) {
  585. existsyn = "Y";
  586. }
  587. }
  588. if ( existsyn != "Y" ) {
  589. var ans = sysf_messageBox( vcode + " 상병입니다.\n\n"
  590. + "MT002 특정내역을 \n\n"
  591. + "입력"
  592. , "S001");
  593. if ( ans == 6 ) { // yes
  594. var clsprow = grd_clsphist.rows - 1; // 특정내역 Grid 가장 마지막 줄에 추가한다.
  595. grd_clsphist.insertRow(clsprow++, true);
  596. ds_main_list3.setColumn( clsprow , "unitflag", "M");
  597. ds_main_list3.setColumn( clsprow , "edilnno", 0);
  598. ds_main_list3.setColumn( clsprow , "snglcalcscorcd", "-");
  599. ds_main_list3.setColumn( clsprow , "spclcd", "MT002");
  600. ds_main_list3.setColumn( clsprow , "cdnm", "특정기호");
  601. ds_main_list3.setColumn( clsprow , "spclspec", vcode);
  602. ds_main_list3.setColumn( clsprow , "spclformat", "X(4)");
  603. ds_main_list3.setColumn( clsprow , "detldesc", "");
  604. ds_main_list3.setColumn( clsprow , "oldedilnno", "");
  605. ds_main_list3.setColumn( clsprow , "clodseqno", "");
  606. // 특정내역 줄번호_특정코드에 따라 sorting 작업
  607. fSortSpclNo();
  608. //grd_clsphist.refresh();
  609. }
  610. }
  611. }
  612. //////////////////////////////////////////
  613. */
  614. return vcode;
  615. }
  616. ///////////////////////////////////////////////////////////////////////////
  617. // 팝업 화면 호출
  618. function fLinkPopMenu(trgtWindow, cond, send) {
  619. var trgtManWindow = getChildWindow(trgtWindow);
  620. if (trgtManWindow == null) {
  621. var childCnt = window.children.length;
  622. if (childCnt < 4) {
  623. frmf_open("trgtWindow", "trgtWindow", "cond"-"send", "", "2", "10", "10", "", "", "", "", "", "M");
  624. } else {
  625. sysf_messageBox("최대 4개의 팝업 화면을 표시할 수 있으니 현재 열려있는 화면을", "I007"); ///최대 4개의 팝업 화면을 표시할 수 있으니 현재 열려있는 화면을 확인하십시오.
  626. }
  627. } else {
  628. activateChild(trgtWindow);
  629. }
  630. }
  631. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  632. function fSearchSPPIZ00400() {
  633. ds_hidden_sppiz00400_rslt.clearData();
  634. dsf_makeValue( ds_hidden_sppiz00400_rslt, "diagcd", "string", "" );
  635. dsf_makeValue( ds_hidden_sppiz00400_rslt, "diaghngnm", "string", "" );
  636. dsf_makeValue( ds_hidden_sppiz00400_rslt, "diagengnm", "string", "" );
  637. dsf_makeValue( ds_hidden_sppiz00400, "cond", "string", "" );
  638. ds_hidden_sppiz00400_cond.clearData(); ds_hidden_sppiz00400_cond.addRow();
  639. dsf_makeValue( ds_hidden_sppiz00400_cond, "basedd", "string", utlf_getCurrentDate()); // (dateHelper.js) 현재날짜 반환
  640. dsf_makeValue( ds_hidden_sppiz00400_cond, "diagcd", "string", model.getValue(grd_cldihist.nodeset + "["+ grd_cldihist.row +"]_diagcd"));
  641. dsf_makeValue( ds_hidden_sppiz00400_cond, "diagnm", "string", "");
  642. dsf_makeValue( ds_hidden_sppiz00400_cond, "selectedrdodiagkind", "string", "3"); // 사용자가 직접검색하여 입력 할수 있도록 임의의 값(3)을 넣어줌
  643. frmf_modal("SPPIZ00400", "SPPIZ00400", "ds_hidden_sppiz00400_cond""-"ds_init"", "", "1", "10", "10", "", "", "", "", "", "M"); // SPPIZ00400_상병코드조회.xrw
  644. }
  645. // [SPPIZ00400_상병코드조회.xrw 에서 호출] 상병코드조회 팝업에서 선택한 상병을 상병 그리드에 반영
  646. function fSetDiagCdNm() {
  647. var row = grd_cldihist.row;
  648. if (row > 0) {
  649. var diagcd = ds_hidden_sppiz00400_rslt.getColumn(0, "diagcd");
  650. var diaghngnm = ds_hidden_sppiz00400_rslt.getColumn(0, "diaghngnm");
  651. var diagengnm = ds_hidden_sppiz00400_rslt.getColumn(0, "diagengnm");
  652. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagcd", diagcd);
  653. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagnm", diaghngnm);
  654. model.setValue(grd_cldihist.nodeset + "["+ row +"]_diagengnm", diagengnm);
  655. model.setValue(grd_cldihist.nodeset + "["+ row +"]_clamdeptcd", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_clamdeptcd"));
  656. model.setValue(grd_cldihist.nodeset + "["+ row +"]_ordfromdd", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_ordfromdd"));
  657. // 해당 상병의 한글상병명과 영문상병명이 Message 용 output 컨트롤에 표시된다.
  658. // ds_hidden_list3.setColumn( 0, "msgspclformat", "상병코드 - "+ diagcd +" / "+ diaghngnm +" / "+ diagengnm);
  659. // 20100308 특정내역 조회 추가
  660. model.setValue(grd_cldihist.nodeset + "["+ row +"]_vcode", fGetDiagVcode(diagcd));
  661. // 20100329 MT002 입력체크
  662. if ( model.getValue(grd_cldihist.nodeset + "["+ row +"]_diagseq") == "1"
  663. && model.getValue(grd_cldihist.nodeset + "["+ row +"]_vcode") != ""
  664. ) {
  665. fSetDiagMT002(model.getValue(grd_cldihist.nodeset + "["+ row +"]_vcode"));
  666. }
  667. //20090918 정승우 행추가
  668. var addval1 = model.getValue(grd_cldihist.nodeset + "["+ row +"]_rowstat");
  669. var addval2 = grd_cldihist.rowstatus(row);
  670. var rowstatus = grd_cldihist.rowstatus(row);
  671. if (rowstatus != 1 && rowstatus != 3) { // 1 : insert, 3 : insert & new
  672. grd_cldihist.rowstatus(row) = 2; // 2 : update
  673. }
  674. // 4. 빈 row에 대한 입력은 행 추가를 발생시킨다. (그외에는 행추가가 일어나지 않는다.)
  675. //20090918 정승우 행추가
  676. if (addval1 == "" && (addval2 == 1 || addval2 == 3)) fDiagGridInsertRow("Y", "N");
  677. }
  678. }
  679. ///////////////////////////////////////////////////////////////////////////
  680. // 상병 및 처방 치식 입력
  681. function fDiagOrderToothInput(flag) {
  682. if (flag == "Diag") {
  683. var row = grd_cldihist.row;
  684. var diagcd = model.getValue(grd_cldihist.nodeset + "["+ row +"]_diagcd");
  685. if (diagcd) {
  686. dsf_makeValue( ds_hidden_sppiz00600_cond, "clamym", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_clamym"));
  687. dsf_makeValue( ds_hidden_sppiz00600_cond, "clamdg", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_clamdg"));
  688. dsf_makeValue( ds_hidden_sppiz00600_cond, "pid", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_pid"));
  689. dsf_makeValue( ds_hidden_sppiz00600_cond, "pidsn", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_pidsn"));
  690. dsf_makeValue( ds_hidden_sppiz00600_cond, "indd", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_indd"));
  691. dsf_makeValue( ds_hidden_sppiz00600_cond, "cretno", "string", model.getValue(grd_diaghistlist.nodeset + "[" + grd_diaghistlist.row + "]_cretno"));
  692. dsf_makeValue( ds_hidden_sppiz00600_cond, "toot", "string", model.getValue(grd_cldihist.nodeset + "[" + row + "]_toot"));
  693. fSetToothPop(row, "1");
  694. ds_hidden_sppiz00600_rslt.clearData(); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  695. frmf_modal("SPPIZ00600", "SPPIZ00600", "ds_hidden_sppiz00600_cond""-"ds_hidden_cond"", "", "1", "10", "10", "", "", "", "", "", "M"); // SPPIZ00600_상병및처방별치식.xrw
  696. fGetToothPop();
  697. }
  698. }
  699. else if (flag == "Order") {
  700. var row = grd_clodhist.row;
  701. var edilnno = ds_main_list2_clod.getColumn(row, "edilnno"));
  702. if (edilnno) {
  703. ds_hidden_sppiz00600_cond.setColumn( 0, "clamym", ds_main_item1_clbs.getColumn(0, "clamym"));
  704. ds_hidden_sppiz00600_cond.setColumn( 0, "clamdg", ds_main_item1_clbs.getColumn(0, "clamdg"));
  705. ds_hidden_sppiz00600_cond.setColumn( 0, "pid", ds_main_item1_clbs.getColumn(0, "pid"));
  706. ds_hidden_sppiz00600_cond.setColumn( 0, "pidsn", ds_main_item1_clbs.getColumn(0, "pidsn"));
  707. ds_hidden_sppiz00600_cond.setColumn( 0, "indd", ds_main_item1_clbs.getColumn(0, "indd"));
  708. ds_hidden_sppiz00600_cond.setColumn( 0, "cretno", ds_main_item1_clbs.getColumn(0, "cretno"));
  709. ds_hidden_sppiz00600_cond.setColumn( 0, "toot", ds_main_list2_clod.getColumn(row, "toot")));
  710. fSetToothPop(row, "2");
  711. ds_hidden_sppiz00600_rslt.clearData(); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  712. frmf_modal("SPPIZ00600", "SPPIZ00600", "ds_hidden_sppiz00600_cond""-"ds_hidden_cond"", "", "1", "10", "10", "", "", "", "", "", "M"); // SPPIZ00600_상병및처방별치식.xrw
  713. fGetToothPop();
  714. }
  715. }
  716. }
  717. //대상자에서 치식자동팝업체크시 타는 로직
  718. function fDiagOrderToothInputDiret(flag) {
  719. var trgtManWindow = getChildWindow("SPPIZ00600ML"); // SPPIZ00600_상병및처방별치식.xrw
  720. var row = "1";
  721. if (flag == "Diag") {
  722. //var diagcd = ds_main_list1_cldi.getColumn(row, "diagcd"));
  723. //if (diagcd) {
  724. ds_hidden_sppiz00600_cond.setColumn( 0, "clamym", ds_main_item1_clbs.getColumn(0, "clamym"));
  725. ds_hidden_sppiz00600_cond.setColumn( 0, "clamdg", ds_main_item1_clbs.getColumn(0, "clamdg"));
  726. ds_hidden_sppiz00600_cond.setColumn( 0, "pid", ds_main_item1_clbs.getColumn(0, "pid"));
  727. ds_hidden_sppiz00600_cond.setColumn( 0, "pidsn", ds_main_item1_clbs.getColumn(0, "pidsn"));
  728. ds_hidden_sppiz00600_cond.setColumn( 0, "indd", ds_main_item1_clbs.getColumn(0, "indd"));
  729. ds_hidden_sppiz00600_cond.setColumn( 0, "cretno", ds_main_item1_clbs.getColumn(0, "cretno"));
  730. ds_hidden_sppiz00600_cond.setColumn( 0, "toot", ds_main_list1_cldi.getColumn(row, "toot")));
  731. ds_hidden_sppiz00600_cond.setColumn( 0, "popyn", "SMPID20500");
  732. fSetToothPop(row, "1");
  733. ds_hidden_sppiz00600_rslt.clearData(); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  734. if ( trgtManWindow == null ) {
  735. //frmf_open("SPPIZ00600", "SPPIZ00600", "ds_hidden_sppiz00600_cond""-"ds_hidden_cond"", "", "1", "10", "10", "", "", "", "", "", "M"); // SPPIZ00600_상병및처방별치식.xrw
  736. //frmf_open("SPPIZ00600", "SPPIZ00600", "ds_hidden_sppiz00600_cond""-"ds_hidden_cond"", "", "2", "10", "10", "", "", "", "", "", "M"); // SPPIZ00600_상병및처방별치식.xrw
  737. frmf_open("SPPIZ00600", "SPPIZ00600ML", "ds_hidden_sppiz00600_cond""-"ds_hidden_cond"", "", "2", "10", "10", "", "", "", "", "", "M"); // SPPIZ00600_상병및처방별치식.xrw
  738. } else {
  739. trgtManWindow.model.copyNode("ds_hidden_cond",root.hidden.sppiz00600.cond);
  740. activateChild("SPPIZ00600ML");
  741. trgtManWindow.javascript.fInitialize();
  742. }
  743. //fGetToothPop(); // 모달리스 타입이라..여기선 의미없음
  744. //}
  745. }
  746. }
  747. // 현재 상병, 처방 Grid 상에서 입력상태의 치식을 팝업 화면에 전달하기 위해 리스트 형태로 만든다.
  748. function fSetToothPop(row, flag) {
  749. ds_hidden_sppiz00600_cond_list.clearData();
  750. dsf_makeValue( ds_hidden_sppiz00600_cond, "list", "string", "" );
  751. // ds_hidden_sppiz00600_cond_list.clearData(); ds_hidden_sppiz00600_cond_list.addRow();
  752. // 상병
  753. var cntcldi = getNodesetCount(grd_cldihist.nodeset);
  754. // 처방
  755. // var cntclod = ds_main_list2_clod.rowcount;
  756. // grd_clodhist.rows는 타이틀을 포함하지만 getNodesetCount는 타이틀을 제외한 data 갯수를 반환
  757. var cd = "";
  758. var cdnm = "";
  759. var orddd = "";
  760. var toot = "";
  761. var rowcnt = 1;
  762. // for (i=1; i<cntcldi; i++) {
  763. for (var i = 1; i <= cntcldi; i++) {
  764. cd = model.getValue(grd_cldihist.nodeset + "["+ i + "]_diagcd");
  765. cdnm = model.getValue(grd_cldihist.nodeset + "["+ i + "]_diagnm");
  766. orddd = model.getValue(grd_cldihist.nodeset + "["+ i + "]_ordfromdd");
  767. toot = model.getValue(grd_cldihist.nodeset + "["+ i + "]_toot");
  768. if (toot != "-" && toot != "" && toot != " ") {
  769. var milktoothstr = "ABCDE000";
  770. var subTootStr = "";
  771. for (var inx = 0; inx < 32; inx++) {
  772. var tootnum = toot.substr(inx,1);
  773. if (tootnum == "*") { // 선택된 영구치의 경우 1~8 사이 숫자로 표시한다.
  774. if (inx < 8) {
  775. subTootStr += (8 - inx);
  776. }
  777. else if (inx > 7 && inx < 16) {
  778. subTootStr += (inx - 7);
  779. }
  780. else if (inx > 15 && inx < 24) {
  781. subTootStr += (24 - inx);
  782. } else {
  783. subTootStr += (inx - 23);
  784. }
  785. } else if (tootnum == "#") { // 선택된 유치의 경우 A~E 사이 알파벳으로 표시한다.
  786. if (inx < 8) {
  787. subTootStr += milktoothstr.charAt(7 - inx);
  788. }
  789. else if (inx > 7 && inx < 16) {
  790. subTootStr += milktoothstr.charAt(inx - 8);
  791. }
  792. else if (inx > 15 && inx < 24) {
  793. subTootStr += milktoothstr.charAt(23 - inx);
  794. } else {
  795. subTootStr += milktoothstr.charAt(inx - 24);
  796. }
  797. } else { // if (tootnum == "0") 선택되지 않은 경우 공백으로 처리한다.
  798. subTootStr += " ";
  799. }
  800. }
  801. model.makeNode("ds_hidden_sppiz00600_cond_list_toothapplist[" + rowcnt + "]_chos");
  802. //치식 표기를 설정한다.
  803. if (row == i && flag == "1") {
  804. ds_hidden_sppiz00600_cond_list.setColumn( rowcnt , "chos", "true");
  805. } else {
  806. ds_hidden_sppiz00600_cond_list.setColumn( rowcnt , "chos", "false");
  807. }
  808. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "flag", "상병");
  809. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "cd", cd);
  810. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "cdnm", cdnm);
  811. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "rightupper", subTootStr.substr(0, 8));
  812. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "leftupper", subTootStr.substr(8, 8));
  813. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "rightlower", subTootStr.substr(16, 8));
  814. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "leftlower", subTootStr.substr(24, 8));
  815. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "orddd", orddd);
  816. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "toot", toot);
  817. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "row", i);
  818. rowcnt = rowcnt+1;
  819. } else {
  820. if (row == i && flag == "1") {
  821. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "chos", "true");
  822. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "flag", "상병");
  823. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "cd", cd);
  824. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "cdnm", cdnm);
  825. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "rightupper", "");
  826. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "leftupper", "");
  827. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "rightlower", "");
  828. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "leftlower", "");
  829. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "orddd", orddd);
  830. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "toot", "");
  831. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "row", i);
  832. rowcnt = rowcnt+1;
  833. }
  834. }
  835. }
  836. /*
  837. for (var i = 1; i <= cntclod; i++) {
  838. cd = ds_main_list2_clod.getColumn(i, "snglcalcscorcd");
  839. cdnm = ds_main_list2_clod.getColumn(i, "hngnm");
  840. orddd = ds_main_list2_clod.getColumn(i, "orddd");
  841. toot = ds_main_list2_clod.getColumn(i, "toot");
  842. estmcls = ds_main_list2_clod.getColumn(i, "estmcls");
  843. if ((toot != "-" && toot != "") || estmcls == "U"){
  844. var milktoothstr = "ABCDE000";
  845. var subTootStr = "";
  846. var tmpStr = "";
  847. for (var inx = 0; inx < 32; inx++) {
  848. var tootnum = toot.substr(inx,1);
  849. if (tootnum == "*") { // 선택된 영구치의 경우 1~8 사이 숫자로 표시한다.
  850. if (inx < 8) {
  851. subTootStr += (8 - inx);
  852. }
  853. else if (inx > 7 && inx < 16) {
  854. subTootStr += (inx - 7);
  855. }
  856. else if (inx > 15 && inx < 24) {
  857. subTootStr += (24 - inx);
  858. } else {
  859. subTootStr += (inx - 23);
  860. }
  861. } else if (tootnum == "#") { // 선택된 유치의 경우 A~E 사이 알파벳으로 표시한다.
  862. if (inx < 8) {
  863. subTootStr += milktoothstr.charAt(7 - inx);
  864. }
  865. else if (inx > 7 && inx < 16) {
  866. subTootStr += milktoothstr.charAt(inx - 8);
  867. }
  868. else if (inx > 15 && inx < 24) {
  869. subTootStr += milktoothstr.charAt(23 - inx);
  870. } else {
  871. subTootStr += milktoothstr.charAt(inx - 24);
  872. }
  873. } else { // if (tootnum == "0") 선택되지 않은 경우 공백으로 처리한다.
  874. subTootStr += " ";
  875. }
  876. }
  877. model.makeNode("ds_hidden_sppiz00600_cond_list_toothapplist[" + rowcnt + "]_chos");
  878. //치식 표기를 설정한다.
  879. if (row == i && flag == "2") {
  880. ds_hidden_sppiz00600_cond_list.setColumn( rowcnt , "chos", "true");
  881. } else {
  882. ds_hidden_sppiz00600_cond_list.setColumn( rowcnt , "chos", "false");
  883. }
  884. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "flag", "처방");
  885. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "cd", cd);
  886. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "cdnm", cdnm);
  887. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "rightupper", subTootStr.substr(0, 8));
  888. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "leftupper", subTootStr.substr(8, 8));
  889. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "rightlower", subTootStr.substr(16, 8));
  890. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "leftlower", subTootStr.substr(24, 8));
  891. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "orddd", orddd);
  892. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "toot", toot);
  893. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "row", i);
  894. rowcnt = rowcnt+1;
  895. } else {
  896. if (row == i && flag == "2") {
  897. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "chos", "true");
  898. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "flag", "처방");
  899. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "cd", cd);
  900. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "cdnm", cdnm);
  901. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "rightupper", "");
  902. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "leftupper", "");
  903. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "rightlower", "");
  904. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "leftlower", "");
  905. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "orddd", orddd);
  906. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "toot", "");
  907. ds_hidden_sppiz00600_cond_list_toothapplist.setColumn( rowcnt, "row", i);
  908. rowcnt = rowcnt+1;
  909. }
  910. }
  911. }
  912. */
  913. }
  914. // SPPIZ00600_상병및처방별치식 선택 결과를 반영한다.
  915. function fGetToothPop() {
  916. var tootSelectcnt = ds_hidden_sppiz00600_rslt_list.rowcount;
  917. var flag = "";
  918. var row = "";
  919. var toot = "";
  920. tootSelectcnt = eval(tootSelectcnt) + 1;
  921. for (var i = 1; i < tootSelectcnt; i++) {
  922. flag = ds_hidden_sppiz00600_rslt_list.getColumn(i, "flag");
  923. row = ds_hidden_sppiz00600_rslt_list.getColumn(i, "row");
  924. var rlsttoot = ds_hidden_sppiz00600_rslt_list.getColumn(i, "toot");
  925. var rlsttoot1 = ds_hidden_sppiz00600_rslt_list.getColumn(i, "toot1");
  926. if (rlsttoot == "") {
  927. rlsttoot = "-";
  928. }
  929. if (rlsttoot1 == "") {
  930. rlsttoot1 = "-";
  931. }
  932. if (flag == "1") {
  933. toot = model.getValue(grd_cldihist.nodeset + "["+ row +"]_toot");
  934. model.setValue(grd_cldihist.nodeset + "["+ row +"]_toot", rlsttoot);
  935. model.setValue(grd_cldihist.nodeset + "["+ row +"]_toot1", rlsttoot1);
  936. if (rlsttoot != toot) { // 치식번호가 변경된 경우
  937. var cldistatus = grd_cldihist.rowstatus(row);
  938. if (cldistatus == 0 || cldistatus == 2) { // 0 : new, 2 : update
  939. grd_cldihist.rowstatus(row) = 2; // 2 : update
  940. }
  941. }
  942. } else if (flag == "2") {
  943. toot = model.getValue(grd_cldihist.nodeset + "["+ row +"]_toot");
  944. model.setValue(grd_cldihist.nodeset + "["+ row +"]_toot", rlsttoot);
  945. model.setValue(grd_cldihist.nodeset + "["+ row +"]_toot1", rlsttoot1);
  946. if (rlsttoot != toot) { // 치식번호가 변경된 경우
  947. // 처방의 수정된 row 상태를 표시한다.
  948. }
  949. }
  950. }
  951. }
  952. ]]></Script>