SMPIB00800_자동메모생성관리.xrw 66 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet href="../../../com/commonweb/css/common.css" type="text/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. <xhtml:head>
  5. <xhtml:title>JX999 자동생성</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <item1>
  11. <itematsu>
  12. </itematsu>
  13. </item1>
  14. <list1>
  15. <listatsu>
  16. <calcscorcd/>
  17. <calcscornm/>
  18. <diagcdfrom/>
  19. <diagnmfrom/>
  20. <diagcdto/>
  21. <diagnmto/>
  22. <ioflag/>
  23. <orddeptcd/>
  24. <fromdd/>
  25. <todd/>
  26. <spclcd/>
  27. <spclspec/>
  28. <seq/>
  29. <repday/>
  30. <changeflag/>
  31. </listatsu>
  32. </list1>
  33. <cdnmchk>
  34. <optcdnm/>
  35. <chkcnt/>
  36. </cdnmchk>
  37. <listrsltnm>
  38. <rsltnm>
  39. <hngnm/>
  40. <hngcnt/>
  41. </rsltnm>
  42. </listrsltnm>
  43. </main>
  44. <send>
  45. <grdlistatsu/>
  46. <savedata/>
  47. <reqdata>
  48. <srchkind/>
  49. <srch/>
  50. <mdldd/>
  51. <orddeptcd/>
  52. <delinclude/>
  53. <spclcd/>
  54. </reqdata>
  55. <finddata/>
  56. <list1>
  57. <listatsu>
  58. <basedd/>
  59. <diagcd/>
  60. <diagnm/>
  61. <selectedrdodiagkind/>
  62. </listatsu>
  63. </list1>
  64. <spclcdref>
  65. <calcscorcd/>
  66. <spclcd/>
  67. </spclcdref>
  68. </send>
  69. <init>
  70. <P0149list>
  71. <P0149>
  72. <cdnm>전체</cdnm>
  73. <cdid>-</cdid>
  74. </P0149>
  75. </P0149list>
  76. <spclcdlist>
  77. <spclcd>
  78. <cdid>JX999</cdid>
  79. <cdnm>JX999</cdnm>
  80. </spclcd>
  81. <spclcd>
  82. <cdid>MX999</cdid>
  83. <cdnm>MX999</cdnm>
  84. </spclcd>
  85. <spclcd>
  86. <cdid>MT015</cdid>
  87. <cdnm>MT015</cdnm>
  88. </spclcd>
  89. </spclcdlist>
  90. </init>
  91. <hidden>
  92. <listrsltnm>
  93. <rsltnm>
  94. <hngnm/>
  95. <hngcnt/>
  96. </rsltnm>
  97. </listrsltnm>
  98. <sppiz00400>
  99. <rslt>
  100. <diagcd/>
  101. <diagnm/>
  102. <diaghngnm/>
  103. <diagengnm/>
  104. </rslt>
  105. </sppiz00400>
  106. <sppiz00500/>
  107. <currentdate/>
  108. <spclspec/>
  109. <oldspclspec/>
  110. <seldeptlist>
  111. <selyn/>
  112. <deptcd/>
  113. <deptnm/>
  114. <oldselyn/>
  115. <calcscorcdkey/>
  116. <toddkey/>
  117. <seq/>
  118. </seldeptlist>
  119. <seldeptbase>
  120. <calcscorcd/>
  121. <calcscornm/>
  122. <calcscorcdkey/>
  123. <toddkey/>
  124. <seq/>
  125. <deptcd/>
  126. </seldeptbase>
  127. <sppiz00200>
  128. <cond>
  129. <clsp>
  130. <spclcd>MT015</spclcd>
  131. <seqno>0</seqno>
  132. <spclspec/>
  133. <rowstat>-</rowstat>
  134. </clsp>
  135. </cond>
  136. <rslt/>
  137. </sppiz00200>
  138. </hidden>
  139. <temp>
  140. <clsp>
  141. <snglcalcscorcd/>
  142. <edilnno/>
  143. <spclcd/>
  144. <spclspec/>
  145. <spclformat/>
  146. </clsp>
  147. </temp>
  148. </root>
  149. </instance>
  150. <!-- 진료과 공통코드 가져오기 -->
  151. <submission id="TRZBC00101" mediatype="application/x-www-form-urlencoded" method="post" replace="instance" add="bottom"/>
  152. <script type="javascript" ev:event="xforms-ready">
  153. <![CDATA[
  154. model.setValue("/root/hidden/currentdate", getCurrentDate()); // 현재 날짜를 얻어옴
  155. fInitialize();
  156. // Default 한줄 자동 생성 요청에 의해 추가 2008.08.28 - 김건기
  157. fAddRow();
  158. ]]>
  159. </script>
  160. <!--검색조건에 따른 조회 -->
  161. <submission id="TRPIB00801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/list1"/>
  162. <!-- 수가코드 갯수 및 코드명 가져오기 -->
  163. <submission id="TRPIB00802" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/hidden/listrsltnm"/>
  164. <!-- 상병코드 갯수 및 코드명 가져오기 -->
  165. <submission id="TRPIB00803" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/hidden/listrsltnm"/>
  166. <!-- 삽입, 수정, 삭제 -->
  167. <submission id="TXPIB00801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/savedata"/>
  168. <submission id="TRPAM00101" mediatype="application/x-www-form-urlencoded" method="post" resultref="/root/hidden/temp"/>
  169. </model>
  170. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  171. <script type="javascript" src="../../../com/commonweb/js/utilHelper.js"/>
  172. <script type="javascript" src="../../../com/commonweb/js/numericHelper.js"/>
  173. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  174. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  175. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  176. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  177. <script type="javascript" src="../../../pam/pamcomnweb/js/PAM.js"/>
  178. <script type="javascript">
  179. <![CDATA[
  180. // 화면 open시(와 초기화 버튼 클릭시) 화면 초기화 기능을 수행한다.
  181. function fInitialize() {
  182. grp_spclspec.visible = false;
  183. // 그리드 초기화
  184. model.removeNodeset("/root/main/list1/listatsu");
  185. // 각 인스턴스 초기화
  186. model.resetInstanceNode("/root/send/reqdata/srchkind");
  187. model.resetInstanceNode("/root/send/reqdata/srch");
  188. model.resetInstanceNode("/root/send/reqdata/mdldd");
  189. model.resetInstanceNode("/root/send/reqdata/orddeptcd");
  190. model.resetInstanceNode("/root/main/listrsltnm/rsltnm");
  191. model.resetInstanceNode("/root/main/cdnmchk/optcdnm");
  192. model.setValue("/root/send/reqdata/srchkind","-");
  193. model.setValue("/root/send/reqdata/delinclude","1");
  194. model.setValue("/root/send/reqdata/spclcd","JX999");
  195. model.setValue("/root/send/reqdata/mdldd",model.getValue("/root/hidden/currentdate"));
  196. // MT015 일때는 직접수정은 안되도록
  197. if ( model.getValue("/root/send/reqdata/spclcd") == "MT015" ) {
  198. grd_listatsu.colAttribute(grd_listatsu.colRef("spclspec"),"editable") = "false";
  199. } else {
  200. grd_listatsu.colAttribute(grd_listatsu.colRef("spclspec"),"editable") = "true";
  201. }
  202. // // 공통코드를 조회한다.
  203. // // (ZBC001.js) com.ZBCMCODE에서 기초코드 값을 가져와서 Combo 컨트롤 item으로 설정하기 위해 사용한다.
  204. // // P0149 : 진료과
  205. // zbcfGetCodeList(
  206. // new Array("P0149"),
  207. // new Array("/root/init/P0149list"));
  208. // 진료과 구하여 그 첫 라인에 '전체' 추가시키는 작업
  209. pamGetDeptCDDrIDList();
  210. model.makeValue("/root/hidden/orddeptcd/orddeptcdlist/cd","-");
  211. model.makeValue("/root/hidden/orddeptcd/orddeptcdlist/nm","전체");
  212. model.makeValue("/root/hidden/orddeptcd/orddeptcdlist/deptengabbgr","-");
  213. model.makeValue("/root/hidden/orddeptcd/orddeptcdlist/reqdeptno","-");
  214. copyNodeType("/root/init/orddeptcd","/root/hidden/orddeptcd","before");
  215. // 김용민 지저분해서 삭제
  216. model.removeNodeset("/root/init/orddrid");
  217. model.removeNodeset("/root/init/centcd");
  218. model.removeNodeset("/root/init/subdeptcd");
  219. // 김용민 추가 - 과별 선택기능을 위한 진료과 리스트 작업
  220. model.removeNodeset("/root/hidden/seldeptlist");
  221. for( i = 1; i <= model.getXPathValue( "count(/root/init/orddeptcd/orddeptcdlist)" ) ; i++ ) {
  222. model.makeNode("root/hidden/seldeptlist[" + i + "]/selyn");
  223. model.makeNode("root/hidden/seldeptlist[" + i + "]/deptcd");
  224. model.makeNode("root/hidden/seldeptlist[" + i + "]/deptnm");
  225. model.makeNode("root/hidden/seldeptlist[" + i + "]/oldselyn");
  226. model.makeNode("root/hidden/seldeptlist[" + i + "]/calcscorcdkey");
  227. model.makeNode("root/hidden/seldeptlist[" + i + "]/toddkey");
  228. model.makeNode("root/hidden/seldeptlist[" + i + "]/seq");
  229. model.setValue("/root/hidden/seldeptlist[" + i + "]/deptcd", model.getValue("/root/init/orddeptcd/orddeptcdlist[" + i + "]/cd") );
  230. model.setValue("/root/hidden/seldeptlist[" + i + "]/deptnm", model.getValue("/root/init/orddeptcd/orddeptcdlist[" + i + "]/nm") );
  231. }
  232. model.makeValue("/root/hidden/orddeptcd/orddeptcdlist/cd","");
  233. model.makeValue("/root/hidden/orddeptcd/orddeptcdlist/nm","");
  234. model.makeValue("/root/hidden/orddeptcd/orddeptcdlist/deptengabbgr","-");
  235. model.makeValue("/root/hidden/orddeptcd/orddeptcdlist/reqdeptno","-");
  236. copyNodeType("/root/init/orddeptcd","/root/hidden/orddeptcd","before");
  237. model.refresh();
  238. // 진료과 콤보박스 기본선택
  239. cmb_orddepcdt.select(0);
  240. // grd_listatsu의 정렬하기 위해 그리드 상단의 컬럼명에 sort정렬버튼을 보인다.
  241. grd_listatsu.explorerbar = "sortshow";
  242. }
  243. // 조회버튼 클릭시 검색조건이 알맞은지 검사한다.
  244. function fGetAutMemoCretList() {
  245. var cmb_srchkind = model.getValue("/root/send/reqdata/srchkind");
  246. var ipt_srch = model.getValue("/root/send/reqdata/srch");
  247. var ipt_mdldd = model.getValue("/root/send/reqdata/mdldd");
  248. var cmb_orddeptcd = model.getValue("/root/send/reqdata/orddeptcd");
  249. // 검색조건은 수가코드인데 세부코드를 입력하지 않았을 경우 오류메세지 출력
  250. if(cmb_srchkind == "0" && ipt_srch == ""){
  251. messageBox("수가코드를 입력하지","E007");
  252. return false;
  253. }
  254. // 검색조건은 상병코드인데 세부코드를 입력하지 않았을 경우 오류메세지 출력
  255. if(cmb_srchkind == "1" && ipt_srch == ""){
  256. messageBox("상병코드를 입력하지","E007");
  257. return false;
  258. }
  259. // 검색조건은 기준일인데 세부조건의 기준일를 입력하지 않았을 경우 오류메세지 출력
  260. if(cmb_srchkind == "2" && ipt_mdldd == ""){
  261. messageBox("기준일을 입력하지","E007");
  262. return false;
  263. }
  264. return true;
  265. }
  266. // 저장 버튼 클릭시 grid내용 check!!!
  267. function fChkAutMemoCretList() {
  268. if (grp_spclspec.visible == true) {
  269. messageBox("특정내역 창을 닫고 사용하세요","");
  270. return;
  271. }
  272. if (grp_dept_select.visible == true) {
  273. messageBox("진료과 선택창을 닫고 사용하세요","");
  274. return;
  275. }
  276. for( i = grd_listatsu.fixedRows; i < grd_listatsu.rows ; i++ ) {
  277. var rowstatus = grd_listatsu.rowStatus(i);
  278. if (rowstatus == 1 || rowstatus == 3) {
  279. var changeflag = model.getValue("/root/main/list1/listatsu[" + i + "]/changeflag");
  280. if (changeflag == "I") {
  281. grd_listatsu.rowStatus(i) = 0;
  282. }
  283. }
  284. }
  285. var updtdata = getGridUpdateData(grd_listatsu);
  286. // grid의 status의 상태가 변경(insert, update)된것이 있는지 확인한다.
  287. if (updtdata == "") {
  288. for( i = grd_listatsu.fixedRows; i < grd_listatsu.rows ; i++ ) {
  289. var changeflag = model.getValue("/root/main/list1/listatsu[" + i + "]/changeflag");
  290. if (changeflag == "I") {
  291. grd_listatsu.rowStatus(i) = 3;
  292. }
  293. }
  294. messageBox("변경된 데이터가","I004");
  295. return;
  296. }
  297. for(var i = 1 ; i < grd_listatsu.rows ; i++) {
  298. // 각 row마다 status를 확인한다.
  299. var status = grd_listatsu.rowStatus(i);
  300. // status의 상태를 확인한다(1:insert, 2:update, 3:insert&new)
  301. if(status == "1" || status == "2" || status =="3" ) {
  302. // 변경사항이 있는 각 row의 cell값을 변수에 저장한다.(calcscorcd:수가코드, diagcdfrom:시작상병코드, diagcdto:종료상병코드,orddeptcd:진료과코드, textcnts:메모)
  303. var calcscorcd = model.getValue("/root/main/list1/listatsu[" + i + "]/calcscorcd");
  304. var diagcdfrom = model.getValue("/root/main/list1/listatsu[" + i + "]/diagcdfrom");
  305. var diagcdto = model.getValue("/root/main/list1/listatsu[" + i + "]/diagcdto");
  306. var orddeptcd = model.getValue("/root/main/list1/listatsu[" + i + "]/orddeptcd");
  307. var spclcd = model.getValue("/root/main/list1/listatsu[" + i + "]/spclcd");
  308. var spclspec = model.getValue("/root/main/list1/listatsu[" + i + "]/spclspec");
  309. var seq = model.getValue("/root/main/list1/listatsu[" + i + "]/seq");
  310. var repday = model.getValue("/root/main/list1/listatsu[" + i + "]/repday");
  311. // 수가코드는 insert시 필수 입력, update시 변경불가.
  312. if (calcscorcd == ""){
  313. messageBox("수가코드는","I003");
  314. return false;
  315. }
  316. /* 필수 제외 요청에 따라 주석 처리 2007.08.28 - 김건기
  317. // 시작상병코드는 insert시 필수 입력.
  318. if(diagcdfrom == "") {
  319. messageBox("시작상병코드는","I003");
  320. return false;
  321. }
  322. // 종료상병코드를 입력하지 않았을 경우 종료상병코드는 시작상병코드가 된다.
  323. if(diagcdto == "") {
  324. model.setValue("/root/main/list1/listatsu[" + i + "]/diagcdto",diagcdfrom);
  325. diagcdto = diagcdfrom;
  326. }
  327. */
  328. // 시작상병코드와 종료상병코드의 길이를 구한다.
  329. var fromlength = diagcdfrom.length;
  330. var tolength = diagcdto.length;
  331. // 시작상병코드와 종료상병코드의 첫번째 자리를 구한다.
  332. var fromsubstring = diagcdfrom.substring(0, 1);
  333. var tosubstring = diagcdto.substring(0, 1);
  334. // 시작상병코드와 종료상병코드의 첫번째 자리를 제외한 나머지 자리를 구한다.
  335. var fromsubstringtwo = diagcdfrom.substring(1, fromlength);
  336. var tosubstringtwo = diagcdto.substring(1, tolength);
  337. // 시작상병코드와 종료상병코드를 정수형으로 변환한다.
  338. var fromparseint = parseInt(fromsubstringtwo, 10);
  339. var toparseint = parseInt(tosubstringtwo, 10);
  340. // 시작상병코드와 종료상병코드의 앞자리가 같을경우
  341. //if(fromsubstring == tosubstring){
  342. // 종료상병코드는 시작상병코드보다 앞설 수 없습니다.
  343. // if (fromparseint > toparseint) {
  344. // messageBox("종료상병코드가 시작상병코드 보다 앞설 수","I004");
  345. // return false;
  346. // }
  347. //}
  348. // 시작상병코드와 종료상병코드의 앞자리가 다를 경우
  349. //if( fromsubstring != tosubstring){
  350. // messageBox("시작상병코드와 종료상병코드의 대분류가","E004");
  351. // return false;
  352. //}
  353. /* 필수 제외 요청에 따라 주석 처리 2007.08.28 - 김건기
  354. // 진료과코드는 insert시 필수 입력.
  355. if(orddeptcd == "") {
  356. messageBox("진료과코드는","I003");
  357. return false;
  358. }
  359. */
  360. // 메모는 insert시 필수 입력
  361. if(spclcd == "") {
  362. messageBox("특정코드는","I003");
  363. return false;
  364. }
  365. // 메모는 insert시 필수 입력
  366. if(spclspec == "") {
  367. messageBox("특정내역은","I003");
  368. return false;
  369. }
  370. // 변경사항이 있는 각 row의 cell값을 변수에 저장한다.(fromdd:시작일자,todd:종료일자)
  371. var fromdd = model.getValue("/root/main/list1/listatsu[" + i + "]/fromdd");
  372. var todd = model.getValue("/root/main/list1/listatsu[" + i + "]/todd");
  373. // 현재 서버의 날짜를 yyyymmdd형태로 가지고 온다.
  374. var currentdate = model.getValue("/root/hidden/currentdate");
  375. //시작일자가 입력되지 않았을 경우 현재 일자가 시작일자가 된다.
  376. if (fromdd == "") {
  377. model.setValue("/root/main/list1/listatsu[" + i + "]/fromdd",currentdate)
  378. fromdd = currentdate;
  379. }
  380. /*
  381. if(status == "1" || status =="3" ) {
  382. // 시작일은 현재일 이전이 될 수 없습니다.
  383. if(fromdd < currentdate){
  384. messageBox("시작일은 현재일보다 앞설 수","I004");
  385. return false;
  386. }
  387. }
  388. */
  389. // insert시 종료일자가 입력되지 않았을 경우 '99991231'로 맞춘다.
  390. if ( todd == "" ){
  391. model.setValue("/root/main/list1/listatsu[" + i + "]/todd","99991231");
  392. todd = "99991231";
  393. }
  394. // 종료일자는 시작일자를 앞설 수 없다.
  395. if (fromdd > todd) {
  396. messageBox("종료일이 시작일보다 앞설 수","I004");
  397. return false;
  398. }
  399. // 종료일자는 시작일자를 앞설 수 없다.
  400. if (repday == "") {
  401. messageBox("기간은","I003");
  402. return false;
  403. }
  404. }
  405. }
  406. // updatedata를 savedata instance에 엎는다.
  407. model.setValue("/root/send/savedata",updtdata);
  408. return true;
  409. }
  410. function fIpt_mchrgcode() {
  411. if (model.getValue("/root/send/data1") != "") {
  412. if (ipt_mchrgcode.currentText.length > 1) {
  413. }else {
  414. messageBox("검색할 수가코드를 2글자 이상", "C001"); //검색할 수가코드를 2글자 이상 입력하십시오.
  415. }
  416. }else {
  417. messageBox("수가코드 검색 조건을", "C002"); //수가코드 검색 조건을 선택하십시오.
  418. }
  419. }
  420. // 데이터 삭제시 이루어지는 함수
  421. function fLineDel() {
  422. var del = messageBox("해당 데이터를 ", "Q001");
  423. // 데이터 삭제 확인시(위의 메세지 박스에서 예를 누르면 6 반환)
  424. if(del == 6){
  425. model.setValue("/root/send/savedata",grd_listatsu.getUpdateData());
  426. var rows = grd_listatsu.selectedRows;
  427. if (rows > 1) {
  428. submit("TXPIB00801");
  429. var controlSnw = document.controls("btn_search");
  430. controlSnw.dispatch("DOMActivate");
  431. } else {
  432. for(var i = 0; i<rows;i++){
  433. grd_listatsu.deleteitem(grd_listatsu.selectedrow(i));
  434. }
  435. submit("TXPIB00801");
  436. }
  437. messageBox("선택하신 데이터가 삭제","I001");
  438. //grd_listatsu.deleteitem(grd_listatsu.row);
  439. //messageBox("선택하신 데이터가 삭제","I001");
  440. }
  441. // 데이터 삭제 확인시(위의 메세지 박스에서 아니오를 누르면 7 반환)
  442. if(del == 7){
  443. for(var i = 0; i<grd_listatsu.selectedRows;i++){
  444. grd_listatsu.removeStatus(grd_listatsu.selectedrow(i), "delete");
  445. }
  446. }
  447. return true;
  448. }
  449. function fDiag() {
  450. var row = grd_listatsu.row;
  451. var col = grd_listatsu.col;
  452. // '-' 기호 null 로 처리
  453. if ( model.getValue("/root/main/list1/listatsu["+row+"]/diagcdfrom") == '-' ) {
  454. model.setValue("/root/main/list1/listatsu["+row+"]/diagcdfrom","");
  455. }
  456. model.setValue("/root/send/reqdata/srch",model.getValue("/root/main/list1/listatsu["+row+"]/diagcdfrom"));
  457. submit("TRPIB00803");
  458. var hngnm = model.getValue("/root/hidden/listrsltnm/rsltnm/hngnm");
  459. var hngcnt = model.getValue("/root/hidden/listrsltnm/rsltnm/hngcnt");
  460. // 쿼리된 결과가 한개일 경우 수행
  461. if(hngnm != ""){
  462. grd_listatsu.valueMatrix(row, grd_listatsu.colRef("diagnmfrom") ) = hngnm;
  463. var rowstatus = grd_listatsu.rowStatus(row);
  464. if (rowstatus == 1 || rowstatus == 3) {
  465. model.setValue("/root/main/list1/listatsu[" + row + "]/changeflag","U");
  466. }
  467. }
  468. // 쿼리된 결과가 한개가 아니거나 없는경우.
  469. if(hngnm == ""){
  470. model.setValue("/root/send/list1/listatsu/diagcd",model.getValue("/root/main/list1/listatsu["+row+"]/diagcdfrom"));
  471. grd_listatsu.valueMatrix(row, grd_listatsu.colRef("diagcdfrom")) = "-";
  472. grd_listatsu.valueMatrix(row, grd_listatsu.colRef("diagnmfrom") ) = "";
  473. fSearchDiag(); // 상병조회 팝업을 통하여 상병 조회
  474. // 서브밋을 위해 사용하엿던 컨트롤을 정리
  475. ipt_srch.value = "";
  476. }
  477. }
  478. function fDiagTwo() {
  479. var row = grd_listatsu.row;
  480. var col = grd_listatsu.col;
  481. // '-' 기호 null 로 처리
  482. if ( model.getValue("/root/main/list1/listatsu["+row+"]/diagcdto") == '-' ) {
  483. model.setValue("/root/main/list1/listatsu["+row+"]/diagcdto","");
  484. }
  485. model.setValue("/root/send/reqdata/srch",model.getValue("/root/main/list1/listatsu["+row+"]/diagcdto"));
  486. submit("TRPIB00803");
  487. var hngnm = model.getValue("/root/hidden/listrsltnm/rsltnm/hngnm");
  488. var hngcnt = model.getValue("/root/hidden/listrsltnm/rsltnm/hngcnt");
  489. // 쿼리된 결과가 1개인 경우
  490. if(hngnm != ""){
  491. grd_listatsu.valueMatrix(row, grd_listatsu.colRef("diagnmto") ) = hngnm;
  492. var rowstatus = grd_listatsu.rowStatus(row);
  493. if (rowstatus == 1 || rowstatus == 3) {
  494. model.setValue("/root/main/list1/listatsu[" + row+ "]/changeflag","U");
  495. }
  496. }
  497. if(hngnm == ""){
  498. model.setValue("/root/send/list1/listatsu/diagcd",model.getValue("/root/main/list1/listatsu["+row+"]/diagcdto"));
  499. grd_listatsu.valueMatrix(row, grd_listatsu.colRef("diagcdto") ) = "-";
  500. grd_listatsu.valueMatrix(row, grd_listatsu.colRef("diagnmto") ) = "";
  501. fSearchDiag(); // 상병조회 팝업을 통하여 상병 조회
  502. // 서브밋을 위해 사용하엿던 컨트롤을 정리
  503. ipt_srch.value = "";
  504. }
  505. }
  506. // 상병명 조회시 데이터가 1개 이상일경우 및 없을시 상병조회 창을 띄운다.
  507. function fSearchDiag() {
  508. // 여기부터는 상병코드 조회 프로그램 사용자와 상의 후 작성
  509. var trgtManWindow = getChildWindow("SPPIZ00400"); // 상병 조회
  510. if (trgtManWindow == null) {
  511. var today = new Date();
  512. var syear = today.getDateFormat("YYYY"); // (dateHelper.js)에서 제공하는 함수를 사용하여 해당 년를 구한다.
  513. var smonth = today.getDateFormat("MM");
  514. var sday = today.getDateFormat("DD");
  515. model.setValue("/root/send/list1/listatsu/basedd", syear + smonth + sday);
  516. model.setValue("/root/send/list1/listatsu/selectedrdodiagkind","1"); // ICD10으로 고정
  517. modal("SPPIZ00400" ,"", "10", "10", "SPPIZ00400", "/root/send/list1/listatsu", "/root/init", "", "");
  518. } else {
  519. trgtManWindow.javascript.fSearchDiag();
  520. activateChild("SPPIZ00400");
  521. }
  522. model.refresh();
  523. }
  524. // 상병조회 팝업에서 상병을 더블클릭 했을경우 상병 그리드에 반영
  525. function fSetDiagCdNm() {
  526. // 검색창에서 상병코드를 검색했을 경우에 검색창부분에 반영
  527. //if(grd_listatsu.col == -1){
  528. if(cmb_srchkind.value == "1"){
  529. var diagcd = model.getValue("/root/hidden/sppiz00400/rslt/diagcd");
  530. var diaghngnm = model.getValue("/root/hidden/sppiz00400/rslt/diaghngnm");
  531. model.refresh();
  532. model.setValue("/root/send/reqdata/srch", diagcd);
  533. model.setValue("/root/main/cdnmchk/optcdnm", diaghngnm);
  534. //opt_nm.value= model.getValue("/root/hidden/sppiz00400/rslt/diaghngnm");
  535. }
  536. //}
  537. // 시작상병코드와 명을 반영
  538. if(grd_listatsu.col == grd_listatsu.colRef("diagcdfrom")){
  539. var diagcd = model.getValue("/root/hidden/sppiz00400/rslt/diagcd");
  540. var diaghngnm = model.getValue("/root/hidden/sppiz00400/rslt/diaghngnm");
  541. model.refresh();
  542. model.setValue("/root/main/list1/listatsu["+grd_listatsu.row+"]/diagcdfrom", diagcd);
  543. model.setValue("/root/main/list1/listatsu["+grd_listatsu.row+"]/diagnmfrom", diaghngnm);
  544. if (diagcd != "") {
  545. var rowstatus = grd_listatsu.rowStatus(grd_listatsu.row);
  546. if (rowstatus == 1 || rowstatus == 3) {
  547. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/changeflag","U");
  548. }
  549. }
  550. }
  551. // 종료상병코드와 명을 반영
  552. if(grd_listatsu.col == grd_listatsu.colRef("diagcdto")){
  553. var diagcd = model.getValue("/root/hidden/sppiz00400/rslt/diagcd");
  554. var diaghngnm = model.getValue("/root/hidden/sppiz00400/rslt/diaghngnm");
  555. model.refresh();
  556. model.setValue("/root/main/list1/listatsu["+grd_listatsu.row+"]/diagcdto", diagcd);
  557. model.setValue("/root/main/list1/listatsu["+grd_listatsu.row+"]/diagnmto", diaghngnm);
  558. if (diagcd != "") {
  559. var rowstatus = grd_listatsu.rowStatus(grd_listatsu.row);
  560. if (rowstatus == 1 || rowstatus == 3) {
  561. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/changeflag","U");
  562. }
  563. }
  564. }
  565. model.refresh();
  566. }
  567. // 특정코드 팝업창 띄우기
  568. function fSearchSpcl() {
  569. // *특정코드과 특정내역을 입력하기 위한 특정내역관리 창을 연다.*
  570. // grid의 특정코드컬럼 부분인 10번째 컬럼일 경우...
  571. if(grd_listatsu.col == grd_listatsu.colRef("spclcd") || grd_listatsu.col == grd_listatsu.colRef("spclspec") ){
  572. var spclcd = model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/spclcd");
  573. var spclspec = model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/spclspec");
  574. // 특정코드와 특정내역의 값이 없을경우(첫입력일경우)
  575. if(spclcd == "" && spclspec == ""){
  576. // 그냥 팝업창을 띄운다.
  577. modal("SPPIZ00500" ,"", "10", "10", "SPPIZ00500", "", "", "", "");
  578. // 팝업창에서 입력된 내용을 grid에 넣어준다.
  579. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/spclcd", model.getValue("/root/hidden/sppiz00500/rslt/spclcd"));
  580. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/spclspec", model.getValue("/root/hidden/sppiz00500/rslt/spclspec"));
  581. }
  582. // 특정코드와 특정내역의 값이 있을경우(수정일경우)
  583. if(spclcd != "" && spclspec != ""){
  584. // 임의의 인스턴스를 만들어 해당 특정코드와 특정내역을 넣어놓는다.
  585. model.setValue("/root/temp/clsp/spclcd", model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row+ "]/spclcd"));
  586. model.setValue("/root/temp/clsp/spclspec", model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row+ "]/spclspec"));
  587. // 팝업창을 열고 임의의 인스턴스의 값을 팝업창 내부의 해당 인스턴스와 매칭시킨다.
  588. modal("SPPIZ00500" ,"", "10", "10", "SPPIZ00500","/root/temp/clsp","/root/hidden/clsp/cond", "", "");
  589. // 팝업창에서 입력된 내용을 grid에 넣어준다.
  590. var scd = model.getValue("/root/hidden/sppiz00500/rslt/spclcd");
  591. var smemo = model.getValue("/root/hidden/sppiz00500/rslt/spclspec");
  592. if(scd != "" && smemo != ""){
  593. var spclcd = model.getValue("/root/hidden/sppiz00500/rslt/spclcd");
  594. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/spclcd", spclcd);
  595. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/spclspec", model.getValue("/root/hidden/sppiz00500/rslt/spclspec"));
  596. if (spclcd !="") {
  597. var rowstatus = grd_listatsu.rowStatus(grd_listatsu.row);
  598. if (rowstatus == 1 || rowstatus == 3) {
  599. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/changeflag","U");
  600. }
  601. }
  602. }
  603. }
  604. }
  605. }
  606. function fCalcscorcd() {
  607. var row = grd_listatsu.row;
  608. var col = grd_listatsu.col;
  609. var tmpcalcscorcd = model.getValue("/root/send/reqdata/srch"); // 잠시백업
  610. model.setValue("/root/send/reqdata/srch",model.getValue("/root/main/list1/listatsu["+row+"]/calcscorcd"));
  611. submit("TRPIB00802");
  612. var hngnm = model.getValue("/root/hidden/listrsltnm/rsltnm/hngnm");
  613. var hngcnt = model.getValue("/root/hidden/listrsltnm/rsltnm/hngcnt");
  614. // 조회된 쿼리가 한개인경우
  615. if(hngnm != ""){
  616. grd_listatsu.valueMatrix(row, grd_listatsu.colRef("calcscornm") ) = hngnm;
  617. }
  618. // 조회된 쿼리가 한개가 아니거나 없는경우.
  619. if(hngnm == ""){
  620. grd_listatsu.valueMatrix(row, grd_listatsu.colRef("calcscornm") ) = "";
  621. fSearchCalcscorcd("grid"); // 수가조회 팝업을 통하여 수가명 조회
  622. // 서브밋을 위해 사용하엿던 컨트롤을 정리
  623. //model.setValue("/root/send/reqdata/srch","");
  624. //ipt_srch.value = "";
  625. model.setValue("/root/send/reqdata/srch",tmpcalcscorcd); // 원상복구
  626. model.refresh();
  627. }
  628. }
  629. // 수가조회 팝업에서 수가코드를 더블클릭 했을경우 수가 그리드에 반영
  630. function fSearchCalcscorcd(inputFlag) {
  631. // 수가조회 팝업.. 팝업창의 /root/temp에 /root/send/reqdata/srch값을 넣어준다.
  632. modal("SMPIC00200" ,"", "10", "10", "SMPIC00200", "/root/send/reqdata/srch", "/root/temp", "", "");
  633. // grid에서 검색한것이 아니라 ipt에서 검색했을때..
  634. //if(cmb_srchkind.value == "0") {
  635. if ( inputFlag == "ipt" ) {
  636. var calcscorcd = model.getValue("/root/temp/picmmech/picmmech_calcscorcd");
  637. var hngnm = model.getValue("/root/temp/picmmech/picmmech_hngnm");
  638. model.refresh();
  639. model.setValue("/root/send/reqdata/srch", calcscorcd);
  640. model.setValue("/root/main/cdnmchk/optcdnm", hngnm);
  641. }
  642. // 그리드에서 수가코드인 col이 '1'일때.
  643. //if(grd_listatsu.col == 1){
  644. if ( inputFlag == "grid" ) {
  645. var calcscorcd = model.getValue("/root/temp/picmmech/picmmech_calcscorcd");
  646. var calcscornm = model.getValue("/root/temp/picmmech/picmmech_hngnm");
  647. model.refresh();
  648. model.setValue("/root/main/list1/listatsu["+ grd_listatsu.row +"]/calcscorcd", calcscorcd);
  649. model.setValue("/root/main/list1/listatsu["+ grd_listatsu.row +"]/calcscornm", calcscornm);
  650. if (calcscorcd != "") {
  651. var rowstatus = grd_listatsu.rowStatus(grd_listatsu.row);
  652. if (rowstatus == 1 || rowstatus == 3) {
  653. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/changeflag","U");
  654. }
  655. }
  656. }
  657. model.refresh();
  658. }
  659. function fGetCodeNm() {
  660. // 검색조건을 선택하지 않고 inputbutton을 클릭하였을 경우..
  661. if(cmb_srchkind.value == '-'){
  662. messageBox("검색조건을","C002");
  663. }
  664. // 수가코드 선택
  665. if (cmb_srchkind.value == '0'){
  666. // 수가명을 가져오는 submission을 수행한다.
  667. var srch = model.getValue("/root/send/reqdata/srch");
  668. submit("TRPIB00802");
  669. model.setValue("/root/send/reqdata/srch", srch);
  670. }
  671. // 상병코드 선택
  672. if (cmb_srchkind.value == '1'){
  673. // 상병명을 가져오는 sumission을 수행한다.
  674. var srch = model.getValue("/root/send/reqdata/srch");
  675. submit("TRPIB00803");
  676. model.setValue("/root/send/reqdata/srch", srch);
  677. }
  678. var hngnm = model.getValue("/root/hidden/listrsltnm/rsltnm/hngnm");
  679. var hngcnt = model.getValue("/root/hidden/listrsltnm/rsltnm/hngcnt");
  680. // 쿼리갯수가 1개일 경우
  681. if(hngcnt == '1'){
  682. opt_nm.value= hngnm;
  683. }
  684. // 쿼리값이 한개가 아닌경우(한개도 없거나, 1개이상이거나)
  685. if(hngcnt !== '1'){
  686. // 조건분류가 수가코드이면...
  687. if(cmb_srchkind.value == '0'){
  688. fSearchCalcscorcd("ipt"); // 수가코드 조회 창을 띄운다.
  689. }
  690. // 조건분류가 상병코드이면...
  691. if(cmb_srchkind.value == '1'){
  692. model.setValue("/root/send/list1/listatsu/diagcd",ipt_srch.value);
  693. fSearchDiag(); // 상병코드 조회창을 띄운다.
  694. }
  695. }
  696. }
  697. function fMovCol() {
  698. var col = grd_listatsu.col;
  699. if(col == grd_listatsu.colRef("calcscorcd")){
  700. grd_listatsu.col = grd_listatsu.colRef("diagcdfrom");
  701. //grd_listatsu.editCell();
  702. } else if(col == grd_listatsu.colRef("diagcdfrom")) {
  703. grd_listatsu.col = grd_listatsu.colRef("diagcdto");
  704. //grd_listatsu.editCell();
  705. } else if(col==grd_listatsu.colRef("diagcdto")) {
  706. grd_listatsu.col = grd_listatsu.colRef("spclspec");
  707. }
  708. }
  709. function fDelRow() {
  710. var rows = grd_listatsu.rows;
  711. for(var i = 1; i <= rows; i++){
  712. var todd = model.getValue("/root/main/list1/listatsu[" + i + "]/todd");
  713. var currentdate = model.getValue("/root/hidden/currentdate");
  714. if(todd <= currentdate){
  715. grd_listatsu.rowStyle(i,"all","color") = "#FF0000";
  716. grd_listatsu.isReadOnly(i, 1, i, 13) = true;
  717. } else {
  718. grd_listatsu.rowStyle(i,"all","color") = "#000000";
  719. grd_listatsu.isReadOnly(i, 1, i, 13) = false;
  720. }
  721. }
  722. }
  723. function fAddRow() {
  724. grd_listatsu.AddRow(true, true);
  725. /*
  726. var today = getCurrentDate(); // 현재 날짜를 얻어옴
  727. */
  728. var today = model.getValue("/root/hidden/currentdate");
  729. // 행추가후 기본적인 data를 넣어준다(default 값)
  730. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/diagcdfrom", "-");
  731. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/diagcdto", "-");
  732. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/fromdd", today);
  733. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/todd", "99991231");
  734. //model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/spclcd", "JX999");
  735. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/spclcd", model.getValue("/root/send/reqdata/spclcd"));
  736. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/spclspec", "");
  737. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/ioflag", "A");
  738. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/orddeptcd", "-");
  739. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/repday", "0");
  740. model.makeNode("/root/main/list1/listatsu[" + grd_listatsu.row+ "]/changeflag");
  741. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+ "]/changeflag","I");
  742. grd_listatsu.select(grd_listatsu.row, grd_listatsu.colRef("calcscorcd"), grd_listatsu.row, grd_listatsu.colRef("seq")) = true;
  743. }
  744. // 김용민 ... 진료과 선택창 띄위기전에 초기작업을 한다.
  745. function fSelectDeptInit() {
  746. model.setValue("/root/hidden/seldeptbase/calcscorcd", model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/calcscorcd") );
  747. model.setValue("/root/hidden/seldeptbase/calcscornm", model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/calcscornm") );
  748. model.setValue("/root/hidden/seldeptbase/calcscorcdkey",model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/calcscorcdkey") );
  749. model.setValue("/root/hidden/seldeptbase/toddkey", model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/toddkey") );
  750. model.setValue("/root/hidden/seldeptbase/seq", model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/seq") );
  751. model.setValue("/root/hidden/seldeptbase/deptcd", model.getValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/orddeptcd") );
  752. // 일단 기존꺼 지우고
  753. //for( i = 1; i <= model.getXPathValue( "count(/root/init/orddeptcd/orddeptcdlist)" ) ; i++ ) {
  754. for( i = 1; i <= model.getXPathValue( "count(/root/hidden/seldeptlist)" ) ; i++ ) {
  755. model.setValue("/root/hidden/seldeptlist[" + i + "]/selyn", "false" );
  756. model.setValue("/root/hidden/seldeptlist[" + i + "]/oldselyn", "false" );
  757. model.setValue("/root/hidden/seldeptlist[" + i + "]/calcscorcdkey", "" );
  758. model.setValue("/root/hidden/seldeptlist[" + i + "]/toddkey", "" );
  759. model.setValue("/root/hidden/seldeptlist[" + i + "]/seq", "" );
  760. grd_seldeptlist.clearStatus();
  761. }
  762. for( i = grd_listatsu.fixedRows; i < grd_listatsu.rows ; i++ ) {
  763. if ( model.getValue("/root/hidden/seldeptbase/calcscorcdkey") == model.getValue("/root/main/list1/listatsu[" + i + "]/calcscorcdkey") ) {
  764. var tmpDeptcd = model.getValue("/root/main/list1/listatsu[" + i + "]/orddeptcd");
  765. for( j = grd_seldeptlist.fixedRows; j < grd_seldeptlist.rows ; j++ ) {
  766. if ( tmpDeptcd == grd_seldeptlist.valueMatrix(j,1) ) {
  767. model.setValue("/root/hidden/seldeptlist[" + j + "]/selyn","true");
  768. model.setValue("/root/hidden/seldeptlist[" + j + "]/oldselyn","true");
  769. model.setValue("/root/hidden/seldeptlist[" + j + "]/calcscorcdkey",model.getValue("/root/main/list1/listatsu[" + i + "]/calcscorcdkey") );
  770. model.setValue("/root/hidden/seldeptlist[" + j + "]/toddkey",model.getValue("/root/main/list1/listatsu[" + i + "]/toddkey") );
  771. model.setValue("/root/hidden/seldeptlist[" + j + "]/seq",model.getValue("/root/main/list1/listatsu[" + i + "]/seq") );
  772. }
  773. }
  774. }
  775. }
  776. model.refresh();
  777. }
  778. // 김용민 ... 진료과 선택창 완료시 체크
  779. function fSelectDeptChk() {
  780. var changecnt = 0;
  781. var alldept = 0;
  782. var etcdept = 0;
  783. for( i = grd_seldeptlist.fixedRows; i < grd_seldeptlist.rows ; i++ ) {
  784. if ( model.getValue("/root/hidden/seldeptlist[" + i + "]/selyn") != model.getValue("/root/hidden/seldeptlist[" + i + "]/oldselyn") )
  785. {
  786. changecnt++;
  787. }
  788. if ( model.getValue("/root/hidden/seldeptlist[" + i + "]/selyn") == "true" ) {
  789. if ( model.getValue("/root/hidden/seldeptlist[" + i + "]/deptcd") == "-" ) {
  790. alldept++;
  791. } else {
  792. etcdept++;
  793. }
  794. }
  795. }
  796. if ( changecnt == 0 ) {
  797. messageBox("변경된 데이터가","I004");
  798. return false;
  799. }
  800. if ( alldept != 0 && etcdept != 0 ) {
  801. messageBox("전체과와 타과를 같이 선택할수","I004");
  802. return false;
  803. }
  804. if ( alldept == 0 && etcdept == 0 ) {
  805. messageBox("선택된 진료과가 하나도","I004");
  806. return false;
  807. }
  808. return true;
  809. }
  810. // 김용민 - 선택된 진료과를 입력한다.
  811. function fSelectDeptInput() {
  812. // 빈 신규입력 줄 삭제
  813. for( i = grd_seldeptlist.fixedRows; i < grd_seldeptlist.rows ; i++ ) {
  814. if ( model.getValue("root/main/list1/listatsu[" + i + "]/calcscorcd") == ""
  815. && model.getValue("root/main/list1/listatsu[" + i + "]/calcscorcdkey") == ""
  816. && model.getValue("root/main/list1/listatsu[" + i + "]/toddkey") == ""
  817. && model.getValue("root/main/list1/listatsu[" + i + "]/seq") == ""
  818. ) {
  819. var rowstatus = grd_listatsu.rowStatus(i);
  820. if (rowstatus == 1 || rowstatus == 3) {
  821. var changeflag = model.getValue("/root/main/list1/listatsu[" + i + "]/changeflag");
  822. if (changeflag == "I") {
  823. grd_listatsu.rowStatus(i) = 0;
  824. }
  825. }
  826. //grd_listatsu.deleteItem(i);
  827. grd_listatsu.deleteRow(i,false);
  828. }
  829. }
  830. // 신규입력 먼저 체크
  831. for( i = grd_seldeptlist.fixedRows; i < grd_seldeptlist.rows ; i++ ) {
  832. if ( model.getValue("root/hidden/seldeptlist[" + i + "]/selyn") == "true"
  833. && model.getValue("root/hidden/seldeptlist[" + i + "]/oldselyn") == "false"
  834. ) {
  835. var jobrow = 0;
  836. for ( j = grd_listatsu.fixedRows; j < grd_listatsu.rows; j++) {
  837. if ( model.getValue("root/main/list1/listatsu[" + j + "]/calcscorcd") == model.getValue("root/hidden/seldeptbase/calcscorcd")
  838. && model.getValue("root/main/list1/listatsu[" + j + "]/orddeptcd") == model.getValue("root/hidden/seldeptbase/deptcd")
  839. && model.getValue("root/main/list1/listatsu[" + j + "]/calcscorcdkey") == model.getValue("root/hidden/seldeptbase/calcscorcdkey")
  840. && model.getValue("root/main/list1/listatsu[" + j + "]/toddkey") == model.getValue("root/hidden/seldeptbase/toddkey")
  841. && model.getValue("root/main/list1/listatsu[" + j + "]/seq") == model.getValue("root/hidden/seldeptbase/seq")
  842. && jobrow == 0 // 처음한번만 조회
  843. ) {
  844. jobrow = j;
  845. break;
  846. }
  847. }
  848. if ( jobrow > 0 && jobrow < grd_listatsu.rows ) { // 신규입력
  849. grd_listatsu.AddRow(false,false);
  850. model.copyNode("/root/main/list1/listatsu[" + grd_listatsu.row + "]","/root/main/list1/listatsu[" + jobrow +"]");
  851. model.makeNode("/root/main/list1/listatsu[" + grd_listatsu.row + "]/changeflag");
  852. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/changeflag","U");
  853. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row + "]/orddeptcd",model.getValue("root/hidden/seldeptlist["+ i +"]/deptcd"));
  854. }
  855. }
  856. }
  857. // 삭제 체크
  858. for( i = grd_seldeptlist.fixedRows; i < grd_seldeptlist.rows ; i++ ) {
  859. if ( model.getValue("root/hidden/seldeptlist[" + i + "]/selyn") == "false"
  860. && model.getValue("root/hidden/seldeptlist[" + i + "]/oldselyn") == "true"
  861. ) {
  862. var jobrow = 0;
  863. for ( j = grd_listatsu.fixedRows; j < grd_listatsu.rows; j++) {
  864. if ( model.getValue("root/main/list1/listatsu[" + j + "]/calcscorcd") == model.getValue("root/hidden/seldeptbase/calcscorcd")
  865. && model.getValue("root/main/list1/listatsu[" + j + "]/orddeptcd") == model.getValue("root/hidden/seldeptlist["+ i +"]/deptcd")
  866. && model.getValue("root/main/list1/listatsu[" + j + "]/calcscorcdkey") == model.getValue("root/hidden/seldeptlist["+ i +"]/calcscorcdkey")
  867. && model.getValue("root/main/list1/listatsu[" + j + "]/toddkey") == model.getValue("root/hidden/seldeptlist["+ i +"]/toddkey")
  868. && model.getValue("root/main/list1/listatsu[" + j + "]/seq") == model.getValue("root/hidden/seldeptlist["+ i +"]/seq")
  869. ) {
  870. jobrow = j;
  871. break;
  872. }
  873. }
  874. if ( jobrow > 0 && jobrow < grd_listatsu.rows ) { // 삭제
  875. var rowstatus = grd_listatsu.rowStatus(jobrow);
  876. if (rowstatus == 1 || rowstatus == 3) {
  877. var changeflag = model.getValue("/root/main/list1/listatsu[" + jobrow + "]/changeflag");
  878. if (changeflag == "I") {
  879. grd_listatsu.rowStatus(jobrow) = 0;
  880. }
  881. }
  882. //grd_listatsu.deleteItem(jobrow);
  883. grd_listatsu.deleteRow(jobrow,false);
  884. }
  885. }
  886. }
  887. model.refresh(); // 작업완료 refresh
  888. }
  889. // 김용민 - 화면 display 버튼 사용여부 제어
  890. function fSetDisplayDisable(iFlag) {
  891. if ( iFlag == true ) {
  892. grd_listatsu.disabled = true;
  893. btn_search.disabled = true;
  894. bbt_save.disabled = true;
  895. bbt_init.disabled = true;
  896. btn_sel_dept.disabled = true;
  897. btn_excel.disabled = true;
  898. btn_addrow.disabled = true;
  899. btn_delrow.disabled = true;
  900. btn_copyrow.disabled = true;
  901. } else {
  902. grd_listatsu.disabled = false;
  903. btn_search.disabled = false;
  904. bbt_save.disabled = false;
  905. bbt_init.disabled = false;
  906. btn_sel_dept.disabled = false;
  907. btn_excel.disabled = false;
  908. btn_addrow.disabled = false;
  909. btn_delrow.disabled = false;
  910. btn_copyrow.disabled = false;
  911. }
  912. }
  913. // 김용민 - 화면 display 버튼 사용여부 제어
  914. function fSelectList() {
  915. var srchcond = model.getValue("/root/send/reqdata/srchkind")
  916. var srch = model.getValue("/root/send/reqdata/srch")
  917. // 그리드 초기화
  918. model.removeNodeset("/root/main/list1/listatsu");
  919. grd_listatsu.refresh();
  920. // 모든 내역을 확인하고 싶을때..(검색조건이 전체일때)
  921. if(srchcond == "-" ){
  922. submit("TRPIB00801");
  923. fAddRow();
  924. }
  925. // 각 조건별로 검색하고 싶을때..(검색조건이 전체가 아닌 다른경우)
  926. if(srchcond != "-"){
  927. // 검색조건의 입력여부를 확인 후 submit한다.
  928. if(fGetAutMemoCretList()) {
  929. submit("TRPIB00801");
  930. fAddRow();
  931. }
  932. }
  933. }
  934. ]]>
  935. </script>
  936. </xhtml:head>
  937. <xhtml:body guideline="1,1211;2,784;1,0;1,0;">
  938. <group id="group3" scroll="auto" style="left:0px; top:13px; width:1200px; height:717px; ">
  939. <group id="group2" scroll="auto" style="left:0px; top:10px; width:1200px; height:45px; vertical-align:top; ">
  940. <shape id="roundrect1" appearance="roundrect" style="left:0px; top:0px; width:1200px; height:40px; "/>
  941. <caption id="caption2" class="search_name" style="left:5px; top:10px; width:81px; height:17px; ">검색조건 :</caption>
  942. <button id="btn_search" class="btn1_letter2" navindex="4" style="left:1137px; top:10px; width:56px; height:22px; ">
  943. <caption>조회</caption>
  944. <script type="javascript" ev:event="DOMActivate">
  945. <![CDATA[
  946. fSelectList();
  947. ]]>
  948. </script>
  949. </button>
  950. <line id="line13" class="line_4" style="x1:1129px; y1:9px; x2:1129px; y2:31px; "/>
  951. <input id="ipt_mdldd" ref="/root/send/reqdata/mdldd" class="input_date" visibility="hidden" inputtype="date" required="false" appearance="input" style="left:167px; top:10px; width:94px; height:19px; "/>
  952. <input id="ipt_srch" ref="/root/send/reqdata/srch" class="input_search" navindex="2" imemode="disabled" inputtype="button" required="false" _chartype="upper" appearance="input" style="left:167px; top:10px; width:94px; height:19px; ">
  953. <script type="javascript" ev:event="onbuttonclick">
  954. <![CDATA[
  955. fGetCodeNm();
  956. ]]>
  957. </script>
  958. <script type="javascript" ev:event="onkeyup">
  959. <![CDATA[
  960. inputEnterKey("btn_search", "DOMActivate");
  961. ]]>
  962. </script>
  963. </input>
  964. <select1 id="cmb_srchkind" ref="/root/send/reqdata/srchkind" class="combo_search" navindex="1" appearance="minimal" style="left:89px; top:10px; width:75px; height:19px; ">
  965. <choices>
  966. <item>
  967. <label>전체</label>
  968. <value>-</value>
  969. </item>
  970. <item>
  971. <label>수가코드</label>
  972. <value>0</value>
  973. </item>
  974. <item>
  975. <label>상병코드</label>
  976. <value>1</value>
  977. </item>
  978. <item>
  979. <label>기준일</label>
  980. <value>2</value>
  981. </item>
  982. </choices>
  983. <script type="javascript" ev:event="xforms-select">
  984. <![CDATA[
  985. // 검색분류에 따라 수가 및 상병코드일때는 ipt_srch가 보이고, 기준일이면, ipt_mdldd가 보인다.
  986. if (model.getValue("/root/send/reqdata/srchkind") == '2'){
  987. ipt_mdldd.visible = true;
  988. ipt_srch.visible = false;
  989. } else if (model.getValue("/root/send/reqdata/srchkind") == '0' || model.getValue("/root/send/reqdata/srchkind") == '1' ) {
  990. ipt_mdldd.visible = false;
  991. ipt_srch.visible = true;
  992. } else {
  993. // 전체 선택되면 우측 입력필드 내용 지움
  994. model.setValue("/root/send/reqdata/srch", "");
  995. model.refresh();
  996. }
  997. ]]>
  998. </script>
  999. <script type="javascript" ev:event="xforms-value-changed">
  1000. <![CDATA[
  1001. // 검색조건이 변화가 발생했을 경우 코드창과 코드명창을 초기화한다.
  1002. // opt_nm.value="";
  1003. // ipt_srch.value = "";
  1004. // model.resetInstanceNode("/root/send/reqdata/srch");
  1005. // model.resetInstanceNode("/root/main/cdnmchk/optcdnm");
  1006. model.resetInstanceNode("/root/temp/picmmech");
  1007. ]]>
  1008. </script>
  1009. </select1>
  1010. <caption id="caption3" class="search_name" style="left:521px; top:12px; width:74px; height:17px; ">진료과 :</caption>
  1011. <select1 id="cmb_orddepcdt" ref="/root/send/reqdata/orddeptcd" class="combo_search" navindex="3" appearance="minimal" style="left:595px; top:12px; width:100px; height:19px; ">
  1012. <choices>
  1013. <!-- ZBC001.js에서 가져온 P0149(진료과코드)를 select에 뿌려준다.-->
  1014. <itemset nodeset="/root/init/orddeptcd/orddeptcdlist">
  1015. <label ref="nm"/>
  1016. <value ref="cd"/>
  1017. </itemset>
  1018. </choices>
  1019. <script type="javascript" ev:event="onkeyup">
  1020. <![CDATA[
  1021. inputEnterKey("btn_search", "DOMActivate");
  1022. ]]>
  1023. </script>
  1024. </select1>
  1025. <output id="opt_nm" ref="/root/main/cdnmchk/optcdnm" style="left:267px; top:10px; width:245px; height:19px; "/>
  1026. <caption id="caption4" class="search_name" style="left:715px; top:13px; width:75px; height:17px; ">종료건 :</caption>
  1027. <select1 id="rdo_delinclude" ref="/root/send/reqdata/delinclude" appearance="full" cellspacing="5" cols="2" overflow="visible" style="left:790px; top:14px; width:105px; height:15px; border-style:none; ">
  1028. <choices>
  1029. <item>
  1030. <label>포함</label>
  1031. <value>1</value>
  1032. </item>
  1033. <item>
  1034. <label>미포함</label>
  1035. <value>2</value>
  1036. </item>
  1037. </choices>
  1038. </select1>
  1039. <caption id="caption7" class="search_name" style="left:916px; top:14px; width:90px; height:17px; ">특정코드 :</caption>
  1040. <select1 id="radio1" ref="/root/send/reqdata/spclcd" appearance="full" cellspacing="5" cols="2" overflow="visible" style="left:1003px; top:15px; width:120px; height:15px; border-style:none; ">
  1041. <choices>
  1042. <item>
  1043. <label>메모</label>
  1044. <value>JX999</value>
  1045. </item>
  1046. <item>
  1047. <label>소명자료</label>
  1048. <value>MT015</value>
  1049. </item>
  1050. </choices>
  1051. <script type="javascript" ev:event="xforms-value-changed">
  1052. <![CDATA[
  1053. if ( model.getValue("/root/send/reqdata/spclcd") == "MT015" ) {
  1054. grd_listatsu.colAttribute(grd_listatsu.colRef("spclspec"),"editable") = "false";
  1055. } else {
  1056. grd_listatsu.colAttribute(grd_listatsu.colRef("spclspec"),"editable") = "true";
  1057. }
  1058. fSelectList();
  1059. ]]>
  1060. </script>
  1061. </select1>
  1062. </group>
  1063. <caption id="caption1" class="tit_2" style="left:5px; top:65px; width:105px; height:13px; ">자동 메모 목록</caption>
  1064. <line id="line1" class="line_1" style="x1:0px; y1:80px; x2:1200px; y2:80px; "/>
  1065. <button id="btn_delrow" class="btn2_letter3" navindex="7" style="left:1088px; top:59px; width:53px; height:19px; ">
  1066. <caption>행삭제</caption>
  1067. <script type="javascript" ev:event="DOMActivate">
  1068. <![CDATA[
  1069. if(grd_listatsu.row <= 0){
  1070. messageBox("삭제할 행을","C002");
  1071. } else {
  1072. for( i = grd_listatsu.fixedRows; i < grd_listatsu.rows ; i++ ) {
  1073. var rowstatus = grd_listatsu.rowStatus(i);
  1074. if (rowstatus == 1 || rowstatus == 3) {
  1075. var changeflag = model.getValue("/root/main/list1/listatsu[" + i + "]/changeflag");
  1076. if (changeflag == "I") {
  1077. grd_listatsu.rowStatus(i) = 0;
  1078. }
  1079. }
  1080. }
  1081. grd_listatsu.deleteItem(grd_listatsu.row);
  1082. /*
  1083. var rows = grd_listatsu.selectedRows;
  1084. for(var i = 0; i<rows; i++){
  1085. grd_listatsu.addstatus(grd_listatsu.selectedrow(i),"delete");
  1086. }
  1087. */
  1088. //fLineDel();
  1089. }
  1090. // var line = grd_listatsu.row;
  1091. // // grid의 메뉴가 '0'이므로 선택되어진 row가 1보다 같거나 클것이다.
  1092. // if(line >= 1){
  1093. // // 해당 row의 status를 delete로 바꾼다.(grid의 status바의 상태가 'O'에서 'D'로 변한다
  1094. // grd_listatsu.addstatus(grd_listatsu.row, "delete");
  1095. // // row를 지우기 위한 함수를 실행한다.
  1096. // fLineDel();
  1097. // }
  1098. // // 삭제할 행을 선택하지 않고 행삭제를 클릭할 경우 알림메세지를 뿌려준다.
  1099. // if(line <= 0) {
  1100. // messageBox("삭제할 행을","C002");
  1101. // }
  1102. ]]>
  1103. </script>
  1104. </button>
  1105. <button id="btn_excel" class="btn2_letter4" navindex="5" style="left:965px; top:59px; width:64px; height:19px; ">
  1106. <caption>엑셀저장</caption>
  1107. <script type="javascript" ev:event="DOMActivate">
  1108. <![CDATA[
  1109. if (grd_listatsu.rows == 1) {
  1110. return;
  1111. }
  1112. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  1113. if (fileName != "")
  1114. {
  1115. grd_listatsu.saveExcel(fileName, "자동메모생성관리", true, true, "", "", true);
  1116. }
  1117. ]]>
  1118. </script>
  1119. </button>
  1120. <button id="btn_addrow" class="btn2_letter3" navindex="6" style="left:1032px; top:59px; width:53px; height:19px; ">
  1121. <caption>행추가</caption>
  1122. <script type="javascript" ev:event="DOMActivate">
  1123. <![CDATA[
  1124. // 행추가
  1125. fAddRow();
  1126. grd_listatsu.col = 1; // 행추가된 row 로 이동한다.
  1127. ]]>
  1128. </script>
  1129. </button>
  1130. <button id="btn_copyrow" class="btn2_letter3" navindex="8" style="left:1144px; top:59px; width:53px; height:19px; ">
  1131. <caption>행복사</caption>
  1132. <script type="javascript" ev:event="DOMActivate">
  1133. <![CDATA[
  1134. /*
  1135. grd_listatsu.insertitem(grd_listatsu.row);
  1136. var today = getCurrentDate(); // 현재 날짜를 얻어옴
  1137. // 행추가후 기본적인 data를 넣어준다(default 값)
  1138. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/fromdd", today);
  1139. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+" ]/todd", "99991231");
  1140. */
  1141. var row = grd_listatsu.row;
  1142. if(row <= 0){
  1143. messageBox("복사할 행을","C002");
  1144. }
  1145. grd_listatsu.AddRow(false);
  1146. model.copyNode("/root/main/list1/listatsu[" + grd_listatsu.row+ "]","/root/main/list1/listatsu[" + row + "]");
  1147. model.makeNode("/root/main/list1/listatsu[" + grd_listatsu.row+ "]/changeflag");
  1148. model.setValue("/root/main/list1/listatsu[" + grd_listatsu.row+ "]/changeflag","U");
  1149. model.refresh();
  1150. grd_listatsu.col = 1; // 행추가된 row 로 이동한다.
  1151. ]]>
  1152. </script>
  1153. </button>
  1154. <datagrid id="grd_listatsu" nodeset="/root/main/list1/listatsu" caption="수가코드^수가명^시작상병^시작상병명^종료상병^종료상병명^내원^진료과^시작일자^종료일자^특정코드^특정내역^수가코드key^종료일자key^순번^기간^상태" colsep="^" colwidth="85, 140, 57, 122, 58, 125, 39, 73, 85, 84, 57, 191, 100, 100, 100, 40, 100" defaultrows="0" ellipsis="true" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" rowsep="|" tooltip="true" navindex="9" dataeight="23" style="left:0px; top:85px; width:1200px; height:625px; ">
  1155. <col imemode="disabled" ref="calcscorcd" type="inputbutton" _chartype="upper" style="left:20px; top:23px; width:90px; height:23px; "/>
  1156. <col ref="calcscornm" type="output"/>
  1157. <col imemode="disabled" ref="diagcdfrom" type="inputbutton" _chartype="upper"/>
  1158. <col ref="diagnmfrom" type="output"/>
  1159. <col imemode="disabled" ref="diagcdto" type="inputbutton" _chartype="upper"/>
  1160. <col ref="diagnmto" type="output"/>
  1161. <col ref="ioflag" type="combo">
  1162. <choices>
  1163. <item>
  1164. <label>전체</label>
  1165. <value>A</value>
  1166. </item>
  1167. <item>
  1168. <label>입원</label>
  1169. <value>I</value>
  1170. </item>
  1171. <item>
  1172. <label>외래</label>
  1173. <value>O</value>
  1174. </item>
  1175. </choices>
  1176. </col>
  1177. <col disabled="true" ref="orddeptcd" type="combo" _key="true">
  1178. <choices>
  1179. <itemset nodeset="/root/init/orddeptcd/orddeptcdlist">
  1180. <label ref="nm"/>
  1181. <value ref="cd"/>
  1182. </itemset>
  1183. </choices>
  1184. </col>
  1185. <col ref="fromdd" type="inputdate"/>
  1186. <col ref="todd" type="inputdate"/>
  1187. <col ref="spclcd" type="combo">
  1188. <choices>
  1189. <itemset nodeset="/root/init/spclcdlist/spclcd">
  1190. <label ref="cdnm"/>
  1191. <value ref="cdid"/>
  1192. </itemset>
  1193. </choices>
  1194. </col>
  1195. <col ref="spclspec" type="inputbutton"/>
  1196. <col ref="calcscorcdkey" visibility="hidden"/>
  1197. <col ref="toddkey" visibility="hidden"/>
  1198. <col ref="seq" type="output" visibility="hidden"/>
  1199. <col ref="repday" type="input" style="text-align:center; "/>
  1200. <col ref="changeflag" visibility="hidden"/>
  1201. <!-- 수가코드, 시작상병코드, 종료상병코드 입력시 해당 cell에 값이 변경될 경우 일어나는 이벤트로 서브밋을 날리면 해당 명이 뿌려진다.-->
  1202. <script type="javascript" ev:event="onkeydown">
  1203. <![CDATA[
  1204. var row = grd_listatsu.row;
  1205. var col = grd_listatsu.col;
  1206. // 해당 row의 status(상태:O,I,U,D)를 가져온다.
  1207. var status = grd_listatsu.rowStatus(row);
  1208. if(event.keyCode == 13){
  1209. //if( col == 1 ) {
  1210. if ( col == grd_listatsu.colRef("calcscorcd") ) {
  1211. grd_listatsu.endEditCell();
  1212. var cal = grd_listatsu.valueMatrix(row, col);
  1213. if(cal == ""){ }//alert("수가조회 안한다잉~~");
  1214. if(cal != ""){
  1215. fCalcscorcd();
  1216. fMovCol();
  1217. }
  1218. //} else if( col == 3 ) {
  1219. } else if( col == grd_listatsu.colRef("diagcdfrom") ) {
  1220. grd_listatsu.endEditCell();
  1221. var cal = grd_listatsu.valueMatrix(row, col);
  1222. if(cal == "") { }//alert("시작상병조회 안한다~아찌?");
  1223. if(cal != "") {
  1224. fDiag();
  1225. fMovCol();
  1226. }
  1227. //} else if( col == 5) {
  1228. } else if( col == grd_listatsu.colRef("diagcdto") ) {
  1229. grd_listatsu.endEditCell();
  1230. var cal = grd_listatsu.valueMatrix(row, col);
  1231. if(cal == ""){ }//alert("종료상병조회 안한다잉.. 아그야~");
  1232. if(cal != ""){
  1233. fDiagTwo();
  1234. fMovCol();
  1235. }
  1236. }
  1237. }
  1238. ]]>
  1239. </script>
  1240. <script type="javascript" ev:event="onbuttonclick">
  1241. <![CDATA[
  1242. var row = grd_listatsu.row;
  1243. var col = grd_listatsu.col;
  1244. // 해당 row의 status(상태:O,I,U,D)를 가져온다.
  1245. var status = grd_listatsu.rowStatus(row);
  1246. if ( col == grd_listatsu.colRef("calcscorcd") ) {
  1247. fCalcscorcd();
  1248. } else if ( col == grd_listatsu.colRef("diagcdfrom") ) {
  1249. var oldvalue = grd_listatsu.valueMatrix(row,col);
  1250. fDiag();
  1251. var newvalue = grd_listatsu.valueMatrix(row,col);
  1252. if ( oldvalue == "-" ) { oldvalue = ""; }
  1253. if ( newvalue == "-" ) { newvalue = ""; }
  1254. if ( oldvalue != newvalue ) {
  1255. if (status == 0) { grd_listatsu.rowstatus(row) = 2; }
  1256. }
  1257. } else if( col == grd_listatsu.colRef("diagcdto") ) {
  1258. var oldvalue = grd_listatsu.valueMatrix(row,col);
  1259. fDiagTwo();
  1260. var newvalue = grd_listatsu.valueMatrix(row,col);
  1261. if ( oldvalue == "-" ) { oldvalue = ""; }
  1262. if ( newvalue == "-" ) { newvalue = ""; }
  1263. if ( oldvalue != newvalue ) {
  1264. if (status == 0) { grd_listatsu.rowstatus(row) = 2; }
  1265. }
  1266. /*
  1267. } else if( col == grd_listatsu.colRef("spclcd") ) {
  1268. // *** 특정코드 및 특정내역의 변경이 발생하였을때 이전의 값과 비교하여 변경이 되었으면 grid의 status의 상태를 'U'로 바꿔준다. *****
  1269. var spclcd = grd_listatsu.valueMatrix(row, col);
  1270. var spclspec = grd_listatsu.valueMatrix(row, col+1);
  1271. fSearchSpcl();
  1272. var spclcdtwo = grd_listatsu.valueMatrix(row, col);
  1273. var spclspectwo = grd_listatsu.valueMatrix(row, col+1);
  1274. if(status == 0){
  1275. if(spclcd != spclcdtwo){
  1276. grd_listatsu.rowStatus(row) = 2;
  1277. }
  1278. if(spclspec != spclspectwo){
  1279. grd_listatsu.rowStatus(row) = 2;
  1280. }
  1281. }
  1282. */
  1283. } else if( col == grd_listatsu.colRef("spclspec") ) {
  1284. if (grp_spclspec.visible == true) {
  1285. grp_spclspec.visible = false;
  1286. return;
  1287. }
  1288. if ( grd_listatsu.valueMatrix(grd_listatsu.row,grd_listatsu.colRef("calcscorcd")) == "" ) {
  1289. return;
  1290. }
  1291. if ( model.getValue("/root/send/reqdata/spclcd") == "MT015" ) {
  1292. var nowrow = grd_listatsu.mouseRow;
  1293. var rsltrow = 0;
  1294. model.resetInstanceNode("/root/hidden/sppsiz00200/rslt/clsp");
  1295. model.setValue("/root/hidden/sppiz00200/cond/clsp/spclspec",model.getValue("/root/main/list1/listatsu[" + nowrow + "]/spclspec"));
  1296. modal("SPPIZ00200", "1", "10", "10", "SPPIZ00200", "", "", "", ""); // SPPIZ00200_첨부물자료관리.xrw
  1297. //model.setValue("/root/main/list1/listatsu[" + nowrow + "]/spclspec",model.getValue("/root/hidden/sppiz00200/rslt/clsp/spclspec[spclcd=MT015]"));
  1298. for (var i = 1; i <= model.getXPathValue( "count(/root/hidden/sppiz00200/rslt/clsp)" ); i++) {
  1299. if ( model.getValue("/root/hidden/sppiz00200/rslt/clsp[" + i + "]/spclcd") == "MT015" ) {
  1300. rsltrow = i;
  1301. break;
  1302. }
  1303. }
  1304. if ( rsltrow > 0 ) {
  1305. //messageBox(rsltrow,"");
  1306. if ( model.getValue("/root/hidden/sppiz00200/rslt/clsp[" + rsltrow + "]/rowstat") == "D" ) {
  1307. model.setValue("/root/main/list1/listatsu[" + nowrow + "]/spclspec","");
  1308. } else {
  1309. model.setValue("/root/main/list1/listatsu[" + nowrow + "]/spclspec",model.getValue("/root/hidden/sppiz00200/rslt/clsp[" + rsltrow + "]/spclspec"));
  1310. }
  1311. }
  1312. } else {
  1313. model.setValue("/root/hidden/spclspec", model.getValue("/root/main/list1/listatsu[" + grd_listatsu.mouseRow + "]/spclspec"));
  1314. model.setValue("/root/hidden/oldspclspec", model.getValue("/root/main/list1/listatsu[" + grd_listatsu.mouseRow + "]/spclspec"));
  1315. grp_spclspec.attribute("top") = 125;
  1316. grp_spclspec.attribute("left") = 380;
  1317. grp_spclspec.visible = true;
  1318. model.setFocus("tar_spclspec");
  1319. tar_spclspec.refresh();
  1320. fSetDisplayDisable(true); // 화면 사용여부 제어
  1321. }
  1322. }
  1323. ]]>
  1324. </script>
  1325. <!--<script type="javascript" ev:event="DOMFocusIn">
  1326. <![CDATA[
  1327. for(var i = 1 ; i < grd_listatsu.rows ; i++) {
  1328. // 각 row마다 status를 확인한다.
  1329. var status = grd_listatsu.rowStatus(i);
  1330. // status의 상태를 확인한다(1:insert, 2:update, 3:insert&new)
  1331. if(status == "1" || status =="3" ) {
  1332. //grd_listatsu.isReadOnly(1,1,1,1) = true;
  1333. }
  1334. }
  1335. ]]>
  1336. </script>-->
  1337. <script type="javascript" ev:event="xforms-value-changed">
  1338. <![CDATA[
  1339. var row = grd_listatsu.row;
  1340. var rowstatus = grd_listatsu.rowStatus(row);
  1341. if (rowstatus == 1 || rowstatus == 3) {
  1342. model.setValue("/root/main/list1/listatsu[" + row+ "]/changeflag","U");
  1343. model.refresh();
  1344. }
  1345. ]]>
  1346. </script>
  1347. <script type="javascript" ev:event="onaftersort">
  1348. <![CDATA[
  1349. grd_listatsu.gridToInstance();
  1350. ]]>
  1351. </script>
  1352. </datagrid>
  1353. <button id="btn_sel_dept" class="btn2_letter5" navindex="5" style="left:886px; top:58px; width:75px; height:19px; ">
  1354. <caption>진료과선택</caption>
  1355. <script type="javascript" ev:event="DOMActivate">
  1356. <![CDATA[
  1357. if ( grd_listatsu.valueMatrix(grd_listatsu.row,grd_listatsu.colRef("calcscorcd")) == "" ) {
  1358. messageBox("선택된 수가가", "I004");
  1359. return;
  1360. }
  1361. fSelectDeptInit();
  1362. grp_dept_select.attribute("top") = 125;
  1363. grp_dept_select.attribute("left") = 380;
  1364. grd_seldeptlist.row = 1;
  1365. grp_dept_select.visible = true;
  1366. fSetDisplayDisable(true); // 화면 사용여부 제어
  1367. ]]>
  1368. </script>
  1369. </button>
  1370. <caption id="caption14" class="tit_2" style="left:125px; top:63px; width:405px; height:13px; color:#0000ff; ">동일 수가코드를 과별로 적용시는 진료과선택 기능을 이용하세요</caption>
  1371. <caption id="caption8" class="tit_2" style="left:555px; top:62px; width:315px; height:13px; color:#0000ff; ">소명자료 입력시 텍스트입력(MT016)은 적용불가</caption>
  1372. </group>
  1373. <group id="group1" style="left:0px; top:0px; width:701px; height:13px; ">
  1374. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:220px; height:13px; ">JX999, MX999, MT015 자동생성</caption>
  1375. </group>
  1376. <group id="group4" scroll="auto" style="left:0px; top:737px; width:1200px; height:27px; ">
  1377. <line id="line23" class="line_6" style="x1:0px; y1:0px; x2:12.0px; y2:0px; "/>
  1378. <button id="bbt_init" class="btn4_letter3" navindex="13" style="left:1130px; top:3px; width:68px; height:22px; ">
  1379. <caption>초기화</caption>
  1380. <script type="javascript" ev:event="DOMActivate">
  1381. <![CDATA[
  1382. fInitialize();
  1383. // 행추가
  1384. fAddRow();
  1385. ]]>
  1386. </script>
  1387. </button>
  1388. <button id="bbt_save" class="btn4_letter2" navindex="11" style="left:1071px; top:3px; width:56px; height:22px; ">
  1389. <caption>저장</caption>
  1390. <script type="javascript" ev:event="DOMActivate">
  1391. <![CDATA[
  1392. if (fChkAutMemoCretList()) {
  1393. // 그리드 초기화
  1394. model.removeNodeset("/root/main/list1/listatsu");
  1395. if ( submit("TXPIB00801") ) {
  1396. var controlSnw = document.controls("btn_search");
  1397. controlSnw.dispatch("DOMActivate");
  1398. messageBox("정상적으로 저장되었습니다.", "I999");
  1399. }
  1400. }
  1401. ]]>
  1402. </script>
  1403. </button>
  1404. </group>
  1405. <group id="grp_spclspec" visibility="hidden" style="left:0px; top:190px; width:435px; height:400px; border-color:#000000; border-style:solid; ">
  1406. <line id="line4" class="line_1" style="x1:0px; y1:20px; x2:430px; y2:20px; "/>
  1407. <caption id="caption26" class="tit_2" style="left:5px; top:5px; width:113px; height:14px; ">특정내역</caption>
  1408. <textarea id="tar_spclspec" ref="/root/hidden/spclspec" style="left:1px; top:25px; width:430px; height:334px; color:#000000; border-color:#333333; "/>
  1409. <button id="btn_memosave" class="btn4_letter2" style="left:310px; top:365px; width:56px; height:22px; ">
  1410. <caption>확인</caption>
  1411. <script type="javascript" ev:event="DOMActivate">
  1412. <![CDATA[
  1413. model.setValue("/root/main/list1/listatsu["+grd_listatsu.row+"]/spclspec", model.getValue("/root/hidden/spclspec"));
  1414. grp_spclspec.visible = false;
  1415. fSetDisplayDisable(false); // 화면 사용여부 제어
  1416. // 내용이 변경되면 update 상태 처리
  1417. var oldspclspec = model.getValue("/root/hidden/oldspclspec");
  1418. var spclspec = model.getValue("/root/hidden/spclspec");
  1419. if (oldspclspec != spclspec) {
  1420. var status = grd_listatsu.rowstatus(grd_listatsu.row);
  1421. if (status == 0) {
  1422. grd_listatsu.rowstatus(grd_listatsu.row) = 2;
  1423. }
  1424. }
  1425. ]]>
  1426. </script>
  1427. </button>
  1428. <button id="btn_cancel" class="btn4_letter2" style="left:370px; top:365px; width:56px; height:22px; ">
  1429. <caption>취소</caption>
  1430. <script type="javascript" ev:event="DOMActivate">
  1431. <![CDATA[
  1432. grp_spclspec.visible = false;
  1433. fSetDisplayDisable(false); // 화면 사용여부 제어
  1434. ]]>
  1435. </script>
  1436. </button>
  1437. </group>
  1438. <!-- 2007.07.03 18:44-->
  1439. <group id="grp_dept_select" visibility="hidden" style="left:445px; top:155px; width:360px; height:450px; border-color:#333333; border-style:solid; ">
  1440. <datagrid id="grd_seldeptlist" nodeset="/root/hidden/seldeptlist" caption="선택^진료과코드^진료과명^기존선택" colsep="^" colwidth="56, 88, 162, 9, 100, 100, 100" mergecellsfixedrows="bycolrec" rowsep="|" style="left:14px; top:74px; width:330px; height:330px; border-color:#333333; ">
  1441. <col ref="selyn" type="checkbox"/>
  1442. <col ref="deptcd"/>
  1443. <col ref="deptnm"/>
  1444. <col ref="oldselyn" visibility="hidden"/>
  1445. <col ref="calcscorcdkey" visibility="hidden"/>
  1446. <col ref="toddkey" visibility="hidden"/>
  1447. <col ref="seq" visibility="hidden"/>
  1448. </datagrid>
  1449. <caption id="caption5" class="tit_2" style="left:5px; top:5px; width:344px; height:13px; ">자동메모 진료과 선택 (수가코드로 조회후 사용하세요)</caption>
  1450. <button id="button2" class="btn4_letter2" style="left:281px; top:418px; width:56px; height:22px; ">
  1451. <caption>취소</caption>
  1452. <script type="javascript" ev:event="DOMActivate">
  1453. <![CDATA[
  1454. grp_dept_select.visible = false;
  1455. fSetDisplayDisable(false); // 화면 사용여부 제어
  1456. ]]>
  1457. </script>
  1458. </button>
  1459. <button id="button4" class="btn4_letter2" style="left:216px; top:418px; width:56px; height:22px; ">
  1460. <caption>확인</caption>
  1461. <script type="javascript" ev:event="DOMActivate">
  1462. <![CDATA[
  1463. if ( fSelectDeptChk() == false ) return;
  1464. fSelectDeptInput();
  1465. grp_dept_select.visible = false;
  1466. fSetDisplayDisable(false); // 화면 사용여부 제어
  1467. grd_listatsu.col = 1; // 마지막 row 로 이동
  1468. ]]>
  1469. </script>
  1470. </button>
  1471. <line id="line2" class="line_1" style="x1:4px; y1:20px; x2:354px; y2:20px; "/>
  1472. <output id="opt_seldeptcd" ref="/root/hidden/seldeptbase/calcscorcd" class="output_fix" appearance="output" style="left:14px; top:29px; width:75px; height:19px; color:#ff00ff; "/>
  1473. <output id="opt_seldeptnm" ref="/root/hidden/seldeptbase/calcscornm" class="output_fix" appearance="output" style="left:94px; top:29px; width:245px; height:19px; color:#ff00ff; "/>
  1474. <output id="opt_seldeptkeycalcs" ref="/root/hidden/seldeptbase/calcscorcdkey" class="output_fix" visibility="hidden" appearance="output" style="left:14px; top:50px; width:35px; height:19px; color:#ff00ff; "/>
  1475. <output id="opt_seldeptkeytodd" ref="/root/hidden/seldeptbase/toddkey" class="output_fix" visibility="hidden" appearance="output" style="left:49px; top:50px; width:30px; height:19px; color:#ff00ff; "/>
  1476. <output id="opt_seldeptkeyseq" ref="/root/hidden/seldeptbase/seq" class="output_fix" visibility="hidden" appearance="output" style="left:79px; top:50px; width:35px; height:19px; color:#ff00ff; "/>
  1477. <button id="btn_selall" class="btn2_letter4" navindex="5" style="left:214px; top:51px; width:64px; height:19px; ">
  1478. <caption>전체선택</caption>
  1479. <script type="javascript" ev:event="DOMActivate">
  1480. <![CDATA[
  1481. for( i = grd_seldeptlist.fixedRows; i < grd_seldeptlist.rows ; i++ ) {
  1482. model.setValue("/root/hidden/seldeptlist[" + i + "]/selyn","true");
  1483. }
  1484. model.refresh();
  1485. ]]>
  1486. </script>
  1487. </button>
  1488. <button id="btn_selno" class="btn2_letter4" navindex="5" style="left:279px; top:51px; width:64px; height:19px; ">
  1489. <caption>전체취소</caption>
  1490. <script type="javascript" ev:event="DOMActivate">
  1491. <![CDATA[
  1492. for( i = grd_seldeptlist.fixedRows; i < grd_seldeptlist.rows ; i++ ) {
  1493. model.setValue("/root/hidden/seldeptlist[" + i + "]/selyn","false");
  1494. }
  1495. model.refresh();
  1496. ]]>
  1497. </script>
  1498. </button>
  1499. <output id="opt_seldeptkeydeptcd" ref="/root/hidden/seldeptbase/deptcd" class="output_fix" visibility="hidden" appearance="output" style="left:114px; top:50px; width:35px; height:19px; color:#ff00ff; "/>
  1500. </group>
  1501. </xhtml:body>
  1502. </xhtml:html>