123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- <?xml version="1.0" encoding="utf-8"?>
- <Script type="xscript4.0"><![CDATA[/*
- ordre manage(SMMNW00300.xfm - JScript )
- - Version :
- 1) : Ver.1.00.01
- */
- function fnSaveDrugPrn(){
-
- //1.인증저장을 위한 자료를 구성함
- //2. 자료에 대해서 인증하기
- if( fnSignSaveWork() == true ){ //yjh : 인증저장
- //alert("submit 전 :" + model.getValue("/root/temp/result/signdata/pid"));
-
- var oParam = {};
- oParam.id = "TXMNR00608";
- oParam.service = "caremedirecapp.CareMediRec";
- oParam.method = "reqExePrnDrugActingInfo";
- oParam.inds = "signdata=ds_temp_result_signdata";
- oParam.outds = "";
- oParam.async = false;
- oParam.callback = "cf_TXMNR00608";
- tranf_submit(oParam);
-
- if( arErrorCode.pop("TXMNR00608") > -1 ){
- //------------------------(20080908)
- //alert("-------------------일자별XLST----------------");
-
- //2.일자별XLST를 호출함
- var signDates = new Array();
- var signDateCnt = 0;
- var signdispdd = "";
- var sPathsignsave = "ds_temp_result_signdata";
-
- //alert("------------------sPathsignsave------------:" + getNodesetCount(sPathsignsave));
-
- var rows = ds_temp_result_signdata.rowcount;
- if( rows <= 0 ) return;
-
- for( var i=0 ; i<rows ; i++ ){
- signdispdd = ds_temp_result_signdata.getColumn(i, "execdd");
- //alert( "전체loop:" + signdispdd + ":--------" + sPathsignsave + "[" + i + "]/execdd");
- if( signDates.length == 0 ){
- signDateCnt =0;
- signDates[signDateCnt] = "";
- }
- if( signdayFind(signDates,signdispdd) == true ){ //------(투약일자)
- signDateCnt ++;
- signDates[signDateCnt] = signdispdd;
- //alert("b:" + signDates[signDateCnt] +"/" + signdispdd);
- }
- }
- //--------------------------(20080902)
-
- //-----------------------------------------------
- // 투약기록을 일자별로 XLST를 만들기 위해서
- //-----------------------------------------------
- fnWorkddSign(signDates);
- //------------------------(20080908)
- }
- }else{
- sysf_messageBox("투약기록저장이 취소되었습니다.", "I");
- }
- }
- function cf_TXMNR00608(sSvcId, nErrorCode, sErrorMsg) {
- arErrorCode.push(sSvcId, nErrorCode);
- }
- /**
- * @group :
- * @ver : 2008.08.31
- * @by : 김보성
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 투약기록 관련 인증저장(interface제공한 web에서 사용)(iprc단위 1개 처리용)
- * : 따라서 여러개의 iprc이면 n번 호출해야한다.
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- var sSignRow =0;
-
- function fnSignSaveWork() {
-
- //alert("-----fnSignSaveWork-투약기록하기-------");
- var sSignPath = "ds_temp_result_signdata";
- var sSignPathCount = ds_temp_result_signdata.rowcount;
- var sPathSignSave = "ds_temp_result_signdata";
- if ( sSignPathCount <= 0 ) {
- sysf_messageBox("자료가 존재하지 않습니다. ","E999");
- return false;
- }
-
- //alert("----말기1------------"+ getNodesetCount(sSignPath));
- //model.removenode("/root/send/savedata");
- //model.makenode("/root/send/savedata");
- Sign.certreload = true ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리(20080921)
- for( var j=0 ; j<ds_temp_result_signdata.rowcount ; j++ ){
- ////alert("loop:"+j);
- sSignRow= j; //전역변수(프로그램내)
- if(Sign.signprocess() == false){//인증저장 데이터 생성fMake_SignData 호출
- Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리(20080921)
- return false;
- }
- Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리(20080921)
-
- ds_temp_result_signdata.setColumn(j, "recdd", utlf_getCurrentDate()); //실제기록이 이루어진 기록일자
- ds_temp_result_signdata.setColumn(j, "rectm", utlf_getCurrentTime()); //실제기록이 이루어진 기록시간
- ds_temp_result_signdata.setColumn(j, "recsaveflag", "Y"); //전자서명인적정보변경여부
- ds_temp_result_signdata.setColumn(j, "signflag", "02"); //서명자료구분(02:간호)
- ds_temp_result_signdata.setColumn(j, "signgenrflag", "I"); //외래/입원구분
- ds_temp_result_signdata.setColumn(j, "formcd", "0000002476"); //투약기록 서식번호
- ds_temp_result_signdata.setColumn(j, "signbfcnts", Sign.signedInfos[1]);//인증할 데이터 정보(미기록 노드 제거된 정보)
- ds_temp_result_signdata.setColumn(j, "signaftcnts", Sign.signedInfos[2]);//공인인증 처리후 데이터
- ds_temp_result_signdata.setColumn(j, "signflagyn", "Y"); //비공식적으로 인증되지않도록 제어할수 있는기능
- ds_temp_result_signdata.setColumn(j, "userid", sysf_getUserId()); //userid
- ds_temp_result_signdata.setColumn(j, "dispyn", "N"); //통합기록VIEW에 보이지 않기(20080922)
- //-----------(20080923)
- var stempdd = ds_main_om_cond.getColumn(0, "execdd");
- var stemptm = ds_main_om_cond.getColumn(0, "exectm").substr(0,4);
- ds_temp_result_signdata.setColumn(j, "execdd", stempdd); //(20080923)
- ds_temp_result_signdata.setColumn(j, "exectm", stemptm); //(20080923)
- //-----------(20080923)
- }
- return true;
- }
- //인증정보 말기
- function fMake_SignData(){
-
- //alert("fMake_SignData---------시작");
- /*
- <signinfo>
- <signdata>
- <pid>29953</pid>
- <hngnm>T입0820</hngnm>
- <prcpdd>20080821</prcpdd>
- <execdd>20080821</execdd>
- <prcpkindnm/>
- <prcpmixno/>
- <prcpcd>DSSL500</prcpcd>
- <prcpnm>Disal tab. 500mg (Salsalate)</prcpnm>
- <prcpvolnm>1500mg</prcpvolnm>
- <prcpqtynm>3T</prcpqtynm>
- <abbrnm>PO</abbrnm>
- <exectm>130000</exectm>
- <nursnm>김보성</nursnm>
- <execcarestatnm>정상투약</execcarestatnm>
- <carecfactnm> </carecfactnm>
- <orddrnm>김만수</orddrnm>
- </signdata>
- </signinfo>
- */
-
- var ssigndruglist = "ds_temp_result_signdata";
-
- var spid = ds_temp_result_signdata.getColumn(sSignRow, "pid");
- var shngnm = ds_temp_result_signdata.getColumn(sSignRow, "hngnm");
- var sprcpdd = ds_temp_result_signdata.getColumn(sSignRow, "prcpdd");
-
- //--------------(20080923)
- //var sexecdd = model.getValue(ssigndruglist + "[" + sSignRow + "]/execdd");
- //opener.model.setValue("/root/main_om/cond/execdd", model.getValue("/root/main/execdd"));
- var sexecdd = ds_main_om_cond.getColumn(0, "execdd");
- //--------------(20080923)
-
- /*
- ,CASE WHEN a.careprnexecflag = 'P' THEN 'PRN' ELSE '' END || ' ' ||
- CASE WHEN a.anticncrprtlno <> 0 THEN '항암' ELSE '' END || ' ' ||
- CASE WHEN a.dccountyn = 'Y' AND a.selfdrugflag = 'Y' THEN 'self D/C'
- WHEN a.dccountyn = 'Y' then 'D/C'
- WHEN a.selfdrugflag = 'Y' then 'self'
- END prcpkindnm
- //처방종류명 (다른업무에서 투약기록관련인증정보를 생성시 어려운 항목
- */
- var sprcpkindnm = ds_temp_result_signdata.getColumn(sSignRow, "prcpkindnm");
- var sprcpmixno = ds_temp_result_signdata.getColumn(sSignRow, "prcpmixno");
- var sprcpcd = ds_temp_result_signdata.getColumn(sSignRow, "prcpcd");
- var sprcpnm = ds_temp_result_signdata.getColumn(sSignRow, "prcpnm");
- var sprcpvolnm = ds_temp_result_signdata.getColumn(sSignRow, "prcpvolnm");
- var sprcpqtynm = ds_temp_result_signdata.getColumn(sSignRow, "prcpqtynm");
- var sabbrnm = ds_temp_result_signdata.getColumn(sSignRow, "abbrnm");
-
- //-----------------------(20080923)
- //var sexectm = model.getValue(ssigndruglist + "[" + sSignRow + "]/exectm");
- //opener.model.setValue("/root/main_om/cond/exectm", model.getValue("/root/main/exectm")+"00");
- var sexectm = ds_main_om_cond.getColumn(0, "exectm").substr(0,4);
- //-----------------------(20080923)
-
- var snursnm = ds_temp_result_signdata.getColumn(sSignRow, "nursnm");
- var sexeccarestatnm = ds_temp_result_signdata.getColumn(sSignRow, "execcarestatnm");
- var scarecfactnm = ds_temp_result_signdata.getColumn(sSignRow, "carecfactnm");
- var sorddrnm = ds_temp_result_signdata.getColumn(sSignRow, "orddrnm");
-
- ds_send_signinfo_signdata.setColumn(0, "pid", spid);
- ds_send_signinfo_signdata.setColumn(0, "hngnm", shngnm);
- ds_send_signinfo_signdata.setColumn(0, "prcpdd", sprcpdd); //처방일자
- if( sexecdd == "00000000" ){ //투약일자
- ds_send_signinfo_signdata.setColumn(0, "execdd", "");
- }else{
- ds_send_signinfo_signdata.setColumn(0, "execdd", sexecdd);
- }
-
- ds_send_signinfo_signdata.setColumn(0, "prcpkindnm", sprcpkindnm);
- ds_send_signinfo_signdata.setColumn(0, "prcpmixno", sprcpmixno); //MIXNO
-
- ds_send_signinfo_signdata.setColumn(0, "prcpcd", sprcpcd); //처방코드
- ds_send_signinfo_signdata.setColumn(0, "prcpnm", sprcpnm); //처방명
- ds_send_signinfo_signdata.setColumn(0, "prcpvolnm", sprcpvolnm); //용량단위명칭(용량+용량단위명칭)
- ds_send_signinfo_signdata.setColumn(0, "prcpqtynm", sprcpqtynm); //수량단위명칭(수량+수량단위명칭)
- //투여방법약어명(다른업무에서 투약기록관련인증정보를 생성시 어려운 항목)
- ds_send_signinfo_signdata.setColumn(0, "abbrnm", sabbrnm);
- if( sexectm == "000000" ){ //투약시간
- ds_send_signinfo_signdata.setColumn(0, "exectm", "");
- }else{
- ds_send_signinfo_signdata.setColumn(0, "exectm", sexectm);
- }
-
- ds_send_signinfo_signdata.setColumn(0, "nursnm", snursnm); //간호사명칭
- if( utlf_isNull(sexeccarestatnm) ) sexeccarestatnm = "N";
- //미확인,정상투약,투약X-반환가능,투약X-반환불가,퇴원당일남은약
- //(다른업무에서 투약기록관련인증정보를 생성시 정상투약,)
- ds_send_signinfo_signdata.setColumn(0, "execcarestatnm", sexeccarestatnm);
- //간호사REMARK CODE에 대한 REMARK 명칭((다른업무에서 투약기록관련인증정보를 생성시 공백)
- ds_send_signinfo_signdata.setColumn(0, "carecfactnm", scarecfactnm);
- //진료의명(다른업무에서 투약기록관련인증정보를 생성시 어려운 항목)
- ds_send_signinfo_signdata.setColumn(0, "orddrnm", sorddrnm);
-
- //Sign.addnode("/root/send/signinfo/signdata");
- Sign.addnode("/signdata", ds_send_signinfo_signdata.saveXML());
- //alert("fMake_SignData---------종료");
- //Sign.signedInfos[1] 는 없음
- ////alert("fmake_signdata"+ Sign.signedInfos[1] );
- }
- //일자별XLST를 호출함
- function fnWorkddSign(signDates) {
- //-----------------------------------------------(20080901)
- // 투약기록을 일자별로 XLST를 만들기 위해서
- //-----------------------------------------------
- var sPathSign = "ds_main_om_signinfo";
- var pGrd = group5.grd_ompatlist;
- var signDate = "";
-
- //alert("------------------fnWorkddSign------------"+ signDates.length);
- for( var i=0 ; i<signDates.length ; i++ ){
- signDate = "" + signDates[i];
- //alert("1:" + signDate);
- if( !utlf_isNull(signDate) ){
- signDate = signDate.replace("-","");
- //alert("2:" + signDate);
-
- var spid = ds_main_om_ominfo_ompatinfo_ompatlist.getColumn(pGrd.currentrow, "pid"); //등록번호 (필수)
- var sinstcd = "";//model.getValue("/root/main_om/ominfo/ompatinfo/ompatlist/instcd"); //기관코드 (사용X)
- var sindd = ds_main_om_ominfo_ompatinfo_ompatlist.getColumn(pGrd.currentrow, "indd"); //입원일자 (필수)
- var scretno = ds_main_om_ominfo_ompatinfo_ompatlist.getColumn(pGrd.currentrow, "cretno");//생성번호 (사용X)
- var sprcpdd = ""; //처방일자 (PRN시 필수)
- var sprcpno = ""; //처방번호 (확인사항)
- var sworkdd = signDate; //model.getValue("/root/main/cond/orddd"); //투약일(일자그룹일때만 (필수)
- var slistflag = "90"; //작업구분 (필수)
- var snursnm = sysf_getUserName(); //간호사명추가 (필수)
- var shngnm =ds_main_om_ominfo_ompatinfo_ompatlist.getColumn(pGrd.currentrow, "patnm"); //환자명추가 (필수)
- var smedrexecdd = ds_main_om_cond.getColumn(0, "execdd"); //화면에서저장할투약일자(사용X)
- var smedrexectm = ds_main_om_cond.getColumn(0, "exectm").substr(0,4); //화면에서저장할투약시간(사용X)
- //0923
- //alert("일자별xlst:" + smedrexectm + "/" + smedrexectm);
- ds_main_om_signinfo_reqsigncond.setColumn(0, "pid", spid); //desc="등록번호"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "instcd", sinstcd); //desc="기관코드"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "indd", sindd); //desc="입원일자"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "cretno", scretno); //desc="생성번호"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "prcpdd", sprcpdd); //desc="처방일자"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "prcpno", sprcpno); //desc="처방번호"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "workdd", sworkdd); //desc="투약일"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "listflag", slistflag); //desc="작업구분"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "nursnm", snursnm); //desc="간호사명추가"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "hngnm", shngnm); //desc="환자명추가"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "medrexecdd", smedrexecdd); //desc="화면에서저장할투약일자"
- ds_main_om_signinfo_reqsigncond.setColumn(0, "medrexectm", smedrexectm); //desc="화면에서저장할투약시간"
-
- var pFlag = "Drug"; //저장구분 (Drug : 투약기록)
- var pNode1 = "ds_main_om_signinfo_reqsigncond"; //조회할 조건 PATH(의미없음)
- var pNode2 = sPathSign + "_signdruginfo_signdruglist"; //Return 리스트 PATH
-
- //--------------------------(20080923)
- var ordtype = ds_temp_result_signdata.getColumn(0, "ordtype"); //(20080923)
- fCare_SignNode(pFlag, pNode1, pNode2,spid,sindd,scretno, ordtype);
- //fCare_SignNode(pFlag, pNode1, pNode2, pPid, pIndd, pCretno, pIoflag){
- //--------------------------(20080923)
- }
- }
- }
- //------------------------(20080902)
- //일자별 인증정보를 묶을 일자를 찾는다
- //넣어야 할지는 판단한다.
- function signdayFind(signDates,findDate) {
- var sreturn = false;
- if (findDate == "00000000" || utlf_isNull(findDate) ){
- }else{
- ////alert("signDates.length:"+ signDates.length);
- for( var i=0 ; i<signDates.length ; i++ ){
- ////alert("비교:" + signDates[i] + "/" + findDate);
- sreturn = true;
- if( signDates[i] == findDate ){
- sreturn = false;
- break;
- }
- }
- }
- return sreturn;
- }
- //------------------(20080903)
- ]]></Script>
|