SPMMO31000_Visit바코드입력.xrw 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. <?xml version="1.0" encoding="UTF-8"?>
  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>응급실-visit등록</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <cond>
  10. <drid/>
  11. <cptdrid/>
  12. <callvisitinfo>
  13. <callvisitinfolist/>
  14. </callvisitinfo>
  15. </cond>
  16. <hidden>
  17. <calldryninfo>
  18. <calldryninfolist>
  19. <drid/>
  20. </calldryninfolist>
  21. </calldryninfo>
  22. </hidden>
  23. <init>
  24. <menu>
  25. <item>
  26. <name>닫기</name>
  27. <func>fCloseWindow</func>
  28. </item>
  29. </menu>
  30. <hardcd/>
  31. </init>
  32. <send>
  33. <drid/>
  34. </send>
  35. <temp>
  36. <visitflag/>
  37. </temp>
  38. </root>
  39. </instance>
  40. <script type="javascript" ev:event="xforms-ready">
  41. <![CDATA[
  42. fInit(true);
  43. ]]>
  44. </script>
  45. <!-- 호출한의사인지 조회 -->
  46. <submission id="TRMNE05301" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/hidden/calldryninfo"/>
  47. <!-- 호출하고있는 pc가 응급실에 있는 pc의 맥어드레스인지 조회 -->
  48. <submission id="TRMMB04103" mediatype="application/x-www-form-urlencoded" method="post"/>
  49. <!-- 도착시간등록 -->
  50. <submission id="TXMNE05301" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/temp"/>
  51. <submission id="TRMMO31001" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/cond/callvisitinfo"/>
  52. <submission id="TXMMO31001" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send"/>
  53. </model>
  54. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  55. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  56. <script type="javascript" src="../../../emr/prcpmngtweb/js/MMO001.js"/>
  57. </xhtml:head>
  58. <xhtml:body pagewidth="800" pageheight="600" guideline="1,1200;2,789;">
  59. <group id="group1" style="left:0px; top:0px; width:775px; height:575px; ">
  60. <script type="javascript">
  61. <![CDATA[
  62. //초기화
  63. function fInit(isInit){
  64. model.setValue("/root/cond/drid","");
  65. model.setValue("/root/cond/cptdrid","");
  66. model.removeNodeset("/root/cond/callvisitinfo/callvisitinfolist");
  67. if(isInit){
  68. model.setValue("/root/temp/visitflag", "A");
  69. mmbfGetHardCodeInfo("/root/send/reqdata" , "/root/init/hardcd" , 46);
  70. }
  71. //포커스
  72. model.setFocus("ipt_drid");
  73. capt_drid.attribute("background-color") = '#feff17';
  74. capt_drid.attribute("border-color") = '#ffcc00';
  75. model.refresh();
  76. }
  77. //사번입력되면 캡션에 보여줌
  78. function fSetCaption(drid){
  79. var sDrId = drid.toUpperCase();
  80. model.setValue('/root/cond/cptdrid', sDrId);
  81. model.setValue('/root/cond/drid', sDrId);
  82. model.refresh();
  83. if(event.keyCode ==13){
  84. model.setFocus('btn_save');
  85. capt_drid.attribute("background-color") = '#ffffff';
  86. capt_drid.attribute("border-color") = '#c0c0c0';
  87. model.refresh();
  88. btn_save.dispatch('DOMActivate');
  89. }
  90. }
  91. //저장
  92. function fErVisitSaveNomalCall(){
  93. //응급실에서만 도착시간 입력이 가능합니다. '
  94. var hardcd = model.getValue("/root/init/hardcd/hardcd[hardcd='" + getUserInfo("macaddr") + "']/hardcd");
  95. if(hardcd == ""){
  96. messageBox("응급실에서만 도착시간 체크", "I006");
  97. setCaptionFocus(true);
  98. model.setValue("/root/cond/cptdrid", "");
  99. model.setValue("/root/cond/drid", "");
  100. model.refresh();
  101. fInit();
  102. return false;
  103. }
  104. //사번이 비어있을때
  105. if(model.getValue("/root/cond/drid") == ""){
  106. messageBox("사번을 입력하십시오.", "E");
  107. fInit();
  108. return;
  109. }
  110. model.makeValue("/root/send/drid" , model.getValue("/root/cond/drid"));
  111. if(!submit("TRMMO31001")){
  112. messageBox('해당의사의 호출여부 조회를 실패하였습니다.', 'E999');
  113. fInit();
  114. return;
  115. }
  116. var a = instance1.selectNodes("/root/cond/callvisitinfo/callvisitinfolist");
  117. if(a.length>0){
  118. //호출등록할 해당환자
  119. var patnm = "";
  120. for(var i = 1 ; i <=a.length ; i++){
  121. if(model.getValue("/root/cond/callvisitinfo/callvisitinfolist["+i+"]/visitrgstrid")=="-"){
  122. patnm=patnm+" "+model.getValue("/root/cond/callvisitinfo/callvisitinfolist["+i+"]/hngnm");
  123. }
  124. }
  125. var b = instance1.selectNodes("/root/cond/callvisitinfo/callvisitinfolist[visitrgstrid='-']");
  126. if(b.length>0){
  127. //도착시간 등록
  128. if(!submit("TXMMO31001")){
  129. messageBox('도착시간등록을 실패하였습니다.', 'E999');
  130. }else{
  131. messageBox(patnm+' 환자에 대한 도착시간이 등록되었습니다', 'E999');
  132. }
  133. }else{
  134. messageBox("이미 등록되었습니다.", "E");
  135. }
  136. fInit();
  137. }else{
  138. //해당 의사가 없을때
  139. messageBox('이미 도착등록을 하셨거나 호출되지 않았으므로 도착일시를 입력하실 수 없습니다.', 'E999');
  140. fInit();
  141. }
  142. }
  143. //도착의사저장
  144. function fErVisitSave(){
  145. if(fIsValid()){
  146. //저장
  147. model.removenode('/root/send');
  148. model.makeValue('/root/send/savedata', grd_savedata.getupdatedataAll('i'));
  149. if(!submit('TXMNE05301')){
  150. messageBox('도착시간등록을 실패하였습니다.', 'E999');
  151. //초기화
  152. fInit(false);
  153. return false;
  154. }else{
  155. messageBox('도착시간이 등록되었습니다.', 'E999');
  156. //초기화
  157. fInit(false);
  158. return true;
  159. }
  160. }
  161. }
  162. //20090622 dhkim
  163. //저장전 유효성체크
  164. function fIsValid(){
  165. //응급실에서만 도착시간 입력이 가능합니다. '
  166. var hardcd = model.getValue("/root/init/hardcd/hardcd[hardcd='" + getUserInfo("macaddr") + "']/hardcd");
  167. if(hardcd == ""){
  168. messageBox("응급실에서만 도착시간 체크", "I006");
  169. setCaptionFocus(true);
  170. model.setValue('/root/cond/cptdrid', '');
  171. model.setValue('/root/cond/drid', '');
  172. model.refresh();
  173. return false;
  174. }
  175. if(model.getValue("/root/cond/drid") == ""){
  176. messageBox("사번을 입력하십시오.", "E");
  177. setCaptionFocus(true);
  178. model.setValue('/root/cond/cptdrid', '');
  179. model.setValue('/root/cond/drid', '');
  180. model.refresh();
  181. return false;
  182. }
  183. //20090710 dhkim
  184. //변경요청사항 : * 응급의학과는 visit time을 찍지 않도록함.
  185. // * visit time은 진료과 단위로 한번만 찍어도 되도록 함. call받은 의사가 모두 안찍어도 됨.
  186. //1. 도착등록한 의사의 과를 조회한다.
  187. //2. 도착등록한 의사의 과가 호출된 과인지 조회한다.
  188. //3. 도착등록한 의사가 호출된 의사인지 조회한다.(호출되지 않은 의사가 등록해도 되는건지 확인할것)
  189. //4. 도착등록한 의사가 도착등록 했는지 조회한다.
  190. //5. 도착등록이 안되어있으면 해당의사 소속된 과의 도착정보를 모두 업데이트한다
  191. //20090624 dhkim
  192. //해당의사가 sms 호출한 의사인지 여부를 조회
  193. model.removenode('/root/send');
  194. model.makeValue("/root/send/searchinfo/drid", model.getValue('/root/cond/drid'));
  195. model.makeValue("/root/send/searchinfo/srchflag", "call");
  196. if(!submit("TRMNE05301")){
  197. messageBox('해당의사가 sms 호출한 의사인지 여부 조회를 실패하였습니다.', 'E999');
  198. setCaptionFocus(true);
  199. model.setValue('/root/cond/cptdrid', '');
  200. model.setValue('/root/cond/drid', '');
  201. model.refresh();
  202. return false;
  203. }else{
  204. if(getNodesetCount("/root/hidden/calldryninfo/calldryninfolist") < 1){
  205. messageBox('호출되지 않은 선생님은 도착일시를 입력하실 수 없습니다.', 'E999');
  206. model.setValue('/root/cond/cptdrid', '');
  207. model.setValue('/root/cond/drid', '');
  208. model.refresh();
  209. setCaptionFocus(true);
  210. return false;
  211. }
  212. }
  213. //20090624 dhkim
  214. //이미도착등록했는지 조회
  215. model.removenode('/root/send');
  216. model.makeValue("/root/send/searchinfo/drid", model.getValue('/root/cond/drid'));
  217. model.makeValue("/root/send/searchinfo/srchflag", "arrv");
  218. //★TRMNE05301 에서 조회한 결과값을 가지고 저장을 실행함★
  219. if(!submit("TRMNE05301")){
  220. messageBox('도착등록여부 조회를 실패하였습니다.', 'E999');
  221. setCaptionFocus(true);
  222. model.setValue('/root/cond/cptdrid', '');
  223. model.setValue('/root/cond/drid', '');
  224. model.refresh();
  225. return false;
  226. }else{
  227. if(getNodesetCount("/root/hidden/calldryninfo/calldryninfolist") < 1){
  228. messageBox('이미 도착등록을 하셨거나 호출되지 않았으므로 도착일시를 입력하실 수 없습니다.', 'E999');
  229. setCaptionFocus(true);
  230. model.setValue('/root/cond/cptdrid', '');
  231. model.setValue('/root/cond/drid', '');
  232. model.refresh();
  233. return false;
  234. }
  235. }
  236. return true;
  237. }
  238. //20090622 dhkim
  239. //입력한 내용을 캡션에 보여지게함
  240. //keyStr : event.keyCode
  241. function fSetCaption(keyStr){
  242. var sDrId = keyStr.toUpperCase();
  243. model.setValue('/root/cond/cptdrid', sDrId);
  244. model.setValue('/root/cond/drid', sDrId);
  245. model.refresh();
  246. if(sDrId.length >= 5){
  247. if(sDrId.substr(0,5) == "KNUDH") {
  248. if(sDrId.length >= 10){
  249. model.setFocus('btn_save');
  250. btn_save.dispatch('DOMActivate');
  251. }
  252. } else {
  253. model.setFocus('btn_save');
  254. btn_save.dispatch('DOMActivate');
  255. }
  256. }
  257. }
  258. //20090624 dhkim 캡션 포커스 선택상태 변경
  259. function setCaptionFocus(isSelected, itemKd){
  260. if(isSelected){
  261. //선택된상태로 보여짐
  262. capt_drid.attribute("background-color") = '#feff17';
  263. capt_drid.attribute("border-color") = '#ffcc00';
  264. if(itemKd != 'input'){
  265. model.setFocus("ipt_drid");
  266. }
  267. }else{
  268. //선택되지않은 상태로 보여짐
  269. capt_drid.attribute("background-color") = '#ffffff';
  270. capt_drid.attribute("border-color") = '#c0c0c0';
  271. }
  272. //실제포커스는 ipt_drid로 가게 할것
  273. }
  274. //창닫기
  275. function fCloseWindow(){
  276. model.close();
  277. }
  278. ]]>
  279. </script>
  280. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:185px; height:14px; ">응급실 - Visit 등록</caption>
  281. <shape id="roundrect1" appearance="roundrect" ellipsewidth="20" ellipseheight="20" style="left:40px; top:115px; width:650px; height:220px; "/>
  282. <caption id="caption1" style="left:50px; top:190px; width:165px; height:70px; font-family:굴림체; font-size:48pt; font-weight:bolder; ">사번:</caption>
  283. <input id="ipt_drid" ref="/root/cond/drid" style="left:245px; top:270px; width:120px; height:19px; opacity:0; cursor:no; focus-rect:hidden; unloadmark:hidden; ">
  284. <script type="javascript" ev:event="xforms-value-changed">
  285. <![CDATA[
  286. fSetCaption(ipt_drid.value);
  287. ]]>
  288. </script>
  289. <script type="javascript" ev:event="onkeyup">
  290. <![CDATA[
  291. fSetCaption(ipt_drid.currentText);
  292. ]]>
  293. </script>
  294. </input>
  295. <button id="btn_save" class="btn4_letter2" navindex="3" disable.background-image="../../../com/commonweb/images/dis_btn4_letter2.gif" style="left:80px; top:290px; width:56px; height:22px; background-image:../../../com/commonweb/images/btn4_letter2.gif; ">
  296. <caption>등록</caption>
  297. <script type="javascript" ev:event="DOMActivate">
  298. <![CDATA[
  299. var visitflag = model.getValue("/root/temp/visitflag");
  300. if (visitflag =="A") {
  301. fErVisitSaveNomalCall();
  302. } else {
  303. fErVisitSave();//visit등록
  304. }
  305. ]]>
  306. </script>
  307. </button>
  308. <select1 id="radio1" ref="/root/temp/visitflag" appearance="full" cellspacing="270" cols="2" overflow="visible" style="left:90px; top:70px; width:540px; height:35px; font-size:18pt; font-weight:bold; border-style:none; ">
  309. <choices>
  310. <item>
  311. <label/>
  312. <value>A</value>
  313. </item>
  314. <item>
  315. <label/>
  316. <value>B</value>
  317. </item>
  318. </choices>
  319. <script type="javascript" ev:event="xforms-value-changed">
  320. <![CDATA[
  321. fInit();
  322. ]]>
  323. </script>
  324. <script type="javascript" ev:event="onclick">
  325. <![CDATA[
  326. fInit();
  327. ]]>
  328. </script>
  329. </select1>
  330. <caption id="caption2" style="left:110px; top:55px; width:245px; height:50px; font-size:20pt; font-weight:bold; ">
  331. <![CDATA[일반의사호출 등록]]>
  332. <script type="javascript" ev:event="onclick">
  333. <![CDATA[
  334. model.setValue("/root/temp/visitflag", "A");
  335. fInit();
  336. model.refresh();
  337. ]]>
  338. </script>
  339. </caption>
  340. <caption id="caption3" style="left:405px; top:55px; width:245px; height:50px; font-size:20pt; font-weight:bold; ">
  341. <![CDATA[중증의사호출 등록]]>
  342. <script type="javascript" ev:event="onclick">
  343. <![CDATA[
  344. model.setValue("/root/temp/visitflag", "B");
  345. fInit();
  346. model.refresh();
  347. ]]>
  348. </script>
  349. </caption>
  350. <caption id="capt_drid" ref="/root/cond/cptdrid" navindex="2" style="left:215px; top:150px; width:455px; height:150px; font-family:굴림체; font-size:65pt; font-weight:bold; color:#333399; text-align:center; vertical-align:middle; background-color:#ffffff; border-color:#c0c0c0; border-style:solid; ">
  351. <hint>
  352. <![CDATA[사번을입력하세요]]>
  353. </hint>
  354. <script type="javascript" ev:event="onclick">
  355. <![CDATA[
  356. model.setFocus("ipt_drid");
  357. ]]>
  358. </script>
  359. </caption>
  360. <datagrid id="grd_savedata" nodeset="/root/hidden/calldryninfo/calldryninfolist" visibility="hidden" caption="pid^indd^cretno^visitno^seqno^orddeptcd^drid^eqtype^intm^arvtime^arvrldt" colsep="^" colwidth="44, 35, 55, 37, 34, 57, 37, 56, 49, 25, 100" mergecellsfixedrows="bycolrec" rowsep="|" style="left:130px; top:345px; width:540px; height:66px; ">
  361. <col ref="pid"/>
  362. <col ref="indd"/>
  363. <col ref="cretno"/>
  364. <col ref="visitno"/>
  365. <col ref="seqno"/>
  366. <col ref="orddeptcd"/>
  367. <col ref="drid"/>
  368. <col ref="eqtype"/>
  369. <col ref="intm"/>
  370. <col ref="arvtime"/>
  371. <col ref="arvrldt"/>
  372. </datagrid>
  373. </group>
  374. </xhtml:body>
  375. </xhtml:html>