SPADT61200.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. /**
  2. * 파 일 명 : SPADT61200.js
  3. * 설 명 : (팝업)원내처방전출력 Javascriot
  4. * 설 계 자 : 공두경
  5. * 작 성 자 : 공두경
  6. * 수정이력 : 2007.10.2 / 최초작성 / 공두경
  7. */
  8. /**
  9. * 초기화
  10. */
  11. function fInit() {
  12. var sParam = model.getAttribute("params");
  13. model.makeValue("/root/send/prcpinfo/drugdd", astfMatrixData(sParam, 1, 0));
  14. model.makeValue("/root/send/prcpinfo/drugno", astfMatrixData(sParam, 1, 1));
  15. model.makeValue("/root/send/prcpinfo/ioflag", "O");
  16. model.makeValue("/root/send/prcpinfo/pid", astfMatrixData(sParam, 1, 2));
  17. model.makeValue("/root/send/prcpinfo/orddd", astfMatrixData(sParam, 1, 3));
  18. model.makeValue("/root/send/prcpinfo/cretno", astfMatrixData(sParam, 1, 4));
  19. model.makeValue("/root/send/prcpinfo/orddeptcd", astfMatrixData(sParam, 1, 5));
  20. model.makeValue("/root/send/prcpinfo/prcpgenrflag", astfMatrixData(sParam, 1, 6));
  21. model.makeValue("/root/send/prcpinfo/autoinprntyn", astfMatrixData(sParam, 1, 7));
  22. model.makeValue("/root/send/prcpinfo/reprintyn", astfMatrixData(sParam, 1, 8));
  23. model.makeValue("/root/send/prcpinfo/stocdeptcd", astfMatrixData(sParam, 1, 9)); // 2009.09.08 pymi
  24. model.makeValue("/root/send/prcpinfo/prntflag", "O");
  25. model.refresh();
  26. submit("TRADT61201");
  27. //20101102 이선경 수정 : 일일기준과 1회 기준의 용량과 수량을 보여주는 것을 결정하여 결과를 리턴
  28. var colHidnValue = grdBaseColHidn("D");
  29. //1회 기준
  30. if( colHidnValue == "C") {
  31. model.makeValue("/root/main/prcpdata/patinfo/prcpqty2chk", "Y");
  32. }
  33. if(model.getValue("/root/main/prcpdata/patinfo/pid") != ""){
  34. // 20100202_laboru_RFADT61200 리포트에서 memo 의 가로 크기를 늘이려면 아래 수치 변경 필요.
  35. var memo = model.getValue("/root/main/prcpdata/patinfo/memo");
  36. var memoCnt = 0;
  37. var lineCnt = 0;
  38. var pageCnt = 0;
  39. var strMemo = "";
  40. var tempStr = "";
  41. var tempStr2 = "";
  42. var nextMemo = "";
  43. var strFlag = "N";
  44. if ( memo.indexOf("\n", lineCnt ) >=0){
  45. while ( (memoCnt = memo.indexOf("\n", lineCnt ))>=0){
  46. if( pageCnt < 3) {
  47. if (lineCnt == 0) {
  48. strMemo = strMemo + memo.substring( lineCnt, memoCnt );
  49. if(getByteLength(strMemo) > 78 && getByteLength(strMemo) <= 157) {
  50. pageCnt++;
  51. } else if(getByteLength(strMemo) > 157 && getByteLength(strMemo) <= 239) {
  52. pageCnt = pageCnt + 2;
  53. } else if(getByteLength(strMemo) > 239 ) {
  54. pageCnt = 100;
  55. strFlag = "1";
  56. }
  57. } else {
  58. tempStr = memo.substring( lineCnt, memoCnt ) ;
  59. if(pageCnt > 1) {
  60. if(getByteLength(tempStr) > 74 ) {
  61. if(memo.indexOf("\n", memoCnt + 1 ) < 0 ) {
  62. pageCnt = 100;
  63. strFlag = "2";
  64. } else {
  65. strMemo = strMemo + "\n" + fnGetByte(tempStr,0, 74);
  66. nextMemo = fnGetByte(tempStr, 74, getByteLength(tempStr)) + "\n";
  67. }
  68. } else if(getByteLength(tempStr) <= 74) {
  69. strMemo = strMemo + "\n" + memo.substring( lineCnt, memoCnt ) ;
  70. }
  71. } else {
  72. if(getByteLength(tempStr) <= 78) {
  73. strMemo = strMemo + "\n" + memo.substring( lineCnt, memoCnt ) ;
  74. } else if(getByteLength(tempStr) > 78 && getByteLength(tempStr) <= 155) {
  75. strMemo = strMemo + "\n" + memo.substring( lineCnt, memoCnt ) ;
  76. pageCnt++;
  77. } else if(getByteLength(tempStr) > 155) {
  78. strMemo = strMemo + "\n" + fnGetByte(tempStr,0, 155);
  79. nextMemo = fnGetByte(tempStr, 155, getByteLength(tempStr)) ;
  80. pageCnt = pageCnt +2;
  81. }
  82. }
  83. }
  84. } else {
  85. if (pageCnt == 3) {
  86. nextMemo = nextMemo + memo.substring( lineCnt, memoCnt );
  87. } else if(pageCnt > 3 && pageCnt < 10) {
  88. nextMemo = nextMemo + "\n" + memo.substring( lineCnt, memoCnt ) ;
  89. }
  90. }
  91. lineCnt = memoCnt + 1;
  92. pageCnt++;
  93. }
  94. if(strFlag == "1") {
  95. strMemo = fnGetByte(memo,0, 239);
  96. nextMemo = fnGetByte(memo, 239, getByteLength(memo));
  97. } else if(strFlag == "2") {
  98. var line2temp = memo.substring( lineCnt, memo.length );
  99. strMemo = strMemo + "\n" + fnGetByte(tempStr,0, 78);
  100. nextMemo = fnGetByte(tempStr, 78, getByteLength(tempStr));
  101. nextMemo = nextMemo + "\n" + line2temp;
  102. } else if(strFlag == "3") {
  103. strMemo = strMemo + "\n" + tempStr.substring(0, 40);
  104. nextMemo = tempStr.substring(40, 500);
  105. nextMemo = nextMemo + "\n" + memo.substring(lineCnt,500);
  106. } else if(strFlag == "N") {
  107. if ( (lineCnt < memo.length) ) {
  108. nextMemo = nextMemo + "\n" + memo.substring( lineCnt, memo.length );
  109. }
  110. }
  111. } else {
  112. strMemo = memo;
  113. }
  114. model.setValue("/root/main/prcpdata/patinfo/memo", strMemo);
  115. model.makeValue("/root/main/prcpdata/patinfo/memo1", nextMemo);
  116. //처방전에 DUR이 존재하면 RFADT61203 존재하지 않으면 RFADT61200 출력
  117. var resn = model.getValue("/root/main/prcpdata/resn/resnnm");
  118. //alert(resn);
  119. // 20101106_wify_경북대병원_주민번호 뒷자리 별표 처리
  120. var rrgstno = model.getValue("/root/main/prcpdata/patinfo/rrgstno").split("-");
  121. model.setValue("/root/main/prcpdata/patinfo/rrgstno", rrgstno[0] + "-" + rrgstno[1].substring(0, 1) + "******");
  122. // 20101117_wify_경북대병원_보고서폼 변경 처리
  123. // RFADT61200 ==> RFADT61204
  124. // RFADT61201 ==> RFADT61207
  125. // RFADT61203 ==> RFADT61206
  126. if( resn == ""){
  127. if ( nextMemo != "") {
  128. if(pageCnt >= 3) {
  129. makeReportPreview(0,0,10, 10, "grp_report1");
  130. exeReportPreview("RFADT61204", "XMLSTR","","","true","","","","","","","grp_report1");
  131. makeReportPreview(0,0,10, 10, "grp_report2");
  132. exeReportPreview("RFADT61207", "XMLSTR","","","true","","","","","","","grp_report2");
  133. } else {
  134. strMemo = strMemo + nextMemo;
  135. model.setValue("/root/main/prcpdata/patinfo/memo", strMemo);
  136. makeReportPreview(0,0,10, 10, "grp_report1");
  137. exeReportPreview("RFADT61204", "XMLSTR","","","true","","","","","","","grp_report1");
  138. }
  139. } else {
  140. makeReportPreview(0,0,10, 10);
  141. exeReportPreview("RFADT61204", "XMLSTR", "", "", "true","","","","","true");
  142. }
  143. }else{
  144. if ( nextMemo != "") {
  145. if(pageCnt >= 3) {
  146. makeReportPreview(0,0,10, 10, "grp_report1");
  147. exeReportPreview("RFADT61206", "XMLSTR","","","true","","","","","","","grp_report1");
  148. makeReportPreview(0,0,10, 10, "grp_report2");
  149. exeReportPreview("RFADT61207", "XMLSTR","","","true","","","","","","","grp_report2");
  150. } else {
  151. strMemo = strMemo + nextMemo;
  152. model.setValue("/root/main/prcpdata/patinfo/memo", strMemo);
  153. makeReportPreview(0,0,10, 10, "grp_report1");
  154. exeReportPreview("RFADT61206", "XMLSTR","","","true","","","","","","","grp_report1");
  155. }
  156. } else {
  157. makeReportPreview(0,0,10, 10);
  158. exeReportPreview("RFADT61206", "XMLSTR", "", "", "true","","","","","true");
  159. }
  160. }
  161. } else {
  162. window.close();
  163. }
  164. model.refresh();
  165. window.close();
  166. }
  167. /*
  168. // 20100202_laboru_약사메모 byte
  169. */
  170. function getByteLength(str) {
  171. var byteLength = 0;
  172. for (inx = 0; inx < str.length; inx++) {
  173. var oneChar = escape(str.charAt(inx));
  174. if ( oneChar.length == 1 ) {
  175. byteLength ++;
  176. } else if (oneChar.indexOf("%u") != -1) {
  177. byteLength += 2;
  178. } else if (oneChar.indexOf("%") != -1) {
  179. byteLength += oneChar.length/3;
  180. }
  181. }
  182. return byteLength;
  183. }
  184. /*
  185. // 20100202_laboru_문자열 byte 단위로 잘라오기
  186. */
  187. function fnGetByte(strInput, slimit, ilimit){
  188. var i;
  189. var j;
  190. var strLen;
  191. var strByte = 0;
  192. var strRes = "";
  193. var com = Number(ilimit) - Number(slimit);
  194. strLen = strInput.length;
  195. var tmp = strInput.charAt(i);
  196. var index = 0;
  197. for(var p = 0; p < strLen ; p++) {
  198. var tmp = strInput.charAt(p);
  199. if(tmp >= ' ' && tmp <= '~' ){
  200. strByte++;
  201. }else{
  202. strByte += 2;
  203. }
  204. if(strByte > Number(slimit)){
  205. index = p;
  206. break;
  207. }
  208. }
  209. for(i=index, j=0, strByte=0; j< strLen; j++, i++) {
  210. var tmp = strInput.charAt(i);
  211. if(tmp >= ' ' && tmp <= '~' ){
  212. strByte++;
  213. }else{
  214. strByte += 2;
  215. }
  216. if(strByte > Number(com)){
  217. break;
  218. }
  219. strRes += tmp;
  220. }
  221. return strRes;
  222. }