SPMMO00800_처방진단검색.xfdl 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SPMMO00800" position="absolute 0 0 810 330" titletext="진단검색" onload="SPMMO00800_onload">
  5. <Layouts>
  6. <Layout>
  7. <Div id="Div00" taborder="1" position="absolute 0 0 810 42" class="div_SA2"/>
  8. <Grid position="absolute 0 43 810 307" id="grd_diaghist" binddataset="ds_diagcdlist" oncellclick="grd_diaghist_oncellclick" oncelldblclick="grd_diaghist_oncelldblclick" cellclickbound="cell" autofittype="col">
  9. <Formats>
  10. <Format id="default">
  11. <Columns>
  12. <Column size="30"/>
  13. <Column size="83"/>
  14. <Column size="324"/>
  15. <Column size="302"/>
  16. <Column size="0"/>
  17. <Column size="27"/>
  18. <Column size="0"/>
  19. <Column size="0"/>
  20. <Column size="0"/>
  21. <Column size="0"/>
  22. <Column size="32"/>
  23. </Columns>
  24. <Rows>
  25. <Row size="24" band="head"/>
  26. <Row size="24"/>
  27. </Rows>
  28. <Band id="head">
  29. <Cell/>
  30. <Cell col="1" text="진단코드"/>
  31. <Cell col="2" text="영문명"/>
  32. <Cell col="3" text="한글명"/>
  33. <Cell col="4" text="유사/동의어"/>
  34. <Cell col="5" text="특례"/>
  35. <Cell col="6" text="orgdiagcd"/>
  36. <Cell col="7" text="tootfact"/>
  37. <Cell col="8" text="icd10cd"/>
  38. <Cell col="9" text="diagcd"/>
  39. <Cell col="10" text="경증"/>
  40. </Band>
  41. <Band id="body">
  42. <Cell displaytype="checkbox" edittype="checkbox" text="bind:status" expr="expr:(status == &quot;I&quot; || status == 1) ? 1 : 0"/>
  43. <Cell col="1" displaytype="text" text="bind:dispdiagcd"/>
  44. <Cell col="2" displaytype="text" text="bind:diagengnm"/>
  45. <Cell col="3" displaytype="text" text="bind:diaghngnm"/>
  46. <Cell col="4" text="bind:orgdiagnm"/>
  47. <Cell col="5" text="bind:spclinfo"/>
  48. <Cell col="6" text="bind:orgdiagcd"/>
  49. <Cell col="7" text="bind:tootfact"/>
  50. <Cell col="8" text="bind:icd10cd"/>
  51. <Cell col="9" text="bind:diagcd"/>
  52. <Cell col="10" style="color:expr:drginfo==&quot;경증&quot; ? &quot;#0000ff&quot; : &quot;default&quot;;color2:expr:drginfo==&quot;경증&quot; ? &quot;#0000ff&quot; : &quot;default&quot;;" text="bind:lightcase"/>
  53. </Band>
  54. </Format>
  55. </Formats>
  56. </Grid>
  57. <Button position="absolute 754 308 810 330" id="button1" class="btn4" text="취소" onclick="button1_onclick"/>
  58. <Button position="absolute 697 308 753 330" id="btn_copy" class="btn4" text="선택" onclick="btn_copy_onclick"/>
  59. <Radio position="absolute 96 12 341 32" id="radio1" columncount="4" codecolumn="codecolumn" datacolumn="datacolumn" onitemchanged="radio1_onitemchanged">
  60. <Dataset id="innerdataset">
  61. <ColumnInfo>
  62. <Column id="codecolumn"/>
  63. <Column id="datacolumn"/>
  64. </ColumnInfo>
  65. <Rows>
  66. <Row>
  67. <Col id="codecolumn">4</Col>
  68. <Col id="datacolumn">첫단어검색</Col>
  69. </Row>
  70. <Row>
  71. <Col id="codecolumn">2</Col>
  72. <Col id="datacolumn">단어검색</Col>
  73. </Row>
  74. <Row>
  75. <Col id="codecolumn">3</Col>
  76. <Col id="datacolumn">문장검색</Col>
  77. </Row>
  78. </Rows>
  79. </Dataset>
  80. </Radio>
  81. <CheckBox position="absolute 426 12 513 32" id="bool1" visible="false" text="동의어검색" onchanged="bool1_onchanged" truevalue="Y" falsevalue="N"/>
  82. <Static text="검색방법 :" position="absolute 11 12 90 32" align="align:center middle;" id="caption3" class="search_name"/>
  83. <Static text="검색어 :" position="absolute 531 12 601 32" id="caption4" class="search_name"/>
  84. <Edit position="absolute 605 12 725 32" id="ipt_search" onkeydown="ipt_search_onkeydown" autoselect="true"/>
  85. <Button position="absolute 744 12 800 30" id="button3" class="btn1" text="조회" onclick="button3_onclick"/>
  86. <Shape position="absolute 730 11 736 33" linetype="vertical" id="line6"/>
  87. <CheckBox position="absolute 348 12 395 32" id="bool2" visible="true" text="전체" onchanged="bool2_onchanged" truevalue="diag" falsevalue="perdept"/>
  88. <Button id="btn_excel" taborder="2" text="엑셀" class="btn7" position="absolute 0 310 50 330" anchor="top right" onclick="btn_excel_onclick"/>
  89. </Layout>
  90. </Layouts>
  91. <Objects>
  92. <Dataset id="ds_diagcdlist" firefirstcount="0" firenextcount="0" useclientlayout="true" updatecontrol="true" enableevent="true" loadkeymode="keep" reversesubsum="false" oncolumnchanged="ds_diagcdlist_oncolumnchanged">
  93. <ColumnInfo>
  94. <Column id="status" type="STRING"/>
  95. <Column id="dispdiagcd" type="STRING"/>
  96. <Column id="diagengnm" type="STRING"/>
  97. <Column id="diaghngnm" type="STRING"/>
  98. <Column id="orgdiagnm" type="STRING"/>
  99. <Column id="spclinfo" type="STRING"/>
  100. <Column id="orgdiagcd" type="STRING"/>
  101. <Column id="tootfact" type="STRING"/>
  102. <Column id="icd10cd" type="STRING"/>
  103. <Column id="diagcd" type="STRING"/>
  104. <Column id="lightcase" type="STRING" size="256" sumtext="경증 유무"/>
  105. </ColumnInfo>
  106. </Dataset>
  107. <Dataset id="ds_req" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  108. <ColumnInfo>
  109. <Column id="cond1" type="STRING" size="256" sumtext="검색구분(1:코드,2:명)"/>
  110. <Column id="cond2" type="STRING" size="256" sumtext="명칭검색구분(1:코드,2:단어,3:문장,4:첫단어)"/>
  111. <Column id="cond3" type="STRING" size="256" sumtext="한영구분(H:한글,E:영문)"/>
  112. <Column id="cond4" type="STRING" size="256" sumtext="기준일자:외래일때는진료일자,입원일때는처방일자"/>
  113. <Column id="cond5" type="STRING" size="256" sumtext="검색내용"/>
  114. <Column id="synmflag" type="STRING" size="256" sumtext="동의어검색"/>
  115. <Column id="scrnflag" type="STRING" size="256" sumtext="화면구분"/>
  116. <Column id="ageflag" type="STRING" size="256" sumtext="연령구분"/>
  117. <Column id="sexflag" type="STRING" size="256" sumtext="성별구분"/>
  118. <Column id="diagsrchmetd" type="STRING" size="256" sumtext="조회구분"/>
  119. </ColumnInfo>
  120. <Rows>
  121. <Row/>
  122. </Rows>
  123. </Dataset>
  124. <Dataset id="ds_init" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  125. <ColumnInfo>
  126. <Column id="diagsrchcond1" type="STRING" size="256"/>
  127. <Column id="diagsrchnm" type="STRING" size="256"/>
  128. <Column id="srchmode" type="STRING" size="256"/>
  129. </ColumnInfo>
  130. <Rows>
  131. <Row/>
  132. </Rows>
  133. </Dataset>
  134. </Objects>
  135. <Bind>
  136. <BindItem id="item0" compid="radio1" propid="value" datasetid="ds_init" columnid="diagsrchcond1"/>
  137. <BindItem id="item1" compid="ipt_search" propid="value" datasetid="ds_init" columnid="diagsrchnm"/>
  138. <BindItem id="item2" compid="bool2" propid="value" datasetid="ds_req" columnid="diagsrchmetd"/>
  139. <BindItem id="item3" compid="bool1" propid="value" datasetid="ds_req" columnid="synmflag"/>
  140. </Bind>
  141. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  142. * System Name : KNUH2.0
  143. * Job Name : EMR
  144. * Creator :
  145. * Make Date : 2014-08-29
  146. * Description :
  147. *---------------------------------------------------------------------------------------
  148. * Modify Date Modifier Modify Description
  149. *---------------------------------------------------------------------------------------
  150. * 2014-08-29 Live Converter TF->XP
  151. *
  152. *---------------------------------------------------------------------------------------
  153. ****************************************************************************************/
  154. //=======================================================================================
  155. // Lib Include
  156. //---------------------------------------------------------------------------------------
  157. include "com_commonxp::comm_main.xjs";
  158. include "emr_prcpmngtxp::MMO001.xjs";
  159. include "emr_prcpmngtxp::SPMMO00100.xjs";
  160. //include "emr_commonxp::EMRCommon.xjs"
  161. var arErrorCode = new HashArray();
  162. //=======================================================================================
  163. // Event
  164. //---------------------------------------------------------------------------------------
  165. /****************************************************************************************
  166. * Components : Form
  167. * Components ID : SPMMO00800
  168. * Event : onload
  169. * Argument : 01.obj : Object Event has occurred
  170. * : 02.e : Event Object
  171. * Description : 화면 로드시 진단검색 실행
  172. ****************************************************************************************/
  173. function SPMMO00800_onload(obj:Form, e:LoadEventInfo)
  174. {
  175. frmf_initForm(obj);
  176. grdf_initGrid(grd_diaghist);
  177. if(fGetDiagSrch() == "X") {
  178. bool2.enableevent = false;
  179. ds_req.setColumn(0, "diagsrchmetd", "diag");
  180. bool2.enableevent = true;
  181. fChngSrchMetd();
  182. }
  183. }
  184. /****************************************************************************************
  185. * Components : Button
  186. * Components ID : button3
  187. * Event : onclick
  188. * Argument : 01.obj : Object Event has occurred
  189. * : 02.e : Event Object
  190. * Description : 조회버튼 실행
  191. ****************************************************************************************/
  192. function button3_onclick(obj:Button, e:ClickEventInfo)
  193. {
  194. var cond2 = ds_init.getColumn(0,"diagsrchcond1"); //검색방법
  195. var cond4 = utlf_getCurrentDate(); //기준일자
  196. var cond5 = ds_init.getColumn(0,"diagsrchnm"); //검색어
  197. var cond3 = utlf_isHangul(cond5); //한글, 영문구분
  198. if ( utlf_isNull(cond5)) {
  199. sysf_messageBox ( "검색어를", "C001" );
  200. return;
  201. } else if ( cond3 == "E" ){ //영문,숫자일때는 3글자 넣어야 검색가능
  202. if ( cond5.length < 2 ){
  203. sysf_messageBox ( "2글자 이상", "C001" );
  204. return;
  205. }
  206. }
  207. if ( cond2 != 1 ) {
  208. if(cond3 == "H"){ //한글인 경우
  209. cond1 = 2;
  210. cond2 = 4;
  211. }else if(cond3 == "E"){ //영문인 경우
  212. if(utlf_isNum(cond5.charAt(1)) == true){ //두번째 자리가 숫자는 영문코드
  213. cond1 = 1;
  214. }else{ //두번째 자리가 숫자가 아닌 경우, 영문단어
  215. cond1 = 2;
  216. cond2 = 4;
  217. }
  218. }
  219. } else {
  220. cond1 = 1;
  221. }
  222. opener.frmf_setParameter ( "SPMMO00800_cond1", cond1);
  223. opener.frmf_setParameter ( "SPMMO00800_cond2", cond2);
  224. opener.frmf_setParameter ( "SPMMO00800_cond3", cond3 );
  225. opener.frmf_setParameter ( "SPMMO00800_cond4", cond4);
  226. opener.frmf_setParameter ( "SPMMO00800_cond5", cond5 );
  227. opener.frmf_setParameter ( "SPMMO00800_srchmode", "C" );
  228. fGetDiagSrch();
  229. }
  230. /****************************************************************************************
  231. * Components : Edit
  232. * Components ID : ipt_search
  233. * Event : onkeydown
  234. * Argument : 01.obj : Object Event has occurred
  235. * : 02.e : Event Object
  236. * Description : 검색어 입력후 엔터키 입력
  237. ****************************************************************************************/
  238. function ipt_search_onkeydown(obj:Edit, e:KeyEventInfo)
  239. {
  240. if(e.keycode==13) {
  241. obj.updateToDataset();
  242. button3_onclick();
  243. }
  244. }
  245. /****************************************************************************************
  246. * Components : Radio
  247. * Components ID : radio1
  248. * Event : onitemchanged
  249. * Argument : 01.obj : Object Event has occurred
  250. * : 02.e : Event Object
  251. * Description : 검색방법 라디오버튼 선택
  252. ****************************************************************************************/
  253. function radio1_onitemchanged(obj:Radio, e:ItemChangeEventInfo)
  254. {
  255. fChngSrchMetd();
  256. }
  257. /****************************************************************************************
  258. * Components : CheckBox
  259. * Components ID : bool2
  260. * Event : onchanged
  261. * Argument : 01.obj : Object Event has occurred
  262. * : 02.e : Event Object
  263. * Description : 전체 체크박스 실행
  264. ****************************************************************************************/
  265. function bool2_onchanged(obj:CheckBox, e:CheckBoxChangeEventInfo)
  266. {
  267. fChngSrchMetd();
  268. }
  269. /****************************************************************************************
  270. * Components : CheckBox
  271. * Components ID : bool1
  272. * Event : onchanged
  273. * Argument : 01.obj : Object Event has occurred
  274. * : 02.e : Event Object
  275. * Description : 동의어검색 체크박스 체크/해제
  276. ****************************************************************************************/
  277. function bool1_onchanged(obj:CheckBox, e:CheckBoxChangeEventInfo)
  278. {
  279. ds_req.setColumn(0,"cond2",ds_init.getColumn(0,"diagsrchcond1"));
  280. var oParam = {};
  281. oParam.id = "TRMMO00801";
  282. oParam.service = "prcpbaseapp.PatDiagMngt";
  283. oParam.method = "reqGetDiagTermSrch";
  284. oParam.inds = "req=" + "ds_req";
  285. oParam.outds = "ds_diagcdlist=diagcdlist";
  286. oParam.async = false;
  287. oParam.callback = "cf_TRMMO00801";
  288. tranf_submit(oParam);
  289. if(arErrorCode.pop("TRMMO00801") > -1) {
  290. var cRow = ds_diagcdlist.rowposition;
  291. var srchinfo = ds_req.getColumn(0,"diagsrchmetd");
  292. var srcNodeList = ds_diagcdlist.rowcount; // 조회된 데이터 수
  293. if(srcNodeList == 0){
  294. if (srchinfo == "perdept"){
  295. sysf_messageBox ( "개인셋, 과셋에서 검색된 진단이 없습니다. 전체 선택 후 진행", "I008" );
  296. return;
  297. } else {
  298. opener.frmf_setParameter( "SPMMO00800_rtn", "" );
  299. opener.frmf_setParameter( "SPMMO00800_rtn_useyn", "N");
  300. sysf_messageBox ( "검색된 진단이", "I004" );
  301. return;
  302. }
  303. } else if(srcNodeList == 1) {
  304. ds_diagcdlist.setColumn(cRow,"status","I");
  305. var rtn1 = dsf_getDsCSV(ds_diagcdlist, cRow, "N");
  306. opener.frmf_setParameter( "SPMMO00800_rtn", rtn1 );
  307. opener.frmf_setParameter( "SPMMO00800_rtn_useyn", "Y");
  308. this.close();
  309. }
  310. }
  311. }
  312. /****************************************************************************************
  313. * Components : Grid
  314. * Components ID : grd_diaghist
  315. * Event : oncellclick
  316. * Argument : 01.obj : Object Event has occurred
  317. * : 02.e : Event Object
  318. * Description : 검색된 처방진단 더블클릭
  319. ****************************************************************************************/
  320. function grd_diaghist_oncellclick(obj:Grid, e:GridClickEventInfo)
  321. {
  322. // grd_diaghist.gridToInstance();
  323. // if(isDataCell()){
  324. // if ( grd_diaghist.col != 0 ) {
  325. // var status = model.getValue ( "/root/main/diaginfo/diagcdlist["+ grd_diaghist.row +"]/status" ) ;
  326. // if ( status == "N" || isNull ( status ) ) {
  327. // model.setValue ( "/root/main/diaginfo/diagcdlist["+ grd_diaghist.row +"]/status", "I" );
  328. // } else {
  329. // model.setValue ( "/root/main/diaginfo/diagcdlist["+ grd_diaghist.row +"]/status", "N" );
  330. // }
  331. // }
  332. // model.refresh();
  333. // }
  334. if(e.col == 0) return;
  335. if(e.row>-1){
  336. if ( ds_diagcdlist.colcount > 0 ) {
  337. var status = ds_diagcdlist.getColumn(ds_diagcdlist.rowposition,"status");
  338. if ( status == "N" || utlf_isNull ( status ) ) {
  339. ds_diagcdlist.setColumn(ds_diagcdlist.rowposition,"status","I");
  340. } else {
  341. ds_diagcdlist.setColumn(ds_diagcdlist.rowposition,"status","N");
  342. }
  343. }
  344. }
  345. }
  346. /****************************************************************************************
  347. * Components : Grid
  348. * Components ID : grd_diaghist
  349. * Event : oncelldblclick
  350. * Argument : 01.obj : Object Event has occurred
  351. * : 02.e : Event Object
  352. * Description : 검색된 처방진단 선택
  353. ****************************************************************************************/
  354. function grd_diaghist_oncelldblclick(obj:Grid, e:GridClickEventInfo)
  355. {
  356. // if(isDataCell()){
  357. // model.setValue ( "/root/main/diaginfo/diagcdlist[" + grd_diaghist.row + "]/status", "I" );
  358. // var rtn1 = getDiagNodeListCSV ( model.instances(0).selectNodes( "/root/main/diaginfo/diagcdlist" ));
  359. // opener.javascript.setParameter( "SPMMO00800_rtn", rtn1 );
  360. // opener.javascript.setParameter("SPMMO00800_rtn_useyn", "Y");
  361. // window.close();
  362. // }
  363. if(e.row>-1){
  364. ds_diagcdlist.setColumn(ds_diagcdlist.rowposition,"status","I");
  365. var rtn1 = dsf_getDsCSV(ds_diagcdlist, ds_diagcdlist.rowposition, "N");
  366. opener.frmf_setParameter("SPMMO00800_rtn",rtn1);
  367. opener.frmf_setParameter("SPMMO00800_rtn_useyn","Y");
  368. this.close();
  369. }
  370. }
  371. /****************************************************************************************
  372. * Components : Button
  373. * Components ID : btn_copy
  374. * Event : onclick
  375. * Argument : 01.obj : Object Event has occurred
  376. * : 02.e : Event Object
  377. * Description : 선택버튼 실행
  378. ****************************************************************************************/
  379. function btn_copy_onclick(obj:Button, e:ClickEventInfo)
  380. {
  381. // var rtn1 = getDiagNodeListCSV ( model.instances(0).selectNodes( "/root/main/diaginfo/diagcdlist" ));
  382. // if ( rtn1 == "N" ) {
  383. // messageBox ( "선택된 진단이", "I004" );
  384. // } else {
  385. // opener.javascript.setParameter( "SPMMO00800_rtn", rtn1 );
  386. // opener.javascript.setParameter( "SPMMO00800_rtn_useyn", "Y");
  387. // window.close();
  388. // }
  389. var rtn1 = dsf_getDsCSV(ds_diagcdlist, null, "N", "status:I");
  390. if(utlf_isNull(rtn1)) {
  391. sysf_messageBox ( "선택된 진단이", "I004" );
  392. } else {
  393. opener.frmf_setParameter("SPMMO00800_rtn",rtn1);
  394. opener.frmf_setParameter("SPMMO00800_rtn_useyn","Y");
  395. this.close();
  396. }
  397. }
  398. /****************************************************************************************
  399. * Components : Button
  400. * Components ID : button1
  401. * Event : onclick
  402. * Argument : 01.obj : Object Event has occurred
  403. * : 02.e : Event Object
  404. * Description : 취소버튼 실행
  405. ****************************************************************************************/
  406. function button1_onclick(obj:Button, e:ClickEventInfo)
  407. {
  408. opener.frmf_setParameter( "SPMMO00800_rtn", "" );
  409. opener.frmf_setParameter( "SPMMO00800_rtn_useyn", "N");
  410. this.close();
  411. }
  412. //=======================================================================================
  413. // Function
  414. //---------------------------------------------------------------------------------------
  415. // function getDiagNodeListCSV(nodeList) {
  416. //
  417. // if( nodeList.length == 0 ){
  418. // return;
  419. // }
  420. //
  421. // var sColSep = "▦";
  422. // var sRowSep = "▩";
  423. //
  424. // var rCSV = "";
  425. //
  426. // var childNodeList = nodeList.item(0).childNodes;
  427. // var childNodeCnt = childNodeList.length;
  428. // if( childNodeCnt == 0 ){
  429. // return;
  430. // }
  431. //
  432. // var i, j;
  433. // for( i = 0; i < childNodeCnt - 1; i++) {
  434. // rCSV += childNodeList.item(i).nodeName + sColSep;
  435. // }
  436. // rCSV += childNodeList.item(i).nodeName + sRowSep;
  437. //
  438. // var node;
  439. // var cnt = 1;
  440. // var selCnt = 0;
  441. // while( node = nodeList.nextNode() ) {
  442. // if (model.getValue ( "/root/main/diaginfo/diagcdlist[" + cnt++ + "]/status" ) == "I" ) {
  443. // childNodeList = node.childNodes;
  444. // for( i = 0; i < childNodeCnt - 1; i++) {
  445. // rCSV += childNodeList.item(i).text + sColSep;
  446. // }
  447. // rCSV += childNodeList.item(i).text + sRowSep;
  448. // selCnt++;
  449. // }
  450. // }
  451. // if ( selCnt == 0 ) {
  452. // return "N"
  453. // } else {
  454. // return rCSV;
  455. // }
  456. // }
  457. /**
  458. * 진단검색(???호출하는곳이 없음???)
  459. * @param srchflag : 검색구분(1:코드, 2:명)
  460. * dataflag : 명칭검색구분(1:코드, 2:단어, 3:문장, 4:첫단어)
  461. * langflag : 한영구분(H: 한글, E:영문)
  462. * stnddd : 기준일자(외래일때는 진료일자, 입원일때는 처방일자)
  463. * srchdata : 검색내용
  464. * scrnflag : 화면구분(처방화면일 경우, 진단코드 검색시, 확장코드가 .000.인 것만 조회처리, *를 붙이면 전체로 처리
  465. * ageflag : 나이구분
  466. * sexflag : 성별구분
  467. */
  468. // function fReqGetDiagComnInfo(srchflag, dataflag, langflag, stnddd, srchdata, scrnflag, ageflag, sexflag){
  469. // model.removeNodeset("/root/send");
  470. // model.makeValue("/root/send/cond1", srchflag);
  471. // model.makeValue("/root/send/cond2", dataflag);
  472. // model.makeValue("/root/send/cond3", langflag);
  473. // model.makeValue("/root/send/cond4", stnddd);
  474. // model.makeValue("/root/send/cond5", srchdata);
  475. // model.makeValue("/root/send/scrnflag", scrnflag);
  476. // model.makeValue("/root/send/ageflag" , ageflag);
  477. // model.makeValue("/root/send/sexflag" , sexflag);
  478. //
  479. // if(submit("TRMMO00801")){
  480. // var srchinfo = model.getValue("root/send/diagsrchmetd");
  481. // var srcNodeList = model.instances(0).selectNodes("/root/main/diaginfo/diagcdlist");
  482. //
  483. // if(srcNodeList.length == 0){
  484. // if (srchinfo == "perdept"){
  485. // messageBox ( "개인셋, 과셋에서 검색된 진단이 없습니다. 전체 선택 후 진행", "I008" );
  486. // return;
  487. // }else {
  488. // opener.javascript.setParameter( "SPMMO00800_rtn", "" );
  489. // opener.javascript.setParameter( "SPMMO00800_rtn_useyn", "N");
  490. // messageBox ( "검색된 진단이", "I004" );
  491. // return;
  492. // }
  493. // }else if(srcNodeList.length == 1) {
  494. // model.setValue ( "/root/main/diaginfo/diagcdlist/status", "I" );
  495. // var rtn1 = getDiagNodeListCSV ( model.instances(0).selectNodes( "/root/main/diaginfo/diagcdlist" ));
  496. // opener.javascript.setParameter( "SPMMO00800_rtn", rtn1 );
  497. // opener.javascript.setParameter( "SPMMO00800_rtn_useyn", "Y");
  498. // window.close();
  499. //
  500. // }
  501. //
  502. // //grd_diaghist.autoResize = true ;
  503. // grd_diaghist.refresh();
  504. // }
  505. // }
  506. /****************************************************************************************
  507. * Function : fGetDiagSrch
  508. * Description : 진단검색
  509. * Argument :
  510. * :
  511. * return type :
  512. * Creator :
  513. ****************************************************************************************/
  514. function fGetDiagSrch() {
  515. //초기화 작업
  516. ds_diagcdlist.clearData();
  517. opener.frmf_setParameter("SPMMO00800_rtn","");
  518. opener.frmf_setParameter("SPMMO00800_rtn_useyn","N");
  519. var cond1 = opener.frmf_getParameter("SPMMO00800_cond1"); //검색구분(1:코드, 2:명)
  520. var cond2 = opener.frmf_getParameter("SPMMO00800_cond2"); //명칭검색구분(1:코드, 2:단어, 3:문장, 4:첫단어)
  521. var cond3 = opener.frmf_getParameter("SPMMO00800_cond3"); //한영구분(H: 한글, E:영문)
  522. var cond4 = opener.frmf_getParameter("SPMMO00800_cond4"); //기준일자: 외래일때는 진료일자, 입원일때는 처방일자
  523. var cond5 = opener.frmf_getParameter("SPMMO00800_cond5"); //검색내용
  524. var srchmodecond = opener.frmf_getParameter("SPMMO00800_srchmode"); //검색위치
  525. ipt_search.value = cond5;
  526. if(cond5 == "") {
  527. sysf_messageBox("검색어가 없습니다. 검색어 입력 후 진행하세요.");
  528. return ;
  529. }
  530. if(cond1 != "1"){
  531. if(cond3 == "H"){ //한글인 경우
  532. cond1 = 2;
  533. }else if(cond3 == "E"){ //영문인 경우
  534. if(utlf_isNum(cond5.charAt(1)) == true){ //두번째 자리가 숫자는 영문코드
  535. cond1 = 1;
  536. }else{ //두번째 자리가 숫자가 아닌 경우, 영문단어
  537. cond1 = 2;
  538. }
  539. }
  540. }
  541. if(srchmodecond == "C") {
  542. cond2 = radio1.value;
  543. }
  544. if(cond1 == "1") {
  545. radio1.enable = false;
  546. } else {
  547. radio1.enable = true;
  548. }
  549. //처방화면에 진단검색을 실행한 경우, scrnflag값을 설정해 준다.
  550. //처방화면에서 진단코드 검색을 실행한 경우, 확장코드가 .000.인 것만 조회하기 위해서 처리함
  551. //2008.07.11 오지훈
  552. //단어검색의 경우, contains를 활용하기 위해 %를 검색단어 사이에 추가해야함
  553. //2008.07.28 오지훈
  554. if(opener.frmf_getScreenID() == "SMMMO00100"){
  555. if(cond1 == 1){ //진단코드로 조회시에만 처리함
  556. var astflag = cond5.search(/[*]/);
  557. if(astflag < 0){ //*가 없는 경우는 0보다 작은 값 .000.인 것만 조회
  558. var scrnflag = "Y";
  559. }else{ //*가 있는 경우, 처방화면이지만 .000.인 것만을 조회하지 않는다.
  560. cond5 = cond5.replace(/[*]/g, ""); //*를 제거
  561. var scrnflag = "N";
  562. }
  563. }
  564. }
  565. if(cond2 == 2){ //단어검색인 경우
  566. var word = (cond5.getTrimLeft()).getTrimRight(); //좌,우측의 공백을 제거
  567. word = word.split(" ");
  568. if(word.length > 1){
  569. var fst = word[0].concat("% ");
  570. var sec = word[1].concat("%");
  571. cond5 = fst.concat(sec);
  572. }else{
  573. cond5 = word[0].concat("%");
  574. }
  575. }
  576. radio1.enableevent = false;
  577. radio1.value = cond2;
  578. radio1.enableevent = true;
  579. ds_req.setColumn(0,"cond1",cond1);
  580. ds_req.setColumn(0,"cond2",cond2);
  581. ds_req.setColumn(0,"cond3",cond3);
  582. ds_req.setColumn(0,"cond4",cond4);
  583. ds_req.setColumn(0,"cond5",cond5);
  584. ds_req.setColumn(0,"scrnflag",scrnflag);
  585. bool2.enableevent = false;
  586. if(srchmodecond == "P") { // Parent인 opener window에서 콜할때, Child인 current window에서 콜할때...
  587. ds_req.setColumn(0,"diagsrchmetd","perdept");
  588. }
  589. if(astflag >= 0) {
  590. ds_req.setColumn(0,"diagsrchmetd","diag");
  591. }
  592. bool2.enableevent = true;
  593. /*===============================================================================
  594. * 진단검색시 조건 추가 (나이/성별)
  595. * by sonjy 2008-07-21
  596. ===============================================================================*/
  597. var vAge = appf_getPatientInfo("age") ; //현대정보기술 함수요청
  598. //var vAge = 13;
  599. if(!utlf_isNull(vAge) ){
  600. ds_req.setColumn(0,"sexflag",lf_getArrayData(vAge, 0, 0, "^", "/" ));
  601. ds_req.setColumn(0,"ageflag",lf_getArrayData(vAge, 0, 1, "^", "/" ));
  602. }
  603. var perdept = ds_req.getColumn(0,"diagsrchmetd");
  604. var oParam = {};
  605. oParam.id = "TRMMO00801";
  606. oParam.service = "prcpmngtapp.PatDiagMngt";
  607. oParam.method = "reqGetDiagTermSrch";
  608. oParam.inds = "req=" + "ds_req";
  609. oParam.outds = "ds_diagcdlist=diagcdlist";
  610. oParam.async = false;
  611. oParam.callback = "cf_TRMMO00801";
  612. tranf_submit(oParam);
  613. if(arErrorCode.pop("TRMMO00801") > -1) {
  614. var cRow = ds_diagcdlist.rowposition;
  615. var srchinfo = ds_req.getColumn(0,"diagsrchmetd");
  616. var srcNodeList = ds_diagcdlist.rowcount; // 조회된 데이터 수
  617. if(srcNodeList == 0){
  618. if (srchinfo == "perdept"){
  619. //sysf_messageBox ( "개인셋, 과셋에서 검색된 진단이 없습니다. 전체마스터에서 조회합니다.", "I" );
  620. return "X";
  621. } else {
  622. opener.frmf_setParameter( "SPMMO00800_rtn", "" );
  623. opener.frmf_setParameter( "SPMMO00800_rtn_useyn", "N");
  624. sysf_messageBox ( "검색된 진단이", "I004" );
  625. return;
  626. }
  627. } else if(srcNodeList == 1) {
  628. ds_diagcdlist.setColumn(cRow,"status","I");
  629. var rtn1 = dsf_getDsCSV(ds_diagcdlist, cRow, "N");
  630. opener.frmf_setParameter( "SPMMO00800_rtn", rtn1 );
  631. opener.frmf_setParameter( "SPMMO00800_rtn_useyn", "Y");
  632. this.close();
  633. }
  634. }
  635. }
  636. /****************************************************************************************
  637. * Function : cf_TRMMO00801
  638. * Description : TRMMO00801 콜백함수
  639. * Argument :
  640. * :
  641. * return type :
  642. * Creator :
  643. ****************************************************************************************/
  644. function cf_TRMMO00801(sSvcId, nErrorCode, sErrorMsg) {
  645. arErrorCode.push(sSvcId, nErrorCode);
  646. }
  647. /****************************************************************************************
  648. * Function : fChngSrchMetd
  649. * Description : 진단 검색을 위한 체크 버튼 클릭 시 조회 패턴
  650. * Argument :
  651. * :
  652. * return type :
  653. * Creator :
  654. ****************************************************************************************/
  655. function fChngSrchMetd() {
  656. ds_init.setColumn(0,"srchmode","C"); // 검색 위치 Parent, Child
  657. var diagsrchcond1 = ds_init.getColumn(0,"diagsrchcond1"); // 검색방법
  658. var cond5 = ds_init.getColumn(0,"diagsrchnm"); // 검색내용 current window
  659. var cond3 = utlf_isHangul(cond5); // 한글, 영문구분
  660. if ( utlf_isNull(cond5)) {
  661. sysf_messageBox ( "검색어를", "C001" );
  662. return;
  663. } else if ( cond3 == "E" ){ //영문,숫자일때는 3글자 넣어야 검색가능
  664. if ( cond5.length < 2 ){
  665. sysf_messageBox ( "2글자 이상", "C001" );
  666. return;
  667. }
  668. }
  669. var cond4 = utlf_getCurrentDate(); //기준일자
  670. if ( diagsrchcond1 != 1 ) {
  671. if(cond3 == "H"){ //한글인 경우
  672. cond1 = 2;
  673. }else if(cond3 == "E"){ //영문인 경우
  674. if(utlf_isNum(cond5.charAt(1)) == true){ //두번째 자리가 숫자는 영문코드
  675. cond1 = 1;
  676. }else{ //두번째 자리가 숫자가 아닌 경우, 영문단어
  677. cond1 = 2;
  678. }
  679. }
  680. }
  681. if(opener.frmf_getScreenID() == "SMMMO00100"){
  682. if(diagsrchcond1 == 1){ //진단코드로 조회시에만 처리함
  683. var astflag = cond5.search(/[*]/);
  684. if(astflag < 0){ //*가 없는 경우는 0보다 작은 값 .000.인 것만 조회
  685. var scrnflag = "Y";
  686. }else{ //*가 있는 경우, 처방화면이지만 .000.인 것만을 조회하지 않는다.
  687. cond5 = cond5.replace(/[*]/g, ""); //*를 제거
  688. var scrnflag = "N";
  689. }
  690. }
  691. }
  692. if(diagsrchcond1 == 2){ //단어검색인 경우
  693. var word = (cond5.getTrimLeft()).getTrimRight(); //좌,우측의 공백을 제거
  694. word = word.split(" ");
  695. if(word.length > 1){
  696. var fst = word[0].concat("% ");
  697. var sec = word[1].concat("%");
  698. cond5 = fst.concat(sec);
  699. }else{
  700. cond5 = word[0].concat("%");
  701. }
  702. }
  703. // model.setValue("/root/send/cond2", model.getValue("/root/init/diagsrchcond1"));
  704. // model.setValue("/root/send/cond3", cond3);
  705. // model.setValue("/root/send/cond5", cond5);
  706. // model.setValue("/root/send/scrnflag", scrnflag);
  707. //ds_req.clearData();
  708. //var nRow = ds_req.addRow();
  709. ds_req.setColumn(0,"cond2",ds_init.getColumn(0,"diagsrchcond1"));
  710. ds_req.setColumn(0,"cond3",cond3);
  711. ds_req.setColumn(0,"cond5",cond5);
  712. ds_req.setColumn(0,"scrnflag",scrnflag);
  713. var diagsrchmetd = bool2.value;
  714. var oParam = {};
  715. oParam.id = "TRMMO00801";
  716. oParam.service = "prcpmngtapp.PatDiagMngt";
  717. oParam.method = "reqGetDiagTermSrch";
  718. oParam.inds = "req=" + "ds_req";
  719. oParam.outds = "ds_diagcdlist=diagcdlist";
  720. oParam.async = false;
  721. oParam.callback = "cf_TRMMO00801";
  722. tranf_submit(oParam);
  723. if(arErrorCode.pop("TRMMO00801") > -1) {
  724. var cRow = ds_diagcdlist.rowposition;
  725. var srchinfo = ds_req.getColumn(0,"diagsrchmetd");
  726. var srcNodeList = ds_diagcdlist.rowcount; // 조회된 데이터 수
  727. if(srcNodeList == 0){
  728. if (srchinfo == "perdept"){
  729. sysf_messageBox ( "개인셋, 과셋에서 검색된 진단이 없습니다. 전체 선택 후 진행", "I008" );
  730. return;
  731. } else {
  732. opener.frmf_setParameter( "SPMMO00800_rtn", "" );
  733. opener.frmf_setParameter( "SPMMO00800_rtn_useyn", "N");
  734. sysf_messageBox ( "검색된 진단이", "I004" );
  735. return;
  736. }
  737. } else if(srcNodeList == 1) {
  738. ds_diagcdlist.setColumn(cRow,"status","I");
  739. var rtn1 = dsf_getDsCSV(ds_diagcdlist, cRow, "N");
  740. opener.frmf_setParameter( "SPMMO00800_rtn", rtn1 );
  741. opener.frmf_setParameter( "SPMMO00800_rtn_useyn", "Y");
  742. this.close();
  743. }
  744. }
  745. }
  746. function ds_diagcdlist_oncolumnchanged(obj:Dataset, e:DSColChangeEventInfo)
  747. {
  748. if(e.columnid == "status")
  749. obj.setColumn(e.row, e.columnid, (e.newvalue == "I" || e.newvalue == 1) ? "I" : "N");
  750. }
  751. function btn_excel_onclick(obj:Button, e:ClickEventInfo)
  752. {
  753. grdf_exportExcel(grd_diaghist, "진단검색", "진단검색", false, "", "user", true);
  754. }
  755. ]]></Script>
  756. </Form>
  757. </FDL>