SMMNE09400_응급실재방문환자관리.xfdl 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SMMNE09400" position="absolute 0 0 1015 800" titletext="응급실 재방문 환자 관리" oninit="SMMNE09400_oninit" onload="SMMNE09400_onload" ontimer="SMMNE09400_ontimer">
  5. <Layouts>
  6. <Layout>
  7. <Static text="응급실 재방문 환자 관리" position="absolute 0 0 180 25" id="caption6" class="tit_1"/>
  8. <Div position="absolute 0 62 1005 762" id="group1">
  9. <Layouts>
  10. <Layout>
  11. <Grid position="absolute 0 14 1005 700" id="grd_patlist" class="datagrid2" binddataset="ds_grd_patlist" onexpanddown="group1_grd_patlist_onexpanddown" autoenter="select" oncellclick="group1_grd_patlist_oncellclick" ontextchange="group1_grd_patlist_ontextchange">
  12. <Formats>
  13. <Format id="default">
  14. <Columns>
  15. <Column size="30"/>
  16. <Column size="60"/>
  17. <Column size="60"/>
  18. <Column size="60"/>
  19. <Column size="100"/>
  20. <Column size="60"/>
  21. <Column size="60"/>
  22. <Column size="90"/>
  23. <Column size="65"/>
  24. <Column size="120"/>
  25. <Column size="80"/>
  26. <Column size="90"/>
  27. <Column size="50"/>
  28. <Column size="60"/>
  29. <Column size="0"/>
  30. <Column size="0"/>
  31. <Column size="0"/>
  32. <Column size="0"/>
  33. <Column size="0"/>
  34. <Column size="0"/>
  35. </Columns>
  36. <Rows>
  37. <Row size="24" band="head"/>
  38. <Row size="24"/>
  39. </Rows>
  40. <Band id="head">
  41. <Cell/>
  42. <Cell col="1" text="환자번호"/>
  43. <Cell col="2" text="이름"/>
  44. <Cell col="3" text="성별/나이"/>
  45. <Cell col="4" text="진료과"/>
  46. <Cell col="5" text="담당교수"/>
  47. <Cell col="6" text="담당의"/>
  48. <Cell col="7" colspan="2" text="퇴원시 담의 전화번호" taborder="undefined"/>
  49. <Cell col="9" text="신청병동"/>
  50. <Cell col="10" text="신청일"/>
  51. <Cell col="11" colspan="2" text="입실일시" taborder="undefined"/>
  52. <Cell col="13" text="방문횟수"/>
  53. <Cell col="14" text="caption1"/>
  54. <Cell col="15" text="진료과"/>
  55. <Cell col="16" text="진료의"/>
  56. <Cell col="17" text="신청병동"/>
  57. <Cell col="18" text="indd"/>
  58. <Cell col="19" text="cretno"/>
  59. </Band>
  60. <Band id="body">
  61. <Cell displaytype="checkbox" edittype="checkbox" text="bind:chk" expr="expr:chk == 'Y' || chk == '1'?1:0"/>
  62. <Cell col="1" style="align:left;" text="bind:pid"/>
  63. <Cell col="2" style="align:left;" text="bind:hngnm"/>
  64. <Cell col="3" text="bind:sa"/>
  65. <Cell col="4" style="align:left;" text="bind:orddeptnm"/>
  66. <Cell col="5" style="align:left;" text="bind:orddrnm"/>
  67. <Cell col="6" style="align:left;" text="bind:outdrnm"/>
  68. <Cell col="7" style="align:left;" text="bind:outdrphone"/>
  69. <Cell col="8" style="align:left;" text="bind:outdrnzone"/>
  70. <Cell col="9" style="align:left top;padding:3 3 3 3;" text="bind:prestwardnm" wordwrap="word"/>
  71. <Cell col="10" displaytype="date" text="bind:appdd" calendardisplaynulltype="nulltext"/>
  72. <Cell col="11" displaytype="date" edittype="date" style="padding:0 0 0 0;" text="bind:chosdd" editautoselect="true" calendardisplaynulltype="nulltext"/>
  73. <Cell col="12" displaytype="text" edittype="mask" text="bind:chostm" mask="##:##" maskchar=" " edittrimtype="both" editautoselect="true" expandshow="show"/>
  74. <Cell col="13" text="bind:visitno"/>
  75. <Cell col="14" text="bind:outdrid"/>
  76. <Cell col="15" text="bind:orddeptcd"/>
  77. <Cell col="16" text="bind:orddrid"/>
  78. <Cell col="17" text="bind:prestwardcd"/>
  79. <Cell col="18" text="bind:indd"/>
  80. <Cell col="19" text="bind:cretno"/>
  81. </Band>
  82. </Format>
  83. </Formats>
  84. </Grid>
  85. </Layout>
  86. </Layouts>
  87. </Div>
  88. <Div position="absolute 0 28 1005 63" id="group3">
  89. <Layouts>
  90. <Layout>
  91. <Shape position="absolute 0 0 1005 35" id="roundrect1" class="roundrect_search" type="roundrectangle"/>
  92. <Button position="absolute 712 7 768 29" id="btn_srchindxcd" class="btn1" taborder="5" text="조회" onclick="group3_btn_srchindxcd_onclick"/>
  93. <Static text="등록번호 :" position="absolute 504 10 580 27" align="align:center middle;" id="caption40" class="search_name" visible="false"/>
  94. <Edit position="absolute 585 8 665 27" id="ipt_pid" class="input_s_essential" taborder="1" visible="false" onkeydown="group3_ipt_pid_onkeydown" autoselect="true"/>
  95. <Shape position="absolute 698 7 704 29" linetype="vertical" id="line27" class="line_4"/>
  96. <Static text="업무일자 :" position="absolute 19 10 95 27" align="align:center middle;" id="caption1" class="search_name"/>
  97. <Calendar position="absolute 100 8 205 27" align="align:center middle;" id="input1" class="input_s_essential" taborder="1" autoselect="true"/>
  98. <Static text="상 태 :" position="absolute 248 10 304 27" align="align:center middle;" id="caption3" class="search_name"/>
  99. <Radio position="absolute 303 7 470 27" id="radio1" columncount="3" codecolumn="codecolumn" datacolumn="datacolumn" onitemchanged="group3_radio1_onitemchanged">
  100. <Dataset id="innerdataset">
  101. <ColumnInfo>
  102. <Column id="codecolumn"/>
  103. <Column id="datacolumn"/>
  104. </ColumnInfo>
  105. <Rows>
  106. <Row>
  107. <Col id="codecolumn">1</Col>
  108. <Col id="datacolumn">신청</Col>
  109. </Row>
  110. <Row>
  111. <Col id="codecolumn">2</Col>
  112. <Col id="datacolumn">승인</Col>
  113. </Row>
  114. <Row>
  115. <Col id="codecolumn">3</Col>
  116. <Col id="datacolumn">완료</Col>
  117. </Row>
  118. </Rows>
  119. </Dataset>
  120. </Radio>
  121. <Button position="absolute 772 7 828 29" id="btn_acpt" class="btn2" taborder="5" text="승인" onclick="group3_btn_acpt_onclick"/>
  122. <Button position="absolute 914 7 994 29" id="btn_save" class="btn2" text="입실확인" onclick="group3_btn_save_onclick"/>
  123. <Button position="absolute 831 7 911 29" id="btn_cncl" class="btn2" taborder="5" text="승인취소" onclick="group3_btn_cncl_onclick"/>
  124. </Layout>
  125. </Layouts>
  126. </Div>
  127. <Shape position="absolute 0 71 1005 77" linetype="horizontal" id="line13" class="line_10"/>
  128. <Static text="[표]" position="absolute 960 765 1005 785" align="align:right middle;" id="caption2"/>
  129. </Layout>
  130. </Layouts>
  131. <Objects>
  132. <Dataset id="ds_grd_patlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" reversesubsum="false">
  133. <ColumnInfo>
  134. <Column id="chk" type="STRING"/>
  135. <Column id="pid" type="STRING"/>
  136. <Column id="hngnm" type="STRING"/>
  137. <Column id="sa" type="STRING"/>
  138. <Column id="orddeptnm" type="STRING"/>
  139. <Column id="orddrnm" type="STRING"/>
  140. <Column id="outdrnm" type="STRING"/>
  141. <Column id="outdrphone" type="STRING"/>
  142. <Column id="outdrnzone" type="STRING"/>
  143. <Column id="prestwardnm" type="STRING"/>
  144. <Column id="appdd" type="STRING"/>
  145. <Column id="chosdd" type="STRING"/>
  146. <Column id="chostm" type="STRING"/>
  147. <Column id="visitno" type="STRING"/>
  148. <Column id="outdrid" type="STRING"/>
  149. <Column id="orddeptcd" type="STRING"/>
  150. <Column id="orddrid" type="STRING"/>
  151. <Column id="prestwardcd" type="STRING"/>
  152. <Column id="indd" type="STRING"/>
  153. <Column id="cretno" type="STRING"/>
  154. </ColumnInfo>
  155. </Dataset>
  156. <Dataset id="ds_cond" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  157. <ColumnInfo>
  158. <Column id="workdd" type="STRING" size="256"/>
  159. <Column id="status" type="STRING" size="256"/>
  160. <Column id="pid" type="STRING" size="256"/>
  161. </ColumnInfo>
  162. <Rows>
  163. <Row>
  164. <Col id="workdd"/>
  165. <Col id="status">1</Col>
  166. <Col id="pid"/>
  167. </Row>
  168. </Rows>
  169. </Dataset>
  170. <Dataset id="ds_resultitem" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  171. <Dataset id="ds_authinfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  172. </Objects>
  173. <Bind>
  174. <BindItem id="item0" compid="group3.input1" propid="value" datasetid="ds_cond" columnid="workdd"/>
  175. <BindItem id="item1" compid="group3.radio1" propid="value" datasetid="ds_cond" columnid="status"/>
  176. <BindItem id="item2" compid="group3.ipt_pid" propid="value" datasetid="ds_cond" columnid="pid"/>
  177. </Bind>
  178. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  179. * System Name : KU2.0
  180. * Job Name :
  181. * Creator :
  182. * Make Date : 2015-11-13
  183. * Description :
  184. *---------------------------------------------------------------------------------------
  185. * Modify Date Modifier Modify Description
  186. *---------------------------------------------------------------------------------------
  187. * 2015-11-13 Live Converter TF->XP
  188. *
  189. *---------------------------------------------------------------------------------------
  190. ****************************************************************************************/
  191. include "com_commonxp::comm_main.xjs";
  192. function fSearch() {
  193. //grd_patlist.rebuild();
  194. var oParam = {};
  195. oParam.id = "TRMNE09401";
  196. oParam.service = "ercareapp.ERInRmOutRmMngt";
  197. oParam.method = "reqGetErRevisitList";
  198. oParam.inds = "req=ds_cond";
  199. oParam.outds = "ds_grd_patlist=patlist";
  200. oParam.async = false;
  201. //oParam.callback = "cf_TRMNE09401";
  202. tranf_submit(oParam);
  203. }
  204. function fSave(param) {
  205. if (param == "save") {
  206. var rtnval = sysf_messageBox("지정한 입실일시 이후 마감 전인 모든 식사 처방이 D/C처리 됩니다\r\n\r\n입실 처리 하시겠습니까?", "Q999");
  207. if (rtnval != "6") {
  208. return;
  209. }
  210. }
  211. var sHeader = "gbn▦pid▦hngnm▦indd▦cretno▦appdd▦todd▦instcd▦chosdd▦chostm▩";
  212. var sData = "";
  213. var pid, hngnm, chosdd, chostm;
  214. for(var i = 0; i < ds_grd_patlist.rowcount; i++) {
  215. if (ds_grd_patlist.getColumn(i,"chk") == "Y" || ds_grd_patlist.getColumn(i,"chk") == "1") {
  216. pid = utlf_transNullToEmpty(ds_grd_patlist.getColumn(i,"pid"));
  217. hngnm = utlf_transNullToEmpty(ds_grd_patlist.getColumn(i,"hngnm"));
  218. indd = utlf_transNullToEmpty(ds_grd_patlist.getColumn(i,"indd"));
  219. cretno = utlf_transNullToEmpty(ds_grd_patlist.getColumn(i,"cretno"));
  220. appdd = utlf_transNullToEmpty(ds_grd_patlist.getColumn(i,"appdd"));
  221. todd = "99991231";
  222. chosdd = utlf_transNullToEmpty(ds_grd_patlist.getColumn(i,"chosdd"));
  223. chostm = utlf_transNullToEmpty(ds_grd_patlist.getColumn(i,"chostm"));
  224. orddeptcd = utlf_transNullToEmpty(ds_grd_patlist.getColumn(i,"orddeptcd"));
  225. if (param == "save" && (utlf_isNull(chosdd) || utlf_isNull(chostm))) {
  226. sysf_messageBox("[" + pid + " " + hngnm + "] 환자의 입실일시가 없습니다.", "E999");
  227. return;
  228. }
  229. sData += param + "▦"
  230. + pid + "▦"
  231. + hngnm + "▦"
  232. + indd + "▦"
  233. + cretno + "▦"
  234. + appdd + "▦"
  235. + todd + "▦"
  236. + sysf_getUserInfo("dutplceinstcd") + "▦"
  237. + chosdd + "▦"
  238. + chostm + "▦"
  239. + orddeptcd + "▩";
  240. // 응급의학과 승인하면 퇴원시 주치의에게 SMS 전송 2014.01.13
  241. if (param == "acpt") {
  242. fSendSMS(i);
  243. }
  244. }
  245. }
  246. dsf_setCSVToDs("ds_send_savedata",sHeader + sData);
  247. var oParam = {};
  248. oParam.id = "TXMNE09401";
  249. oParam.service = "ercareapp.ERInRmOutRmMngt";
  250. oParam.method = "reqSetErRevisitList";
  251. oParam.inds = "savedata=ds_send_savedata";
  252. oParam.outds = "ds_resultitem=item";
  253. oParam.async = false;
  254. oParam.callback = "cf_TXMNE09401";
  255. tranf_submit(oParam);
  256. }
  257. function cf_TXMNE09401(sSvcId, nErrorCode, sErrorMsg) {
  258. if(nErrorCode < 0) return;
  259. fSearch();
  260. fBtnStatus();
  261. }
  262. function fBtnStatus() {
  263. var drflag = "", nrflag="";
  264. var oParam = {};
  265. oParam.id = "TRMNE09402";
  266. oParam.service = "ercareapp.ERInRmOutRmMngt";
  267. oParam.method = "reqGetErRevisitAuth";
  268. oParam.inds = "req=ds_cond";
  269. oParam.outds = "ds_authinfo=authinfo";
  270. oParam.async = false;
  271. oParam.callback = "cf_TRMNE09402";
  272. tranf_submit(oParam);
  273. drflag = ds_authinfo.getColumn(0,"drflag");
  274. nrflag = ds_authinfo.getColumn(0,"nrflag");
  275. if (sysf_getUserInfo("userid") == "ENR") {
  276. drflag = "Y";
  277. }
  278. var status = ds_cond.getColumn(0,"status");
  279. if (status == "3") {
  280. group3.btn_acpt.enable = false;
  281. group3.btn_cncl.enable = false;
  282. group3.btn_save.enable = false;
  283. } else if (status == "2") {
  284. group3.btn_acpt.enable = false;
  285. if (drflag == "Y") {
  286. group3.btn_cncl.enable = true;
  287. } else {
  288. group3.btn_cncl.enable = false;
  289. }
  290. if (nrflag == "Y") {
  291. group3.btn_save.enable = true;
  292. } else {
  293. group3.btn_save.enable = false;
  294. }
  295. } else {
  296. if (drflag == "Y") {
  297. group3.btn_acpt.enable = true;
  298. group3.btn_cncl.enable = true;
  299. } else {
  300. group3.btn_acpt.enable = false;
  301. group3.btn_cncl.enable = false;
  302. }
  303. if (nrflag == "Y") {
  304. group3.btn_save.enable = true;
  305. } else {
  306. group3.btn_save.enable = false;
  307. }
  308. }
  309. //속도개선
  310. this.setTimer(0, 100);
  311. //fSearch();
  312. }
  313. function cf_TRMNE09402(sSvcId, nErrorCode, sErrorMsg) {
  314. if(nErrorCode < 0) return;
  315. }
  316. function fSendSMS(pRow) {
  317. if ( pRow > -1 ) {
  318. var pid = utlf_transNullToEmpty(ds_grd_patlist.getColumn(pRow,"pid"));
  319. var hngnm = utlf_transNullToEmpty(ds_grd_patlist.getColumn(pRow,"hngnm"));
  320. var indd = utlf_transNullToEmpty(ds_grd_patlist.getColumn(pRow,"indd"));
  321. var cretno = utlf_transNullToEmpty(ds_grd_patlist.getColumn(pRow,"cretno"));
  322. var drid = utlf_transNullToEmpty(ds_grd_patlist.getColumn(pRow,"outdrid"));
  323. var drnm = utlf_transNullToEmpty(ds_grd_patlist.getColumn(pRow,"outdrnm"));
  324. var phonno = utlf_transNullToEmpty(ds_grd_patlist.getColumn(pRow,"outdrphone"));
  325. var deptnm = utlf_transNullToEmpty(ds_grd_patlist.getColumn(pRow,"orddeptnm"));
  326. var userid = sysf_getUserInfo("userid");
  327. if (!utlf_isNull(drnm) && !utlf_isNull(phonno)) {
  328. var msg = "금일 퇴원한 [" + deptnm + " " + pid + " " + hngnm + "] 환자 응급실 재방문";
  329. var erno = "";
  330. if (sysf_getUserInfo("dutplceinstcd") == "031") {
  331. erno = "86100";
  332. } else {
  333. erno = "0532002100";
  334. }
  335. var rtnMsg = sysf_messageBox("환자의 퇴원 당시 주치의인 " + deptnm + " " + drnm + " 선생님에게\r\n"
  336. + "환자 재방문 관련 SMS를 발송하시겠습니까?\r\n\r\n"
  337. + "※ 내용: " + msg + "\r\n"
  338. + " 회신번호: " + erno, "Q999");
  339. if (rtnMsg == "6") {
  340. dsf_createDsRow("ds_send_smsmsg_recvr" , [
  341. {col: "usernm", val:drnm}
  342. ,{col: "userid", val:drid}
  343. ,{col: "mpphonno", val:phonno}
  344. ,{col: "usernm", val:"응급의료센터"}
  345. ]);
  346. dsf_createDsRow("ds_send_smsmsg_req" , [
  347. {col: "calltype", val:"call"}
  348. ,{col: "msgcnts", val:msg}
  349. ,{col: "calltelno", val:erno}
  350. ]);
  351. dsf_createDsRow("ds_send_smsmsg_info" , [
  352. {col: "pid", val:pid}
  353. ,{col: "indd", val:indd}
  354. ,{col: "cretno", val:cretno}
  355. ,{col: "userid", val:userid}
  356. ]);
  357. var oParam = {};
  358. oParam.id = "TXMNE00205";
  359. oParam.service = "ercareapp.ERInRmOutRmMngt";
  360. oParam.method = "reqExeSendUserMessage";
  361. oParam.inds = "recvr=ds_send_smsmsg_recvr req=ds_send_smsmsg_req info=ds_send_smsmsg_info";
  362. oParam.outds = "ds_resultitem=succnt";
  363. oParam.async = false;
  364. oParam.callback = "cf_TXMNE00205";
  365. tranf_submit(oParam);
  366. }
  367. }
  368. }
  369. }
  370. function SMMNE09400_oninit(obj:Form, e:InitEventInfo)
  371. {
  372. frmf_initForm(obj); // 화면공통
  373. }
  374. function cf_TXMNE00205(sSvcId, nErrorCode, sErrorMsg) {
  375. if(nErrorCode < 0) return;
  376. sysf_messageBox("메시지 전송이 ", "I002");
  377. }
  378. function SMMNE09400_onload(obj:Form, e:LoadEventInfo)
  379. {
  380. var workdd = utlf_getCurrentDate();
  381. ds_cond.setColumn(0,"workdd", workdd);
  382. fBtnStatus();
  383. }
  384. function group1_grd_patlist_onexpanddown(obj:Grid, e:GridMouseEventInfo)
  385. {
  386. var row = e.row;
  387. var curdate = utlf_getCurrentDate();
  388. var curtime = utlf_getCurrentTime().substr(0, 4)
  389. ds_grd_patlist.setColumn(row,"chk","Y");
  390. ds_grd_patlist.setColumn(row,"chosdd", curdate);
  391. ds_grd_patlist.setColumn(row,"chostm", curtime);
  392. //grd_patlist.rowStatus(row) = 2;
  393. grdf_setStatus(obj,"U",row);
  394. }
  395. function group3_btn_srchindxcd_onclick(obj:Button, e:ClickEventInfo)
  396. {
  397. fSearch();
  398. }
  399. function group3_ipt_pid_onkeydown(obj:Edit, e:KeyEventInfo)
  400. {
  401. if(e.keycode == 13) {
  402. obj.updateToDataset();
  403. fSearch();
  404. }
  405. }
  406. function group3_radio1_onitemchanged(obj:Radio, e:ItemChangeEventInfo)
  407. {
  408. obj.updateToDataset();
  409. fBtnStatus();
  410. }
  411. function group3_btn_acpt_onclick(obj:Button, e:ClickEventInfo)
  412. {
  413. fSave("acpt");
  414. }
  415. function group3_btn_save_onclick(obj:Button, e:ClickEventInfo)
  416. {
  417. fSave("save");
  418. }
  419. function group3_btn_cncl_onclick(obj:Button, e:ClickEventInfo)
  420. {
  421. fSave("cancel");
  422. }
  423. function SMMNE09400_ontimer(obj:Form, e:TimerEventInfo)
  424. {
  425. if (e.timerid == 0) {
  426. this.killTimer(0);
  427. fSearch();
  428. }
  429. }
  430. function group1_grd_patlist_oncellclick(obj:Grid, e:GridClickEventInfo)
  431. {
  432. grdf_controlGridCalendar(obj, e);
  433. }
  434. function group1_grd_patlist_ontextchange(obj:Grid, e:GridEditTextChangeEventInfo)
  435. {
  436. if( e.col == 12 ){
  437. grdf_validGridTime(obj, e);
  438. }
  439. }
  440. ]]></Script>
  441. </Form>
  442. </FDL>