SMMNP06000.js 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331
  1. /* ---------------------------------------------------------------------
  2. DSC MAIN 등록 (SMMNP06000.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. : Create By Francis Choi
  6. : 2015.05.02
  7. ---------------------------------------------------------------------- */
  8. // --------------------------------------------------
  9. // 화면 Loading시 처리하는 함수
  10. // --------------------------------------------------
  11. function fInitScreen() {
  12. ipt_opcnfmdd.value = getCurrentDate();
  13. var instcd = getUserInfo("dutplceinstcd");
  14. var standard_yn = "orduseyn";
  15. var ord_deptflag = 'D';
  16. var rslt_ref = "/root/main/cond/orddeptlist";
  17. fGetNursHardCdInfo("'049'", ipt_opcnfmdd.value);
  18. if(getNodesetCnt(model, "/root/code/codeinfo/codelist/cdid") < 1 ){
  19. messageBox("부서 세팅 기준자료를 확인하시기 바랍니다.", "I000");
  20. return;
  21. }
  22. model.setValue("/root/main/cond/prestimportid", getScreenMenuParameter()); // tab 기본값 (DSC Main)
  23. model.setValue("/root/main/cond/wardcd", model.getValue("/root/code/codeinfo/codelist/cdid"));
  24. //model.setValue("/root/main/cond/wardcd", "2360800000"); // 통원수술센터 setting
  25. model.toggle("case_dm");
  26. zbcfGetDeptCodeList(instcd, standard_yn, ord_deptflag, rslt_ref);
  27. //20101214_KNUH_Start 진료과에 전체추가 및 바로선택
  28. addComboItem( "cmb_orddeptlist", "전 체", "", "");
  29. cmb_orddeptlist.select(0);
  30. //20101214_KNUH_End
  31. zbcfGetCodeList(new Array("M0065", "M0020"), new Array("/root/init/M0065list","/root/init/M0020list")); //수술환자의 현재 위치 장소에 대한 종류
  32. model.removenode("/root/send");
  33. model.makeNode("/root/send");
  34. model.makeValue("/root/send/opcnfmdd" ,ipt_opcnfmdd.value );
  35. submit("TRMNP06001");
  36. // cmb_orddeptlist.refresh();
  37. fInqurySelectedPrgm(); // 오픈시 수술확정리스트 조회
  38. grd_dscList.frozenCols = grd_dscList.colRef("opstatcd");
  39. // 바코드OCX 생성
  40. //lzzfMakeBrcdPrntObjHanDo(Object명);
  41. lzzfMakeBrcdPrntObjHanDo("CommAX");
  42. }
  43. // --------------------------------------------------
  44. // 조회 클릭시 탭상태값에 따른 조회
  45. // --------------------------------------------------
  46. function fInqurySelectedPrgm()
  47. {
  48. switch(model.getValue("/root/main/cond/prestimportid")) {
  49. case "om": // Order Manage 호출
  50. btn_om.selected = true;
  51. cap_color.visible = true;
  52. cap_uncnfm.visible = true;
  53. cap_prcp.visible = true;
  54. //cap_color.attribute("left") = "15px";
  55. //cap_uncnfm.attribute("left") = "35px";
  56. //cap_prcp.attribute("left") = "120px";
  57. //cap_prcp.attribute("color") = "#0000ff";
  58. fnOrderManageParam(); //(20080417)
  59. //model.setValue("/root/main/cond/orddd", model.getValue("/root/main/cond/opcnfmdd")); // 업무일자(20080417)
  60. model.toggle("case_om"); //Order Manage
  61. fGetOMPatList("dsc");
  62. break;
  63. case "prn": //Order Manage의 Prn 처방을 Direct 호출
  64. btn_om.selected = true;
  65. cap_color.visible = false;
  66. cap_uncnfm.visible = false;
  67. cap_prcp.visible = true;
  68. cap_ser.visible = false;
  69. cap_prcp.attribute("left") = "698px";
  70. cap_prcp.attribute("color") = "#000000";
  71. fnOrderManageParam(); //(20080417)
  72. //model.setValue("/root/main/cond/orddd", model.getValue("/root/main/cond/opcnfmdd")); // 업무일자(20080417)
  73. model.toggle("case_om"); //Order Manage
  74. fSetPrnMode();
  75. fGetOMPatList("dsc");
  76. break;
  77. case "rp" :
  78. if( eval(grd_dscList.row) < 1 ) {
  79. messageBox("환자를 선택하셔야 합니다.!", "E000");
  80. model.setValue("/root/main/cond/prestimportid", "dm");
  81. fInqurySelectedPrgm();
  82. return;
  83. }
  84. btn_rp.selected = false;//예약처방전송버튼활성화
  85. sha_state.visible = false;//프로토콜메인 환자상태 캡션
  86. cap_state.visible = false;//프로토콜메인 환자상태 캡션
  87. cap_color.visible = false;//미확인컬러 캡션
  88. cap_uncnfm.visible = false;//미확인 캡션
  89. cap_prcp.visible = false;//일반/반환/퇴원 캡션
  90. //caption7.visible = false;//전실승인캡션
  91. //tar_chngroomaprv.visible = false;//전실승인텍스트애리어
  92. model.refresh();
  93. var pid = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/pid');
  94. var indd = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/indd');
  95. var cretno = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/cretno');
  96. var ordtype = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/iocls');
  97. var medispclid = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/chngmedispclid');
  98. var roomcd = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/roomcd');
  99. var sexage = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/sexage');
  100. var hngnm = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/hngnm');
  101. if(indd == null || indd == ''){
  102. indd = getCurrentDate();
  103. }
  104. model.toggle("case_rp");
  105. fGetRsrvPrcpChemo(pid, indd, cretno, ordtype, medispclid, roomcd, sexage, hngnm);
  106. break;
  107. default:
  108. btn_dm.selected = true;
  109. sha_state.visible = true;//프로토콜메인 환자상태 캡션
  110. cap_state.visible = true;//프로토콜메인 환자상태 캡션
  111. cap_color.visible = false;
  112. cap_uncnfm.visible = false;
  113. cap_prcp.visible = false;
  114. model.toggle("case_dm"); //DSC Main
  115. fDscDataRead();
  116. break;
  117. }
  118. }
  119. /* --------------------------------------------------*/
  120. /* type : function */
  121. /* access : public */
  122. /* desc : order manage tab클릭시 추가정보 넘김 */
  123. /* param : 기관코드 */
  124. /* return : */
  125. /* --------------------------------------------------*/
  126. function fnOrderManageParam() {
  127. //(20080417)
  128. var pGrd = grd_dscList;
  129. var opcnfmdd = "";
  130. var statflag1 = "";
  131. var statflag2 = "";
  132. var sPath = "/root/main/cond";
  133. // 업무일자
  134. opcnfmdd = model.getValue(sPath + "/opcnfmdd");
  135. model.setValue( sPath + "/orddd", opcnfmdd );
  136. /*
  137. //재원정보
  138. statflag1 = model.getValue( "/root/main/dsc/dscList["+pGrd.row+"]/INDSCHSTAT")
  139. if (statflag1 = "ⓓ" ) statflag2 = "3"; //퇴원예고
  140. if (statflag1 = "퇴원" ) statflag2 = "4"; //퇴원
  141. if (statflag2 != "")
  142. model.setValue( sPath + "/indschacptstat", statflag2);
  143. */
  144. }
  145. /* --------------------------------------------------*/
  146. /* type : function */
  147. /* access : public */
  148. /* desc : DSC Main을 조회 */
  149. /* param : 기관코드 */
  150. /* return : */
  151. /* --------------------------------------------------*/
  152. function fDscDataRead() {
  153. //20080917
  154. grd_dscList.row = 0;
  155. fMsgDisp();//메세지 지우기
  156. model.removenode("/root/send");
  157. model.removeNodeset("/root/main/dsc");
  158. //model.makeValue("/root/send/opdeptcd" , cmb_opdeptcd.value ); // 수행부서
  159. model.makeValue("/root/send/opcnfmdd" , ipt_opcnfmdd.value );
  160. model.makeValue("/root/send/dscflag" , rdo_dscflag.value ); // 수술환자구분코드
  161. model.makeValue("/root/send/opflag" , rdo_opflag.value ); // 수술진행
  162. model.makeValue("/root/send/opflagex" , chk_opflagex.value ); // 취소제외
  163. model.makeValue("/root/send/orddeptcd" , cmb_orddeptlist.value); // 진료과
  164. model.makeValue("/root/send/drcd" , cmb_drcd.value ); // 집도의
  165. model.makeValue("/root/send/oproomcd" , cmb_oproomcd.value );
  166. model.makeValue("/root/send/pid" , ipt_pid.value );
  167. if(submit("TRMNP06003")){
  168. var opstatcd ;
  169. var medipostyn;
  170. //var brateflag = "";
  171. for(var i = 1; i < grd_dscList.rows; i++){
  172. grd_dscList.removeStatus(i, "update");
  173. //20080917 수술취소환자 붉은색으로 표시
  174. opstatcd = model.getValue('/root/main/dsc/dscList[' + i + ']/opstatcd' );
  175. medipostyn = model.getValue('/root/main/dsc/dscList[' + i + ']/medipostyn' );
  176. if(opstatcd == '29'){
  177. grd_dscList.cellStyle("color", i, grd_dscList.colRef("careinrmdd"), i, grd_dscList.colRef("oprccount")) = "#FF0000";
  178. }else{
  179. grd_dscList.cellStyle("color", i, grd_dscList.colRef("careinrmdd"), i, grd_dscList.colRef("oprccount")) = "#000000";
  180. }
  181. if(medipostyn == "Y") {
  182. grd_dscList.cellstyle("background-color", i, 1, i, grd_dscList.cols-1) ="#ffff00";
  183. } else {
  184. grd_dscList.cellstyle("background-color", i, 1, i, grd_dscList.cols-1) ="#FFFFF8";
  185. }
  186. /*brateflag = model.getValue('/root/main/dsc/dscList[' + i + ']/brateflag' );
  187. if (brateflag == "O") {
  188. model.removenode("/root/send/judinfo");
  189. model.makeValue("/root/send/judinfo/pid", model.getValue('/root/main/dsc/dscList[' + i + ']/pid'));
  190. model.makeValue("/root/send/judinfo/indd", model.getValue('/root/main/dsc/dscList[' + i + ']/indd'));
  191. model.makeValue("/root/send/judinfo/cretno", model.getValue('/root/main/dsc/dscList[' + i + ']/cretno'));
  192. submit("");
  193. }*/
  194. }
  195. model.removeNodeset("/root/main/MmohiprcLists/CureList");
  196. model.removeNodeset("/root/main/MmohiprcLists/CartList");
  197. grd_dscList.refresh();
  198. grd_otptlist.refresh();
  199. grd_cartlist.refresh();
  200. fInputNo();
  201. }else{
  202. messageBox("dsc환자조회를 실패하였습니다.", "E");
  203. return;
  204. }
  205. }
  206. //--------------------
  207. //(20080129)
  208. //--------------------
  209. // 간호퇴원확정이후는 입실시간/퇴실시간변경 불가로 처리예정
  210. function fInputNo() {
  211. //-----------------------------------------------
  212. //선택불가로 변경
  213. //-----------------------------------------------
  214. var pGrd = grd_dscList;
  215. if (pGrd.rows <= 1 ) return;
  216. //전부 수정불가
  217. pGrd.isReadOnly(1,pGrd.colRef("careinrmdd"),pGrd.rows-1,pGrd.colRef("careinrmdd"))= true;
  218. for (var row=1;row<pGrd.rows;row++) {
  219. var temp = model.getValue("/root/main/dsc/dscList[" + row + "]/indschstat");
  220. if (false == finputCheck(temp)) {
  221. continue;
  222. }
  223. //입력가능
  224. pGrd.isReadOnly(row,pGrd.colRef("careinrmdd"),row,pGrd.colRef("careinrmdd")) = false;
  225. }
  226. }
  227. function finputCheck(temp) {
  228. if ( temp == "ⓓ" || temp == "") {
  229. return true; //수정가능(퇴원예고이거나 ""인경우)
  230. } else {
  231. return false; //수정불가
  232. }
  233. }
  234. /* --------------------------------------------------*/
  235. /* type : function */
  236. /* access : public */
  237. /* desc : 처방상세내역 조회하기 */
  238. /* param : row */
  239. /* return : */
  240. /* --------------------------------------------------*/
  241. function fDscDataView(pRow) {
  242. var tPath = "/root/main/dscdetl/";
  243. var sPath = "/root/main/dsc/dscList["+pRow+"]/";
  244. model.removenode("/root/send");
  245. model.removeNodeset("/root/main/MmohiprcLists");
  246. model.makeValue("/root/send/instcd" , "" ); // 기관코드
  247. model.makeValue("/root/send/pid" , model.getValue(sPath +"pid" )); // 등록(환자)번호
  248. model.makeValue("/root/send/orddd" , model.getValue(sPath +"indd" )); // 진료(입원)일자
  249. model.makeValue("/root/send/cretno" , model.getValue(sPath +"cretno")); // 생성번호
  250. model.makeValue("/root/send/oprsrvno", model.getValue(sPath +"oprsrvno")); // 수술예약번호
  251. model.makeValue("/root/send/seqflag" , model.getValue(sPath +"seqflag")); // 1:DSC 2:수술
  252. if (submit("TRMNP06004")) {
  253. //messageBox("자료 조회가 ", "I002");
  254. } else {
  255. //grd_dscList.refresh();
  256. }
  257. model.refresh();
  258. }
  259. /* --------------------------------------------------*/
  260. /* type : function */
  261. /* access : public */
  262. /* desc : 환자정보 가져오기 */
  263. /* param : 검색구분 */
  264. /* return : */
  265. /* --------------------------------------------------*/
  266. function fSearchPatInfo(qryflag) {
  267. modal("../../../pam/patinfomngtweb/xrw/SPPMC02500", qryflag,"150", "150", "SPPMC02500", "/root/source", "/root/send");
  268. //환자번호 copy
  269. var popupendflag = model.getValue("/root/main/popupendflag");
  270. if (popupendflag == "ok"){
  271. model.setValue("/root/main/rghtref/rghtreflist/pid",model.getValue("/root/main/patinfo/patinfolist/pid"));
  272. model.refresh();
  273. var pid = model.getValue("/root/main/patinfo/patinfolist/pid");
  274. if (pid != null && pid != "" && pid != " " && pid != "-"){
  275. fpidref();
  276. }
  277. }
  278. }
  279. /* --------------------------------------------------*/
  280. /* type : function */
  281. /* access : public */
  282. /* desc : 등록번호에 따른 환자정보 검색 */
  283. /* param : */
  284. /* return : */
  285. /* --------------------------------------------------*/
  286. function fpidref(){
  287. model.removeNodeset("/root/send");
  288. var pid = ipt_pid.value
  289. model.makeValue("/root/send/pid",pid);
  290. if(submit("TRMNI00102")){
  291. var hngnm=model.getValue("/root/main/rghtref/rghtreflist/hngnm");
  292. //데이타가 없을시 이전 출력 내용 삭제.
  293. if(hngnm==""){
  294. opt_hngnm.value="";
  295. opt_gndrage.value="";
  296. opt_rrgstno.value="";
  297. opt_hngnm.refresh();
  298. opt_gndrage.refresh();
  299. opt_rrgstno.refresh();
  300. model.makeValue("/root/main/rghtref/rghtreflist/pid","");
  301. return;
  302. }
  303. }
  304. }
  305. // --------------------------------------------------
  306. // 팝업메뉴
  307. // --------------------------------------------------
  308. function fShowPopupMenu(gridID, menuPath)
  309. {
  310. var gridObj = document.controls.item(gridID);
  311. if(event.button == 3) {
  312. if(gridObj.isCell(event.target) && gridObj.mouseRow >= gridObj.fixedrows){
  313. window.setPopupMenu(true, menuPath, "name", "func", false);
  314. }else{
  315. window.setPopupMenu(false);
  316. }
  317. }
  318. }
  319. // --------------------------------------------------
  320. // 환자이름표출력
  321. // --------------------------------------------------
  322. function fOpenNamePrint(){
  323. var pRow = grd_dscList.row;
  324. var sPath = "/root/main/dsc/dscList["+pRow+"]";
  325. var calcdd = model.getValue(sPath+"/careinrmdd");
  326. var grdStat = grd_dscList.rowStatus(grd_dscList.row);
  327. if(calcdd == '--' || (calcdd != '--' && grdStat != 0)){//입실시각이 입력되지 않았거나 입실시각을 입력했으나 저장하지 않은상태
  328. messageBox('입실시각적용 후 환자이름표출력이 가능합니다.', 'E999');
  329. return;
  330. }
  331. var dschdd = model.getValue(sPath+"/dschdd");
  332. if(dschdd != '-'){
  333. messageBox("이미 퇴실처리된 환자입니다.", "E999", "");
  334. return;
  335. }
  336. fGetPatName();
  337. }
  338. //정보호출
  339. function fGetPatName() {
  340. var row = grd_dscList.row;
  341. if (row >= 1) {
  342. var pid = model.getValue("/root/main/dsc/dscList["+row+"]/pid");
  343. var wardcd = model.getValue("/root/main/cond/wardcd");
  344. model.removenode("/root/send");
  345. model.makeValue("/root/send/patnameinfo/pid", pid);
  346. model.makeValue("/root/send/patnameinfo/wardcd", wardcd);
  347. submit("TRMNW00210");
  348. model.removeNodeset("/root/send");
  349. model.makeNode("/root/send/temp2");
  350. model.makeNode("/root/send/temp2/patnamelist");
  351. //alert(instance1.selectNodesXml("/root/main_nm/temp2/patnamelist"));
  352. model.copyNode("/root/send/temp2/patnamelist", "/root/temp2/patnamelist");
  353. exeReportPreview("RPMNW00210", "XMLSTR" ); //미리보기출력
  354. //exeReportPreview("RPMNR06302", "XMLSTR", "/root/main/prtinfo", "", "true", "", "", "", "", "", "", "grp_report"); //미리보기 없이 출력
  355. }
  356. }
  357. // --------------------------------------------------
  358. // 입실시각 적용(환자팔찌출력)
  359. // --------------------------------------------------
  360. function fSetIntime()
  361. {
  362. var pRow = grd_dscList.row;
  363. var sPath = "/root/main/dsc/dscList["+pRow+"]";
  364. /* 20081004 수정
  365. var temp = model.getValue("/root/main/dsc/dscList[" + pRow + "]/indschstat");
  366. if (false == finputCheck(temp)) {
  367. messageBox("재원상태를 확인하십시오.", "E999", "");
  368. return;
  369. }
  370. */
  371. var dschdd = model.getValue("/root/main/dsc/dscList[" + pRow + "]/dschdd");
  372. if(dschdd != '-'){
  373. messageBox("이미 퇴실처리된 환자입니다.", "E999", "");
  374. return;
  375. }
  376. model.setValue(sPath+"/careinrmdd", getCurrentDate()+""+getCurrentTime().substring(0,4));
  377. grd_dscList.addStatus(pRow, "update");
  378. model.refresh();
  379. fOpenPatBC();
  380. }
  381. // --------------------------------------------------
  382. // 저장한 간호입실시간을 지우는 경우
  383. // 입실시각 취소
  384. // --------------------------------------------------
  385. function fClsIntime()
  386. {
  387. var pRow = grd_dscList.row;
  388. var sPath = "/root/main/dsc/dscList["+pRow+"]";
  389. var temp = model.getValue("/root/main/dsc/dscList[" + pRow + "]/indschstat");
  390. if(temp != '') {
  391. messageBox("재원상태를 확인하십시오.", "E999", "");
  392. return;
  393. }
  394. if(model.getValue(sPath + "/pid") != "") { //선택된 환자가 있는 경우
  395. model.setValue(sPath + "/careinrmdd", '');
  396. grd_dscList.addStatus(pRow, "update");
  397. model.refresh();
  398. }
  399. }
  400. // --------------------------------------------------
  401. // 환자팔찌 재출력
  402. // --------------------------------------------------
  403. function fOpenPatBC()
  404. {
  405. //20080117 적용테스트
  406. //return;
  407. var pRow = grd_dscList.row;
  408. var sPath = "/root/main/dsc/dscList["+pRow+"]/";
  409. //----------------(20071114:angio환자제외시킴)
  410. //if (model.getValue(sPath +"oprsrvno") == "") {
  411. // messageBox("angio환자는 팔찌출력을 ", "E001");
  412. // return;
  413. //}
  414. //----------------aa
  415. /*
  416. var barcdRef = "/root/main/barcdprntsetup/prntsetupinfo/setupinfo";
  417. var sPrntKind = model.getValue(barcdRef + "[1]/prntkind");
  418. var sSndMsg = "";
  419. if (sPrntKind == 0) return;
  420. var sCommKind = model.getValue(barcdRef + "[1]/commkind");
  421. */
  422. //20080905 추가
  423. //port정보 가져오기
  424. model.removenode('/root/send');
  425. model.removenode('/root/main/barcdprntsetup');
  426. model.makenode('/root/main/barcdprntsetup');
  427. model.makeValue('/root/send/scrnid', 'SMMNP06000');
  428. var comport = '1';
  429. if(submit('TRLLC90101')){
  430. comport = model.getValue('/root/main/barcdprntsetup/prntsetupinfo/setupinfo[1]/comm02/comm');
  431. }
  432. // 바코드 라벨 환경설정
  433. lzzfMakeBrcdPrntObjHanDo("CommAX");
  434. // 환자정보 상단으로..
  435. fSetPatInfo();
  436. //설정된 상단정보를 불러옴
  437. model.makeNode("/root/main/paminfo");
  438. var node = getGlobalVariable("paminfo");
  439. setCSVToNode("/root/main/paminfo", node);
  440. var pid, indd, cretno, mskind, histstat;
  441. //patinfo 정보 셋팅
  442. pid = model.getValue(sPath +"pid");
  443. indd = model.getValue(sPath +"indd" );
  444. cretno = model.getValue(sPath +"cretno");
  445. mskind = model.getValue(sPath +"mskind");
  446. histstat = model.getValue(sPath +"histstat");
  447. // model.makeNode("/root/send/data17");
  448. // model.makeNode("/root/hidden/h_receipt");
  449. // model.makeNode("/root/hidden/h_receipt/receipt");
  450. /*
  451. model.makeValue("/root/send/data17/pid",pid);
  452. model.makeValue("/root/send/data17/indd",indd);
  453. model.makeValue("/root/send/data17/cretno",cretno);
  454. model.makeValue("/root/send/data17/mskind",mskind);
  455. model.makeValue("/root/send/data17/histstat",histstat);
  456. submit("TRPMI00115");
  457. fOpenBrcdPrnt();
  458. */
  459. //원무 메소드 호출
  460. //fInPatBarCodePrn(pid, indd, cretno, mskind, histstat, comport);
  461. /* 삭제된 파라미터 : pPort - COM Port 지정값
  462. * 추가된 파라미터 : pSetyn - 프린터설정정보 셋팅여부
  463. * pScrid - 프린터설정정보 조회용 화면 아이디
  464. * pBarcdRef - 설정정보 xpath
  465. */
  466. pmifPrintBarCode(pid, indd, cretno, mskind, histstat, "N", "SMMNP06000", "/root/main/barcdprntsetup/prntsetupinfo/setupinfo"); // 20090527 변경됨.
  467. }
  468. // --------------------------------------------------
  469. // 검사결과조회 오픈
  470. // --------------------------------------------------
  471. function fOpenTestRslt()
  472. {
  473. fSetPatInfo();
  474. open("SMAER00800","1","20","128");
  475. }
  476. // --------------------------------------------------
  477. // 수술준비확인창 오픈
  478. // --------------------------------------------------
  479. function fOpenTPR()
  480. {
  481. fSetPatInfo();
  482. setParameter("OpMenu", "W");
  483. open("SMMNP00200","1","20","128");
  484. }
  485. // --------------------------------------------------
  486. // 투약기록 오픈
  487. // --------------------------------------------------
  488. function fOpenMediRecord()
  489. {
  490. fSetPatInfo();
  491. open("SMMNR00600","1","20","128");
  492. }
  493. // --------------------------------------------------
  494. // 간호기록TypeII 오픈 -- 1차 오픈에서 제외됨
  495. // --------------------------------------------------
  496. function fOpenNursingRecord()
  497. {
  498. fSetPatInfo();
  499. var sPath = "/root/main/dsc/dscList["+grd_dscList.row+"]";
  500. var parammsg = "recflag▦dutplaccd▦reclnkkey▩D▦34100▦"
  501. + model.getValue(sPath+"/oprsrvno")+","
  502. + model.getValue(sPath+"/ophistno")+","
  503. + model.getValue(sPath+"/instcd")+"▩"
  504. setParameter("SMMNR03400_ParamBase",parammsg);
  505. modal("SMMNR03400","1","20","128");
  506. }
  507. // --------------------------------------------------
  508. // 간호처방 오픈
  509. // --------------------------------------------------
  510. function fOpenCarePrcp()
  511. {
  512. fSetPatInfo();
  513. open("SMMNW10900","1","20","128"); //간호처방
  514. }
  515. // --------------------------------------------------
  516. // 퇴실정리 오픈(20080129)
  517. // --------------------------------------------------
  518. function fOpenOutRm()
  519. {
  520. var pGrd = grd_dscList;
  521. //20090123 dhkim
  522. //itc김숙인 변경요청사항 반영
  523. //입실시각이 입력되지 않은 상태에서 오른쪽 마우스의 퇴실정리 선택시 [입실체크 후 퇴실정리가 가능합니다.]라는 blocking메시지와 함께 퇴실정리 blocking함.
  524. var calcdd = model.getValue("/root/main/dsc/dscList[" + pGrd.row + "]/careinrmdd");
  525. var grdStat = grd_dscList.rowStatus(grd_dscList.row);
  526. if(calcdd == '--' || (calcdd != '--' && grdStat != 0)){//입실시각이 입력되지 않았거나 입실시각을 입력했으나 저장하지 않은상태
  527. messageBox('입실체크 후 퇴실정리가 가능합니다.', 'E999');
  528. return;
  529. }
  530. if (pGrd.rows <= 0 || pGrd.row < 1) {
  531. messageBox("자료를 선택하십시오.", "E999", "");
  532. return;
  533. }
  534. if (model.getValue( "/root/main/dsc/dscList["+pGrd.row+"]/pid")== "") {
  535. messageBox("등록번호가 없습니다.", "E999", "");
  536. return;
  537. }
  538. // 상단올리기
  539. fSetPatInfo();
  540. open("SMMNP06010","1","20","128");
  541. }
  542. // --------------------------------------------------
  543. // 상단환자정보세팅하기
  544. // --------------------------------------------------
  545. function fSetPatInfo()
  546. {
  547. var sPath = "/root/main/dsc/dscList["+grd_dscList.row+"]";
  548. var sPatFlag = model.getValue(sPath+"/oppatflagcd");
  549. if (sPatFlag == "") sPatFlag = "I"; //수술정보없는경우는 'I'
  550. //올리기 변경:수술하지 않는 사람도 나옴
  551. var sOprsrvno = model.getValue(sPath+"/oprsrvno");
  552. var param = "";
  553. //수술취소된 경우 T로 올리지 말것.(아직 구현안함)
  554. //20080917 dhkim 수술취소환자의 경우
  555. var opstatcd = model.getValue(sPath + "/opstatcd");//수술상태
  556. if (sOprsrvno != "" && opstatcd != '29') { //20080917 dhkim 수정. 수술일정이 있고 취소상태가 아닌 환자 상단올리기
  557. //수술전용 상단 올리기
  558. param = "T▦" // 01 O:외래, I:입원구분, T:수술예약
  559. + model.getValue(sPath+"/pid" ) + "▦" // 02 등록번호
  560. + model.getValue(sPath+"/opcnfmdd" ) + "▦" // 03 수술시작일자
  561. + "▦" // 04 cretno(없는 경우 ""로 처리)
  562. + model.getValue(sPath+"/instcd" ) + "▦" // 05 기관코드
  563. + model.getValue(sPath+"/perfdeptcd" ) + "▦" // 06 집도과부서
  564. + model.getValue(sPath+"/perfdrid" ) + "▦" // 07 집도의ID
  565. + sPatFlag + "▦" // 08 환자구분
  566. + "F▦" // 09 F -처리구분 무조건 F로 설정
  567. + model.getValue(sPath+"/oprsrvno" ) + "▦" // 10 수술예약번호
  568. + model.getValue(sPath+"/ophistno" ) + "▦" // 11 수술이력번호
  569. + model.getValue("/root/main/cond/opcnfmdd" ) + "▦"; // 12 조회일자 2007-09-13 오지훈 추가...
  570. } else if(sOprsrvno != "" && opstatcd == '29'){
  571. //20080917 dhkim 수정. 수술일정취소된 환자 상단올리기
  572. param = "I" //dsc
  573. + "▦" + model.getValue(sPath+"/pid") //등록번호
  574. + "▦" + model.getValue(sPath+"/indd") //입원일자
  575. + "▦" + model.getValue(sPath+"/cretno") //입원생성번호
  576. + "▦" + model.getValue(sPath+"/instcd") //기관코드
  577. + "▦" + model.getValue(sPath+"/indd") //진료일자(당일입원환자를 조회하므로)
  578. //alert(param);
  579. //condparam = ordtype + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd+ "▦" + orddd;
  580. } else {
  581. // 상단 세팅을 위한 파라미터(입원전용)
  582. param = "I"
  583. + "▦" + model.getValue(sPath+"/pid") //등록번호
  584. + "▦" + model.getValue(sPath+"/indd") //입원일자
  585. + "▦" + model.getValue(sPath+"/cretno") //입원생성번호
  586. + "▦" + model.getValue(sPath+"/instcd") //기관코드
  587. + "▦" + model.getValue(sPath+"/indd") //진료일자(당일입원환자를 조회하므로)
  588. /* 퇴원정리(병동) 확인해봐야함...
  589. // 상단 환자정보 parameter
  590. var sIoflag = "I";
  591. var sPid = model.getValue(dschPath + "[" + iRow + "]/pid");
  592. model.removenode ("/root/send");
  593. model.makeNode ("/root/send");
  594. model.makeValue ("/root/send/reqdata/pid" , sPid);
  595. model.makeValue ("/root/send/reqdata/histstat", sIoflag);
  596. model.removeNodeset("/root/temp/gettoplist");
  597. submit("TRMND00103");
  598. var sCretno = model.getValue("/root/temp/gettoplist/gettopinfo/cretno" ); //생성번호
  599. var sSeqno = model.getValue("/root/temp/gettoplist/gettopinfo/seqno" ); //일련번호
  600. var sInstcd = model.getValue("/root/temp/gettoplist/gettopinfo/instcd" ); //기관코드
  601. var sIndd = model.getValue("/root/temp/gettoplist/gettopinfo/indd" ); //입원일자
  602. var sOrddd = model.getValue("/root/temp/gettoplist/gettopinfo/orddd" ); //진료일자
  603. var sAcptseqno = model.getValue("/root/temp/gettoplist/gettopinfo/acptseqno"); //등록일련번호
  604. var sOrgorddd = model.getValue("/root/temp/gettoplist/gettopinfo/orgorddd" ); //원진료일자
  605. var sOrddd = model.getValue("/root/temp/gettoplist/gettopinfo/orddd" ); //진료일자
  606. var sParam;
  607. sParam = (sIoflag + "▦" + sPid + "▦" + sIndd + "▦" + sCretno + "▦" + sInstcd + "▦" + sOrddd);
  608. setParameter("condparam", sParam);
  609. */
  610. }
  611. //alert(sOprsrvno +"/" + param);
  612. setParameter("condparam", param);
  613. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  614. var curNurType2Obj = getOpenWindow("SMMNP00200");
  615. if(curNurType2Obj != null){//준비확인이 열려있으면 상단 환자로 재조회2010.01.04 K.J.M
  616. curNurType2Obj.javascript.fFormInit();
  617. }
  618. // 하단 처방상세조회, 수술상세조회
  619. fDscDataView(grd_dscList.row);
  620. }
  621. // --------------------------------------------------
  622. // DSC 메인리스트 입실시각, 퇴실시각 수정된 내용 저장
  623. // --------------------------------------------------
  624. function fSaveDscList(){
  625. if(!checkGridUpdate(grd_dscList)){
  626. messageBox("저장할 자료가 존재하지 않습니다.", "E");
  627. return;
  628. }
  629. //alert(grd_dscList.getUpdateData());
  630. model.removenode("/root/send");
  631. model.removenode("/root/rtndata/dsc");
  632. model.makeNode("/root/send");
  633. model.makeValue("/root/send/dscList",grd_dscList.getUpdateData());
  634. if(submit("TXMNP06001", false) == true) {
  635. //if(getNodesetCnt(model, "/root/rtndata/dsc/dscList") > 0){
  636. // var rtnMsg = messageBox("입실체크 환자에 대한 외래예약 처방 조회를", "Q004");
  637. // var chkcnt = 0 ;
  638. // if("6" == rtnMsg){
  639. // for(var i = 1 ; i <= getNodesetCnt(model, "/root/rtndata/dsc/dscList") ; i++){
  640. // var rtnVO = fGetRsrvPrcp(i);
  641. // if(rtnVO == "E"){
  642. // messageBox("외래 예약처방 승계에 필요한 정보가 누락되어 처리를 실패하였습니다.", "C000");
  643. // }else if(rtnVO == "X"){
  644. // chkcnt++;
  645. // }
  646. // }
  647. // }
  648. //
  649. // if(getNodesetCnt(model, "/root/rtndata/dsc/dscList") == chkcnt){
  650. // messageBox("외래 예약처방이 존재하지 않습니다.", "I000");
  651. // }
  652. //}
  653. fCheckSpecOrdSign();
  654. fDscDataRead(); // 조회
  655. }
  656. }
  657. // --------------------------------------------------
  658. // 외래예약처방 선택 및 저장 화면 호출_20090508추가(ByJA)
  659. // --------------------------------------------------
  660. function fGetRsrvPrcp(pRow){
  661. // 외래예약처방정보 조회
  662. model.removeNodeset("/root/send");
  663. model.makeValue ( "/root/send/cond1", model.getValue("/root/rtndata/dsc/dscList["+pRow+"]/pid") );
  664. model.makeValue ( "/root/send/cond2", getUserInfo("dutplceinstcd"));
  665. model.makeValue ( "/root/send/cond3", getCurrentDate());
  666. submit ( "TRMMO00129", false );
  667. // 외래예약처방정보 존재시 외래예약처방 저장화면 호출
  668. var srcNodeList = model.instances(0).selectNodes ("/root/result/prcplist");
  669. var sParamPid = model.getValue("/root/rtndata/dsc/dscList["+pRow+"]/pid" );
  670. var sParamIndd = model.getValue("/root/rtndata/dsc/dscList["+pRow+"]/indd" );
  671. var sParamCretno = model.getValue("/root/rtndata/dsc/dscList["+pRow+"]/cretno" );
  672. var sParamIoflag = model.getValue("/root/rtndata/dsc/dscList["+pRow+"]/iocls" );
  673. var sParamActcertdrid = model.getValue("/root/rtndata/dsc/dscList["+pRow+"]/chngmedispclid" );
  674. var sParamSexAge = model.getValue("/root/rtndata/dsc/dscList["+pRow+"]/sexage" );
  675. var sParamPatNm = model.getValue("/root/rtndata/dsc/dscList["+pRow+"]/hngnm" );
  676. if ( srcNodeList.length > 0 ) {
  677. if(sParamPid == "" || sParamIndd == "" || sParamCretno == "" || sParamIoflag == "" || sParamActcertdrid == "" || sParamPatNm == "") return "E" ;
  678. setParameter ( "SPMMO18200_pid" , sParamPid );
  679. setParameter ( "SPMMO18200_orddd" , sParamIndd );
  680. setParameter ( "SPMMO18200_cretno" , sParamCretno );
  681. setParameter ( "SPMMO18200_prcpdd" , getCurrentDate() );
  682. setParameter ( "SPMMO18200_prcpinptflag" , "00" ); // 임시로 09임. 추후 번호배정되어 수정해야함.
  683. setParameter ( "SPMMO18200_ioflag" , sParamIoflag );
  684. setParameter ( "SPMMO18200_prcpkindcd" , "00" );
  685. setParameter ( "SPMMO18200_prcpsignflag" , "1" ); // 필요시 적용_처방서명구분(0:인증안됨, 1:의사가 후인증, 2:인증완료(default))
  686. setParameter ( "SPMMO18200_aftcertflag" , "12" ); // 필요시 적용_후인증여부
  687. setParameter ( "SPMMO18200_aftcertdrid" , sParamActcertdrid ); // 필요시 적용_후인증의사ID chngmedispclid
  688. setParameter ( "SPMMO18200_title" , "환자번호: " + sParamPid + " 환자명 : " + sParamPatNm + " S/A : " + sParamSexAge);
  689. //setParameter ( "SPMMO18200_prcpstatcd", "000"); //필요시 적용
  690. //setParameter ( "SPMMO18200_oprsrvno", "0"); //필요시 적용
  691. //setParameter ( "SPMMO18200_prcpauthflag", "0"); //필요시 적용
  692. var xpt = window.screenleft + 200;
  693. var ypt = window.screenTop + 100;
  694. var coord = getRelativeCoordinate ( xpt, ypt );
  695. var mon = coord[0];
  696. xpt = coord[1];
  697. ypt = coord[2];
  698. modal ( "SPMMO18200", mon, xpt, ypt, "SPMMO01000", "/root/result", "/root/result", "", false ); // 외래예약처방 저장화면 호출
  699. clearParameter ( "SPMMO18200_pid" );
  700. clearParameter ( "SPMMO18200_orddd" );
  701. clearParameter ( "SPMMO18200_cretno" );
  702. clearParameter ( "SPMMO18200_prcpdd" );
  703. clearParameter ( "SPMMO18200_prcpinptflag" );
  704. clearParameter ( "SPMMO18200_ioflag" );
  705. clearParameter ( "SPMMO18200_prcpkindcd" );
  706. clearParameter ( "SPMMO18200_prcpsignflag" );
  707. clearParameter ( "SPMMO18200_aftcertflag" );
  708. clearParameter ( "SPMMO18200_aftcertdrid" );
  709. return getParameter("SPMMO18200_rtnyn");
  710. }else{
  711. return "X";
  712. }
  713. }
  714. // --------------------------------------------------
  715. // 그리드 수정여부 확인
  716. // --------------------------------------------------
  717. function checkGridUpdate(grid)
  718. {
  719. var uData = grid.getUpdateDataXml("update");
  720. if (uData=="")
  721. return false;
  722. else
  723. return true;
  724. }
  725. // --------------------------------------------------
  726. // 리스트 출력
  727. // --------------------------------------------------
  728. function fPrntList(){
  729. /*
  730. var opcnfmdd = model.getValue("/root/main/dsc/dscList[1]/opcnfmdd");
  731. if (opcnfmdd == ""){
  732. messageBox("조회가 되지", "E007");
  733. return;
  734. }
  735. */
  736. var pGrd = grd_dscList;
  737. if (pGrd.rows <= 1){
  738. messageBox("조회가 되지", "E007");
  739. return;
  740. }
  741. model.removenode("/root/send");
  742. model.makeNode("/root/send");
  743. model.makeNode("/root/send/dsc");
  744. model.copyNode("/root/send/dsc","/root/main/dsc");
  745. exeReportPreview("RPMNP06000","XMLSTR");
  746. }
  747. // --------------------------------------------------
  748. // 엑셀 출력
  749. // --------------------------------------------------
  750. function fPrntExcl(){
  751. var opcnfmdd = model.getValue("/root/main/dsc/dscList[1]/opcnfmdd");
  752. if (opcnfmdd == ""){
  753. messageBox("조회가 되지", "E007");
  754. return;
  755. }
  756. var sPrntDD = model.getValue("/root/main/cond/opcnfmdd");
  757. var file = window.fileDialog("save","","true","DSC환자정보_("+sPrntDD+")","xls","All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  758. if(file != "") {
  759. grd_dscList.saveExcel(file);
  760. }
  761. }
  762. // --------------------------------------------------
  763. // dsc메인에서 오른쪽 마우스버튼
  764. // --------------------------------------------------
  765. function fnonmousedown() {
  766. if (model.getValue( "/root/main/dsc/dscList["+grd_dscList.mouseRow+"]/pid")== "") return;
  767. var colnm = grd_dscList.valueMatrix(0, grd_dscList.mouseCol);
  768. var tmpcareinrmdd = model.getValue( "/root/main/dsc/dscList["+grd_dscList.mouseRow+"]/tmpcareinrmdd");
  769. var oppatflagcd = model.getValue( "/root/main/dsc/dscList["+grd_dscList.mouseRow+"]/oppatflagcd");
  770. //20101214_KNUH_Start seqflag 추가
  771. var seqflag = model.getValue( "/root/main/dsc/dscList["+grd_dscList.mouseRow+"]/seqflag"); ;
  772. //20101214_KNUH_End
  773. colnm = colnm.substring(0,2);
  774. var sdschdd1 = model.getValue( "/root/main/dsc/dscList["+grd_dscList.mouseRow+"]/dschdd");
  775. sdschdd1 = sdschdd1.replace("-","");
  776. sdschdd1 = sdschdd1.substring(0,1);
  777. //---(수술환자+angio(수술정보없음)
  778. // if(oppatflagcd=="D"&&colnm== "입실"&&tmpcareinrmdd.substring(0,1)=="-") { // DSC 환자, 입실시각칼럼, 입실시각이 적용되지 않은 경우("-")에만 입실시각 메뉴 나타나도록
  779. // fShowPopupMenu("grd_dscList","/root/main/menuitems/inmenu/item");
  780. // }else {
  781. // fShowPopupMenu("grd_dscList","/root/main/menuitems/grdmenu/item");
  782. // }
  783. if(seqflag == "1") {
  784. if (rdo_dscflag.value == "D") {
  785. //if(colnm== "입실"&&tmpcareinrmdd.substring(0,1)=="-") { // DSC 환자, 입실시각칼럼, 입실시각이 적용되지 않은 경우("-")에만 입실시각 메뉴 나타나도록
  786. if(colnm== "입실") { // DSC 환자, 입실시각칼럼, 입실시각이 적용되지 않은 경우("-")에만 입실시각 메뉴 나타나도록
  787. fShowPopupMenu("grd_dscList","/root/main/menuitems/inmenu/item");
  788. }else {
  789. fShowPopupMenu("grd_dscList","/root/main/menuitems/grdmenu/item");
  790. }
  791. } else {
  792. fShowPopupMenu("grd_dscList","/root/main/menuitems/grdmenu/item");
  793. }
  794. }
  795. }
  796. //--------------------------------
  797. // 수술상태에 따른 지시사항 메시지 표시
  798. //--------------------------------
  799. function fMsgDisp() {
  800. var pGrd = grd_dscList;
  801. var pid = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/pid');
  802. var hngnm = model.getValue('/root/main/dsc/dscList[' + grd_dscList.row + ']/hngnm');
  803. var sMsg = "";
  804. if ( pGrd.rows <=1 || pGrd.row <= 0 )
  805. sMsg = "";
  806. var sPath = "/root/main/dsc/dscList[" + pGrd.row + "]";
  807. var opstatcd = model.getValue(sPath + "/opstatcd"); //수술상태값
  808. var prcpcnt = parseInt( model.getValue(sPath + "/iprccount")) + parseInt( model.getValue(sPath + "/oprccount") );//처방갯수
  809. var inflag = model.getValue(sPath + "/careinrmdd");//dsc입실여부
  810. var indschstat = model.getValue(sPath + "/indschstat");//재원상태
  811. inflag = fReplace(inflag, "-","");
  812. inflag = fReplace(inflag, " ","")
  813. //alert( opstatcd + "/" + inflag + "/" + prcpcnt);
  814. //마취취소 + 입실 전 + 진료처방 유
  815. if (opstatcd == '29' && inflag == "" & prcpcnt > 0)
  816. sMsg = hngnm + "(" + pid + ")님은 수술 취소가 되었고 DSC 입실전이며 진료처방이 있습니다. 원무팀에 전화로 '입원정보' 삭제를 요청하십시오.";
  817. //마취취소 + 입실 후 + 진료처방 무 + 퇴원예고없음
  818. if (opstatcd == '29' && inflag != "" & prcpcnt == 0 && indschstat == '')
  819. sMsg = hngnm + "(" + pid + ")님은 수술 취소가 되었고 DSC 입실후이며 진료처방이 없습니다. 원무팀에 전화로 '입원정보' 삭제를 요청하십시오.";
  820. //마취취소 + 입실 후 + 진료처방 무 + 퇴원예고있음 (20080917 dhkim - process 문의필요)
  821. if (opstatcd == '29' && inflag != "" && prcpcnt == 0 && indschstat == 'ⓓ')
  822. sMsg = hngnm + "(" + pid + ")님은 수술 취소가 되었고 DSC 입실후이며 퇴원예고 되었습니다. 퇴실정리를 하십시오.";
  823. //마취취소 + 입실 후 + 진료처방 유 + 퇴원예고없음 (20080917 dhkim - 퇴원예고 메세지 변경)
  824. if (opstatcd == '29' && inflag != "" && prcpcnt > 0 && indschstat == '')
  825. sMsg = hngnm + "(" + pid + ")님은 수술 취소가 되었고 DSC 입실후이며 진료처방이 있습니다. 진료팀에 퇴원예고를 요청하십시오.";
  826. //마취취소 + 입실 후 + 진료처방 유 + 퇴원예고있음 (20080917 dhkim - 퇴원예고 메세지 변경)
  827. if (opstatcd == '29' && inflag != "" && prcpcnt > 0 && indschstat == 'ⓓ')
  828. sMsg = hngnm + "(" + pid + ")님은 수술 취소가 되었고 DSC 입실후이며 진료처방이 있습니다. 퇴실정리를 하십시오.";
  829. if(sMsg != ""){
  830. out_msg.visible = true;
  831. }else{
  832. out_msg.visible = false;
  833. }
  834. out_msg.value = sMsg;
  835. }
  836. //--------------------------------
  837. // 문자열 바꾸기
  838. //--------------------------------
  839. function fReplace(str0,str1,str2) {
  840. str0 += "";
  841. str1 += "";
  842. str2 += "";
  843. while ( str0.indexOf(str1) > -1 ) {
  844. str0 = str0.replace(str1,str2);
  845. }
  846. return str0;
  847. }
  848. //-----------------------------------------
  849. // dsc 퇴실 취소(20080129)
  850. //-----------------------------------------
  851. function fOutCancel() {
  852. var pGrd = grd_dscList;
  853. var sPath = "/root/main/dsc/dscList[" + pGrd.row + "]";
  854. if (pGrd.rows <= 1 || pGrd.row < 1) {
  855. messageBox("자료가 선택되지 않았습니다.", "E999", "");
  856. return;
  857. }
  858. var sChk = model.getValue(sPath + "/indschstat" );
  859. var dschdd = model.getValue(sPath + "/dschdd");
  860. //테스트중....
  861. //alert(sChk+dschdd);
  862. var jPid = model.getValue(sPath + "/pid"); // 등록번호
  863. var jIndd = model.getValue(sPath + "/indd"); // 입원일자
  864. var jCretno = model.getValue(sPath + "/cretno"); // 생성번호
  865. model.removenode("/root/send/judginfo");
  866. model.makeValue("/root/send/judginfo/pid", jPid);
  867. model.makeValue("/root/send/judginfo/indd", jIndd);
  868. model.makeValue("/root/send/judginfo/cretno", jCretno);
  869. submit("TRMNE00113");
  870. var jJudginfo = model.getValue("/root/judginfo/dschjudgprcsstat");
  871. if (jJudginfo != "A") {
  872. messageBox(" 심사상태를 해제하고 퇴실취소를 진행하세요.\r\n\r\n" +
  873. "※ 일과시간 중 - 심사실로 연락, 일과시간 외 - 응급수납으로 연락", "E999");
  874. return;
  875. }
  876. if (sChk == "ⓒ" || (sChk == "◆" && dschdd != '-')) {
  877. //20081218 dhkim
  878. //6시간미만 환자의 경우 심사를 거치지 않고 바로 퇴원수납을 하는 경우가 존재함(안과의경우만해당)
  879. //그리하여 퇴원수납여부를 체크해 퇴원수납된 환자의 경우 퇴실취소를 하지 못하도록 blocking처리 추가
  880. var rcptyn = model.getValue('/root/main/dsc/dscList[' + pGrd.row + ']/rcptyn');
  881. if(rcptyn == 'Y'){
  882. messageBox("이미 퇴원수납된 환자입니다.\r\n원무팀에 퇴원수납취소를 요청하신 후\r\n간호퇴실취소를 진행 하십시오.", "E999", "");
  883. return;
  884. }
  885. //20081219 dhkim
  886. //오늘일자환자가 아니면 취소불가
  887. var indd = model.getValue("/root/main/dsc/dscList[" + pGrd.row + "]/indd");
  888. if(indd != getCurrentDate()){
  889. messageBox("입원일이 오늘인 환자만 간호퇴실취소 할 수 있습니다.", "E999", "");
  890. return;
  891. }
  892. //if(!checkGridUpdate(grd_dscList))
  893. //{
  894. // alert("저장할 자료가 존재하지 않습니다.");
  895. // return;
  896. //}
  897. if (messageBox("간호사퇴원정리완료 취소 ",'Q003',"") != 6) return;
  898. var sHeader = "m▦careinrmdd▦pid▦indd▦cretno▦seqno▩";
  899. var sData = "u" +
  900. "▦" + model.getValue(sPath + "/careinrmdd") +
  901. "▦" + model.getValue(sPath + "/pid") +
  902. "▦" + model.getValue(sPath + "/indd") +
  903. "▦" + model.getValue(sPath + "/cretno") +
  904. "▦" + model.getValue(sPath + "/seqno") + "▩";
  905. model.removenode("/root/send");
  906. model.makeNode("/root/send");
  907. //model.makeValue("/root/send/dscList",grd_dscList.getUpdateData());
  908. model.makeValue("/root/send/dscList",sHeader + sData );
  909. // alert( sHeader + sData);
  910. // return;
  911. if ( submit("TXMNP06002") ) {
  912. fDscDataRead(); // 조회
  913. }
  914. } else {
  915. messageBox("간호퇴실취소할 수 없는 상태입니다.", "E999", "");
  916. }
  917. }
  918. /**
  919. * @group :
  920. * @ver : 2010.11.19
  921. * @by : DARK9258
  922. * @---------------------------------------------------
  923. * @type : function
  924. * @access : public
  925. * @desc : 환자 name라벨 출력
  926. * @param :
  927. * @return :
  928. * @---------------------------------------------------
  929. */
  930. function fPrintNameLabel(pid, hngnm, sexage, oproomcdnm, depthngnm, prncnt, pPort){
  931. ////////////////////////////////////////////////////////////////////////////////////////// 원본_20090522
  932. // //20080905 port찾기
  933. // //port정보 가져오기
  934. // model.removenode('/root/send');
  935. // model.removenode('/root/main/barcdprntsetup');
  936. // model.makenode('/root/main/barcdprntsetup');
  937. // model.makeValue('/root/send/scrnid', 'SMMNP00100');
  938. // if(submit('TRLLC90101')){
  939. // pPort = model.getValue('/root/main/barcdprntsetup/prntsetupinfo/setupinfo[1]/comm02/comm');
  940. // }
  941. //
  942. // if(document.all("CommAX") != null) {
  943. // //바코드 출력 시작
  944. //
  945. // var portOpenTF = "";
  946. //
  947. // // CommPort 설정
  948. // if (pPort == "" || pPort == null || pPort == " ") {
  949. // CommAX.CommPort = "1"; // default port setting
  950. // } else {
  951. // CommAX.CommPort = pPort; //Port 설정
  952. // }
  953. //
  954. // CommAX.Settings = "9600,n,8,1";
  955. //
  956. // portOpenTF = CommAX.PortOpen("true"); //Port Open
  957. //
  958. // if(portOpenTF == "TRUE") {
  959. //
  960. // var iLeft = model.getValue("/root/main/barcdprntsetup/prntsetupinfo/setupinfo/blank/left");
  961. // var iTop = model.getValue("/root/main/barcdprntsetup/prntsetupinfo/setupinfo/blank/top");
  962. //
  963. // if(iLeft == "" || iLeft == "-"){
  964. // iLeft = 0;
  965. // }
  966. // if(iTop == "" || iTop == "-"){
  967. // iTop = 0;
  968. // }
  969. //
  970. // var sData = "^XA^LH0,20";//출력시작점
  971. //
  972. // //출력일
  973. // var prndd = getCurrentDate().substr(0,4) + "/" + getCurrentDate().substr(4,2) + "/" + getCurrentDate().substr(6,2);
  974. // sData += "^CFA,20,20";//bold, height, width
  975. // sData += "^FO10,20";//위치지정(x축, y축)
  976. // sData += "^FD"+ prndd + "^FS";
  977. //
  978. // //수술정보
  979. // var opinfo = oproomcdnm + "R " + depthngnm + " " + pid;
  980. // sData += CommAX.PrtImgOut(20, 60, opinfo, 1, 1);//PrtImgOut(x축, y축, data, width, heigt)
  981. // sData += CommAX.HanImageData();
  982. //
  983. //
  984. // //환자명
  985. // //글자수가 4이상이면 left정렬 4이하이면 center정렬
  986. // var hx = 20; var hy = 105;
  987. // /*var len = hngnm.length;
  988. // if(len > 4){
  989. // hx = 10;
  990. // }else if(len == 4){
  991. // hx = 90;
  992. // }else if(len == 3){
  993. // hx = 120;
  994. // }else if(len == 2){
  995. // hx = 150;
  996. // }else if(len == 1){
  997. // hx = 180;
  998. // }*/
  999. // sData += CommAX.PrtImgOut(hx, hy, hngnm, 2, 2);//PrtImgOut(x축, y축, data, width, heigt)
  1000. // sData += CommAX.HanImageData();
  1001. //
  1002. // //sexage
  1003. // sData += "^CFE,20,20";
  1004. // sData += "^FO300,120";//위치지정
  1005. // sData += "^FD"+ sexage + "^FS";
  1006. //
  1007. // sData += "^PQ"+ prncnt + "^XZ";//출력장수
  1008. //
  1009. // CommAX.SendMessage(sData); // 출력
  1010. // CommAX.PortOpen("false"); // 출력종료
  1011. //
  1012. //
  1013. // } else {
  1014. // messageBox("아래 사항을 확인후 재출력해주십시오."
  1015. // + " \n 1.프린트설정 화면에서 통신유형을 com 으로 선택한 경우 port 번호 확인"
  1016. // + " \n 2.케이블 확인"
  1017. // + " \n 3.먼저 출력중인 바코드 확인(모두 출력된 후 재출력하십시오.)", "I", "");
  1018. // return;
  1019. // }
  1020. // }
  1021. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1022. // SATO용 추가_20090522(ByJA)
  1023. if(prncnt > 0){
  1024. //1. 바코드 라벨 설정값 조회
  1025. var scrnid = "SMMNP06000";
  1026. model.removeNodeset("/root/main/barcdprntsetup");
  1027. fGetBarCodeInfo(scrnid); // CareCom.js
  1028. lzzfMakeBrcdPrntObjHanDo("CommAX");
  1029. //2. 바코드 라벨 환경설정
  1030. var barcdRef = "/root/main/barcdprntsetup/prntsetupinfo/setupinfo";
  1031. var portOpenTF = fSetNursBarcdInfo(barcdRef); // CareCom.js 바코드프린터별 환경설정(Zebra,SATO)
  1032. /** <addon>
  1033. *개발일시: 2010.05.13
  1034. *개발자: 양천덕
  1035. *요청병원: 세종병원
  1036. *요청파트: 간호
  1037. *개발내용: 바코드 출력 형식 변경으로 수정 처리(수술)
  1038. </addon>
  1039. */
  1040. fPrtORPatNameLabel(barcdRef, pid, hngnm, sexage, oproomcdnm, depthngnm, prncnt);
  1041. return;
  1042. }
  1043. }
  1044. function fLabelPrt() {
  1045. group5.visible = true;//출력장수 선택
  1046. }
  1047. // 입실시 선택진료 확인
  1048. function fCheckSpecOrdSign() {
  1049. model.removeNode("/root/main/paminfo");
  1050. model.makeNode("/root/main/paminfo");
  1051. var node = getGlobalVariable("paminfo");
  1052. setCSVToNode("/root/main/paminfo", node);
  1053. var s_pid = model.getValue("/root/main/paminfo/list/pid");;
  1054. var s_ordtype = 'I';
  1055. var s_orddd = model.getValue("/root/main/paminfo/list/indd");
  1056. var s_orddeptcd = model.getValue("/root/main/paminfo/list/orddeptcd");
  1057. var s_orddrid = model.getValue("/root/main/paminfo/list/medispclid");
  1058. var s_fromdd = model.getValue("/root/main/paminfo/list/indd");
  1059. var s_hngnm = model.getValue("/root/main/paminfo/list/hngnm");
  1060. var s_rrgstno1 = model.getValue("/root/main/paminfo/list/rrgstno1");
  1061. var s_rrgstno2 = model.getValue("/root/main/paminfo/list/rrgstno2");
  1062. var s_specordyn = model.getValue("/root/main/paminfo/list/specordyn");
  1063. var sOrddeptcdMsg = model.getValue("/root/main/paminfo/list/orddeptnm");
  1064. var sOrddridMsg = model.getValue("/root/main/paminfo/list/orddrnm");
  1065. //alert(s_pid);
  1066. model.makeValue("/root/send/data26/pid", s_pid); // pid
  1067. model.makeValue("/root/send/data26/ordtype", "I"); // ordtype
  1068. model.makeValue("/root/send/data26/indd", s_orddd);// orddd
  1069. model.makeValue("/root/send/data26/orddd", s_orddd);// orddd
  1070. model.makeValue("/root/send/data26/orddeptcd", s_orddeptcd); // orddeptcd
  1071. model.makeValue("/root/send/data26/medispclid", s_orddrid); // orddrid
  1072. model.makeValue("/root/send/data26/orddrid", s_orddrid); // orddrid
  1073. submit("TRPMI00406");
  1074. if (model.getValue("/root/tempchk/specapp/rgstyn") == "N") {
  1075. var sMsg = "[" + sOrddeptcdMsg + "]" + "[" + sOrddridMsg + "]";
  1076. if( s_specordyn == "Y") {
  1077. if( messageBox(sMsg + " 선택진료 등록이 되어 있지 않습니다. 등록하시겠습니까?", "Q999", "") == 6 ){
  1078. fCallSpecPopUp(s_pid,s_ordtype,s_orddd,s_orddeptcd,s_orddrid,s_fromdd,s_hngnm,s_rrgstno1,s_rrgstno2);
  1079. }
  1080. } else {
  1081. if( messageBox(sMsg + " 진료지원 위임이 되어 있지 않습니다. 위임하시겠습니까?", "Q999", "") == 6 ){
  1082. fCallSpecPopUp(s_pid,s_ordtype,s_orddd,s_orddeptcd,s_orddrid,s_fromdd,s_hngnm,s_rrgstno1,s_rrgstno2);
  1083. }
  1084. }
  1085. } else {
  1086. fCallSpecPopUp(s_pid,s_ordtype,s_orddd,s_orddeptcd,s_orddrid,s_fromdd,s_hngnm,s_rrgstno1,s_rrgstno2);
  1087. }
  1088. }
  1089. /* ------------------------------------------------- */
  1090. /* ------End Of List ------------------------------- */
  1091. /* -------------------------------------------------- */