SMMNP00208.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. /* ---------------------------------------------------------------------
  2. 수술부위 확인 점검표(SMMNP00208.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. : Create By Mr.Son S.H
  6. : 2011.12.05
  7. ---------------------------------------------------------------------- */
  8. var initOprsrvno = "";
  9. /* ------------------------------------------------- */
  10. /* SMMNP00208_수술부취확인 점검.xrw */
  11. /* On Load 시 Call */
  12. /* ------------------------------------------------- */
  13. /* group : EMR 간호 */
  14. /* ver : 2011.12.05 */
  15. /* by : 손성훈 */
  16. /* --------------------------------------------------*/
  17. /* type : function */
  18. /* access : public */
  19. /* desc : xforms-ready시 수행한다 */
  20. /* return : */
  21. /* --------------------------------------------------*/
  22. function fInitialize() {
  23. // 본원. 칠곡 구분.
  24. var initPid = ""
  25. if (initOprsrvno == "") {
  26. initOprsrvno = opener.javascript.getParameter("SMMNP00208_PARM_OPRSRVNO");
  27. }
  28. model.makeValue("/root/init/parminfo/oprsrvno", initOprsrvno);
  29. if (initOprsrvno =='' || initOprsrvno == null){
  30. var node = getGlobalVariable("operation");
  31. if( node != '' && node != null){
  32. model.makeNode("root/temp/operation");
  33. setCSVToNode("/root/temp/operation", node);
  34. var sOprsrvno = model.getValue("/root/temp/operation/list/oprsrvno");
  35. model.makeValue("/root/init/parminfo/oprsrvno", sOprsrvno);
  36. } else{
  37. messageBox("수술환자 탭에서 환자 조회 후 입력 가능합니다.\r\n환자 정보를 상단에 조회 후 '수술부위확인점검표' 프로그램 재 실행하십시요!", "E");
  38. model.close();
  39. }
  40. }
  41. // 저장된 데이타 확인 후 가져오기.
  42. submit("TRMNP00208");
  43. // 확인내용 기본 셋팅가져오기.
  44. submit("TRMNP00209");
  45. var sChkinfo = model.getValue("/root/init/oppartchkinfo/oppartckspec/hidedata/opchkitem/chkitem1");
  46. // 이미 저장된 데이타가 있는지 여부를 파악해서. 없으면 기본 셋팅값. 존재하면 기존 데이타 보이기.
  47. if (sChkinfo == ""){
  48. model.copyNode("/root/init/oppartchkinfo/oppartckspec", "root/temp");
  49. model.makeValue("/root/init/oppartchkinfo/recstat", "i"); // Insert 구분자를 지정하여 저장시 insert 되도록.
  50. }else {
  51. model.makeValue("/root/init/oppartchkinfo/recstat", "u"); // Update 구분자를 지정.
  52. var nToexecdttm = model.getValue("/root/init/oppartchkinfo/toexecdttm");
  53. if( nToexecdttm != "" ){
  54. var nTimeoutdt = nToexecdttm.substr(0, 8);
  55. var nTimeouttm = nToexecdttm.substr(8, 4);
  56. model.setValue("/root/hidden/recdttm/timeoutdt", nTimeoutdt);
  57. model.setValue("/root/hidden/recdttm/timeouttm", nTimeouttm);
  58. }
  59. /*
  60. var sTimeoutinfo = model.getValue("/root/init/oppartchkinfo/oppartckspec/hidedata/timeoutitem/chkitem1");
  61. if( sTimeoutinfo == "" ){
  62. alert("과거 자료입니다. 통합기록조회로 확인바랍니다.");
  63. }
  64. */
  65. }
  66. if(model.getValue("/root/init/oppartchkinfo/partcptyn") == ""){
  67. model.setValue("/root/init/oppartchkinfo/partcptyn","Y");
  68. }
  69. if(model.getValue("/root/init/oppartchkinfo/partcptyn") == "N"){
  70. chk_partcptnr1.disabled = false;
  71. chk_partcptnr2.disabled = false;
  72. chk_partcptnr3.disabled = false;
  73. chk_partcptnr4.disabled = false;
  74. }else{
  75. chk_partcptnr1.disabled = true;
  76. chk_partcptnr2.disabled = true;
  77. chk_partcptnr3.disabled = true;
  78. chk_partcptnr4.disabled = true;
  79. }
  80. if(model.getValue("/root/init/oppartchkinfo/partcptnr4") == "Y"){
  81. ipt_partcptnrrmk.disabled = false;
  82. }else{
  83. ipt_partcptnrrmk.disabled = true;
  84. }
  85. model.makeNode("/root/temp/cond/list");
  86. getPatientInfoDetails("/root/temp/cond/list"); // 환자 상세정보 조회.
  87. fUserchk() //사용자별 화면 제한.
  88. // 확인내용의 체크 부분은 Merge 되지 않도록 ..
  89. grd_chklist.mergeCol(grd_chklist.colRef("opdryn")) = false;
  90. grd_chklist.mergeCol(grd_chklist.colRef("anstdryn")) = false;
  91. grd_chklist.mergeCol(grd_chklist.colRef("opnuryn")) = false;
  92. grd_timeoutlist.mergeCol(grd_chklist.colRef("opdryn")) = false;
  93. grd_timeoutlist.mergeCol(grd_chklist.colRef("anstdryn")) = false;
  94. grd_timeoutlist.mergeCol(grd_chklist.colRef("opnuryn")) = false;
  95. }
  96. /* ------------------------------------------------- */
  97. /* type : function */
  98. /* access : public */
  99. /* desc : 수술부위확인 참석자별 체크 가능하도록 */
  100. /* return : */
  101. /*
  102. /* 참석자에 맞게 수술부위 확인 내용을 체크할 수 있도록 ..
  103. /* --------------------------------------------------*/
  104. function fSaveOpCheckList(){
  105. /*
  106. var sChk = model.getValue("/root/init/oppartchkinfo/chkattend");
  107. if ( sChk == "1" ){
  108. chk_opnr.disabled = true;
  109. grd_chklist.colDisabled (3) = true;
  110. grd_chklist.colDisabled (4) = true;
  111. grd_chklist.colDisabled (2) = false;
  112. grd_chklist.fixedcellcheckbox(0,2) = true; // 컬럼에 체크박스
  113. grd_chklist.fixedcellcheckbox(0,3) = false;
  114. //chk_opdr.select(0);
  115. chk_opdryn.value = 'Y'
  116. chk_anstdryn.value = 'N';
  117. } else if ( sChk == "2"){
  118. chk_opnr.disabled = true;
  119. grd_chklist.colDisabled (2) = true;
  120. grd_chklist.colDisabled (4) = true;
  121. grd_chklist.colDisabled (3) = false;
  122. grd_chklist.fixedcellcheckbox(0,3) = true; // 컬럼에 체크박스
  123. grd_chklist.fixedcellcheckbox(0,2) = false;
  124. //chk_andr.select(0);
  125. chk_anstdryn.value = 'Y';
  126. chk_opdryn.value = 'N'
  127. }
  128. */
  129. }
  130. /* ------------------------------------------------- */
  131. /* type : function */
  132. /* access : public */
  133. /* desc : 저장. 업데이트 */
  134. /* return : */
  135. /*
  136. /* 임시저장, 인증저장, 수정.
  137. /* --------------------------------------------------*/
  138. function fSave(pSaveFlag){
  139. if(model.getValue("/root/init/oppartchkinfo/chkattend") == ""){
  140. messageBox("수술부위확인 참석자를 ", "C002"); // 선택하십시오!
  141. return;
  142. }
  143. var wRecoDate = getCurrentDate() + getCurrentTime(); // 시스템일자 기록
  144. var wSaveDate = getCurrentDate() + getCurrentTime(); // 시스템일자 기록
  145. // 기록일시
  146. if (model.getValue("/root/main/conditions/confirm") == "2") { // 사용자일자 지정시간 기록
  147. wRecoDate = model.getValue("/root/hidden/recdttm/recdt")
  148. + model.getValue("/root/hidden/recdttm/rectm");
  149. if(wRecoDate.replace(' ', '').length < 12){
  150. messageBox("기록일시를 정확하게 입력 하시기 바랍니다.", "I000");
  151. return;
  152. }
  153. } else{
  154. wRecoDate = wSaveDate;
  155. }
  156. model.makeValue("/root/init/oppartchkinfo/recdttm", wRecoDate);
  157. // Time Out 시행시간
  158. var nTimeOutDate = model.getValue("/root/hidden/recdttm/timeoutdt") + model.getValue("/root/hidden/recdttm/timeouttm");
  159. if(!isNull(nTimeOutDate) && nTimeOutDate.replace(' ', '').length < 12){
  160. messageBox("TimeOut 시행시간을 정확하게 입력 하시기 바랍니다.", "I000");
  161. return;
  162. }
  163. model.makeValue("/root/init/oppartchkinfo/toexecdttm", nTimeOutDate);
  164. model.removeNode("/root/send/savedata"); // node 초기화.
  165. model.makeNode("/root/send/savedata");
  166. var sUsernm = getUserInfo("usernm") ;
  167. var sUserid = getUserInfo("userid") ;
  168. var sDeptcd = getUserInfo("dutplcecd") ;
  169. var ChkValue = model.getValue("/root/init/oppartchkinfo/chkattend");
  170. if (ChkValue == "1"){
  171. model.setValue("/root/init/oppartchkinfo/opdocnm", sUsernm);
  172. model.setValue("/root/init/oppartchkinfo/opdocrecrid", sUserid);
  173. model.setValue("/root/init/oppartchkinfo/opdocrecdept", sDeptcd);
  174. }else if (ChkValue == "2"){
  175. model.setValue("/root/init/oppartchkinfo/anstdocnm", sUsernm);
  176. model.setValue("/root/init/oppartchkinfo/anstdocrecrid", sUserid);
  177. model.setValue("/root/init/oppartchkinfo/anstdocrecdept", sDeptcd);
  178. }else if (ChkValue == "3"){
  179. model.setValue("/root/init/oppartchkinfo/opnrnm", sUsernm);
  180. model.setValue("/root/init/oppartchkinfo/opnrrecrid", sUserid);
  181. model.setValue("/root/init/oppartchkinfo/opnrrecdept", sDeptcd);
  182. }
  183. model.copyNode("/root/send/savedata","/root/init/oppartchkinfo");
  184. // xml 데이타가 저장 될 Node 삭제 후 xml 데이타 지정.
  185. model.removeNode("/root/send/savedata/oppartckspec");
  186. model.makeValue("/root/send/savedata/oppartckspec", instance1.selectNodesXml("/root/init/oppartchkinfo/oppartckspec/hidedata") );
  187. if (pSaveFlag == "C"){ // 인증저장.
  188. model.makeValue("/root/send/savedata/oppartchkinfo/certflag", "C");
  189. Sign.certreload = true ;
  190. if (Sign.signprocess() == true){
  191. //src="C:\CMCProject\application\webapps\emr\formmngtweb\xrw\SSMRF03800_OCR뷰어.xrw"
  192. // alert("인증성공" );
  193. // alert("1. 인증성공여부 false / true \n\n" + Sign.signedInfos[0]); // 인증성공여부 false / true
  194. // alert("2. 인증할 데이터 정보 (미기록 노드 제거전 원본 노드) \n\n" + Sign.signedInfos[3]); // 인증할 데이터 정보 (미기록 노드 제거전 원본 노드)
  195. // alert("2.--> text 데이터(없는 노드 포함된) text 형태 변형 결과 \n\n" + Sign.signedInfos[4]); // [3] 데이터(없는 노드 포함된) text 형태 변형 결과
  196. // alert("3. 인증할 데이터 정보(미기록 노드 제거된 정보) \n\n" + Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  197. // alert("3. -->text 데이터(없는 노드 제거된) text 형태 변형 결과 \n\n" + Sign.signedInfos[5]); // ★[1] 데이터(없는 노드 제거된) text 형태 변형 결과 >>> [5]
  198. // alert("3. -->text --> sign 공인인증 처리후 데이터 \n\n" + Sign.signedInfos[2]); // ★공인인증 처리후 데이터 >>> [2]
  199. //
  200. model.makeValue("/root/send/savedata/signinfo/pid", model.getValue("/root/temp/cond/list/pid"));
  201. model.makeValue("/root/send/savedata/signinfo/indd", model.getValue("/root/temp/cond/list/indd"));
  202. model.makeValue("/root/send/savedata/signinfo/signno",""); // model.getValue("/root/init/oppartchkinfo/signno")); //20090722_SMY변경
  203. model.makeValue("/root/send/savedata/signinfo/cretno", model.getValue("/root/temp/cond/list/cretno"));
  204. model.makeValue("/root/send/savedata/signinfo/recdd", getCurrentDate()); // model.getValue("/root/main/wardrecinfo/recdd"));
  205. model.makeValue("/root/send/savedata/signinfo/rectm", getCurrentTime()); // model.getValue("/root/main/wardrecinfo/rectm"));
  206. //--//model.makeValue("/root/send/savedata/signinfo/recsaveflag", model.getValue("Y"));
  207. model.makeValue("/root/send/savedata/signinfo/recsaveflag", "Y");
  208. model.makeValue("/root/send/savedata/signinfo/signflag", "02");
  209. model.makeValue("/root/send/savedata/signinfo/signgenrflag", model.getValue("/root/temp/cond/list/ioflag"));
  210. model.makeValue("/root/send/savedata/signinfo/formcd", "1200012439");
  211. model.makeValue("/root/send/savedata/signinfo/orddeptcd", model.getValue("/root/temp/cond/list/orddeptcd"));
  212. model.makeValue("/root/send/savedata/signinfo/orddrid", model.getValue("/root/temp/cond/list/medispclid"));
  213. model.makeValue("/root/send/savedata/signinfo/signbfcnts", Sign.signedInfos[1]);
  214. model.makeValue("/root/send/savedata/signinfo/signaftcnts", Sign.signedInfos[2]);
  215. if(submit("TXMNP00208") == true) {
  216. messageBox("저장이 ", "I001");
  217. }else {
  218. messageBox("저장이 실패하였습니다. ", "E");
  219. }
  220. }
  221. }
  222. if (pSaveFlag == "T"){
  223. model.makeValue("/root/send/savedata/oppartckspec/certflag", "T");
  224. // 임시저장?!
  225. }
  226. fInitialize(); // 화면 재조회.
  227. }
  228. /* ------------------------------------------------- */
  229. /* type : function */
  230. /* access : public */
  231. /* desc : 사용자별 화면 제한. */
  232. /* return : */
  233. /*
  234. /* 수술참여의사, 마위의사, 수술실 간호사.
  235. /* --------------------------------------------------*/
  236. function fUserchk(){
  237. var sJobkindcd = getUserInfo("jobkindcd") ; // 사용자의 직종코드.
  238. var sDutplcecd = getUserInfo("dutplcecd") ; // 사용자의 근무지 부서코드.
  239. var sUserChkInfo = "";
  240. if (model.getValue("/root/init/oppartchkinfo/perfdeptcd") == "2090000000" && sDutplcecd == "2090000000"){
  241. sUserChkInfo = "C";
  242. }else{
  243. submit("TRMNP00210"); // 직종코드, 근무지부서 코드 비교하기 위해 공통코드 조회.
  244. var node = instance1.selectNodes("root/userckinfo/cdid");
  245. for(var i = 1 ; i <= node.length ; i++){
  246. if ( sJobkindcd == model.getValue("root/userckinfo["+i+"]/cdnm")) {
  247. if (sDutplcecd == model.getValue("root/userckinfo["+i+"]/gdesc")) {
  248. sUserChkInfo = model.getValue("root/userckinfo["+i+"]/cdid");
  249. break;
  250. } else if("0000000000" == model.getValue("root/userckinfo["+i+"]/gdesc")){
  251. sUserChkInfo = model.getValue("root/userckinfo["+i+"]/cdid");
  252. break;
  253. }
  254. }
  255. }
  256. }
  257. // sUserChkInfo = "C";
  258. if (sUserChkInfo == 'A' ) { // A - 수술실 간호사
  259. chk_opdr.disabled = true;
  260. chk_andr.disabled = true;
  261. grd_chklist.colDisabled (2) = true;
  262. grd_chklist.colDisabled (3) = true;
  263. grd_chklist.fixedcellcheckbox(0,4) = true; // 컬럼에 체크박스
  264. chk_opnr.select(0);
  265. chk_opnryn.value = 'Y';
  266. lf_TimeoutEnable(false);
  267. } else if(sUserChkInfo == 'B' ){ // B - 마취의사
  268. chk_opdr.disabled = true;
  269. chk_opnr.disabled = true;
  270. grd_chklist.colDisabled (2) = true;
  271. grd_chklist.colDisabled (4) = true;
  272. grd_chklist.fixedcellcheckbox(0,3) = true; // 컬럼에 체크박스
  273. chk_andr.select(0);
  274. chk_anstdryn.value = 'Y';
  275. lf_TimeoutEnable(true);
  276. } else if (sUserChkInfo == 'C') { // C - 수술참여의사
  277. chk_opnr.disabled = true;
  278. chk_andr.disabled = true;
  279. grd_chklist.colDisabled (3) = true;
  280. grd_chklist.colDisabled (4) = true;
  281. grd_chklist.fixedcellcheckbox(0,2) = true; // 컬럼에 체크박스
  282. chk_opdr.select(0);
  283. chk_opdryn.value = 'Y';
  284. lf_TimeoutEnable(true);
  285. }else{
  286. model.setValue("/root/main", "");
  287. messageBox("기록할 권한이 없습니다.", "C000");
  288. if (checkOpener()) {
  289. window.close();
  290. }
  291. return;
  292. }
  293. }
  294. function lf_TimeoutEnable(nFlag){
  295. ipt_timeoutdt.disabled = nFlag;
  296. ipt_timeouttm.disabled = nFlag;
  297. btn_timeout.disabled = nFlag;
  298. input7.disabled = nFlag;
  299. input8.disabled = nFlag;
  300. input9.disabled = nFlag;
  301. input10.disabled = nFlag;
  302. input11.disabled = nFlag;
  303. input12.disabled = nFlag;
  304. btn_search_opdr.disabled = nFlag;
  305. btn_search_andr.disabled = nFlag;
  306. btn_search_opnr.disabled = nFlag;
  307. //grd_timeoutlist.disabled = nFlag;
  308. grd_timeoutlist.colDisabled (2) = nFlag;
  309. grd_timeoutlist.colDisabled (3) = nFlag;
  310. grd_timeoutlist.colDisabled (4) = nFlag;
  311. grd_timeoutlist.fixedcellcheckbox(0,2) = !nFlag;
  312. grd_timeoutlist.fixedcellcheckbox(0,3) = !nFlag;
  313. grd_timeoutlist.fixedcellcheckbox(0,4) = !nFlag;
  314. }
  315. /* --------------------------------------------------------------------------- */
  316. /* -------------------------------------------------- */
  317. function lf_SPZSU10103(sFlag){
  318. var sUserid = "";
  319. var sUsernm = "";
  320. if( sFlag == "opdr"){
  321. sUserid = model.getValue("/root/init/oppartchkinfo/toopdocid");
  322. sUsernm = model.getValue("/root/init/oppartchkinfo/toopdocnm");
  323. }else if( sFlag == "andr" ){
  324. sUserid = model.getValue("/root/init/oppartchkinfo/toanstdocid");
  325. sUsernm = model.getValue("/root/init/oppartchkinfo/toanstdocnm");
  326. }else if( sFlag == "opnr" ){
  327. sUserid = model.getValue("/root/init/oppartchkinfo/toopnrid");
  328. sUsernm = model.getValue("/root/init/oppartchkinfo/toopnrnm");
  329. }
  330. model.resetInstanceNode("/root/hidden/userpopupinfo");
  331. model.removeNodeset("/root/hidden/tempuserinfo");
  332. model.makeNode("/root/hidden/tempuserinfo");
  333. model.setValue("/root/hidden/userpopupinfo/param", "_OneS_DD");
  334. if( sUserid != "" ){
  335. model.setValue("/root/hidden/userpopupinfo/flag","userid");
  336. model.setValue("/root/hidden/userpopupinfo/searchitem",sUserid);
  337. }else if( sUsernm != "" ){
  338. model.setValue("/root/hidden/userpopupinfo/flag","usernm");
  339. model.setValue("/root/hidden/userpopupinfo/searchitem",sUsernm);
  340. }
  341. modal("SPZSU10103_사용자부서선택조회", "", "200", "200", "SPZSU10103","/root/hidden/userpopupinfo","/root/main/temp");
  342. var iParam = getParameter("SPZSU10103_");
  343. setCSVToNode("/root/hidden/tempuserinfo", iParam);
  344. clearParameter("SPZSU10103_");
  345. var emplno = model.getValue("/root/hidden/tempuserinfo/list/userid");
  346. var emplnm = model.getValue("/root/hidden/tempuserinfo/list/usernm");
  347. if( sFlag == "opdr" ){
  348. model.setValue("/root/init/oppartchkinfo/toopdocid", emplno);
  349. model.setValue("/root/init/oppartchkinfo/toopdocnm", emplnm);
  350. }else if( sFlag == "andr" ){
  351. model.setValue("/root/init/oppartchkinfo/toanstdocid", emplno);
  352. model.setValue("/root/init/oppartchkinfo/toanstdocnm", emplnm);
  353. }else if( sFlag == "opnr" ){
  354. model.setValue("/root/init/oppartchkinfo/toopnrid", emplno);
  355. model.setValue("/root/init/oppartchkinfo/toopnrnm", emplnm);
  356. }
  357. model.refresh();
  358. }