SPPIZ00500_특정내역상세관리.xrw 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <!--
  3. * @(#)SPPIZ00500_특정내역상세관리.xrw
  4. * 수정이력
  5. * - 2007.05.02 / 최초작성 / 정주미
  6. * - 2007.05.08 / SPPID21500.xrw에서 SPPIZ00500.xrw으로 변경 / 정주미
  7. * - 2007.09.20 / 화면수정 / 김건기
  8. *
  9. * - opener 에서 전달받는 조건 경로
  10. /root/hidden/item1/clsp
  11. -->
  12. <?xml-stylesheet href="../../../com/commonweb/css/common.css" type="text/css" ?>
  13. <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">
  14. <xhtml:head>
  15. <xhtml:title>특정내역 상세 관리</xhtml:title>
  16. <model id="model1">
  17. <instance id="instance1">
  18. <root xmlns="">
  19. <main>
  20. <item1>
  21. <clsp>
  22. <flag/>
  23. <snglcalcscorcd/>
  24. <clodseqno/>
  25. <edilnno/>
  26. <spclcd/>
  27. <detldesc/>
  28. <spclspec/>
  29. <spclformat/>
  30. <rownum/>
  31. <cdnm/>
  32. <unitflag/>
  33. <selectedrow/>
  34. <list/>
  35. </clsp>
  36. </item1>
  37. </main>
  38. <send>
  39. <unitflag/>
  40. </send>
  41. <init>
  42. <P0117list>
  43. <P0117>
  44. <cdid/>
  45. <cdnm/>
  46. <detldesc/>
  47. <dispseq/>
  48. <cdval/>
  49. <minval/>
  50. <cdengabbrnm/>
  51. </P0117>
  52. </P0117list>
  53. <P0117sublist/>
  54. </init>
  55. <hidden>
  56. <clsp>
  57. <cond>
  58. <flag/>
  59. <snglcalcscorcd/>
  60. <clodseqno/>
  61. <edilnno/>
  62. <spclcd/>
  63. <detldesc/>
  64. <spclspec/>
  65. <spclformat/>
  66. <rownum/>
  67. <cdnm/>
  68. <unitflag/>
  69. <list/>
  70. </cond>
  71. </clsp>
  72. <sppiz00700>
  73. <cond>
  74. <judgrid/>
  75. <memoflag/>
  76. <memocls/>
  77. <ediitem1/>
  78. </cond>
  79. <rslt>
  80. <memocd/>
  81. <memo/>
  82. </rslt>
  83. </sppiz00700>
  84. </hidden>
  85. </root>
  86. </instance>
  87. <submission id="TRPIZ00501" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/init/P0117list"/>
  88. <script type="javascript" ev:event="xforms-ready">
  89. <![CDATA[
  90. fInitialize(); // 화면을 초기화한다.
  91. fCheckAuth(); // 화면 권한을 설정한다.
  92. ]]>
  93. </script>
  94. <submission id="TRPAM00105" mediatype="application/x-www-form-urlencoded" method="post"/>
  95. </model>
  96. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  97. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  98. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  99. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  100. <script type="javascript" src="../../../pam/pamcomnweb/js/PAM001.js"/>
  101. <script type="javascript">
  102. <![CDATA[
  103. // 화면 권한을 설정한다.
  104. function fCheckAuth() {
  105. /*
  106. if (getAuth() == "") { // (common.js) 현재 화면의 권한 정보를 확인
  107. // 메뉴에서 열리는 화면이 아닌 경우 메뉴가 없는 Local Test를 위해 임시로 설정함
  108. model.setValue("/root/hidden/properties/auth", "10000000"); // R권한만 있는 경우
  109. }
  110. */
  111. var xAuth = !checkAuth("X");
  112. cmb_spclcd.disabled = xAuth; // 특정코드 (CD) Combo
  113. tar_spclspec.disabled = xAuth; // 특정내역 TextArea
  114. grd_clsplist.disabled = xAuth;
  115. btn_confirm.disabled = xAuth; // 확인
  116. btn_delete.disabled = xAuth; // 삭제
  117. btn_alter.disabled = xAuth;
  118. btn_add.disabled = xAuth;
  119. btn_memohistory.disabled = xAuth;
  120. btn_memohistory_drug.disabled = xAuth;
  121. btn_memohistory_injection.disabled = xAuth;
  122. btn_memohistory_treat.disabled = xAuth;
  123. btn_memohistory_exam.disabled = xAuth;
  124. btn_memohistory_etc.disabled = xAuth;
  125. }
  126. // 화면을 초기화한다.
  127. function fInitialize() {
  128. if (checkOpener()) { // (common.js) 자신을 Open한 opener의 현재 UID가 자신을 open한 시점의 UID와 비교하여 변경되었는지 여부를 반환
  129. model.removeNodeset("/root/main/item1/clsp");
  130. model.makeNode("/root/main/item1/clsp");
  131. model.copyNode("/root/main/item1/clsp", "/root/hidden/clsp/cond");
  132. // opener에서 특정내역 단위구분을 전달하기 않은 경우를 위해 node를 생성한다.
  133. model.makeNode("/root/main/item1/clsp/unitflag");
  134. // 특정목록 row를 선택할 때 이전 편집 내용을 자동으로 설정하기 위해 이전에 선택된 row를 기억한다.
  135. model.makeNode("/root/main/item1/clsp/selectedrow");
  136. var unitflag = model.getValue("/root/main/item1/clsp/unitflag");
  137. // 공통코드를 조회한다.
  138. model.setValue("/root/send/unitflag", unitflag);
  139. submit("TRPIZ00501",false);
  140. pamfGetCodeList(new Array("P0117"), new Array("/root/init/P0117sublist"));
  141. if (unitflag == "M") {
  142. btn_memohistory.visible = false;
  143. grd_clsplist.colHidden(grd_clsplist.colRef("snglcalcscorcd")) = true;
  144. grd_clsplist.colHidden(grd_clsplist.colRef("edilnno")) = true;
  145. }
  146. grd_clsplist.rebuild();
  147. // opener에서 선택한 row를 설정한다.
  148. var row = model.getValue("/root/main/item1/clsp/rownum");
  149. for (var i = 1; i < grd_clsplist.rows; i++) {
  150. if (row == model.getValue("/root/main/item1/clsp/list["+ i +"]/rownum") ) {
  151. grd_clsplist.row = i;
  152. model.setValue("/root/main/item1/clsp/selectedrow", i);
  153. }
  154. }
  155. } else {
  156. model.removeNodeset("/root/main/item1/clsp/list");
  157. // 공통코드를 조회한다.
  158. submit("TRPIZ00501",false);
  159. // // (ZBC001.js) com.ZBCMCODE에서 기초코드 값을 가져와서 Combo 컨트롤 item으로 설정하기 위해 사용한다.
  160. // zbcfGetCodeList(
  161. // new Array("P0117"),
  162. // new Array("/root/init/P0117list" ),
  163. // false ); // minimum을 'false'로 설정한 경우에는 코드의 모든속성을 가져온다.
  164. // messageBox("상위화면이 변경되어 데이터를 초기화 할 수", "I004"); ///상위화면이 변경되어 데이터를 초기화 할 수 없습니다.
  165. }
  166. model.setFocus("tar_spclspec");
  167. }
  168. // SPPIZ00700_심사Comment조회.xrw 호출
  169. function fGetJudgComment(memocls) {
  170. // memoflag - 메모구분(1:심사자메모, 2:EDI메모, 3:줄단위메모, 4:타부서전달)
  171. // memocls - 메모분류(01:약, 02:주사, 03:처치, 04:검사, 99:기타)
  172. var unitflag = model.getValue("/root/main/item1/clsp/unitflag");
  173. var memoflag = "";
  174. if (unitflag == "M") { // 명세서 단위인 경우 2:EDI메모
  175. memoflag = "2";
  176. } else { // 줄번호 단위인 경우 3:줄단위메모
  177. memoflag = "3";
  178. }
  179. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  180. model.resetInstanceNode("/root/hidden/sppiz00700/cond");
  181. model.setValue("/root/hidden/sppiz00700/cond/memoflag", memoflag);
  182. model.setValue("/root/hidden/sppiz00700/cond/memocls", memocls);
  183. modal("SPPIZ00700", "1", "400", "100", "SPPIZ00700", "/root/hidden/sppiz00700", "/root/send/sppiz00700", "", "");
  184. }
  185. function fGetJudgComment(memocls, ediitem1) {
  186. // memoflag - 메모구분(1:심사자메모, 2:EDI메모, 3:줄단위메모, 4:타부서전달)
  187. // memocls - 메모분류(01:약, 02:주사, 03:처치, 04:검사, 99:기타)
  188. var unitflag = model.getValue("/root/main/item1/clsp/unitflag");
  189. var memoflag = "";
  190. if (unitflag == "M") { // 명세서 단위인 경우 2:EDI메모
  191. memoflag = "2";
  192. } else { // 줄번호 단위인 경우 3:줄단위메모
  193. memoflag = "3";
  194. }
  195. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  196. model.resetInstanceNode("/root/hidden/sppiz00700/cond");
  197. model.setValue("/root/hidden/sppiz00700/cond/memoflag", memoflag);
  198. model.setValue("/root/hidden/sppiz00700/cond/memocls", memocls);
  199. model.setValue("/root/hidden/sppiz00700/cond/ediitem1", ediitem1);
  200. modal("SPPIZ00700", "1", "400", "100", "SPPIZ00700", "/root/hidden/sppiz00700", "/root/send/sppiz00700", "", "");
  201. }
  202. // 심사Comment 조회 Popup에서 선택한 EDI메모를 설정한다.
  203. // SPPIZ00700_심사Comment조회.xrw 에서 opener.javascript.fSetEdiMemoRefresh(); 형태로 호출한다.
  204. function fSetEdiMemoRefresh(){
  205. var memo = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  206. var spclspec = model.getValue("/root/main/item1/clsp/spclspec");
  207. if (memo) {
  208. // model.setValue("/root/main/item1/clsp/spclcd", "MX999");
  209. // model.setValue("/root/main/item1/clsp/detldesc", "영문(700자), 한글(350자)");
  210. // model.setValue("/root/main/item1/clsp/spclformat", "X(700)");
  211. // model.setValue("/root/main/item1/clsp/cdnm", "기타내역");
  212. if (spclspec) { // 기존 청구메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  213. model.setValue("/root/main/item1/clsp/spclspec", spclspec +" \n"+ memo);
  214. } else {
  215. model.setValue("/root/main/item1/clsp/spclspec", memo);
  216. }
  217. model.refresh();
  218. }
  219. }
  220. // 심사Comment 조회 Popup에서 선택한 줄단위메모를 설정한다.
  221. // SPPIZ00700_심사Comment조회.xrw 에서 opener.javascript.fSetLnUnitMemoRefresh(); 형태로 호출한다.
  222. function fSetLnUnitMemoRefresh(){
  223. var memo = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  224. var spclspec = model.getValue("/root/main/item1/clsp/spclspec");
  225. if (memo) {
  226. if (model.getValue("/root/main/item1/clsp/spclcd") == "") {
  227. model.setValue("/root/main/item1/clsp/spclcd", "JX999");
  228. model.setValue("/root/main/item1/clsp/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  229. model.setValue("/root/main/item1/clsp/spclformat", "X(700)");
  230. model.setValue("/root/main/item1/clsp/cdnm", "기타내역");
  231. }
  232. if (spclspec) { // 기존 줄단위메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  233. model.setValue("/root/main/item1/clsp/spclspec", spclspec +" \n"+ memo);
  234. } else {
  235. model.setValue("/root/main/item1/clsp/spclspec", memo);
  236. }
  237. model.refresh();
  238. }
  239. }
  240. ]]>
  241. </script>
  242. </xhtml:head>
  243. <xhtml:body pagewidth="611" pageheight="591" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  244. <group id="grp_biz" scroll="auto" style="left:0px; top:0px; width:595px; height:564px; ">
  245. <caption id="caption1" class="tit_2" style="left:5px; top:10px; width:100px; height:13px; ">특정내역 상세</caption>
  246. <line id="line1" class="line_1" style="x1:0px; y1:25px; x2:594px; y2:25px; "/>
  247. <caption id="caption2" class="cell_1" style="left:0px; top:30px; width:59px; height:23px; ">수가코드</caption>
  248. <output id="opt_snglcalcscorcd" ref="/root/main/item1/clsp/snglcalcscorcd" class="output_fix" style="left:62px; top:31px; width:100px; height:19px; "/>
  249. <caption id="caption3" class="cell_1" style="left:165px; top:30px; width:67px; height:23px; ">줄번호</caption>
  250. <output id="opt_edilnno" ref="/root/main/item1/clsp/edilnno" class="output_fix" style="left:229px; top:31px; width:29px; height:19px; "/>
  251. <caption id="caption4" class="cell_1" style="left:259px; top:30px; width:59px; height:23px; ">특정코드</caption>
  252. <line id="line2" class="line_2" style="x1:0px; y1:52px; x2:594px; y2:52px; "/>
  253. <caption id="caption5" class="cell_1" style="left:0px; top:194px; width:59px; height:146px; ">특정내역</caption>
  254. <textarea id="tar_spclspec" ref="/root/main/item1/clsp/spclspec" navindex="2" style="left:62px; top:195px; width:532px; height:142px; "/>
  255. <line id="line3" class="line_2" style="x1:0px; y1:339px; x2:594px; y2:339px; "/>
  256. <caption id="caption6" class="cell_1" style="left:0px; top:341px; width:59px; height:23px; ">기재형식</caption>
  257. <output id="opt_spclformat" ref="/root/main/item1/clsp/spclformat" class="output_fix" style="left:62px; top:342px; width:532px; height:19px; "/>
  258. <line id="line4" class="line_3" style="x1:0px; y1:363px; x2:594px; y2:363px; "/>
  259. <caption id="caption7" class="tit_2" style="left:5px; top:370px; width:100px; height:13px; ">특정내역 목록</caption>
  260. <line id="line6" class="line_1" style="x1:0px; y1:385px; x2:594px; y2:385px; "/>
  261. <datagrid id="grd_clsplist" nodeset="/root/main/item1/clsp/list" caption="flag^row^수가코드^줄번호^특정코드^특정내역^기재형식^특정내역명칭^상세설명^처방일련번호^기존특정코드^기존특정내역" colsep="^" colwidth="0, 0, 80, 42, 56, 300, 100, 100, 100, 100, 0, 0" ellipsis="true" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" tooltip="true" style="left:0px; top:390px; width:594px; height:173px; ">
  262. <col ref="flag" visibility="hidden"/>
  263. <col ref="rownum" visibility="hidden"/>
  264. <col ref="snglcalcscorcd"/>
  265. <col ref="edilnno" visibility="hidden"/>
  266. <col ref="spclcd"/>
  267. <col ref="spclspec"/>
  268. <col ref="spclformat"/>
  269. <col ref="cdnm" visibility="hidden"/>
  270. <col ref="detldesc" visibility="hidden"/>
  271. <col ref="clodseqno" visibility="hidden"/>
  272. <col ref="oldspclcd" visibility="hidden"/>
  273. <col ref="oldspclspec" visibility="hidden"/>
  274. <script type="javascript" ev:event="onclick">
  275. <![CDATA[
  276. var row = grd_clsplist.mouseRow;
  277. if (grd_clsplist.isCell(event.target) && row >= grd_clsplist.fixedrows) {
  278. // 특정내역 목록에서 선택된 row가 변경된 경우
  279. if (row != model.getValue("/root/main/item1/clsp/selectedrow")) {
  280. // 이전 상세내역 내용을 특정내역 목록에 적용시킨 후 현재 선택된 row 내역을 상세내역에 표시한다.
  281. btn_alter.dispatch("DOMActivate");
  282. model.setValue("/root/main/item1/clsp/selectedrow", row);
  283. }
  284. // 특정내역 목록에서 선택된 row를 상세내역으로 표시한다.
  285. model.setValue("/root/main/item1/clsp/flag", model.getValue("/root/main/item1/clsp/list["+ row +"]/flag"));
  286. // DB data 상의 오류로 잘못된 수가코드, 줄번호인 경우 자료 정정을 위해서 처음 초기값으로 선택된 EDI코드와 줄번호를 유지시킨다.
  287. model.setValue("/root/main/item1/clsp/snglcalcscorcd",model.getValue("/root/main/item1/clsp/list["+ row +"]/snglcalcscorcd"));
  288. model.setValue("/root/main/item1/clsp/edilnno",model.getValue("/root/main/item1/clsp/list["+ row +"]/edilnno"));
  289. model.setValue("/root/main/item1/clsp/spclcd", model.getValue("/root/main/item1/clsp/list["+ row +"]/spclcd"));
  290. model.setValue("/root/main/item1/clsp/detldesc", model.getValue("/root/main/item1/clsp/list["+ row +"]/detldesc")); // 상세설명 부분 추가
  291. model.setValue("/root/main/item1/clsp/spclspec", model.getValue("/root/main/item1/clsp/list["+ row +"]/spclspec"));
  292. model.setValue("/root/main/item1/clsp/spclformat", model.getValue("/root/main/item1/clsp/list["+ row +"]/spclformat"));
  293. model.setValue("/root/main/item1/clsp/rownum", model.getValue("/root/main/item1/clsp/list["+ row +"]/rownum"));
  294. model.setValue("/root/main/item1/clsp/cdnm", model.getValue("/root/main/item1/clsp/list["+ row +"]/cdnm")); // 특정내역명칭 부분 추가
  295. model.refresh();
  296. }
  297. ]]>
  298. </script>
  299. </datagrid>
  300. <button id="btn_add" class="btn2_letter2" _auth="X" style="left:552px; top:365px; width:42px; height:19px; ">
  301. <caption>추가</caption>
  302. <script type="javascript" ev:event="DOMActivate">
  303. <![CDATA[
  304. var spclcd = model.getValue("/root/main/item1/clsp/spclcd");
  305. var snglcalcscorcd = model.getValue("/root/main/item1/clsp/snglcalcscorcd");
  306. var edilnno = model.getValue("/root/main/item1/clsp/edilnno");
  307. if (spclcd == "") {
  308. // if (grd_clsplist.rows > 1) {
  309. messageBox("특정코드를", "C002"); ///특정코드를 선택하십시오.
  310. // }
  311. return;
  312. }
  313. var setrow = 0; // 삭제상태인 동일한 특정내역코드가 있는지
  314. var rownum = ""; // 삭제상태인 특정내역코드의 row
  315. for (var i = 1; i < grd_clsplist.rows; i++) {
  316. var grdspclcd = model.getValue("/root/main/item1/clsp/list["+ i +"]/spclcd");
  317. var grdsnglcalcscorcd = model.getValue("/root/main/item1/clsp/list["+ i +"]/snglcalcscorcd");
  318. var grdedilnno = model.getValue("/root/main/item1/clsp/list["+ i +"]/edilnno");
  319. if ( edilnno == grdedilnno && spclcd == grdspclcd && grdspclcd == "JX999" ) {
  320. var rowHidden = grd_clsplist.rowHidden(i);
  321. if (rowHidden == "1") {
  322. grd_clsplist.rowHidden(i) = false;
  323. setrow = i;
  324. rownum = model.getValue("/root/main/item1/clsp/list["+ i +"]/rownum");
  325. } else {
  326. messageBox("특정코드 'JX999'가 존재하므로 추가할 수", "I004"); ///특정코드 'JX999'가 존재하므로 추가할 수 없습니다.
  327. return;
  328. }
  329. } else if ( edilnno == grdedilnno && spclcd == grdspclcd && grdspclcd == "MT015" ) {
  330. var rowHidden = grd_clsplist.rowHidden(i);
  331. if (rowHidden == "1") {
  332. grd_clsplist.rowHidden(i) = false;
  333. setrow = i;
  334. rownum = model.getValue("/root/main/item1/clsp/list["+ i +"]/rownum");
  335. } else {
  336. messageBox("특정코드 'MT015'가 존재하므로 추가할 수", "I004"); ///특정코드 'MT015'가 존재하므로 추가할 수 없습니다.
  337. return;
  338. }
  339. } else if ( edilnno == grdedilnno && spclcd == grdspclcd && grdspclcd == "MT016 " ) {
  340. var rowHidden = grd_clsplist.rowHidden(i);
  341. if (rowHidden == "1") {
  342. grd_clsplist.rowHidden(i) = false;
  343. setrow = i;
  344. rownum = model.getValue("/root/main/item1/clsp/list["+ i +"]/rownum");
  345. } else {
  346. messageBox("특정코드 'MT016'가 존재하므로 추가할 수", "I004"); ///특정코드 'MT016'가 존재하므로 추가할 수 없습니다.
  347. return;
  348. }
  349. }
  350. }
  351. var row = 0;
  352. if (setrow == 0) { // 기존에 삭제상태였던 row가 없다면 신규 추가
  353. grd_clsplist.addItem();
  354. row = grd_clsplist.row;
  355. model.setValue("/root/main/item1/clsp/list["+ row +"]/flag", "I");
  356. } else {
  357. row = setrow;
  358. model.setValue("/root/main/item1/clsp/list["+ row +"]/flag", "U");
  359. }
  360. var snglcalcscorcd = model.getValue("/root/main/item1/clsp/snglcalcscorcd");
  361. var clodseqno = model.getValue("/root/main/item1/clsp/clodseqno");
  362. var edilnno = model.getValue("/root/main/item1/clsp/edilnno");
  363. var detldesc = model.getValue("/root/main/item1/clsp/detldesc");
  364. var spclspec = model.getValue("/root/main/item1/clsp/spclspec");
  365. var spclformat = model.getValue("/root/main/item1/clsp/spclformat");
  366. // 2008.01.04 박지욱 수정 - 형식 50자릿수 제한
  367. spclformat = spclformat.substring(0,50);
  368. var cdnm = model.getValue("/root/main/item1/clsp/cdnm");
  369. if (snglcalcscorcd == "") {
  370. snglcalcscorcd = "-";
  371. }
  372. if (edilnno == "") {
  373. edilnno = "0";
  374. }
  375. model.setValue("/root/main/item1/clsp/list["+ row +"]/snglcalcscorcd", snglcalcscorcd);
  376. if (clodseqno != "") {
  377. model.setValue("/root/main/item1/clsp/list["+ row +"]/clodseqno", clodseqno);
  378. }
  379. model.setValue("/root/main/item1/clsp/list["+ row +"]/edilnno", edilnno);
  380. model.setValue("/root/main/item1/clsp/list["+ row +"]/spclcd", spclcd);
  381. model.setValue("/root/main/item1/clsp/list["+ row +"]/detldesc", detldesc);
  382. model.setValue("/root/main/item1/clsp/list["+ row +"]/spclspec", spclspec);
  383. model.setValue("/root/main/item1/clsp/list["+ row +"]/spclformat", spclformat);
  384. model.setValue("/root/main/item1/clsp/list["+ row +"]/rownum", rownum);
  385. model.setValue("/root/main/item1/clsp/list["+ row +"]/cdnm", cdnm);
  386. // 이전에 선택된 줄
  387. // model.resetInstanceNode("/root/main/item1/clsp/selectedrow");
  388. model.setValue("/root/main/item1/clsp/selectedrow", row);
  389. // 추가후 특정내역 상세 초기화
  390. model.resetInstanceNode("/root/main/item1/clsp/spclcd");
  391. model.refresh();
  392. cmb_spclcd.dispatch("xforms-value-changed");
  393. ]]>
  394. </script>
  395. </button>
  396. <button id="btn_alter" class="btn5_letter2" disabled="true" visibility="hidden" _auth="X" style="left:462px; top:365px; width:42px; height:19px; ">
  397. <caption>수정</caption>
  398. <script type="javascript" ev:event="DOMActivate">
  399. <![CDATA[
  400. // var row = grd_clsplist.row;
  401. var row = model.getValue("/root/main/item1/clsp/selectedrow"); // 이전에 선택된 줄
  402. if (row > 0) {
  403. var spclcd = model.getValue("/root/main/item1/clsp/spclcd");
  404. var spclspec = model.getValue("/root/main/item1/clsp/spclspec");
  405. var snglcalcscorcd = model.getValue("/root/main/item1/clsp/snglcalcscorcd");
  406. var edilnno = model.getValue("/root/main/item1/clsp/edilnno");
  407. if (spclcd == "" || spclspec == "") {
  408. // messageBox("특정코드를", "C002"); ///특정코드를 선택하십시오.
  409. //btn_delete.dispatch("DOMActivate");
  410. return;
  411. }
  412. // 내용이 변경되지 않은 경우의 처리
  413. var prespclcd = model.getValue("/root/main/item1/clsp/list["+ row +"]/spclcd");
  414. var prespclspec = model.getValue("/root/main/item1/clsp/list["+ row +"]/spclspec");
  415. if (spclcd == prespclcd && spclspec == prespclspec) {
  416. return;
  417. }
  418. var rownum = model.getValue("/root/main/item1/clsp/rownum");
  419. for (var i = 1; i < grd_clsplist.rows; i++) {
  420. if (row != i) {
  421. var grdspclcd = model.getValue("/root/main/item1/clsp/list["+ i +"]/spclcd");
  422. var grdedilnno = model.getValue("/root/main/item1/clsp/list["+ i +"]/edilnno");
  423. if ( edilnno == grdedilnno && spclcd == grdspclcd && grdspclcd == "JX999" ) {
  424. var rowHidden = grd_clsplist.rowHidden(i);
  425. if (rowHidden == "1") {
  426. grd_clsplist.rowHidden(i) = false;
  427. rownum = model.getValue("/root/main/item1/clsp/list["+ row +"]/rownum");
  428. } else {
  429. messageBox("특정코드 'JX999'가 존재하므로 'JX999'로 변경할 수", "I004");
  430. return;
  431. }
  432. } else if (edilnno == grdedilnno && spclcd == grdspclcd && grdspclcd == "MT015" ) {
  433. var rowHidden = grd_clsplist.rowHidden(i);
  434. if (rowHidden == "1") {
  435. grd_clsplist.rowHidden(i) = false;
  436. rownum = model.getValue("/root/main/item1/clsp/list["+ row +"]/rownum");
  437. } else {
  438. messageBox("특정코드 'MT015'가 존재하므로 'MT015'로 변경할 수", "I004"); ///특정코드 'MT015'가 존재하므로 추가할 수 없습니다.
  439. return;
  440. }
  441. } else if ( edilnno == grdedilnno && spclcd == grdspclcd && grdspclcd == "MT016 " ) {
  442. var rowHidden = grd_clsplist.rowHidden(i);
  443. if (rowHidden == "1") {
  444. grd_clsplist.rowHidden(i) = false;
  445. rownum = model.getValue("/root/main/item1/clsp/list["+ row +"]/rownum");
  446. } else {
  447. messageBox("특정코드 'MT016'가 존재하므로 'MT016로 변경할 수", "I004"); ///특정코드 'MT016'가 존재하므로 추가할 수 없습니다.
  448. return;
  449. }
  450. }
  451. }
  452. }
  453. var flag = model.getValue("/root/main/item1/clsp/flag");
  454. var snglcalcscorcd = model.getValue("/root/main/item1/clsp/snglcalcscorcd");
  455. var clodseqno = model.getValue("/root/main/item1/clsp/clodseqno");
  456. var edilnno = model.getValue("/root/main/item1/clsp/edilnno");
  457. var detldesc = model.getValue("/root/main/item1/clsp/detldesc");
  458. var spclformat = model.getValue("/root/main/item1/clsp/spclformat");
  459. var cdnm = model.getValue("/root/main/item1/clsp/cdnm");
  460. if (snglcalcscorcd == "") {
  461. snglcalcscorcd = "-";
  462. }
  463. if (edilnno == "") {
  464. edilnno = "0";
  465. }
  466. // model.setValue("/root/main/item1/clsp/list["+ row +"]/flag", flag);
  467. var flagstat = model.getValue("/root/main/item1/clsp/list["+ row +"]/flag");
  468. var rowstatus = grd_clsplist.rowStatus(row);
  469. if (flagstat == "I" ) {
  470. model.setValue("/root/main/item1/clsp/list["+ row +"]/flag", flag);
  471. grd_clsplist.rowStatus(row) = 3;
  472. } else if( rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  473. } else {
  474. grd_clsplist.rowStatus(row) = 2; // 2 : update 상태로 stat를 변경한다.
  475. model.setValue("/root/main/item1/clsp/list["+ row +"]/flag", "U");
  476. }
  477. //model.setValue("/root/main/item1/clsp/list["+ row +"]/snglcalcscorcd", snglcalcscorcd);
  478. //model.setValue("/root/main/item1/clsp/list["+ row +"]/clodseqno", clodseqno);
  479. //model.setValue("/root/main/item1/clsp/list["+ row +"]/edilnno", edilnno);
  480. //model.setValue("/root/main/item1/clsp/list["+ row +"]/spclcd", spclcd);
  481. //model.setValue("/root/main/item1/clsp/list["+ row +"]/detldesc", detldesc);
  482. model.setValue("/root/main/item1/clsp/list["+ row +"]/spclspec", spclspec);
  483. //model.setValue("/root/main/item1/clsp/list["+ row +"]/spclformat", spclformat);
  484. //model.setValue("/root/main/item1/clsp/list["+ row +"]/rownum", rownum);
  485. //model.setValue("/root/main/item1/clsp/list["+ row +"]/cdnm", cdnm);
  486. model.refresh();
  487. // } else {
  488. // messageBox("수정할 특정내역 코드를 목록에서", "C002"); ///수정할 특정내역 코드를 목록에서 선택하십시오.
  489. }
  490. ]]>
  491. </script>
  492. </button>
  493. <button id="btn_delete" class="btn2_letter2" _auth="X" style="left:507px; top:365px; width:42px; height:19px; ">
  494. <caption>삭제</caption>
  495. <script type="javascript" ev:event="DOMActivate">
  496. <![CDATA[
  497. if (grd_clsplist.row > 0 ) {
  498. for (var i = 0; i < grd_clsplist.selectedRows; i++) {
  499. var row = grd_clsplist.selectedrow(i);
  500. grd_clsplist.rowHidden(row) = true;
  501. model.setValue("/root/main/item1/clsp/list["+ row +"]/flag","D");
  502. }
  503. // 이전에 선택된 줄
  504. model.resetInstanceNode("/root/main/item1/clsp/selectedrow");
  505. // 추가후 특정내역 상세 초기화
  506. model.resetInstanceNode("/root/main/item1/clsp/spclcd");
  507. model.refresh();
  508. cmb_spclcd.dispatch("xforms-value-changed");
  509. grd_clsplist.row = 0;
  510. } else {
  511. messageBox("삭제할 특정내역 코드를 목록에서", "C002"); ///삭제할 특정내역 코드를 목록에서 선택하십시오.
  512. }
  513. /////////////////
  514. // var row = grd_clsplist.row;
  515. // if (row > 0) {
  516. // grd_clsplist.rowHidden(row) = true;
  517. // model.setValue("/root/main/item1/clsp/list["+ row +"]/flag","D");
  518. // model.refresh();
  519. // } else {
  520. // messageBox("삭제할 특정 내역을", "C002"); ///삭제할 특정 내역을 선택하십시오.
  521. // return;
  522. // }
  523. ]]>
  524. </script>
  525. </button>
  526. <line id="line7" class="line_2" style="x1:0px; y1:193px; x2:594px; y2:193px; "/>
  527. <caption id="caption8" class="cell_1" style="left:0px; top:54px; width:59px; height:138px; ">상세설명</caption>
  528. <textarea id="tar_detldesc" ref="/root/main/item1/clsp/detldesc" disabled="true" style="left:62px; top:55px; width:532px; height:136px; padding-top:5; "/>
  529. <button id="btn_memohistory" class="btn2_letter5" _auth="X" style="left:294px; top:5px; width:75px; height:19px; ">
  530. <caption>줄단위메모</caption>
  531. <script type="javascript" ev:event="DOMActivate">
  532. <![CDATA[
  533. fGetJudgComment(""); // memocls - 메모분류(01:약, 02:주사, 03:처치, 04:검사, 99:기타)
  534. ]]>
  535. </script>
  536. </button>
  537. <button id="btn_memohistory_drug" class="btn2_letter2" _auth="X" style="left:372px; top:5px; width:42px; height:19px; ">
  538. <caption>약</caption>
  539. <script type="javascript" ev:event="DOMActivate">
  540. <![CDATA[
  541. fGetJudgComment("01"); // memocls - 메모분류(01:약, 02:주사, 03:처치, 04:검사, 99:기타)
  542. ]]>
  543. </script>
  544. </button>
  545. <button id="btn_memohistory_injection" class="btn2_letter2" _auth="X" style="left:417px; top:5px; width:42px; height:19px; ">
  546. <caption>주사</caption>
  547. <script type="javascript" ev:event="DOMActivate">
  548. <![CDATA[
  549. fGetJudgComment("02"); // memocls - 메모분류(01:약, 02:주사, 03:처치, 04:검사, 99:기타)
  550. ]]>
  551. </script>
  552. </button>
  553. <button id="btn_memohistory_treat" class="btn2_letter2" _auth="X" style="left:462px; top:5px; width:42px; height:19px; ">
  554. <caption>처치</caption>
  555. <script type="javascript" ev:event="DOMActivate">
  556. <![CDATA[
  557. fGetJudgComment("03"); // memocls - 메모분류(01:약, 02:주사, 03:처치, 04:검사, 99:기타)
  558. ]]>
  559. </script>
  560. </button>
  561. <button id="btn_memohistory_exam" class="btn2_letter2" _auth="X" style="left:507px; top:5px; width:42px; height:19px; ">
  562. <caption>검사</caption>
  563. <script type="javascript" ev:event="DOMActivate">
  564. <![CDATA[
  565. fGetJudgComment("04"); // memocls - 메모분류(01:약, 02:주사, 03:처치, 04:검사, 99:기타)
  566. ]]>
  567. </script>
  568. </button>
  569. <button id="btn_memohistory_etc" class="btn2_letter2" _auth="X" style="left:552px; top:5px; width:42px; height:19px; ">
  570. <caption>기타</caption>
  571. <script type="javascript" ev:event="DOMActivate">
  572. <![CDATA[
  573. fGetJudgComment("99"); // memocls - 메모분류(01:약, 02:주사, 03:처치, 04:검사, 99:기타)
  574. ]]>
  575. </script>
  576. </button>
  577. <select1 id="cmb_spclcd" ref="/root/main/item1/clsp/spclcd" class="combo_default" navindex="1" appearance="minimal" style="left:321px; top:31px; width:273px; height:19px; ">
  578. <choices>
  579. <itemset nodeset="/root/init/P0117list/P0117">
  580. <label ref="cdengabbrnm"/>
  581. <value ref="cdid"/>
  582. </itemset>
  583. </choices>
  584. <script type="javascript" ev:event="xforms-value-changed">
  585. <![CDATA[
  586. var spclcd = model.getValue("/root/main/item1/clsp/spclcd");
  587. if (spclcd) {
  588. var index = cmb_spclcd.value; // 시작 인덱스 = 0 (빈 node 추가하면서 +1 하지 않음)
  589. var format = model.getValue("/root/init/P0117list/P0117[cdid='" + index + "']/cdval");
  590. var detldesc = model.getValue("/root/init/P0117list/P0117[cdid='" + index + "']/detldesc");
  591. var cdnm = model.getValue("/root/init/P0117list/P0117[cdid='" + index + "']/cdnm");
  592. model.setValue("/root/main/item1/clsp/detldesc", detldesc); // 상세설명
  593. model.setValue("/root/main/item1/clsp/spclformat", format); // 기재형식
  594. model.setValue("/root/main/item1/clsp/cdnm", cdnm);
  595. model.setValue("/root/main/item1/clsp/spclspec", model.getValue("/root/init/P0117sublist/P0117[cdid='"+index +"']/detl"));
  596. } else {
  597. model.resetInstanceNode("/root/main/item1/clsp/detldesc"); // 상세설명
  598. model.resetInstanceNode("/root/main/item1/clsp/spclformat"); // 기재형식
  599. model.resetInstanceNode("/root/main/item1/clsp/cdnm");
  600. model.resetInstanceNode("/root/main/item1/clsp/spclspec"); // 특정내역
  601. }
  602. model.refresh();
  603. ]]>
  604. </script>
  605. </select1>
  606. <caption id="caption9" class="cell_1" visibility="hidden" style="left:5px; top:60px; width:45px; height:23px; ">seqno</caption>
  607. <output id="output1" ref="/root/main/item1/clsp/clodseqno" class="output_fix" visibility="hidden" style="left:15px; top:80px; width:29px; height:19px; "/>
  608. <button id="btn_rsltsrch" class="btn2_letter4" _auth="R" style="left:227px; top:5px; width:64px; height:19px; ">
  609. <caption>결과조회</caption>
  610. <script type="javascript" ev:event="DOMActivate">
  611. <![CDATA[
  612. if (checkOpener()) { // (common.js) 자신을 Open한 opener의 현재 UID가 자신을 open한 시점의 UID와 비교하여 변경되었는지 여부를 반환
  613. opener.javascript.fOrderRsltSrch();
  614. } else {
  615. messageBox("상위화면이 변경되어 데이터를 전달할 수", "I004"); ///상위화면이 변경되어 데이터를 전달할 수 없습니다.
  616. }
  617. ]]>
  618. </script>
  619. </button>
  620. <button id="button1" class="btn2_letter8" _auth="X" style="left:351px; top:365px; width:108px; height:19px; ">
  621. <caption>일괄특정내역입력</caption>
  622. <script type="javascript" ev:event="DOMActivate">
  623. <![CDATA[
  624. for (var i = 1; i < grd_clsplist.rows; i++) {
  625. grd_clsplist.valueMatrix(i,grd_clsplist.colRef("spclspec")) = model.getValue("/root/main/item1/clsp/spclspec");
  626. }
  627. ]]>
  628. </script>
  629. </button>
  630. </group>
  631. <group id="grp_btn" scroll="auto" style="left:0px; top:564px; width:595px; height:27px; ">
  632. <line id="line5" class="line_6" style="x1:0px; y1:0px; x2:594px; y2:0px; "/>
  633. <button id="btn_cancel" class="btn4_letter2" style="left:538px; top:5px; width:56px; height:22px; ">
  634. <caption>취소</caption>
  635. <close ev:event="DOMActivate"/>
  636. </button>
  637. <button id="btn_confirm" class="btn4_letter2" _auth="X" style="left:479px; top:5px; width:56px; height:22px; ">
  638. <caption>확인</caption>
  639. <script type="javascript" ev:event="DOMActivate">
  640. <![CDATA[
  641. if (checkOpener()) { // (common.js) 자신을 Open한 opener의 현재 UID가 자신을 open한 시점의 UID와 비교하여 변경되었는지 여부를 반환
  642. // if (grd_clsplist.rows > 1) {
  643. if (grd_clsplist.row > 0) { // 현재 선택된 row가 있다면
  644. // alert("btn_alter.dispatch = " + model.getValue("/root/main/item1/clsp/selectedrow"));
  645. // 현재 상세내역 내용을 특정내역 목록에서 선택된 row에 적용시킨 후 창을 닫는다.
  646. btn_alter.dispatch("DOMActivate");
  647. } else {
  648. // 특정내역 목록에 추가된 row가 한건도 없는 경우
  649. var spclcd = model.getValue("/root/main/item1/clsp/spclcd");
  650. var spclspec = model.getValue("/root/main/item1/clsp/spclspec");
  651. if (spclcd != "" && spclspec != "") {
  652. //alert(grd_clsplist.row); // -1
  653. btn_add.dispatch("DOMActivate");
  654. // alert("btn_add.dispatch = " + model.getValue("/root/main/item1/clsp/selectedrow"));
  655. }
  656. }
  657. model.removeNodeset("/root/hidden/clsp/rslt");
  658. model.makeNode("/root/hidden/clsp/rslt");
  659. // 특정내역 목록을 opener로 전달할 형태로 만든다.
  660. var cnt = 0;
  661. for (var i = 1; i < grd_clsplist.rows; i++) {
  662. var spclcd = model.getValue("/root/main/item1/clsp/list["+ i +"]/spclcd");
  663. var spclspec = model.getValue("/root/main/item1/clsp/list["+ i +"]/spclspec").getTrim();
  664. if (spclcd != "MX999" && spclcd != "JX999") {
  665. // 입력된 특정내역의 길이를 체크한다. (특정내역 필드 길이 = 1750 Byte 임)
  666. if (spclspec.isByteSize(1750) == false) { // (stringHelper.js) 문자열의 Byte 크기가 제한값을 벗어나는지 체크 (벗어나면 false 리턴)
  667. messageBox("특정내역 입력 제한길이(1750 Byte)를", "E003"); ///특정내역 입력 제한길이(1750 Byte)를 초과하였습니다
  668. return;
  669. }
  670. }
  671. var flag = model.getValue("/root/main/item1/clsp/list["+ i +"]/flag");
  672. var rownum = model.getValue("/root/main/item1/clsp/list["+ i +"]/rownum");
  673. if (flag == "D" && rownum == "") { // 팝업 화면에서 추가되고 또 삭제되어 opener에게 전달하지 않아도 되는 경우임
  674. }
  675. else if (flag) { // 변경사항 없는 내역을 제외한다.
  676. cnt++;
  677. var clodseqno = model.getValue("/root/main/item1/clsp/list["+ i +"]/clodseqno");
  678. var edilnno = model.getValue("/root/main/item1/clsp/list["+ i +"]/edilnno");
  679. var cdnm = model.getValue("/root/main/item1/clsp/list["+ i +"]/cdnm");
  680. var spclformat = model.getValue("/root/main/item1/clsp/list["+ i +"]/spclformat");
  681. var detldesc = model.getValue("/root/main/item1/clsp/list["+ i +"]/detldesc");
  682. var snglcalcscorcd = model.getValue("/root/main/item1/clsp/list["+ i +"]/snglcalcscorcd");
  683. var oldspclcd = model.getValue("/root/main/item1/clsp/list["+ i +"]/oldspclcd");
  684. var oldspclspec = model.getValue("/root/main/item1/clsp/list["+ i +"]/oldspclspec");
  685. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/flag", flag);
  686. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/rownum", rownum);
  687. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/clodseqno", clodseqno);
  688. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/edilnno", edilnno);
  689. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/spclcd", spclcd);
  690. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/cdnm", cdnm);
  691. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/spclspec", spclspec);
  692. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/spclformat", spclformat);
  693. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/detldesc", detldesc);
  694. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/snglcalcscorcd", snglcalcscorcd);
  695. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/oldspclcd", oldspclcd);
  696. model.makeValue("/root/hidden/clsp/rslt/list[" + cnt + "]/oldspclspec", oldspclspec);
  697. }
  698. }
  699. model.copyNode(opener.root.hidden.sppiz00500, "/root/hidden/clsp");
  700. } else {
  701. messageBox("상위화면이 변경되어 데이터를 전달할 수", "I004"); ///상위화면이 변경되어 데이터를 전달할 수 없습니다.
  702. }
  703. window.close(); // F5 실행시 IE를 종료시킨다.
  704. ]]>
  705. </script>
  706. </button>
  707. </group>
  708. </xhtml:body>
  709. </xhtml:html>