SPPID21500_외래미시행처방상병관리.xrw 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <script type="javascript">
  5. <![CDATA[
  6. // 초기화
  7. function fInitialize()
  8. {
  9. model.removeNodeset("/root/main/diaghist/list01");
  10. model.makeNode("/root/main/diaghist/list01");
  11. model.removeNodeset("/root/main/diaghist/list02");
  12. model.makeNode("/root/main/diaghist/list02");
  13. submit("TRPIJ00305");
  14. }
  15. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 추가"
  16. function fDiagGridInsertRow(flag) {
  17. if (grd_diaglist.rowstatus(1) == 4) {
  18. var diagrow = 1;
  19. grd_diaglist.insertRow(diagrow++, true); // 첫번째 줄 그 다음 줄에 새로운 줄을 추가하게 된다.
  20. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/diagseq", diagrow - 1); // 추가된 row는 [2]번째 줄이 되며, 순번을 1을 부여한다.
  21. fSortDiagNo();
  22. } else {
  23. // 삭제 상태가 아닌 마지막 줄을 찾는다.
  24. var lastRow = grd_diaglist.rows - 1;
  25. for (var i = 1; i < grd_diaglist.rows; i++) {
  26. if (grd_diaglist.rowstatus(i) == 4) { // delete
  27. lastRow = i - 1;
  28. i = grd_diaglist.rows;
  29. }
  30. }
  31. var diagrow = lastRow; // 상병 Grid 가장 마지막 줄에 추가한다.
  32. grd_diaglist.insertRow(diagrow++, true);
  33. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/diagseq", diagrow);
  34. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/pid", model.getValue("/root/send/pid"));
  35. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/orddd", model.getValue("/root/send/orddd"));
  36. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/orddeptcd", model.getValue("/root/send/deptcd"));
  37. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/diagorddeptcd", model.getValue("/root/send/deptcd"));
  38. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/insukind", model.getValue("/root/send/insukind"));
  39. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/ruleoutyn", "false");
  40. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/toothyn", "N");
  41. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/toot", "-");
  42. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/toot1", "");
  43. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/addflag", "Y");
  44. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/drinptyn", "N");
  45. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/cretno", model.getValue("/root/send/cretno"));
  46. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/ordfromdd", model.getValue("/root/send/orddd"));
  47. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + diagrow + "]/rowstat", "I");
  48. if (flag == true) {
  49. fSortDiagNo();
  50. }
  51. }
  52. }
  53. // 상병 Grid 마우스 오른쪽 버튼 클릭시 팝업 메뉴 "행 삭제"
  54. function fDiagGridDeleteRow() {
  55. var rowstatus = grd_diaglist.rowstatus(grd_diaglist.row);
  56. if (rowstatus == 4) { // 4 : delete
  57. return;
  58. }
  59. else if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  60. var diagnm = model.getValue("/root/main/diaghist/list02/mmohdiag2[" + grd_diaglist.row + "]/diagnm");
  61. if (diagnm != "") grd_diaglist.deleteRow(grd_diaglist.row, true); // 해당 라인을 Grid에서 삭제한다.
  62. } else { // 0 : new, 2 : update
  63. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + grd_diaglist.row + "]/diagseq", "D"+ grd_diaglist.row);
  64. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + grd_diaglist.row + "]/rowstat", "D");
  65. grd_diaglist.rowstatus(grd_diaglist.row) = 4; // 4 : delete 상태로 stat를 변경한다.
  66. //grd_diaglist.deleteRow(grd_diaglist.row, true);
  67. // 1. 상병순서로 정렬한다.
  68. fSortDiagNo();
  69. // 2. 상병순서를 새로 부여한다.
  70. var seq = 1;
  71. for (var j = 1; j < grd_diaglist.rows; j++) {
  72. var diagseq = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagseq");
  73. if (diagseq > "D0") {
  74. } else {
  75. if (diagseq != seq) {
  76. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + j + "]/diagseq", seq);
  77. grd_diaglist.valueMatrix(j, grd_diaglist.colRef("diagseq")) = seq;
  78. grd_diaglist.rowstatus(j) = 2;
  79. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/rowstat", "U");
  80. }
  81. seq++;
  82. }
  83. }
  84. // 3. 빈줄을 추가한다.
  85. fDiagGridInsertRow();
  86. }
  87. }
  88. // 상병코드 조회 팝업
  89. function fSearchDiageCode() {
  90. model.resetInstanceNode("/root/hidden/sppiz00400/rslt");
  91. var row = grd_diaglist.row;
  92. var rows = grd_diaglist.rows;
  93. var diagcd = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row + "]/diagcd");
  94. model.makeValue("/root/hidden/sppiz00400/cond/basedd", getCurrentDate());
  95. model.makeValue("/root/hidden/sppiz00400/cond/diagcd", diagcd);
  96. model.makeValue("/root/hidden/sppiz00400/cond/diagnm","");
  97. model.makeValue("/root/hidden/sppiz00400/cond/selectedrdodiagkind","1");
  98. // 2008. 01. 15 박지욱 수정 (상병코드가 정확히 입력된 경우 팝업없이 보여주도록 처리)
  99. if (diagcd) {
  100. submit("TRPIJ00308"); // 입력된 상병코드로 emr.mrtmicd10 테이블을 조회한다.
  101. var rsltList = instance1.selectSingleNode("/root/hidden/sppiz00400");
  102. if (rsltList != null && rsltList.childNodes.length == 1) {
  103. // 조회된 결과가 1건이면
  104. fSetDiagCdNm();
  105. } else {
  106. // 조회된 결과가 없거나 여러 건이면
  107. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  108. fSearchSPPIZ00400();
  109. }
  110. } else {
  111. // 상병코드 입력 없이 상병명 선택 시
  112. fSearchSPPIZ00400();
  113. }
  114. var addrow = row + 1;
  115. if (addrow == rows ) {
  116. var diagcd = model.getValue("/root/hidden/sppiz00400/rslt/diagcd");
  117. if (diagcd != "") {
  118. fDiagGridInsertRow(false);
  119. }
  120. }
  121. }
  122. // 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  123. function fSearchSPPIZ00400() {
  124. model.removeNodeset("/root/hidden/sppiz00400/rslt");
  125. model.makeNode("/root/hidden/sppiz00400/rslt/diagcd");
  126. model.makeNode("/root/hidden/sppiz00400/rslt/diaghngnm");
  127. model.makeNode("/root/hidden/sppiz00400/rslt/diagengnm");
  128. var row = grd_diaglist.row;
  129. var diagcd = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row + "]/diagcd");
  130. model.resetInstanceNode("/root/hidden/sppiz00400/cond");
  131. model.makeValue("/root/hidden/sppiz00400/cond/basedd", getCurrentDate()); // (dateHelper.js) 현재날짜 반환
  132. model.makeValue("/root/hidden/sppiz00400/cond/diagcd", diagcd);
  133. model.makeNode("/root/hidden/sppiz00400/cond/diagnm");
  134. model.makeValue("/root/hidden/sppiz00400/cond/selectedrdodiagkind","3"); // 사용자가 직접검색하여 입력 할수 있도록 임의의 값(3)을 넣어줌
  135. modal("SPPIZ00400" ,"", "10", "10", "SPPIZ00400", "/root/hidden/sppiz00400/cond", "/root/init", "", ""); // SPPIZ00400_상병코드조회.xrw
  136. }
  137. // [SPPIZ00400_상병코드조회.xrw 에서 호출] 상병조회 팝업에서 상병을 더블클릭 했을경우 상병 그리드에 반영
  138. function fSetDiagCdNm() {
  139. var diagcd = model.getValue("/root/hidden/sppiz00400/rslt/diagcd");
  140. var diaghngnm = model.getValue("/root/hidden/sppiz00400/rslt/diaghngnm");
  141. var diagengnm = model.getValue("/root/hidden/sppiz00400/rslt/diagengnm");
  142. if (diagcd) {
  143. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/diagcd", diagcd);
  144. }
  145. if (diaghngnm) {
  146. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/diagnm", diaghngnm);
  147. }
  148. var chk_key = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/pid");
  149. //신규로 불러온 입력되는 경우는 Insert시 key값이 없으므로 기본 정보에서 읽어다 넣어 준다.
  150. if(chk_key){
  151. model.refresh();
  152. return;
  153. }else{
  154. //Pid
  155. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/pid",model.getValue("/root/send/pid"));
  156. //Indd
  157. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/indd",model.getValue("/root/send/indd"));
  158. //Cretno
  159. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/cretno",model.getValue("/root/send/cretno"));
  160. //fromdd
  161. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/fromdd",model.getValue("/root/send/fromdd"));
  162. //mskind
  163. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/mskind",model.getValue("/root/send/mskind"));
  164. //drinptyn
  165. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/drinptyn","N");
  166. //addflag
  167. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/addflag","Y");
  168. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/insukind",model.getValue("/root/send/insukind"));
  169. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/diagorddeptcd",model.getValue("/root/send/deptcd"));
  170. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row + "]/orddeptcd",model.getValue("/root/send/deptcd"));
  171. }
  172. model.refresh();
  173. }
  174. // 상병순서 소트
  175. function fSortDiagNo() {
  176. if (grd_diaglist.rows > 1) {
  177. // 1. 상병코드, 상병명 없는 빈줄 삭제
  178. for (var j = grd_diaglist.rows - 1; j >= 1; j--) {
  179. var rowstatus = grd_diaglist.rowstatus(j);
  180. var diagcd = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagcd");
  181. var diagnm = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagnm");
  182. if (rowstatus != 4 && diagcd == "" && diagnm == "") {
  183. grd_diaglist.deleteRow(j, false);
  184. }
  185. }
  186. // 2. 상병순서(diagseq)로 정렬
  187. var maxRow = parseInt(grd_diaglist.rows) - 1;
  188. grd_diaglist.sort(1, grd_diaglist.colRef("diagseq"), maxRow, grd_diaglist.colRef("diagseq")) = "asc";
  189. grd_diaglist.gridToInstance();
  190. }
  191. /*
  192. var SelectedRowNo = model.getValue("/root/main/diaghist/list02/mmohdiag2[" + grd_diaglist.row + "]/diagseq");
  193. var SelectedRow = parseInt(grd_diaglist.row);
  194. var TotalRow = parseInt(grd_diaglist.rows)-2;
  195. var tempRow = 999;
  196. for(i =1; i<grd_diaglist.rows;i++){
  197. var NextRowNo = parseInt(model.getValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq"));
  198. if(SelectedRow == i){
  199. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq", SelectedRowNo);
  200. } else {
  201. if ( SelectedRowNo == TotalRow ) {
  202. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq", NextRowNo-1);
  203. } else if ( NextRowNo == SelectedRowNo) {
  204. if (SelectedRowNo > SelectedRow ) {
  205. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq", NextRowNo-1);
  206. } else {
  207. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq", NextRowNo+1);
  208. }
  209. } else if ( NextRowNo <= SelectedRowNo) {
  210. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq", NextRowNo);
  211. } else {
  212. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq", tempRow);
  213. }
  214. }
  215. }
  216. var maxRow = parseInt(grd_diaglist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  217. grd_diaglist.sort(1, 1, maxRow, 1) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1
  218. model.refresh();
  219. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  220. grd_diaglist.gridToInstance();
  221. for(i =1; i<grd_diaglist.rows;i++){
  222. var NextRowNo = parseInt(model.getValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq"));
  223. if(SelectedRowNo != i){
  224. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq", i);
  225. } else {
  226. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + i + "]/diagseq", SelectedRowNo);
  227. }
  228. rowstatus = grd_diaglist.rowstatus(i);
  229. if (rowstatus == 0 || rowstatus == 2) {
  230. grd_diaglist.rowstatus(i) = 2; // 2 : update
  231. }
  232. }
  233. var maxRow = parseInt(grd_diaglist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  234. grd_diaglist.sort(1, 1, maxRow, 1) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1
  235. model.refresh();
  236. // Sort 된 Grid 상의 Data 순서와 Instance Node 상의 Data 순서를 동일하게 맞춰준다.
  237. grd_diaglist.gridToInstance();
  238. */
  239. }
  240. // 현재 상병 Grid 상에서 입력상태의 치식을 팝업 화면에 전달하기 위해 리스트 형태로 만든다.
  241. function fSetToothPop(row, flag) {
  242. model.removeNodeset("/root/hidden/sppiz00600/cond/list");
  243. model.makeNode("/root/hidden/sppiz00600/cond/list");
  244. // 상병
  245. var cntcldi = getNodesetCount("/root/main/diaghist/list02/mmohdiag2");
  246. var cd = "";
  247. var cdnm = "";
  248. var orddd = "";
  249. var toot = "";
  250. var rowcnt = 1;
  251. for (i=1; i<cntcldi; i++) {
  252. cd = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ i + "]/diagcd");
  253. cdnm = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ i + "]/diagnm");
  254. orddd = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ i + "]/ordfromdd");
  255. toot = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ i + "]/toot");
  256. if (toot != "-" && toot != "") {
  257. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  258. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag");
  259. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd");
  260. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm");
  261. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper");
  262. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper");
  263. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower");
  264. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower");
  265. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd");
  266. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot");
  267. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row");
  268. var milktoothstr = "ABCDE000";
  269. var subTootStr = "";
  270. for (var inx = 0; inx < 32; inx++) {
  271. var tootnum = toot.substr(inx,1);
  272. if (tootnum == "*") { // 선택된 영구치의 경우 1~8 사이 숫자로 표시한다.
  273. if (inx < 8) {
  274. subTootStr += (8 - inx);
  275. }
  276. else if (inx > 7 && inx < 16) {
  277. subTootStr += (inx - 7);
  278. }
  279. else if (inx > 15 && inx < 24) {
  280. subTootStr += (24 - inx);
  281. } else {
  282. subTootStr += (inx - 23);
  283. }
  284. } else if (tootnum == "#") { // 선택된 유치의 경우 A~E 사이 알파벳으로 표시한다.
  285. if (inx < 8) {
  286. subTootStr += milktoothstr.charAt(7 - inx);
  287. }
  288. else if (inx > 7 && inx < 16) {
  289. subTootStr += milktoothstr.charAt(inx - 8);
  290. }
  291. else if (inx > 15 && inx < 24) {
  292. subTootStr += milktoothstr.charAt(23 - inx);
  293. } else {
  294. subTootStr += milktoothstr.charAt(inx - 24);
  295. }
  296. } else { // if (tootnum == "0") 선택되지 않은 경우 공백으로 처리한다.
  297. subTootStr += " ";
  298. }
  299. }
  300. //치식 표기를 설정한다.
  301. if (row == i && flag == "1" ) {
  302. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  303. } else {
  304. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "false");
  305. }
  306. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "상병");
  307. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  308. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  309. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", subTootStr.substr(0, 8));
  310. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", subTootStr.substr(8, 8));
  311. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", subTootStr.substr(16, 8));
  312. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", subTootStr.substr(24, 8));
  313. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  314. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", toot);
  315. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  316. rowcnt = rowcnt+1;
  317. } else {
  318. if (row == i && flag == "1" ) {
  319. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  320. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag");
  321. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd");
  322. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm");
  323. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper");
  324. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper");
  325. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower");
  326. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower");
  327. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd");
  328. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot");
  329. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row");
  330. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  331. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "상병");
  332. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  333. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  334. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", "");
  335. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", "");
  336. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", "");
  337. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", "");
  338. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  339. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", "");
  340. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  341. rowcnt = rowcnt+1;
  342. }
  343. }
  344. }
  345. }
  346. // SPPIZ00600_상병및처방별치식 선택 결과를 반영한다.
  347. function fGetToothPop() {
  348. var tootSelectcnt = getNodesetCount("/root/hidden/sppiz00600/rslt/list");
  349. var flag = "";
  350. var row = "";
  351. var toot = "";
  352. tootSelectcnt = eval(tootSelectcnt) + 1;
  353. for (var i=1; i<tootSelectcnt; i++) {
  354. flag = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/flag");
  355. row = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/row");
  356. var rlsttoot = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/toot");
  357. var rlsttoot1 = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/toot1");
  358. if (rlsttoot == "") {
  359. rlsttoot = "-";
  360. }
  361. if (rlsttoot1 == "") {
  362. rlsttoot1 = "-";
  363. }
  364. if (flag == "1") {
  365. toot = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/toot");
  366. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/toot", rlsttoot);
  367. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/toot1", rlsttoot1);
  368. if (rlsttoot != toot) { // 치식번호가 변경된 경우
  369. var cldistatus = grd_diaglist.rowstatus(row);
  370. if (cldistatus == 0 || cldistatus == 2) { // 0 : new, 2 : update
  371. grd_diaglist.rowstatus(row) = 2; // 2 : update
  372. }
  373. }
  374. }
  375. }
  376. }
  377. /* 상병순서 부여 */
  378. function fChangeDiagNo() {
  379. var row = grd_diaglist.row;
  380. var newseq = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/diagseq");
  381. var oldseq = model.getValue("/root/hidden/list1/diag/oldseq");
  382. if (newseq) {
  383. // 1. seq번호를 매긴다.
  384. if (grd_diaglist.rowstatus(row) != 1 && grd_diaglist.rowstatus(row) != 3) {
  385. grd_diaglist.rowstatus(row) = 2;
  386. grd_diaglist.valueMatrix(row, grd_diaglist.colRef("rowstat")) = "U";
  387. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/rowstat", "U");
  388. }
  389. // 2. '09' 와 같은 형식으로 입력한 경우 -> 9로 처리
  390. newseq = parseInt(model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/diagseq"), 10);
  391. // 3. 삭제상태가 아닌 중복된 번호가 있는지 체크한다.
  392. var sameRow = 0;
  393. for (var i = 1; i < grd_diaglist.rows; i++) {
  394. var diagseq = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ i +"]/diagseq");
  395. if (row != i && diagseq == newseq) {
  396. sameRow = i;
  397. i = grd_diaglist.rows;
  398. }
  399. }
  400. // 3-1. seq번호 중복
  401. if (sameRow > 0) {
  402. // 이전보다 앞번호를 입력한 경우
  403. if (newseq < oldseq) {
  404. for (var j = sameRow; j < row; j++) {
  405. var rowstatus = grd_diaglist.rowstatus(j);
  406. if (rowstatus != 4) {
  407. var curseq = parseInt(model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagseq"), 10);
  408. if (rowstatus != 1 && rowstatus != 3) {
  409. if (model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagseq") != (curseq+1)) {
  410. grd_diaglist.rowstatus(j) = 2;
  411. grd_diaglist.valueMatrix(j, grd_diaglist.colRef("rowstat")) = "U";
  412. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/rowstat", "U");
  413. }
  414. }
  415. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagseq", curseq+1);
  416. }
  417. }
  418. }
  419. // 이전보다 뒷번호를 입력한 경우
  420. else {
  421. for (var j = row+1; j <= sameRow; j++) {
  422. var rowstatus = grd_diaglist.rowstatus(j);
  423. if (rowstatus != 4) {
  424. var curseq = parseInt(model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagseq"), 10);
  425. if (rowstatus != 1 && rowstatus != 3) {
  426. if (model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagseq") != (curseq-1)) {
  427. grd_diaglist.rowstatus(j) = 2;
  428. grd_diaglist.valueMatrix(j, grd_diaglist.colRef("rowstat")) = "U";
  429. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/rowstat", "U");
  430. }
  431. }
  432. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagseq", curseq-1);
  433. }
  434. }
  435. }
  436. // 정렬한다. (삭제된 row는 맨 밑으로)
  437. fSortDiagNo();
  438. // seq를 다시 매긴다.
  439. var seq = 1;
  440. for (var j = 1; j < grd_diaglist.rows; j++) {
  441. var diagseq = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagseq");
  442. if (diagseq > "D0") {
  443. } else {
  444. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + j + "]/diagseq", seq);
  445. grd_diaglist.valueMatrix(j, grd_diaglist.colRef("diagseq")) = seq;
  446. seq++;
  447. }
  448. }
  449. // 빈줄을 추가한다.
  450. fDiagGridInsertRow();
  451. // 3-2. seq번호 중복안됨
  452. } else {
  453. // 정렬한다. (삭제된 row는 맨 밑으로)
  454. fSortDiagNo();
  455. // seq를 다시 매긴다.
  456. var seq = 1;
  457. for (var j = 1; j < grd_diaglist.rows; j++) {
  458. var diagseq = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagseq");
  459. if (diagseq > "D0") {
  460. } else {
  461. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + j + "]/diagseq", seq);
  462. grd_diaglist.valueMatrix(j, grd_diaglist.colRef("diagseq")) = seq;
  463. seq++;
  464. }
  465. }
  466. // 빈줄을 추가한다.
  467. fDiagGridInsertRow();
  468. }
  469. } else {
  470. model.setValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/diagseq", oldseq);
  471. grd_diaglist.rowstatus(row) = model.getValue("/root/hidden/list1/diag/oldrowstat");
  472. }
  473. }
  474. ]]>
  475. </script>
  476. <xhtml:head>
  477. <xhtml:title>외래미시행오더상병관리</xhtml:title>
  478. <model id="model1">
  479. <instance id="instance1">
  480. <root xmlns="">
  481. <init/>
  482. <main>
  483. <diaghist>
  484. <list01>
  485. <mmohdiag1/>
  486. </list01>
  487. <list02>
  488. <mmohdiag2/>
  489. </list02>
  490. </diaghist>
  491. </main>
  492. <send>
  493. <pid/>
  494. <ordfromdd/>
  495. <ordtodd/>
  496. <srchflag/>
  497. <orddd/>
  498. <ioflag/>
  499. <deptcd/>
  500. <diaglist/>
  501. <row/>
  502. <insukind/>
  503. </send>
  504. <hidden>
  505. <item1>
  506. <oldpid/>
  507. <srchrslt/>
  508. <matractflag/>
  509. <payflag/>
  510. <itemflag/>
  511. <cpflag/>
  512. <actflag/>
  513. <ordfromdd/>
  514. <ordtodd/>
  515. <calcscorcd/>
  516. <edicode/>
  517. <judgdate/>
  518. <mskind/>
  519. <message/>
  520. <detlsrchflag/>
  521. <result/>
  522. </item1>
  523. <sppmc02500>
  524. <cond>
  525. <!-- SPPMC02500_환자조회 화면으로 검색조건을 보내는 경로임 -->
  526. <srchcond/>
  527. <pid/>
  528. <hngnm/>
  529. <rrgstno1/>
  530. <rrgstno2/>
  531. <autoflag/>
  532. </cond>
  533. </sppmc02500>
  534. <sppiz00400>
  535. <cond>
  536. <!-- 상병코드 Grid '상병코드' 컬럼 에서 SPPIZ00400_상병코드조회 에 전달하기 위한 조건 값 -->
  537. <basedd/>
  538. <diagcd/>
  539. <diagnm/>
  540. <selectedrdodiagkind/>
  541. </cond>
  542. <rslt>
  543. <rowstat/>
  544. <seqno/>
  545. <diagcd/>
  546. <diaghngnm/>
  547. <diagengnm/>
  548. <diagkindcd/>
  549. <clamdeptcd/>
  550. <ordfromdd/>
  551. <toot/>
  552. <estmspclcd/>
  553. <wundresncd/>
  554. </rslt>
  555. </sppiz00400>
  556. <sppiz00600>
  557. <cond>
  558. <!-- 상병 Grid '치식' 컬럼 에서 SPPIZ00600_상병및처방별치식 에 전달하기 위한 조건 값 -->
  559. <clamym/>
  560. <clamdg/>
  561. <pid/>
  562. <pidsn/>
  563. <toot/>
  564. <flag/>
  565. <list/>
  566. </cond>
  567. <rslt>
  568. <list/>
  569. </rslt>
  570. </sppiz00600>
  571. <popupmenu>
  572. <clcj>
  573. <!--<item>
  574. <name>행 추가</name>
  575. <func>fDiagGridInsertRow(true)</func>
  576. </item>-->
  577. <item>
  578. <name>-</name>
  579. <func/>
  580. </item>
  581. <item>
  582. <name>행 삭제</name>
  583. <func>fDiagGridDeleteRow</func>
  584. </item>
  585. </clcj>
  586. </popupmenu>
  587. <list2>
  588. <dept/>
  589. </list2>
  590. <rcv/>
  591. <currentDate/>
  592. </hidden>
  593. </root>
  594. </instance>
  595. <submission id="TRPIZ00102" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" resultref="/root/main/diaghist/list01"/>
  596. <submission id="TRPIJ00305" mediatype="application/x-www-form-urlencoded" method="post" replace="instance" resultref="/root/hidden/list2"/>
  597. <submission id="TRPID21501" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" resultref="/root/hidden/rcv"/>
  598. <submission id="TRPID21502" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" resultref="/root/hidden/rcv"/>
  599. <submission id="TXPID21501" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/diaglist" replace="instance" resultref="/root/hidden/rcv"/>
  600. <script type="javascript" ev:event="xforms-ready">
  601. <![CDATA[
  602. /* 테스트 시 사용 삭제 해도 무방
  603. model.setValue("/root/send/pid","163");
  604. model.setValue("/root/send/orddd","20070905");
  605. model.setValue("/root/send/ioflag","O");
  606. model.setValue("/root/send/deptcd","2170000000");
  607. model.setValue("/root/send/insukind","11");
  608. */
  609. fInitialize(); // 기본데이터 초기화
  610. // 진료 상병이력 조회
  611. submit("TRPID21502");
  612. var list01cnt = getNodesetCount("/root/hidden/rcv/list01/mmohdiag1");
  613. if (list01cnt > 0) {
  614. copyNodeType("/root/main/diaghist/list01","/root/hidden/rcv/list01","replace");
  615. }
  616. // 상병 조회
  617. submit("TRPID21501");
  618. var list02cnt = getNodesetCount("/root/hidden/rcv/list02/mmohdiag2");
  619. if (list02cnt > 0) {
  620. copyNodeType("/root/main/diaghist/list02","/root/hidden/rcv/list02","replace");
  621. }
  622. model.refresh();
  623. /* */
  624. list01cnt = grd_orddiaghist.rows;
  625. list02cnt = grd_diaglist.rows;
  626. var check = "";
  627. for (i=1; i<list01cnt ; i++) {
  628. check = "false";
  629. var ruleoutyn = model.getValue("/root/main/diaghist/list01/mmohdiag1[" + i + "]/diagkindcd");
  630. var rdiagcd = model.getValue("/root/main/diaghist/list01/mmohdiag1[" + i + "]/diagcd");
  631. var diaghngnm = model.getValue("/root/main/diaghist/list01/mmohdiag1[" + i + "]/diaghngnm");
  632. var orddeptcd = model.getValue("/root/main/diaghist/list01/mmohdiag1[" + i + "]/orddeptcd");
  633. var orddd = model.getValue("/root/main/diaghist/list01/mmohdiag1[" + i + "]/orddd");
  634. var toot = model.getValue("/root/main/diaghist/list01/mmohdiag1[" + i + "]/toot");
  635. var toot1 = model.getValue("/root/main/diaghist/list01/mmohdiag1[" + i + "]/toot1");
  636. var insukind = model.getValue("/root/main/diaghist/list01/mmohdiag1[" + i + "]/insukind");
  637. for (j=1; j<list02cnt ; j++) {
  638. var fdiagcd = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagcd");
  639. if (rdiagcd == fdiagcd) {
  640. check = "true";
  641. }
  642. }
  643. if (check == "false") {
  644. // 행 추가
  645. fDiagGridInsertRow(false);
  646. var row = grd_diaglist.rows -1;
  647. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/ruleoutyn", ruleoutyn);
  648. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/diagcd", rdiagcd);
  649. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/diagnm", diaghngnm);
  650. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/orddeptcd", orddeptcd);
  651. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/diagorddeptcd", orddeptcd);
  652. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/ordfromdd", orddd);
  653. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/insukind", insukind);
  654. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/rowstat", "I");
  655. if ( toot == "") {
  656. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/toothyn", "N");
  657. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/toot", "-");
  658. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/toot1", "");
  659. } else {
  660. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/toothyn", "Y");
  661. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/toot", toot);
  662. model.setValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/toot", toot1);
  663. }
  664. }
  665. }
  666. model.refresh();
  667. // 행 추가
  668. fDiagGridInsertRow(false);
  669. ]]>
  670. </script>
  671. <submission id="TRPIJ00308" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/hidden/sppiz00400/cond" resultref="/root/hidden/sppiz00400"/>
  672. </model>
  673. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  674. <script type="javascript" src="../../../com/commonweb/js/numericHelper.js"/>
  675. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  676. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  677. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  678. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  679. </xhtml:head>
  680. <xhtml:body pagewidth="972" pageheight="643" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  681. <group id="grp_tle" style="left:0px; top:0px; width:756px; height:13px; ">
  682. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:132px; height:13px; ">상병관리</caption>
  683. </group>
  684. <group id="grp_biz" scroll="auto" style="left:0px; top:13px; width:956px; height:603px; ">
  685. <line id="line34" class="line_1" style="x1:455px; y1:25px; x2:955px; y2:25px; "/>
  686. <caption id="caption87" class="tit_2" style="left:455px; top:10px; width:100px; height:13px; ">
  687. <![CDATA[상병]]>
  688. <script type="javascript" ev:event="onclick">
  689. <![CDATA[
  690. if (grd_diaglist.attribute("height") == "168") { // 세로로 확대된 창을 원래대로 한다.
  691. grd_diaglist.attribute("height") = "608";
  692. }else{
  693. grd_diaglist.attribute("height") = "168";
  694. }
  695. ]]>
  696. </script>
  697. </caption>
  698. <datagrid id="grd_diaglist" nodeset="/root/main/diaghist/list02/mmohdiag2" caption="S^R/O^상병코드^상 병 명^과^진료개시일^치^치식EDI^치식^pid^seqno^cretno^orddd^addflag^drinptyn^rowstat^orddeptcdkey^보험유형^drinptyn^addflag^mskind" colsep="^" colwidth="22, 31, 54, 135, 75, 86, 22, 50, 50, 132, 100, 100, 54, 100, 54, 54, 100, 100" ellipsis="true" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="1" tooltip="true" style="left:455px; top:30px; width:500px; height:571px; ">
  699. <col ref="diagseq" type="input" format="#,###"/>
  700. <col ref="ruleoutyn" type="checkbox"/>
  701. <col imemode="disabled" ref="diagcd" type="input" _chartype="upper" style="text-align:center; "/>
  702. <col ref="diagnm"/>
  703. <col ref="diagorddeptcd" type="combo">
  704. <choices>
  705. <itemset nodeset="/root/hidden/list2/dept">
  706. <label ref="depthngnm"/>
  707. <value ref="deptcd"/>
  708. </itemset>
  709. </choices>
  710. </col>
  711. <col ref="ordfromdd" type="inputdate" format="yyyy/mm/dd"/>
  712. <col ref="toothyn" visibility="hidden" style="text-align:center; "/>
  713. <col ref="toot" visibility="hidden"/>
  714. <col ref="toot1"/>
  715. <col ref="pid" visibility="hidden"/>
  716. <col ref="seqno" visibility="hidden"/>
  717. <col ref="cretno" visibility="hidden"/>
  718. <col ref="orddd" visibility="hidden"/>
  719. <col ref="addflag" visibility="hidden"/>
  720. <col ref="drinptyn" visibility="hidden"/>
  721. <col ref="rowstat" visibility="hidden"/>
  722. <col ref="orddeptcd" visibility="hidden"/>
  723. <col ref="insukind" visibility="hidden"/>
  724. <script type="javascript" ev:event="onclick">
  725. <![CDATA[
  726. if(grd_diaglist.col == 3){
  727. grd_diaglist.dispatch("onentercell");
  728. grd_diaglist.editCell();
  729. }
  730. ]]>
  731. </script>
  732. <script type="javascript" ev:event="onstartedit">
  733. <![CDATA[
  734. var row = grd_diaglist.row;
  735. model.makeValue("/root/hidden/list1/diag/oldseq", model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/diagseq"));
  736. model.makeValue("/root/hidden/list1/diag/olddiagcd", model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/diagcd"));
  737. model.makeValue("/root/hidden/list1/diag/olddiagnm", model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/diagnm"));
  738. model.makeValue("/root/hidden/list1/diag/oldrowstat", grd_diaglist.rowstatus(row));
  739. model.makeValue("/root/hidden/list1/diag/oldordfromdd", model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/ordfromdd"));
  740. ]]>
  741. </script>
  742. <script type="javascript" ev:event="onendedit">
  743. <![CDATA[
  744. // event="xforms-value-changed" 사용시에는 오류 발생한다.
  745. // 숫자 입력 후 마우스 커서 위치를 바꾸거나 Enter 입력 시에 호출된다.
  746. var col = grd_diaglist.col;
  747. if (col == grd_diaglist.colRef("diagseq")) { // no (상병순서)
  748. // 사용자가 입력한 숫자를 기준으로 상병순서 부여
  749. fChangeDiagNo();
  750. } else if (col == grd_diaglist.colRef("diagcd")) { // col = 3은 '상병코드'
  751. if (event.keyCode == '13') { // Enter 입력시에만 상병조회 Popup을 호출한다.
  752. if (model.getValue("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row +"]/diagcd") != model.getValue("/root/hidden/list1/diag/olddiagcd")) {
  753. model.resetInstanceNode("/root/main/diaghist/list02/mmohdiag2["+ grd_diaglist.row +"]/diagnm");
  754. fSearchDiageCode();
  755. }
  756. }
  757. }
  758. ]]>
  759. </script>
  760. <script type="javascript" ev:event="onmousedown">
  761. <![CDATA[
  762. if (event.button == 3) { // 3 : 오른쪽 버튼
  763. if (grd_diaglist.isCell(event.target) && grd_diaglist.mouseRow >= grd_diaglist.fixedrows) {
  764. window.setPopupMenu(true, "/root/hidden/popupmenu/clcj/item", "name", "func", false);
  765. } else {
  766. window.setPopupMenu(false);
  767. }
  768. }
  769. ]]>
  770. </script>
  771. <script type="javascript" ev:event="ondblclick">
  772. <![CDATA[
  773. var row = grd_diaglist.mouseRow;
  774. if (grd_diaglist.isCell(event.target) && row >= grd_diaglist.fixedrows) {
  775. var col = grd_diaglist.mouseCol;
  776. if (col == grd_diaglist.colRef("diagcd") || col == grd_diaglist.colRef("diagnm")) { // col = 3은 '상병코드' / col = 4는 '상병명'
  777. fSearchDiageCode();
  778. }
  779. else if (col == grd_diaglist.colRef("toot1")) { // 상병 - 치식여부 (Y/N)
  780. var row = grd_diaglist.row;
  781. var diagcd = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/diagcd");
  782. if (diagcd) {
  783. model.setValue("/root/hidden/sppiz00600/cond/pid", model.getValue("/root/main/diaghist/list02/mmohdiag2[" + row + "]/pid"));
  784. model.setValue("/root/hidden/sppiz00600/cond/toot", model.getValue("/root/main/diaghist/list02/mmohdiag2["+ row +"]/toot"));
  785. model.setValue("/root/hidden/sppiz00600/cond/clamym", "");
  786. model.setValue("/root/hidden/sppiz00600/cond/clamdg", "");
  787. model.setValue("/root/hidden/sppiz00600/cond/pidsn", "");
  788. fSetToothPop(row, "1");
  789. model.removenode("/root/hidden/sppiz00600/rslt"); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  790. modal("SPPIZ00600" ,"", "10", "10", "SPPIZ00600", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  791. fGetToothPop();
  792. }
  793. }
  794. }
  795. ]]>
  796. </script>
  797. <script type="javascript" ev:event="DOMFocusOut">
  798. <![CDATA[
  799. window.setPopupMenu(false);
  800. ]]>
  801. </script>
  802. </datagrid>
  803. <caption id="caption5" class="tit_2" style="left:0px; top:10px; width:105px; height:13px; ">진료상병</caption>
  804. <datagrid id="grd_orddiaghist" nodeset="/root/main/diaghist/list01/mmohdiag1" caption="R/O^상병코드^상병명(한글)^과^진료일자^치식^보험유형" colsep="^" colwidth="35, 54, 135, 75, 80, 50, 100" dataheight="23" ellipsis="true" explorerbar="sort" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="seq" rowheight="23" rowsep="|" tooltip="true" style="left:0px; top:30px; width:450px; height:571px; ">
  805. <col ref="diagkindcd" type="checkbox"/>
  806. <col ref="diagcd" style="text-align:center; "/>
  807. <col ref="diaghngnm"/>
  808. <col disabled="true" ref="orddeptcd" type="combo">
  809. <choices>
  810. <itemset nodeset="/root/hidden/list2/dept">
  811. <label ref="depthngnm"/>
  812. <value ref="deptcd"/>
  813. </itemset>
  814. </choices>
  815. </col>
  816. <col ref="orddd" format="yyyy/mm/dd"/>
  817. <col ref="toot"/>
  818. <col ref="insukind" visibility="hidden"/>
  819. </datagrid>
  820. <line id="line1" class="line_1" style="x1:0px; y1:25px; x2:450px; y2:25px; "/>
  821. <button id="btn_init" class="btn2_letter2" navindex="9" style="left:913px; top:4px; width:42px; height:19px; ">
  822. <caption>저장</caption>
  823. <script type="javascript" ev:event="DOMActivate">
  824. <![CDATA[
  825. var diagnm = "";
  826. var orddeptcd = "";
  827. var rows = grd_diaglist.rows;
  828. var row = rows - 1;
  829. // 상병 그리드 빈줄 제거 ( 저장할 데이터가 아닌 입력을 위한 ROW )
  830. for (var j = grd_diaglist.rows - 1; j >= 1; j--) {
  831. var rowstatus = grd_diaglist.rowstatus(j);
  832. var diagcd = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagcd");
  833. var diagnm = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ j +"]/diagnm");
  834. if (rowstatus != 4 && diagcd == "" && diagnm == "") {
  835. grd_diaglist.deleteRow(j, false);
  836. }
  837. }
  838. // 저장할 데이터가 있는지 확인
  839. var updateData = getGridUpdateData(grd_diaglist);
  840. if (updateData == "") {
  841. messageBox("저장할 상병 정보가","I004","");
  842. fDiagGridInsertRow();
  843. return;
  844. }
  845. // 저장할 데이터가 올바른지 확인
  846. rows = grd_diaglist.rows;
  847. for (i=1; i<rows; i++) {
  848. var diagstatus = grd_diaglist.rowstatus(i);
  849. diagseq = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ i +"]/diagseq");
  850. diagnm = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ i +"]/diagnm");
  851. orddeptcd = model.getValue("/root/main/diaghist/list02/mmohdiag2["+ i +"]/orddeptcd");
  852. if (diagnm == "" && orddeptcd != "") {
  853. messageBox("상병을 입력하여 주십시요!","E999","");
  854. return;
  855. }
  856. if (diagnm != "" && orddeptcd == "") {
  857. messageBox("진료과를 선택해 주십시요!","E999","");
  858. return;
  859. }
  860. if (diagnm == "" && orddeptcd == "") {
  861. grd_diaglist.rowstatus(i) = 0;
  862. }
  863. }
  864. model.makeNode("/root/send/diaglist");
  865. model.setValue("/root/send/diaglist", updateData);
  866. if(submit("TXPID21501")){
  867. model.removeNodeset("/root/main/diaghist/list02");
  868. model.makeNode("/root/main/diaghist/list02");
  869. // 상병 내역 저장 후 조회
  870. var list02cnt = getNodesetCount("/root/hidden/rcv/list02/mmohdiag2");
  871. var openerRows = model.getValue("/root/send/row");
  872. if (list02cnt > 0) {
  873. copyNodeType("/root/main/diaghist/list02","/root/hidden/rcv/list02","replace");
  874. for (i =1; i<openerRows; i++) {
  875. opener.model.setValue("/root/main/grd2/unexecordlist["+ i +"]/diagyn","Y");
  876. }
  877. opener.model.refresh();
  878. grd_diaglist.clearStatus();
  879. } else {
  880. // 상병 그리드에 데이터가 없는 형태 (모두 삭제의 경우, opener 의 상병 값을 'N'으로 바꿔준다.
  881. for (i =1; i<openerRows; i++) {
  882. opener.model.setValue("/root/main/grd2/unexecordlist["+ i +"]/diagyn","N");
  883. }
  884. opener.model.refresh();
  885. grd_diaglist.clearStatus();
  886. }
  887. model.refresh();
  888. }
  889. // 행 추가
  890. fDiagGridInsertRow();
  891. ]]>
  892. </script>
  893. </button>
  894. </group>
  895. <group id="grp_btn" style="left:0px; top:616px; width:956px; height:27px; ">
  896. <line id="line9" class="line_6" style="x1:0px; y1:0px; x2:56px; y2:0px; "/>
  897. <button id="btn_close" class="btn4_letter2" navindex="10" style="left:899px; top:5px; width:56px; height:22px; ">
  898. <caption>닫기</caption>
  899. <close ev:event="DOMActivate"/>
  900. </button>
  901. </group>
  902. </xhtml:body>
  903. </xhtml:html>