SPMMO32200_Visit.xrw 15 KB

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