MMR01300.xjs 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[
  3. var gSubmitID = TX_SUBMIT_COMN_FORM;
  4. var g_formrec_oldimge = "";
  5. var g_recitem_oldimge = "";
  6. var g_formrec_newimge = "";
  7. var g_recitem_newimge = "";
  8. /**
  9. * @desc : 저장을 위한 기록정보 셋팅
  10. * @id :
  11. * @event : xforms-ready
  12. * @return : void
  13. * @authur : 박종훈
  14. */
  15. function fSetSaveComnFormRecInfo()
  16. {
  17. sysf_trace_emr("***** fSetSaveComnFormRecInfo() MMR01300 *****");
  18. var msgYn = oOpener.frmf_getParameter("SaveMsgYn");
  19. sysf_trace_emr("@@@@@ msgYn : " + msgYn + " @@@@@");
  20. if (fGetFormRec("status") == "D" && msgYn != "N")
  21. {
  22. var rtnVal = sysf_messageBox("기록을 ", "Q001");
  23. if (rtnVal == "7")
  24. return "N";
  25. }
  26. else
  27. {
  28. var rtn = fCheckChangeData();
  29. sysf_trace_emr("@@@@@ rtn(fCheckChangData): " + rtn + " @@@@@");
  30. if (rtn == "N")
  31. {
  32. return "N";
  33. }
  34. else if (rtn == "M")
  35. {
  36. //fSetFormRec("status", "M");
  37. }
  38. else
  39. {
  40. //gPageInfo.recItemRef --> /root/main/recinfo/recitem
  41. //gPageInfo.recItemRef2 --> /root/hidden/recinfo/recitem
  42. //copyNodeset(gPageInfo.recItemRef, gPageInfo.recItemRef2, "replace", model, model);
  43. dsf_copyDsList(["ds_data_recitem"], ["ds_hidden_recitem"], "replace", this, this);
  44. //////////////////
  45. //2010.02.10, 주희경,
  46. //가계도, 이미지, 추가입력 데이터 저장 시 필수 컬럼 누락 된 것 재셋팅, 노드 중복 방지를 위해 model.makeNode사용.
  47. var recItemRefDs = this.objects["ds_data_recitem"];
  48. var cnts = recItemRefDs == null ? 0 : recItemRefDs.rowcount;
  49. for(var i = 0; i < cnts; i++)
  50. {
  51. var degnitemkind = recItemRefDs.getColumn(i, "degnitemkind");
  52. var degnitemnm = recItemRefDs.getColumn(i, "degnitemnm");
  53. if ( degnitemkind == "IMG" || degnitemkind=="FDG" || degnitemnm =="§추가입력" )
  54. {
  55. sysf_trace_emr("jw.choe addColumn type check! MMR01300");
  56. recItemRefDs.addColumn("recrefcd", "string");
  57. recItemRefDs.addColumn("recitemnm", "string");
  58. recItemRefDs.addColumn("supdegnitemno", "string");
  59. recItemRefDs.addColumn("extdegnitemlevlcd", "string");
  60. recItemRefDs.addColumn("rectermflag", "string");
  61. recItemRefDs.addColumn("degnunitcd", "string");
  62. }
  63. }
  64. var grdDs = this.objects[grd_recitem.binddataset];
  65. sysf_trace("@@@@@ grdDsCnt : " + grdDs.rowcount + " @@@@@");
  66. for (var i = 0; i < grdDs.rowcount; i++)
  67. {
  68. //grd_recitem.rowstatus(i) = 1;
  69. grdf_setStatus(grd_recitem, "I", [i]);
  70. }
  71. // var CSVdata = grd_recitem.getUpdateData();
  72. // model.makeValue("/root/send/saverecinfo/recitem", CSVdata);
  73. var CSVdata = grdf_getGridUpdateData(grd_recitem);
  74. //grdf_setStatusColumn(CSVdata, "status");
  75. if( this.objects["ds_send_saverecinfo_recitem"] == null ) dsf_createDs("ds_send_saverecinfo_recitem");
  76. ds_send_saverecinfo_recitem.copyData(CSVdata, true);
  77. sysf_trace_emr(ds_send_saverecinfo_recitem.saveXML());
  78. }
  79. }
  80. // gPageInfo.recMastRef-->/root/main/recinfo/formrec
  81. //copyNodeset("/root/send/saverecinfo/formrec", gPageInfo.recMastRef, "replace", model, model);
  82. //20110916
  83. // model.makeValue("/root/send/saverecinfo/formrec/rscdoctid", model.getValue(gPageInfo.recMastRef + "/rscdoctid")); //20121112 정창혁 수신의 추가
  84. // model.setValue("/root/send/saverecinfo/formrec/orddrid", model.getValue(gPageInfo.recMastRef + "/recvuserid"));
  85. // model.setValue("/root/send/saverecinfo/formrec/orddeptcd", model.getValue(gPageInfo.recMastRef + "/recvdeptcd"));
  86. //20110916
  87. // 2014/01/28 마취통증의학과로 컨설트 의뢰시 의뢰구분을 세팅
  88. // model.makeValue("/root/send/saverecinfo/formrec/anstflag", ivw_base.model.getValue("/root/init/cond/anstflag"));
  89. if( this.objects["ds_send_saverecinfo_formrec"] == null ) dsf_createDs("ds_send_saverecinfo_formrec");
  90. ds_send_saverecinfo_formrec.copyData(ds_data_formrec);
  91. sysf_trace_emr(ds_send_saverecinfo_formrec.saveXML());
  92. ds_send_saverecinfo_formrec.addColumn("rscdoctid", "string");
  93. ds_send_saverecinfo_formrec.setColumn(0, "rscdoctid", ds_data_formrec.getColumn(0, "rscdoctid"));
  94. ds_send_saverecinfo_formrec.setColumn(0, "orddrid", ds_data_formrec.getColumn(0, "recvuserid"));
  95. ds_send_saverecinfo_formrec.setColumn(0, "orddeptcd", ds_data_formrec.getColumn(0, "recvdeptcd"));
  96. ds_send_saverecinfo_formrec.addColumn("anstflag", "string");
  97. ds_send_saverecinfo_formrec.setColumn(0, "anstflag", ivw_base.objects["ds_init_cond"] == null ? "" : ds_init_cond.getColumn(0, "anstflag"));
  98. }
  99. function fSetSaveComnFormRecInfo_old()
  100. {
  101. var msgYn = opener.window.javascript.getParameter("SaveMsgYn");
  102. if (fGetFormRec("status") == "D" && msgYn != "N")
  103. {
  104. var rtnVal = messageBox("기록을 ", "Q001");
  105. if (rtnVal == "7")
  106. return "N";
  107. }
  108. else
  109. {
  110. var rtn = fCheckChangeData();
  111. if (rtn == "N")
  112. {
  113. return "N";
  114. }
  115. else if (rtn == "M")
  116. {
  117. fSetFormRec("status", "M");
  118. }
  119. else
  120. {
  121. copyNodeset(gPageInfo.recItemRef, gPageInfo.recItemRef2, "replace", model, model);
  122. grd_recitem.rebuild();
  123. var colref_degnitemkind = grd_recitem.colref("degnitemkind");
  124. var colref_colno = grd_recitem.colref("colno");
  125. var colref_recimge = grd_recitem.colref("recimge");
  126. for (var i = 0; i < grd_recitem.rows; i++)
  127. {
  128. grd_recitem.rowstatus(i) = 1;
  129. if (grd_recitem.valueMatrix(i, colref_degnitemkind) == "IMG" &&
  130. grd_recitem.valueMatrix(i, colref_colno) != "FILE")
  131. {
  132. grd_recitem.valueMatrix(i, colref_recimge) = "";
  133. }
  134. }
  135. model.makeValue("/root/send/saverecinfo/recitem", grd_recitem.getUpdateData());
  136. }
  137. }
  138. copyNodeset("/root/send/saverecinfo/formrec", gPageInfo.recMastRef, "replace", model, model);
  139. }
  140. /**
  141. * @desc : 기록 서명정보 가져오기
  142. * @id :
  143. * @event : xforms-ready
  144. * @return : void
  145. * @authur : 박종훈
  146. */
  147. function fGetSignRecInfo()
  148. {
  149. var sign_path = "/root/temp/signinfo";
  150. var sign_path_mast = sign_path + "/환자기록정보";
  151. var sign_path_detl = sign_path + "/환자기록내용";
  152. model.makeNode(sign_path_mast + "/등록번호", model.getValue());
  153. }
  154. /**
  155. * @desc : 기록 저장 로직
  156. * @id :
  157. * @event : xforms-ready
  158. * @return : void
  159. * @authur : 박종훈
  160. */
  161. var gSubmitSaveFlag = true;
  162. function fSaveComnFormRecInfo(signedYn)
  163. {
  164. sysf_trace_emr("****** fSaveComnFormRecInfo("+signedYn+") 기록 저장 로직 MMR01300 *****");
  165. var savedInfo = new SAVED_INFO();
  166. if (!utlf_isNull(signedYn))
  167. {
  168. fSetFormRec("signedyn", signedYn);
  169. }
  170. //2009.12.17 안치원 submitID설정값을 child에서 할 수 있도록
  171. //저장직전에 child에서 설정된 submitID로 설정된다.
  172. var submitID = gSubmitID;
  173. try {
  174. var childSubmitID = ivw_base.getSubmitID_MMR01300I();
  175. if (! utlf_isNull(childSubmitID)) {
  176. submitID = childSubmitID;
  177. }
  178. } catch (e) {
  179. sysf_catchTrace(e);
  180. }
  181. if (fSetSaveComnFormRecInfo() == "N")
  182. {
  183. return savedInfo;
  184. }
  185. // var stext_path = "ds_send_saverecinfo_formrec_certcnts";
  186. // var bfstext_path = "ds_send_saverecinfo_formrec_bfcertcnts"; //인증전데이터
  187. // var espiyn_path = "ds_send_saverecinfo_formrec_espiyn"; //인증저장여부
  188. var nonCert = oOpener.frmf_getParameter("SSMMR01100_nonCert");
  189. frmf_setParameter("SSMMR01100_nonCert", "");
  190. if (signedYn == "Y")
  191. {
  192. var sUserID = sysf_getUserInfo("userid");
  193. //이미지 삭제관련
  194. dsf_createDs("ds_remtmp_formrec");
  195. ds_remtmp_formrec.copyData(ds_data_formrec);
  196. dsf_createDs("ds_remitemtmp_recitem");
  197. ds_remitemtmp_recitem.copyData(ds_data_recitem);
  198. var itemNode = ds_remitemtmp_recitem;
  199. for(var i = 0; i < itemNode.rowcount; i++)
  200. {
  201. var sDgnItmKind = itemNode.getColumn(i, "degnitemkind");
  202. if (sDgnItmKind == "IMG" || sDgnItmKind == "FDG")
  203. {
  204. itemNode.setColumn(i, "srcimge", "");
  205. itemNode.setColumn(i, "recimge", "");
  206. itemNode.setColumn(i, "reccnts", "");
  207. }
  208. }
  209. dsf_copyDsList(["ds_remtmp_recitem"], ["ds_remitemtmp_recitem"], "append", this, this);
  210. //copyNodeset("/root/remtmp/recinfo/recitem", "/root/remitemtmp/recitem", "append", model, model);
  211. dsf_deleteDs("ds_remitemtmp_recitem"); //삭제를 위한 기록항목 인스턴스 삭제
  212. //이미지 삭제관련
  213. var objDomParser = new DomParser;
  214. var objDOM = objDomParser.parseFromString("<recinfo></recinfo>");
  215. rptf_setNodeListToDOM(objDOM, "/recinfo/formrec", ds_remtmp_formrec); // 데이터셋 1
  216. rptf_setNodeListToDOM(objDOM, "/recinfo/recitem", ds_remtmp_recitem); // 데이터셋 2
  217. // var xml = rptf_getXMLString(ds_remtmp_formrec, "recinfo/formrec")
  218. // var xml2 = rptf_getXMLString(ds_remtmp_recitem, "recinfo/formrec")
  219. // sysf_trace_emr(xml+xml2);
  220. sysf_trace(objDOM.documentElement.source);
  221. var signrecinfo = objDOM.documentElement.source;
  222. //var signrecinfo = model.instances(0).selectSingleNode("/root/remtmp/recinfo").xml; //이미지 삭제된 인스턴스
  223. dsf_deleteDs("ds_remtmp_formrec"); //삭제를 위한 기록항목 인스턴스 삭제
  224. dsf_deleteDs("ds_remtmp_recitem");
  225. if (nonCert == "Y")
  226. {
  227. var signedrecinfo = "";
  228. }
  229. else
  230. {
  231. //2010.02.25 안치원 - 입퇴원요약기록 - 퇴원처방 입력방법 변경(팝업)
  232. if (ds_hidden_loader_ini.getColumn(0, "autoSaveYn") == "Y") { //model.getValue(PATH_LOADER_INI+"/autoSaveYn")
  233. // KNUH_20100820_박성호_start 인증서 안나오게 수정
  234. var signedrecinfo = zesf_SignData(signrecinfo, sUserID, false);
  235. //var signedrecinfo = "-";
  236. // KNUH_20100820_박성호_end
  237. }
  238. else {
  239. //서식검색창이 포커스는 잡는 문제로 진료기록메인에서 인증창 호출 할 경우 기록메인의 저장로직 타도록 수정
  240. //2008-08-01 박종훈
  241. var oprnerId = oOpener.frmf_getScreenID();
  242. //[요청번호:13338, Task No:52246, 우선순위:SY] 2010.04.09 박종훈수정(내원구분이 S(건진)인 경우 O로 넘겨줌)
  243. var sChosflag = fGetFormRec("chosflag");
  244. if (sChosflag == "S")
  245. {
  246. sChosflag = "O";
  247. }
  248. if(oprnerId == "SMMMR00100")
  249. {
  250. // KNUH_20100820_박성호_start 인증서 안나오게 수정
  251. var signedrecinfo = oOpener.fMakeSignData(signrecinfo, sChosflag, sUserID);
  252. //var signedrecinfo = "-";
  253. // KNUH_20100820_박성호_end
  254. }
  255. else
  256. {
  257. // 입원 또는 응급일 경우 // 20111201 knuh 최원돈
  258. // 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음(1/6)
  259. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  260. // 하드코드 값 가져오기 로직
  261. var ls_emrinptsavetime = lf_getHardCDList("Y", 401, 3);
  262. var ll_emrinptsavetime = utlf_isNull(ls_emrinptsavetime) ? 0 : parseInt(ls_emrinptsavetime) * -1;
  263. // SMAER00400_결과관리(서식).xrw 에서는 모두 외래기준으로 인증서를 띄우도록 적용 // 20111202 knuh 최원돈
  264. // gSubmitSaveFlag 는 SMAER00400_결과관리(서식)에서만 사용하여서 적용함
  265. //if (sChosflag == "O"
  266. if ( sChosflag == "O"
  267. || !gSubmitSaveFlag)
  268. {
  269. // KNUH_20100820_박성호_start 인증서 안나오게 수정
  270. var signedrecinfo = zesf_SignData(signrecinfo, sUserID, false); //외래환자일경우 한번만 인증서 띄움
  271. //var signedrecinfo = "-"; //외래환자일경우 한번만 인증서 띄움
  272. // KNUH_20100820_박성호_end
  273. }
  274. // 입원 또는 응급일 경우 // 20111201 knuh 최원돈
  275. // 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음(2/6)
  276. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  277. // 띄우지 않는 로직
  278. else if ( ( sChosflag == "I"
  279. || sChosflag == "E")
  280. && ll_emrinptsavetime < 0
  281. && sysf_getGlobalVariable("emrinptsavetime") >= utlf_getCurrentDateTime().toDate("YYYYMMDD hhmmss").getAddDate(ll_emrinptsavetime, "m").getDateFormat("YYYYMMDD hhmmss"))
  282. {
  283. var signedrecinfo = zesf_SignData(signrecinfo, sUserID, false); //외래환자일경우 한번만 인증서 띄움
  284. }
  285. else
  286. {
  287. // KNUH_20100820_박성호_start 인증서 안나오게 수정
  288. var signedrecinfo = zesf_SignData(signrecinfo, sUserID, true);
  289. //var signedrecinfo = "-";
  290. // KNUH_20100820_박성호_end
  291. }
  292. }
  293. if (utlf_isNull(signedrecinfo))
  294. {
  295. frmf_setParameter("mediRecCnclYn", "Y");
  296. }
  297. }
  298. }
  299. if (utlf_isNull(signedrecinfo) && nonCert != "Y")
  300. {
  301. fSetFormRec("signedyn", "N");
  302. return savedInfo;
  303. }
  304. else
  305. {
  306. fSetFormRec("espiyn", signedYn);
  307. ds_send_saverecinfo_formrec.setColumn(0, "espiyn", signedYn);
  308. // model.makeValue(espiyn_path, signedYn);
  309. }
  310. sysf_trace_emr(ds_send_saverecinfo_formrec.saveXML());
  311. ds_send_saverecinfo_formrec.addColumn("bfcertcnts", "string");
  312. ds_send_saverecinfo_formrec.addColumn("certcnts", "string");
  313. ds_send_saverecinfo_formrec.setColumn(0, "bfcertcnts", signrecinfo);
  314. ds_send_saverecinfo_formrec.setColumn(0, "certcnts", signedrecinfo);
  315. // model.makeValue(bfstext_path, signrecinfo);
  316. // model.makeValue(stext_path, signedrecinfo);
  317. }
  318. else
  319. {
  320. // var stext_path = "ds_send_saverecinfo_formrec_certcnts";
  321. // var bfstext_path = "ds_send_saverecinfo_formrec_bfcertcnts"; //인증전데이터
  322. // var espiyn_path = "ds_send_saverecinfo_formrec_espiyn"; //인증저장여부
  323. fSetFormRec("espiyn", "N");
  324. ds_send_saverecinfo_formrec.setColumn(0, "espiyn", "N"); //인증저장여부
  325. ds_send_saverecinfo_formrec.setColumn(0, "certcnts", "");
  326. // model.makeValue(espiyn_path, "N");
  327. // model.makeValue(stext_path, "");
  328. }
  329. if (gSubmitSaveFlag)
  330. {
  331. sysf_trace_emr("@@@@@ submitID : " + submitID + " @@@@@@");
  332. var submit = false;
  333. if( this.objects["ds_main_savedinfo_rsltmsg"] == null ) dsf_createDs("ds_main_savedinfo_rsltmsg");
  334. if( submitID == "TXMMR01303" ){
  335. dsf_setDefaultVal(ds_send_saverecinfo_formrec, "cosignyn:N,addexecflag:''");
  336. dsf_setTypeFormat(ds_send_saverecinfo_formrec,"cretno:INT");
  337. dsf_setDefaultVal(ds_send_saverecinfo_recitem, "formdegnseq:0,degnitemlevlno:1,supdegnitemno:0");
  338. dsf_setTypeFormat(ds_send_saverecinfo_recitem,"recitemno:INT^degnitemno:INT^degnitemlevlno:INT^supdegnitemno:INT^recimge:BLOB^srcimge:BLOB");
  339. sysf_trace_emr(ds_send_saverecinfo_recitem.saveXML());
  340. var oParam = {};
  341. oParam.id = "TXMMR01303";
  342. oParam.service = "medirecapp.ExtnMediRec";
  343. oParam.method = "reqExeExtnFormRec";
  344. oParam.inds = "formrec=ds_send_saverecinfo_formrec recitem=ds_send_saverecinfo_recitem";
  345. oParam.outds = "ds_main_savedinfo_rsltmsg=rsltmsg";
  346. oParam.async = false;
  347. oParam.callback = "cf_TXMMR01303";
  348. tranf_submit(oParam);
  349. if( arErrorCode.pop("TXMMR01303") > -1 ){
  350. submit = true;
  351. }
  352. }
  353. sysf_trace_emr("submit : " + submit);
  354. if (submit)
  355. {
  356. // gPageInfo.savedInfoRef : ds_main_savedinfo
  357. var mess = ds_main_savedinfo_rsltmsg.getColumn(0, "msg");
  358. //2010.07.22 안치원 - 진료의뢰 회신시 회신내용 저장되지 않는 오류 해결을 위해 경고창을 표시하며 인스턴스와 클라이언트로그를 메일로 발송한다.
  359. var errFlag = "[ERR_CNST_RECV_CNTS_EMPTY]";
  360. if (mess.indexOf(errFlag) == 0) {
  361. sendSystemMail_MMR071(errFlag, null);
  362. system.setClipboard("CF_TEXT", ds_main_recinfo_recitem.lookup("degnitemlevlcd", "0011529.0000146", "reccnts"));
  363. //window.clipBoardData = model.getValue("/root/main/recinfo/recitem[degnitemlevlcd='0011529.0000146']/reccnts");
  364. sysf_messageBox(mess, "E", "");
  365. dsf_makeValue(ds_main_savedinfo_rsltmsg, "msg", "1", 0);
  366. //model.makeValue(gPageInfo.savedInfoRef + "/rsltmsg/msg", "1");
  367. mess = ds_main_savedinfo_rsltmsg.getColumn(0, "msg");
  368. }
  369. if (fGetFormRec("status") == "C" && mess == "1")
  370. {
  371. //sysf_messageBox("신규작성 되었습니다.", "I", "");
  372. }
  373. else if (fGetFormRec("status") == "U")
  374. {
  375. if(mess == "1")
  376. {
  377. if (fGetFormRec("cosignyn") == "Y")
  378. {
  379. //2010-03-31 오전 11:19:16 강지훈 추가 : 최종진단명 요약지 추가
  380. fSetFormRec("cosign", "Y");
  381. var lastDiagSaveFlag = frmf_getParameter("SSMMR01100_fChkLastDiag");
  382. if(lastDiagSaveFlag == "Y"){
  383. sysf_messageBox("저장되었습니다.", "I", "");
  384. }
  385. else{
  386. sysf_messageBox("STAFF SIGN 저장되었습니다.", "I", "");
  387. }
  388. }
  389. //messageBox("수정저장 되었습니다.", "I", "");
  390. }
  391. else
  392. {
  393. sysf_messageBox(mess, "I", "");
  394. }
  395. }
  396. else if (fGetFormRec("status") == "D")
  397. {
  398. if(mess == "1")
  399. {
  400. //messageBox("삭제 되었습니다.", "I", "");
  401. }
  402. else
  403. {
  404. sysf_messageBox(mess, "I", "");
  405. }
  406. frmf_setParameter("afterRecDelete", "Y");
  407. }
  408. else
  409. {
  410. sysf_messageBox("저장에 실패하였습니다.", "I", "");
  411. }
  412. fSetFormRec("espiyn", fGetFormRec("signedyn"));
  413. g_formrec_newimge_cosign = fGetCSV("formrec");
  414. g_recitem_newimge_cosign = fGetCSV("ds_hidden_recitem");//gPageInfo.recItemRef2
  415. // 입원 또는 응급일 경우 // 20111201 knuh 최원돈
  416. // 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음(3/6)
  417. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  418. // 인증저장된 시간을 저장.
  419. if ((fGetFormRec("chosflag") == "I" || fGetFormRec("chosflag") == "E")&& signedYn == "Y" ) {
  420. sysf_setGlobalVariable("emrinptsavetime", utlf_getCurrentDateTime());
  421. }
  422. } else {
  423. // var type = model.getValue(gvErrorMsgPath+"/type");
  424. // var code = model.getValue(gvErrorMsgPath+"/code");
  425. // var msg = model.getValue(gvErrorMsgPath+"/msg");
  426. // var desc = model.getValue(gvErrorMsgPath+"/description");
  427. }
  428. if (ds_main_savedinfo_rsltmsg.getColumn(0, "msg") == "1")
  429. {
  430. //2010.01.03 안치원 - formrecseq 지수로 표현되는 오류수정
  431. savedInfo.formrecseq = ds_main_savedinfo_rsltmsg.getColumn(0, "formrecseq");
  432. savedInfo.rechistseq = ds_main_savedinfo_rsltmsg.getColumn(0, "rechistseq");
  433. g_formrec_oldimge = g_formrec_newimge;
  434. g_recitem_oldimge = g_recitem_newimge;
  435. if (ds_main_savedinfo_rsltmsg.getColumn(0, "cosign") == "Y")
  436. {
  437. grup_btn.btn_cosign.enable = false;
  438. if (isProgForm())
  439. {
  440. if(fGetFormRec("srcformcd") == "0000000680"){
  441. var childrenObj = ivw_base.components;
  442. for(i=0; i< childrenObj.length; i++){
  443. childObj = childrenObj[i];
  444. if (childObj.name == "btn_lastdiag_0001013001"){
  445. childObj.enable = true;
  446. }
  447. else{
  448. childObj.enable = false;
  449. }
  450. }
  451. }
  452. else if(ivw_base.enable){
  453. ivw_base.enable = false;
  454. }
  455. }
  456. }
  457. else
  458. {
  459. grup_btn.btn_cosign.enable = true;
  460. //2010-04-07 강지훈 수정 : TF버그로 인해 분기. TF버그 수정반영되면 수정해야함.
  461. if (isProgForm() && !ivw_base.enable)
  462. {
  463. ivw_base.enable = true;
  464. }
  465. else if(isProgForm() && fGetFormRec("srcformcd") == "0000000680"){
  466. ivw_base.enable = true;
  467. }
  468. }
  469. }
  470. if (fGetFormRec("status") != "D" && savedInfo.formrecseq != 0)
  471. {
  472. fSetFormRec("status", "U");
  473. fSetFormRec("formrecseq", savedInfo.formrecseq);
  474. fSetFormRec("lastrechistseq", savedInfo.rechistseq);
  475. fSetFormRec("espiseq", ds_main_savedinfo_rsltmsg.getColumn(0, "espiseq"));
  476. }
  477. if(mess == "1" || !utlf_isNull(savedInfo.formrecseq))
  478. {
  479. return savedInfo;
  480. }
  481. }
  482. else
  483. {
  484. savedInfo.rechistseq = -100
  485. return savedInfo;
  486. }
  487. }
  488. function cf_TXMMR01303(sSvcId, nErrorCode, sErrorMsg) {
  489. arErrorCode.push(sSvcId, nErrorCode);
  490. if(nErrorCode < 0) {
  491. sysf_trace_emr("***** cf_TXMMR01303 nErrorCode *****");
  492. agv_objAppBottomPath.form.stt_statusMsg.text = sErrorMsg;
  493. return;
  494. }
  495. sysf_trace_emr("***** cf_TXMMR01303 *****");
  496. dsf_setDefaultVal(ds_main_savedinfo_rsltmsg, "cosign:N");
  497. }
  498. /**
  499. * @desc : 기록 저장 후 정보 셋팅
  500. * @id :
  501. * @event : xforms-ready
  502. * @return : void
  503. * @authur : 박종훈
  504. */
  505. function fSetSavedInfo(formrecseq, rechistseq, espiseq)
  506. {
  507. // debugger;
  508. g_formrec_oldimge = g_formrec_newimge;
  509. g_recitem_oldimge = g_recitem_newimge;
  510. if (fGetFormRec("status") != "D")
  511. {
  512. fSetFormRec("status", "U");
  513. fSetFormRec("formrecseq", formrecseq);
  514. fSetFormRec("lastrechistseq", rechistseq);
  515. fSetFormRec("espiseq", espiseq);
  516. }
  517. }
  518. /**
  519. * @desc : 기록 내용 조회
  520. * @id :
  521. * @event : xforms-ready
  522. * @return : void
  523. * @authur : 박종훈
  524. */
  525. function fGetComnFormRecInfo(formrecseq)
  526. {
  527. model.makeValue("/root/send/reqrec/formrecseq", formrecseq);
  528. submit("TRMMR01301");
  529. doReplaceLtGt("/root/temp2/getrecinfo/recinfo/recitem");
  530. if (gMediRecMain && isOpenModalForm(model.getValue("/root/temp2/getrecinfo/recinfo/formrec/formprogflag")))
  531. {
  532. return true;
  533. }
  534. else
  535. {
  536. //fInitDataSrc();
  537. //var pageInfo = new PAGEINFO();
  538. //copyNodeset(pageInfo.recRef, pageInfo.popRecinfoRef);
  539. // 20080519 main3-> temp2/getrecinfo 소스 튜닝
  540. //model.removenodeset("/root/temp2");
  541. return false;
  542. }
  543. }
  544. /**
  545. * @desc : 해당 값을 인스턴스에 추가
  546. * @id :
  547. * @event : xforms-ready
  548. * @return : void
  549. * @authur : 박종훈
  550. */
  551. function fSetFormRec(key, val)
  552. {
  553. dsf_makeValue(ds_data_formrec, key, "string", val);
  554. //model.makeValue(gPageInfo.recMastRef + "/" + key, val);
  555. }
  556. /**
  557. * @desc : 해당 값을 인스턴스에서 가져오기
  558. * @id :
  559. * @event : xforms-ready
  560. * @return : void
  561. * @authur : 박종훈
  562. */
  563. function fGetFormRec(key)
  564. {
  565. return utlf_transNullToEmpty(ds_data_formrec.getColumn(0, key));
  566. }
  567. /**
  568. * @desc : 해당 값을 인스턴스에 추가(확장서식)
  569. * @id :
  570. * @event : xforms-ready
  571. * @return : void
  572. * @authur : 박종훈
  573. */
  574. function fSetExtnInfo(key, val)
  575. {
  576. model.makeValue(gPageInfo.recMastRef + "/" + key, val);
  577. }
  578. /**
  579. * @desc : 해당 값을 인스턴스에서 가져오기(확장서식)
  580. * @id :
  581. * @event : xforms-ready
  582. * @return : void
  583. * @authur : 박종훈
  584. */
  585. function fGetExtnInfo(key)
  586. {
  587. return model.getValue(gPageInfo.recMastRef + "/" + key);
  588. }
  589. /**
  590. * @desc : path에 해당하는 노드의 값을 CSV형태로 가져오기
  591. * @id :
  592. * @event : xforms-ready
  593. * @return : void
  594. * @authur : 박종훈
  595. */
  596. function fGetCSVByRecInfo(path)
  597. {
  598. if (path == null)
  599. path = "/root/temp2/getrecinfo/recinfo";
  600. var nodes = model.instances(0).selectNodes(path + "/formrec");
  601. var sFormRec = getNodeListCSV(nodes);
  602. nodes = model.instances(0).selectNodes(path + "/recitem");
  603. var sRecItem = getNodeListCSV(nodes);
  604. var info = sFormRec +INFO_CSV_DEL+ sRecItem;
  605. return info;
  606. }
  607. /**
  608. * @desc : CSV형태의 값을 인스턴스에 추가
  609. * @id :
  610. * @event : xforms-ready
  611. * @return : void
  612. * @authur : 박종훈
  613. */
  614. function fSetRecInfoByCSV(csvStr)
  615. {
  616. var info = csvStr.split(INFO_CSV_DEL);
  617. setCSVToNode(gPageInfo.recRef, info[0], "formrec");
  618. setCSVToNode(gPageInfo.recRef, info[1], "recitem");
  619. }
  620. /**
  621. * @desc : 변경된 데이터 여부 검사
  622. * @id :
  623. * @event : xforms-ready
  624. * @return : void
  625. * @authur : 박종훈
  626. */
  627. function fCheckChangeData()
  628. {
  629. sysf_trace_emr("***** fCheckChangeData() 변경된 데이터 여부 검사 MMR01300*****");
  630. var rtn;
  631. var ischg_formrec = false;
  632. var ischg_recitem = false;
  633. g_formrec_newimge = fGetCSV("formrec");
  634. g_recitem_newimge = fGetCSV("ds_hidden_recitem");
  635. if (fGetFormRec("status") == "C")
  636. {
  637. var nodelist = this.objects["ds_hidden_recitem"];
  638. var nodelistCnt = nodelist == null ? 0 : nodelist.rowcount;
  639. if (nodelistCnt == 0)
  640. {
  641. sysf_messageBox("저장 할 데이터가 ", "I004");
  642. rtn = "N";
  643. }
  644. else
  645. {
  646. rtn = "Y";
  647. }
  648. }
  649. else if (fGetFormRec("status") == "U")
  650. {
  651. if( this.objects["ds_temp_saveimge"] == null ){
  652. dsf_createDs("ds_temp_saveimge");
  653. }
  654. dsf_makeValue(ds_temp_saveimge, "status", "string", fGetFormRec("status"), 0);
  655. dsf_makeValue(ds_temp_saveimge, "oldimge", "blob", g_formrec_oldimge, 0);
  656. dsf_makeValue(ds_temp_saveimge, "newimge", "blob", g_formrec_newimge, 0);
  657. // model.makeValue("/root/temp/saveimge/status", fGetFormRec("status"));
  658. // model.makeValue("/root/temp/saveimge/oldimge", g_formrec_oldimge);
  659. // model.makeValue("/root/temp/saveimge/newimge", g_formrec_newimge);
  660. if (g_formrec_oldimge != g_formrec_newimge)
  661. {
  662. ischg_formrec = true;
  663. }
  664. if (g_recitem_oldimge != g_recitem_newimge)
  665. {
  666. ischg_recitem = true;
  667. }
  668. if (fGetFormRec("espiyn") == "N" && fGetFormRec("signedyn") == "Y")
  669. {
  670. rtn = "Y";
  671. }
  672. else if (ischg_formrec == false && ischg_recitem == false)
  673. {
  674. rtn = "N";
  675. sysf_messageBox("수정된 데이터가 ", "I004");
  676. }
  677. else if (ischg_formrec == true && ischg_recitem == false)
  678. {
  679. //rtn = "M"; 20130509 이윤주 수정
  680. rtn = "Y";
  681. }
  682. else
  683. {
  684. rtn = "Y";
  685. }
  686. }
  687. return rtn;
  688. }
  689. /**
  690. * @desc : path의 노들르 CSV로 가져옴
  691. * @id :
  692. * @event : xforms-ready
  693. * @return : void
  694. * @authur : 박종훈
  695. */
  696. function fGetCSV( path )
  697. {
  698. sysf_trace_emr("***** MMR01300 fGetCSV( "+path+" ) *****");
  699. if (path == "formrec")
  700. {
  701. return fGetFormRec("formrecdd") +"▦"+ fGetFormRec("formrechm") +"▦"+ fGetFormRec("formrecextnnm");
  702. }
  703. else// if (flag == "recitem")
  704. {
  705. var nodes = this.objects[ path ];
  706. var saveRgstInfo = "";
  707. if( !utlf_isNull(nodes) ){
  708. sysf_trace_emr("jw.choe rectermcd != '' || reccnts != '' null 체크도 해야하나? ");
  709. nodes.filter("!utlf_isNull(rectermcd) || !utlf_isNull(reccnts)");
  710. for (var i=0; i<nodes.rowcount; i++)
  711. {
  712. saveRgstInfo = saveRgstInfo.concat(nodes.getColumn(i, "rectermcd"));
  713. saveRgstInfo = saveRgstInfo.concat(nodes.getColumn(i, "rectermnm"));
  714. saveRgstInfo = saveRgstInfo.concat(nodes.getColumn(i, "reccnts"));
  715. saveRgstInfo = saveRgstInfo.concat(".");
  716. }
  717. nodes.filter("");
  718. }
  719. sysf_trace_emr("***** return saveRgstInfo : " + saveRgstInfo + " *****");
  720. return saveRgstInfo;
  721. }
  722. }
  723. function fSetOldFormRecInfo()
  724. {
  725. // debugger;
  726. g_formrec_oldimge = fGetCSV("formrec");
  727. g_recitem_oldimge = fGetCSV(gPageInfo.recItemRef);
  728. }
  729. /**
  730. * @desc : 기록초기화(노드 삭제)
  731. * @id :
  732. * @event : xforms-ready
  733. * @return : void
  734. * @authur : 박종훈
  735. */
  736. function fInitDataSrc()
  737. {
  738. sysf_trace_emr("***** MMR01300 fInitDataSrc() *****");
  739. dsf_clearDsList(arrDsRecinfo, this);
  740. dsf_clearDsList(arrDsExtnRecinfo, this);
  741. // model.removeNodeset(gPageInfo.recRef);
  742. // model.removeNodeset(gPageInfo.extnrecRef);
  743. }
  744. /**
  745. * @desc : 기록관련 노드 초기화
  746. * @id :
  747. * @event : xforms-ready
  748. * @return : void
  749. * @authur : 박종훈
  750. */
  751. function fSetNewFormRec()
  752. {
  753. sysf_trace_emr("***** MMR01300 fSetNewFormRec() 기록관련 노드 초기화 *****");
  754. fInitDataSrc();
  755. fSetFormRec("status" , "C");
  756. fSetFormRec("pid" , fGetPamInfo("pid"));
  757. if (fGetPamInfo("ioflag") == "O" || fGetPamInfo("ioflag") == "S")
  758. {
  759. fSetFormRec("orddd" , fGetPamInfo("orddd"));
  760. fSetFormRec("orddrid" , fGetPamInfo("orddrid"));
  761. }
  762. else
  763. {
  764. fSetFormRec("orddd" , fGetPamInfo("indd"));
  765. fSetFormRec("orddrid" , fGetPamInfo("medispclid"));
  766. }
  767. fSetFormRec("cretno" , fGetPamInfo("cretno"));
  768. if (fGetPamInfo("orddeptcd") == "2280000000")
  769. fSetFormRec("chosflag" , "E");
  770. else
  771. fSetFormRec("chosflag" , fGetPamInfo("ioflag"));
  772. fSetFormRec("orddeptcd" , fGetPamInfo("orddeptcd"));
  773. fSetFormRec("formrecdeptcd" , sysf_getUserInfo("dutplcecd"));
  774. fSetFormRec("formrecdeptnm" , sysf_getUserInfo("dutplcenm"));
  775. fSetFormRec("formrecuserid" , sysf_getUserInfo("userid"));
  776. fSetFormRec("formrecusernm" , sysf_getUserInfo("usernm"));
  777. fSetFormRec("lastrechistseq" , 0);
  778. fSetFormRec("delyn" , "N");
  779. fSetFormRec("valiyn" , "Y");
  780. fSetFormRec("formcd" , fGetFormMast("formcd"));
  781. fSetFormRec("srcformcd" , fGetFormMast("srcformcd"));
  782. fSetFormRec("formfromdt" , fGetFormMast("formfromdt"));
  783. fSetFormRec("formdegnseq" , fGetFormMast("formdegnseq"));
  784. fSetFormRec("formrecextnnm" , "");
  785. //2008/01/24 박종훈 수정(미비서식 기록시 기록일자를 받아서 셋한다)
  786. var formrecdd = ""
  787. var formrecdd = frmf_getParameter("SSMMR01100_formrecdd");
  788. var formrechm = frmf_getParameter("SSMMR01100_formrechm");
  789. //var formrechm = "0000";
  790. var recddyn = false;
  791. if (utlf_isNull(formrechm))
  792. {
  793. formrechm = utlf_getCurrentTime().substring(0, 4);
  794. }
  795. if (utlf_isNull(formrecdd) && (fGetFormRec("chosflag") == "O" || fGetFormRec("chosflag") == "S"))
  796. {
  797. var rsrvflag = ds_main_paminfo.getColumn(0, "rsrvflag");
  798. formrecdd = ds_main_paminfo.getColumn(0, "orddd");
  799. formrechm = utlf_getCurrentTime().substring(0, 4);
  800. }
  801. else
  802. {
  803. if (fGetFormRec("srcformcd") == '0000000003')
  804. {
  805. if (!utlf_isNull(fGetPamInfo("ertransyn")) && fGetPamInfo("ertransyn") != "N")
  806. {
  807. //기록일시 셋팅(응급에서 입원 전환된 일시)
  808. if (!utlf_isNull(fGetPamInfo("ercareinrmdd")))
  809. {
  810. formrecdd = fGetPamInfo("ercareinrmdd");
  811. }
  812. if (!utlf_isNull(fGetPamInfo("ercareinrmtm")))
  813. {
  814. formrechm = fGetPamInfo("ercareinrmtm");
  815. }
  816. }
  817. else
  818. {
  819. //기록일시 셋팅(입원일시)
  820. if (!utlf_isNull(fGetPamInfo("indd")))
  821. {
  822. formrecdd = fGetPamInfo("indd");
  823. }
  824. if (!utlf_isNull(fGetPamInfo("intm")))
  825. {
  826. formrechm = fGetPamInfo("intm");
  827. }
  828. }
  829. }
  830. else if (fGetFormRec("srcformcd") == "0000000679")
  831. {
  832. //응급실 입실시간
  833. if (!utlf_isNull(fGetPamInfo("calcdd")) && fGetPamInfo("calcdd") != "00000000")
  834. {
  835. formrecdd = fGetPamInfo("calcdd");
  836. }
  837. if (!utlf_isNull(fGetPamInfo("calctm")) && fGetPamInfo("calctm") != "0000")
  838. {
  839. formrechm = fGetPamInfo("calctm");
  840. }
  841. }
  842. else if (fGetFormRec("srcformcd") == "0000000680")
  843. {
  844. //기록일시 셋팅(입원일시)
  845. if (!utlf_isNull(fGetPamInfo("indd")))
  846. {
  847. formrecdd = fGetPamInfo("indd");
  848. }
  849. if (!utlf_isNull(fGetPamInfo("intm")))
  850. {
  851. formrechm = fGetPamInfo("intm");
  852. }
  853. }
  854. }
  855. if (!utlf_isNull(formrecdd))
  856. {
  857. recddyn = true;
  858. }
  859. if(recddyn)
  860. {
  861. fSetFormRec("formrecdd" , formrecdd);
  862. fSetFormRec("formrechm" , formrechm);
  863. }
  864. else
  865. {
  866. //2010.02.03 dhkim - 퇴원환자 상단정보 올린 경우 현재일자로 세팅되는 부분 문제
  867. //(퇴원환자는 퇴원일자, 외래환자는 외래진료일자로 세팅하도록 변경)
  868. if(fGetPamInfo("ioflag") == "O"){
  869. formrecdd = fGetPamInfo("orddd");
  870. }else{
  871. //2010.02.18 dhkim 가퇴원 추가 , 퇴원일없을경우 처리, 입원상태의 경우 현재일자로 세팅
  872. if(fGetPamInfo("indschacptstat") == "D" || fGetPamInfo("indschacptstat") == "T"){
  873. formrecdd = fGetPamInfo("dschdd");
  874. formrechm = fGetPamInfo("dschtm");
  875. }else{
  876. //2010.02.18 dhkim
  877. //입원상태일 경우는 현재일자로 세팅함
  878. formrecdd = utlf_getCurrentDate();
  879. formrechm = utlf_getCurrentTime().substring(0, 4);
  880. }
  881. }
  882. //2010.02.08 dhkim 널처리 현재일시추가
  883. if (utlf_isNull(formrechm))
  884. {
  885. formrechm = utlf_getCurrentTime().substring(0, 4);
  886. }
  887. fSetFormRec("formrecdd" , formrecdd);
  888. fSetFormRec("formrechm" , formrechm);
  889. }
  890. fSetFormRec("signedyn" , "N");
  891. }
  892. /*******************************************************************************************************
  893. 튜닝 작업
  894. *******************************************************************************************************/
  895. /**
  896. * @desc : 기록 내용 조회
  897. * @id :
  898. * @event : xforms-ready
  899. * @return : void
  900. * @authur : 박종훈
  901. */
  902. function fGetRecFormInfo(formrecseq)
  903. {
  904. sysf_trace_emr("***** MMR01300 fGetRecFormInfo("+formrecseq+") *****");
  905. var objColInfo = new Array();
  906. objColInfo.push({col: "formrecseq", type:"BIGDECIMAL", size:256, val: formrecseq});
  907. dsf_createDsRow("ds_send_reqrec", objColInfo);
  908. var oParam = {};
  909. oParam.id = "TRMMR01301";
  910. oParam.service = "medirecapp.ComnMediRec";
  911. oParam.method = "reqGetFormRecInfo";
  912. oParam.inds = "req=ds_send_reqrec";
  913. oParam.outds = "ds_data_formrec=formrec ds_data_recitem=recitem";
  914. oParam.async = false;
  915. oParam.callback = "cf_TRMMR01301";
  916. tranf_submit(oParam);
  917. if(arErrorCode.pop("TRMMR01301") > -1)
  918. {
  919. doReplaceLtGt(ds_data_recitem);
  920. return true;
  921. }
  922. return false;
  923. }
  924. function cf_TRMMR01301(sSvcId, nErrorCode, sErrorMsg) {
  925. arErrorCode.push(sSvcId, nErrorCode);
  926. if(nErrorCode < 0) return;
  927. //sysf_trace_emr("***** cf_TRMMR01301 *****");
  928. }
  929. /**
  930. * @desc : 코사인시 변경된 데이터 여부 검사
  931. * @id :
  932. * @event : xforms-ready
  933. * @return : void
  934. * @authur : 박종훈
  935. */
  936. function fCheckChangeDataForCosign()
  937. {
  938. sysf_trace_emr("***** fCheckChangeDataForCosign() MMR01300 *****");
  939. //debugger;
  940. var rtn;
  941. var ischg_formrec = false;
  942. var ischg_recitem = false;
  943. if (isProgForm())
  944. {
  945. ivw_base.getSaveComnFormData(null, "1");
  946. }
  947. else
  948. {
  949. ivw_base.getSaveData("ds_temp_sort_recitem", "replace", this, null, null);
  950. SortRecItem();
  951. }
  952. g_formrec_newimge = fGetCSV("formrec");
  953. g_recitem_newimge = fGetCSV("ds_hidden_recitem");
  954. dsf_clearDsList(["ds_hidden_recitem"], this);
  955. //model.removeNodeset(gPageInfo.recItemRef2);
  956. if (g_formrec_newimge_cosign != g_formrec_newimge && !utlf_isNull(g_formrec_newimge_cosign) && !utlf_isNull(g_recitem_newimge_cosign))
  957. {
  958. ischg_formrec = true;
  959. }
  960. if (g_recitem_newimge_cosign != g_recitem_newimge)
  961. {
  962. ischg_recitem = true;
  963. }
  964. if (ischg_formrec == false && ischg_recitem == false)
  965. {
  966. rtn = "N";
  967. }
  968. else if (ischg_formrec == true && ischg_recitem == false)
  969. {
  970. rtn = "Y";
  971. }
  972. else
  973. {
  974. rtn = "Y";
  975. }
  976. //이윤주 수정
  977. var srcformcd = fGetFormRec("srcformcd");
  978. if (srcformcd == "0800003416")
  979. {
  980. rtn = "N";
  981. }
  982. return rtn;
  983. }
  984. /**
  985. * @desc : 기록 저장 로직
  986. * @id :
  987. * @event : xforms-ready
  988. * @return : void
  989. * @authur : 박종훈
  990. */
  991. function fSaveComnFormRecInfoForCosign(signedYn)
  992. {
  993. try {
  994. //2010.03.12 안치원 - 수정없이 staff-sign할때 xsltflag가 들어가지 않는 오류수정
  995. ivw_base.window.javascript.getSubmitID_MMR01300I("staffsign");
  996. } catch (e) {
  997. }
  998. var savedInfo = new SAVED_INFO();
  999. var stext_path = "/root/send/saverecinfo/formrec/certcnts";
  1000. var bfstext_path = "/root/send/saverecinfo/formrec/bfcertcnts"; //인증전데이터
  1001. var espiyn_path = "/root/send/saverecinfo/formrec/espiyn"; //인증저장여부
  1002. var saverecinfo_path = "/root/send/saverecinfo/formrec";
  1003. var sUserID = getUserInfo("userid");
  1004. //이미지 삭제관련
  1005. model.makeNode("/root/remtmp");
  1006. model.makeNode("/root/remitemtmp");
  1007. model.makeNode("/root/remtmp/recinfo");
  1008. model.copyNode("/root/remtmp/recinfo", gPageInfo.recRef);
  1009. model.removeNodeset("/root/remtmp/recinfo/recitem");
  1010. model.copyNode("/root/remitemtmp", gPageInfo.recRef);
  1011. model.removeNodeset("/root/remitemtmp/formrec");
  1012. var itemNode = model.instances(0).selectNodes("/root/remitemtmp/recitem");
  1013. for(var i = 0; i < itemNode.length; i++)
  1014. {
  1015. var sDgnItmKind = itemNode.item(i).selectSingleNode("degnitemkind").text;
  1016. if (sDgnItmKind == "IMG" || sDgnItmKind == "FDG")
  1017. {
  1018. model.setValue("/root/remitemtmp/recitem[" + (i + 1) + "]/srcimge", "");
  1019. model.setValue("/root/remitemtmp/recitem[" + (i + 1) + "]/recimge", "");
  1020. model.setValue("/root/remitemtmp/recitem[" + (i + 1) + "]/reccnts", "");
  1021. }
  1022. }
  1023. //model.copyNodeset("/root/remtmp", "/root/remitemtmp");
  1024. copyNodeset("/root/remtmp/recinfo/recitem", "/root/remitemtmp/recitem", "append", model, model);
  1025. model.removeNodeset("/root/remitemtmp"); //삭제를 위한 기록항목 인스턴스 삭제
  1026. //var signrecinfo = model.instances(0).selectSingleNode(gPageInfo.recRef).xml;
  1027. //이미지 삭제관련
  1028. var signrecinfo = model.instances(0).selectSingleNode("/root/remtmp/recinfo").xml; //이미지 삭제된 인스턴스
  1029. model.removeNodeset("/root/remtmp"); //삭제를 위한 기록항목 인스턴스 삭제
  1030. //서식검색창이 포커스는 잡는 문제로 진료기록메인에서 인증창 호출 할 경우 기록메인의 저장로직 타도록 수정
  1031. //2008-08-01 박종훈
  1032. var oprnerId = opener.window.javascript.getScreenID();
  1033. if(oprnerId == "SMMMR00100")
  1034. {
  1035. // KNUH_20100820_박성호_start 인증서 안나오게 수정
  1036. var signedrecinfo = opener.window.javascript.fMakeSignData(signrecinfo, fGetFormRec("chosflag"), sUserID);
  1037. //var signedrecinfo = "-";
  1038. // KNUH_20100820_박성호_end
  1039. }
  1040. else
  1041. {
  1042. // 입원 또는 응급일 경우 // 20111201 knuh 최원돈
  1043. // 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음(4/6)
  1044. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  1045. // 하드코드 값 가져오기 로직
  1046. var ls_emrinptsavetime = fGetHardCDList("Y", 401, 3);
  1047. var ll_emrinptsavetime = ls_emrinptsavetime == "" ? 0 : parseInt(ls_emrinptsavetime) * -1;
  1048. // SMAER00400_결과관리(서식).xrw 에서는 모두 외래기준으로 인증서를 띄우도록 적용 // 20111202 knuh 최원돈
  1049. // gSubmitSaveFlag 는 SMAER00400_결과관리(서식)에서만 사용하여서 적용함
  1050. //if (fGetFormRec("chosflag") == "O")
  1051. if ( fGetFormRec("chosflag") == "O"
  1052. || !gSubmitSaveFlag)
  1053. {
  1054. // KNUH_20100820_박성호_start 인증서 안나오게 수정
  1055. var signedrecinfo = zesfSignData(signrecinfo, sUserID, false); //외래환자일경우 한번만 인증서 띄움
  1056. //var signedrecinfo = "-"; //외래환자일경우 한번만 인증서 띄움
  1057. // KNUH_20100820_박성호_end
  1058. }
  1059. // 입원 또는 응급일 경우 // 20111201 knuh 최원돈
  1060. // 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음(5/6)
  1061. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  1062. // 띄우지 않는 로직
  1063. else if ( ( fGetFormRec("chosflag") == "I"
  1064. || fGetFormRec("chosflag") == "E")
  1065. && ll_emrinptsavetime < 0
  1066. && getGlobalVariable("emrinptsavetime") >= getCurrentDateTime().toDate("YYYYMMDD hhmmss").getAddDate(ll_emrinptsavetime, "m").getDateFormat("YYYYMMDD hhmmss"))
  1067. {
  1068. var signedrecinfo = zesfSignData(signrecinfo, sUserID, false); //외래환자일경우 한번만 인증서 띄움
  1069. }
  1070. else
  1071. {
  1072. // KNUH_20100820_박성호_start 인증서 안나오게 수정
  1073. var signedrecinfo = zesfSignData(signrecinfo, sUserID, true);
  1074. //var signedrecinfo = "-";
  1075. // KNUH_20100820_박성호_end
  1076. }
  1077. }
  1078. if (signedrecinfo == "")
  1079. {
  1080. fSetFormRec("signedyn", "N");
  1081. return savedInfo;
  1082. }
  1083. else
  1084. {
  1085. fSetFormRec("espiyn", signedYn);
  1086. model.makeValue(espiyn_path, signedYn);
  1087. }
  1088. model.copyNode(saverecinfo_path, gPageInfo.recMastRef);
  1089. model.makeValue(bfstext_path, signrecinfo);
  1090. model.makeValue(stext_path, signedrecinfo);
  1091. if (submit("TXMMR01302"))
  1092. {
  1093. var mess = model.getValue(gPageInfo.savedInfoRef + "/rsltmsg/msg");
  1094. if (fGetFormRec("status") == "U")
  1095. {
  1096. if(mess == "1")
  1097. {
  1098. messageBox("STAFF SIGN 저장되었습니다.", "I", "");
  1099. btn_cosign.disabled = true;
  1100. if (isProgForm())
  1101. {
  1102. //2010-03-31 오전 10:03:38 강지훈 수정 : 최종진단명 요약지 추가
  1103. //ivw_base.window.grup_base.disabled = true;
  1104. if(fGetFormRec("srcformcd") == "0000000680"){
  1105. var childrenObj = ivw_base.window.grup_base.children;
  1106. for(i=0; i< childrenObj.length; i++){
  1107. childObj = childrenObj.item(i);
  1108. if (childObj.attribute("id") == "btn_lastdiag_0001013001"){
  1109. childObj.disabled = false;
  1110. }
  1111. else{
  1112. childObj.disabled = true;
  1113. }
  1114. }
  1115. }
  1116. else{
  1117. ivw_base.window.grup_base.disabled = true;
  1118. }
  1119. }
  1120. }
  1121. else
  1122. {
  1123. messageBox(mess, "I", "");
  1124. btn_cosign.disabled = false;
  1125. if (isProgForm())
  1126. {
  1127. ivw_base.window.grup_base.disabled = false;
  1128. }
  1129. }
  1130. }
  1131. fSetFormRec("espiyn", fGetFormRec("signedyn"));
  1132. g_formrec_newimge_cosign = fGetCSV("formrec");
  1133. g_recitem_newimge_cosign = fGetCSV(gPageInfo.recItemRef2);
  1134. // 입원 또는 응급일 경우 // 20111201 knuh 최원돈
  1135. // 기록/처방 직전 인증저장이 정해진 시간(분 단위, 하드코드 401) 이내이면 인증서를 띄우지 않음(6/6)
  1136. // SMMMO00100.js, MMR01300.js, MMR00100.js, SPMRF05200.js
  1137. // 인증저장된 시간을 저장.
  1138. if ((fGetFormRec("chosflag") == "I" || fGetFormRec("chosflag") == "E") && signedYn == "Y" ) {
  1139. setGlobalVariable("emrinptsavetime", getCurrentDateTime());
  1140. }
  1141. }
  1142. if (model.getValue(gPageInfo.savedInfoRef + "/rsltmsg/msg") == "1")
  1143. {
  1144. // savedInfo.formrecseq = parseInt(model.getValue(gPageInfo.savedInfoRef + "/rsltmsg/formrecseq"));
  1145. // savedInfo.rechistseq = parseInt(model.getValue(gPageInfo.savedInfoRef + "/rsltmsg/rechistseq"));
  1146. //2010.03.24 안치원 - formrecseq 지수로 표현되는 오류수정
  1147. savedInfo.formrecseq = model.getValue(gPageInfo.savedInfoRef + "/rsltmsg/formrecseq");
  1148. savedInfo.rechistseq = model.getValue(gPageInfo.savedInfoRef + "/rsltmsg/rechistseq");
  1149. g_formrec_oldimge = g_formrec_newimge;
  1150. g_recitem_oldimge = g_recitem_newimge;
  1151. }
  1152. if (fGetFormRec("status") != "D" && savedInfo.formrecseq != 0)
  1153. {
  1154. fSetFormRec("status", "U");
  1155. fSetFormRec("formrecseq", savedInfo.formrecseq);
  1156. fSetFormRec("lastrechistseq", savedInfo.rechistseq);
  1157. fSetFormRec("cosign", model.getValue(gPageInfo.savedInfoRef + "/rsltmsg/cosign")); //2010-03-31 오전 10:06:14 강지훈 추가 : 최종진단명 요약 추가
  1158. fSetFormRec("espiseq", model.getValue(gPageInfo.savedInfoRef + "/rsltmsg/espiseq"));
  1159. }
  1160. if(mess == "1" || savedInfo.formrecseq != null)
  1161. {
  1162. return savedInfo;
  1163. }
  1164. }
  1165. /**
  1166. * @desc : 입퇴원요약지 - 최종진단명을 입력시 staff sign 반려
  1167. * @id :
  1168. * @event : xforms-ready
  1169. * @return : void
  1170. * @authur : 2010-02-21 오후 3:09:03 강지훈
  1171. */
  1172. function fSaveLastDiagRec(signedYn)
  1173. {
  1174. var rsltMsg = "진단명 수정-최종진단명 요약지 작성";
  1175. var saverecinfo_path = "/root/send/saverecinfo/formrec";
  1176. model.copyNode(saverecinfo_path, gPageInfo.recMastRef);
  1177. model.removeNodeset("/root/send/saverecinfo/formrec/status");
  1178. model.removeNodeset("/root/send/saverecinfo/formrec/cosign");
  1179. model.removeNodeset("/root/send/saverecinfo/formrec/dralertcnts");
  1180. model.makeValue("/root/send/saverecinfo/formrec/status", "D");
  1181. model.makeValue("/root/send/saverecinfo/formrec/cosign", "Y");
  1182. model.makeValue("/root/send/saverecinfo/formrec/dralertcnts", rsltMsg);
  1183. if (submit("TXMMR01302"))
  1184. {
  1185. fSetFormRec("cosign", "N");
  1186. ivw_base.window.grup_base.disabled = false;
  1187. btn_cosign.disabled = false;
  1188. fAfterSaveExtnDoing();
  1189. }
  1190. }
  1191. ]]></Script>