SMMNI02100.xjs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++*
  3. * ver : 20090702
  4. * create : dhkim
  5. * desc : 암센터주사실 / BMT주사실 / DCC / DSC 에서 공동으로 사용할 스크립트들 모음
  6. * injspecialroomweb에서 사용
  7. *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++*/
  8. //글로벌변수
  9. var _pid, _indd, _cretno, _ordtype, _mediapclid, _roomcd, _sexage, _hngnm;
  10. // ------------------------------------------------------------------
  11. // 외래예약처방 선택 및 저장 화면 호출_20090701추가(dhkim)
  12. // ------------------------------------------------------------------
  13. function fGetRsrvPrcpChemo(pid, indd, cretno, ordtype, medispclid, roomcd, sexage, hngnm){
  14. ds_main_rp_init_M0005info_M0005.clearData();
  15. appf_getCodeList(new Array( "M0005" ), new Array("ds_main_rp_init_M0005info_M0005"));
  16. grd_prcplist.setCellProperty("Head", 0, "displaytype", "checkbox");
  17. grd_prcplist.setCellProperty("Head", 0, "edittype", "checkbox");
  18. if(utlf_isNull(pid)){
  19. return ;
  20. }
  21. if(utlf_isNull(roomcd)){
  22. roomcd = "병실";
  23. }
  24. if(utlf_isNull(sexage)){
  25. sexage = "S/A";
  26. }
  27. if(utlf_isNull(hngnm)){
  28. hngnm = "환자명";
  29. }
  30. //초기화
  31. ds_main_rp_rsvpatinfo.setColumn(0, "pid", pid);
  32. ds_main_rp_rsvpatinfo.setColumn(0, "indd", indd);
  33. ds_main_rp_rsvpatinfo.setColumn(0, "cretno", cretno);
  34. ds_main_rp_rsvpatinfo.setColumn(0, "ordtype", ordtype);
  35. ds_main_rp_rsvpatinfo.setColumn(0, "medispclid", medispclid);
  36. ds_main_rp_rsvpatinfo.setColumn(0, "roomcd", roomcd);
  37. ds_main_rp_rsvpatinfo.setColumn(0, "sexage", sexage);
  38. ds_main_rp_rsvpatinfo.setColumn(0, "hngnm", hngnm);
  39. //재조회시필요
  40. _pid = pid;
  41. _indd = indd;
  42. _cretno = cretno;
  43. _ordtype = ordtype;
  44. _medispclid = medispclid;
  45. _roomcd = roomcd;
  46. _sexage = sexage;
  47. _hngnm = hngnm;
  48. // 외래예약처방정보 조회
  49. ds_send.setColumn(0, "pid", pid);
  50. ds_send.setColumn(0, "instcd", sysf_getUserInfo("dutplceinstcd"));
  51. ds_send.setColumn(0, "orddd", utlf_getCurrentDate());
  52. //20090729 dhkim 추가
  53. ds_send.setColumn(0, "roomcd", roomcd);
  54. ds_send.setColumn(0, "sexage", sexage);
  55. ds_send.setColumn(0, "hngnm", hngnm);
  56. var oParam = {};
  57. oParam.id = "TRMNI02101";
  58. oParam.service = "injspecialroomapp.InjSpecialRoomPatMngt";
  59. oParam.method = "reqGetRsrvPrcpList";
  60. oParam.inds = "req=ds_send";
  61. oParam.outds = "ds_main_rp_rsvprcpinfo_prcplist=prcplist";
  62. oParam.async = false;
  63. //oParam.callback = "cf_TRMNI02101";
  64. tranf_submit(oParam);
  65. ds_main_rp_rsvprcpinfo_prcplist.addColumn("prcpclscd_vw", "string");
  66. ds_main_rp_rsvprcpinfo_prcplist.addColumn("colEdittype", "string");
  67. ds_main_rp_rsvprcpinfo_prcplist.addColumn("colFont", "string");
  68. var flag, _flag;
  69. var carerpyn; var _carerpcnt = 0;
  70. var prcphistcd;
  71. var spcldrug;
  72. var sExprColor = "EXPR(";
  73. for(var i = 0; i < grd_prcplist.rowcount; i++){
  74. ds_main_rp_rsvprcpinfo_prcplist.setColumn(i, "prcpclscd_vw", ds_main_rp_rsvprcpinfo_prcplist.getColumn(i, "drprcpetc7"));
  75. //구분 merge
  76. //20090820 dhkim 처방종류 view용필드로 변경. prcpclscd를 사용하여 처방전송시 부서세팅에러발생했음
  77. flag = ds_main_rp_rsvprcpinfo_prcplist.getColumn(i, "prcpclscd_vw");
  78. //flag = model.getValue('/root/main_rp/rsvprcpinfo/prcplist[' + i + ']/prcpclscd');
  79. if(i > 0){
  80. if(flag == _flag){
  81. ds_main_rp_rsvprcpinfo_prcplist.getColumn(i, "prcpclscd_vw", '');
  82. }
  83. }
  84. _flag = flag;
  85. //실처방으로 풀린 경우 체크박스 비활성화 처리
  86. carerpyn = ds_main_rp_rsvprcpinfo_prcplist.getColumn(i, "carerpyn");
  87. if(carerpyn == 'Y'){
  88. //grd_prcplist.ColAttribute(i, 'status') = true;
  89. ds_main_rp_rsvprcpinfo_prcplist.setColumn(i, "colEdittype", "none");
  90. _carerpcnt = _carerpcnt + 1;
  91. }else{
  92. //grd_prcplist.ColAttribute(i, 'status') = false;
  93. ds_main_rp_rsvprcpinfo_prcplist.setColumn(i, "colEdittype", "checkbox");
  94. }
  95. //20090804 dhkim D/C 글자색 변경(검정 : E, 빨강 : D, 파랑 : L)
  96. prcphistcd = ds_main_rp_rsvprcpinfo_prcplist.getColumn(i, "prcphistcd");
  97. if(prcphistcd == 'E'){
  98. sExprColor += "currow == "+i+" ? '#040000' : ";//검정
  99. }else if(prcphistcd == 'D'){
  100. sExprColor += "currow == "+i+" ? '#FF0000' : ";//빨강
  101. }else if(prcphistcd == 'L'){
  102. sExprColor += "currow == "+i+" ? '#0000FF' : ";//파랑
  103. }else{
  104. sExprColor += "currow == "+i+" ? '#333333' : ";
  105. }
  106. //20090804 dhkim 마약(M), 향정(H)의 경우 글씨체 bold로 변경
  107. spcldrug = ds_main_rp_rsvprcpinfo_prcplist.getColumn(i, "spcldrug");
  108. if(spcldrug == 'M' || spcldrug == 'H'){
  109. ds_main_rp_rsvprcpinfo_prcplist.setColumn(i, "colFont", "arial,9,bold");
  110. }else{
  111. ds_main_rp_rsvprcpinfo_prcplist.setColumn(i, "colFont", "arial,9");
  112. }
  113. }
  114. sExprColor += "'')";
  115. for( var i=0 ; i<grd_prcplist.getCellCount("Body") ; i++ ){
  116. grd_prcplist.setCellProperty("Body", i, "color", sExprColor);
  117. grd_prcplist.setCellProperty("Body", i, "color2", sExprColor);
  118. grd_prcplist.setCellProperty("Body", i, "selectcolor", sExprColor);
  119. }
  120. //비활성화가 한개라도 존재하면 체크박스전체선택을 못하도록 없앤다.
  121. if(_carerpcnt > 0){
  122. grd_prcplist.setCellProperty("Head", 0, "displaytype", "normal");
  123. grd_prcplist.setCellProperty("Head", 0, "edittype", "none");
  124. }else{
  125. grd_prcplist.setCellProperty("Head", 0, "displaytype", "checkbox");
  126. grd_prcplist.setCellProperty("Head", 0, "edittype", "checkbox");
  127. }
  128. return ;
  129. }
  130. /**
  131. * ----------------------------------------------------------------------------------
  132. * @date : 20090728
  133. * @author : dhkim
  134. * ----------------------------------------------------------------------------------
  135. * @dssc : 예약처방전송
  136. * 입실체크전에는 처방조회만 가능 -> 입실체크 이전 처방전송시 blocking
  137. * 입실체크이후 처방전송 가능 : 전송된처방은 비활성화
  138. * 처방전송후 ordermanage의 미확인처방에 쌓이지 않고 처방적용일에 바로 누적
  139. * ----------------------------------------------------------------------------------
  140. */
  141. function fSendRsrvPrcpChemo(){
  142. if(fIsValidChemo()){
  143. var rtnCnt = messageBox('예약처방전송을', 'Q004');
  144. if(rtnCnt == 6){
  145. //파라미터값세팅
  146. var pid = model.getValue('/root/main_rp/rsvpatinfo/pid');
  147. var orddd = model.getValue('/root/main_rp/rsvpatinfo/indd');
  148. var cretno = model.getValue('/root/main_rp/rsvpatinfo/cretno');
  149. var ioflag = model.getValue('/root/main_rp/rsvpatinfo/ordtype');
  150. var aftcertdrid = model.getValue('/root/main_rp/rsvpatinfo/medispclid');
  151. var prcpdd = utlf_getCurrentDate();
  152. //20090819 dhkim prcpinptflag를 33(예약처방)으로 넘김 (from. hit 손주연대리님)
  153. var prcpinptflag = "33";
  154. //var prcpinptflag = "00";
  155. var prcpkindcd = "00";
  156. var prcpsignflag = "1";
  157. var aftcertflag = "12";
  158. model.removenode('/root/send');
  159. model.removenode('/root/main_rp/paminfo');
  160. model.removenode('/root/main_rp/saveflaginfo');
  161. model.makeValue ( "/root/main_rp/paminfo/pid", pid);
  162. model.makeValue ( "/root/main_rp/paminfo/orddd", orddd);
  163. model.makeValue ( "/root/main_rp/paminfo/cretno", cretno);
  164. model.makeValue ( "/root/main_rp/paminfo/instcd", sysf_getUserInfo("dutplceinstcd"));
  165. model.makeValue ( "/root/main_rp/paminfo/prcpdd", prcpdd);
  166. model.makeValue ( "/root/main_rp/paminfo/deptcd", sysf_getUserInfo("dutplcecd"));
  167. model.makeValue ( "/root/main_rp/paminfo/userid", sysf_getUserInfo ("userid"));
  168. model.makeValue ( "/root/main_rp/saveflaginfo/savedataflag", "2" );
  169. model.makeValue ( "/root/main_rp/saveflaginfo/saveflag", ioflag); //저장구분 O:외래, I:입원, E:응급, S:건진
  170. model.makeValue ( "/root/main_rp/saveflaginfo/prcpflag", "-" );
  171. model.makeValue ( "/root/main_rp/saveflaginfo/inptflag", prcpinptflag);//입력구분: 입력구분 (코드정의서 M0034 참조)
  172. model.makeValue ( "/root/main_rp/saveflaginfo/pamflag", "N" );//원무정보: 처리구분 (외래만 해당 Y/N)
  173. model.makeValue ( "/root/main_rp/saveflaginfo/deptcd", sysf_getUserInfo("dutplcecd")); //부서코드
  174. model.makeValue ( "/root/main_rp/saveflaginfo/deptnm", sysf_getUserInfo("dutplcenm")); //부서명
  175. model.makeValue ( "/root/main_rp/saveflaginfo/userid", sysf_getUserInfo("userid")); //사용자ID
  176. model.makeValue ( "/root/main_rp/saveflaginfo/usernm", sysf_getUserInfo("usernm")); //사용자명
  177. model.makeValue ( "/root/main_rp/saveflaginfo/signyn", "N" );
  178. model.makeValue ( "/root/main_rp/saveflaginfo/prcpdd", prcpdd);
  179. model.makeValue ( "/root/main_rp/saveflaginfo/diagflag", "N"); //진단정보 처리구분 (Y/N) -> N일 경우 check하지 않음. ('Y'이면 진단없이 처방 저장이 안됨)
  180. model.makeValue ( "/root/saveflaginfo/prcperrflag", "N" );
  181. model.refresh();
  182. grd_prcplist.rebuild();
  183. //예약처방전송
  184. var srcNodeList = model.instances(0).selectNodes ("/root/main_rp/rsvprcpinfo/prcplist");
  185. var curitem = 0;
  186. var nochkcnt = 0;
  187. for ( var i = 1; i<grd_prcplist.rows; i++ ) {
  188. if ( model.getValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/status" ) != "I" ) {
  189. nochkcnt++;
  190. } else {
  191. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpkindcd", prcpkindcd);
  192. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpinptflag", prcpinptflag);
  193. var prcphopedd = prcpdd;
  194. //의사 희망일이 현재 처방일에서 지난것들만 적용
  195. if ( prcphopedd > model.getValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcphopedd" )) {
  196. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcphopedd", prcphopedd );
  197. }
  198. //if ( !isNull(opener.javascript.getParameter ( "SPMMO18200_prcpstatcd" ))) {
  199. // model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpstatcd", opener.javascript.getParameter ( "SPMMO18200_prcpstatcd" ));
  200. //}
  201. if ( !isNull(prcpsignflag)) {
  202. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpsignflag", prcpsignflag);
  203. }
  204. //if ( !isNull(opener.javascript.getParameter ( "SPMMO18200_oprsrvno" ))) {
  205. // model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/oprsrvno", opener.javascript.getParameter ( "SPMMO18200_oprsrvno" ));
  206. //}
  207. //if ( !isNull(opener.javascript.getParameter ( "SPMMO18200_prcpauthflag" ))) {
  208. // model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpauthflag", opener.javascript.getParameter ( "SPMMO18200_prcpauthflag" ));
  209. //}
  210. if ( !isNull(aftcertflag)) {
  211. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/aftcertflag", aftcertflag);
  212. }
  213. if ( !isNull(aftcertdrid)) {
  214. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/aftcertdrid", aftcertdrid);
  215. }
  216. //alert(i + '번째 ioflag : ' + ioflag + ' prcpcd : ' + model.getValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpcd" )
  217. // + ' prcpclscd : ' + model.getValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpclscd" )
  218. // + ' prcpclscd substr : ' + model.getValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpclscd" ).substring (0,1));
  219. if ( "O" != ioflag) {
  220. if ( model.getValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpclscd" ) == "B4" ) {
  221. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prepprcpflag", "Y");
  222. } else if ( model.getValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpclscd" ).substring (0,1) == "A" ) {
  223. //입원base 약처방인경우 병동약국으로 setting, 원내처리
  224. var antideptcd = fDrugDeptcdChk("/root/main_rp/rsvprcpinfo", i );
  225. //alert('execdept '+ antideptcd);
  226. if ( isNull(antideptcd)) {
  227. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpexecdeptcd", "3240300000" );
  228. } else {
  229. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/prcpexecdeptcd", antideptcd );
  230. }
  231. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/hosinhosoutflag", "I" );
  232. model.setValue ( "/root/main_rp/rsvprcpinfo/prcplist[" + i + "]/hosinprcpresncd", "00" );
  233. }
  234. }
  235. }
  236. }
  237. var saveFlagInfoNodeList = model.instances(0).selectNodes( "/root/main_rp/rsvprcpinfo/prcplist" );
  238. model.makeValue ( "/root/send/cond1", getNodeListCSV(saveFlagInfoNodeList));
  239. var savePamInfoNodeList = model.instances(0).selectNodes( "/root/main_rp/paminfo" );
  240. model.makeValue ( "/root/send/cond2", getNodeListCSV(savePamInfoNodeList));
  241. var saveFlagInfoNodeList = model.instances(0).selectNodes( "/root/main_rp/saveflaginfo" );
  242. model.makeValue ( "/root/send/cond3", getNodeListCSV(saveFlagInfoNodeList));
  243. if ( nochkcnt > 0 ) {
  244. if ( messageBox ( "체크안된 처방은 전환이 안됩니다. 저장하시겠습니까?", "Q" ) != "6" ) return;
  245. }
  246. //return ;
  247. if (submit ( "TXMMO18201", false )) {
  248. var prcpErrList = model.instances(0).selectNodes( "/root/errresult/prcperrlist" );
  249. if ( prcpErrList.length > 0 ) {
  250. xpt = window.screenleft + 10;
  251. ypt = window.screenTop + 0;
  252. coord = getRelativeCoordinate ( xpt, ypt );
  253. mon = coord[0];
  254. xpt = coord[1];
  255. ypt = coord[2];
  256. open ( "SPMMO00600", mon, xpt, ypt, "prcpdetl", "/root/errresult", "/root/result", "", false ); //오류팝업
  257. return;
  258. }else{
  259. messageBox('전송을 완료했습니다.', 'E999');
  260. fGetRsrvPrcpChemo(_pid, _indd, _cretno, _ordtype, _medispclid, _roomcd, _sexage, _hngnm);//재조회
  261. }
  262. }
  263. }
  264. }
  265. }
  266. /**
  267. * ----------------------------------------------------------------------------------
  268. * @date : 20090728
  269. * @author : dhkim
  270. * ----------------------------------------------------------------------------------
  271. * @dssc : 예약처방전송 전 유효성 체크
  272. * 입실체크전에는 처방조회만 가능 -> 입실체크 이전 처방전송시 blocking
  273. * 입실체크이후 처방전송 가능 : 전송된처방은 비활성화
  274. * 처방전송후 ordermanage의 미확인처방에 쌓이지 않고 처방적용일에 바로 누적
  275. * ----------------------------------------------------------------------------------
  276. */
  277. function fIsValidChemo(){
  278. //전송할 처방이 체크되었는지 확인
  279. var chk; var chkCnt = 0;
  280. for(var i = 1; i <= grd_prcplist.rows; i++){
  281. chk = model.getValue('/root/main_rp/rsvprcpinfo/prcplist[' + i + ']/status');
  282. if(chk == 'I'){
  283. chkCnt = chkCnt + 1;
  284. }
  285. }
  286. if(chkCnt == 0){
  287. messageBox('전송할 처방을 선택하세요.', 'E999');
  288. return false;
  289. }
  290. //해당환자가 입실체크 이전인지 조회
  291. var pid = model.getValue('/root/main_rp/rsvpatinfo/pid');
  292. var indd = model.getValue('/root/main_rp/rsvpatinfo/indd');
  293. model.removenode('/root/send');
  294. model.makeValue('/root/send/pid', pid);
  295. model.makeValue('/root/send/indd', indd);
  296. model.removenode('/root/main_rp/patinyninfo');
  297. model.makeNode('/root/main_rp/patinyninfo');
  298. if(submit('TRMNI02102')){
  299. var cnt = model.getValue('/root/main_rp/patinyninfo/cnt');
  300. if(cnt < 1){
  301. messageBox('입실체크전에는 처방을 전송할 수 없습니다.', 'E999');
  302. return false;
  303. }
  304. }
  305. return true;
  306. }
  307. ]]></Script>