SPMMO50500_재원환자조회.xrw 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  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. <main>
  10. <cond>
  11. <srchdd/>
  12. <orddeptcd/>
  13. <ordgubun>T</ordgubun>
  14. <orddrid/>
  15. <orddeptnm/>
  16. <orddrnm/>
  17. <ordgubunnm/>
  18. </cond>
  19. <patinfo>
  20. <patlist/>
  21. </patinfo>
  22. </main>
  23. <send>
  24. <reqdata/>
  25. <data17>
  26. <pid/>
  27. <gubun/>
  28. <indd/>
  29. <cretno/>
  30. <mskind/>
  31. <histstat/>
  32. <ioflag/>
  33. </data17>
  34. <data60>
  35. <pid/>
  36. <usernm/>
  37. <gubun/>
  38. <cardid1/>
  39. <indd/>
  40. </data60>
  41. </send>
  42. <init>
  43. <chkflag>N</chkflag>
  44. <orddept/>
  45. <prcpkindcd/>
  46. <prcpclscd/>
  47. <spcldrug/>
  48. <prcpstatcd/>
  49. <orddrlist/>
  50. </init>
  51. <hidden>
  52. <h_receipt>
  53. <receipt>
  54. <pid/>
  55. <hngnm/>
  56. <sex/>
  57. <age/>
  58. <religncd/>
  59. <rrgstno/>
  60. <orddeptcd/>
  61. <orddeptnm/>
  62. <specordyn/>
  63. <medispclid/>
  64. <wardcd/>
  65. <roomcd/>
  66. <indd/>
  67. <barcode/>
  68. </receipt>
  69. </h_receipt>
  70. <rfid_result1>
  71. <msg/>
  72. </rfid_result1>
  73. <rfid_result2>
  74. <cardid1/>
  75. </rfid_result2>
  76. </hidden>
  77. </root>
  78. </instance>
  79. <script type="javascript">
  80. <![CDATA[
  81. function fReqGetPatList() {
  82. model.resetInstanceNode("/root/main/prcpinfo/prcplist");
  83. submit("TRMMO50501");
  84. //20170629 이돈희 추가 ; 조회시 chkall 해제
  85. chkall.value = "F";
  86. }
  87. /**
  88. * @desc : 재원환자 리스트 출력
  89. * @
  90. * @param :
  91. * @return :
  92. * @author : 엄영만
  93. * @---------------------------------------------------
  94. */
  95. function fPrtPatList() {
  96. var rptid = "RPMMO50500";
  97. var desNode = "/root/main/patinfo/patlist";
  98. model.makeValue("/root/main/cond/orddeptnm", cmb_orddept.label);
  99. model.makeValue("/root/main/cond/orddrnm", cmb_orddrid.label);
  100. model.makeValue("/root/main/cond/ordgubunnm", radio1.label);
  101. exeReportPreview(rptid, "XMLSTR", desNode);
  102. }
  103. //20170712 이돈희 추가 : 환자 및 보호자 RFID 출력 실행
  104. function fExecutePrintRFID(iIndex)
  105. {
  106. //출력간 Delay Time
  107. var varSleepTime = 2000;
  108. model.removeNodeset("/root/hidden/h_receipt/receipt");
  109. model.removeNodeset("/root/send/data17");
  110. model.makeNode("/root/hidden/h_receipt/receipt/pid");
  111. model.makeNode("/root/hidden/h_receipt/receipt/hngnm");
  112. model.makeNode("/root/hidden/h_receipt/receipt/hngnm2");
  113. model.makeNode("/root/hidden/h_receipt/receipt/sex");
  114. model.makeNode("/root/hidden/h_receipt/receipt/age");
  115. model.makeNode("/root/hidden/h_receipt/receipt/religncd");
  116. model.makeNode("/root/hidden/h_receipt/receipt/rrgstno");
  117. model.makeNode("/root/hidden/h_receipt/receipt/orddeptcd");
  118. model.makeNode("/root/hidden/h_receipt/receipt/orddeptnm");
  119. model.makeNode("/root/hidden/h_receipt/receipt/specordyn");
  120. model.makeNode("/root/hidden/h_receipt/receipt/medispclid");
  121. model.makeNode("/root/hidden/h_receipt/receipt/wardcd");
  122. model.makeNode("/root/hidden/h_receipt/receipt/wardcd2");
  123. model.makeNode("/root/hidden/h_receipt/receipt/roomcd");
  124. model.makeNode("/root/hidden/h_receipt/receipt/indd");
  125. model.makeNode("/root/hidden/h_receipt/receipt/barcode");
  126. model.makeNode("/root/hidden/h_receipt/receipt/newprintflag");
  127. model.makeNode("/root/hidden/h_receipt/receipt/btype");
  128. model.makeNode("/root/hidden/h_receipt/receipt/rfidyn");
  129. model.makeNode("/root/hidden/h_receipt/receipt/rfidcardid1");
  130. model.makeNode("/root/hidden/h_receipt/receipt/deptplce");
  131. pPid = model.getValue("/root/main/patinfo/patlist["+iIndex+"]/pid");
  132. pIndd = model.getValue("/root/main/patinfo/patlist["+iIndex+"]/orddd");
  133. pCretno = model.getValue("/root/main/patinfo/patlist["+iIndex+"]/cretno");
  134. pMskind = model.getValue("/root/main/patinfo/patlist["+iIndex+"]/mskind") ;
  135. pHiststat = "Y";
  136. pErvisityn = "";
  137. //키 pam.pmihinpt.pid / indd / cretno / mskind
  138. model.makeValue("/root/send/data17/pid", pPid);
  139. model.makeValue("/root/send/data17/indd", pIndd);
  140. model.makeValue("/root/send/data17/cretno", pCretno);
  141. model.makeValue("/root/send/data17/mskind", pMskind);
  142. model.makeValue("/root/send/data17/histstat", pHiststat); // Y 고정
  143. model.makeValue("/root/send/data17/ioflag", "");
  144. model.makeValue("/root/send/data17/ervisityn", pErvisityn); // 공백
  145. model.makeValue("/root/send/data17/ipaddr", app.clientIp); // 클라이언트 IP
  146. //환자일 경우에만 조회
  147. submit("TRPMI00115");
  148. var inpt_pid = model.getValue("/root/hidden/h_receipt/receipt/pid");
  149. var rfidyn = model.getValue("/root/hidden/h_receipt/receipt/rfidyn");
  150. //alert(inpt_pid);
  151. if (inpt_pid == null || inpt_pid == " " || inpt_pid == "")
  152. {
  153. messageBox("입원 환자가 아닙니다.! 환자 팔찌를 발행할 수 없습니다.","E999","");
  154. return false;
  155. }
  156. // RFID 출력 시
  157. else if (rfidyn == 'Y')
  158. {
  159. //환자 RFID 출력"P"
  160. fPrintRFID(
  161. inpt_pid
  162. ,""
  163. ,""
  164. ,"P");
  165. sleep(varSleepTime);
  166. //보호자 RFID 출력 "R"
  167. fPrintRFID(
  168. inpt_pid
  169. ,""
  170. ,""
  171. ,"R");
  172. sleep(varSleepTime);
  173. }
  174. }
  175. //20170629 이돈희 추가 : pam/ipatmngtweb/js/PMI001.js의 pmifPrintBarCode 참고
  176. function fPrintRFID(pPid, pRoomyn, pIsNEW, pGubun)
  177. {
  178. if(pGubun == "R")//보호자 인 경우
  179. {
  180. model.makeValue("/root/send/data17/gubun", "R"); // 보호자
  181. submit("TRPMC06608");
  182. }
  183. if (pRoomyn == undefined || pRoomyn == null)
  184. {
  185. pRoomyn = "N";
  186. }
  187. // OCX 버전 로딩 구분
  188. if (pIsNEW == undefined || pIsNEW == null)
  189. {
  190. pIsNEW = "";
  191. }
  192. else
  193. {
  194. pIsNEW = "NEW"
  195. }
  196. var hngnm2 = model.getValue("/root/hidden/h_receipt/receipt/hngnm2");
  197. var btype = model.getValue("/root/hidden/h_receipt/receipt/btype");
  198. //경북대 병원 성별표시 한글로 바꿈
  199. var sex = model.getValue("/root/hidden/h_receipt/receipt/sex");
  200. if( sex == 'M' )
  201. {
  202. sex = '남';
  203. }
  204. else
  205. {
  206. sex = '여';
  207. }
  208. var age = model.getValue("/root/hidden/h_receipt/receipt/age") + "세";
  209. var rrgstno = model.getValue("/root/hidden/h_receipt/receipt/rrgstno").substr(0,2) + "."
  210. + model.getValue("/root/hidden/h_receipt/receipt/rrgstno").substr(2,2) + "."
  211. + model.getValue("/root/hidden/h_receipt/receipt/rrgstno").substr(4,2);
  212. var wardcd = model.getValue("/root/hidden/h_receipt/receipt/wardcd");//병동
  213. var roomcd = model.getValue("/root/hidden/h_receipt/receipt/roomcd");//병실
  214. var deptplce = model.getValue("/root/hidden/h_receipt/receipt/deptplce");//위치
  215. var cardid1;
  216. var param;
  217. if(pGubun == "P")
  218. {
  219. cardid1 = model.getValue("/root/hidden/h_receipt/receipt/rfidcardid1");//rfid번호
  220. param = pPid + "|" + hngnm2 + "|" + btype + "|" + sex + "|" + age + "|" + rrgstno + "|" + wardcd + " " + roomcd + "호 (" + deptplce + ")|" + cardid1;
  221. }
  222. else
  223. {
  224. cardid1 = model.getValue("/root/hidden/rfid_result2/cardid1");
  225. param = pPid + "|" // 등록번호
  226. + hngnm2 + "|" // 환자성명
  227. + "(보호자)" + "|" // 혈액형(보호자증의 경우 '보호자')
  228. + "" + "|" // 성별(보호자증의 경우 공란)
  229. + "" + "|" // 나이(보호자증의 경우 공란)
  230. + "" + "|" // 생년월일(보호ㄷ자증의 경우 공란)
  231. + wardcd + " " + roomcd + "호 (" + deptplce + ")|" // 병실
  232. + cardid1 // RFID 카드번호
  233. ;
  234. }
  235. //alert(param);
  236. try{
  237. // 1. RFID 출력
  238. var activeObj = new ActiveXObject("WScript.Shell");
  239. activeObj.CurrentDirectory = "C:/Program Files/himed/components/OneTech";
  240. var fileName = "RfidLabelPrt.exe " + param;
  241. activeObj.Run(fileName);
  242. // 2. RFID 데이터 저장
  243. model.makeValue("/root/send/data60/pid", pPid);
  244. model.makeValue("/root/send/data60/usernm", hngnm2);
  245. model.makeValue("/root/send/data60/gubun", pGubun);
  246. model.makeValue("/root/send/data60/cardid1", cardid1);
  247. model.makeValue("/root/send/data60/indd", model.getValue("/root/hidden/h_receipt/receipt/indd"));
  248. submit("TXPMC06606");
  249. }
  250. catch(e)
  251. {
  252. alert("RFID 카드 등록오류입니다. \r\n동일현상 반복 시 전산실로 문의하십시오.");
  253. }
  254. return;
  255. }
  256. //20170629 이돈희 추가 : SLEEP 추가
  257. function sleep(msecs)
  258. {
  259. var start =new Date().getTime();
  260. var cur=start;
  261. while(cur-start<msecs)
  262. {
  263. cur=new Date().getTime();
  264. }
  265. }
  266. //20170628 이돈희 추가 : 재원환자 리스트 RFID 출력
  267. function fRFIDPrtPatList()
  268. {
  269. var varSelectCount = instance1.selectNodes("/root/main/patinfo/patlist[RFIDSelect='T']");
  270. if(varSelectCount.length <1)
  271. {
  272. messageBox("선택된 환자가", "I004");
  273. return;
  274. }
  275. for(var iIndex = 1 ; iIndex < datagrid1.rows ; iIndex++)
  276. {
  277. var varSelStatus = model.getValue("/root/main/patinfo/patlist["+iIndex+"]/RFIDSelect");
  278. if(varSelStatus == "T")
  279. {
  280. fExecutePrintRFID(iIndex);
  281. }
  282. }
  283. }
  284. ]]>
  285. </script>
  286. <submission id="TRMMO50501" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/main/cond" resultref="/root/main/patinfo"/>
  287. <submission id="TRMMB04102" mediatype="application/x-www-form-urlencoded" method="post"/>
  288. <!-- 20170628 이돈희 추가 : RFID -->
  289. <submission id="TRPMI00115" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/data17" resultref="/root/hidden/h_receipt"/>
  290. <submission id="TXPMC06606" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/data60" resultref="/root/hidden/rfid_result1"/>
  291. <submission id="TRPMC06608" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/data17" resultref="/root/hidden/rfid_result2"/>
  292. <script type="javascript" ev:event="xforms-ready">
  293. <![CDATA[
  294. model.setValue("/root/main/cond/srchdd" , getCurrentDate()); //종료일자는 현재일자
  295. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept" , "A"); //부서코드 콤보
  296. addComboInstance("/root/init/orddept", "deptcd^depthngnm", "-^전체", "dept"); //진료과 전체항목 추가
  297. model.setValue("/root/main/cond/orddeptcd", getUserInfo("dutplcecd"));
  298. if(model.getValue("/root/main/cond/orddeptcd") != "-") {
  299. model.removeNodeset("/root/init/orddrlist");
  300. model.makeNode("/root/init/orddrlist/usercombo");
  301. mmbfGetUserComboList("/root/send/reqdata", "/root/init/orddrlist", cmb_orddept.value, "0330", "", "M", "", "", "P");
  302. addComboInstance("/root/init/orddrlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  303. cmb_orddrid.select(0);
  304. model.refresh();
  305. } else {
  306. model.makeNode("/root/init/orddrlist/usercombo");
  307. addComboInstance("/root/init/orddrlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  308. cmb_orddrid.select(0);
  309. }
  310. btn_req.dispatch("DOMActivate");
  311. model.refresh();
  312. ]]>
  313. </script>
  314. </model>
  315. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  316. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  317. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  318. <script type="javascript" src="../../../emr/prcpmngtweb/js/MMO001.js"/>
  319. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  320. <!-- 20170628 이돈희 추가 : RFID -->
  321. <script type="javascript" src="../../../pam/pamcomnweb/js/PAM.js"/>
  322. <script type="javascript" src="../../../pam/ipatmngtweb/js/PMI001.js"/>
  323. </xhtml:head>
  324. <xhtml:body pagewidth="1030" pageheight="750" guideline="1,1009;" style="margin-left:8; margin-top:8; margin-right:8; margin-bottom:8; ">
  325. <shape id="roundrect1" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:20px; width:1010px; height:40px; background-color:#fffbf2; border-color:#ffd799; "/>
  326. <caption id="caption9" class="tit_1" style="left:0px; top:0px; width:160px; height:14px; vertical-align:middle; ">재원환자조회</caption>
  327. <caption id="caption1" class="search_name" style="left:309px; top:30px; width:86px; height:17px; vertical-align:middle; ">진 료 과 :</caption>
  328. <select1 id="cmb_orddept" ref="/root/main/cond/orddeptcd" class="combo_default" appearance="minimal" editmode="search" style="left:393px; top:30px; width:147px; height:19px; ">
  329. <choices>
  330. <itemset nodeset="/root/init/orddept/dept">
  331. <label ref="depthngnm"/>
  332. <value ref="deptcd"/>
  333. </itemset>
  334. </choices>
  335. <script type="javascript" ev:event="xforms-value-changed">
  336. <![CDATA[
  337. if(cmb_orddept.value != "-") {
  338. model.removeNodeset("/root/init/orddrlist");
  339. model.makeNode("/root/init/orddrlist/usercombo");
  340. mmbfGetUserComboList("/root/send/reqdata", "/root/init/orddrlist", cmb_orddept.value, "0330", "", "M", "", "", "P");
  341. addComboInstance("/root/init/orddrlist", "userid^usernm", "-^전체", "usercombo"); //의사콤보 전체항목 추가
  342. cmb_orddrid.select(0);
  343. btn_req.dispatch("DOMActivate");
  344. model.refresh();
  345. }
  346. ]]>
  347. </script>
  348. </select1>
  349. <caption id="caption4" class="search_name" style="left:11px; top:30px; width:95px; height:17px; vertical-align:middle; ">구분 :</caption>
  350. <select1 id="radio1" ref="/root/main/cond/ordgubun" appearance="full" cellspacing="15" cols="4" rows="1" overflow="visible" style="left:70px; top:30px; width:230px; height:20px; border-style:none; ">
  351. <choices>
  352. <item>
  353. <label>전체</label>
  354. <value>T</value>
  355. </item>
  356. <item>
  357. <label>병동</label>
  358. <value>I</value>
  359. </item>
  360. <item>
  361. <label>응급</label>
  362. <value>E</value>
  363. </item>
  364. <item>
  365. <label>DSC</label>
  366. <value>D</value>
  367. </item>
  368. </choices>
  369. <script type="javascript" ev:event="xforms-value-changed">
  370. <![CDATA[
  371. btn_req.dispatch("DOMActivate");
  372. model.refresh();
  373. ]]>
  374. </script>
  375. </select1>
  376. <caption id="caption5" class="search_name" style="left:553px; top:30px; width:95px; height:17px; vertical-align:middle; ">전 문 의 :</caption>
  377. <select1 id="cmb_orddrid" ref="/root/main/cond/orddrid" class="combo_default" appearance="minimal" itemcount="30" style="left:640px; top:30px; width:85px; height:19px; ">
  378. <choices>
  379. <itemset nodeset="/root/init/orddrlist/usercombo">
  380. <label ref="usernm"/>
  381. <value ref="userid"/>
  382. </itemset>
  383. </choices>
  384. <script type="javascript" ev:event="xforms-value-changed">
  385. <![CDATA[
  386. btn_req.dispatch("DOMActivate");
  387. model.refresh();
  388. ]]>
  389. </script>
  390. </select1>
  391. <line id="line3" style="x1:869px; y1:30px; x2:869px; y2:50px; border-color:#ffe4bb; border-left-style:solid; "/>
  392. <line id="line1" class="line_1" style="x1:0px; y1:66px; x2:1009px; y2:67px; "/>
  393. <datagrid id="datagrid1" nodeset="/root/main/patinfo/patlist" caption="RFID ^구분^병실^등록번호^성명^S/A^진료과^전문의^담당의^진단명^내원일시" colsep="^" colwidth="49, 40, 70, 70, 100, 50, 110, 75, 75, 271, 110, 100" ellipsis="true" explorerbar="sortshow" rowheader="seq" rowsep="|" tooltip="true" style="left:0px; top:71px; width:1009px; height:674px; ">
  394. <col checkvalue="T,N" ref="RFIDSelect" type="checkbox" visibility="hidden"/>
  395. <col disabled="true" ref="ordtype" type="combo" style="text-align:center; ">
  396. <choices>
  397. <item>
  398. <label>병동</label>
  399. <value>I</value>
  400. </item>
  401. <item>
  402. <label>응급</label>
  403. <value>E</value>
  404. </item>
  405. <item>
  406. <label>DSC</label>
  407. <value>D</value>
  408. </item>
  409. </choices>
  410. </col>
  411. <col ref="roomcd" style="text-align:center; "/>
  412. <col ref="pid" style="text-align:center; "/>
  413. <col ref="hngnm" style="text-align:center; "/>
  414. <col ref="sa" style="text-align:center; "/>
  415. <col ref="orddeptnm"/>
  416. <col ref="orddrnm" style="text-align:center; "/>
  417. <col ref="atdoctnm" style="text-align:center; "/>
  418. <col ref="diagnm"/>
  419. <col ref="indt" format="yyyy-mm-dd hh:nn" style="text-align:center; "/>
  420. <script type="javascript" ev:event="onaftersort">
  421. <![CDATA[
  422. datagrid1.gridToInstance();
  423. ]]>
  424. </script>
  425. </datagrid>
  426. <button id="btn_print" class="btn1_letter2" style="left:882px; top:30px; width:56px; height:22px; background-image:../../../com/commonweb/images/btn1_letter2.gif; ">
  427. <caption>출력</caption>
  428. <script type="javascript" ev:event="DOMActivate">
  429. <![CDATA[
  430. fPrtPatList();
  431. ]]>
  432. </script>
  433. </button>
  434. <button id="btn_req" class="btn1_letter2" style="left:940px; top:30px; width:56px; height:22px; background-image:../../../com/commonweb/images/btn1_letter2.gif; ">
  435. <caption>조회</caption>
  436. <script type="javascript" ev:event="DOMActivate">
  437. <![CDATA[
  438. fReqGetPatList();
  439. ]]>
  440. </script>
  441. </button>
  442. <button id="button1" class="btn1_fetter4" visibility="hidden" style="left:859px; top:0px; width:80px; height:22px; background-image:../../../com/commonweb/images/btn1_letter2.gif; ">
  443. <caption>RFID출력</caption>
  444. <script type="javascript" ev:event="DOMActivate">
  445. <![CDATA[
  446. fRFIDPrtPatList();
  447. ]]>
  448. </script>
  449. </button>
  450. <bool id="chkall" visibility="hidden" checkvalue="T,F" ref="/root/init/chkflag" style="left:50px; top:70px; width:20px; height:25px; ">
  451. <script type="javascript" ev:event="xforms-select">
  452. <![CDATA[
  453. //20170629 이돈희 추가 : Check all 추가
  454. for( var iIndex = 1 ; iIndex < datagrid1.rows ; iIndex++)
  455. {
  456. datagrid1.valueMatrix( iIndex, datagrid1.colRef("RFIDSelect") ) = chkall.value ;
  457. }
  458. datagrid1.rebuild();
  459. ]]>
  460. </script>
  461. <script type="javascript" ev:event="xforms-deselect">
  462. <![CDATA[
  463. //20170629 이돈희 추가 : Check all 추가
  464. for( var iIndex = 1 ; iIndex < datagrid1.rows ; iIndex++){
  465. datagrid1.valueMatrix( iIndex, datagrid1.colRef("RFIDSelect") ) = chkall.value ;
  466. }
  467. datagrid1.rebuild();
  468. ]]>
  469. </script>
  470. </bool>
  471. </xhtml:body>
  472. </xhtml:html>