SPMQP01600_진단코드조회.xrw 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  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. <reqflag/>
  12. <reqdata/>
  13. <srchflag>A</srchflag>
  14. <wordflag/>
  15. <trgflag/>
  16. </cond>
  17. <indxlist>
  18. <item>
  19. <depth/>
  20. <indxcd/>
  21. <upindxcd/>
  22. <indxengnm/>
  23. <indxhngnm/>
  24. <path/>
  25. </item>
  26. </indxlist>
  27. <diaginfo>
  28. </diaginfo>
  29. </main>
  30. <hidden>
  31. </hidden>
  32. <send>
  33. </send>
  34. <init>
  35. </init>
  36. <temp>
  37. <setdata>
  38. <icd10cd/>
  39. <icd10hngnm/>
  40. <icd10engnm/>
  41. <depth/>
  42. <path/>
  43. </setdata>
  44. <getdata>
  45. <grdfocus/>
  46. <poolsize>1</poolsize>
  47. <pool>
  48. <cd/>
  49. </pool>
  50. <endVal/>
  51. </getdata>
  52. <size/>
  53. </temp>
  54. </root>
  55. </instance>
  56. <script type="javascript" ev:event="xforms-ready">
  57. <![CDATA[
  58. grd_diagcdlist.fixedcellcheckbox(0,0) = true;
  59. var targetFlag = opener.javascript.getParameter("flag");
  60. usge = opener.javascript.getParameter("usge");
  61. if( !isNull(targetFlag) ){
  62. model.setValue("/root/main/cond/trgflag", targetFlag);
  63. model.makeValue("/root/send/reqdata/trgflag", targetFlag);
  64. /*
  65. if(targetFlag == "ICD"){
  66. btn_icd10.selected = true;
  67. btn_termattr.attribute("text") = "진단속성";
  68. grd_diagcdlist.caption = "^ICD10코드^영문명^한글명^caption1";
  69. grd_diagcdlist.refresh();
  70. }
  71. */
  72. }
  73. model.setValue("/root/main/cond/trgflag", "DIAG");
  74. btn_termattr.selected = true;
  75. btn_termattr.attribute("text") = "진단코드";
  76. grd_diagcdlist.caption = "^진단코드^영문명^한글명^caption1";
  77. btn_termattr.refresh();
  78. grd_diagcdlist.refresh();
  79. model.makeValue("/root/send/reqdata/flag", "0");
  80. submit("TRMQP01601");
  81. // 2008.07.17 pymi
  82. window.modelessTopmost = true;
  83. var condbuttonNode = opener.instance1.selectSingleNode("/root/main/cond/condbutton");
  84. if( condbuttonNode != null ) condbutton = condbuttonNode.text;
  85. ]]>
  86. </script>
  87. <submission id="TRMQP01601" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/indxlist"/>
  88. <submission id="TRMQP01602" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/diaginfo"/>
  89. <submission id="TRMQP01603" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/diaginfo"/>
  90. <script type="javascript" ev:event="xforms-model-construct-done">
  91. <![CDATA[
  92. if(isPopup()){
  93. var flag = model.getValue("/root/temp/size");
  94. if(flag == "1"){
  95. //작게
  96. window.width = 400;
  97. } else if(flag == "2") {
  98. //크게
  99. window.width = 1000;
  100. }
  101. }
  102. ]]>
  103. </script>
  104. </model>
  105. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  106. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  107. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  108. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  109. <script type="javascript">
  110. <![CDATA[
  111. var usge = "";
  112. var condbutton = ""; //값을 opener에 opener에 parameter로 보낼지, opener의 인스턴스에 직접 반영할지 구분 ( IF/THEN이면 parameter, 그렇지 않으면 instance로)
  113. // 사용자가 체크한 복수개의 레코들의 인덱스 번호를 구하는 함수
  114. // 작성자: 김광성(kskim)
  115. // 작성일 : 2010.03.15
  116. function fSetCheckInforLglyCd(){
  117. var grdIdxs="-";
  118. var selRowcnt = 0;
  119. for(var rowIdx=1; rowIdx < grd_diagcdlist.rows; rowIdx++){
  120. var chFlag = model.getValue("/root/main/diaginfo/info["+ rowIdx +"]/check");
  121. if( chFlag == "true" && selRowcnt == 0 ){
  122. grdIdxs = rowIdx;
  123. selRowcnt++;
  124. }
  125. else if( chFlag == "true" ){
  126. selRowcnt++;
  127. }
  128. }
  129. if( selRowcnt > 1 || selRowcnt == 0 ){
  130. return false;
  131. }
  132. else{
  133. return grdIdxs;
  134. }
  135. }
  136. // 그리드 진단에서 더블 클릭시 진단코드 및 이름을 SMASB02300_법정전염병마스터에 입력받기
  137. // 작성자: 김광성(kskim)
  138. // 작성일 : 2010.03.15
  139. function fSetdbClickLglyCd( selRow ){
  140. var param = opener.javascript.getParameter("SMASB02300_param");
  141. var paramValue = param.split("▦");
  142. var opRow = paramValue[0];
  143. var opCol = paramValue[1];
  144. var curStatus = paramValue[2];
  145. var lglydiscd = model.getValue("/root/main/diaginfo/info["+ selRow +"]/dispdiagcd");
  146. if( opCol == opener.grd_asihlgdc.colRef("fromicd10cd") ){
  147. opener.model.setValue( "/root/main/asihlgdc/list[" + opRow + "]/fromicd10cd", lglydiscd);
  148. if( isNull(curStatus) ){
  149. opener.model.setValue("/root/main/asihlgdc/list[" + opRow + "]/status", opener.model.getValue("/root/conditon/status/update"));
  150. opener.grd_asihlgdc.addStatus(opRow, "update");
  151. }
  152. }
  153. else if(opCol == opener.grd_asihlgdc.colRef("toicd10cd") ){
  154. opener.model.setValue( "/root/main/asihlgdc/list[" + opRow + "]/toicd10cd", lglydiscd);
  155. if( isNull(curStatus)){
  156. opener.model.setValue("/root/main/asihlgdc/list[" + opRow + "]/status", opener.model.getValue("/root/conditon/status/update"));
  157. opener.grd_asihlgdc.addStatus(opRow, "update");
  158. }
  159. }
  160. window.close();
  161. }
  162. // 중복 체크를 한 후 OPENER 로 데이터를 전달한다.
  163. function fSetOpenerValue( iRow ) {
  164. var bool = "false";
  165. var iCnt = parseInt(model.getValue("/root/temp/getdata/poolsize"));
  166. var selCd = model.getValue("/root/main/diaginfo/info["+ iRow + "]/termcd");
  167. if(iCnt != 1){
  168. for(var i=1; i<=iCnt; i++) {
  169. if(selCd == model.getValue("/root/temp/getdata/pool/cd[" + i + "]")){
  170. bool = "ture";
  171. return;
  172. }
  173. }
  174. }
  175. if(bool == "false"){
  176. var sRow = model.getValue("/root/temp/getdata/grdfocus");
  177. if(sRow == ""){
  178. sRow = "0";
  179. model.setValue("/root/temp/getdata/endVal" , "E");
  180. }
  181. sRow = parseInt(sRow) + 1;
  182. var selCd = model.getValue("/root/main/diaginfo/info[" + iRow + "]/termcd");
  183. var selHNM = model.getValue("/root/main/diaginfo/info[" + iRow + "]/hngnm");
  184. var selENM = model.getValue("/root/main/diaginfo/info[" + iRow + "]/engnm");
  185. opener.grd_diag.addRow();
  186. opener.model.makeValue("/root/main/diaginfo/diaglist[" + sRow + "]/termcd", selCd);
  187. opener.model.makeValue("/root/main/diaginfo/diaglist[" + sRow + "]/termhngnm", selHNM);
  188. opener.model.makeValue("/root/main/diaginfo/diaglist[" + sRow + "]/termengnm", selENM);
  189. if( !isNull(usge) ){
  190. opener.model.makeValue("/root/main/diaginfo/diaglist[" + sRow + "]/m", "i");
  191. }
  192. var termflag = "T01";
  193. if(model.getValue("/root/main/cond/trgflag") == "ICD"){
  194. termflag = "T00";
  195. }
  196. opener.model.makeValue("/root/main/diaginfo/diaglist[" + sRow + "]/termflag", termflag);
  197. //opener.grd_diag.rowStatus(sRow)= 1;
  198. //opener.grd_diag.rebuild();
  199. model.setValue("/root/temp/getdata/grdfocus", sRow);
  200. model.makeValue("/root/temp/getdata/pool/cd[" + iCnt + "]", selCd);
  201. iCnt = parseInt(iCnt)+1;
  202. model.setValue("/root/temp/getdata/poolsize", iCnt);
  203. }
  204. }
  205. function fReqDiagCD(){
  206. var reqdata = model.getValue("/root/main/cond/reqdata");
  207. if(reqdata.charCodeAt(0) > 255){
  208. model.setValue("/root/main/cond/wordflag", "H");
  209. }else{
  210. model.setValue("/root/main/cond/wordflag", "E");
  211. reqdata = reqdata.toUpperCase();
  212. }
  213. model.removeNodeset("/root/send");
  214. model.makeNode("/root/send/reqdata");
  215. model.copyNode("/root/send/reqdata", "/root/main/cond");
  216. model.setValue("/root/send/reqdata/reqdata", reqdata);
  217. model.makeValue("/root/send/reqdata/flag", "0");
  218. model.makeValue("/root/send/reqdata/trgflag", model.getValue("/root/main/cond/trgflag"));
  219. submit("TRMQP01603");
  220. }
  221. function fSetOpenerParameter(){
  222. var header = "testitemcd▦testcd▦testnm▦hvalappflag▦lvalappflag▦refhval▦reflval▦unitnm▦refseq▦alertcdflag▦alertrem▦alertprecondyn▦checkyn▦m";
  223. var detail = "";
  224. //var condbuttonNode = opener.instance1.selectSingleNode("/root/main/cond/condbutton");
  225. //var condbutton = "";
  226. //if( condbuttonNode == null ) condbutton = "";
  227. //else condbutton = condbuttonNode.text;
  228. var alertcdflagNode = opener.instance1.selectSingleNode("/root/main/cond/alertcdflag");
  229. var alertcdflag = "";
  230. var alertprecondyn = "";
  231. if( alertcdflagNode == null ) alertcdflag = "";
  232. else alertcdflag = alertcdflagNode.text;
  233. var nodeList = instance1.selectNodes("/root/main/diaginfo/info[check='true']");
  234. //by sonjy 20100723 if조건도 다중선택 가능하게 변경. 단, clinical rule generator의 경우만.
  235. var inpttypecd = "";
  236. if( checkOpener() ) inpttypecd = opener.model.getValue("/root/main/cond/inpttypecd");
  237. if( condbutton == "IF" && nodeList.length > 1 && inpttypecd != "Q" ){
  238. messageBox ( "IF 조건은 2건 이상 입력", "E001" )
  239. return;
  240. }
  241. // CPG 모니터링에서 열 경우 : 2009. 01. 16 :김영학
  242. for( var i=0; i<nodeList.length; i++ ){
  243. var node = nodeList.item(i);
  244. var selCdNode = node.selectSingleNode("termcd");
  245. var selENmNode = node.selectSingleNode("engnm");
  246. if (condbutton == "IF") {
  247. alertprecondyn = "Y";
  248. }else if (condbutton == "THEN") {
  249. alertprecondyn = "N";
  250. }
  251. detail = detail + "▩" + selCdNode.text + "▦" + selCdNode.text + "▦" + selENmNode.text + "▦N▦N▦▦▦-▦▦" + alertcdflag + "▦-▦" + alertprecondyn + "▦Y▦i";
  252. }
  253. if( detail != "" ){
  254. opener.javascript.setParameter( "SPMMD06100_detlinfo", header + detail );
  255. }
  256. window.close();
  257. }
  258. ]]>
  259. </script>
  260. </xhtml:head>
  261. <xhtml:body pagewidth="866" pageheight="600" style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  262. <treeview id="trv_indxlist" ref="/root/main/indxlist/item" expanddepth="2" itemsettype="depth" style="left:0px; top:30px; width:380px; height:540px; ">
  263. <itemset nodeset="/root/main/indxlist/item">
  264. <label ref="indxhngnm"/>
  265. <value ref="indxcd"/>
  266. <depth ref="depth"/>
  267. </itemset>
  268. <script type="javascript" ev:event="xforms-select">
  269. <![CDATA[
  270. var item = trv_indxlist.item(trv_indxlist.selectedIndex);
  271. if(item.depth == 0){
  272. //상위index만을 클릭한 경우 return한다.
  273. return;
  274. }
  275. var indxcd = trv_indxlist.value;
  276. model.removeNodeset("/root/send");
  277. model.makeValue("/root/send/reqdata/flag", "0");
  278. model.makeValue("/root/send/reqdata/srchindxcd", indxcd);
  279. model.makeValue("/root/send/reqdata/reqflag", model.getValue("/root/main/cond/reqflag"));
  280. model.makeValue("/root/send/reqdata/trgflag", model.getValue("/root/main/cond/trgflag"));
  281. submit("TRMQP01602");
  282. ]]>
  283. </script>
  284. </treeview>
  285. <shape id="roundrect1" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:385px; top:31px; width:465px; height:35px; background-color:#fffbf2; border-color:#ffd799; "/>
  286. <line id="line4" class="line_1" style="x1:0px; y1:25px; x2:380px; y2:25px; "/>
  287. <group id="grp_btn" style="left:0px; top:570px; width:850px; height:27px; ">
  288. <button id="button10" class="btn4_letter2" style="left:733px; top:3px; width:56px; height:22px; ">
  289. <caption>선택</caption>
  290. <script type="javascript" ev:event="DOMActivate">
  291. <![CDATA[
  292. if( condbutton != "" ){
  293. fSetOpenerParameter();
  294. return;
  295. }
  296. var rowCnt = grd_diagcdlist.rows;
  297. var iRow = grd_diagcdlist.row;
  298. // SMASB02300_법정전염병마스터에 진단코드 및 이름 입력받기
  299. // 작성자 : 김광성 kskim
  300. // 작성일 : 2010.03.15
  301. var opWndId = opener.model.getValue("/root/conditon/wndid");
  302. if( opWndId == "SMASB02300"){
  303. var selIdx = fSetCheckInforLglyCd();
  304. if( selIdx == false){
  305. messageBox("1개의 진단을 ", "C002");
  306. }
  307. else{
  308. fSetdbClickLglyCd(selIdx);
  309. window.close();
  310. }
  311. return;
  312. }
  313. else{
  314. for(var i=1; i<rowCnt; i++){
  315. var bool = grd_diagcdlist.valueMatrix(i,0);
  316. if(bool == "true"){
  317. fSetOpenerValue( i );
  318. }
  319. if(model.getValue("/root/temp/getdata/endVal") == "E")
  320. window.close();
  321. }
  322. }
  323. // for(var i=1; i<rowCnt; i++){
  324. // var bool = grd_diagcdlist.valueMatrix(i,0);
  325. // if(bool == "true"){
  326. // fSetOpenerValue( i );
  327. // }
  328. // if(model.getValue("/root/temp/getdata/endVal") == "E")
  329. // window.close();
  330. // }
  331. ]]>
  332. </script>
  333. </button>
  334. <button id="button9" class="btn4_letter2" style="left:792px; top:3px; width:56px; height:22px; ">
  335. <caption>닫기</caption>
  336. <script type="javascript" ev:event="DOMActivate">
  337. <![CDATA[
  338. window.close();
  339. ]]>
  340. </script>
  341. </button>
  342. </group>
  343. <input id="input1" ref="/root/main/cond/reqdata" class="input_search" style="left:529px; top:39px; width:194px; height:19px; ">
  344. <script type="javascript" ev:event="onkeypress">
  345. <![CDATA[
  346. inputEnterKey("btn_req", "DOMActivate");
  347. ]]>
  348. </script>
  349. </input>
  350. <button id="btn_req" class="btn1_letter2" style="left:784px; top:38px; width:56px; height:22px; ">
  351. <caption>조회</caption>
  352. <script type="javascript" ev:event="DOMActivate">
  353. <![CDATA[
  354. var srchStr = model.getValue("/root/main/cond/reqdata");
  355. if( isNull(srchStr) ){
  356. var msg = messageBox("검색어를 ", "C001");
  357. return;
  358. }else if( getStringLength(srchStr) < 3 ){
  359. var msg = messageBox("2글자 이상 ", "C001");
  360. return;
  361. }else{
  362. fReqDiagCD();
  363. }
  364. ]]>
  365. </script>
  366. </button>
  367. <line id="line1" style="x1:776px; y1:38px; x2:776px; y2:60px; border-color:#ffe4bb; border-left-style:solid; "/>
  368. <select1 id="radio1" ref="/root/main/cond/srchflag" appearance="full" cols="3" overflow="visible" style="left:395px; top:40px; width:130px; height:20px; border-style:none; ">
  369. <choices>
  370. <item>
  371. <label>전체</label>
  372. <value>A</value>
  373. </item>
  374. <item>
  375. <label>코드</label>
  376. <value>C</value>
  377. </item>
  378. <item>
  379. <label>단어</label>
  380. <value>W</value>
  381. </item>
  382. </choices>
  383. </select1>
  384. <datagrid id="grd_diagcdlist" nodeset="/root/main/diaginfo/info" caption="^진단코드^영문명^한글명^caption1" colsep="^" colwidth="27, 75, 192, 199, 29" defaultrows="0" ellipsis="true" explorerbar="sort" mergecellsfixedrows="bycolrec" rowsep="|" tooltip="true" style="left:385px; top:70px; width:464px; height:500px; background-color:#ffffff; border-color:#B0B0B0; ">
  385. <col checkvalue="true,false" ref="check" type="checkbox"/>
  386. <col ref="dispdiagcd"/>
  387. <col ref="engnm"/>
  388. <col ref="hngnm"/>
  389. <col ref="termcd" visibility="hidden"/>
  390. <script type="javascript" ev:event="ondblclick">
  391. <![CDATA[
  392. iRow = grd_diagcdlist.row;
  393. model.setValue("/root/main/diaginfo/info[" + iRow + "]/check", "true");
  394. grd_diagcdlist.refresh();
  395. if( condbutton != "" ){
  396. fSetOpenerParameter();
  397. return;
  398. }
  399. if(iRow < 1){
  400. return;
  401. }
  402. // fSetOpenerValue(iRow);
  403. //if(model.getValue("/root/temp/getdata/endVal") == "E")
  404. // SMASB02300_법정전염병마스터에 진단코드 및 이름 입력받기. 시작.
  405. // 작성자 : 김광성 kskim
  406. // 작성일 : 2010.03.15
  407. var opWndId = opener.model.getValue("/root/conditon/wndid");
  408. if( opWndId == "SMASB02300" ){
  409. fSetdbClickLglyCd( iRow );
  410. return;
  411. }
  412. else{
  413. fSetOpenerValue(iRow);
  414. }
  415. // SMASB02300_법정전염병마스터에 진단코드 및 이름 입력받기. 끝.
  416. window.close();
  417. ]]>
  418. </script>
  419. <script type="javascript" ev:event="onaftersort">
  420. <![CDATA[
  421. grd_diagcdlist.gridToInstance();
  422. ]]>
  423. </script>
  424. </datagrid>
  425. <select id="checkbox1" ref="/root/main/cond/reqflag" overflow="visible" appearance="full" style="left:726px; top:40px; width:45px; height:20px; border-style:none; ">
  426. <choices>
  427. <item>
  428. <label>전체</label>
  429. <value>A</value>
  430. </item>
  431. </choices>
  432. </select>
  433. <line id="line2" class="line_1" style="x1:385px; y1:25px; x2:850px; y2:25px; "/>
  434. <button id="btn_icd10" class="btn_sw" group="tab" style="left:0px; top:2px; width:74px; height:22px; ">
  435. <caption>ICD10</caption>
  436. <script type="javascript" ev:event="DOMActivate">
  437. <![CDATA[
  438. model.setValue("/root/main/cond/trgflag", "ICD");
  439. grd_diagcdlist.caption = "^ICD10코드^영문명^한글명^caption1";
  440. grd_diagcdlist.refresh();
  441. if(trv_indxlist.item(trv_indxlist.selectedIndex)){
  442. trv_indxlist.dispatch("xforms-select");
  443. }
  444. ]]>
  445. </script>
  446. </button>
  447. <button id="btn_termattr" class="btn_sw" group="tab" style="left:74px; top:2px; width:73px; height:22px; ">
  448. <caption>진단속성</caption>
  449. <script type="javascript" ev:event="DOMActivate">
  450. <![CDATA[
  451. if( btn_termattr.attribute("text") == "진단코드" ){
  452. model.setValue("/root/main/cond/trgflag", "DIAG");
  453. grd_diagcdlist.caption = "^진단코드^영문명^한글명^caption1";
  454. grd_diagcdlist.refresh();
  455. if(trv_indxlist.item(trv_indxlist.selectedIndex)){
  456. trv_indxlist.dispatch("xforms-select");
  457. }
  458. }else{
  459. model.setValue("/root/main/cond/trgflag", "ATTR");
  460. grd_diagcdlist.caption = "^진단속성코드^영문명^한글명^caption1";
  461. grd_diagcdlist.refresh();
  462. if(trv_indxlist.item(trv_indxlist.selectedIndex)){
  463. trv_indxlist.dispatch("xforms-select");
  464. }
  465. }
  466. ]]>
  467. </script>
  468. </button>
  469. </xhtml:body>
  470. </xhtml:html>