SMMNP00600.js 67 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522
  1. /*
  2. 마취간호기록(SMMNP08000.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01 2010-03-25 오후 1:26:26 taebum
  5. */
  6. var sAncrPath = "/root/main/lists/mnphancr"; //마취간호기록 XPath
  7. var sAneuPath = "/root/main/lists/mnphaneulist";//마취간호기록 참여자 정보 XPath
  8. //화면 오픈시 이벤트
  9. function fFormInit() {
  10. group7.visible = false;
  11. //통합기초코드 로딩
  12. zbcfGetCodeList(new Array("M0260","M0020","M0270"),
  13. new Array("/root/init/M0260", "/root/init/M0020",
  14. "/root/init/M0270"));
  15. //수술방,마취의,마취간호사 조회
  16. fGetOpenAnstInfo();
  17. model.setValue("/root/HideData/condition/opcnfmdd",getCurrentDate());
  18. addComboItem( "combo2", "전체", "A");
  19. model.setValue("/root/HideData/condition/oproomcd", "A");
  20. model.setValue("/root/HideData/condition/anstmthdcd","01 02");//조회조건 전신,부위로 setting
  21. model.setValue("/root/HideData/condition/opstatcd", "40");//조회조건 수술중 setting
  22. checkbox3.refresh();
  23. checkbox4.refresh();
  24. combo2.refresh();
  25. input7.refresh();
  26. model.removeNodeSet("/root/HideData/opschelists/schelist");
  27. datagrid5.refresh();
  28. model.removeNodeSet("/root/HideData/CareRecLists/carereclist");
  29. datagrid8.refresh();
  30. bbt_save.disabled = true;
  31. btn_rgst_sct.disabled = true;
  32. //2008-08-11 오후 10:15:34 taebum 자동 현재일자 스케줄 조회
  33. fGetNursHardCdInfo("'041','077','REC'", getCurrentDate());
  34. fGetOpScheList();
  35. }
  36. //수술방,마취의,마취간호사 조회
  37. function fGetOpenAnstInfo(){
  38. model.removenode("/root/send/reqdata");
  39. model.makeValue("/root/send/reqdata/searchdd", getCurrentDate());
  40. submit("TRMNP00600");
  41. }
  42. //수술스케줄 조회
  43. function fGetOpScheList(){
  44. var sOpcnfmdd = model.getValue("/root/HideData/condition/opcnfmdd");
  45. var sOproomcd = model.getValue("/root/HideData/condition/oproomcd");
  46. var sOnstmthdcd = model.getValue("/root/HideData/condition/anstmthdcd");
  47. var sOpstatcd = model.getValue("/root/HideData/condition/opstatcd");
  48. var sPid = model.getValue("/root/HideData/condition/pid");
  49. model.removenode("/root/send");
  50. model.makeValue("/root/send/opcnfmdd" , sOpcnfmdd );
  51. model.makeValue("/root/send/oproomcd" , sOproomcd );
  52. model.makeValue("/root/send/anstmthdcd", sOnstmthdcd );
  53. model.makeValue("/root/send/opstatcd" , sOpstatcd );
  54. model.makeValue("/root/send/pid" , sPid );
  55. /*******************************/
  56. //조회내용 초기화
  57. model.resetInstanceNode("/root/HideData/displaypinfo");
  58. model.resetInstanceNode("/root/main/lists/mnphancr");
  59. model.resetInstanceNode("/root/main/lists/timeinfo");
  60. model.removeNodeset("/root/HideData/anstdrlists/anstdrlist");
  61. model.removeNodeset("/root/main/lists/mnphaneulist");
  62. model.removeNodeset("/root/main/lists/mnphansrlist1");
  63. model.removeNodeset("/root/main/lists/mnphansrlist2");
  64. model.removeNodeset("/root/main/lists/mnphanemlist");
  65. model.removeNodeset("/root/HideData/CareRecLists/carereclist");
  66. /********************************/
  67. model.removeNodeset("/root/HideData/opschelists/schelist");
  68. datagrid5.refresh();
  69. if(submit("TRMNP00602")){
  70. //건수 정보 setting
  71. var iTotalRows = datagrid5.rows - datagrid5.fixedrows;
  72. var iTotalAnstCnt = 0;
  73. var iTotalGAnstCnt = 0;
  74. var iTotalPAnstCnt = 0;
  75. var iTotalRecoCnt = 0;
  76. var iTotalNoSignCnt = 0;
  77. var sTmpGcnt = "";
  78. var sTmpPcnt = "";
  79. var sTmpAnstmthdcdnm = "";
  80. var sTmpRecovseqno = "";
  81. var sTmpPkidatetimes = "";//인증일시
  82. if(iTotalRows > 0){
  83. for(var i = 1; i <= iTotalRows; i++){
  84. sTmpGcnt = model.getValue("/root/HideData/opschelists/schelist["+i+"]/gcnt");
  85. sTmpPcnt = model.getValue("/root/HideData/opschelists/schelist["+i+"]/pcnt");
  86. sTmpAnstmthdcdnm = model.getValue("/root/HideData/opschelists/schelist["+i+"]/anstmthdcdnm");
  87. sTmpOprsrvno_ancr = model.getValue("/root/HideData/opschelists/schelist["+i+"]/oprsrvno_ancr");
  88. sTmpPkidatetimes = model.getValue("/root/HideData/opschelists/schelist["+i+"]/pkidatetimems");
  89. if(sTmpGcnt == "1"){
  90. iTotalGAnstCnt++;
  91. }
  92. if(sTmpPcnt == "1"){
  93. iTotalPAnstCnt++;
  94. }
  95. if(sTmpAnstmthdcdnm != "" && sTmpAnstmthdcdnm != "" && sTmpAnstmthdcdnm !="undefined" && sTmpAnstmthdcdnm != "-"){
  96. iTotalAnstCnt++;
  97. }
  98. if((sTmpOprsrvno_ancr != "" && sTmpOprsrvno_ancr != "undeinfed" && sTmpOprsrvno_ancr != null && sTmpOprsrvno_ancr != "-")
  99. && ((sTmpPkidatetimes != "" && sTmpPkidatetimes != "undeinfed" && sTmpPkidatetimes != null && sTmpPkidatetimes != "-"))){
  100. datagrid5.cellstyle("color", i, 0, i, 27) = "#0078FF"; //회복기록작성
  101. }
  102. if(sTmpOprsrvno_ancr != "" && sTmpOprsrvno_ancr != "undeinfed" && sTmpOprsrvno_ancr != null && sTmpOprsrvno_ancr != "-"){
  103. iTotalRecoCnt++;
  104. }
  105. if( (sTmpOprsrvno_ancr != "" && sTmpOprsrvno_ancr != "undeinfed" && sTmpOprsrvno_ancr != null && sTmpOprsrvno_ancr != "-")
  106. && (sTmpPkidatetimes == "" || sTmpPkidatetimes == "undeinfed" || sTmpPkidatetimes == null || sTmpPkidatetimes == "-")){
  107. datagrid5.cellstyle("color", i, 0, i, 27) = "#ff0000"; //미인증
  108. //datagrid5.cellstyle("font", i, 0, i, 27) = "weight";
  109. iTotalNoSignCnt++;
  110. }
  111. }
  112. model.setValue("/root/HideData/schelisttotalinfo/totalanstcnt" , iTotalAnstCnt);
  113. model.setValue("/root/HideData/schelisttotalinfo/totalganstcnt", iTotalGAnstCnt);
  114. model.setValue("/root/HideData/schelisttotalinfo/totalpanstcnt", iTotalPAnstCnt);
  115. model.setValue("/root/HideData/schelisttotalinfo/totalrecocnt" , iTotalRecoCnt);
  116. model.setValue("/root/HideData/schelisttotalinfo/totalnosigncnt" , iTotalNoSignCnt);
  117. output2.refresh();
  118. output3.refresh();
  119. output6.refresh();
  120. output9.refresh();
  121. output17.refresh();
  122. }
  123. }
  124. }
  125. //수술스케줄 환자 더블 클릭 시
  126. function fOnDoulbeClickScheList(row){
  127. var iCurrentRow = 0;
  128. if(row < 1)
  129. iCurrentRow = datagrid5.row;
  130. else
  131. iCurrentRow = row;
  132. if(iCurrentRow < 1){
  133. return false;
  134. }
  135. var iOpStat = model.getValue("/root/HideData/opschelists/schelist["+iCurrentRow+"]/opstatnm");
  136. if(iOpStat != "대기" && iOpStat != "수술" && iOpStat != "회복" && iOpStat != "종료" ){
  137. messageBox("기록을 작성할 수 없는 환자 입니다. 진행상태를 확인하시기 바랍니다.","");
  138. return false;
  139. }
  140. group7.visible = true;
  141. //===================================================
  142. //추후 마감관련 추가 필요
  143. //===================================================
  144. //----------------------------------
  145. //상단 정보 올리기
  146. var sPath = "/root/HideData/opschelists/schelist";
  147. var sPatFlag = model.getValue(sPath+"["+iCurrentRow+"]/oppatflagcd");
  148. if (sPatFlag == "") {
  149. sPatFlag = "I";
  150. }
  151. var param = "T▦" // 01 O:외래, I:입원구분, T:수술예약
  152. + model.getValue(sPath+"["+iCurrentRow+"]/pid" ) + "▦" // 02 등록번호
  153. + model.getValue(sPath+"["+iCurrentRow+"]/opcnfmdd" ) + "▦" // 03 수술시작일자
  154. + model.getValue(sPath+"["+iCurrentRow+"]/cretno" ) + "▦" // 04 cretno(없는 경우 ""로 처리)
  155. + model.getValue(sPath+"["+iCurrentRow+"]/instcd" ) + "▦" // 05 기관코드
  156. + model.getValue(sPath+"["+iCurrentRow+"]/perfdeptcd" ) + "▦" // 06 집도과부서
  157. + model.getValue(sPath+"["+iCurrentRow+"]/perfdrid" ) + "▦" // 07 집도의ID
  158. + sPatFlag + "▦" // 08 환자구분
  159. + "F▦" // 09 F -처리구분 무조건 F로 설정
  160. + model.getValue(sPath+"["+iCurrentRow+"]/oprsrvno" ) + "▦" // 10 수술예약번호
  161. + model.getValue(sPath+"["+iCurrentRow+"]/ophistno" ) + "▦" // 11 수술이력번호
  162. + model.getValue(sPath+"["+iCurrentRow+"]/opcnfmdd" ) + "▦"; // 12 조회일자 2007-09-13 오지훈 추가...
  163. setParameter("condparam", param);
  164. //modal("SPMMO08900"); // modal("SPMMO08900", "1", "5","25");
  165. modal("SPMMO08900", 1, "", "", "", "SPMMO08900", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  166. //----------------------------------
  167. //선택한 수술예약번호 setting
  168. model.setValue("/root/HideData/condition/oprsrvno", model.getValue(sPath+"["+iCurrentRow+"]/oprsrvno"));
  169. //환자 정보 setting(스케쥴 및 환자 수술정보)
  170. model.setValue("/root/HideData/displaypinfo/pinfo1", model.getValue(sPath+"["+iCurrentRow+"]/opcnfmdate"));
  171. model.setValue("/root/HideData/displaypinfo/pinfo2", model.getValue(sPath+"["+iCurrentRow+"]/oppatflagnm")+ " " +
  172. model.getValue(sPath+"["+iCurrentRow+"]/hngnm") + " " +
  173. model.getValue(sPath+"["+iCurrentRow+"]/sa") + " " +
  174. model.getValue(sPath+"["+iCurrentRow+"]/pid") );
  175. model.setValue("/root/HideData/displaypinfo/pinfo3", model.getValue(sPath+"["+iCurrentRow+"]/oproomnm") + " " +
  176. model.getValue(sPath+"["+iCurrentRow+"]/perfdeptnm") + " " +
  177. model.getValue(sPath+"["+iCurrentRow+"]/perfdrnm") + " " +
  178. model.getValue(sPath+"["+iCurrentRow+"]/dranstmthdcdnm") );
  179. output24.refresh();
  180. output25.refresh();
  181. output26.refresh();
  182. //마취간호기록 정보 조회
  183. fGetAnstNurRecInfo(row);
  184. }
  185. //Menu 오른쪽 클릭시 이벤트
  186. function fShowMenu(pData){
  187. var Idx = Number(pData);
  188. var iCurrentRow = datagrid5.row;
  189. if(iCurrentRow < 1){
  190. return;
  191. }
  192. var sPath = "/root/HideData/opschelists/schelist";
  193. switch(Idx) {
  194. case 1 :
  195. /*
  196. SMMNR00900_Param
  197. pid▦indd▦cretno▦instcd▦openflag▩ ==> 등록번호▦입원일자▦생성번호▦기관코드▦화면호출구분▩
  198. //sParamInfo = "pid▦indd▦cretno▦instcd▩31263▦20080822▦1▦012▩"
  199. */
  200. var iCurrentRow = datagrid5.row;
  201. var sTmpPid = model.getValue("/root/HideData/opschelists/schelist[" + iCurrentRow + "]/pid");
  202. var sTmpIndd = model.getValue("/root/HideData/opschelists/schelist[" + iCurrentRow + "]/indd");
  203. var sTmpCretno = model.getValue("/root/HideData/opschelists/schelist[" + iCurrentRow + "]/cretno");
  204. var sTmpInrmdd = getCurrentDate();
  205. var sTmpInrmtm = getCurrentTime().substr(0, 4);
  206. var sTmpRecodeptcd = "";
  207. var sTmpInstcd = getUserInfo("dutplceinstcd");
  208. //2008-09-30 오전 2:56:49 taebum 회복실관련 임상관찰 연동 추가사항
  209. //setParameter("SMMNR00900_Param", "pid▦indd▦cretno▦instcd▩"+sTmpPid+"▦"+sTmpIndd+"▦"+sTmpCretno+"▦"+sTmpInstcd+"▩");
  210. setParameter("SMMNR00900_SpParam", "pid▦indd▦cretno▦instcd▦inrmdd▦dutplcecd▩"+sTmpPid+"▦"+sTmpIndd+"▦"+sTmpCretno+"▦"+sTmpInstcd+"▦"+sTmpInrmdd+sTmpInrmtm+"▦"+sTmpRecodeptcd+"▩");
  211. //modal("SMMNR00900");
  212. open("SMMNR00900", "", "100", "100", "SMMNR00900", "", "");
  213. //setParameter("SMMNR00900_Param", "");
  214. break;
  215. case 2 :
  216. var pid = model.getValue("/root/HideData/opschelists/schelist[" + iCurrentRow + "]/pid");
  217. var prcpnm = model.getValue("/root/HideData/opschelists/schelist[" + iCurrentRow + "]/opcdnm");
  218. var kind = "5";//기타
  219. var arvposcd = getPatientInfoDetail("wardcd");//병동코드
  220. var rsrvdt = "";
  221. //var startposcd = "3073300000";//회복실 부서코드
  222. var startposcd = getUserInfo("dutplcecd");
  223. fInsTranCallOP(pid, prcpnm, kind, rsrvdt, arvposcd, startposcd);
  224. break;
  225. case 16: //입실취소 구현해야함.
  226. fInOutRoomCancel(); // 마취간호기록 입실취소
  227. break;
  228. default :
  229. alert("등록된 메뉴정보가 존재하지 않습니다.");
  230. break;
  231. }
  232. }
  233. /**
  234. * 마취간호기록 입실 취소 기능
  235. * 2010-04-08 오후 2:05:48 taebum 추후 개발요청할 수 있음.
  236. *
  237. */
  238. function fInOutRoomCancel(){
  239. /*
  240. 입실 취소 하려면...
  241. 현재 서버의 수술진행상태가 수술일 경우 종료이상일 경우 취소 불가.
  242. EMR.MNPHANCR의 기록이 임시저장일 경우에만 DELETE 로직을 수행해야 함.
  243. EMR.MNPHANCR의 기록삭제시 MNPHANSR, MNPHANEU, MNPHANEM을 함께 삭제 처리 해야 함.
  244. 삭제 처리후 OPRS의 수술진행상태를 대기(30)상태로 update한다.
  245. */
  246. var sOprsrvno = model.getValue(sAncrPath+"/oprsrvno");
  247. model.removenode("/root/send");
  248. model.makeValue("/root/send/reqdata/oprsrvno", sOprsrvno);
  249. //서브밋 추가 하세요~
  250. return;
  251. }
  252. /**
  253. * @group :
  254. * @ver : 2008.08.26
  255. * @by : 김 진 명
  256. * @---------------------------------------------------
  257. * @type : function
  258. * @access : public
  259. * @desc : 수술실 이송요원 호출 함수
  260. * @param :
  261. * @return :
  262. * @---------------------------------------------------
  263. */
  264. function fInsTranCallOP(pid, prcpnm, kind, rsrvdt, arvposcd, startposcd){
  265. setParameter("status", "OP");
  266. setParameter("pid", pid);
  267. setParameter("prcpnm", prcpnm);
  268. setParameter("kind", kind);
  269. setParameter("rsrvdt", rsrvdt);
  270. setParameter("arvposcd", arvposcd);
  271. setParameter("startposcd", startposcd);
  272. modal("SMMNB01810" ,"", "300", "150", "SMMNB01810", "", "");
  273. }
  274. /**
  275. * @group :
  276. * @ver : 2010-03-26 오후 12:18:01
  277. * @by : taebum
  278. * @---------------------------------------------------
  279. * @type : function
  280. * @access : public
  281. * @desc : 마취간호기록 정보 조회
  282. * @param : row 현재 선택된 행
  283. * @return :
  284. * @---------------------------------------------------
  285. */
  286. function fGetAnstNurRecInfo(row){
  287. var iCurrentRow = 0;
  288. if(row < 1)
  289. iCurrentRow = datagrid5.row;
  290. else
  291. iCurrentRow = row;
  292. if(iCurrentRow < 1){
  293. return false;
  294. }
  295. //마취간호기록은 마취기록과 동일하게 주수술에 대한 기록만 함.
  296. //2010-03-26 오후 2:22:07 여의도 마취과 전정숙 UM
  297. var sMainOprsrvno = model.getValue("/root/HideData/opschelists/schelist["+iCurrentRow+"]/mainoprsrvno");
  298. model.removenode("/root/send");
  299. model.makeValue("/root/send/reqdata/mainoprsrvno", sMainOprsrvno);
  300. if(submit("TRMNP00603")){
  301. var sSignkey = model.getValue(sAncrPath+"/pkidatetimems");
  302. if(sSignkey != null && sSignkey != "" && sSignkey != "undifined"){
  303. bbt_save.disabled = true;
  304. btn_rgst_sct.disabled = false;
  305. }else{
  306. bbt_save.disabled = false;
  307. btn_rgst_sct.disabled = false;
  308. }
  309. var sInrmdttm = model.getValue(sAncrPath+"/inrmdttm");//입실저장일시
  310. var sOutrmdttm = model.getValue(sAncrPath+"/outrmdttm");//퇴실저장일시
  311. var sRecinuserid = model.getValue(sAncrPath+"/recinuserid"); //입실저장 최초등록자ID
  312. var sRecoutuserid = model.getValue(sAncrPath+"/recoutuserid"); //퇴실저장 최초등록자ID
  313. var sTmpStat = model.getValue(sAncrPath+"/recstat");
  314. if(sTmpStat == "u"){
  315. if( sInrmdttm != "" &&
  316. sInrmdttm != null &&
  317. sInrmdttm != "undefined" &&
  318. sInrmdttm != "undefined" &&
  319. sInrmdttm != "" &&
  320. sInrmdttm != null &&
  321. sRecinuserid != "" ){
  322. inp_inrmdt.attribute("color") = "#0000ff";
  323. inp_inrmtm.attribute("color") = "#0000ff";
  324. }
  325. if( sOutrmdttm != "" &&
  326. sOutrmdttm != null &&
  327. sOutrmdttm != "undefined" &&
  328. sOutrmdttm != "undefined" &&
  329. sOutrmdttm != "" &&
  330. sOutrmdttm != null &&
  331. sRecoutuserid != "" ){
  332. inp_outrmdt.attribute("color") = "#0000ff";
  333. inp_outrmtm.attribute("color") = "#0000ff";
  334. }
  335. }else{
  336. //장비사용여부 해당없음 체크
  337. model.setValue("/root/main/lists/mnphancr/eqmtuseyn", "Y");
  338. chk_eqmtuseyn.refresh();
  339. inp_inrmdt.attribute("color") = "#000000";
  340. inp_inrmtm.attribute("color") = "#000000";
  341. inp_outrmdt.attribute("color") = "#000000";
  342. inp_outrmtm.attribute("color") = "#000000";
  343. }
  344. //*수술참여자 마취의사 정보 생성(마취기록에서 작성한 마취의 정보)
  345. fMakeAnstDrList();
  346. //간호기록 TypeII 조회
  347. CareRecList_Read();
  348. //장비사용여부 버튼 활성화
  349. fOnClickEquseYnCheck();
  350. //마취참여자 의사 마취의 콤보에 셋팅
  351. if(sTmpStat == "i"){
  352. model.setValue(sAncrPath + "/anstdrid", model.getValue("/root/HideData/anstdrlists/anstdrlist/anstdrid"));
  353. }
  354. //마취의 데이터가 존재할 경우 마취방법 기준자료를 조회한다.
  355. if(model.getValue("/root/main/lists/mnphancr/anstdrid") != ""){
  356. fValueChangedAnstDoctCombo();
  357. }
  358. var sTripanstflag = model.getValue("/root/main/lists/timeinfo/tripanstflag"); //출장마취여부
  359. var sPainanstflag = model.getValue("/root/main/lists/timeinfo/painanstflag"); //통증마취여부
  360. var sUserInstcd = getUserInfo("dutplceinstcd");
  361. //출장마취 또는 통증마취일 경우 입/퇴실 저장버튼 활성화.
  362. //서울성모, 성빈센트인 경우는 통증마취(집도과가 마취통증의학과)인 경우가 없으므로 수술간호기록에서 연동함.
  363. if(sTripanstflag == "Y" ||
  364. (sPainanstflag == "Y" && (model.getValue("/root/code/codeinfo/codelist[cdgrupid = '077' and supcdid = '02' and cdid = '"+ sUserInstcd +"']/cdid")
  365. || model.getValue("/root/code/codeinfo/codelist[cdgrupid = '077' and supcdid = '03' and cdid = '"+ sUserInstcd +"']/cdid")
  366. || model.getValue("/root/code/codeinfo/codelist[cdgrupid = '077' and supcdid = '05' and cdid = '"+ sUserInstcd +"']/cdid")))){
  367. inp_inrmdt.disabled = false;
  368. inp_inrmtm.disabled = false;
  369. inp_outrmdt.disabled = false;
  370. inp_outrmtm.disabled = false;
  371. button12.disabled = false;
  372. button14.disabled = false;
  373. bbt_inroom.disabled = false;
  374. bbt_outroom.disabled = false;
  375. combo1.disabled = false;
  376. img2.disabled = false;
  377. }else{
  378. //출장마취 또는 통증마취가 아닌 경우 수술간호기록의 입/퇴실 저장일시를 조회하여 보여주며, 입/퇴실 저장 버튼 및 입력기능 비활성화
  379. //수술간호기록에 저장된 입실일/퇴실일/퇴실장소 정보 set
  380. model.setValue("/root/main/lists/mnphancr/inrmdd" , model.getValue("/root/main/lists/timeinfo/opcrinrmdd"));
  381. model.setValue("/root/main/lists/mnphancr/inrmtm" , model.getValue("/root/main/lists/timeinfo/opcrinrmtm"));
  382. model.setValue("/root/main/lists/mnphancr/outrmdd" , model.getValue("/root/main/lists/timeinfo/opcroutrmdd"));
  383. model.setValue("/root/main/lists/mnphancr/outrmtm" , model.getValue("/root/main/lists/timeinfo/opcroutrmtm"));
  384. model.setValue("/root/main/lists/mnphancr/outplcecode" , model.getValue("/root/main/lists/timeinfo/opcropoutrmplcecd"));
  385. inp_inrmdt.refresh();
  386. inp_inrmtm.refresh();
  387. inp_outrmdt.refresh();
  388. inp_outrmtm.refresh();
  389. combo1.refresh();
  390. model.setValue("/root/main/lists/mnphancr/outplcenm",combo1.label);
  391. ipt_opoutrmplcenm.refresh();
  392. inp_inrmdt.disabled = true;
  393. inp_inrmtm.disabled = true;
  394. inp_outrmdt.disabled = true;
  395. inp_outrmtm.disabled = true;
  396. combo1.disabled = true;
  397. ipt_opoutrmplcenm.disabled = true;
  398. button12.disabled = true;
  399. button14.disabled = true;
  400. bbt_inroom.disabled = true;
  401. bbt_outroom.disabled = true;
  402. img2.disabled = true;
  403. }
  404. }
  405. group7.visible = false;
  406. }
  407. /**
  408. * 수술참여자 마취의사 정보 생성(마취기록에서 작성한 마취의 정보)
  409. */
  410. function fMakeAnstDrList(){
  411. model.removeNodeSet("/root/HideData/anstdrlists");
  412. datagrid2.refresh();
  413. var AnstGridXpath = "/root/HideData/anstdrlists/anstdrlist";
  414. var sAnstDri1 = model.getValue("/root/main/lists/timeinfo/anstdrid1");
  415. var sAnstDri2 = model.getValue("/root/main/lists/timeinfo/anstdrid2");
  416. var sAnstDri3 = model.getValue("/root/main/lists/timeinfo/anstdrid3");
  417. var iGridCnt = 0;
  418. if(sAnstDri1 != null && sAnstDri1 != "" && sAnstDri1 != "undefined"){
  419. iGridCnt++;
  420. model.makeValue(AnstGridXpath+"["+iGridCnt+"]/displayanstdrid",sAnstDri1);
  421. model.makeValue(AnstGridXpath+"["+iGridCnt+"]/anstdrid" ,sAnstDri1);
  422. }
  423. if(sAnstDri2 != null && sAnstDri2 != "" && sAnstDri2 != "undefined"){
  424. iGridCnt++;
  425. model.makeValue(AnstGridXpath+"["+iGridCnt+"]/displayanstdrid",sAnstDri2);
  426. model.makeValue(AnstGridXpath+"["+iGridCnt+"]/anstdrid" ,sAnstDri2);
  427. }
  428. if(sAnstDri3 != null && sAnstDri3 != "" && sAnstDri3 != "undefined"){
  429. iGridCnt++;
  430. model.makeValue(AnstGridXpath+"["+iGridCnt+"]/displayanstdrid",sAnstDri3);
  431. model.makeValue(AnstGridXpath+"["+iGridCnt+"]/anstdrid" ,sAnstDri3);
  432. }
  433. datagrid2.refresh();
  434. }
  435. //저장 버튼 클릭 시 이벤트(임시:U, 확정:C, 입실:I, 퇴실:O)
  436. function fSave(sFlag){
  437. var sTripanstflag = model.getValue("/root/main/lists/timeinfo/tripanstflag"); //출장마취여부
  438. var sPainanstflag = model.getValue("/root/main/lists/timeinfo/painanstflag"); //통증마취여부
  439. //마취간호기록 Header정보
  440. var sAncrInsHeader = "status▦"+
  441. "oprsrvno▦pid▦ioflag▦orddd▦cretno▦"+
  442. "inrmdttm▦outrmdttm▦outplcecode▦outplcenm▦recinuserid▦"+
  443. "recindttm▦saveindttm▦recoutuserid▦recoutdttm▦saveoutdttm▦"+
  444. "patopinsndsmsid▦patopoutsndsmsid▦eqmtuseyn▦umbilicalcordligdt▦umbilicalcordligyn▦"+
  445. "prevantibioticsyn▦ansafeconfirmid▦anpatsafeconfirmid▦remfact▦deptremark▦"+
  446. "pkidatetimems▦saveflag▦hngnm▦org_recinuserid▦org_recoutuserid▦anstccrtno▦org_anstccrtno▩";
  447. //입실저장일 경우
  448. if(sFlag == "I"){
  449. if(inp_inrmtm.value == "" || (inp_inrmtm.value.replace(' ', '')).length < 4){
  450. messageBox("입실시간을 입력 하시기 바랍니다.", "I000");
  451. model.setFocus("inp_inrmtm");
  452. return;
  453. }else if(inp_inrmdt.value == "" || (inp_inrmdt.value.replace(' ', '')).length < 8){
  454. messageBox("입실일자를 입력 하시기 바랍니다.", "I000");
  455. model.setFocus("inp_inrmdt");
  456. return;
  457. }else{
  458. //환자 도착시간보다 입실시간이 작을 경우 메세지 호출 추가
  459. //var sPatArriveDt = model.getValue("/root/main/MnphopcrData/MnphopcrList/patarrvdt") +
  460. // model.getValue("/root/main/MnphopcrData/MnphopcrList/patarrvtm");
  461. //var sInroomDt = model.getValue("/root/init/workinst/datetimedata/patinroomdd")+
  462. // model.getValue("/root/init/workinst/datetimedata/patinroomhh");
  463. //if(sPatArriveDt > sInroomDt){
  464. // messageBox("환자도착 시간을 확인 하시기 바랍니다.", "I000");
  465. // model.setFocus("inp_patinroomhh");
  466. // return;
  467. //}
  468. }
  469. //퇴실저장일 경우
  470. }else if(sFlag == "O"){
  471. if(inp_inrmdt.value == "" || (inp_inrmdt.value.replace(' ', '')).length < 8){
  472. messageBox("입실일자를 입력 하시기 바랍니다.", "I000");
  473. model.setFocus("inp_inrmdt");
  474. return;
  475. }
  476. if(inp_inrmtm.value == "" || (inp_inrmtm.value.replace(' ', '')).length < 4){
  477. messageBox("입실시간을 입력 하시기 바랍니다.", "I000");
  478. model.setFocus("inp_inrmtm");
  479. return;
  480. }
  481. if(model.getValue(sAncrPath + "/org_recinuserid") == ""){
  482. messageBox("입실일시를 저장 하시기 바랍니다.", "I000");
  483. model.setFocus("inp_inrmdt");
  484. return;
  485. }
  486. if(inp_outrmdt.value == "" || (inp_outrmdt.value.replace(' ', '')).length < 8){
  487. messageBox("퇴실일자를 입력 하시기 바랍니다.", "I000");
  488. model.setFocus("inp_outrmdt");
  489. return;
  490. }
  491. if(inp_outrmtm.value == "" || (inp_outrmtm.value.replace(' ', '')).length < 4 ){
  492. messageBox("퇴실시간을 입력 하시기 바랍니다.", "I000");
  493. model.setFocus("inp_outrmtm");
  494. return;
  495. }
  496. if(inp_inrmdt.value + inp_inrmtm.value > inp_outrmdt.value + inp_outrmtm.value ){
  497. messageBox("퇴실일시가 입실일시보다 이전입니다. 퇴실일시를 확인 하십시오.", "I000");
  498. model.setFocus("inp_outrmtm");
  499. return;
  500. }
  501. //=========================================================================================
  502. //2008-06-27 오후 3:42:06 taebum add 추가 요구사항
  503. if(combo1.value == "" || combo1.value == "undefined" || combo1.value == null || combo1.value == "00" || combo1.value == "-"){
  504. messageBox("퇴실장소를 입력 하시기 바랍니다.", "I000");
  505. model.setFocus("combo1");
  506. return;
  507. }
  508. if (window.alert("퇴실 저장 하시겠습니까?." ,"퇴실장소 확인", 1 | 32) != 1){
  509. messageBox("퇴실 저장이 취소 되었습니다.", "I000");
  510. return;
  511. }
  512. //인증저장일 경우
  513. }else if(sFlag == "C"){
  514. if(inp_inrmdt.value == "" || (inp_inrmdt.value.replace(' ', '')).length < 8){
  515. messageBox("입실일자를 입력 하시기 바랍니다.", "I000");
  516. model.setFocus("inp_inrmdt");
  517. return;
  518. }
  519. if(inp_inrmtm.value == "" || (inp_inrmtm.value.replace(' ', '')).length < 4){
  520. messageBox("입실시간을 입력 하시기 바랍니다.", "I000");
  521. model.setFocus("inp_inrmtm");
  522. return;
  523. }
  524. if(inp_outrmdt.value == "" || (inp_outrmdt.value.replace(' ', '')).length < 8){
  525. messageBox("퇴실일자를 입력 하시기 바랍니다.", "I000");
  526. model.setFocus("inp_outrmdt");
  527. return;
  528. }
  529. if(inp_outrmtm.value == "" || (inp_outrmtm.value.replace(' ', '')).length < 4 ){
  530. messageBox("퇴실시간을 입력 하시기 바랍니다.", "I000");
  531. model.setFocus("inp_outrmtm");
  532. return;
  533. }
  534. if(inp_inrmdt.value + inp_inrmtm.value > inp_outrmdt.value + inp_outrmtm.value ){
  535. messageBox("퇴실일시가 입실일시보다 이전입니다. 퇴실일시를 확인 하십시오.", "I000");
  536. model.setFocus("inp_outrmtm");
  537. return;
  538. }
  539. if(combo1.value == "" || combo1.value == "undefined" || combo1.value == null || combo1.value == "00" || combo1.value == "-"){
  540. messageBox("퇴실장소를 입력 하시기 바랍니다.", "I000");
  541. model.setFocus("combo1");
  542. return;
  543. }
  544. //출장마취 또는 통증마취일 경우(서울성모, 빈센트의 경우 마취과로 의뢰를 해도 통증마취가 아님 유효성 체크에서 제외시킴. K. J. M 2010.07.12)
  545. if(sTripanstflag == "Y" ||
  546. (sPainanstflag == "Y" && (model.getValue("/root/code/codeinfo/codelist[cdgrupid = '077' and supcdid = '02' and cdid = '"+ getUserInfo("dutplceinstcd") +"']/cdid")
  547. || model.getValue("/root/code/codeinfo/codelist[cdgrupid = '077' and supcdid = '03' and cdid = '"+ getUserInfo("dutplceinstcd") +"']/cdid")
  548. || model.getValue("/root/code/codeinfo/codelist[cdgrupid = '077' and supcdid = '05' and cdid = '"+ getUserInfo("dutplceinstcd") +"']/cdid")))){
  549. if(model.getValue(sAncrPath + "/org_recinuserid") == ""){
  550. messageBox("입실일시를 저장 하시기 바랍니다.", "I000");
  551. model.setFocus("inp_inrmdt");
  552. return;
  553. }
  554. if(model.getValue(sAncrPath + "/org_recoutuserid") == ""){
  555. messageBox("퇴실일시를 저장 하시기 바랍니다.", "I000");
  556. model.setFocus("inp_outrmdt");
  557. return;
  558. }
  559. }
  560. }
  561. model.removenode("/root/send");
  562. var sAncrInsData = fMakeAncrData(sFlag);
  563. model.makeValue("/root/send/reqdata/mnphancr", sAncrInsHeader+sAncrInsData); //마취간호기록 정보
  564. if(!fValidCheckAneu()){
  565. return;
  566. }
  567. model.makeValue("/root/send/reqdata/mnphaneu", datagrid3.getUpdateData());//마취간호기록 참여자 정보
  568. model.makeValue("/root/send/reqdata/mnphansrlist1", datagrid4.getUpdateData());//마취안전 점검 정보
  569. model.makeValue("/root/send/reqdata/mnphansrlist2", datagrid6.getUpdateData());//마취환자 안전관리 점검 정보
  570. model.makeValue("/root/send/reqdata/mnphanemlist", grd_opeqmtlist.getUpdateData());//마취간호기록-장비사용정보
  571. if(submit("TXMNP00601")){
  572. //수술 스케줄 재조회
  573. fGetOpScheList();
  574. //해당 환자 저장 데이터 재조회
  575. var selRow = datagrid5.findRow(model.getValue("/root/HideData/condition/oprsrvno"), 1, datagrid5.colRef("oprsrvno"));
  576. datagrid5.row = selRow;
  577. fOnDoulbeClickScheList(selRow);
  578. }
  579. }
  580. //마취간호기록 저장 데이터생성
  581. // sFlag - 임시:U, 확정:C, 입실:I, 퇴실:O
  582. function fMakeAncrData(sFlag){
  583. /*
  584. //데이터 정렬 순서
  585. var sAncrInsHeader = "status▦"+
  586. "oprsrvno▦pid▦ioflag▦orddd▦cretno▦"+
  587. "inrmdttm▦outrmdttm▦outplcecode▦outplcenm▦recinuserid▦"+
  588. "recindttm▦saveindttm▦recoutuserid▦recoutdttm▦saveoutdttm▦"+
  589. "patopinsndsmsid▦patopoutsndsmsid▦eqmtuseyn▦umbilicalcordligdt▦umbilicalcordligyn▦"+
  590. "prevantibioticsyn▦ansafeconfirmid▦anpatsafeconfirmid▦remfact▦deptremark▦"+
  591. "pkidatetimems▦saveflag▦hngnm▦org_recinuserid▦org_recoutuserid▦anstccrtno▦org_anstccrtno▩";
  592. */
  593. var sResultData = "";
  594. var sRecStat = model.getValue(sAncrPath+"/recstat");
  595. var sPid = model.getValue(sAncrPath+"/pid");
  596. var sOprsrvno = model.getValue(sAncrPath+"/oprsrvno");
  597. var sIoflag = model.getValue(sAncrPath+"/ioflag");
  598. var sOrddd = model.getValue(sAncrPath+"/orddd");
  599. var sCretno = model.getValue(sAncrPath+"/cretno");
  600. var sInrmdttm = model.getValue(sAncrPath+"/inrmdd")
  601. +model.getValue(sAncrPath+"/inrmtm");
  602. var sOutrmdttm = model.getValue(sAncrPath+"/outrmdd")
  603. +model.getValue(sAncrPath+"/outrmtm");
  604. var sOutplcecode = model.getValue(sAncrPath+"/outplcecode");
  605. var sOutplcenm = model.getValue(sAncrPath+"/outplcenm");
  606. var sRecinuserid = "";
  607. var sRecindttm = "";
  608. var sSaveindttm = "";
  609. var sRecoutuserid = "";
  610. var sRecoutdttm = "";
  611. var sSaveoutdttm = "";
  612. //입실저장
  613. if(sFlag == "I"){
  614. //입실저장ID가 없을 경우(처음 입실저장시)
  615. if(sRecinuserid == "" || sRecinuserid == null || sRecinuserid == "undefined"){
  616. sRecinuserid = getUserInfo("userid");
  617. sRecindttm = getCurrentDate()+ getCurrentTime();
  618. }else{
  619. sRecinuserid = model.getValue(sAncrPath+"/recinuserid");
  620. sRecindttm = model.getValue(sAncrPath+"/recindttm");
  621. }
  622. sSaveindttm = getCurrentDate()+ getCurrentTime();
  623. //퇴실저장
  624. }else if(sFlag == "O"){
  625. //퇴실저장ID가 없을 경우(처음 퇴실저장시)
  626. if(sRecoutuserid == "" || sRecoutuserid == null || sRecoutuserid == "undefined"){
  627. sRecoutuserid = getUserInfo("userid");
  628. sRecoutdttm = getCurrentDate()+ getCurrentTime();
  629. }else{
  630. sRecoutuserid = model.getValue(sAncrPath+"/recoutuserid");
  631. sRecoutdttm = model.getValue(sAncrPath+"/recoutdttm");
  632. }
  633. sSaveoutdttm = getCurrentDate()+ getCurrentTime();
  634. }else{
  635. //인증관련
  636. var CertFlag = true;
  637. if (sFlag == "C") {
  638. CertFlag = fSignProcessSet();
  639. }
  640. if (CertFlag == false) return; // 인증실패
  641. sRecinuserid = model.getValue(sAncrPath+"/recinuserid");
  642. sRecindttm = model.getValue(sAncrPath+"/recindttm");
  643. sSaveindttm = model.getValue(sAncrPath+"/saveindttm");
  644. sRecoutuserid = model.getValue(sAncrPath+"/recoutuserid");
  645. sRecoutdttm = model.getValue(sAncrPath+"/recoutdttm");
  646. sSaveoutdttm = model.getValue(sAncrPath+"/saveoutdttm");
  647. }
  648. var sPatopinsndsmsid = model.getValue(sAncrPath+"/patopinsndsmsid");
  649. var sPatopoutsndsmsid = model.getValue(sAncrPath+"/patopoutsndsmsid");
  650. var sEqmtuseyn = model.getValue(sAncrPath+"/eqmtuseyn");
  651. var sUmbilicalcordligdt = model.getValue(sAncrPath+"/umbilicalcordligdt");
  652. var sUmbilicalcordligyn = model.getValue(sAncrPath+"/umbilicalcordligyn");
  653. var sPrevantibioticsyn = model.getValue(sAncrPath+"/prevantibioticsyn");
  654. var sAnsafeconfirmid = model.getValue(sAncrPath+"/ansafeconfirmid");
  655. var sAnpatsafeconfirmid = model.getValue(sAncrPath+"/anpatsafeconfirmid");
  656. var sRemfact = model.getValue(sAncrPath+"/remfact");
  657. var sDeptremark = model.getValue(sAncrPath+"/deptremark");
  658. var sPkidatetimems = model.getValue(sAncrPath+"/pkidatetimems");
  659. var hngnm = model.getValue(sAncrPath+"/hngnm");
  660. var org_recinuserid = model.getValue(sAncrPath+"/org_recinuserid");
  661. var org_recoutuserid = model.getValue(sAncrPath+"/org_recoutuserid");
  662. var anstccrtno = model.getValue(sAncrPath+"/anstccrtno");
  663. var org_anstccrtno = model.getValue(sAncrPath+"/org_anstccrtno");
  664. sResultData = sRecStat+"▦"
  665. +sOprsrvno+"▦"+sPid+"▦"+sIoflag+"▦"+sOrddd+"▦"+sCretno+"▦"+sInrmdttm+"▦"
  666. +sOutrmdttm+"▦"+sOutplcecode+"▦"+sOutplcenm+"▦"+sRecinuserid+"▦"+sRecindttm+"▦"
  667. +sSaveindttm+"▦"+sRecoutuserid+"▦"+sRecoutdttm+"▦"+sSaveoutdttm+"▦"+sPatopinsndsmsid+"▦"
  668. +sPatopoutsndsmsid+"▦"+sEqmtuseyn+"▦"+sUmbilicalcordligdt+"▦"+sUmbilicalcordligyn+"▦"+sPrevantibioticsyn+"▦"
  669. +sAnsafeconfirmid+"▦"+sAnpatsafeconfirmid+"▦"+sRemfact+"▦"+sDeptremark+"▦"+sPkidatetimems+"▦"+sFlag+"▦"
  670. +hngnm+"▦"+org_recinuserid+"▦"+org_recoutuserid+"▦"+anstccrtno+"▦"+org_anstccrtno+"▩";
  671. return sResultData;
  672. }
  673. // ※ 전자서명 호출_20100413_SMY
  674. function fSignProcessSet(){
  675. if (Sign.signprocess() == true){ // ▶ 전자인증 관련 환자 인적 정보를 보내줌.
  676. var Signinfo = "pid" +"▦" // 01 등록번호
  677. + "orddd" +"▦" // 02 입원일자(입원,응급)/진료일자(외래)
  678. + "cretno" +"▦" // 03 생성번호
  679. + "signno" +"▦" // 04 서명번호(인증번호)
  680. + "recdd" +"▦" // 05 실제 기록이 이루어진 기록일자
  681. + "rectm" +"▦" // 06 실제 기록이 이루어진 기록시간
  682. + "recsaveflag" +"▦" // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  683. + "signflag" +"▦" // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  684. + "signgenrflag" +"▦" // 09 외래/입원구분(코드정의서 M0010 참조)
  685. + "formcd" +"▦" // 10 각 기록지별 서식코드 0000002473 N57 간호 수술간호기록
  686. + "orddeptcd" +"▦" // 11 진료부서코드
  687. + "orddrid" +"▦" // 12 진료의사ID (집도의)
  688. + "signbfcnts" +"▦" // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  689. + "signaftcnts" +"▩" // 14 ▶ 공인인증 처리후 데이터
  690. + model.getValue(sAncrPath+"/pid") +"▦" // 01 등록번호
  691. + model.getValue(sAncrPath+"/orddd") +"▦" // 02 입원일자(입원,응급)/진료일자(외래)
  692. + model.getValue(sAncrPath+"/cretno") +"▦" // 03 생성번호
  693. + model.getValue(sAncrPath+"/pkidatetimems") +"▦" // 04 서명번호(인증번호)
  694. + getCurrentDate() +"▦" // 05 실제 기록이 이루어진 기록일자
  695. + getCurrentTime() +"▦" // 06 실제 기록이 이루어진 기록시간
  696. + "N" +"▦" // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  697. + "02" +"▦" // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  698. + model.getValue(sAncrPath+"/ioflag") +"▦" // 09 외래/입원구분(코드정의서 M0010 참조) 2008-05-27 오후 3:32:35 김태범 null 값 넘어오는 부분 수정
  699. + model.getValue("/root/code/codeinfo/codelist[cdgrupid='REC' and supcdid = 'ANCR']/cdid") +"▦" // 10 각 기록지별 서식코드 0000002473 N57 간호 수술간호기록
  700. + model.getValue(sAncrPath+"/orddeptcd") +"▦" // 11 진료부서코드
  701. + model.getValue(sAncrPath+"/orddrid") +"▦" // 12 진료의사ID
  702. + Sign.signedInfos[1] +"▦" // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  703. + Sign.signedInfos[2] +"▩"; // 14 ▶ 공인인증 처리후 데이터
  704. model.makeValue("/root/send/reqdata/signinfo", Signinfo); //마취간호기록 인증정보
  705. }else{
  706. return false;
  707. }
  708. }
  709. /* ------------------------------------------------- */
  710. /* desc : 인증데이터 만들기_20100413_SMY */
  711. /* param : pModel - Model */
  712. /* tNode - Target Node */
  713. /* sNode - Source Node */
  714. /* return : */
  715. /* -------------------------------------------------- */
  716. function fMake_SignData(){
  717. // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
  718. Sign.addnode("/root/main/lists/mnphancr");
  719. Sign.addnode("/root/main/lists/timeinfo");
  720. //마취의
  721. model.makeValue(Sign.XPATH_SIGNINFO + "/mnphancr/anstdrnm",
  722. model.getValue("/root/init/anstinfolists/anstdoclist[userid = '" + model.getValue(Sign.XPATH_SIGNINFO + "/mnphancr/anstdrid") + "']/usernm"));
  723. //마취방법(마취간호기록)
  724. model.makeValue(Sign.XPATH_SIGNINFO + "/mnphancr/anstccrtnm",
  725. model.getValue("/root/init/anstcartinfo/anstdrlist[anstccrtno = '" + model.getValue(Sign.XPATH_SIGNINFO + "/mnphancr/anstccrtno") + "']/anstmthdnm"));
  726. //마취방법(마취기록)
  727. model.makeValue(Sign.XPATH_SIGNINFO + "/mnphancr/anstmthdcdnm", model.getValue(sAncrPath + "/anstmthdcdnm"));
  728. //마취안전 점검 확인간호사
  729. model.makeValue(Sign.XPATH_SIGNINFO + "/mnphancr/ansafeconfirmnm",
  730. model.getValue("/root/init/anstinfolists/anstnurlist[userid = '" + model.getValue(Sign.XPATH_SIGNINFO + "/mnphancr/ansafeconfirmid") + "']/usernm"));
  731. //마취환자 안전관리 점검 확인간호사
  732. model.makeValue(Sign.XPATH_SIGNINFO + "/mnphancr/anpatsafeconfirmnm",
  733. model.getValue("/root/init/anstinfolists/anstnurlist[userid = '" + model.getValue(Sign.XPATH_SIGNINFO + "/mnphancr/anpatsafeconfirmid") + "']/usernm"));
  734. //마취참여의
  735. var iAnstDrTempIcnt = 0;
  736. var sAnstDrid = "";
  737. model.makeNode("/root/hidden/temp/anstdrlists");
  738. for(var i = 1; i<= getNodesetCount("/root/HideData/anstdrlists/anstdrlist"); i++){
  739. sAnstDrid = model.getValue("/root/HideData/anstdrlists/anstdrlist["+i+"]/anstdrid");
  740. if(sAnstDrid != ""){
  741. iAnstDrTempIcnt++;
  742. model.makeNode("/root/hidden/temp/anstdrlists/anstdrlist["+iAnstDrTempIcnt+"]");
  743. model.copyNode("/root/hidden/temp/anstdrlists/anstdrlist["+iAnstDrTempIcnt+"]","/root/HideData/anstdrlists/anstdrlist["+i+"]");
  744. model.makeValue("/root/hidden/temp/anstdrlists/anstdrlist["+iAnstDrTempIcnt+"]/anstdrnm",
  745. model.getValue("/root/init/anstinfolists/anstdoclist[userid = '" + model.getValue("/root/hidden/temp/anstdrlists/anstdrlist["+iAnstDrTempIcnt+"]/anstdrid") + "']/usernm"));
  746. }
  747. }
  748. if(iAnstDrTempIcnt > 0){
  749. Sign.addnode("/root/hidden/temp/anstdrlists");
  750. }
  751. //마취참여간호사
  752. var iAnstNrTempIcnt = 0;
  753. var sAnstNrid = "";
  754. model.makeNode("/root/hidden/temp/mnphaneulists");
  755. for(var i = 1; i<= getNodesetCount("/root/main/lists/mnphaneulist"); i++){
  756. sAnstNrid = model.getValue("/root/main/lists/mnphaneulist["+i+"]/entrid");
  757. if(sAnstNrid != ""){
  758. iAnstNrTempIcnt++;
  759. model.makeNode("/root/hidden/temp/mnphaneulists/mnphaneulist["+iAnstNrTempIcnt+"]");
  760. model.copyNode("/root/hidden/temp/mnphaneulists/mnphaneulist["+iAnstNrTempIcnt+"]","/root/main/lists/mnphaneulist["+i+"]");
  761. model.makeValue("/root/hidden/temp/mnphaneulists/mnphaneulist["+iAnstNrTempIcnt+"]/entrnm",
  762. model.getValue("/root/init/anstinfolists/anstnurlist[userid = '" + model.getValue("/root/hidden/temp/mnphaneulists/mnphaneulist["+iAnstNrTempIcnt+"]/entrid") + "']/usernm"));
  763. }
  764. }
  765. if(iAnstNrTempIcnt > 0){
  766. Sign.addnode("/root/hidden/temp/mnphaneulists");
  767. }
  768. var xTimePath = Sign.XPATH_SIGNINFO + "/timeinfo";
  769. //수술전평가서
  770. if(model.getValue(xTimePath + "/opbftestyn") != ""){
  771. model.setValue(xTimePath + "/opbftestyn", rdo_opbftestyn.label);
  772. }
  773. //수혈여부
  774. if(model.getValue(xTimePath + "/tnsyn") != ""){
  775. model.setValue(xTimePath + "/tnsyn", rdo_tnsyn.label);
  776. }
  777. //PCA
  778. if(model.getValue(xTimePath + "/pcarecyn") != ""){
  779. model.setValue(xTimePath + "/pcarecyn", rdo_pcarecyn.label);
  780. }
  781. //마취안전점검
  782. var tempNodeAnsr1Info = instance1.selectSingleNode("/root/main/lists/mnphansrlist1");
  783. var sAnsr1CheckFlag = "false";
  784. var sAnsr1Status = "";
  785. var iAnsr1TempIcnt = 0;
  786. model.makeNode("/root/hidden/temp/mnphansrlists1");
  787. if(tempNodeAnsr1Info != null) {
  788. for(var i = 1; i<= tempNodeAnsr1Info.length; i++){
  789. sAnsr1CheckFlag = model.getValue("/root/main/lists/mnphansrlist1["+i+"]/checkflag");
  790. sAnsr1Status = model.getValue("/root/main/lists/mnphansrlist1["+i+"]/status");
  791. if((sAnsr1CheckFlag == "true" && sAnsr1Status == "u" )||
  792. (sAnsr1CheckFlag == "true" && sAnsr1Status == "i" ) ){
  793. iAnsr1TempIcnt++;
  794. model.makeNode("/root/hidden/temp/mnphansrlists1/mnphansrlist1["+iAnsr1TempIcnt+"]");
  795. model.copyNode("/root/hidden/temp/mnphansrlists1/mnphansrlist1["+iAnsr1TempIcnt+"]","/root/main/lists/mnphansrlist1["+i+"]");
  796. //불필요한 상태정보는 삭제함.
  797. model.removeNodeSet("/root/hidden/temp/mnphansrlists1/mnphansrlist1["+iAnsr1TempIcnt+"]/status");
  798. model.removeNodeSet("/root/hidden/temp/mnphansrlists1/mnphansrlist1["+iAnsr1TempIcnt+"]/checkflag");
  799. }
  800. }
  801. }
  802. if(iAnsr1TempIcnt > 0){
  803. Sign.addnode("/root/hidden/temp/mnphansrlists1");
  804. }
  805. //마취환자 안전관리 점검
  806. var tempNodeAnsr2Info = instance1.selectSingleNode("/root/main/lists/mnphansrlist2");
  807. var sAnsr2CheckFlag = "false";
  808. var sAnsr2Status = "";
  809. var iAnsr2TempIcnt = 0;
  810. model.makeNode("/root/hidden/temp/mnphansrlists2");
  811. if(tempNodeAnsr2Info != null) {
  812. for(var i = 1; i<= tempNodeAnsr2Info.length; i++){
  813. sAnsr2CheckFlag = model.getValue("/root/main/lists/mnphansrlist2["+i+"]/checkflag");
  814. sAnsr2Status = model.getValue("/root/main/lists/mnphansrlist2["+i+"]/status");
  815. if((sAnsr2CheckFlag == "true" && sAnsr2Status == "u" )||
  816. (sAnsr2CheckFlag == "true" && sAnsr2Status == "i" ) ){
  817. iAnsr2TempIcnt++;
  818. model.makeNode("/root/hidden/temp/mnphansrlists2/mnphansrlist2["+iAnsr2TempIcnt+"]");
  819. model.copyNode("/root/hidden/temp/mnphansrlists2/mnphansrlist2["+iAnsr2TempIcnt+"]","/root/main/lists/mnphansrlist2["+i+"]");
  820. //불필요한 상태정보는 삭제함.
  821. model.removeNodeSet("/root/hidden/temp/mnphansrlists2/mnphansrlist2["+iAnsr2TempIcnt+"]/status");
  822. model.removeNodeSet("/root/hidden/temp/mnphansrlists2/mnphansrlist2["+iAnsr2TempIcnt+"]/checkflag");
  823. }
  824. }
  825. }
  826. if(iAnsr2TempIcnt > 0){
  827. Sign.addnode("/root/hidden/temp/mnphansrlists2");
  828. }
  829. //장비사용기록
  830. var iMnphAnemTempIcnt = 0;
  831. var sMnphAnemCheckFlag = "false";
  832. model.removeNodeSet("/root/hidden/temp/mnphanemlists");
  833. model.makeNode("/root/hidden/temp/mnphanemlists");
  834. for(var i = 1; i<= getNodesetCount("/root/main/lists/mnphanemlist"); i++){
  835. sMnphAnemCheckFlag = model.getValue("/root/main/lists/mnphanemlist["+i+"]/checkflag");
  836. if(sMnphAnemCheckFlag != "true"){
  837. iMnphAnemTempIcnt++;
  838. model.makeNode("/root/hidden/temp/mnphanemlists/mnphanemlist["+iMnphAnemTempIcnt+"]");
  839. model.copyNode("/root/hidden/temp/mnphanemlists/mnphanemlist["+iMnphAnemTempIcnt+"]","/root/main/lists/mnphanemlist["+i+"]");
  840. }
  841. }
  842. if(iMnphAnemTempIcnt > 0){
  843. Sign.addnode("/root/hidden/temp/mnphanemlists");
  844. }
  845. /*
  846. //간호기록
  847. var iCareRecTempIcnt = 0;
  848. var sRecdd = "";
  849. model.makeNode("/root/hidden/temp/carereclists");
  850. for(var i = 1; i<= getNodesetCount("/root/HideData/CareRecLists/carereclist"); i++){
  851. sRecdd = model.getValue("/root/HideData/CareRecLists/carereclist["+i+"]/recdd");
  852. if(sRecdd != ""){
  853. iCareRecTempIcnt++;
  854. model.makeNode("/root/hidden/temp/carereclists/anstdrlist["+iCareRecTempIcnt+"]");
  855. model.copyNode("/root/hidden/temp/carereclists/anstdrlist["+iCareRecTempIcnt+"]","/root/HideData/CareRecLists/carereclist["+i+"]");
  856. model.setValue("/root/hidden/temp/carereclists/anstdrlist["+iCareRecTempIcnt+"]/dnarflag",
  857. model.getValue("/root/init/M0260/M0260[cdid = '" + model.getValue("/root/hidden/temp/carereclists/anstdrlist["+iCareRecTempIcnt+"]/dnarflag") + "']/cdnm"));
  858. }
  859. }
  860. if(iCareRecTempIcnt > 0){
  861. Sign.addnode("/root/hidden/temp/carereclists");
  862. }
  863. */
  864. }
  865. //마취 참여간호사 정보 추가 버튼 클릭시
  866. function fOnClickAddAnNur(){
  867. datagrid3.addRow(); // 입력할 행 추가.
  868. var cur_row = datagrid3.row; // 추가된 행 번호 가져오기
  869. var cnt_row = datagrid3.rows; // 현재 행의 갯수 가져오기
  870. model.setValue(sAneuPath+"["+cur_row+"]/entridflag","N3");//마취간호사
  871. model.setValue(sAneuPath+"["+cur_row+"]/oprsrvno",model.getValue(sAncrPath+"/oprsrvno"));
  872. }
  873. //마취 참여자 정보 변경시
  874. function fValuChangedAneu(){
  875. var sNurid = model.getValue(sAneuPath+"["+datagrid3.row+"]/entrid");
  876. if(sNurid == "" || sNurid == null || sNurid =="undefined"){
  877. sNurid = "";
  878. }
  879. model.setValue(sAneuPath+"["+datagrid3.row+"]/displayentrid",sNurid);
  880. var sNurnm = model.getValue("init/anstinfolists/anstnurlist[userid='"+sNurid+"']/usernm");
  881. if(sNurnm == "" || sNurnm == null || sNurnm =="undefined"){
  882. sNurnm = "";
  883. }
  884. //중복 입력 check
  885. if(sNurid != ""){
  886. for(var i = 1; i <= datagrid3.rows; i++){
  887. if(sNurid == model.getValue(sAneuPath+"["+i+"]/entrid")){
  888. if(i == datagrid3.row){//현재 선택된 행 제외
  889. continue;
  890. }
  891. messageBox(model.getValue("init/anstinfolists/anstnurlist[userid='"+sNurid+"']/usernm")+"선생님은 이미 등록되었습니다. 추가", "E001");
  892. model.setValue(sAneuPath+"["+datagrid3.row+"]/entrnm", "");
  893. model.setValue(sAneuPath+"["+datagrid3.row+"]/entrid", "");
  894. model.setValue(sAneuPath+"["+datagrid3.row+"]/displayentrid", "");
  895. datagrid3.refresh();
  896. return;
  897. }
  898. }
  899. }
  900. model.setValue(sAneuPath+"["+datagrid3.row+"]/entrnm", sNurnm);
  901. model.setValue(sAneuPath+"["+datagrid3.row+"]/displayentrid", sNurid);
  902. datagrid3.refresh();
  903. }
  904. /**
  905. * 마취 참여자 정보 삭제 버튼을 클릭하였을 경우 이벤트
  906. *
  907. */
  908. function fClickDeleteBtn(){
  909. var cur_row = datagrid3.row; // 행 번호 가져오기
  910. var iStatus = datagrid3.rowstatus(cur_row);
  911. if(cur_row <= 0 || cur_row =="undefined") {
  912. alert("삭제할 참여자 정보를 선택하시기 바랍니다...");
  913. return;
  914. }
  915. if (iStatus == 1 || iStatus == 3){ // 새로 삽입된 행이면
  916. datagrid3.deleteitem(cur_row);
  917. }else if (iStatus == 4){ // 삭제로 표시된 행이면
  918. datagrid3.removestatus(cur_row, "delete");
  919. }else{
  920. datagrid3.addStatus(cur_row, "delete");
  921. }
  922. }
  923. /**
  924. * 참여자 정보 저장시 validation 체크
  925. */
  926. function fValidCheckAneu(){
  927. var iGridCnt = getNodesetCount(sAneuPath);
  928. if(iGridCnt > 0){
  929. for(var i = 1; i <= iGridCnt; i++){
  930. var sNurid = model.getValue(sAneuPath+"["+i+"]/entrid");
  931. if(sNurid == null || sNurid == "" || sNurid == "undefined"){
  932. model.alert(i+"번째 수술 참여 마취간호사 정보를 입력하거나 삭제하시기 바랍니다.");
  933. return false;
  934. }
  935. }
  936. }
  937. return true;
  938. }
  939. /**
  940. * 전체선택버튼 클릭 시
  941. * sFlag - A:마취안전 점검 , B:마취환자 안전관리 점검
  942. */
  943. function fOnClickAllCheck(sFlag){
  944. var sButtonName = "";
  945. var sAnstGridXpath = "";
  946. var iButtonid = "";
  947. var iGridid = "";
  948. switch(sFlag){
  949. case "A" : //마취안전 점검
  950. sButtonName = button3.label;
  951. iButtonid = "button3";
  952. sAnstGridXpath = "/root/main/lists/mnphansrlist1";
  953. iGridid = "datagrid4";
  954. break;
  955. case "B" : //마취환자 안전관리 점검
  956. sButtonName = button5.label;
  957. iButtonid = "button5";
  958. sAnstGridXpath = "/root/main/lists/mnphansrlist2";
  959. iGridid = "datagrid6";
  960. break;
  961. default :
  962. break;
  963. }
  964. if(sAnstGridXpath != ""){
  965. var iGridCnt = getNodesetCount(sAnstGridXpath);
  966. if(iGridCnt > 0){
  967. for(var i = 1; i <= iGridCnt; i++){
  968. if(sButtonName == "전체선택"){
  969. model.setValue(sAnstGridXpath+"["+i+"]/checkflag", "true");
  970. eval(iGridid).addStatus(i, "insert"); //grid status상태 변경 - 서버로 데이터를 전달해야 하므로.
  971. }else if(sButtonName == "전체해제"){
  972. eval(iGridid).addStatus(i, "insert"); //grid status상태 변경 - 서버로 데이터를 전달해야 하므로.
  973. model.setValue(sAnstGridXpath+"["+i+"]/checkflag", "false");
  974. }
  975. }
  976. eval(iGridid).refresh();
  977. switch(sButtonName){
  978. case "전체선택" :
  979. eval(iButtonid).value = "전체해제";
  980. break;
  981. case "전체해제" :
  982. eval(iButtonid).value = "전체선택";
  983. break;
  984. default :
  985. break;
  986. }
  987. }
  988. }
  989. }
  990. // 수술장비조회 팝업 호출
  991. function fOpEqmtPopup(){
  992. var sTempOprsrvno = model.getValue("/root/main/lists/mnphancr/oprsrvno");
  993. if(sTempOprsrvno == "" || sTempOprsrvno == null || sTempOprsrvno =="undefined"){
  994. return;
  995. }
  996. var sMsg = "";
  997. var sOPEqmtCD = "";
  998. //설치부서가 수술실 마취1,3,4...방이 만들어질 경우 수정 필요
  999. //여의도 마취수술방 부서코드가 생성되어 - 2010-04-08 오전 9:04:40 taebum 적용함.
  1000. setParameter("SPMNP00300_searchFlag","ANSTGIROK");
  1001. modal("SPMNP00301");
  1002. getParameter("SPMNP00300_Return");
  1003. sMsg = getParameter("SPMNP00300_Return");
  1004. if(sMsg == "") return;
  1005. var iRow = grd_opeqmtlist.rows-grd_opeqmtlist.fixedrows;
  1006. var sTempGridXpath = "/root/main/lists/mnphanemlist";
  1007. for(var i =1; i < sMsg.split("▩").length-1; i++){
  1008. sOPEqmtCD = getArrayData(sMsg, i,0);
  1009. if(model.getValue(sTempGridXpath+"[opeqmtcd ='"+sOPEqmtCD+"']/opeqmtcd") != "") continue;
  1010. //
  1011. if ((iRow == 0) ||(model.getValue(sTempGridXpath+"["+iRow+"]/opeqmtcd") !="")) {
  1012. grd_opeqmtlist.addRow(false);
  1013. iRow++;
  1014. }
  1015. model.setValue(sTempGridXpath+"["+iRow+"]/checkflag", "false");
  1016. model.setValue(sTempGridXpath+"["+iRow+"]/oprsrvno", sTempOprsrvno);
  1017. model.setValue(sTempGridXpath+"["+iRow+"]/opeqmtcd", getArrayData(sMsg, i,0));
  1018. model.setValue(sTempGridXpath+"["+iRow+"]/org_opeqmtcd", getArrayData(sMsg, i,0));
  1019. model.setValue(sTempGridXpath+"["+iRow+"]/opeqmtnm", getArrayData(sMsg, i,1));
  1020. }
  1021. grd_opeqmtlist.refresh();
  1022. //2010-04-01 오후 3:09:45 refresh 이후에 상태값을 변경해야 서버로 전송됨.
  1023. var iRow = grd_opeqmtlist.rows-grd_opeqmtlist.fixedrows;
  1024. if(iRow < 1){
  1025. return;
  1026. }
  1027. for (var i = iRow; i > 0; i--){
  1028. grd_opeqmtlist.addStatus(i, "insert");
  1029. }
  1030. }
  1031. /**
  1032. * 장비삭제 버튼 클릭 시 이벤트
  1033. */
  1034. function fOnClickOpeqDelBtn(){
  1035. var iRow = grd_opeqmtlist.rows-grd_opeqmtlist.fixedrows;
  1036. if(iRow < 1){
  1037. return;
  1038. }
  1039. for (var i = iRow; i > 0; i--){
  1040. model.setValue("/root/main/lists/mnphanemlist["+i+"]/checkflag","true");
  1041. grd_opeqmtlist.addStatus(i, "insert");
  1042. }
  1043. grd_opeqmtlist.refresh();
  1044. }
  1045. //장비사용기록 해당없음 체크시 이벤트
  1046. function fOnClickEquseYnCheck(){
  1047. var sEqmtuseyn = model.getValue("/root/main/lists/mnphancr/eqmtuseyn");
  1048. if(sEqmtuseyn == "Y"){
  1049. fOnClickOpeqDelBtn();
  1050. btn_settingstrdt.disabled = true;
  1051. btn_settingenddt.disabled = true;
  1052. bbt_opeqmt.disabled = true;
  1053. btn_eqmtinfo.disabled = true;
  1054. }else{
  1055. btn_settingstrdt.disabled = false;
  1056. btn_settingenddt.disabled = false;
  1057. bbt_opeqmt.disabled = false;
  1058. btn_eqmtinfo.disabled = false;
  1059. }
  1060. var iRow = grd_opeqmtlist.rows-grd_opeqmtlist.fixedrows;
  1061. if(iRow < 1){
  1062. return;
  1063. }
  1064. //grid 활성화 비활성화 로직
  1065. for (var i = iRow; i > 0; i--){
  1066. if(sEqmtuseyn == "Y"){
  1067. grd_opeqmtlist.addStatus(i, "insert");
  1068. grd_opeqmtlist.isReadOnly(i, grd_opeqmtlist.colRef("checkflag"), i, grd_opeqmtlist.colRef("totm")) = true;
  1069. }else{
  1070. model.setValue("/root/main/lists/mnphanemlist["+i+"]/checkflag","false");
  1071. grd_opeqmtlist.addStatus(i, "insert");
  1072. grd_opeqmtlist.isReadOnly(i, grd_opeqmtlist.colRef("checkflag"), i, grd_opeqmtlist.colRef("totm")) = false;
  1073. }
  1074. }
  1075. grd_opeqmtlist.refresh();
  1076. }
  1077. //-----------------------------------------------------------------
  1078. // 간호일지타입II 화면 호출
  1079. //-----------------------------------------------------------------
  1080. function fSMMNR03400Call() {
  1081. // 간호일지 호출시 기본 작업 내역
  1082. // - 기록 구분 정보
  1083. // SMMNR03400_ParamBase : recflag▦dutplaccd▦reclnkkey => 기록구분▦부서코드▦기록연계키
  1084. // SMMNR03400_ParamPrcp : prcpflag▦prcpnm => 처방구분▦처방정보
  1085. // - 기록구분(recflag) :
  1086. // O : 외래 F : 기능검사 I : 주사실
  1087. // D : DSC S : 전문간호 H : 가정간호
  1088. // E : 응급실 A : 마취과 R : 회복실
  1089. // L : 투석실 B : 혈당기록
  1090. // - 부서코드(dutplaccd) :
  1091. // 12611 : 외래 33100 : 기능검사 31900 : 주사실
  1092. // 34100 : DSC 미정 : 전문간호 50112 : 가정간호
  1093. // 82015 : 응급실 10900 : 마취과 31170 : 회복실
  1094. // 31400 : 투석실 00001 : 혈당기록
  1095. var wPath = "/root/init/WorkData" ; //
  1096. model.makeValue(wPath+"/pid" , model.getValue(sAncrPath+ "/pid" )); // 환자번호
  1097. model.makeValue(wPath+"/instcd" , model.getValue(sAncrPath+ "/instcd" )); // 기관코드
  1098. model.makeValue(wPath+"/oprsrvno" , model.getValue(sAncrPath+ "/oprsrvno" )); // 의뢰번호
  1099. model.makeValue(wPath+"/ophistno" , model.getValue(sAncrPath+ "/ophistno" )); // 이력번호
  1100. if(model.getValue(wPath+"/pid") == ""){
  1101. return;
  1102. }
  1103. var wPath = "/root/init/WorkData" ; //
  1104. var parammsg = "recflag▦dutplaccd▦reclnkkey▩"
  1105. + "A" + "▦"
  1106. //+ "31170" + "▦" //2008-08-11 오후 5:22:30 taebum 주석처리
  1107. + "900" + "▦"
  1108. + model.getValue(wPath+ "/pid" ) + "," // 환자번호
  1109. + model.getValue(wPath+ "/instcd" ) + "," // 기관코드
  1110. + model.getValue(wPath+ "/oprsrvno" ) + "," // 의뢰번호
  1111. + model.getValue(wPath+ "/ophistno" ) + "▩" ; // 이력번호
  1112. setParameter("SMMNR03400_ParamBase",parammsg );
  1113. modal("SMMNR03400");
  1114. CareRecList_Read();
  1115. }
  1116. /* --------------------------------------------------*/
  1117. /* desc : 간호특이사항 기록 조회 */
  1118. /* --------------------------------------------------*/
  1119. function CareRecList_Read() {
  1120. var wPath = "/root/init/WorkData" ;
  1121. model.removenode("/root/send");
  1122. model.makeValue("/root/send/pid" , model.getValue(sAncrPath+ "/pid" )); // 환자번호
  1123. model.makeValue("/root/send/instcd" , model.getValue("/root/HideData/opschelists/schelist["+datagrid5.row+"]/instcd")); // 기관코드
  1124. //외래환자 추가되면서 외래/입원 구분으로 orddd, indd를 send로 보낸다 by 박영우 2010-03-03
  1125. var oppatflagcd = model.getValue("/root/HideData/opschelists/schelist["+datagrid5.row+"]/oppatflagcd");
  1126. if(oppatflagcd != "O") {
  1127. model.makeValue("/root/send/indd" , model.getValue(sAncrPath+ "/orddd" )); // 입원일자
  1128. model.makeValue("/root/send/cretno" , model.getValue(sAncrPath+ "/cretno" )); // 생성번호
  1129. }
  1130. else {
  1131. model.makeValue("/root/send/orddd" , model.getValue(sAncrPath+ "/orddd" )); // 입원일자
  1132. model.makeValue("/root/send/cretno" , model.getValue(sAncrPath+ "/cretno" )); // 생성번호
  1133. }
  1134. model.makeValue("/root/send/ioflag" , model.getValue("/root/init/WorkData/ioflag" )); // I/O 구분
  1135. model.makeValue("/root/send/dnarflag" , "%"); // dnar 구분
  1136. model.makeValue("/root/send/sortseq" , "A"); // 정렬순서(A:오름차순, D:내림차순)
  1137. model.makeValue("/root/send/recflag" , "A");//기록구분 - 마취
  1138. //model.makeValue("/root/send/reclnkkey",model.getValue(sAncrPath+ "/pid")+","
  1139. // +model.getValue("/root/HideData/opschelists/schelist["+datagrid5.row+"]/instcd")+","
  1140. // +model.getValue(sAncrPath+ "/oprsrvno")+","
  1141. // +model.getValue("/root/HideData/opschelists/schelist["+datagrid5.row+"]/ophistno")); // 기록연계키
  1142. model.makeValue("/root/send/reclnkkey",model.getValue(sAncrPath+ "/oprsrvno")+","
  1143. +model.getValue("/root/HideData/opschelists/schelist["+datagrid5.row+"]/instcd"));
  1144. model.makeValue("/root/send/prestdt" , getCurrentDate() + getCurrentTime()); // 현재일시
  1145. model.removeNodeSet("/root/HideData/CareRecLists/carereclist");
  1146. datagrid8.refresh();
  1147. submit("TRMNP00604"); // 간호특이사항 기록 조회
  1148. }
  1149. /**
  1150. * 마취의를 선택했을 경우 해당 마취의에 대한 마취방법 및 cartno 조회
  1151. */
  1152. function fValueChangedAnstDoctCombo(){
  1153. var sAnstDrid = model.getValue("/root/main/lists/mnphancr/anstdrid");
  1154. if(sAnstDrid == "" || sAnstDrid == "undefined" || sAnstDrid == null){
  1155. return;
  1156. }
  1157. model.removenode("/root/send");
  1158. model.makeValue("/root/send/orddeptcd", model.getValue("/root/init/anstinfolists/anstdoclist[userid = '"+sAnstDrid+"']/orddeptcd"));//부서코드
  1159. model.makeValue("/root/send/anstdrid", sAnstDrid);//마취의
  1160. model.makeValue("/root/send/cartgubn", "A");//카트구분 A: 마취카트
  1161. //model.removenode("/root/init/anstcartinfo");
  1162. submit("TRMNP01100");
  1163. }
  1164. //수혈기록 조회 버튼 클릭 시 이벤트
  1165. function fClickBloodBtn(){
  1166. var sPath = "/root/main/lists/mnphancr/pid";
  1167. var sPid = model.getValue(sPath);
  1168. if(sPid != ""){
  1169. setParameter("ioflag", "IPRC2");
  1170. setParameter("pid", sPid);
  1171. open("SMMNR01000");
  1172. }
  1173. }
  1174. /**
  1175. * PCA기록 조회 버튼 클릭 시 이벤트
  1176. *
  1177. */
  1178. function fOnClickPCABtn(){
  1179. var sAnstRecNo = model.getValue("/root/main/lists/timeinfo/anstrecno");
  1180. if(sAnstRecNo != null && sAnstRecNo != "" && sAnstRecNo != "undefined"){
  1181. setParameter("SMMNP00700_anstrecno", sAnstRecNo); //마취기록번호
  1182. open("SPMNP00701", "", "100", "100", "SPMNP00701", "", "");
  1183. }
  1184. }
  1185. /**
  1186. * @desc : 수술전상태평가표 기록지
  1187. * @
  1188. * @param :
  1189. * @return :
  1190. * @author : 박유미씨 Source 코드 modify taebum
  1191. * @---------------------------------------------------
  1192. */
  1193. function fPreOpAssemRec() {
  1194. // 2009.05.29. 수술전평가서팝업 화면 체킹하기..
  1195. var mainObj = getMainViewer();
  1196. var xpt = window.screenleft + eval(0);
  1197. var ypt = window.screenTop + eval(0);
  1198. var coord = getRelativeCoordinate ( xpt, ypt );
  1199. var mon = coord[0];
  1200. xpt = coord[1];
  1201. ypt = coord[2];
  1202. var curPrcpObj = mainObj.javascript.getOpenWindow("SSMMR06900"); //활성화된 수술전평가서팝업 화면 object loading
  1203. if(curPrcpObj != null){ //활성화된 처방화면이 있는 경우, 처방창 클로징하기..
  1204. curPrcpObj.activate();
  1205. return;
  1206. }
  1207. model.removeNodeset("/root/HideData/oppretestinfo/opanstform");
  1208. submit("TRMMR03714");
  1209. formseqno = model.getValue("/root/HideData/oppretestinfo/opanstform/formseqno");
  1210. if (formseqno == "" || formseqno == "0")
  1211. {
  1212. // 환자수술정보
  1213. var node = getGlobalVariable("paminfo");
  1214. model.removeNodeset("/root/main/paminfo/list");
  1215. setCSVToNode("/root/main/paminfo", node);
  1216. var sPid = model.getValue("/root/main/paminfo/list/pid"); // 환자번호
  1217. var sPnm = model.getValue("/root/main/paminfo/list/hngnm"); // 환자명
  1218. var sSex = model.getValue("/root/main/paminfo/list/sex"); // 성별
  1219. var sAge = model.getValue("/root/main/paminfo/list/age"); // 나이
  1220. var sIndd = model.getValue("/root/main/paminfo/list/indd"); // 입원일자
  1221. var sOrddd = model.getValue("/root/main/paminfo/list/orddd"); // 진료일자
  1222. var sCretNo = model.getValue("/root/main/paminfo/list/cretno"); // 환자 일자별 일련번호
  1223. var sInstcd = model.getValue("/root/main/paminfo/list/instcd"); // 기관코드
  1224. var sIOFlag = model.getValue("/root/main/paminfo/list/ioflag"); // 입원/외래 구분
  1225. var sWardCD = model.getValue("/root/main/paminfo/list/wardcd");
  1226. var sRoomCD = model.getValue("/root/main/paminfo/list/roomcd");
  1227. var sOrdDeptCd = model.getValue("/root/main/paminfo/list/orddeptcd"); // 진료과코드
  1228. var sOrdDrId = model.getValue("/root/main/paminfo/list/medispclid"); // 진료의사ID
  1229. var sOrdDeptNm = model.getValue("/root/main/paminfo/list/orddeptnm"); // 진료과
  1230. var sOrdDrNm = model.getValue("/root/main/paminfo/list/orddrnm"); // 진료의사
  1231. // 2009.05.20. 입원/외래 파람처리를 위하여..
  1232. var sPerfDeptCd = model.getValue("/root/main/oprsrvinfo/perfdeptcd"); // 집도과코드
  1233. var sPerfDrId = model.getValue("/root/main/oprsrvinfo/perfdrid"); // 집도의ID
  1234. var disparam = sPid +"▦" + sPnm +"▦" + sSex+ "/" + sAge+ "▦" + sOrdDeptNm +"▦" + sRoomCD + "▦";
  1235. setParameter("pid", sPid);
  1236. // 2009.05.20. 입원인 경우는 입원일/진료과를.. 이외는 진료일/집도과를..
  1237. if (sIOFlag == "I" || sIOFlag == "D" || sIOFlag == "E") {
  1238. setParameter("orddd", sIndd);
  1239. setParameter("orddeptcd", sOrdDeptCd); //진료과
  1240. } else {
  1241. setParameter("orddd", sOrddd);
  1242. setParameter("orddeptcd", sPerfDeptCd); //집도과
  1243. }
  1244. setParameter("cretno", sCretNo);
  1245. setParameter("ioflag", sIOFlag);
  1246. setParameter("orddrid", sPerfDrId); //집도의
  1247. setParameter("disppatinfo", disparam); //등록번호▦환자명▦성별/나이▦진료과▦병실▦
  1248. // 2009.02.24. 수술전평가서 띄울때 검사 측정치 등이 있으면 바로 세팅해서 보여달라는 요청
  1249. // 파라메터 추가 : oprsrvno, opcnfmdd)
  1250. var oprsrvno = model.getValue("/root/main/oprsrvinfo/oprsrvno");
  1251. var opcnfmdd = model.getValue("/root/main/oprsrvinfo/opcnfmdd");
  1252. setParameter("oprsrvno", oprsrvno);
  1253. setParameter("opcnfmdd", opcnfmdd);
  1254. setParameter("openmode", "newform"); //오픈모드는 “recform”
  1255. var formcd = model.getValue("/root/main/lists/timeinfo/hardcd");
  1256. setParameter("formcd", formcd);
  1257. } else {
  1258. // 2009.02.24. 수술전평가서 띄울때 검사 측정치 등이 있으면 바로 세팅해서 보여달라는 요청
  1259. // 환자수술정보
  1260. var node = getGlobalVariable("paminfo");
  1261. model.removeNodeset("/root/main/paminfo/list");
  1262. setCSVToNode("/root/main/paminfo", node);
  1263. var sPid = model.getValue("/root/main/paminfo/list/pid"); // 환자번호
  1264. var sPnm = model.getValue("/root/main/paminfo/list/hngnm"); // 환자명
  1265. var sSex = model.getValue("/root/main/paminfo/list/sex"); // 성별
  1266. var sAge = model.getValue("/root/main/paminfo/list/age"); // 나이
  1267. var sIndd = model.getValue("/root/main/paminfo/list/indd"); // 입원일자
  1268. var sOrddd = model.getValue("/root/main/paminfo/list/orddd"); // 진료일자
  1269. var sCretNo = model.getValue("/root/main/paminfo/list/cretno"); // 환자 일자별 일련번호
  1270. var sInstcd = model.getValue("/root/main/paminfo/list/instcd"); // 기관코드
  1271. var sIOFlag = model.getValue("/root/main/paminfo/list/ioflag"); // 입원/외래 구분
  1272. var sWardCD = model.getValue("/root/main/paminfo/list/wardcd");
  1273. var sRoomCD = model.getValue("/root/main/paminfo/list/roomcd");
  1274. var sOrdDeptCd = model.getValue("/root/main/paminfo/list/orddeptcd"); // 진료과코드
  1275. var sOrdDrId = model.getValue("/root/main/paminfo/list/medispclid"); // 진료의사ID
  1276. var sOrdDeptNm = model.getValue("/root/main/paminfo/list/orddeptnm"); // 진료과
  1277. var sOrdDrNm = model.getValue("/root/main/paminfo/list/orddrnm"); // 진료의사
  1278. var disparam = sPid +"▦" + sPnm +"▦" + sSex+ "/" + sAge+ "▦" + sOrdDeptNm +"▦" + sRoomCD + "▦";
  1279. setParameter("disppatinfo", disparam); //등록번호▦환자명▦성별/나이▦진료과▦병실▦
  1280. // 2009.02.24. 수술전평가서 띄울때 검사 측정치 등이 있으면 바로 세팅해서 보여달라는 요청
  1281. // 파라메터 추가 : oprsrvno, opcnfmdd)
  1282. var oprsrvno = model.getValue("/root/main/lists/mnphancr/oprsrvno");
  1283. var opcnfmdd = model.getValue("/root/main/lists/mnphancr/opcnfmdd");
  1284. setParameter("oprsrvno", oprsrvno);
  1285. setParameter("opcnfmdd", opcnfmdd);
  1286. setParameter("openmode", "recform"); //오픈모드는 “recform”
  1287. setParameter("formrecseq", formseqno);
  1288. }
  1289. open("SSMMR06900", 1, 0, 0 ,"", "", "","caption:hidden;");
  1290. }
  1291. /**
  1292. * 수술전 평가서 클릭시 이벤트
  1293. * : 마취기록을 뛰운다.
  1294. */
  1295. function fOnClickOpPreButton(){
  1296. open("SMMMR03700", 1, 0, 0 ,"", "", "","");
  1297. }
  1298. /**
  1299. * @group :
  1300. * @ver : 2007.10.17
  1301. * @by : Grace
  1302. * @---------------------------------------------------
  1303. * @type : function
  1304. * @access : public
  1305. * @desc : Exel 저장
  1306. * @param :
  1307. * @return :
  1308. * @---------------------------------------------------
  1309. */
  1310. function fSaveExcel(sButtonInfo){
  1311. var sOprsrvno = model.getValue("/root/main/lists/mnphancr/oprsrvno");
  1312. if(sOprsrvno == null || sOprsrvno == "" || sOprsrvno == "undefined"){
  1313. return;
  1314. }
  1315. var fileName = null;
  1316. if(sButtonInfo == "마취안전점검"){
  1317. fileName = window.fileDialog("save", ",", false, "마취환자안전점검_"+getCurrentDate(), "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  1318. if (fileName != "" && fileName != null) {
  1319. datagrid4.saveExcel(fileName, "SheetName", true, true, "", "", false);
  1320. }
  1321. }else if(sButtonInfo == "마취환자안전점검"){
  1322. fileName = window.fileDialog("save", ",", false, "마취환자안전점검_"+getCurrentDate(), "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  1323. if (fileName != "" && fileName != null) {
  1324. datagrid6.saveExcel(fileName, "SheetName", true, true, "", "", false);
  1325. }
  1326. }
  1327. }