123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431 |
- /**
- * 기록 모니터링과 관련한 모듈이다.
- *
- * 상단환자정보와 Global정보가 틀리는 현상이 발생하여 원인파악을 위해서
- * TF log파일을 첨부하여 Mail을 전송하는 기능.
- *
- * 2009.11.18 안치원 신규 - TFLog파일을 첨부하여 Mail을 전송하는 기능.
- */
- // TFLog파일 기본위치
- var gLOG_DIR_MMR071 = "C:\\Program Files\\himed\\components\\TrustForm\\TFViewer";
- // 에러코드
- var gMMR_INVALID_PATINFO_MMR071 = "MMR_INVALID_PATINFO"; //대상자 변경시 발생
- var gMMR_INVALID_RECINFO_MMR071 = "MMR_INVALID_RECINFO"; //기록 저장시 발생
- // 쓰기 할 디렉토리
- var STD_DIR_MMR071 = "C:\\Temp";
- /*
- * Mail을 발송한다.
- *
- * fromAddr : 발신자의 Email Address
- * toAddr : 수신자의 Email Address - '|'을 구분자로 여러개 입력가능
- * subject : 메일 제목
- * content : 메일 내용
- */
- function sendMail_MMR071(fromAddr, toAddr, subject, content)
- {
- model.makeValue("/root/send/mail/info/fromaddr", fromAddr);
- model.makeValue("/root/send/mail/info/toaddr", toAddr);
- model.makeValue("/root/send/mail/info/subject", subject);
- model.makeValue("/root/send/mail/info/content", content);
- model.refresh();
-
- //alert("break");
-
- submit("TRMMR07101");
-
- if (grd_attach.rows-1 > 0) {
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- for (var i=1; i<grd_attach.rows; i++) {
- try {
- fso.DeleteFile(grd_attach.valueMatrix(i, 0));
- } catch (e) {
- }
- }
- }
-
- model.removeNodeset("/root/send/mail/attach");
- model.resetInstanceNode("/root/send/mail/info");
- model.refresh();
- }
- /*
- * System Mail을 발송한다.
- * TF Log file을 attach하여 발송한다.
- */
- function sendSystemMail_MMR071(mailFlag, addText)
- {
- var content = "";
- if (isNull(addText)) {
- addText = "";
- }
-
- try {
- fCreateFileAttach(getSystemInstance_MMR071());
-
- //0이면 오늘부터 검색하고, -1이면 어제부터 검색한다.
- // var diffDay = 0;
- // var fileCnt = 0;
- // for (var i=0; i<10; i++) {
- // fileCnt += fAddLogFile_MMR071(diffDay);
- // if (fileCnt == 0) {
- // diffDay -= 1;
- // } else {
- // break;
- // }
- // }
-
- // content += "Attach log file count : " + fileCnt +"<BR>";
- // content += "<BR>"+addText;
-
- sendMail_MMR071("", "", mailFlag, content);
- } catch(e) {
- alert(e);
- content = mailFlag +"\n"+ content;
- model.addLog(content);
- }
- }
- /*
- * 첨부파일을 추가한다.
- * filePath : 첨부 할 파일의 Path
- */
- function addAttachFile_MMR071(filePath)
- {
- grd_attach.addRow(false);
- grd_attach.valueMatrix(grd_attach.rows - 1, 0) = filePath;
- // alert(grd_attach.valueMatrix(grd_attach.rows - 1, 0));
- // model.refresh();
- }
- /*
- * Log 파일을 첨부한다.
- * diffDay : 0이면 오늘 생성된 파일, -1이면 어제 생성된 파일만을 첨부한다.
- */
- function fAddLogFile_MMR071(diffDay) {
-
- var arrFileNm = fGetToDayLogFile_MMR071(diffDay);
-
- for (var i=0; i<arrFileNm.length; i++) {
- addAttachFile_MMR071(arrFileNm[i]);
- }
- return arrFileNm.length;
- }
- /*
- * 파일을 생성하고 첨부한다.
- */
- function fCreateFileAttach(str, filePath)
- {
- fCheckWriteFolder(STD_DIR_MMR071);
-
- if (isNull(filePath)) {
- filePath = STD_DIR_MMR071 + "\\srcreen_instance.xml";
- }
-
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var a = fso.CreateTextFile(filePath, true);
- a.WriteLine(str);
- a.Close();
-
- addAttachFile_MMR071(filePath);
- }
- /*
- * 해당일에 작성된 파일목록을 반환한다.
- * 해당일은 현재일의 diffDay 일자이다.
- */
- function fGetToDayLogFile_MMR071(diffDay)
- {
- if (diffDay == null)
- diffDay = 0;
-
- var curDate = new Date();
- curDate = curDate.getAddDate(diffDay, "D");
-
- var folderName = curDate.getDateFormat("YYYY-MM");
- var day = parseInt(curDate.getDateFormat("DD"));
-
- var arrFileNm = new Array();
-
- var path = gLOG_DIR_MMR071 +"\\"+ folderName;
- var sysCd = getSystemCd();
- if (isNull(sysCd)) {
- sysCd = "DEV999";
- }
- var preFixNm = "["+sysCd+"_bizMain]-"+day+"-";
-
- // alert(path +" || "+ preFixNm);
-
- var fso = new ActiveXObject("Scripting.FileSystemObject");
-
- fCheckWriteFolder(STD_DIR_MMR071);
-
- if (fso.FolderExists(path)) {
-
- var f = fso.GetFolder(path);
- var fc = new Enumerator(f.files);
- var copyFileName = null;
- for (; !fc.atEnd(); fc.moveNext()) {
- if (fc.item().name.indexOf(preFixNm) == 0) {
- // copyFileName = fc.item().path+".txt";
- copyFileName = STD_DIR_MMR071 +"\\"+ fc.item().name;
- fso.CopyFile(fc.item().path, copyFileName, true);
- arrFileNm[arrFileNm.length] = copyFileName;
- }
- }
- }
-
- return arrFileNm;
- }
- function fCheckWriteFolder(folderName)
- {
- var fso = new ActiveXObject("Scripting.FileSystemObject");
-
- if (fso.FolderExists(folderName) == false) {
- fso.CreateFolder(folderName);
- }
- }
- /*
- * 화면들의 인스턴스를 가져온다.
- * Top환자화면, Main화면, This화면, Opener화면, 진료대상자화면, paminfo
- */
- function getSystemInstance_MMR071_old()
- {
- var xml = "<!-- create date:" + getCurrentDateTime();
- xml += " user:";
- xml += getUserId();
- xml += " ";
- xml += getUserName();
- xml += " -->\n";
-
- var thisScreenID = "";
- var mainScreenID = "";
-
- try {
- //환자정보화면의 인스턴스를 설정한다.
- var topViewer = getViewer("patientInfo");
- xml += "\n<!-- 1. top "+topViewer.window.javascript.getScreenID()+" instance -->\n";
- xml += getInstanceXML_MMR071(topViewer.window.model.instance1, "/root");
- } catch (e) {
- xml += "<!-- top instance get fail -->\n";
- // alert(1);
- }
- xml += "\n";
-
- try {
- //본화면의 인스턴스를 설정한다.
- thisScreenID = getScreenID();
- xml += "\n<!-- 2. this "+thisScreenID+" instance -->\n";
- xml += getInstanceXML_MMR071(model.instance1, "/root");
- } catch (e) {
- xml += "<!-- this instance get fail -->\n";
- // alert(2);
- }
- xml += "\n";
-
- try {
- //메인화면의 인스턴스를 설정한다. 메인화면과 본화면이 같다면 하지 않는다.
- var mainViewer = getMainViewer();
- mainScreenID = mainViewer.window.javascript.getScreenID();
- xml += "\n<!-- 3. main "+mainScreenID+" instance -->\n";
- if (getScreenID() != mainScreenID) {
- xml += getInstanceXML_MMR071(mainViewer.model.instance1, "/root");
- } else {
- xml += "<!-- 3. main instance dispense -->\n";
- }
- } catch (e) {
- xml += "<!-- 3. main instance get fail -->\n";
- // alert(3);
- }
- xml += "\n";
-
- try {
- //Opener의 인스턴스를 설정한다. 위에서 설정된것이 있다면 하지 않는다.
- if (opener != null && opener != undefined) {
- var openScreenID = opener.window.javascript.getScreenID();
- xml += "\n<!-- 4. opener "+openScreenID+" instance -->\n";
- if (thisScreenID != openScreenID && mainScreenID != openScreenID) {
- xml += getInstanceXML_MMR071(opener.model.instance1, "/root");
- } else {
- xml += "<!-- 4. opener instance dispense -->\n";
- }
- } else {
- xml += "<!-- 4. not exists opener -->";
- }
- } catch (e) {
- xml += "<!-- 4. opener instance get fail -->\n";
- // alert(4);
- }
- xml += "\n";
-
- try {
- //진료대상자리스트화면의 인스턴스를 설정한다.
- var patListViewer = getOpenWindow("SMMMO04100");
- xml += "\n<!-- 5. patList SMMMO04100 instance -->\n";
- if (patListViewer != null) {
- xml += getInstanceXML_MMR071(patListViewer.model.instance1, "/root");
- } else {
- xml += "<!-- 5. not exists patList -->";
- }
-
- } catch (e) {
- xml += "<!-- 5. patList instance get fail -->\n";
- // alert(5);
- }
- xml += "\n";
-
- try {
- //GlobalVariable-paminfo를 설정한다.
- var sPamInfo = getGlobalVariable("paminfo");
- xml += "\n<!-- 6. paminfo csv-->\n";
- xml += sPamInfo;
-
- } catch (e) {
- xml += "<!-- 6. paminfo csv get fail -->\n";
- // alert(6);
- }
- xml += "\n";
-
- try {
- //서식로더의 inner viewer의 인스턴스를 설정한다.
- if (thisScreenID == "SSMMR01100") {
- xml += "\n<!-- 7. SSMMR01100 inner viewer instance -->\n";
- xml += getInstanceXML_MMR071(ivw_base.model.instance1, "/root");
- } else {
- xml += "<!-- 7. SSMMR01100 inner viewer dispense -->\n";
- }
- } catch (e) {
- xml += "<!-- 7. SSMMR01100 inner viewer get fail -->\n";
- // alert(7);
- }
-
- xml += "\n";
-
- try {
- //서식로더가 컨설트일때 부분서식의 인스턴스를 설정한다.
- if (thisScreenID == "SSMMR01100" && ivw_base.window.javascript.getScreenID() == "SMMMR04900") {
- xml += "\n<!-- 8. SSMMR01100 consult inner viewer instance -->\n";
- xml += getInstanceXML_MMR071(ivw_base.model.instance1, "/root");
- } else {
- xml += "<!-- 8. SSMMR01100 consult inner viewer dispense -->\n";
- }
- } catch (e) {
- xml += "<!-- 8. SSMMR01100 consult inner viewer get fail -->\n";
- // alert(7);
- }
- return xml;
- }
- function getSystemInstance_MMR071(arrViewer)
- {
- var xml = "<!-- create date:" + getCurrentDateTime();
- xml += " user:";
- xml += getUserId();
- xml += " ";
- xml += getUserName();
- xml += " -->\n";
-
- var thisScreenID = "";
- var mainScreenID = "";
- var tempScreenID = "";
- var tempViewer = null;
- if (arrViewer == null || arrViewer == undefined) {
- arrViewer = new Array ("TOP", "MAIN", "OPENER", "PATLIST", "LOADER", "PAMINFO");
- }
-
- for (var i=0; i<arrViewer.length; i++) {
- try {
- if (i == 0) {
- thisScreenID = getScreenID();
- xml += getXMLinfo_MMR071("THIS", thisScreenID, model.instance1, "/root");
-
- if (thisScreenID == "SSMMR01100") {
- xml += getLoaderInnerXML();
- }
- }
-
- if (arrViewer[i] == "TOP") {
- tempViewer = getViewer("patientInfo");
- }
- else if (arrViewer[i] == "MAIN") {
- tempViewer = getMainViewer();
- }
- else if (arrViewer[i] == "OPENER" && opener != null && opener != undefined) {
- tempViewer = opener;
- }
- else if (arrViewer[i] == "PATLIST") {
- tempViewer = getOpenWindow("SMMMO04100");
- }
- else if (arrViewer[i] == "LOADER") {
- tempViewer = getOpenWindow("SSMMR01100");
- }
- else if (arrViewer[i] == "PAMINFO") {
- tempViewer == null;
- var sPamInfo = getGlobalVariable("paminfo");
- xml += "\n<!-- begin of " +arrViewer[i]+" get Instance -->\n";
- xml += sPamInfo;
- xml += "\n<!-- end of " +arrViewer[i]+ " get Instance -->";
- }
- else {
- tempViewer == null;
- }
-
- if (tempViewer != null) {
- xml += getXMLinfo_MMR071(arrViewer[i], tempViewer.window.javascript.getScreenID(), tempViewer.window.model.instance1, "/root");
- }
- }
- catch(e) {
- }
- }
- return xml;
- }
- /*
- * 인스턴스를 가져온다.
- */
- function getXMLinfo_MMR071(title, screenID, instance, xPath)
- {
- var xml = "\n";
- try {
- xml += "<!-- begin of " +title+" ["+screenID+"] get Instance -->\n";
- xml += instance.selectSingleNode(xPath).xml
- xml += "\n<!-- end of " +title+ " get Instance -->";
- } catch (e) {
- xml += "<!-- " +title+ " get Fail -->\n";
- }
-
- return xml;
- }
- /*
- * 인스턴스를 가져온다.
- */
- function getInstanceXML_MMR071(instance, xPath)
- {
- return instance.selectSingleNode(xPath).xml;
- }
- function getLoaderInnerXML()
- {
- var xml = "";
- try {
- xml += getXMLinfo_MMR071("LOADER INNER", ivw_base.window.javascript.getScreenID(), ivw_base.window.model.instance1, "/root");
-
- var items = ivw_base.window.javascript.gItemCds;
- for (var i = 0; i < items.length; i++)
- {
- var ctrlIvw = ivw_base.window.document.controls("ivw_" + items[i]);
- if (ctrlIvw != null && ctrlIvw.visible) {
- xml += getXMLinfo_MMR071("LOADER INNER INNER", ctrlIvw.attribute("id"), ctrlIvw.window.model.instance1, "/root");
- }
- }
- } catch (e) {
- }
- return xml;
- }
|