SMMMO19000.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. /*function list
  2. * fInitialize_SMMMO19000 : 최초 화면초기화 함수
  3. * fInitialize_SMMMO19000_L : 좌측 처방리스트 초기화 함수
  4. * fInitialize_SMMMO19000_R : 우측 처방별 정보 초기화 함수
  5. * fRightDisabled : PK값이 들어가있는 오브젝트 활성여부 체크 함수
  6. * fPrcpSearch : 처방검색화면(SPMMB21700.xrw) 제어를 위한 함수
  7. * fPrinfoEmptyCheck : 처방별 정보중 비어있는 내용 체크 함수
  8. * fSavePrcpinfo : 처방별 메세지 정보 저장 함수
  9. * fGetPrcpinfoDetail : 처방별 메세지 정보를 호출하는 함수
  10. * fGetPrcpinfolist : 처방리스트를 호출하는 함수
  11. * fGridInputData : 처방별 예외정보 추가를 위한 함수
  12. * fExceptionDuplicateeCheck : 처방별 예외정보 추가시 중복검사 함수
  13. * fGridDeptInputData : 예외 부서 그리드에 입력하는 함수
  14. * fGridUserInputData : 예외 사용자 그리드에 입력하는 함수
  15. * fGridPatInputData : 예외 환자 그리드에 입력하는 함수
  16. */
  17. var sWarnCls = ""; // 주의요망분류(C:처방코드, P:환자번호)
  18. function fInitialize_SMMMO19000(){
  19. sWarnCls = model.getValue("/root/send/searchinfo/warncls"); // 주의요망분류(C:처방코드, P:환자번호)
  20. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept", "A"); //진료과 콤보
  21. submit("TRMMO19002"); // 관리부서 /root/init/authdept 설정
  22. model.setValue("/root/send/searchinfo/authdeptcd", getUserInfo("dutplcecd"));
  23. fInitialize_SMMMO19000_L();
  24. fInitialize_SMMMO19000_R();
  25. fGetPrcpinfolist();
  26. fRightDisabled(true);
  27. var sWarnCd = "";
  28. var sWarnNm = "";
  29. if(sWarnCls == "P") { // 대상자 리스트에서 화면 팝업시
  30. sWarnCd = opener.javascript.getParameter("SMMMO19100_warncd");
  31. sWarnNm = opener.javascript.getParameter("SMMMO19100_warnnm");
  32. if(!isNull(sWarnCd) && !isNull(sWarnNm)) {
  33. model.setValue("/root/main/applyinfo/prcpinfo/warncd", sWarnCd);
  34. model.setValue("/root/main/applyinfo/prcpinfo/warnnm", sWarnNm);
  35. fRightDisabled(false);
  36. model.refresh();
  37. }
  38. }
  39. }
  40. function fInitialize_SMMMO19000_L(){
  41. fRightDisabled(true);
  42. model.removeNodeset("/root/main/prcpinfo/prcplist");
  43. model.setValue("/root/send/searchinfo/fromdd", getCurrentDate());
  44. model.setValue("/root/send/searchinfo/warncd", "");
  45. model.setValue("/root/send/searchinfo/warnnm", "");
  46. model.setValue("/root/send/searchinfo/useynflag","");
  47. model.refresh();
  48. }
  49. function fInitialize_SMMMO19000_R(){
  50. fRightDisabled(true);
  51. btn_save.disabled = false;
  52. model.setValue("/root/main/applyinfo/prcpinfo/warndd", getCurrentDate());
  53. model.setValue("/root/main/applyinfo/prcpinfo/warnno", "0");
  54. model.setValue("/root/main/applyinfo/prcpinfo/fromdd", getCurrentDate());
  55. model.setValue("/root/main/applyinfo/prcpinfo/todd", "99991231");
  56. model.setValue("/root/main/applyinfo/prcpinfo/useyn", "Y");
  57. model.setValue("/root/main/applyinfo/prcpinfo/warncls", sWarnCls); // 주의요망분류(C:처방코드, P:환자번호)
  58. model.setValue("/root/main/applyinfo/prcpinfo/warncd", "");
  59. model.setValue("/root/main/applyinfo/prcpinfo/warnnm", "");
  60. model.setValue("/root/main/applyinfo/prcpinfo/errmsg", "");
  61. model.setValue("/root/main/applyinfo/prcpinfo/rmk", "");
  62. model.setValue("/root/main/applyinfo/prcpinfo/authdeptcd", "");
  63. model.setValue("/root/main/applyinfo/prcpinfo/authdeptnm", "");
  64. model.setValue("/root/main/applyinfo/prcpinfo/telno", "");
  65. model.setValue("/root/main/applyinfo/prcpinfo/appcls", "I"); // 디폴트 제외(I)로 설정 처리구분(E:오류 I:정보)
  66. model.setValue("/root/main/applyinfo/prcpinfo/apptype", "E"); // 디폴트 제외(E)로 설정 적용구분(E:제외 I:적용)
  67. model.setValue("/root/main/applyinfo/prcpinfo/appioflag", "A"); // 디폴트 전체(A)로 설정 적용 외래/입원 구분 A:전체, O:외래, I:입원(병동/응급/DSC)
  68. model.setValue("/root/main/applyinfo/prcpinfo/apppayflag", "A"); // 디폴트 전체(A)로 설정 적용 급비구분 A:전체, B:급여처방만
  69. model.setValue("/root/main/applyinfo/prcpinfo/appterm", "0"); // 적용기간 WARNTYPE이 관련처방 체크일경우 체크 일수
  70. if(sWarnCls == "C") {
  71. model.setValue("/root/main/applyinfo/prcpinfo/warntype","B"); // 주의요망타입(A:환자선택, B:처방입력, C:관련처방체크)
  72. } else {
  73. model.setValue("/root/main/applyinfo/prcpinfo/warntype","A"); // 주의요망타입(A:환자선택, B:처방입력, C:관련처방체크)
  74. }
  75. model.removeNodeset("/root/main/applyinfo/excodeinfo/codelist");
  76. model.removeNodeset("/root/main/applyinfo/exdeptinfo/deptlist");
  77. model.removeNodeset("/root/main/applyinfo/exuserinfo/userlist");
  78. if(sWarnCls == "C") {
  79. model.removeNodeset("/root/main/applyinfo/expatinfo/patlist");
  80. }
  81. ipt_warnnm.hint = "";
  82. ipt_warncd.hint = "";
  83. model.refresh();
  84. }
  85. function fRightDisabled(flag){
  86. if(flag){
  87. btn_search_R.disabled = true;
  88. }else{
  89. btn_search_R.disabled = false;
  90. }
  91. }
  92. function fPrcpSearch(sFlag){
  93. var recive_prcpnm = "";
  94. var recive_prcpdd = "";
  95. var recive_srchflag = "";
  96. var choose_prcpnm = "";
  97. var choose_prcpcd = "";
  98. if(sFlag == "L"){
  99. choose_prcpcd = model.getValue("/root/send/searchinfo/warncd");
  100. choose_prcpnm = model.getValue("/root/send/searchinfo/warnnm");
  101. recive_prcpdd = model.getValue("/root/send/searchinfo/fromdd");
  102. }else if(sFlag == "R"){
  103. choose_prcpcd = model.getValue("/root/main/applyinfo/prcpinfo/warncd");
  104. choose_prcpnm = model.getValue("/root/main/applyinfo/prcpinfo/warnnm");
  105. recive_prcpdd = model.getValue("/root/main/applyinfo/prcpinfo/fromdd");
  106. }else {
  107. choose_prcpcd = "";
  108. choose_prcpnm = "";
  109. recive_prcpdd = getCurrentDate();
  110. }
  111. if(choose_prcpcd != ""){
  112. recive_prcpnm = choose_prcpcd;
  113. recive_srchflag = "prcpcd";
  114. }else{
  115. recive_prcpnm = choose_prcpnm;
  116. recive_srchflag = "prcpnm";
  117. }
  118. setParameter("SPMMB21700_recive_prcpnm", recive_prcpnm);
  119. setParameter("SPMMB21700_recive_prcpdd", recive_prcpdd);
  120. setParameter("SPMMB21700_recive_srchflag",recive_srchflag);
  121. modal("SPMMB21700");
  122. var prcpcd = getParameter("SPMMB21700_prcpcd");
  123. var prcpnm = getParameter("SPMMB21700_prcpnm");
  124. if(sFlag == "L"){
  125. model.setValue("/root/send/searchinfo/warncd", prcpcd);
  126. model.setValue("/root/send/searchinfo/warnnm", prcpnm);
  127. fGetPrcpinfolist();
  128. }else if(sFlag == "R"){
  129. model.setValue("/root/main/applyinfo/prcpinfo/warncd", prcpcd);
  130. model.setValue("/root/main/applyinfo/prcpinfo/warnnm", prcpnm);
  131. ipt_warnnm.hint = prcpnm;
  132. ipt_warncd.hint = prcpcd;
  133. }else {
  134. model.setValue("/root/main/codeinfo/codeinfolist/prcpcd", prcpcd);
  135. model.setValue("/root/main/codeinfo/codeinfolist/prcpnm", prcpnm);
  136. }
  137. setParameter("SPMMB21700_prcpcd","");
  138. setParameter("SPMMB21700_prcpnm","");
  139. model.refresh();
  140. }
  141. function fPatSearch(sFlag){
  142. modal("SPPMC02500");
  143. var sPid = model.getValue("/root/main/patinfo/patinfolist/pid");
  144. var sHngNm = model.getValue("/root/main/patinfo/patinfolist/hngnm");
  145. if(sFlag == "L") {
  146. model.setValue("/root/send/searchinfo/warncd", sPid);
  147. model.setValue("/root/send/searchinfo/warnnm", sHngNm);
  148. fGetPrcpinfolist();
  149. } else if(sFlag == "R") {
  150. model.setValue("/root/main/applyinfo/prcpinfo/warncd", sPid);
  151. model.setValue("/root/main/applyinfo/prcpinfo/warnnm", sHngNm);
  152. ipt_warnnm.hint = sPid;
  153. ipt_warncd.hint = sHngNm;
  154. }
  155. model.refresh();
  156. }
  157. function fPrinfoEmptyCheck(){
  158. if(model.getValue("/root/main/applyinfo/prcpinfo/authdeptcd") == ""){
  159. model.setValue("/root/main/applyinfo/prcpinfo/authdeptcd",getUserInfo("dutplcecd"));
  160. }
  161. if(model.getValue("/root/main/applyinfo/prcpinfo/warncd") == ""){
  162. if(sWarnCls == "C") {
  163. messageBox("처방코드을","C001");
  164. } else {
  165. messageBox("환자번호을","C001");
  166. }
  167. return false;
  168. }
  169. if(model.getValue("/root/main/applyinfo/prcpinfo/telno") == ""){
  170. messageBox("문의전화을","C001");
  171. return false;
  172. }
  173. if(model.getValue("/root/main/applyinfo/prcpinfo/errmsg") == ""){
  174. messageBox("메세지내용을","C001");
  175. return false;
  176. }
  177. return true;
  178. }
  179. function fSavePrcpinfo(){
  180. if(!fPrinfoEmptyCheck()) {
  181. return;
  182. }
  183. model.removeNodeset("/root/send/reqdata/");
  184. model.copyNode("/root/send/reqdata","/root/main/applyinfo/prcpinfo");
  185. model.makeValue("/root/send/reqdata/excodeinfo", grd_notapply_code.getUpdateData());
  186. model.makeValue("/root/send/reqdata/exdeptinfo", grd_notapply_dept.getUpdateData());
  187. model.makeValue("/root/send/reqdata/exuserinfo", grd_notapply_user.getUpdateData());
  188. if(sWarnCls == "C") {
  189. model.makeValue("/root/send/reqdata/expatinfo", grd_notapply_pat.getUpdateData());
  190. }
  191. model.refresh();
  192. if(submit("TXMMO19000")){
  193. fInitialize_SMMMO19000_R();
  194. fGetPrcpinfolist();
  195. messageBox("저장 되었습니다.","I999");
  196. } else {
  197. messageBox("저장에","I009");
  198. }
  199. }
  200. function fGetPrcpinfoDetail(){
  201. var currow = grd_prcpcdlist.row;
  202. model.removeNodeset("/root/send/reqdata/");
  203. model.copyNode("/root/send/reqdata", "/root/main/prcpinfo/prcplist["+currow+"]");
  204. if(submit("TRMMO19001")){
  205. ipt_warnnm.hint = model.getValue("/root/main/applyinfo/prcpinfo/warnnm");
  206. ipt_warncd.hint = model.getValue("/root/main/applyinfo/prcpinfo/warncd");
  207. var sAuthDeptCd = model.getValue("/root/main/applyinfo/prcpinfo/authdeptcd");
  208. if(getUserInfo("dutplcecd") != sAuthDeptCd && getUserInfo("userid") != "EMR"){
  209. btn_save.disabled = true;
  210. }else{
  211. btn_save.disabled = false;
  212. }
  213. fRightDisabled(true);
  214. }
  215. }
  216. function fGetPrcpinfolist(){
  217. if(submit("TRMMO19000")){
  218. model.setValue("/root/main/objectinfo/user/orddrid","");
  219. model.setValue("/root/main/objectinfo/user/orddept","");
  220. model.setValue("/root/main/objectinfo/dept/orddept","");
  221. }
  222. }
  223. /*
  224. * param = D -> 부서 U -> 사용자 P -> 환자 C -> 관련코드
  225. */
  226. function fGridAdd(datagrid, sFlag){
  227. var sExId = "";
  228. var sExIdNm = "";
  229. var sNodeSet = "";
  230. if(sFlag == "D"){
  231. sExId = model.getValue("/root/main/objectinfo/dept/orddept");
  232. sExIdNm = model.getValue("/root/init/orddept/dept[deptcd = '"+sExId+"']/depthngnm");
  233. sNodeSet = "/root/main/applyinfo/exdeptinfo/deptlist";
  234. } else if(sFlag == "U"){
  235. sExId = model.getValue("/root/main/objectinfo/user/orddrid");
  236. sExIdNm = model.getValue("/root/init/userlist/usercombo[userid = '"+sExId+"']/usernm");
  237. sNodeSet = "/root/main/applyinfo/exuserinfo/userlist";
  238. } else if(sFlag == "P"){
  239. modal("SPPMC02500");
  240. sExId = model.getValue("/root/main/patinfo/patinfolist/pid");
  241. sExIdNm = model.getValue("/root/main/patinfo/patinfolist/hngnm");
  242. sNodeSet = "/root/main/applyinfo/expatinfo/patlist";
  243. } else if (sFlag == "C") {
  244. fPrcpSearch("C");
  245. sExId = model.getValue("/root/main/codeinfo/codeinfolist/prcpcd");
  246. sExIdNm = model.getValue("/root/main/codeinfo/codeinfolist/prcpnm");
  247. sNodeSet = "/root/main/applyinfo/excodeinfo/codelist";
  248. }else{
  249. return;
  250. }
  251. if(sExId != ""){
  252. if(fCheckDup(sExId, sNodeSet)){
  253. if(sFlag == "D"){
  254. msg = "해당 부서는";
  255. }else if(sFlag == "U"){
  256. msg = "해당 사용자는";
  257. }else if(sFlag == "P"){
  258. msg = "해당 환자는";
  259. }else{}
  260. messageBox(msg,"E006");
  261. return;
  262. }
  263. datagrid.addRow(true, true);
  264. var nRow = datagrid.rows;
  265. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/warndd", model.getValue("/root/main/applyinfo/prcpinfo/warndd"));
  266. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/warnno", model.getValue("/root/main/applyinfo/prcpinfo/warnno"));
  267. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/exno", "0");
  268. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/extype", sFlag);
  269. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/exid", sExId);
  270. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/exidnm", sExIdNm);
  271. model.setValue("/root/main/objectinfo/dept/orddept","");
  272. model.setValue("/root/main/objectinfo/user/orddrid","");
  273. model.refresh();
  274. }else{
  275. messageBox("추가 할 항목을 아래에서 선택 하세요.", "I999");
  276. return;
  277. }
  278. }
  279. function fGridDel(datagrid){
  280. var sNodeSet = "";
  281. var nRow = datagrid.row;
  282. var nStatus = null;
  283. if( nRow <= 0 ){
  284. alert("삭제할 항목을 선택해주십시오.");
  285. return;
  286. }
  287. nStatus = datagrid.rowstatus(nRow);
  288. if(nStatus == 0) { // 기존데이터
  289. datagrid.rowstatus(nRow) = 4;
  290. } else if (nStatus == 1) { // 신규데이터
  291. datagrid.deleteRow(nRow);
  292. } else if (nStatus == 4) { // 삭제데이터
  293. datagrid.rowstatus(nRow) = 0;
  294. }
  295. model.refresh();
  296. }
  297. function fCheckDup(sValue, sNodeSet){
  298. var nCnt = getNodesetCount(sNodeSet);
  299. var bExist = false;
  300. for(i=1; i<= nCnt; i++){
  301. if(sValue == model.getValue(sNodeSet+"["+i+"]/exid")){
  302. bExist = true;
  303. }
  304. }
  305. return bExist;
  306. }
  307. function fCompareDate(){
  308. var fromdd = model.getValue("/root/main/applyinfo/prcpinfo/fromdd");
  309. var todd = model.getValue("/root/main/applyinfo/prcpinfo/todd");
  310. if(fromdd != "" && todd != ""){
  311. if(todd < fromdd){
  312. messageBox("시작일자가 종료일자보다 빠를 수","I004");
  313. return;
  314. }
  315. }
  316. }
  317. function fCopyExPrcpList() {
  318. fWarnExCopy("C");
  319. }
  320. function fCopyExDeptList() {
  321. fWarnExCopy("D");
  322. }
  323. function fCopyExDridList() {
  324. fWarnExCopy("U");
  325. }
  326. function fCopyExPatList() {
  327. fWarnExCopy("P");
  328. }
  329. function fWarnExCopy(sFlag) {
  330. var datagrid = null;
  331. var sNodeSet = "";
  332. var sExId = "";
  333. var sExIdNm = "";
  334. var currow = grd_prcpcdlist.row;
  335. model.removeNodeset("/root/send/reqdata/");
  336. model.copyNode("/root/send/reqdata", "/root/main/prcpinfo/prcplist["+currow+"]");
  337. model.makeValue("/root/send/reqdata/extype", sFlag);
  338. if(submit("TRMMO19003")){
  339. if (sFlag == "C") {
  340. datagrid = grd_notapply_code;
  341. sNodeSet = "/root/main/applyinfo/excodeinfo/codelist";
  342. } else if(sFlag == "D"){
  343. datagrid = grd_notapply_dept;
  344. sNodeSet = "/root/main/applyinfo/exdeptinfo/deptlist";
  345. } else if(sFlag == "U"){
  346. datagrid = grd_notapply_user;
  347. sNodeSet = "/root/main/applyinfo/exuserinfo/userlist";
  348. } else if(sFlag == "P"){
  349. datagrid = grd_notapply_pat;
  350. sNodeSet = "/root/main/applyinfo/expatinfo/patlist";
  351. } else {
  352. return;
  353. }
  354. var copyNodes = instance1.selectNodes("/root/hidden/copylist");
  355. for ( var i=1; i<=copyNodes.length ; i++){
  356. sExId = model.getValue("/root/hidden/copylist[" + i + "]/exid");
  357. sExIdNm = model.getValue("/root/hidden/copylist[" + i + "]/exidnm");
  358. if(sExId != ""){
  359. if(fCheckDup(sExId, sNodeSet)){
  360. messageBox(sExIdNm + "은 중복으로 추가하지 않습니다." ,"I999");
  361. continue;
  362. }
  363. }
  364. datagrid.addRow(true, true);
  365. var nRow = datagrid.rows;
  366. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/warndd", model.getValue("/root/main/applyinfo/prcpinfo/warndd"));
  367. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/warnno", model.getValue("/root/main/applyinfo/prcpinfo/warnno"));
  368. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/exno", "0");
  369. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/extype", sFlag);
  370. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/exid", sExId);
  371. model.setValue(sNodeSet + "["+eval(nRow-1)+"]/exidnm", sExIdNm);
  372. }
  373. model.refresh();
  374. }
  375. }