SMMNI02100.js 14 KB

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