SPMMO15800_기초임상정보.xrw 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. <?xml version="1.0" encoding="UTF-8"?>
  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. <pid/>
  12. <testdd/>
  13. <hngnm/>
  14. <inptpath/>
  15. <inptpathflag/>
  16. </cond>
  17. <patinfo>
  18. <patinfolist/>
  19. </patinfo>
  20. <patbaseinfo>
  21. <patbaseinfo>
  22. <status/>
  23. <chekflag/>
  24. <pid/>
  25. <testdd/>
  26. <inptpath/>
  27. <inptpathflag/>
  28. <testitemcd/>
  29. <testitemnm/>
  30. <testrsltcnts/>
  31. <unitnm/>
  32. <exchval/>
  33. </patbaseinfo>
  34. </patbaseinfo>
  35. <patbasehistinfo>
  36. <patbasehistinfo/>
  37. </patbasehistinfo>
  38. </main>
  39. <send>
  40. <reqdata/>
  41. <savedata/>
  42. </send>
  43. <hidden/>
  44. <temp>
  45. <patbaseinfo/>
  46. </temp>
  47. <init/>
  48. </root>
  49. </instance>
  50. <submission id="TRMMO15801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/patbaseinfo"/>
  51. <submission id="TXMMO15801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/savedata" resultref="/root/main/patbaseinfo"/>
  52. <submission id="TRMMO15802" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/patbasehistinfo"/>
  53. </model>
  54. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  55. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  56. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  57. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  58. <script type="javascript" ev:event="xforms-ready">
  59. <![CDATA[
  60. fInitialize_SPMMO15800();
  61. ]]>
  62. </script>
  63. <script type="javascript">
  64. <![CDATA[
  65. /*
  66. * 화면 초기화
  67. * opener화면에서 등록번호(pid), 환자명(hngnm), 입력화면ID(inptpath), 입력화면구분(inptpathflag)를 얻는다.
  68. *
  69. */
  70. function fInitialize_SPMMO15800() {
  71. model.removeNodeset("/root/main/patbaseinfo/patbaseinfo");
  72. model.removeNodeset("/root/main/patbasehistinfo/patbasehistinfo");
  73. model.setValue("/root/main/cond/testdd" , getCurrentDate());
  74. if(checkOpener()){
  75. var pid = opener.javascript.getParameter("SPMMO15800_pid");
  76. var hngnm = opener.javascript.getParameter("SPMMO15800_hngnm");
  77. var inptpath = opener.javascript.getParameter("SPMMO15800_inptpath");
  78. var inptpathflag = opener.javascript.getParameter("SPMMO15800_inptpathflag");
  79. if(inptpath == ""){ //입력화면ID가 없는 경우, opener의 화면ID로
  80. inptpath = opener.javascript.getScreenID();
  81. }
  82. if(inptpathflag == ""){
  83. inptpathflag = "P"; //입력화면구분이 없는 경우, default는 프로그램
  84. }
  85. model.setValue("/root/main/cond/pid" , pid);
  86. model.setValue("/root/main/cond/hngnm", hngnm);
  87. model.setValue("/root/main/cond/inptpath", inptpath);
  88. model.setValue("/root/main/cond/inptpathflag", inptpathflag);
  89. fReqGetPatBaseClincInfo(pid, getCurrentDate(), inptpath, inptpathflag); //환자기초임상정보 조회
  90. model.refresh();
  91. }
  92. }
  93. /**
  94. * 환자 기초임상정보 조회
  95. * @param
  96. * pid 등록번호
  97. * testdd 검사일자
  98. * inptpath 화면ID, 서식코드
  99. * inptpathflag 화면경로구분(P:프로그램, D:서식)
  100. * testitemcds검사항목코드
  101. * setflag SET구분, useflag사용구분(default설정)
  102. */
  103. function fReqGetPatBaseClincInfo(pid, testdd, inptpath, inptpathflag, testitemcds){
  104. model.removeNodeset("/root/send/reqdata");
  105. model.makeValue("/root/send/reqdata/pid", pid);
  106. model.makeValue("/root/send/reqdata/testdd", testdd);
  107. model.makeValue("/root/send/reqdata/inptpath", inptpath);
  108. model.makeValue("/root/send/reqdata/inptpathflag", inptpathflag);
  109. model.makeValue("/root/send/reqdata/testitemcds", testitemcds);
  110. if(submit("TRMMO15801")){
  111. model.copyNode("/root/temp/patbaseinfo", "/root/main/patbaseinfo");
  112. }
  113. }
  114. /**
  115. * 두 node를 동일여부를 비교함(selectNodes
  116. * @param
  117. * node1,2 : 비교할 node path
  118. * skipnode1,2 : 비교에서 제외할 nodename
  119. */
  120. function fCompareEqualNode(desnode, srcnode, skipnode1, skipnode2){
  121. var node = instance1.selectSingleNode(desnode);
  122. var node2 = instance1.selectSingleNode(srcnode);
  123. var nodeList = node.childNodes;
  124. var nodeList2 = node2.childNodes;
  125. while(childNode = nodeList.nextNode()){
  126. childNode2 = nodeList2.nextNode();
  127. if(childNode.nodeName == skipnode1 || childNode.nodeName == skipnode2){ //처리구분에 관련된 node는 비교대상에서 열외
  128. continue;
  129. }
  130. if(childNode.NodeValue != childNode2.NodeValue){
  131. return false; //값이 다른 경우 false
  132. }
  133. }
  134. return true; //값이 같은 경우 true
  135. }
  136. /**
  137. * 환자 기초임상이력 정보 조회
  138. * @param
  139. * pid : 등록번호
  140. * testitemcd : 검사항목코드
  141. */
  142. function fReqGetPatBaseClincHistInfo(pid, testitemcd){
  143. model.removeNodeset("/root/send/reqdata");
  144. model.makeValue("/root/send/reqdata/pid", pid);
  145. model.makeValue("/root/send/reqdata/testitemcd", testitemcd);
  146. if(submit("TRMMO15802")){
  147. }
  148. }
  149. //환자 등록번호를 통한 환자 이름 가져오기
  150. /*
  151. function fPatSrch(s_val, flag){
  152. if(flag == "1"){
  153. model.makeValue("/root/temp/pid", s_val);
  154. } else if(flag == "2"){
  155. model.makeValue("/root/temp/hngnm", s_val);
  156. }
  157. model.makeValue("/root/temp/srchcond", flag);
  158. model.makeValue("/root/temp/autoflag","Y"); // 1건인경우 자동으로닫힘
  159. model.resetInstanceNode("/root/main/patinfo/patinfolist");
  160. modal("SPPMC02500", 1,10, 10, "SPPMC02500", "/root/temp", "/root/send");
  161. model.refresh();
  162. }*/
  163. ]]>
  164. </script>
  165. </xhtml:head>
  166. <xhtml:body class="radio_search" scroll="auto" pagewidth="588" onBlur="window.focus()" pageheight="630" guideline="1,8;2,599;2,645;1,580;1,588;2,630;" style="margin-left:0; margin-top:0; margin-right:0; margin-bottom:0; ">
  167. <shape id="roundrect5" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:8px; top:2px; width:572px; height:40px; background-color:#fffbf2; border-color:#ffd799; "/>
  168. <line id="line1" class="line_1" style="x1:8px; y1:64px; x2:580px; y2:64px; "/>
  169. <caption id="caption5" class="tit_2" style="left:8px; top:50px; width:100px; height:13px; ">기초임상정보</caption>
  170. <datagrid id="grd_patbaseinfo" nodeset="/root/main/patbaseinfo/patbaseinfo" caption="설정^status^status2^검사항목^단위^임상정보" colsep="^" colwidth="30, 0, 0, 86, 73, 73" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowsep="|" style="left:9px; top:70px; width:265px; height:529px; ">
  171. <col checkvalue="Y,N" ref="checkflag" type="checkbox"/>
  172. <col ref="status" type="combo" visibility="hidden">
  173. <choices>
  174. <item>
  175. <label>SET추가</label>
  176. <value>i</value>
  177. </item>
  178. <item>
  179. <label>SET취소</label>
  180. <value>d</value>
  181. </item>
  182. </choices>
  183. </col>
  184. <col ref="status2" type="combo" visibility="hidden">
  185. <choices>
  186. <item>
  187. <label>임상정보수정</label>
  188. <value>u</value>
  189. </item>
  190. </choices>
  191. </col>
  192. <col ref="testitemnm"/>
  193. <col ref="unitnm"/>
  194. <col ref="testrsltcnts" type="input"/>
  195. <script type="javascript" ev:event="xforms-value-changed">
  196. <![CDATA[
  197. var currow = grd_patbaseinfo.row;
  198. var curcol = grd_patbaseinfo.col;
  199. if(curcol == grd_patbaseinfo.colRef("checkflag")){
  200. var nodelist = model.instance1.selectNodes("/root/main/patbaseinfo/patbaseinfo[checkflag='Y']/checkflag");
  201. if(nodelist.length > 3){
  202. messageBox("기초 임상정보는 3개 이상 설정", "E001");
  203. grd_patbaseinfo.valueMatrix(currow, curcol) = "N";
  204. grd_patbaseinfo.refresh();
  205. return;
  206. }
  207. var node1 = "/root/main/patbaseinfo/patbaseinfo[" + currow + "]";
  208. var node2 = "/root/temp/patbaseinfo/patbaseinfo[" + currow + "]";
  209. if(fCompareEqualNode(node1, node2, "status", "status2")==false){ //변경된 값이 다른 경우
  210. if(grd_patbaseinfo.valueMatrix(currow, curcol)=="Y"){ //기초 임상정보가 신규로 선택된 경우
  211. model.setValue("/root/main/patbaseinfo/patbaseinfo[" + currow + "]/status", "i");
  212. }else if(grd_patbaseinfo.valueMatrix(currow, curcol)=="N"){ //기초 임상정보가 해제된 경우
  213. model.setValue("/root/main/patbaseinfo/patbaseinfo[" + currow + "]/status", "d");
  214. }
  215. }else{
  216. model.setValue("/root/main/patbaseinfo/patbaseinfo[" + currow + "]/status", "");
  217. }
  218. }
  219. model.refresh();
  220. ]]>
  221. </script>
  222. <script type="javascript" ev:event="onendedit">
  223. <![CDATA[
  224. var currow = grd_patbaseinfo.row;
  225. var curcol = grd_patbaseinfo.col;
  226. if(curcol == grd_patbaseinfo.colRef("testrsltcnts")){
  227. var node1 = "/root/main/patbaseinfo/patbaseinfo[" + currow + "]";
  228. var node2 = "/root/temp/patbaseinfo/patbaseinfo[" + currow + "]";
  229. if(fCompareEqualNode(node1, node2, "status", "status2")==false){ //변경된 값이 다른 경우
  230. model.setValue("/root/main/patbaseinfo/patbaseinfo[" + currow + "]/status2", "u");
  231. }else{
  232. model.setValue("/root/main/patbaseinfo/patbaseinfo[" + currow + "]/status2", "");
  233. }
  234. }
  235. model.refresh();
  236. ]]>
  237. </script>
  238. <script type="javascript" ev:event="ondblclick">
  239. <![CDATA[
  240. if(isDataCell()){
  241. var pid = model.getValue("/root/main/patbaseinfo/patbaseinfo[" + grd_patbaseinfo.row + "]/pid");
  242. var testitemcd = model.getValue("/root/main/patbaseinfo/patbaseinfo[" + grd_patbaseinfo.row + "]/testitemcd");
  243. fReqGetPatBaseClincHistInfo(pid, testitemcd);
  244. }
  245. ]]>
  246. </script>
  247. </datagrid>
  248. <button id="button1" class="btn1_letter2" style="left:513px; top:12px; width:56px; height:22px; ">
  249. <caption>조회</caption>
  250. <script type="javascript" ev:event="DOMActivate">
  251. <![CDATA[
  252. var pid = model.getValue("/root/main/cond/pid");
  253. var testdd = model.getValue("/root/main/cond/testdd");
  254. var inptpath = model.getValue("/root/main/cond/inptpath");
  255. var inptpathflag = model.getValue("/root/main/cond/inptpathflag");
  256. fReqGetPatBaseClincInfo(pid, testdd, inptpath, inptpathflag);
  257. ]]>
  258. </script>
  259. </button>
  260. <caption id="cap_hngnm" class="search_name" style="left:229px; top:14px; width:91px; height:17px; ">성 명</caption>
  261. <input id="ipt_pid" ref="/root/main/cond/pid" style="left:91px; top:12px; width:92px; height:19px; ">
  262. <script type="javascript" ev:event="onclick">
  263. <![CDATA[
  264. model.setValue("/root/main/cond/pid", "");
  265. model.setValue("/root/main/cond/hngnm", "");
  266. model.refresh();
  267. ]]>
  268. </script>
  269. <script type="javascript" ev:event="onkeypress">
  270. <![CDATA[
  271. inputEnterKey("btn_patsrch", "DOMActivate");
  272. ]]>
  273. </script>
  274. </input>
  275. <input id="ipt_hngnm" ref="/root/main/cond/hngnm" disabled="false" style="left:309px; top:12px; width:100px; height:19px; ">
  276. <script type="javascript" ev:event="onkeypress">
  277. <![CDATA[
  278. inputEnterKey("btn_patsrch", "DOMActivate");
  279. ]]>
  280. </script>
  281. <script type="javascript" ev:event="onclick">
  282. <![CDATA[
  283. model.setValue("/root/main/cond/pid", "");
  284. model.setValue("/root/main/cond/hngnm", "");
  285. model.refresh();
  286. ]]>
  287. </script>
  288. </input>
  289. <caption id="cap_pid" class="search_name" style="left:11px; top:14px; width:91px; height:17px; ">등록번호</caption>
  290. <button id="btn_patsrch" class="icon_search" style="left:413px; top:13px; width:16px; height:16px; ">
  291. <caption/>
  292. <script type="javascript" ev:event="DOMActivate">
  293. <![CDATA[
  294. var pid = model.getValue("/root/main/cond/pid");
  295. var hngnm = model.getValue("/root/main/cond/hngnm");
  296. if(pid =="" && hngnm !=""){
  297. //fPatSrch(hngnm, "2");
  298. } else if(pid !="" && hngnm == ""){
  299. //fPatSrch(pid, "1");
  300. } else {
  301. modal("SPPMC02500");
  302. }
  303. model.setValue("/root/main/cond/pid" , model.getValue("/root/main/patinfo/patinfolist/pid"));
  304. model.setValue("/root/main/cond/hngnm", model.getValue("/root/main/patinfo/patinfolist/hngnm"));
  305. model.refresh();
  306. ]]>
  307. </script>
  308. </button>
  309. <line id="line3" style="x1:498px; y1:7px; x2:498px; y2:36px; border-color:#ffe4bb; border-left-style:solid; "/>
  310. <datagrid id="datagrid1" nodeset="/root/main/patbasehistinfo/patbasehistinfo" caption="검사일자^검사항목^단위^임상정보" colsep="^" colwidth="81, 76, 71, 73" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowsep="|" style="left:276px; top:70px; width:304px; height:528px; ">
  311. <col ref="testdd" type="output" format="yyyy-mm-dd"/>
  312. <col ref="testitemnm"/>
  313. <col ref="unitnm"/>
  314. <col ref="testrsltcnts"/>
  315. </datagrid>
  316. <button id="button4" class="btn4_letter2" style="left:464px; top:603px; width:56px; height:22px; ">
  317. <caption>저장</caption>
  318. <script type="javascript" ev:event="DOMActivate">
  319. <![CDATA[
  320. model.copyNode("/root/send/savedata", "/root/main/patbaseinfo");
  321. if(submit("TXMMO15801")){
  322. }
  323. ]]>
  324. </script>
  325. </button>
  326. <button id="button2" class="btn4_letter2" style="left:522px; top:603px; width:56px; height:22px; ">
  327. <caption>종료</caption>
  328. <script type="javascript" ev:event="DOMActivate">
  329. <![CDATA[
  330. window.close();
  331. ]]>
  332. </script>
  333. </button>
  334. </xhtml:body>
  335. </xhtml:html>