123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541 |
- <?xml version="1.0" encoding="utf-8"?>
- <Script type="xscript4.0"><![CDATA[
- function chkMsetIdenNode(pa_pkid, ps_desDs, ps_srcDs, ps_delDs, ps_saveDs, pb_skipuseyn, ps_insertseqcol, pa_skipcol, ps_modstatus, ps_addstatus)
- {
- //var lx_node2 = instance1.selectSingleNode(ps_srcNode);
- var lb_rtncheck = true;
- var li_insertseq = 0;
-
- var lb_saveyn = (utlf_isNull(ps_saveDs)) ? false : true;
-
-
- if (lb_saveyn)
- {
- ps_saveDs.clearData();
- //var lx_modinfo = instance1.selectSingleNode(ps_saveNode);
- }
-
- for(var i=0; i<ps_srcDs.rowcount; i++)
- {
- //var lx_node2c = lx_nodeList2.item(i);
- // var lx_nodeList2c = lx_node2c.childNodes;
- var ls_pkcond = "";
- var lb_skipyn = false;
- if (utlf_isNull(ps_srcDs.getColumn(i,"status")))
- {
- continue;
- }
-
- // skip 대상을 제외
- if ( pb_skipuseyn
- && ps_srcDs.getColumn(i,"skipyn") == "Y"
- && ps_srcDs.getColumn(i,"inptflag") != "F4")
- {
- lb_skipyn = true;
- }
-
- if (!lb_skipyn) // 비교 및 저장 대상일 경우
- {
- if (ps_srcDs.getColumn(i,"status") != "i") // 추가 일 경우는 skip
- {
- // 비교하기 위해서 PK 를 추출
- for (j=0;j<ps_srcDs.colcount;j++)
- {
-
- if (isMArray(pa_pkid, ps_srcDs.getColID(j)))
- {
- if (utlf_isNull(ps_srcDs.getColumn(i, ps_srcDs.getColID(j)))) // PK 에 NULL 이 있다면 추가
- {
- ls_pkcond = "";
- break;
- }
-
- if (!utlf_isNull(ls_pkcond))
- {
- ls_pkcond += " && ";
- }
-
- ls_pkcond += ps_srcDs.getColID(j) + "=='" + ps_srcDs.getColumn(i, ps_srcDs.getColID(j)) + "'";
- }
-
- }
- }
-
-
- if (utlf_isNull(ls_pkcond)) // PK가 존재하지 않을 경우 [추가일 경우]
- {
- lb_rtncheck = false;
-
- if (lb_saveyn)
- {
- if (!utlf_isNull(ps_insertseqcol)) // Batch를 위해서 MAX seq를 넣어준다.
- {
-
- // while(lx_nodechild2 = lx_nodeList2c.nextNode())
- // {
- // // 변경된 정보가 있으면 저장
- // if (lx_nodechild2.nodeName == ps_insertseqcol)
- // {
- // lx_nodechild2.NodeValue = ++li_insertseq;
- // }
- // }
- ps_srcDs.setColumn(i,ps_insertseqcol,++li_insertseq);
- }
-
- var nRow = ps_saveDs.addRow();
- ps_saveDs.copyRow(nRow,ps_srcDs,i);
- //lx_modinfo.appendChild(lx_node2c);
- // status 값을 저장
- if (!utlf_isNull(ps_addstatus))
- {
- ps_saveDs.setColumn(ps_saveDs.rowcount-1,"status", ps_addstatus);
- }
- else if (!utlf_isNull(ps_modstatus))
- {
-
- ps_saveDs.setColumn(ps_saveDs.rowcount-1,"status", ps_modstatus);
- }
- }
- else
- {
- return lb_rtncheck;
- }
- }
- else // 동일 PK가 존재하면
- {
- //ls_cond = ps_desNode + "[" + ls_pkcond + "]";
- // var lx_node = instance1.selectSingleNode(ls_cond);
- //var lx_nodeList = lx_node.childNodes;
-
- ps_desDs.filter(ls_pkcond);
-
- for (j=0;j<ps_srcDs.colcount;j++)
- {
- //var lx_nodechild = lx_nodeList.nextNode()
- // 변경된 정보가 있으면 저장
- if ( ps_srcDs.getColID(j) != "status" // status는 무조건 skip
- && !isMArray(pa_skipcol, ps_srcDs.getColID(j))
- && ps_srcDs.getColID(j) == ps_desDs.getColID(j)
- && ps_srcDs.getColumn(i, ps_srcDs.getColID(j)) != ps_desDs.getColumn(i, ps_desDs.getColID(j)))
- {
- lb_rtncheck = false;
- if (lb_saveyn)
- {
- //lx_modinfo.appendChild(lx_node2c);
- var nRow = ps_saveDs.addRow();
- ps_saveDs.copyRow(nRow,ps_srcDs,i);
- // status 값을 저장
- if (!utlf_isNull(ps_modstatus))
- {
- ps_saveDs.setColumn(ps_saveDs.rowcount-1,"status", ps_modstatus);
- }
- }
- else
- {
- ps_desDs.filter("");
- return lb_rtncheck;
- }
-
- break;
- }
- }
- ps_desDs.filter("");
- }
- }
- }
-
- //삭제된 노드가 있을 경우 삭제노드 별도 체크 추가
- if(!utlf_isNull(ps_delDs))
- {
- if (ps_delDs.rowcount > 0)
- {
- return false;
- }
- }
- return lb_rtncheck;
- }
- function isMArray(pa_src, ps_find)
- {
- if (utlf_isNull(pa_src)) // skip column이 없다면
- {
- return false;
- }
-
- for (i=0; i<pa_src.length; i++)
- {
- if (pa_src[i] == ps_find)
- {
- return true;
- }
- }
- return false
- }
- /***************************************************************************************************
- * Function : emr_getOrderBaseInfo
- * Description : 아이디에 해당하는 기초정보를 리턴한다. (시스템메세지 정보 조회)
- * Argument : sID [String : 데이타셋명(ds_를 제외한)]
- * : objSrcDs [Dataset : 리턴 데이타를 받을 데이타셋]
- * return type : [Dataset : 기초정보를 리턴]
- * Creator :
- * 변환 OK
- ***************************************************************************************************/
- function emr_getOrderBaseInfo(sID, objSrcDs)
- {
- var oDescDs = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getOrderBaseInfo(sID);
-
- if (utlf_isNull(objSrcDs)) {
- return oDescDs;
- }
- else {
- objSrcDs.copyData(oDescDs, true);
- }
- }
- //lf_mmbfGetDeptCodeComboList : 부서 콤보 조회
- /***************************************************************************************************
- * Function : lf_mmbfGetDeptCodeComboList
- * Description : 부서 콤보 조회
- * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
- * : sOrdDeptFlag [String : 진료과구분]
- * : sStnddd [String : 기준일]
- * return type : [Dataset : 조회된 부서 리스트]
- * Creator :
- * Conversion : TF SVN.60233
- ***************************************************************************************************/
- function lf_mmbfGetDeptCodeComboList(oDsRsltRef, sOrdDeptFlag, sStnddd)
- {
- var isSearchStnddd = false;
- var hasStnddd = (!utlf_isNull(sStnddd) && sStnddd.length == 8);
-
- if (hasStnddd) { // 기준일자를 입력하는경우 DB에서 신규로 조회 하도록 수정. 2014.04.03 엄영만
- isSearchStnddd = true;
- } else {
- // 기준일자가 없는경우 KNUH_20110208, 진료속도개선 수정, TRMMB04101 submit을 안하고
- // 로그인시 가져온 데이터를 copy하는것으로 변경, 주희경
- var sID = "";
- switch (sOrdDeptFlag) {
- case "A" : // ALL
- case "" :
- case null :
- sID = "alldeptinfo";
- break;
-
- case "C" :
- sID = "centdeptinfo";
- break;
- case "D" : // 퇴원
- sID = "dscdeptinfo";
- break;
- case "W" : // 병동
- sID= "warddeptinfo";
- break;
- case "O" : // 외래
- sID = "otptdeptinfo";
- break;
- case "I" : // 입원
- sID = "inptdeptinfo";
- break;
-
- case "E" : //시행부서
- sID = "dept";
- break;
- }
- var oSrcDs = emr_getOrderBaseInfo(sID);
- if (oSrcDs.rowcount > 0) { // 복사할 원본 데이터가 존재하면 복사
- oDsRsltRef.copyData(oSrcDs, true);
- }
- else {
- isSearchStnddd = true;
- }
- }
-
- if(isSearchStnddd) {
- // KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
- // 데이타셋 생성및 로우 생성후 값설정 공통 함수 [/com_commonxp/comm_ds에 정의]
- var sRef = dsf_createDsRow("ds_cond_dept", [{col:"orddeptflag", type:"string", size:256, val:""},
- {col:"stnddd", type:"string", size:256, val:""}]);
- var oRef = this.objects[sRef];
- if(!hasStnddd)
- sysf_messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
-
- oRef.clearData();
- oRef.addRow();
- oRef.setColumn(0, "orddeptflag", sOrdDeptFlag);
- if (hasStnddd) oRef.setColumn(0, "stnddd", sStnddd); // 기준일
- var oParam = {};
- oParam.id = "TRMMB04101"; // transaction을 구분하기 위한 ID
- oParam.service = "prcpbaseapp.EnvInfoMngt"; // service ID
- oParam.method = "reqGetDeptComboList"; // method ID
- oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
- oParam.outds = oDsRsltRef.name + "=dept"; // transaction을 처리 결과를 받을 Dataset의 ID
- tranf_submit(oParam);
- // Temp로 사용한 Dataset을 삭제
- var oRemoveDs = this.removeChild(sRef);
- oRemoveDs = null;
- }
- }
- //lf_mmbfGetUserComboList : EMR사용자콤보 조회
- /***************************************************************************************************
- * Function : lf_mmbfGetUserComboList
- * Description : EMR사용자콤보 조회
- * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
- * : sDeptCd [String : 부서코드]
- * : sJobKindCd [String : 직종코드]
- * : sSpeCordYN [String : 선택진료여부]
- * : sDrFlag [String : 의사구분, 가상사용자 제외]
- * : sStandd [String : 조회기준일자]
- * : sNmDispFlag [String : 이름뒤에 특진(Y)표시 할것인지 구분]
- * : sJobFlag [String : 주치의 담당의 조회기준 (JobKindCD, JobPoscd)]
- * : sSpecDrChk [String : 선택진료 의사 모두 조회한다.]
- * : sInternFlag [String : 인턴포함여부]
- * return type :
- * Creator :
- * Conversion : TF SVN.60233
- ***************************************************************************************************/
- function lf_mmbfGetUserComboList(oDsRsltRef, sDeptCd, sJobKindCd, sSpeCordYN, sDrFlag, sStandd, sNmDispFlag, sJobFlag, sSpecDrChk, sInternFlag)
- {
- var sRef = dsf_createDsRow("ds_cond_usercombo", [{col:"deptcd", type:"string", size:256, val:sDeptCd}, // 부서코드
- {col:"jobkindcd", type:"string", size:256, val:sJobKindCd}, // 직종코드(의사:0330)
- {col:"specordyn", type:"string", size:256, val:sSpeCordYN}, // 선택진료여부
- {col:"drflag", type:"string", size:256, val:sDrFlag}, // 주치의, 담당의 구분(M : 주치의 , A:담당의 )
- {col:"standd", type:"string", size:256, val:sStandd}, // 조회기준일자
- {col:"jobflag", type:"string", size:256, val:sJobFlag}, // 조회구분 Jobkindcd(K), Jobposcd(P)
- {col:"specdrchk", type:"string", size:256, val:sSpecDrChk}, // 진료과조건 제외
- {col:"nmdispflag", type:"string", size:256, val:""}]);
- var oRef = this.objects[sRef];
- if (utlf_isNull(sNmDispFlag))
- oRef.setColumn(0, "nmdispflag", "N"); // 이름에 특진여부표시구분
- else
- oRef.setColumn(0, "nmdispflag", sNmDispFlag); // 이름에 특진여부표시구분
- var oParam = {};
- oParam.id = "TRMMB04102"; // transaction을 구분하기 위한 ID
- oParam.service = "prcpbaseapp.EnvInfoMngt"; // service ID
- oParam.method = "reqGetUserComboList"; // method ID
- oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
- oParam.outds = oDsRsltRef.name + "=usercombo"; // transaction을 처리 결과를 받을 Dataset의 ID
- tranf_submit(oParam);
- // Temp로 사용한 Dataset을 삭제
- var oRemoveDs = this.removeChild(sRef);
- oRemoveDs = null;
- }
- //lf_getHardCDList : 조회된 하드코드 리스트를 조회한다.
- /***************************************************************************************************
- * Function : lf_getHardCDList
- * Description : 조회된 하드코드 리스트를 조회한다.
- * Argument : sOption [Stirng : Y/값을 리턴한다, N/데이터셋을 반환한다.]
- * : sHardCdNo [String : 하드코드 번호]
- * : sRtnValue [String : 변환형태 Flag]- sOption이 "Y"일 때만 관련있음.
- * : oDsRsltRef [Dataset : 대상 데이타셋]
- * return type : option = "N" 일 경우: 데이터셋 복사
- "Y" 일 경우: sRtnValue 변환형태플래그 [0:리턴값 반환하지 않음 (하드코드 값이 여러개일 때 선택, 1:hardcdno를 리턴, 2:hardcodenm 을 리턴
- 3:hardcd 를 리턴 4:hardcdnm를 리턴, 5:cdseqno를 리턴, 9:hardcd+ "|" + hardcdnm + "|" + cdseqno 형태로 리턴]
- * Creator :
- * ex) : lf_getHardCDList("N", 60, null, oDsRsltRef);
- var rtnHardcd = lf_getHardCDList("Y", 60, 1, null);
- ***************************************************************************************************/
- function lf_getHardCDList(sOption, sHardCdNo, sRtnValue, oDsRsltRef)
- {
- var oDsHardCd = emr_getHardcodeTable(sHardCdNo);
- var sHardCd;
- var sHardCdNm;
- var nCdSeqNo;
- if (!utlf_isNull(oDsHardCd)) {
- if (sOption == "Y") {
- try {
- var sHardCdNo = oDsHardCd[0].hardcdno;
- var sHardCodeNm = oDsHardCd[0].hardcodenm;
- sHardCd = oDsHardCd[0].hardcd;
- sHardCdNm = oDsHardCd[0].hardcdnm;
- nCdSeqNo = oDsHardCd[0].cdseqno;
- }
- catch(e) {
- trace("lf_getHardCDList Error : " + e);
- }
- if (sRtnValue == 1) {
- return sHardCdNo;
- }
- else if (sRtnValue == 2) {
- return hardcodenm;
- }
- else if (sRtnValue == 3) {
- return sHardCd;
- }
- else if (sRtnValue == 4) {
- return sHardCdNm;
- }
- else if (sRtnValue == 5) {
- return nCdSeqNo;
- }
- else if (sRtnValue == 9) {
- return sHardCd+ "|" + sHardCdNm + "|" + nCdSeqNo;
- }
- }
- else {
- var destListLen = oDsRsltRef.rowcount;
- // 한번이라도 복사된 내용이 있으면 다시 안하도록 수정 2011. 01.20 김영학
- if (destListLen < 1 ) {
- if (!utlf_isNull(oDsHardCd)) {
- // 하드코드 Object 갯수 만큼 loop 작업
- for (var i = 0; i < oDsHardCd.length; i++)
- {
- var nAddRow = oDsRsltRef.addRow();
- // Object의 property 갯수 만큼 loop 작업을 하면 Dataset의 컬럼생성 및 Row 값 설정
- for (var j in oDsHardCd[i])
- {
- oDsRsltRef.addColumn(j, "STRING");
- oDsRsltRef.setColumn(nAddRow, j, oDsHardCd[i][j]);
- }
- }
- oDsRsltRef.applyChange();
- }
- }
- }
- }
- }
- /***************************************************************************************************
- * Function : emr_getHardcodeTable
- * Description : 하드코드테이블에서 해당 하드코드에 대한 Object Array 를 반환한다.
- * Argument : sHardcdno [String : 하드코드 번호]
- * : oSrcDs [Dataset : 리턴 데이타를 받을 데이타셋]
- * return type : [Object : 하드코드 테이블]
- * Creator :
- ***************************************************************************************************/
- function emr_getHardcodeTable(sHardcdno, oSrcDs)
- {
- var oDsHardCd = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getHardcodeTable(sHardcdno);
- // var oDsHardCd = lf_getAllBizCodeList([{bizFlag: "M", cdGrpId: sHardcdno, dsNm: oSrcDs, sortField: "", sortMethod: ""}]
- // , true // 최소 컬럼 조회여부
- // , false // 비동기 여부
- // , "cbf_hardCodeTable"); // callBack 함수명
- if (utlf_isNull(oSrcDs)) {
- return oDsHardCd;
- }
- else {
- // 하드코드 Object 갯수 만큼 loop 작업
- for (var i=0 ; i < oDsHardCd.length ; i++)
- {
- var nAddRow = oSrcDs.addRow();
- // Object의 property 갯수 만큼 loop 작업을 하면 Dataset의 컬럼생성 및 Row 값 설정
- for (var j in oDsHardCd[i])
- {
- oSrcDs.addColumn(j, "STRING");
- oSrcDs.setColumn(nAddRow, j, oDsHardCd[i][j]);
- }
- }
- }
- }
- //lf_reqPatInfo : 환자의 기초정보를 조회한다.(pid, hngnm)
- /***************************************************************************************************
- * Function : lf_reqPatInfo
- * Description : 환자의 기초정보를 조회한다.(pid, hngnm)
- * Argument : dataset [Dataset: 조회된 내용을 담을 데이터셋]
- : srchflag[String : 등록번호, 환자명 구분 "pid"/"hngnm"]
- : tblflag [String : 테이블구분(환자기본/외래/입원, ptbs/otpt/inpt)]
- : param [String : 등록번호 / 환자명
- : stnddd [String : 외래/입원일자]
- * return type : true/false
- * Creator : 윤지현
- ***************************************************************************************************/
- function lf_reqPatInfo(oDsRsltRef, srchflag, tblflag, param, stnddd){
- var pid = "";
- var hngnm = "";
- var orddd = stnddd;
- var queryFlag = tblflag;
-
- if(srchflag == "pid"){ //등록번호 검색
- pid = param;
- hngnm = "";
- }else if(srchflag == "hngnm"){
- pid = "";
- hngnm = param;
- }
-
- var sRef = dsf_createDsRow("ds_req_patInfo", [{col:"pid" , type:"string", size:256, val:pid},
- {col:"hngnm" , type:"string", size:256, val:hngnm},
- {col:"orddd" , type:"string", size:256, val:orddd},
- {col:"queryflag" , type:"string", size:256, val:queryFlag},
- {col:"srchflag" , type:"string", size:256, val:srchflag}]);
- var oRef = this.objects[sRef];
-
- var oParam = {};
- oParam.id = "TRMMO04105"; // transaction을 구분하기 위한 ID
- oParam.service = "prcpmngtapp.EtcPrcpMngt"; // service ID
- oParam.method = "reqGetPatNM"; // method ID
- oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
- oParam.outds = oDsRsltRef.name + "=patnm"; // transaction을 처리 결과를 받을 Dataset의 ID
- tranf_submit(oParam);
-
- //trace(oDsRsltRef.saveXML());
-
- if(oDsRsltRef.rowcount == 0){ //정보가 없을 때 메세지 출력
- if(srchflag == "pid") sysf_messageBox("등록번호 [" + param + "] 환자를 찾을 수 ", "I004");
- else if(srchflag == "hngnm") sysf_messageBox("환자명 [" + param + "] 환자를 찾을 수 ", "I004");
-
- return false;
- }
-
- // Temp로 사용한 Dataset을 삭제
- var oRemoveDs = this.removeChild(sRef);
- oRemoveDs = null;
- return true;
- }
- //lf_compareNodeVal : 두 Dataset을 비교하여 결과에 따라 true, false를 return한다.
- /***************************************************************************************************
- * Function : lf_compareNodeVal
- * Description : 두 Dataset을 비교하여 결과에 따라 true, false를 return한다.
- * Argument : oDescDs [Dataset : 목적노드]
- * : oSrcDs [Dataset : 원본노드]
- * return type : Boolean[true/false]
- * Creator :
- ***************************************************************************************************/
- function lf_compareNodeVal(oDescDs, oSrcDs)
- {
- // 컬럼 갯수가 다른 경우 true
- if (oDescDs.colcount != oSrcDs.colcount) return true;
- for (var i=0 ; i<oDescDs.colcount ; i++) {
- var oColInfo = oDescDs.getColumnInfo(i);
- var desValue = oDescDs.getColumn(0, oColInfo.name);
- var srcValue = oSrcDs.getColumn(0, oColInfo.name);
- // 값이 다른 경우 true
- if (desValue != srcValue)
- return true;
- }
- return false; // 값이 같은 경우 false
- }]]></Script>
|