SPMMO33200.xjs 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  3. * System Name : KNUH2.0
  4. * Job Name : EMR
  5. * Creator :
  6. * Make Date : 2015-02-09
  7. * Description :
  8. *---------------------------------------------------------------------------------------
  9. * Modify Date Modifier Modify Description
  10. *---------------------------------------------------------------------------------------
  11. * 2015-02-09 Live Converter TF->XP
  12. *
  13. *---------------------------------------------------------------------------------------
  14. ****************************************************************************************/
  15. var xSortCol = -1;
  16. var xSortType = "";
  17. var arErrorCode = new HashArray();
  18. //=======================================================================================
  19. // Function
  20. //---------------------------------------------------------------------------------------
  21. /****************************************************************************************
  22. * Function : fInitOnCall
  23. * Description : On Call 신청화면 초기화
  24. * Argument : flag : 화면구분 flag(A:신청, R:도착, E:종료, P:결재/접수, S:집계)
  25. * return type :
  26. * Creator :
  27. ****************************************************************************************/
  28. function fInitOnCall(flag){
  29. ds_main_cond.setColumn(0,"condflag", flag);
  30. if( flag == "P" ){ //결재(접수) 화면
  31. ds_main_cond.setColumn(0,"condkind", "R");
  32. ds_main_cond.setColumn(0,"condacpt", "-");
  33. ds_main_cond.setColumn(0,"sortkind", "D");
  34. ds_main_cond.setColumn(0,"patflagcd", "-");
  35. fInitMngtOnCall(flag);
  36. fGetAfterOnCallList();
  37. }else if( flag == "S" ){ //집계 화면
  38. fInitMngtOnCall(flag);
  39. fGetSumOnCallList();
  40. var DayOfWeek = ds_main_oncalllist_month.getColumn(0,"day");
  41. if(!utlf_isNull(DayOfWeek)){
  42. //var Caption = "구분^calldeptcd^진료과^성명^사번^01^02^03^04^05^06^07^08^09^10^11^12^13^14^15^16^17^18^19^20^21^22^23^24^25^26^27^28^29^30^31|구분^calldeptcd^진료과^성명^사번^" + DayOfWeek;
  43. var Caption = DayOfWeek;
  44. s_Caption = Caption.split("^");
  45. var j = 36; // 그리드 셀 수 고정됨 merge작업 때문에 고정값으로 줌. 추후 문제 시 수정필요 2019-04-15 이아영
  46. for(var i = 0; i < s_Caption.length; i++)
  47. {
  48. grd_oncalllist.setCellProperty("Head", j, "text", s_Caption[i]);
  49. j++;
  50. }
  51. }
  52. }else if( flag == "T" ){ //통계조회 화면
  53. fInitMngtOnCall(flag);
  54. fGetStatsOnCallList()
  55. }else if( flag == "V" ){ //통계조회 화면
  56. //fGetStatsOnCallList()
  57. //call 진료과 리스트를 조회;
  58. // mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept" , "D");
  59. lf_mmbfGetDeptCodeComboList(ds_init_orddept, "D");
  60. // 요청서: 20181224015
  61. var nRowCnt = ds_init_orddept.rowcount;
  62. ds_init_orddept.addRow();
  63. ds_init_orddept.setColumn(nRowCnt, "deptcd", "2200000000");
  64. ds_init_orddept.setColumn(nRowCnt, "depthngnm", "진단검사의학과");
  65. ds_init_orddept.setColumn(nRowCnt, "deptengabbr", "LM");
  66. ds_init_orddept.addRow();
  67. ds_init_orddept.setColumn(nRowCnt+1, "deptcd", "2210000000");
  68. ds_init_orddept.setColumn(nRowCnt+1, "depthngnm", "병리과");
  69. ds_init_orddept.setColumn(nRowCnt+1, "deptengabbr", "PATH");
  70. fInitMngtOnCall(flag);
  71. }else{ //신청-도착-완료 화면
  72. //call 진료과 리스트를 조회
  73. // mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept" , "D");
  74. lf_mmbfGetDeptCodeComboList(ds_init_orddept, "D");
  75. // 요청서: 20181224015
  76. var nRowCnt = ds_init_orddept.rowcount;
  77. ds_init_orddept.addRow();
  78. ds_init_orddept.setColumn(nRowCnt, "deptcd", "2200000000");
  79. ds_init_orddept.setColumn(nRowCnt, "depthngnm", "진단검사의학과");
  80. ds_init_orddept.setColumn(nRowCnt, "deptengabbr", "LM");
  81. ds_init_orddept.addRow();
  82. ds_init_orddept.setColumn(nRowCnt+1, "deptcd", "2210000000");
  83. ds_init_orddept.setColumn(nRowCnt+1, "depthngnm", "병리과");
  84. ds_init_orddept.setColumn(nRowCnt+1, "deptengabbr", "PATH");
  85. //각 화면의 초기화
  86. if( flag == "A" ){
  87. fInitAppOnCall();
  88. ds_main_oncallinfo.setColumn(0,"patflagcd",frmf_getMenuParam());
  89. }else{
  90. fInitMngtOnCall(flag);
  91. }
  92. //환자별 신청내역 조회
  93. fGetOnCallList();
  94. }
  95. }
  96. /****************************************************************************************
  97. * Function : fInitOnCall
  98. * Description : On Call 신청화면 초기화
  99. * Argument : flag : 화면구분 flag(A:신청, R:도착, E:종료, P:결재/접수, S:집계)
  100. * return type :
  101. * Creator :
  102. ****************************************************************************************/
  103. function fInitMngtOnCall(flag){
  104. var curDD = utlf_getCurrentDate();
  105. if( flag == "S" ){
  106. ds_main_cond.setColumn(0,"basemm" , curDD.substring(0,6)); //집계화면은 조회월 초기화
  107. }else if( flag == "T" ){
  108. ds_main_cond.setColumn(0,"fromdd" , utlf_getNewDate().getAddDate(-1, "M").getDateFormat("YYYYMMDD"));
  109. ds_main_cond.setColumn(0,"todd" , curDD);
  110. }else{
  111. ds_main_cond.setColumn(0,"fromdd" , curDD);
  112. ds_main_cond.setColumn(0,"todd" , curDD);
  113. }
  114. if( flag == "R" ){
  115. ds_main_cond.setColumn(0,"codnstat" , "A"); //도착화면은 신청내역 조회
  116. ds_main_oncallinfo.setColumn(0,"arvdd", curDD);
  117. }else if( flag == "E" ){
  118. ds_main_cond.setColumn(0,"codnstat" , "R"); //완료화면은 도착내역 조회
  119. ds_main_oncallinfo.setColumn(0,"enddd", curDD);
  120. }
  121. // 현행화 15.06.01 start
  122. if( flag == "P" ) { // 온콜 내역화면
  123. if(lf_ContainsHardCD("490", sysf_getUserInfo( "dutplcecd" ))) { // 저장버튼 활성화 부서
  124. btn_save.enable = true;
  125. } else {
  126. btn_save.enable = false;
  127. }
  128. }
  129. // 현행화 15.06.01 end
  130. }
  131. /****************************************************************************************
  132. * Function : fGetAfterOnCallList
  133. * Description : 등록기간/시작시간 기준 OnCall 전체 리스트를 조회한다.
  134. * Argument :
  135. * return type :
  136. * Creator :
  137. ****************************************************************************************/
  138. function fGetAfterOnCallList(){
  139. var oParam = {};
  140. oParam.id = "TRMMO33501";
  141. oParam.service = "prcpmngtapp.ErMngt";
  142. oParam.method = "reqGetAfterOnCallList";
  143. oParam.inds = "req=ds_main_cond";
  144. oParam.outds = "ds_main_oncalllist_info=info";
  145. oParam.async = false;
  146. oParam.callback = "cb_TRMMO33501";
  147. tranf_submit(oParam);
  148. }
  149. function cb_TRMMO33501(sSvcId, nErrorCode, sErrorMsg)
  150. {
  151. if(nErrorCode < 0) return;
  152. ds_main_oncalllist_info.addColumn("chk1", "string");
  153. ds_main_oncalllist_info.addColumn("chk2", "string");
  154. ds_main_oncalllist_info.addColumn("chk3", "string");
  155. ds_main_oncalllist_info.addColumn("chk4", "string");
  156. ds_main_oncalllist_info.addColumn("chk5", "string");
  157. for(var iIndex = 0 ; iIndex < ds_main_oncalllist_info.rowcount ; iIndex++)
  158. {
  159. if(!utlf_isNull(ds_main_oncalllist_info.getColumn(iIndex, "checkyn")))
  160. {
  161. var arrData = ds_main_oncalllist_info.getColumn(iIndex, "checkyn").split(" ");
  162. for(var yIndex = 0 ; yIndex < arrData.length ; yIndex++)
  163. {
  164. if(arrData[yIndex] == 1)
  165. {
  166. ds_main_oncalllist_info.setColumn(iIndex, "chk1", "Y");
  167. }
  168. else if(arrData[yIndex] == 2)
  169. {
  170. ds_main_oncalllist_info.setColumn(iIndex, "chk2", "Y");
  171. }
  172. else if(arrData[yIndex] == 3)
  173. {
  174. ds_main_oncalllist_info.setColumn(iIndex, "chk3", "Y");
  175. }
  176. else if(arrData[yIndex] == 4)
  177. {
  178. ds_main_oncalllist_info.setColumn(iIndex, "chk4", "Y");
  179. }
  180. else if(arrData[yIndex] == 5)
  181. {
  182. ds_main_oncalllist_info.setColumn(iIndex, "chk5", "Y");
  183. }
  184. }
  185. }
  186. }
  187. }
  188. /****************************************************************************************
  189. * Function : fGetSumOnCallList
  190. * Description : 월별 On Call 수당지급내역을 조회한다.
  191. * : fromdd:기간 시작일자, todd:기간 종료일자, condstat:환자상태 조건
  192. * Argument :
  193. * return type :
  194. * Creator :
  195. ****************************************************************************************/
  196. function fGetSumOnCallList(){
  197. var oParam = {};
  198. oParam.id = "TRMMO33601";
  199. oParam.service = "prcpmngtapp.ErMngt";
  200. oParam.method = "reqGetSumOnCallList";
  201. oParam.inds = "req=ds_main_cond";
  202. oParam.outds = "ds_main_oncalllist_month=month ds_main_oncalllist_info=info";
  203. oParam.async = false;
  204. oParam.callback = "";
  205. tranf_submit(oParam);
  206. }
  207. /****************************************************************************************
  208. * Function : fGetSumOnCallList
  209. * Description : 월별 직급별 On Call 통계를 조회한다.
  210. * Argument :
  211. * return type :
  212. * Creator :
  213. ****************************************************************************************/
  214. function fGetStatsOnCallList(){
  215. var oParam = {};
  216. oParam.id = "TRMMO33701";
  217. oParam.service = "prcpmngtapp.ErMngt";
  218. oParam.method = "reqGetOnCallStatsList";
  219. oParam.inds = "req=ds_main_cond";
  220. oParam.outds = "ds_main_oncalllist_info=info";
  221. oParam.async = false;
  222. oParam.callback = "cf_TRMMO33701";
  223. tranf_submit(oParam);
  224. }
  225. /****************************************************************************************
  226. * Function : cf_TRMMO33701
  227. * Description : TRMMO33701 콜백함수
  228. * Argument :
  229. * return type :
  230. * Creator :
  231. ****************************************************************************************/
  232. function cf_TRMMO33701(sSvcId, nErrorCode, sErrorMsg) {
  233. if(nErrorCode < 0) return;
  234. for(var i = 0 ; i < ds_main_oncalllist_info.rowcount ; i++) {
  235. dsf_makeValue(ds_main_oncalllist_info,"cnt3" ,"string",ds_main_oncalllist_info.getColumn(i,"cnt2"));
  236. dsf_makeValue(ds_main_oncalllist_info,"rate3","string",ds_main_oncalllist_info.getColumn(i,"rate2"));
  237. }
  238. }
  239. /****************************************************************************************
  240. * Function : fInitAppOnCall
  241. * Description : 신청화면 초기화
  242. * Argument :
  243. * return type :
  244. * Creator :
  245. ****************************************************************************************/
  246. function fInitAppOnCall(){
  247. //로그인한 사용자 정보
  248. var userid = sysf_getUserInfo("userid");
  249. var dutplcecd = sysf_getUserInfo("dutplcecd");
  250. ds_main_userinfo.setColumn(0,"orddrid" , userid);
  251. ds_main_userinfo.setColumn(0,"orddeptcd", dutplcecd);
  252. ds_main_userinfo.setColumn(0,"orddrnm" , sysf_getUserInfo("usernm"));
  253. ds_main_userinfo.setColumn(0,"orddeptnm", sysf_getUserInfo("dutplcenm"));
  254. ds_main_userinfo.setColumn(0,"mpphonno" , sysf_getUserInfo("mpphonno"));
  255. ds_main_userinfo.setColumn(0,"pdano" , sysf_getUserInfo("pdano"));
  256. //신청자 정보
  257. ds_main_oncallinfo.setColumn(0,"apporddrid" , userid);
  258. ds_main_oncallinfo.setColumn(0,"appdeptcd" , dutplcecd);
  259. ds_main_oncallinfo.setColumn(0,"appmpphonno", ds_main_userinfo.getColumn(0,"mpphonno"));
  260. //상단 환자정보
  261. var pid = appf_getPatientInfo("pid");
  262. if( !utlf_isNull(pid) ){
  263. ds_main_oncallinfo.setColumn(0,"pid" , pid);
  264. ds_main_oncallinfo.setColumn(0,"hngnm" , appf_getPatientInfo("pname"));
  265. //model.setValue("/root/main/oncallinfo/rrgstno", getPatientInfoDetail("rrgstno1") + "-" + getPatientInfoDetail("rrgstno2"));
  266. ds_main_cond.setColumn(0,"condpid" , pid);
  267. }else{
  268. ds_main_cond.setColumn(0,"condpid" , "-");
  269. }
  270. }
  271. /****************************************************************************************
  272. * Function : fGetOnCallList
  273. * Description : 환자별 OnCall 리스트를 조회한다.
  274. * : fromdd:기간 시작일자, todd:기간 종료일자, condstat:환자상태 조건
  275. * Argument :
  276. * return type :
  277. * Creator :
  278. ****************************************************************************************/
  279. function fGetOnCallList(){
  280. var oParam = {};
  281. oParam.id = "TRMMO33201";
  282. oParam.service = "prcpmngtapp.ErMngt";
  283. oParam.method = "reqGetOnCallList";
  284. oParam.inds = "req=ds_main_cond";
  285. oParam.outds = "ds_main_oncalllist_info=info";
  286. oParam.async = false;
  287. oParam.callback = "";
  288. tranf_submit(oParam);
  289. }
  290. /****************************************************************************************
  291. * Function : fGetPatBaseInfo
  292. * Description : 환자기본정보 조회
  293. * Argument : pid : 등록번호
  294. * : stnddd : 기준일자
  295. * return type :
  296. * Creator :
  297. ****************************************************************************************/
  298. function fGetPatBaseInfo(){
  299. var pid = ipt_pid.text;
  300. ds_main_oncallinfo.setColumn(0,"pid", pid);
  301. var oParam = {};
  302. oParam.id = "TRMMO33202";
  303. oParam.service = "prcpmngtapp.ErMngt";
  304. oParam.method = "reqGetPatBaseInfo";
  305. oParam.inds = "req=ds_main_oncallinfo";
  306. oParam.outds = "ds_temp_patinfo=info";
  307. oParam.async = false;
  308. oParam.callback = "cf_TRMMO33202";
  309. tranf_submit(oParam);
  310. if(arErrorCode.pop("TRMMO33202") > -1){
  311. if(!utlf_isNull(pid)){
  312. ds_main_oncallinfo.setColumn(0,"pid" , pid);
  313. ds_main_oncallinfo.setColumn(0,"hngnm" , ds_temp_patinfo.getColumn(0,"hngnm"));
  314. //model.setValue("/root/main/oncallinfo/rrgstno", model.getValue("/root/temp/patinfo/info/rrgstno"));
  315. ds_main_cond.setColumn(0,"condpid" , pid);
  316. fGetOnCallList();
  317. }else{
  318. ds_main_oncallinfo.setColumn(0,"pid" , "");
  319. ds_main_oncallinfo.setColumn(0,"hngnm" , "");
  320. //model.setValue("/root/main/oncallinfo/rrgstno", "");
  321. }
  322. }
  323. }
  324. /****************************************************************************************
  325. * Function : cf_TRMMO33202
  326. * Description : TRMMO33202 콜백함수
  327. * Argument :
  328. * return type :
  329. * Creator :
  330. ****************************************************************************************/
  331. function cf_TRMMO33202(sSvcId, nErrorCode, sErrorMsg) {
  332. arErrorCode.push(sSvcId, nErrorCode);
  333. }
  334. /****************************************************************************************
  335. * Function : fGetOrdDrList
  336. * Description : 진료과 선택 시 해당과 진료의 리스트를 조회한다.
  337. * Argument :
  338. * return type :
  339. * Creator :
  340. ****************************************************************************************/
  341. function fGetOrdDrList(){
  342. // mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist" , cmb_orddept.value, "0330", "", "M");
  343. ds_main_oncallinfo.setColumn(0,"calldeptnm", cmb_orddept.text);
  344. lf_mmbfGetUserComboList(ds_init_userlist, cmb_orddept.value, "0330", "", "M");
  345. }
  346. /****************************************************************************************
  347. * Function : fGetUserCallInfo
  348. * Description : 진료의 선택시 oncall 정보 조회
  349. * Argument :
  350. * return type :
  351. * Creator :
  352. ****************************************************************************************/
  353. function fGetUserCallInfo(){
  354. ds_main_oncallinfo.setColumn(0,"calldrnm", cmb_orddr.text);
  355. var oParam = {};
  356. oParam.id = "TRMMO33203";
  357. oParam.service = "prcpmngtapp.ErMngt";
  358. oParam.method = "reqGetUserMpphonNo";
  359. oParam.inds = "req=ds_main_oncallinfo";
  360. oParam.outds = "ds_temp_callinfo=info";
  361. oParam.async = false;
  362. oParam.callback = "";
  363. tranf_submit(oParam);
  364. }
  365. /****************************************************************************************
  366. * Function : fGetOnCallInfo
  367. * Description : On Call 리스트 중 선택한 정보를 화면에 display한다.
  368. * Argument : flag : 화면구분 flag(A:신청, R:도착, E:종료, P:결재/접수, S:집계)
  369. * return type :
  370. * Creator :
  371. ****************************************************************************************/
  372. function fGetOnCallInfo(flag){
  373. var iRow = ds_main_oncalllist_info.rowposition;
  374. if(iRow < 0 ) return;
  375. ds_main_oncallinfo.copyRow(0,ds_main_oncalllist_info,iRow);
  376. fGetOrdDrList();
  377. // if(flag == "R"){
  378. // }else
  379. if(flag == "R"){
  380. var curDD = utlf_getCurrentDate();
  381. var curTM = utlf_getCurrentTime();
  382. if( ds_main_oncallinfo.getColumn(0,"arvdd") == "00000000" ){
  383. ds_main_oncallinfo.setColumn(0,"arvdd", curDD);
  384. }
  385. if( ds_main_oncallinfo.getColumn(0,"arvtm") == "000000" || ds_main_oncallinfo.getColumn(0,"arvtm") == "0000" ){
  386. ds_main_oncallinfo.setColumn(0,"arvtm", curTM);
  387. }
  388. }else if(flag == "E"){
  389. var curDD = utlf_getCurrentDate();
  390. var curTM = utlf_getCurrentTime();
  391. if( ds_main_oncallinfo.getColumn(0,"enddd") == "00000000" ){
  392. ds_main_oncallinfo.setColumn(0,"enddd", curDD);
  393. }
  394. if( ds_main_oncallinfo.getColumn(0,"endtm") == "000000" || ds_main_oncallinfo.getColumn(0,"endtm") == "0000" ){
  395. ds_main_oncallinfo.setColumn(0,"endtm", curTM);
  396. }
  397. }
  398. if( ds_main_oncallinfo.getColumn(0,"arvdd") == "00000000" ){
  399. ds_main_oncallinfo.setColumn(0,"arvdd", "");
  400. }
  401. //20171031 이돈희 추가 : 작성여부 값을 체크리스트에 반영
  402. //기본으로 체크 해제
  403. cp_checkboxList_checklist.setCheckAll(false,false);
  404. if(!utlf_isNull(ds_main_oncallinfo.getColumn(0, "checkyn")))
  405. {
  406. cp_checkboxList_checklist.setData(ds_main_oncallinfo.getColumn(0, "checkyn").split(" "), "",false);
  407. if(ds_main_oncallinfo.getColumn(0, "checkyn").indexOf("5") != -1)
  408. {
  409. Edit_checklistETC.enable = true;
  410. }
  411. }
  412. }
  413. /****************************************************************************************
  414. * Function : fSaveOnCallInfo
  415. * Description : On Call 정보를 저장한다.
  416. * Argument : flag : 화면구분 flag(A:신청, R:도착, E:종료, P:결재/접수, S:집계)
  417. * return type :
  418. * Creator :
  419. ****************************************************************************************/
  420. function fSaveOnCallInfo(flag){
  421. if( flag == "P" ){
  422. // copyNodeType("/root/send/savedata", "/root/main/oncalllist", "replace");
  423. ds_send_savedata.copyData(ds_main_oncalllist_info);
  424. }else{
  425. var appSeq = ds_main_oncallinfo.getColumn(0,"appseq");
  426. var statCd = ds_main_oncallinfo.getColumn(0,"statcd");
  427. var acptYn = ds_main_oncallinfo.getColumn(0,"acptyn");
  428. if(acptYn == "Y"){
  429. sysf_messageBox("결재가 완료되어 수정할 수 없습니다","I");
  430. return;
  431. }
  432. if( flag == "A" ){ //필수값 체크 (신청 화면)
  433. if ( ! frmf_chkMdt(["ipt_pid", "ipt_hngnm", "ipt_appmpphonno", "rdo_patflagcd", "cmb_orddept", "cmb_orddr"]
  434. ,["환자번호","성명","신청 전화번호","환자구분","진료과","진료의사"]) ) return false;
  435. ds_main_oncallinfo.setColumn(0,"statcd" , "A");
  436. if( utlf_isNull(appSeq) ){
  437. ds_main_oncallinfo.setColumn(0,"saveflag", "I");
  438. }else{
  439. ds_main_oncallinfo.setColumn(0,"saveflag", "U");
  440. }
  441. //alert(ds_main_oncallinfo.getColumn(0,"saveflag"));
  442. } else if( flag == "R" ){ //필수값 체크 (도착 화면)
  443. if(utlf_isNull(ds_main_oncallinfo.getColumn(0,"appseq"))){
  444. sysf_messageBox("신청내역을 선택하십시오.","I");
  445. return;
  446. }
  447. if ( ! frmf_chkMdt(["ipt_arvdd", "ipt_arvtm"]
  448. ,["도착일자","도착시간"]) ) return false;
  449. // 허만호, 2015.07.28 소스현행화 s
  450. var sCurrentDate = utlf_getCurrentDate();
  451. var appdt = ds_main_oncallinfo.getColumn(0, "appdt");
  452. // 허만호, 2015.07.28 소스현행화 e
  453. var arvdd = ds_main_oncallinfo.getColumn(0,"arvdd");
  454. var arvtm = ds_main_oncallinfo.getColumn(0,"arvtm");
  455. if(arvdd == "00000000" || utlf_isNull(arvdd)){
  456. sysf_messageBox("도착일자를 정확히 입력하십시오.","I");
  457. return;
  458. }
  459. if( arvtm.getByteLength() < 4 ){
  460. sysf_messageBox("도착시간을 4자리 이상 입력하십시오.","I");
  461. return;
  462. }else{
  463. arvtm = arvtm.getRightPad(6, "0");
  464. }
  465. if(!utlf_isValidDateTime(arvdd+arvtm, "YYYYMMDDhhmmss")) {
  466. sysf_messageBox("도착일시가 날짜형식이 아닙니다.","I");
  467. return;
  468. }
  469. if( utlf_isNull(statCd) || statCd == "E" ){
  470. sysf_messageBox("수정할 수 없는 상태입니다.","I");
  471. return;
  472. }
  473. // 허만호, 2015.07.28 소스현행화 s
  474. if(appdt.substr(0,6) != sCurrentDate.substr(0,6)) { // 이전달 신청내용은 이번달 5일까지만 수정 가능 하도록 요청번호 20150707019 2015.07.20 엄영만
  475. if(sCurrentDate.substr(0,6) + "05" < sCurrentDate) {
  476. sysf_messageBox("이전달 신청항목은 이번달 5일이후 수정이 불가능 합니다","E");
  477. return;
  478. }
  479. }
  480. // 허만호, 2015.07.28 소스현행화 e
  481. //도착시간에 대한 수정하는 경우, 권한과 시간 체크
  482. if( ds_main_oncallinfo.getColumn(0,"endrgstdt") != "00000000000000" && sysf_getUserInfo("dutplcecd") != "3310000000" && sysf_getUserInfo("userid") != ds_main_oncallinfo.getColumn(0,"calldrid")){ //진료행정팀이나 진료의가 아닌 경우
  483. sysf_messageBox("해당 진료의가 아니면 수정 불가능합니다.","I");
  484. return;
  485. }
  486. ds_main_oncallinfo.setColumn(0,"arvdt" , arvdd + arvtm);
  487. ds_main_oncallinfo.setColumn(0,"saveflag", "U");
  488. ds_main_oncallinfo.setColumn(0,"statcd" , "R");
  489. } else if( flag == "E" ){ //필수값 체크 (종료 화면)
  490. if(utlf_isNull(ds_main_oncallinfo.getColumn(0,"appseq"))){
  491. sysf_messageBox("신청내역을 선택하십시오.","I");
  492. return;
  493. }
  494. if ( ! frmf_chkMdt(["ipt_arvdd", "ipt_arvtm", "ipt_enddd", "ipt_endtm"]
  495. ,["도착일자","도착시간","완료일자","완료시간"])) return false;
  496. // 허만호, 2015.07.28 소스현행화 s
  497. var sCurrentDate = utlf_getCurrentDate();
  498. var appdt = ds_main_oncallinfo.getColumn(0, "appdt");
  499. // 허만호, 2015.07.28 소스현행화 e
  500. var arvdd = ds_main_oncallinfo.getColumn(0,"arvdd");
  501. var arvtm = ds_main_oncallinfo.getColumn(0,"arvtm");
  502. var enddd = ds_main_oncallinfo.getColumn(0,"enddd");
  503. var endtm = ds_main_oncallinfo.getColumn(0,"endtm");
  504. var checkyn = ds_main_oncallinfo.getColumn(0, "checkyn");
  505. var checkynetc = ds_main_oncallinfo.getColumn(0, "checkynetc");
  506. if( arvdd.getByteLength() < 6){
  507. sysf_messageBox("도착시간을 6자리 이상 입력하십시오.","I");
  508. return;
  509. }
  510. if( arvtm.getByteLength() < 4 ){
  511. sysf_messageBox("도착시간을 4자리 이상 입력하십시오.","I");
  512. return;
  513. }else{
  514. arvtm = arvtm.getRightPad(6, "0");
  515. }
  516. if(enddd == "00000000"){
  517. sysf_messageBox("완료일자를 정확히 입력하십시오.","I");
  518. return;
  519. }
  520. if( endtm.getByteLength() < 4 ){
  521. sysf_messageBox("완료시간을 4자리 이상 입력하십시오.","I");
  522. return;
  523. }else{
  524. endtm = endtm.getRightPad(6, "0");
  525. }
  526. if(!utlf_isValidDateTime(arvdd+arvtm, "YYYYMMDDhhmmss")) {
  527. sysf_messageBox("도착일시가 날짜형식이 아닙니다.","I");
  528. return;
  529. }
  530. if(!utlf_isValidDateTime(enddd+endtm, "YYYYMMDDhhmmss")) {
  531. sysf_messageBox("완료일시가 날짜형식이 아닙니다.","I");
  532. return;
  533. }
  534. if( utlf_isNull(statCd) || statCd == "A" ){
  535. sysf_messageBox("완료할 수 없는 상태입니다.","I");
  536. return;
  537. }
  538. //201711001 이돈희 추가 : 이순희선생님 요청으로 칠곡인 경우 비활성화
  539. var instcd = sysf_getUserInfo("dutplceinstcd");
  540. if(instcd == "031")
  541. {
  542. //20171030 이돈희 추가 : 완료시간이 도착시간보다 이전일인 경우 저장 안됨(요청번호 : 20171016008)
  543. if((arvdd+arvtm)>(enddd+endtm))
  544. {
  545. sysf_messageBox("완료시간은 도착시간보다 미래시간을 입력하십시오.", "I");
  546. return;
  547. }
  548. //20171031 이돈희 추가
  549. //이순희 선생님 요청사항 : 작성여부의 수술기록(1), 시술기록(2), 경과기록(3), 마취기록(4), 기타(5) 중
  550. // 체크된것이 있는 경우 저장 가능
  551. if(utlf_isNull(checkyn))
  552. {
  553. sysf_messageBox("작성여부를 체크하여 주십시오.", "I");
  554. return;
  555. }
  556. //20171101 이돈희 추가
  557. //이순희 선생님 요청사항 : 작성여부의 기타(5)가 체크된 경우 기타 에디트가 작성안된 경우 저장 안되도록 수정
  558. if(checkyn.indexOf("5") != -1)
  559. {
  560. if(utlf_isNull(checkynetc))
  561. {
  562. sysf_messageBox("작성여부의 기타란을 작성하여 주십시오.", "I");
  563. return;
  564. }
  565. }
  566. }
  567. // 허만호, 2015.07.28 소스현행화 s
  568. if(appdt.substr(0,6) != sCurrentDate.substr(0,6)) { // 이전달 신청내용은 이번달 5일까지만 수정 가능 하도록 요청번호 20150707019 2015.07.20 엄영만
  569. if(sCurrentDate.substr(0,6) + "05" < sCurrentDate) {
  570. sysf_messageBox("이전달 신청항목은 이번달 5일이후 수정이 불가능 합니다","E");
  571. return;
  572. }
  573. }
  574. // 허만호, 2015.07.28 소스현행화 e
  575. //완료시간에 대한 수정하는 경우, 권한과 시간 체크
  576. if( ds_main_oncallinfo.getColumn(0,"endrgstdt") != "00000000000000" && sysf_getUserInfo("dutplcecd") != "3310000000" && sysf_getUserInfo("userid") != ds_main_oncallinfo.getColumn(0,"calldrid")){ //진료행정팀이나 진료의가 아닌 경우
  577. sysf_messageBox("해당 진료의가 아니면 수정 불가능합니다.","I");
  578. return;
  579. }
  580. ds_main_oncallinfo.setColumn(0,"arvdt" , arvdd + arvtm);
  581. ds_main_oncallinfo.setColumn(0,"enddt" , enddd + endtm);
  582. ds_main_oncallinfo.setColumn(0,"saveflag", "U");
  583. ds_main_oncallinfo.setColumn(0,"statcd" , "E");
  584. } else if ( flag == "X" ){ // 삭제처리
  585. if(utlf_isNull(ds_main_oncallinfo.getColumn(0,"appseq"))){
  586. sysf_messageBox("삭제 항목을 선택하십시오.","I");
  587. return;
  588. }
  589. if( utlf_isNull(statCd) || statCd == "A" ){
  590. sysf_messageBox("삭제할 수 없는 상태입니다.","I");
  591. return;
  592. }
  593. //완료시간에 대한 수정하는 경우, 권한과 시간 체크
  594. if( sysf_getUserInfo("dutplcecd") != "3310000000" && sysf_getUserInfo("userid") != ds_main_oncallinfo.getColumn(0,"calldrid")){ //진료행정팀이나 진료의가 아닌 경우
  595. sysf_messageBox("해당 진료의가 아니면 삭제 불가능합니다.","I");
  596. return;
  597. }
  598. if ( sysf_messageBox ( "삭제 하시겠습니까?","Q") != "6" ) {
  599. return;
  600. }
  601. ds_main_oncallinfo.setColumn(0,"arvdt" , "");
  602. ds_main_oncallinfo.setColumn(0,"enddt" , "");
  603. ds_main_oncallinfo.setColumn(0,"saveflag", "D");
  604. ds_main_oncallinfo.setColumn(0,"statcd" , "X");
  605. }
  606. // model.copyNode("/root/send/savedata", "/root/main/oncallinfo");
  607. ds_send_savedata.copyData(ds_main_oncallinfo);
  608. } //end else
  609. // model.removeNode("/root/send/reqdata");
  610. // model.makeNode("/root/send/reqdata");
  611. // model.copyNode("/root/send/reqdata", "/root/main/cond");
  612. ds_send_reqdata.clear();
  613. ds_send_reqdata.copyData(ds_main_cond);
  614. //저장
  615. var oParam = {};
  616. oParam.id = "TXMMO33201";
  617. oParam.service = "prcpmngtapp.ErMngt";
  618. oParam.method = "reqExeOnCallInfo";
  619. oParam.inds = "req=ds_send_reqdata oncallinfo=ds_send_savedata";
  620. oParam.outds = "ds_main_oncalllist_info=info";
  621. oParam.async = false;
  622. oParam.callback = "cf_TXMMO33201";
  623. tranf_submit(oParam);
  624. if(arErrorCode.pop("TXMMO33201") > -1){
  625. //신청 후에 메세지 보여줌
  626. if( flag == "A" ){
  627. if (ds_main_oncallinfo.getColumn(0, "sendsmsyn") == "Y") {
  628. mpphonno = ds_temp_callinfo.getColumn(0,"mpphonno");
  629. sysf_messageBox( mpphonno + " 번호로 SMS 전송되었습니다." ,"I");
  630. } else {
  631. sysf_messageBox("저장 되었습니다." ,"I");
  632. }
  633. } else if( flag == "X" ){
  634. ds_main_oncallinfo.clearData();
  635. }
  636. }else{
  637. ds_main_oncallinfo.setColumn(0,"saveflag","I");
  638. }
  639. }
  640. /****************************************************************************************
  641. * Function : cf_TXMMO33201
  642. * Description : TXMMO33201 콜백함수
  643. * Argument :
  644. * return type :
  645. * Creator :
  646. ****************************************************************************************/
  647. function cf_TXMMO33201(sSvcId, nErrorCode, sErrorMsg) {
  648. arErrorCode.push(sSvcId, nErrorCode);
  649. }
  650. /****************************************************************************************
  651. * Function : fGetOrdDrList1
  652. * Description : 진료과별 진료의 조회
  653. * Argument : retValue : 과코드
  654. * return type :
  655. * Creator :
  656. ****************************************************************************************/
  657. function fGetOrdDrList1(retValue){
  658. lf_mmbfGetUserComboList(ds_init_userlist, retValue, "0330", "", "M", "", "", "", "", "");
  659. }
  660. /****************************************************************************************
  661. * Function : fSaveSumOnCall
  662. * Description : 월별 On Call 수당을 집계한다.
  663. * Argument :
  664. * return type :
  665. * Creator : 이아영
  666. ****************************************************************************************/
  667. function fSaveSumOnCall()
  668. {
  669. var oParam = {};
  670. oParam.id = "TRMMO33601";
  671. oParam.service = "prcpmngtapp.ErMngt";
  672. oParam.method = "reqExeSumOnCallList";
  673. oParam.inds = "req=ds_main_cond";
  674. oParam.outds = "ds_main_oncalllist_month=month ds_main_oncalllist_info=info";
  675. oParam.async = false;
  676. oParam.callback = "cf_TRMMO33601";
  677. tranf_submit(oParam);
  678. if(arErrorCode.pop("TRMMO33601") > -1)
  679. {
  680. alert("집계가 완료되었습니다.");
  681. }
  682. }
  683. /****************************************************************************************
  684. * Function : cf_TRMMO33601
  685. * Description : TRMMO33601 콜백함수
  686. * Argument :
  687. * return type :
  688. * Creator : 이아영
  689. ****************************************************************************************/
  690. function cf_TRMMO33601(sSvcId, nErrorCode, sErrorMsg) {
  691. arErrorCode.push(sSvcId, nErrorCode);
  692. }]]></Script>