SMMMB01900_PRN가능처방관리.xrw 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>PRN가능처방관리</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <cond>
  11. <srchcond/>
  12. <calcscorcd/>
  13. <prcpnm/>
  14. <earncls1/>
  15. <earncls2/>
  16. <earncls3/>
  17. <stnddd/>
  18. </cond>
  19. <ordlibinfo>
  20. <ordliblist>
  21. <useyn/>
  22. <prcpcd/>
  23. <ordnm/>
  24. <engnm/>
  25. <status/>
  26. <fromdd/>
  27. <prcpgenrflag/>
  28. <earncls/>
  29. <genrflag/>
  30. </ordliblist>
  31. </ordlibinfo>
  32. <earncls1info>
  33. <earncls1lsit/>
  34. </earncls1info>
  35. <earncls2info>
  36. <earncls2list>
  37. <earncls2>all</earncls2>
  38. <earncls2nm>전체</earncls2nm>
  39. </earncls2list>
  40. </earncls2info>
  41. <earncls3info>
  42. <earncls3list>
  43. <earncls3>all</earncls3>
  44. <earncls3nm>전체</earncls3nm>
  45. </earncls3list>
  46. </earncls3info>
  47. </main>
  48. <send>
  49. <reqdata/>
  50. <savedata/>
  51. </send>
  52. <hidden/>
  53. <init>
  54. <cond>
  55. <M00101/>
  56. </cond>
  57. </init>
  58. </root>
  59. </instance>
  60. <script type="javascript" ev:event="xforms-ready">
  61. <![CDATA[
  62. //사용구분 공통코드 받아옴
  63. zbcfGetCodeList(
  64. new Array("M0010"),
  65. new Array("/root/init/cond")
  66. );
  67. //현재 날짜를 받아옴
  68. model.setValue("/root/main/cond/stnddd", getCurrentDate());
  69. model.refresh();
  70. //초기화시 검색조건에 따라 조건 박스가 뜨도록 처음에는 안뜨게 표시
  71. ipt_prcpcd.visible = false;
  72. ipt_prcpnm.visible = false;
  73. cmb_earncls1.visible= true;
  74. cmb_earncls2.visible= true;
  75. cmb_earncls3.visible= true;
  76. //리스트 화면을 초기화
  77. model.removeNodeset("/root/main/ordlibinfo/ordliblist");
  78. model.refresh();
  79. //처방분류 대 콤보 박스에 리스트가 조회
  80. submit("TRMMB01702");
  81. //검색조건에 기본적으로 처방분류가 들어가 있는 상태로 초기화
  82. cmb_srchcond.select(2);
  83. cmb_earncls1.select(0);
  84. cmb_earncls2.select(0);
  85. cmb_earncls3.select(0);
  86. ]]>
  87. </script>
  88. <submission id="TRMMB01702" mediatype="application/x-www-form-urlencoded" method="post" add="bottom" resultref="/root/main/earncls1info"/>
  89. <submission id="TRMMB01703" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" add="bottom" resultref="/root/main/earncls2info"/>
  90. <submission id="TRMMB01704" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" add="bottom" resultref="/root/main/earncls3info"/>
  91. <submission id="TRMMB01901" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/ordlibinfo"/>
  92. <submission id="TRMMB01902" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/ordlibinfo"/>
  93. <submission id="TXMMB01901" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/ordlibinfo"/>
  94. <submission id="TRZBC00101" 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/basiccodeweb/js/ZBC001.js"/>
  98. <script type="javascript" src="../../../emr/prcpmngtweb/js/MMO001.js"/>
  99. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  100. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  101. </xhtml:head>
  102. <xhtml:body guideline="1,1192;2,782;2,59;" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  103. <caption id="caption1" class="tit_1" style="left:0px; top:0px; width:140px; height:13px; ">PRN가능처방관리</caption>
  104. <shape id="roundrect1" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:21px; width:1193px; height:39px; background-color:#fffbf2; border-color:#ffd799; "/>
  105. <caption id="caption2" class="search_name" style="left:20px; top:32px; width:105px; height:17px; ">검색조건 :</caption>
  106. <select1 id="cmb_srchcond" ref="/root/main/cond/srchcond" navindex="1" appearance="minimal" style="left:120px; top:31px; width:180px; height:19px; ">
  107. <choices>
  108. <item>
  109. <label>처방코드</label>
  110. <value>CD</value>
  111. </item>
  112. <item>
  113. <label>처방명</label>
  114. <value>NM</value>
  115. </item>
  116. <item>
  117. <label>처방분류</label>
  118. <value>CLS</value>
  119. </item>
  120. <item>
  121. <label>등록자료조회(전체)</label>
  122. <value>REQ</value>
  123. </item>
  124. <item>
  125. <label>등록자료조회(처방코드)</label>
  126. <value>REQCD</value>
  127. </item>
  128. <item>
  129. <label>등록자료조회(처방명)</label>
  130. <value>REQNM</value>
  131. </item>
  132. <item>
  133. <label>등록자료조회(처방분류)</label>
  134. <value>REQCLS</value>
  135. </item>
  136. </choices>
  137. <script type="javascript" ev:event="xforms-select">
  138. <![CDATA[
  139. // 콤보박스에서 선택한 값에 따라 조건 옆에 박스가 뜨게 선택하고 각 input박스나 콤보박스에 포커스가 가있게 한다.
  140. if(model.getValue("/root/main/cond/srchcond") == 'CD'){
  141. ipt_prcpcd.visible = true;
  142. ipt_prcpnm.visible = false;
  143. cmb_earncls1.visible= false;
  144. cmb_earncls2.visible= false;
  145. cmb_earncls3.visible= false;
  146. model.setFocus("ipt_prcpcd");
  147. }else if(model.getValue("/root/main/cond/srchcond") == 'NM'){
  148. ipt_prcpcd.visible = false;
  149. ipt_prcpnm.visible = true;
  150. cmb_earncls1.visible= false;
  151. cmb_earncls2.visible= false;
  152. cmb_earncls3.visible= false;
  153. model.setFocus("ipt_prcpnm");
  154. }else if(model.getValue("/root/main/cond/srchcond") == 'CLS'){
  155. ipt_prcpcd.visible = false;
  156. ipt_prcpnm.visible = false;
  157. cmb_earncls1.visible= true;
  158. cmb_earncls2.visible= true;
  159. cmb_earncls3.visible= true;
  160. model.setFocus("cmb_earncls1");
  161. }else if(model.getValue("/root/main/cond/srchcond") == 'REQ'){
  162. ipt_prcpcd.visible = false;
  163. ipt_prcpnm.visible = false;
  164. cmb_earncls1.visible= false;
  165. cmb_earncls2.visible= false;
  166. cmb_earncls3.visible= false;
  167. }else if(model.getValue("/root/main/cond/srchcond") == 'REQCD'){
  168. ipt_prcpcd.visible = true;
  169. ipt_prcpnm.visible = false;
  170. cmb_earncls1.visible= false;
  171. cmb_earncls2.visible= false;
  172. cmb_earncls3.visible= false;
  173. model.setFocus("ipt_prcpcd");
  174. }else if(model.getValue("/root/main/cond/srchcond") == 'REQNM'){
  175. ipt_prcpcd.visible = false;
  176. ipt_prcpnm.visible = true;
  177. cmb_earncls1.visible= false;
  178. cmb_earncls2.visible= false;
  179. cmb_earncls3.visible= false;
  180. model.setFocus("ipt_prcpnm");
  181. }else if(model.getValue("/root/main/cond/srchcond") == 'REQCLS'){
  182. ipt_prcpcd.visible = false;
  183. ipt_prcpnm.visible = false;
  184. cmb_earncls1.visible= true;
  185. cmb_earncls2.visible= true;
  186. cmb_earncls3.visible= true;
  187. model.setFocus("cmb_earncls1");
  188. }
  189. ]]>
  190. </script>
  191. <script type="javascript" ev:event="xforms-value-changed">
  192. <![CDATA[
  193. //input박스에 예전에 검색한 data값이 남지 않도록 지워준다.
  194. model.resetInstanceNode("/root/main/cond/calcscorcd");
  195. model.resetInstanceNode("/root/main/cond/prcpnm");
  196. model.refresh();
  197. //콤보박스에 예전에 검색한 data값이 남지 않고 언제나 첫조건이 조회되도록 한다.
  198. cmb_earncls1.select(0);
  199. cmb_earncls2.select(0);
  200. cmb_earncls3.select(0);
  201. //등록자료조회로 값변경시 바로 조회가능하게
  202. if(model.getValue("/root/main/cond/srchcond") == 'REQ'){
  203. btn_req.dispatch("DOMActivate");
  204. }
  205. ]]>
  206. </script>
  207. </select1>
  208. <input id="ipt_prcpcd" ref="/root/main/cond/calcscorcd" class="input_search" _chartype="upper" style="left:310px; top:31px; width:150px; height:19px; ">
  209. <script type="javascript" ev:event="onkeypress">
  210. <![CDATA[
  211. //조건을 적고 enter를 치면 바로 조회 버튼을 누르지 않고 조회
  212. inputEnterKey("btn_req", "DOMActivate");
  213. ]]>
  214. </script>
  215. <hint>
  216. <![CDATA[처방코드를 2자리이상 입력하세요.]]>
  217. </hint>
  218. </input>
  219. <input id="ipt_prcpnm" ref="/root/main/cond/prcpnm" class="input_search" style="left:310px; top:31px; width:200px; height:19px; ">
  220. <script type="javascript" ev:event="onkeypress">
  221. <![CDATA[
  222. //조건을 적고 enter를 치면 바로 조회 버튼을 누르지 않고 조회
  223. inputEnterKey("btn_req", "DOMActivate");
  224. ]]>
  225. </script>
  226. <hint>
  227. <![CDATA[처방명을 2자리이상 입력하세요.]]>
  228. </hint>
  229. </input>
  230. <button id="btn_req" class="btn1_letter2" navindex="5" style="left:1122px; top:30px; width:56px; height:22px; ">
  231. <caption>조회</caption>
  232. <script type="javascript" ev:event="DOMActivate">
  233. <![CDATA[
  234. //한글인지 영문인지 판단하고 data개수도 판단하여 작은 경우 메세지가 뜨게 한다.
  235. var srchcond = model.getValue("/root/main/cond/srchcond");
  236. var codenm = "";
  237. //data의 입력 개수를 판단하여 메세지 출력
  238. if((srchcond == "CD") || (srchcond == "REQCD")){
  239. codenm = model.getValue("/root/main/cond/calcscorcd");
  240. if (isNull(codenm)) {
  241. messageBox( "처방코드를" ,"C001" );
  242. model.setFocus("ipt_calcscorcd");
  243. return;
  244. } else if (codenm.length < 2) {
  245. messageBox( "처방코드를 2자리 이상" ,"C001" );
  246. model.setFocus("ipt_calcscorcd");
  247. return;
  248. }
  249. }else if((srchcond == "NM") || (srchcond == "REQNM")){
  250. codenm = model.getValue("/root/main/cond/prcpnm");
  251. if (isNull(codenm)) {
  252. messageBox( "처방명을" ,"C001" );
  253. model.setFocus("ipt_prcpnm");
  254. return;
  255. }
  256. //한글인지 영문인지 구분
  257. if (fIsHangul(codenm) == "H") {
  258. if (codenm.length < 2) {
  259. messageBox( "한글 처방명 2자리 이상" ,"C001" );
  260. model.setFocus("ipt_prcpnm");
  261. return;
  262. }
  263. } else {
  264. if (codenm.length < 4) {
  265. messageBox( "영문 처방명 2자리 이상 " ,"C001" );
  266. model.setFocus("ipt_prcpnm");
  267. return;
  268. }
  269. }
  270. }
  271. var cond = model.getValue("/root/main/cond/srchcond")
  272. if(( cond == 'REQ')){
  273. var msg = messageBox("자료가 많을경우 시스템 부하가 일어날 수 있습니다. 그래도" , "Q005");
  274. if(msg == '6'){
  275. model.removeNodeset("/root/main/ordlibinfo");
  276. //input박스에 예전에 검색한 data값이 남지 않도록 지워준다.
  277. model.resetInstanceNode("/root/main/cond/calcscorcd");
  278. model.resetInstanceNode("/root/main/cond/prcpnm");
  279. model.resetInstanceNode("/root/main/cond/earncls1");
  280. model.resetInstanceNode("/root/main/cond/earncls2");
  281. model.resetInstanceNode("/root/main/cond/earncls3");
  282. //조건에 맞는 데이터 조회
  283. model.copyNode("/root/send/reqdata","/root/main/cond")
  284. //응급실처방제한관리 테이블이 가지고 있는 데이터를 조회
  285. submit("TRMMB01902");
  286. }
  287. }else if( ( cond == 'REQCD') || ( cond == 'REQNM') || ( cond == 'REQCLS') ){
  288. model.removeNodeset("/root/main/ordlibinfo");
  289. //응급실처방제한관리 테이블이 가지고 있는 데이터를 조회
  290. //조건에 맞는 데이터 조회
  291. model.copyNode("/root/send/reqdata","/root/main/cond")
  292. submit("TRMMB01902");
  293. }else{
  294. //조건에 맞는 데이터 조회
  295. model.copyNode("/root/send/reqdata","/root/main/cond");
  296. submit("TRMMB01901");
  297. }
  298. ]]>
  299. </script>
  300. </button>
  301. <select1 id="cmb_earncls1" ref="/root/main/cond/earncls1" navindex="2" appearance="minimal" style="left:310px; top:31px; width:130px; height:19px; ">
  302. <choices>
  303. <itemset nodeset="/root/main/earncls1info/earncls1list">
  304. <label ref="earncls1nm"/>
  305. <value ref="earncls1"/>
  306. </itemset>
  307. </choices>
  308. <script type="javascript" ev:event="xforms-value-changed">
  309. <![CDATA[
  310. //콤보박스 리스트를 제거
  311. model.removeNodeset("/root/main/earncls2info");
  312. model.makeNode("/root/main/earncls2info/earncls2list/earncls2nm");
  313. model.makeNode("/root/main/earncls2info/earncls2list/earncls2");
  314. model.setValue("/root/main/earncls2info/earncls2list/earncls2nm",'전체');
  315. model.setValue("/root/main/earncls2info/earncls2list/earncls2",'all');
  316. //콤보박스 리스트 변경시 다시 전체가 조회되도록 선택
  317. cmb_earncls2.select(0);
  318. //콤보박스에 나올 리스트 조회
  319. model.copyNode("/root/send/reqdata","/root/main/cond");
  320. submit("TRMMB01703");
  321. ]]>
  322. </script>
  323. </select1>
  324. <select1 id="cmb_earncls2" ref="/root/main/cond/earncls2" navindex="3" appearance="minimal" style="left:445px; top:31px; width:130px; height:19px; ">
  325. <choices>
  326. <itemset nodeset="/root/main/earncls2info/earncls2list">
  327. <label ref="earncls2nm"/>
  328. <value ref="earncls2"/>
  329. </itemset>
  330. </choices>
  331. <script type="javascript" ev:event="xforms-value-changed">
  332. <![CDATA[
  333. //콤보박스 리스트를 제거
  334. model.removeNodeset("/root/main/earncls3info");
  335. model.makeNode("/root/main/earncls3info/earncls3list/earncls3nm");
  336. model.makeNode("/root/main/earncls3info/earncls3list/earncls3");
  337. model.setValue("/root/main/earncls3info/earncls3list/earncls3nm",'전체');
  338. model.setValue("/root/main/earncls3info/earncls3list/earncls3",'all');
  339. //콤보박스 리스트 변경시 다시 전체가 조회되도록 선택
  340. cmb_earncls3.select(0);
  341. //콤보박스에 나올 리스트 조회
  342. model.copyNode("/root/send/reqdata","/root/main/cond");
  343. submit("TRMMB01704");
  344. ]]>
  345. </script>
  346. </select1>
  347. <select1 id="cmb_earncls3" ref="/root/main/cond/earncls3" navindex="4" appearance="minimal" style="left:580px; top:31px; width:130px; height:19px; ">
  348. <choices>
  349. <itemset nodeset="/root/main/earncls3info/earncls3list">
  350. <label ref="earncls3nm"/>
  351. <value ref="earncls3"/>
  352. </itemset>
  353. </choices>
  354. </select1>
  355. <caption id="caption25" class="tit_2" style="left:0px; top:72px; width:147px; height:13px; ">처방내역리스트</caption>
  356. <line id="line1" class="line_1" style="x1:0px; y1:90px; x2:1193px; y2:90px; "/>
  357. <datagrid id="grd_ordliblist" nodeset="/root/main/ordlibinfo/ordliblist" scroll="vertical" autoresize="true" caption="선택^사용구분^처방코드^처방명^^^^처방영문명^처방분류" colsep="^" colwidth="30, 60, 100, 340, 0, 0, 0, 340, 300" dataheight="25" extendlastcol="noscroll" mergecellsfixedrows="bycolrec" rowheader="seq" rowsep="|" navindex="6" style="left:0px; top:95px; width:1193px; height:688px; ">
  358. <col ref="useyn" type="checkbox"/>
  359. <col ref="prcpgenrflag" type="combo">
  360. <choices>
  361. <itemset nodeset="/root/init/cond/M0010">
  362. <label ref="cdnm"/>
  363. <value ref="cdid"/>
  364. </itemset>
  365. </choices>
  366. </col>
  367. <col ref="prcpcd"/>
  368. <col ref="ordnm"/>
  369. <col ref="status"/>
  370. <col ref="enrflag"/>
  371. <col ref="fromdd"/>
  372. <col ref="engnm"/>
  373. <col ref="earncls"/>
  374. </datagrid>
  375. <button id="button2" class="btn2_letter2" navindex="7" style="left:1054px; top:68px; width:42px; height:19px; ">
  376. <caption>선택</caption>
  377. <script type="javascript" ev:event="DOMActivate">
  378. <![CDATA[
  379. //선택된 로우값을 받아옴
  380. var rowcount = grd_ordliblist.selectedRows;
  381. var row = new Array();
  382. //선택된 로우의 행값을 변수에 저장
  383. for(var i = rowcount - 1 ; i >= 0; i--){
  384. row[i] = grd_ordliblist.selectedrow(i);
  385. }
  386. //선택된 로우를 모두 선택을 'true'로 만들어줌
  387. for(var i = rowcount - 1 ; i >= 0; i--){
  388. model.setValue("/root/main/ordlibinfo/ordliblist["+ row[i] +"]/useyn",'true');
  389. }
  390. model.refresh();
  391. ]]>
  392. </script>
  393. </button>
  394. <button id="button1" class="btn2_letter2" navindex="8" style="left:1099px; top:68px; width:42px; height:19px; ">
  395. <caption>취소</caption>
  396. <script type="javascript" ev:event="DOMActivate">
  397. <![CDATA[
  398. //선택된 로우값을 받아옴
  399. var rowcount = grd_ordliblist.selectedRows;
  400. var row = new Array();
  401. //선택된 로우의 행값을 변수에 저장
  402. for(var i = rowcount - 1 ; i >= 0; i--){
  403. row[i] = grd_ordliblist.selectedrow(i);
  404. }
  405. //선택된 로우를 모두 선택을 'false'로 만들어줌
  406. for(var i = rowcount - 1 ; i >= 0; i--){
  407. model.setValue("/root/main/ordlibinfo/ordliblist["+ row[i] +"]/useyn",'false');
  408. }
  409. model.refresh();
  410. ]]>
  411. </script>
  412. </button>
  413. <button id="btn_save" class="btn5_letter2" navindex="9" style="left:1148px; top:68px; width:42px; height:19px; ">
  414. <caption>저장</caption>
  415. <script type="javascript" ev:event="DOMActivate">
  416. <![CDATA[
  417. //체크박스를 체크하면 저장, 체크해제하면 삭제(체크박스 해제시 getUpdatedata가 적용이 되지 않아서 파리체 사용
  418. //저장후 조회를 위해 검색조건을 가지고 감
  419. model.copyNode("/root/send/reqdata","/root/main/cond");
  420. xPath = "/root/main/ordlibinfo/ordliblist";
  421. var savedata ="useyn▦prcpgenrflag▦prcpcd▦ordnm▦engnm▦status▦fromdd▦genrflag▩";
  422. sRowCnt = grd_ordliblist.rows - grd_ordliblist.fixedrows;
  423. var uStat = "";
  424. var vStat = "";
  425. for (var i=1;i<=sRowCnt; i++){
  426. uStat = model.getValue(xPath+"["+i+"]/useyn");
  427. vStat = model.getValue(xPath+"["+i+"]/status");
  428. pStat = model.getValue(xPath+"["+i+"]/prcpgenrflag");
  429. gStat = model.getValue(xPath+"["+i+"]/genrflag");
  430. //현재 선택값과 예전 선택값이 틀린 로우와 현재 선택된 상태이고 사용구분이 변경된 로우만 data를 가지고 간다.
  431. if ((uStat != vStat) || ((uStat == 'true') && (pStat != gStat)) ) {
  432. savedata += model.getValue(xPath+"["+i+"]/useyn" ) + "▦";
  433. savedata += model.getValue(xPath+"["+i+"]/prcpgenrflag" ) + "▦";
  434. savedata += model.getValue(xPath+"["+i+"]/prcpcd") + "▦";
  435. savedata += model.getValue(xPath+"["+i+"]/ordnm" ) + "▦";
  436. savedata += model.getValue(xPath+"["+i+"]/engnm") + "▦";
  437. savedata += model.getValue(xPath+"["+i+"]/status" ) + "▦";
  438. savedata += model.getValue(xPath+"["+i+"]/fromdd" ) + "▦";
  439. savedata += model.getValue(xPath+"["+i+"]/genrflag" ) + "▩";
  440. }
  441. }
  442. model.setValue("/root/send/savedata",savedata);
  443. submit("TXMMB01901");
  444. ]]>
  445. </script>
  446. </button>
  447. <line id="line3" style="x1:1110px; y1:25px; x2:1110px; y2:55px; border-color:#ffe4bb; border-left-style:solid; "/>
  448. </xhtml:body>
  449. </xhtml:html>