SPMMO50100_처방사유입력.xrw 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  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>처방사유 입력</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <result>
  10. <checkprcpresn>
  11. <resndd/>
  12. <pid/>
  13. <orddd/>
  14. <cretno/>
  15. <orddeptcd/>
  16. <ordtype/>
  17. <prcpdd/>
  18. <prcpno/>
  19. <prcphistno/>
  20. <resnflag/>
  21. <prcpcd/>
  22. <prcpnm/>
  23. <resndesc/>
  24. <delflag/>
  25. <resncd/>
  26. <resncnts/>
  27. </checkprcpresn>
  28. </result>
  29. <hardcd>
  30. <hardcd>
  31. <status/>
  32. <hardcd/>
  33. <hardcdnm/>
  34. </hardcd>
  35. </hardcd>
  36. <send>
  37. <cond1/>
  38. </send>
  39. <init>
  40. <cond1>Y</cond1>
  41. </init>
  42. </root>
  43. </instance>
  44. <submission id="TRZBC00101" mediatype="application/x-www-form-urlencoded" method="post"/>
  45. <submission id="TRMMB16401" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/hardcd"/>
  46. <bind id="bind1" ref="/root/hardcd/hardcd/hardcdnm" readonly="../hardcd != 'T'"/>
  47. </model>
  48. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  49. <script type="javascript" src="../../../emr/prcpmngtweb/js/MMO001.js"/>
  50. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  51. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  52. <script type="javascript">
  53. <![CDATA[
  54. // 화면 전역변수
  55. var cRow = ""; // 사유입력리스트에서 선택된 행
  56. var cResnFlag = ""; // 사유입력리스트에서 선택된 사유구분
  57. // 화면 open, 저장시 초기화 기능을 수행한다.
  58. function fClose() {
  59. window.close();
  60. }
  61. function fSelectResn() {
  62. var resnRow = grd_resnlist.row;
  63. var prcpRow = grd_prcpresnlist.row;
  64. if (resnRow != -1 && prcpRow != -1) {
  65. var resncd = model.getValue("/root/hardcd/hardcd[" + resnRow + "]/hardcd") // 선택된 사유 코드
  66. var resncnts = model.getValue("/root/hardcd/hardcd[" + resnRow + "]/hardcdnm") // 선택된 사유 상세
  67. if(resncnts == "(이곳에 사유입력을 하세요)" || resncnts == "기타사유 (직접입력)") {
  68. grd_resnlist.col = grd_resnlist.colRef("hardcdnm");
  69. grd_resnlist.colDisabled(grd_resnlist.col) = false;
  70. grd_resnlist.editCell();
  71. } else {
  72. if(model.getValue("/root/init/cond1") == "Y") { // 일괄 적용이면
  73. var checkLength = model.instances(0).selectNodes( "/root/result/checkprcpresn" ).length;
  74. var selectResnFlag = model.getValue("/root/result/checkprcpresn[" +prcpRow+ "]/resnflag"); // 처방사유구분
  75. var checkResnFlag = "";
  76. for ( var i= 1; i<=checkLength; i++ ) {
  77. checkResnFlag = model.getValue ( "/root/result/checkprcpresn[" + i + "]/resnflag" );
  78. if(selectResnFlag == checkResnFlag) {
  79. model.setValue("/root/result/checkprcpresn[" + i + "]/resncd", resncd);
  80. model.setValue("/root/result/checkprcpresn[" + i + "]/resncnts", resncnts);
  81. }
  82. }
  83. } else {
  84. model.setValue("/root/result/checkprcpresn[" + prcpRow + "]/resncd", resncd);
  85. model.setValue("/root/result/checkprcpresn[" + prcpRow + "]/resncnts", resncnts);
  86. }
  87. model.refresh();
  88. }
  89. }
  90. }
  91. ]]>
  92. </script>
  93. </xhtml:head>
  94. <xhtml:body pagewidth="865" pageheight="550" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  95. <caption id="caption1" class="tit_2" style="left:5px; top:2px; width:302px; height:13px; ">처방 사유 입력</caption>
  96. <switch id="switch1" style="left:2px; top:17px; width:843px; height:498px; ">
  97. <case id="case1" selected="true" style="left:0px; top:0px; width:843px; height:495px; ">
  98. <datagrid id="grd_prcpresnlist" nodeset="/root/result/checkprcpresn" autoresize="true" caption="구분^처방코드^처방명^내용^코드^상세사유" colsep="^" colwidth="137, 70, 136, 339, 30, 111" dataheight="23" ellipsis="true" extendlastcol="scroll" rowheight="23" rowsep="|" selectionmode="free" tooltip="true" style="left:0px; top:5px; width:843; height:270px; ">
  99. <col disabled="true" ref="resnflag" type="combo">
  100. <choices>
  101. <item>
  102. <label>사유</label>
  103. <value/>
  104. </item>
  105. <item>
  106. <label>처방전내병용금기</label>
  107. <value>00</value>
  108. </item>
  109. <item>
  110. <label>처방전내연령금기</label>
  111. <value>01</value>
  112. </item>
  113. <item>
  114. <label>처방전내안전성</label>
  115. <value>02</value>
  116. </item>
  117. <item>
  118. <label>처방전내최대용량</label>
  119. <value>03</value>
  120. </item>
  121. <item>
  122. <label>처방전내최대기간</label>
  123. <value>04</value>
  124. </item>
  125. <item>
  126. <label>처방전내저함량</label>
  127. <value>05</value>
  128. </item>
  129. <item>
  130. <label>처방전내임부금기</label>
  131. <value>06</value>
  132. </item>
  133. <item>
  134. <label>처방전간 병용금기</label>
  135. <value>07</value>
  136. </item>
  137. <item>
  138. <label>처방전간 성분별 중복처방</label>
  139. <value>08</value>
  140. </item>
  141. <item>
  142. <label>처방전내 치료중복</label>
  143. <value>20</value>
  144. </item>
  145. <item>
  146. <label>처방전간 치료중복</label>
  147. <value>40</value>
  148. </item>
  149. <item>
  150. <label>처방전내 2주 병용금기</label>
  151. <value>21</value>
  152. </item>
  153. <item>
  154. <label>처방전간 2주 병용금기</label>
  155. <value>41</value>
  156. </item>
  157. <item>
  158. <label>처방전내 1성분병용기간금기</label>
  159. <value>22</value>
  160. </item>
  161. <item>
  162. <label>처방전간 1성분병용기간금기</label>
  163. <value>42</value>
  164. </item>
  165. <item>
  166. <label>처방전내 병용연령성별제한</label>
  167. <value>23</value>
  168. </item>
  169. <item>
  170. <label>처방전간 병용연령성별제한</label>
  171. <value>43</value>
  172. </item>
  173. <item>
  174. <label>시럽제 처방</label>
  175. <value>007</value>
  176. </item>
  177. <item>
  178. <label>ADR(약물유해반응) 처방</label>
  179. <value>008</value>
  180. </item>
  181. <item>
  182. <label>수술예방적 항생제</label>
  183. <value>011</value>
  184. </item>
  185. <item>
  186. <label>수술예방적 항생제</label>
  187. <value>012</value>
  188. </item>
  189. <item>
  190. <label>약제 및 진료재료 적정성 심의</label>
  191. <value>013</value>
  192. </item>
  193. </choices>
  194. </col>
  195. <col ref="prcpcd"/>
  196. <col ref="prcpnm"/>
  197. <col ref="resndesc"/>
  198. <col ref="resncd" style="text-align:center; "/>
  199. <col ref="resncnts"/>
  200. <script type="javascript" ev:event="xforms-value-changed">
  201. <![CDATA[
  202. if ( grd_prcpresnlist.col == grd_prcpresnlist.colRef ( "delflag" )) {
  203. var currow = grd_prcpresnlist.row;
  204. model.setValue("/root/result/checkprcpresn[" +currow+ "]/resncd", "") ;
  205. model.setValue("/root/result/checkprcpresn[" +currow+ "]/resncnts", "") ;
  206. model.refresh();
  207. }
  208. ]]>
  209. </script>
  210. <script type="javascript" ev:event="onclick">
  211. <![CDATA[
  212. if (isDataCell()) {
  213. if ( grd_prcpresnlist.col == grd_prcpresnlist.colRef ( "delflag" )) {
  214. return;
  215. }
  216. var resnFlag = model.getValue("/root/result/checkprcpresn[" +grd_prcpresnlist.row+ "]/resnflag");
  217. if( resnFlag == "007") { //12세 이상 시럽제 처방 사유
  218. model.setValue ( "/root/send/cond1", "320" );
  219. } else if ( resnFlag == "008") { //ADR(약품유해반응) 처방 사유
  220. model.setValue ( "/root/send/cond1", "329" );
  221. } else if ( resnFlag == "011") { //수술예방적 항생제 처방사유(재원)
  222. model.setValue ( "/root/send/cond1", "330" );
  223. } else if ( resnFlag == "012") { //수술예방적 항생제 처방사유(퇴원)
  224. model.setValue ( "/root/send/cond1", "331" );
  225. }else if ( resnFlag == "013") { //약제 및 진료재료 적정성 심의(칠곡)
  226. model.setValue ( "/root/send/cond1", "5609" );
  227. }else {
  228. alert("관련된 사유 정보가 존재 하지 않습니다.\n전산실(6598)로 문의 하세요.");
  229. return;
  230. }
  231. submit("TRMMB16401" );
  232. model.refresh();
  233. }
  234. ]]>
  235. </script>
  236. </datagrid>
  237. <caption id="caption6" class="tit_2" style="left:5px; top:286px; width:171px; height:13px; ">사유선택</caption>
  238. <line id="line4" class="line_1" style="x1:0px; y1:302px; x2:843; y2:302px; "/>
  239. <datagrid id="grd_resnlist" nodeset="/root/hardcd/hardcd" caption="코드^상세사유" colsep="^" colwidth="35, 787" dataheight="23" ellipsis="true" extendlastcol="scroll" rowheight="23" rowsep="|" tooltip="true" style="left:0px; top:307px; width:843px; height:186; ">
  240. <col ref="hardcd" style="text-align:center; "/>
  241. <col disabled="false" editable="true" imemode="hangul" ref="hardcdnm" type="input"/>
  242. <script type="javascript" ev:event="onclick">
  243. <![CDATA[
  244. if (isDataCell() ) {
  245. var currow = grd_resnlist.row;
  246. if ( model.getValue ( "/root/hardcd/hardcd[" + currow + "]/hardcdnm" ) == "(이곳에 사유입력을 하세요)"
  247. || model.getValue ( "/root/hardcd/hardcd[" + currow + "]/hardcdnm" ) == "기타사유 (직접입력)" ) {
  248. grd_resnlist.col = grd_resnlist.colRef("hardcdnm");
  249. grd_resnlist.colDisabled(grd_resnlist.col) = false;
  250. grd_resnlist.editCell();
  251. } else {
  252. grd_resnlist.colDisabled(grd_resnlist.col) = true;
  253. }
  254. }
  255. ]]>
  256. </script>
  257. <script type="javascript" ev:event="onendedit">
  258. <![CDATA[
  259. var currow = grd_resnlist.row;
  260. if ( model.getValue ( "/root/hardcd/hardcd[" + currow + "]/hardcdnm" ) != "(이곳에 사유입력을 하세요)"
  261. && model.getValue ( "/root/hardcd/hardcd[" + currow + "]/hardcdnm" ) != "기타사유 (직접입력)" ) {
  262. fSelectResn();
  263. }
  264. ]]>
  265. </script>
  266. <script type="javascript" ev:event="ondblclick">
  267. <![CDATA[
  268. if (isDataCell() ) {
  269. fSelectResn();
  270. }
  271. ]]>
  272. </script>
  273. </datagrid>
  274. <line id="line1" class="line_1" style="x1:0px; y1:2px; x2:843; y2:2px; "/>
  275. <button id="button1" class="btn2_letter4" style="left:776px; top:282px; width:64px; height:19px; ">
  276. <caption>사유적용</caption>
  277. <script type="javascript" ev:event="DOMActivate">
  278. <![CDATA[
  279. if(grd_resnlist.row != -1) {
  280. fSelectResn();
  281. }else{
  282. messageBox ( "선택된 사유가 없습니다." , "I" );
  283. }
  284. ]]>
  285. </script>
  286. </button>
  287. <bool id="bool_cond1" checkvalue="Y,N" overflow="visible" appearance="full" ref="/root/init/cond1" style="left:700px; top:285px; width:20px; height:20px; border-style:none; "/>
  288. <caption id="caption3" style="left:720px; top:285px; width:50px; height:20px; ">일괄적용</caption>
  289. </case>
  290. </switch>
  291. <button id="button3" class="btn4_letter4" style="left:642px; top:520px; width:80px; height:22px; ">
  292. <caption>계속저장</caption>
  293. <script type="javascript" ev:event="DOMActivate">
  294. <![CDATA[
  295. var checkLength = model.instances(0).selectNodes( "/root/result/checkprcpresn" ).length;
  296. var resnCnt = 0;
  297. if ( checkLength > 0 ) {
  298. for ( var i =1; i <= checkLength; i++ ) {
  299. if ( isNull(model.getValue ( "/root/result/checkprcpresn[" + i + "]/resncd" )) || isNull(model.getValue ( "/root/result/checkprcpresn[" + i + "]/resncnts" )) ) {
  300. resnCnt++;
  301. }
  302. }
  303. if (resnCnt > 0) {
  304. messageBox ( "처방사유 선택되지 않은 처방이", "I010" );
  305. return;
  306. }
  307. // 사유 정보 셋팅.
  308. var nSaveSujinResnLength = opener.model.instances(0).selectNodes( "/root/result/savesujinresn" ).length;
  309. for (var i=1; i <= checkLength; i++) {
  310. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_resndd" , model.getValue("/root/result/checkprcpresn[" +i+ "]/resndd"));
  311. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_pid" , model.getValue("/root/result/checkprcpresn[" +i+ "]/pid"));
  312. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_orddd" , model.getValue("/root/result/checkprcpresn[" +i+ "]/orddd"));
  313. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_cretno" , model.getValue("/root/result/checkprcpresn[" +i+ "]/cretno"));
  314. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_orddeptcd" , model.getValue("/root/result/checkprcpresn[" +i+ "]/orddeptcd"));
  315. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_ordtype" , model.getValue("/root/result/checkprcpresn[" +i+ "]/ordtype"));
  316. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_prcpdd" , model.getValue("/root/result/checkprcpresn[" +i+ "]/prcpdd"));
  317. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_prcpno" , model.getValue("/root/result/checkprcpresn[" +i+ "]/prcpno"));
  318. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_prcphistno" , model.getValue("/root/result/checkprcpresn[" +i+ "]/prcphistno"));
  319. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_resnflag" , model.getValue("/root/result/checkprcpresn[" +i+ "]/resnflag"));
  320. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_resncd" , model.getValue("/root/result/checkprcpresn[" +i+ "]/resncd"));
  321. opener.model.makeValue("/root/result/savesujinresn["+ (nSaveSujinResnLength + i)+"]/resn_resncnts" , model.getValue("/root/result/checkprcpresn[" +i+ "]/resncnts"));
  322. }
  323. opener.javascript.setParameter ( "SPMMO50100_rtn1", "Y" );
  324. }
  325. window.close();
  326. ]]>
  327. </script>
  328. </button>
  329. <button id="btn_cncl" class="btn4_letter7" style="left:731px; top:520px; width:116px; height:22px; ">
  330. <caption>처방변경(닫기)</caption>
  331. <script type="javascript" ev:event="DOMActivate">
  332. <![CDATA[
  333. opener.javascript.setParameter ( "SPMMO50100_rtn1", "N" );
  334. window.close();
  335. ]]>
  336. </script>
  337. </button>
  338. <caption id="caption4" style="left:130px; top:3px; width:715px; height:16px; ">아래의 처방은 사유를 선택 또는 입력 하셔야 발행이 가능 합니다. 처방을 선택하면 구분에 맞는 사유가 조회 됩니다.</caption>
  339. <caption id="caption7" style="left:85px; top:304px; width:610px; height:16px; ">아래의 항목에서 사유를 선택 하세요. 일괄적용 체크 되면 사유구분이 같은 항목에 대해 한번에 적용 됩니다.</caption>
  340. </xhtml:body>
  341. </xhtml:html>