123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569 |
- /*
- (SMMNW04000_중증도.xrw - JScript )
- - Version :
- 1) : Ver.1.00.01
- */
- var xRecInfo = '/root/main/recgrup/recinfo';
- var xRecMasterPath = "/root/main/recgrup/recgruplist"; //중증도기록마스터
- var xRecDetailPath = "/root/main/recdetailgrup/recdetailgruplist"; //중증도상세내역
- var xRecPntPath = "/root/main/recpntgrup/recpntlist"; //중증도상세점수
- var xRecDetailBKPath = "/root/temp/histgrup/histgruplist"; //중증도상세내역 hidden
- var recMCurRow = 0; //기록마스터에 현재 선택된 row index
- /*
- var icuArr = new Array(4);//중환자실리스트 하드코딩
- icuArr[0] = '3060100000';//내과중환자실
- icuArr[1] = '3060200000';//외과중환자실
- icuArr[2] = '3060300000';//신경외과중환자실
- icuArr[3] = '3060400000';//순환기계중환자실
- icuArr[4] = '3060600000';//2층중환자실
- */
- /**
- * 20080820
- * 분류가 선택될때마다 hidden으로 분류군정보를 로드함(인증저장시 필요함)
- */
- function fLoadBsPnt(totpnt){
- var clsflag = model.getValue('/root/cond/clsflag'); //분류구분
- var execdt = opener.model.getValue('/root/main/wardrecinfo/recdd'); //기록일자
- model.removenode('/root/send');
- model.makeValue('/root/send/bspnt/clsflag', "1");
- model.makeValue('/root/send/bspnt/recflag', "9");
- model.makeValue('/root/send/bspntgrup/execdt', execdt);
- model.makeValue('/root/send/bspntgrup/totpnt', totpnt);
- if(submit('TRMNW04014')){
- var bspntnm = model.getValue('/root/hidden/bspnt/bspntinfo/bspntnm');
- return bspntnm;
- }else{
- messageBox('중증군조회를', 'E009');
- return;
- }
- }
- /**
- * @ver : 2008.06.20
- * @author : dhkim
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @param :
- * @return :
- * @desc : 그리드 환자정보 리스트 조회
- * @---------------------------------------------------
- */
- function fSearchPatList(){
- var wardcd = opener.model.getValue("/root/temp/cond/list/wardcd");
- var roomcd = opener.model.getValue("/root/temp/cond/list/roomcd");
- var pid = opener.model.getValue("/root/temp/cond/list/pid");
- var clsflag = "1";
- var recflag = "9";
- //기록마스터리셋
- model.removenode(xRecMasterPath);
- //상세점수리셋
- model.removenode('/root/main/recpntgrup/recpntlist');
- //상세내역리셋
- model.removenode('/root/main/recdetailgrup/recdetailgruplist');
- //2008.08.05 dhkim 추가
- //중증도/낙상/욕창 내역 조회(grd_recmaster)
- fSearchRecMaster(grd_patinfo.row);
- }
- /**
- * @group :
- * @ver : 2007.12.05 신혁춘
- * 2008.06.09 dhkim 수정
- * @by : dhkim
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @param : curRow - 현재 선택된 그리드의 행 인덱스
- * @return :
- * @desc : 환자정보 그리드 더블클릭 이벤트 발생시 호출됨
- * 중증도 구분에 따른 중증도/낙상/욕창 내역 조회
- * [임의 코드 부여 clsflag]
- * (1) 중증도 구분
- * 1: 일반병동
- * 2: 신생아 ICU
- * 3: 혈액투석
- * 4: 중환자실
- * 5: 정신과병동
- * 10: 중환자실입실(실제 flag는 4(중환자실)로 넘기나 당일 중환자실 입실환자만 조회
- * 11: 중환자실퇴실(실제 flag는 4(중환자실)로 넘기나 당일 중환자실 퇴실환자만 조회
- * (2) 낙상위험사정구분
- * 7: 소아
- * 8: 성인
- * (3) 욕창위험사정구분
- * 9: 욕창(욕창위험사정구분)
- *
- * *2008.08.05 dhkim 추가
- * 해당환자의 입원일자 이전으로 수행일자를 기록하려고 할때에는 blocking처리
- * @---------------------------------------------------
- */
- function fSearchRecMaster(curRow){
- //혈액투석의 경우 입원환자 더블클릭 할때에 조회조건에 기본 조회값을 세팅해야함.
- //혈액투석의 경우 외래환자 더블클릭은 조회조건 비활성화
- var clsflag = "1";//분류구분
- var recflag = "9";//기록구분
- // var ioflag = model.getValue('/root/main/paminfo/pamlist/ioflag'); //외래/입원구분
- // var pid = model.getValue('/root/main/paminfo/pamlist/pid'); //등록번호
- // var indd = model.getValue('/root/main/paminfo/pamlist/indd'); //입원일자
- // var histstat = model.getValue('/root/main/paminfo/pamlist/histstat'); //이력상태
- // var cretno = model.getValue('/root/main/paminfo/pamlist/cretno'); //생성번호
- // var seqno = model.getValue('/root/main/paminfo/pamlist/seqno'); //이력번호
- // var hngnm = model.getValue('/root/main/paminfo/pamlist/hngnm'); //환자명
- var ioflag = opener.model.getValue("/root/temp/cond/list/ioflag"); //외래/입원구분
- var pid = opener.model.getValue("/root/temp/cond/list/pid"); //등록번호
- var indd = opener.model.getValue("/root/temp/cond/list/indd"); //입원일자
- var histstat = opener.model.getValue("/root/temp/cond/list/histstat"); //이력상태
- var cretno = opener.model.getValue("/root/temp/cond/list/cretno"); //생성번호
- var seqno = opener.model.getValue("/root/temp/cond/list/seqno"); //이력번호
- var hngnm = opener.model.getValue("/root/temp/cond/list/hngnm"); //환자명
-
- var execdd = opener.model.getValue('/root/main/wardrecinfo/recdd'); //수행일자
- var exectm = opener.model.getValue('/root/main/wardrecinfo/rectm'); //수행시간
- if(execdd == null || execdd == ''){
- execdd = getCurrentDate();
- }
- if(exectm == null || exectm == ''){
- exectm = getCurrentTime().substring(0, 4);
- }
- //20081014 i/o조건값 cond 노드에 setting
- model.removenode('/root/cond/ioflag');
- model.makeValue('/root/cond/ioflag', ioflag);
- model.refresh();
- //중증도 마스터내역을 조회한다.
- model.removenode('/root/send');
- model.makeValue('/root/send/clsflag', '1');
- model.makeValue('/root/send/recflag', '9');
- model.makeValue('/root/send/execdd', execdd);
- model.makeValue('/root/send/exectm', exectm);
- model.makeValue('/root/send/pid', pid);
- model.makeValue('/root/send/indd', indd);
- model.makeValue('/root/send/histstat', histstat);
- model.makeValue('/root/send/cretno', cretno);
- model.makeValue('/root/send/seqno', seqno);
- model.makeValue('/root/send/hngnm', hngnm);
- model.removenode('/root/main/recgrup');
- model.makeNode('/root/main/recgrup');
- //상세점수, 상세내역, 상세설명의 현재instance를 remove한다.
- model.removenode('/root/main/recpntgrup');
- model.removenode('/root/main/recdetailgrup');
- model.removenode('/root/main/tar_desccnts');
- model.refresh();
- //중증도내역 마스터 조회 후 기록정보 조회
- if(!submit('TRMNW04011')){
- messageBox('중증도내역의 조회를', 'E009');
- return;
- }else{
- //조회갯수 0일때 조회 후 수행일자, 수행시간, 최근 저장일을 세팅
- var execdd = opener.model.getValue('/root/main/wardrecinfo/recdd'); //수행일자
- var exectm = opener.model.getValue('/root/main/wardrecinfo/rectm'); //수행시간
- //중증도 마스터를 조회후 수행일자에 해당하는 내역이 없으면 행추가, 있으면 해당 row select
- fSetRecMaster(exectm, execdd);
- //환자정보에 선택한 로우정보 set
- //grd_patinfo.row = curRow;
- //grd_patinfo.topRow = curRow;
- //중증도 상세점수조회
- fSearchRecPnt();
- }
- }
- /**
- * 중증도 마스터를 조회후 수행일자, 기록순번에 해당하는 내역이 없으면 행추가, 있으면 해당 row select
- */
- function fSetRecMaster(exectm, execdd){
- if(grd_recmaster.rows > 1){
- grd_recmaster.row = 1;
- // var _recseq, _execdd;
- // var selRow = 0;
- //
- // for(var i = 1; i < grd_recmaster.rows; i++){
- //
- // //_exectm = model.getValue(xRecMasterPath + '[' + i + ']/exectm');
- // _execdd = model.getValue(xRecMasterPath + '[' + i + ']/execdd');
- //
- // //2008.08.07 dhkim 수정. 날짜로만 체크
- // //if(exectm == _exectm && execdd == _execdd){
- // if(execdd == _execdd){
- // selRow = i;
- // break;
- // }
- // }
- //
- // if(selRow > 0){
- // grd_recmaster.row = selRow; //수행일자에 해당하는 row를 선택
- // }else{
- //
- // //수행일자에 해당하는 기록이 없으면 상세내역이 update될때 메세지 뿌림.
- // //2008.08.07 dhkim 수정
- // //수행일자에 해당하는 기록이 있으면 무조건 가장 최근 행에 포커스 이동.
- // //수행일자에 해당하는 기록이 없으면 가장 첫번째행에 포커스 이동.
- // grd_recmaster.row = 1;
- // //grd_recmaster.insertRow("1", "above");
- // //fSetNewRowRecMaster();
- // }
- }else{
- //기록된 내역이 한건도 없을때 신규행을 추가
- grd_recmaster.addRow();
- fSetNewRowRecMaster();
- }
- }
- /**
- * @group :
- * @ver : 2008.06.23
- * @by : dhkim
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 기록마스터에 행추가후 값 세팅
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fSetNewRowRecMaster(){
- var curRow = grd_recmaster.row;
- var execdd = opener.model.getValue('/root/main/wardrecinfo/recdd'); //수행일자
- var exectm = opener.model.getValue('/root/main/wardrecinfo/rectm'); //수행시간
- model.setValue(xRecMasterPath + '[' + curRow + ']/execdd', execdd);//수행일자
- model.setValue(xRecMasterPath + '[' + curRow + ']/exectm', exectm);//수행시간
- model.setValue(xRecMasterPath + '[' + curRow + ']/totpnt', 0); //총점
- model.setValue(xRecMasterPath + '[' + curRow + ']/execnm', getUserName());//수행자명
- model.setValue(xRecMasterPath + '[' + curRow + ']/pid', opener.model.getValue("/root/temp/cond/list/pid"));//등록번호
- model.setValue(xRecMasterPath + '[' + curRow + ']/hngnm', opener.model.getValue('/root/temp/cond/list/hngnm'));//환자명
- model.setValue(xRecMasterPath + '[' + curRow + ']/recflag', '9');//기록구분
- model.setValue(xRecMasterPath + '[' + curRow + ']/clsflag', '1');//분류구분
- model.setValue(xRecMasterPath + '[' + curRow + ']/execkind', 0);//분류구분
- model.setValue(xRecMasterPath + '[' + curRow + ']/execid', getUserId());//수행자ID
- model.setValue(xRecMasterPath + '[' + curRow + ']/indd', opener.model.getValue('/root/temp/cond/list/indd'));//입원일자
- model.setValue(xRecMasterPath + '[' + curRow + ']/histstat', opener.model.getValue('/root/temp/cond/list/histstat'));//이력상태
- model.setValue(xRecMasterPath + '[' + curRow + ']/cretno', opener.model.getValue('/root/temp/cond/list/cretno'));//생성번호
- model.setValue(xRecMasterPath + '[' + curRow + ']/seqno', opener.model.getValue('/root/temp/cond/list/seqno'));//이력일련번호
- model.setValue(xRecMasterPath + '[' + curRow + ']/stat', 'i');//그리드상태
- model.refresh();
- }
- /**
- * @group :
- * @ver : 2007.12.06
- * @by : 신혁춘
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 상세점수조회 셋팅
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fSearchRecPnt(){
- var clsflag = model.getValue(xRecInfo + '/clsflag');
- var recflag = model.getValue(xRecInfo + '/recflag');
- var curRow = grd_recmaster.row;
- //마스터가 암것도 없을때나 행추가 상태일때는 조회안하고 바로 리턴한다.
- if(grd_recmaster.rows < 2 || model.getValue(xRecMasterPath + '[' + curRow + ']/stat') == 'i' ){
- model.removeNodeset("/root/main/recpntgrup/recpntlist");// 중증도 상세점수 클리어
- model.refresh();
- }
- model.removeNodeset("/root/send");
- model.makeValue("/root/send/pid", model.getValue(xRecMasterPath+"["+curRow+"]/pid"));
- model.makeValue("/root/send/indd", model.getValue(xRecMasterPath+"["+curRow+"]/indd"));
- model.makeValue("/root/send/cretno", model.getValue(xRecMasterPath+"["+curRow+"]/cretno"));
- model.makeValue("/root/send/execdd", model.getValue(xRecMasterPath+"["+curRow+"]/execdd"));
- model.makeValue("/root/send/recseq", model.getValue(xRecMasterPath+"["+curRow+"]/recseq"));
-
- model.makeValue("/root/send/clsflag", '1');
- model.makeValue("/root/send/recflag", '9');
- //상세내역, 상세설명의 현재instance를 remove한다.
- model.removenode('/root/main/recdetailgrup');
- model.removenode('/root/main/tar_desccnts');
- model.refresh();
- //상세점수그리드조회
- if(!submit("TRMNW04007")){//상세점수조회
- messageBox('상세점수조회를', 'E009');
- return;
- }else{
- //상세점수그리드의 컬럼을 조회한 내역의 갯수만큼 화면에 보여준다.
- fColLqidtys();
- }
- //중증기록 detail 상세내역 그리드리스트를 조회한다.
- fSearchRecDetail();
- }
- /**
- * @group :
- * @ver : 2007.12.06
- * 2008.06.23 dhkim 수정
- * @by : 신혁춘
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 상세점수그리드의 컬럼을 조회한 내역의 갯수만큼 화면에 보여준다.
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fColLqidtys() {
- var cnt = model.getValue("/root/main/recpntgrup/recpntlist/cnt");
- if(Number(cnt) > 0 ){
- var fdx = 0;
- var hngnm;
- var idx = 0;
- fdx = Number(grd_recpnt.colRef("hngnm"));
- for(var i = 1 ; i <= cnt ; i++) {
- hngnm = model.getValue("/root/main/recpntgrup/pnttitlgruplist["+ i +"]/hngnm");
- idx = Number(fdx) + Number(i);
- grd_recpnt.colhidden(idx) = false; //조회된 컬럼 갯수만큼 그리드의 필드를 보여줌
- //grd_recpnt.colwidth(idx) = hngnm.length * 10; //조회된 컬럼 갯수만큼 그리드의 필드를 100으로 길이 세팅
- grd_recpnt.colwidth(idx) = 60; // 컬럼사이즈 fix
- //그리드의 타이틀필드값에 상세내역의 타이틀을 세팅
- grd_recpnt.valuematrix(0, idx) = hngnm;
- grd_recpnt.valuematrix(1, idx) = hngnm;
- }
- grd_recpnt.colhidden(grd_recpnt.colRef("totpnt")) = false;
- grd_recpnt.colhidden(grd_recpnt.colRef("resultcd")) = false;
- // grd_recpnt.colhidden(43) = false;//중증도분류코드
- // grd_recpnt.colhidden(44) = false;//column 갯수
- grd_recpnt.colwidth(grd_recpnt.colRef("totpnt")) = 60;
- grd_recpnt.colwidth(grd_recpnt.colRef("resultcd")) = 60;
- //상세점수 그리드 1,2번째 컬럼에 등록번호, 환자명 세팅
- grd_recpnt.valuematrix(2,1) = model.getValue(xRecMasterPath+"["+grd_recmaster.row+"]/pid");
- grd_recpnt.valuematrix(2,2) = model.getValue(xRecMasterPath+"["+grd_recmaster.row+"]/hngnm");
- grd_recpnt.refresh();
- }
- }
- /**
- * @group :
- * @ver : 2007.12.05
- * @by : 신혁춘
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 선택된 중증도 내역에 따른 중증도 상세내역을 조회한다.
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fSearchRecDetail(){
- var curRow = grd_recmaster.row;
- model.removenode('/root/main/recdetailgrup');
- model.makeNode('/root/main/recdetailgrup');
- model.removeNodeset("/root/send");
- model.makeValue("/root/send/pid", model.getValue(xRecMasterPath+"["+curRow+"]/pid"));
- model.makeValue("/root/send/cretno", model.getValue(xRecMasterPath+"["+curRow+"]/cretno"));
- model.makeValue("/root/send/indd", model.getValue(xRecMasterPath+"["+curRow+"]/indd"));
- model.makeValue("/root/send/seqno", model.getValue(xRecMasterPath+"["+curRow+"]/seqno"));
- model.makeValue("/root/send/recseq", model.getValue(xRecMasterPath+"["+curRow+"]/recseq"));
- model.makeValue("/root/send/clsflag", '1');
- model.makeValue("/root/send/recflag", '9');
- model.makeValue("/root/send/execdd", model.getValue(xRecMasterPath+"["+curRow+"]/execdd"));
- //상세설명의 현재instance를 remove한다.
- model.removenode('/root/main/tar_desccnts');
- model.refresh();
- //중증도 상세내역 조회
- if(submit("TRMNW04006")){
- model.copyNode("/root/temp","/root/main");
- fShowTreeRecDetailGrup();
- }
- }
- /**
- * @group :
- * @ver : 2007.12.06
- * @by : 신혁춘
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 중증도 상세내역 트리구조로 변환
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fShowTreeRecDetailGrup(){
- //그리드를 depth에 맞게 level을 조정한다.
- var dpth = 0;
- for(var i=1; i< grd_recdetail.rows; i++){
- //grd_recdetail.IsSubtotal(i) = true;
- dpth = Number(model.getValue(xRecDetailPath+"[" + (i) + "]/depth"));
- if(dpth == 1){
- grd_recdetail.outlinelevel(i) = 1;
- }else if(dpth == 2){
- grd_recdetail.outlinelevel(i) = 2;
- }
- grd_recdetail.colDisabled(11) = true ;
- }
- //트리스타일 설정
- grd_recdetail.OutlineCol = 3;
- grd_recdetail.OutlineBar = 4;
- grd_recdetail.allstyle( "all", "background-color" ) = "#FFFFFF" ;
- var iRow = grd_recdetail.rows;
- var timsval, flag;
- for(var i = 1 ; i < grd_recdetail.rows; i++ ){
- timsval = model.getValue(xRecDetailPath+"["+ i +"]/timsval");
- flag = model.getValue(xRecDetailPath+"["+ i +"]/flag");
- //입력필드가 아닐때 점수를 회색으로 보여준다.
- if(model.getValue(xRecDetailPath+"["+ i +"]/timsval") == "") {
- grd_recdetail.cellstyle("background-color", i,5 ,i,5) = "#C0C0C0";//회색
- }
- //20080827 구분에 체크되어있고 입력필드일 때 횟수값이 0이면 배경을 노랑색으로 보여준다.
- else if(flag == 'Y' && timsval != '' && (timsval == '0' || timsval == 0)){
- grd_recdetail.cellstyle("background-color", i,5 ,i,5) = "#FCFF00";//노랑
- }
- if(model.getValue(xRecDetailPath+"["+ i +"]/supcd") == "00000000") {//level이 상위레벨일때
- //색깔(연두색)을 입혀서 보여준다.
- grd_recdetail.rowstyle(i, "data", "background-color") = "#c0ff80";
- //그리드 체크박스 readonly true로 변경
- grd_recdetail.isReadonly(i, 1, i, 1) = true;//체크박스
- }else{
- //그리드 체크박스 readonly false로 변경
- grd_recdetail.isReadonly(i, 1, i, 1) = false;//체크박스
- }
- var timsinptyn = model.getValue(xRecDetailPath + '[' + i + ']/timsinptyn');//횟수입력여부
- if(timsinptyn == 'Y'){
- grd_recdetail.isReadonly(i, 5, i, 5) = false;//횟수입력필드 readonly true로 변경
- }else if(timsinptyn == 'N'){
- grd_recdetail.isReadonly(i, 5, i, 5) = true;//횟수입력필드 readonly false로 변경
- }
- }
- model.refresh();
- }
- /**
- * @group :
- * @ver : 2008.06.25
- * @by : dhkim
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @param : selRow 현재 선택한 그리드 row idx
- * selCol 현재 선택한 그리드 col idx
- * _supcd 현재 선택한 그리드 row의 상위코드값
- * @desc : 횟수입력시 입력여부가 N이면 값을 원래 값으로 리턴
- * col = 1 (구분체크박스), col=5 (횟수)
- * @return :
- * @---------------------------------------------------
- */
- function fChangeTimsValValue(selRow, selCol, _supcd){
- if(_supcd == '00000000'){
- return;
- }
- if(selCol == 5){//횟수변경 (횟수입력여부가 Y인것만 입력 가능함)
- var flag = model.getValue(xRecDetailPath + '[' + selRow + ']/flag');
- var timsinptyn = model.getValue(xRecDetailPath + '[' + selRow + ']/timsinptyn');//횟수입력가능여부
- if(timsinptyn == 'N'){
- return;
- }else if(timsinptyn == 'Y'){//횟수 입력가능상태
- if(flag == 'N'){
- //체크상태가 아닌 데이터에 횟수 입력시 원래상태로 back
- model.setValue(xRecDetailPath + '[' + selRow + ']/timsval', model.getValue(xRecDetailPath + '[' + selRow + ']/bktimsval'));
- }
- }
- }
- }
- /**
- * @group :
- * @ver : 2008.06.25
- * @by : dhkim
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @param : selRow 현재 선택한 그리드 row idx
- * selCol 현재 선택한 그리드 col idx
- * _supcd 현재 선택한 그리드 row의 상위코드값
- * @desc : 체크박스 변경에 따른 선택된 같은 그룹내의 체크박스 값 변경
- * col = 1 (구분체크박스)
- * @return :
- * @---------------------------------------------------
- */
- function fChangeCheckboxValue(selRow, selCol, _supcd){
- var curFlag = model.getValue(xRecDetailPath + '[' + selRow + ']/flag');//현재선택한 체크값
- var clsflag = model.getValue('/root/cond/clsflag');
- if(_supcd == '00000000'){
- return;
- }
- if(selCol == 1){//체크값 변경
- //2008.08.07 dhkim 추가
- //중증도중환자실(중환자실입실, 중환자실퇴실 포함), 신생아ICU, 낙상소아는 multi 체크이므로 기존에 체크된 데이터를 해제하지 않는다.
- //일반병동, 정신과병동, 혈액투석, 낙상성인, 욕창은 single 체크임
- var isMulti = false;
- if(clsflag == '4' || clsflag == '6' ||clsflag == '7' || clsflag == '2' || clsflag == '8'){
- isMulti = true;
- }
- var supcd, flag;
- for(var i = 1; i < grd_recdetail.rows; i++){
- supcd = model.getValue(xRecDetailPath + '[' + i + ']/supcd');
- flag = model.getValue(xRecDetailPath + '[' + i + ']/flag');
- if(!isMulti){
- //같은 그룹내에서 비교
- if(supcd != '00000000' && supcd == _supcd && flag == 'Y'){//기존 체크데이터를 해제
- //원래 체크되어있던 값을 해제, 상태 삭제로
- model.setValue(xRecDetailPath + '[' + i + ']/flag', 'N');
- }
- }
- }
- //현재 체크한 값을 선택, 상태 신규로
- if(curFlag == 'Y'){
- model.setValue(xRecDetailPath + '[' + selRow + ']/flag', 'Y');
- //20080827
- //횟수값이 입력가능 항목이면 항목에 체크되었을때 횟수필드를 노랑으로 변경
- if(model.getValue(xRecDetailPath+"["+ selRow +"]/timsval") != ''){
- grd_recdetail.cellstyle("background-color", selRow,5 ,selRow,5) = "#FCFF00";//노랑
- }
- }else if(curFlag == 'N'){
- model.setValue(xRecDetailPath + '[' + selRow + ']/flag', 'N');
- //20080827
- //횟수값이 입력가능 항목이면 항목에 체크해제되었을때 횟수필드를 하냥으로 변경
- if(model.getValue(xRecDetailPath+"["+ selRow +"]/timsval") != ''){
- grd_recdetail.cellstyle("background-color", selRow,5 ,selRow,5) = "#FFFFFF";//하양
- }
- }
- model.refresh();
- }
- }
- /**
- * @group :
- * @ver : 2008.06.25
- * @by : dhkim
- * @-------------------------------------------------------------------------------------------------------
- * @type : function
- * @access : public
- * @param :
- * @return :
- * @desc : 저장하기전 전체그리드의 변경된 내역에 따른 그리드 상태값을 변경한다.
- * (1) 체크박스 선택여부에 따른 상태값 변경
- * 1. 원래값이 Y, 현재Y이면 stat은 '-'
- * 2. 원래값이 Y, 현재N이면 stat은 'd'
- * 3. 원래값이 N, 현재N이면 stat은 '-'
- * 4. 원래값이 N, 현재Y이면 stat은 'i'
- * (2) 횟수 입력에 따른 상태값 변경
- * 1. 현재 chkbox가 Y이고 timsinptyn(횟수입력여부)이 Y일때만 입력가능함.
- * 2. 원래 chkbox가 Y, 현재Y, 현재timsval과 원래 bktimsval값이 다르면 상태값은 'u'로
- * 3. 현재 chkbox가 N인 것에 timsval값이 입력되면 timsval값을 원래상태(원래상태값:bkimsval)로 복구
- * @-------------------------------------------------------------------------------------------------------
- */
- function fChangeGridStat(){
- var bkflag, bktimsval; //원래 체크박스값, 원래횟수값
- var flag, timsval; //변경한체크박스값, 변경한횟수값
- var timsinptyn; //횟수입력여부
- var stat='-'; //변경할 그리드 상태값
- var pntstat = '-'; //상세점수의 stat
- for(var i = 1; i <= grd_recdetail.rows - grd_recdetail.fixedRows ; i++){
- flag = model.getValue(xRecDetailPath + '[' + i + ']/flag'); //현재체크박스값
- timsval = model.getValue(xRecDetailPath + '[' + i + ']/timsval'); //현재횟수값
- bkflag = model.getValue(xRecDetailPath + '[' + i + ']/bkflag'); //원래체크박스값
- bktimsval = model.getValue(xRecDetailPath + '[' + i + ']/bktimsval'); //원래횟수값
- timsinptyn= model.getValue(xRecDetailPath + '[' + i + ']/timsinptyn'); //횟수입력여부
- if(bkflag == 'Y' && flag == 'Y'){
- if(timsinptyn == 'Y' && (timsval != bktimsval)){
- stat = 'u';
- pntstat = 'u';
- }else{
- stat = '-';
- }
- }else if(bkflag == 'Y' && flag == 'N'){
- stat = 'd';
- pntstat = 'u';
- }else if(bkflag == 'N' && flag == 'N'){
- stat = '-';
- }else if(bkflag == 'N' && flag == 'Y'){
- stat = 'i';
- pntstat = 'u';
- }
- //alert(i + stat);
- model.setValue(xRecDetailPath + '[' + i + ']/stat', stat);
- //alert(i + stat + ' , ' + );
- }
- //상세내역이 변경되면 상세점수와 중증도마스터의 stat을 변경상태로 설정한다.
- if(pntstat == 'u'){
- //중증도점수그리드
- grd_recpnt.addStatus(2, 'update');
- //중증도 마스터그리드
- if(grd_recmaster.rowStatus(grd_recmaster.row) != 1){//상태가 신규상태가 아니면 u로 변경
- grd_recmaster.addStatus(grd_recmaster.row, 'update');
- model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat', 'u');
- }
- }else{
- //중증도점수그리드
- grd_recpnt.removeStatus(2, 'update');
- //중증도 마스터그리드
- if(grd_recmaster.rowStatus(grd_recmaster.row) != 1){//상태가 신규상태가 아니면 u로 변경
- grd_recmaster.removeStatus(grd_recmaster.row, 'update');
- model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat', '-');
- }
- }
- model.refresh();
- }
- /**
- * @group :
- * @ver : 2008.06.27
- * @by : dhkim
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 중증도 내역 삭제를 한다
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fDelete(){
- var curRow = grd_recmaster.row;
- if(model.getValue(xRecMasterPath + '[' + curRow + ']/stat') == 'i'){
- grd_recmaster.deleteRow(curRow);
- return;
- }else{
- //20080926 기록자만이 삭제를 할 수 있다.
- var recid = model.getValue(xRecMasterPath + '[' + curRow + ']/execid');
- var recnm = model.getValue(xRecMasterPath + '[' + curRow + ']/execnm');
- if(recid != getUserId()){
- messageBox('기록을 입력한 등록자( ' + recnm + ' )만 해당 기록내역을 삭제하실 수 있습니다.' , 'E');
- return ;
- }else{
- var msg = messageBox('삭제를 진행하시면 입력하신 상세내역도 전부 삭제됩니다. 선택하신 중증도 내역을', 'Q001');
- if(msg == 6){
- model.removenode('/root/send');
- model.setValue(xRecMasterPath + '[' + curRow + ']/stat', 'd');
- model.makeValue('/root/send/recmaster', grd_recmaster.getUpdateDataAll('d'));
- var pid = opener.model.getValue("/root/temp/cond/list/pid");
- var orddd = opener.model.getValue('/root/temp/cond/list/indd');//입원일/진료일
- var cretno = opener.model.getValue('/root/temp/cond/list/cretno');//생성번호
- var orddeptcd = opener.model.getValue('/root/temp/cond/list/orddeptcd');//진료과
- var orddrid = opener.model.getValue('/root/temp/cond/list/medispclid');//진료의
- var ioflag = opener.model.getValue('/root/temp/cond/list/ioflag'); //외래/입원구분
- var signno = model.getValue(xRecMasterPath + '[' + curRow + ']/signno');//인증번호
- /* [각 구분별 기록서식코드]
- * 중증도_일반병동 : 0000002439
- * 중증도_신생아 ICU : 0000002440
- * 중증도_혈액투석 : 0000002441
- * 중증도_중환자실 : 0000002442
- * 중증도_정신과병동 : 0000002444
- * 낙상사정_아동 : 0000002447
- * 낙상사정_성인 : 0000002449
- * 욕창사정 : 0000002450
- */
- var recflag = model.getValue('/root/cond/recflag');
- var clsflag = model.getValue('/root/cond/clsflag');
- var formcd;//기록서식코드
- var formnm;//서식명
- recflag = '9';
- clsflag = '1';
- /*p Sign.certreload = true ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리
- // 인증 로직 호출
- if(Sign.signprocess() == true){ // ▶ 전자인증 관련 환자 인적 정보를 보내줌.
- var wSigninfo = "pid" +"▦" // 01 등록번호
- + "orddd" +"▦" // 02 입원일자(입원,응급)/진료일자(외래)
- + "cretno" +"▦" // 03 생성번호
- + "signno" +"▦" // 04 서명번호(인증번호)
- + "recdd" +"▦" // 05 실제 기록이 이루어진 기록일자
- + "rectm" +"▦" // 06 실제 기록이 이루어진 기록시간
- + "recsaveflag" +"▦" // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
- + "signflag" +"▦" // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
- + "signgenrflag" +"▦" // 09 외래/입원구분(코드정의서 M0010 참조)
- + "formcd" +"▦" // 10 각 기록지별 서식코드 0000002473 N57 간호 수술간호기록
- + "orddeptcd" +"▦" // 11 진료부서코드
- + "orddrid" +"▦" // 12 진료의사ID (집도의)
- + "signbfcnts" +"▦" // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
- + "signaftcnts" +"▦" // 14 ▶ 공인인증 처리후 데이터
- + "screenid" +"▦" // 15 ▶ 화면아이디
- + "certflag" +"▩" // 16 ▶ 인증여부( T : 임시저장, C : 인증저장)
- + pid +"▦" // 01 등록번호
- + orddd +"▦" // 02 입원일자(입원,응급)/진료일자(외래)
- + cretno +"▦" // 03 생성번호
- + signno +"▦" // 04 서명번호(인증번호)
- + getCurrentDate() +"▦" // 05 실제 기록이 이루어진 기록일자
- + getCurrentTime() +"▦" // 06 실제 기록이 이루어진 기록시간
- + "Y" +"▦" // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
- + "02" +"▦" // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
- + ioflag +"▦" // 09 외래/입원구분(코드정의서 M0010 참조)
- + formcd +"▦" // 10 각 기록지별 서식코드 (emr.mrfmform)
- + orddeptcd +"▦" // 11 진료부서코드
- + orddrid +"▦" // 12 진료의사ID
- + Sign.signedInfos[1] +"▦" // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
- + Sign.signedInfos[2] +"▦" // 14 ▶ 공인인증 처리후 데이터
- + getScreenID() +"▦" // 15 ▶ 화면아이디
- + "C" +"▩"; // 16 ▶ 인증여부( T : 임시저장, C : 인증저장)
- model.makeValue("/root/send/signinfo" , wSigninfo);
- } else {
- return ;
- }
- */
- if(!submit('TXMNW04001')){
- messageBox('중증도 내역의 삭제를', 'E009');
- return;
- }else{
- //중증도조회
- fSearchRecMaster(grd_patinfo.row);
- }
- }else if(msg == 7){
- return;
- }
- }
- }
- }
- // ※ 인증데이터 생성함수 만들기
- function fMake_SignData(){
- // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
- Sign.addnode("/root/cond");
- Sign.addnode("/root/main/patinfo/patlist[" + (grd_patinfo.row-1) + "]");
- Sign.addnode("/root/main/recgrup/recgruplist[" + (grd_recmaster.row) + "]");
- Sign.addnode("/root/main/recpntgrup" );
- Sign.addnode("/root/main/recdetailgrup");
- Sign.addnode("/root/temp/signdata/recpntgrup");
- Sign.addnode('/root/temp/signdata/detailinfo');
- //alert(model.getValue('/root/temp/signdata/detailinfo/formnm'));
- }
- //input수행일자에 해당하는 기록일이 있는지 조회
- //신규데이터가 아닌것중..(stat != 'i')
- //@param : iptExecdd 입력하고자 하는 수행일자(input 컴포넌트)
- //@return : arr[0] - 기록여부 (true/false)
- // arr[1] - signno (기록여부가 true일때 해당기록의 signno를 할당)
- // 20080820 - array로 변경
- function fIsRecorded(iptExecdd){
- var retArr = new Array(1);
- var recorded = false;
- var signno = '';
- var execdd;
- var stat;
- for(var i = 1; i < grd_recmaster.rows; i++){
- execdd = model.getValue(xRecMasterPath + '[' + i + ']/execdd');
- stat = model.getValue(xRecMasterPath + '[' + i + ']/stat');
- if(execdd != '' && iptExecdd == execdd && stat != 'i'){
- signno = model.getValue(xRecMasterPath + '[' + i + ']/signno');
- recorded = true;
- retArr[0] = recorded;
- retArr[1] = signno;
- return retArr;
- }
- }
- retArr[0] = recorded;
- retArr[1] = signno;
- return retArr;
- }
- /**
- * @group :
- * @ver : 2008.06.25
- * @by : dhkim
- * @-------------------------------------------------------------------------------------------------------
- * @type : function
- * @access : public
- * @param :
- * @return :
- * @desc : [인증저장]
- * 중증도 마스터와 상세내역을 인증저장한다.
- * - 저장전 중증도 상세내역 점수의 유효성을 체크한다.
- * - 상세내역의 체크된 내역 점수를 합산하여 기록마스터의 totpnt에 set한다.
- * - 이미 기록이 입력되어 있는 경우에 -> grd_recmaster에 상태값이 'u'임.
- * 기록된 날짜가 조회조건의 수행일자와 같으면 db에 update처리하고
- * 기록된 날짜와 조회조건의 수행일자가 다르면 신규로 insert처리한다.(메세지로 알려줄것)
- * @-------------------------------------------------------------------------------------------------------
- */
- function fSignSave(){
-
- //pam=>pat var dschdd = model.getValue("/root/main/paminfo/pamlist/dschdd"); //퇴원일자
- //pam=>pat var indd = model.getValue("/root/main/paminfo/pamlist/indd"); //입원일자
- var dschdd = opener.model.getValue("/root/temp/cond/list/dschdd"); //퇴원일자
- var indd = opener.model.getValue("/root/temp/cond/list/indd"); //입원일자
- var execdd = opener.model.getValue("/root/main/wardrecinfo/recdd"); //수행일자
- // if((execdd < indd) || (execdd > dschdd)) { //입원,퇴원일자 사이의 수행일자만 입력하도록 블러킹
- // messageBox("수행하려는 일자는 입원일자(" +indd.substring(0,4) + "-" + indd.substring(4, 6) + "-" + indd.substring(6) + ")이전 또는 퇴원일자("+dschdd.substring(0,4) + "-" + dschdd.substring(4, 6) + "-" + dschdd.substring(6)+")이후의 일자가 될 수","I004");
- // return;
- // }
-
- var recMasterStat = model.getValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat');//기록마스터의 상태값
-
- /*
- //1. 신규등록
- // 1) 저장된 기록이 하나도 없을때 최초등록의 경우 insert
- // 2) input에 수행일자가 해당 기록에 없는 경우... 이미 기록된 내역을 해당 수행일자로 insert
- // 2008.08.27 수정요청사항
- // 3) input에 수행일자가 해당 기록에 있는 경우... 수정된 내역을 수행일시는 현재일자+현재시간 으로 insert
- //recMasterStat이 '-'이라도 저장할 수행일자가 기록내역에 없으면 신규 insert
- //--------------------------------------------------------------------------------------------
- //2008.08.27 수정요청사항 (기록수정은 진행하지 않는다.)
- //2. 수정등록 (사용안함)
- // 1) 해당기록의 항목을 선택하여 수정하는 경우 수정한 항목을 update
- // 2) input에 수행일자가 해당 기록에 있는 경우... 수정된 내역을 해당수행일자로 update
- // (저장할 수행일자가 기록내역에 있으면 이미 저장된 기록내역이 있습니다 메세지 뿌려줄것)
- */
- //2008.08.27 사용안함-->input수행일자에 해당되는 기록이 이미 입력되어 있는 경우에 db에 update처리
- //2008.08.27 변경됨-->input수행일자에 해당되는 기록이 이미 입력되어 있는 경우에 db에 insert처리, 단, 수행일시는 무조건 현재일시로 저장
- //input수행일자에 해당되는 기록이 저장되어있지 않은경우 db에 insert처리
- var execdd = opener.model.getValue('/root/main/wardrecinfo/recdd');//조회조건의 수행일자
- var exectm = opener.model.getValue('/root/main/wardrecinfo/rectm');//조회조건의 수행시간
- var recdd = model.getValue(xRecMasterPath + '[' + grd_recmaster.row + ']/execdd');//기록된 일자
- var isRecordedArr = fIsRecorded(execdd);//input수행일자에 해당되는 기록이 있는지 여부
- //20080820 array로 변경
- //arr[0]은 기록여부 true/false
- //arr[1]은 기록여부 true일때의 signno
- var signno = '';//인증번호
- var siflag = 'N';//default 는 N. 기존의 데이터를 그대로 신규로 insert하는경우flag값
- // Y인경우 : 1.다른일자의 기록내역은 있으나 input의 수행일자에 해당되는 기록이 없을때..
- // 2. input의 수행일자에 해당되는 기록이 있을때..
- //저장전 유효성을 체크한다.
- if(fIsValid()){
- //상세내역의 체크점수를 합산하여 마스터와 상세점수의 totpnt에 set한다.
- var totPnt = fSumPnt();
- model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/totpnt', totPnt);//마스터의 총점
- model.setValue('/root/main/recpntgrup/recpntlist/totpnt', totPnt);//상세점수의 총점
- //총점에 해당하는 분류군을 조회한후 마스터와 상세점수의 분류군에 set한다.
- var bspntnm = fLoadBsPnt(totPnt);
- model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/resultnm', bspntnm);//마스터의 분류군
- model.setValue('/root/main/recpntgrup/recpntlist/resultcd', bspntnm);//상세점수의 총점
- //상세내역 체크한 점수를 항목별로 합산하여 상세점수 노드에 set한다.
- fSetRecDetailPnt();
- //recMasterStat이 '-'경우 'u'로 넘김.
- //중증도점수그리드
- grd_recpnt.addStatus(2, 'update');
- //중증도 마스터그리드
- //20080827 상태가 신규가 아니면 u 상태로 db에 복사해 insert로 변경됨...
- if(grd_recmaster.rowStatus(grd_recmaster.row) != 1){//상태가 신규상태가 아니면 u로 변경
- grd_recmaster.addStatus(grd_recmaster.row, 'update');
- model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat', 'u');
- siflag = 'Y';//기존데이터를 복사해 insert하는 경우 Y아니면 N
- }
- var msg = 6;
- if(Number(msg) == 6){//예
- model.removenode('/root/send');
- model.makeValue('/root/send/sch_execdd', execdd);//조회조건에 있는 수행일자
- model.makeValue('/root/send/sch_exectm', exectm);//조회조건에 있는 수행시간
- model.makeValue('/root/send/siflag', siflag);//기존데이터를 복사해 insert하는 경우 Y아니면 N
- model.makeValue('/root/send/ioflag', model.getValue('/root/cond/ioflag'));//외래입원구분
- var pid = model.getValue(xRecMasterPath + "/pid");
- var orddd = opener.model.getValue('/root/temp/cond/list/indd');//입원일/진료일
- var cretno = opener.model.getValue('/root/temp/cond/list/cretno');//생성번호
- var orddeptcd = opener.model.getValue('/root/temp/cond/list/orddeptcd');//진료과
- var orddrid = opener.model.getValue('/root/temp/cond/list/medispclid');//진료의
- var ioflag = opener.model.getValue('/root/temp/cond/list/ioflag'); //외래/입원구분
- //신규(insert)일때는 signno를 초기화한다.
- /*
- if((recMasterStat == 'i') || (recMasterStat == 'u' && execdd != recdd)){
- signno = '';
- }else{
- signno = model.getValue(xRecMasterPath + "[" + grd_recmaster.row + "]/signno");
- }
- */
- //alert(grd_recmaster.row + '의 signno : ' + signno);
- /* [각 구분별 기록서식코드]
- * 중증도_일반병동 : 0000002439
- * 중증도_신생아 ICU : 0000002440
- * 중증도_혈액투석 : 0000002441
- * 중증도_중환자실 : 0000002442
- * 중증도_정신과병동 : 0000002444
- * 낙상사정_아동 : 0000002447
- * 낙상사정_성인 : 0000002449
- * 욕창사정 : 0000002450
- */
- var recflag = "9";
- var clsflag = "1";
- var formcd;//기록서식코드
- var formnm;//서식명
-
- if ( Number(model.getValue("/root/cond/checkcnt")) > 0 ) {//상세내역을 하나도 선택안한경우에는 노드 생성하지 않는다.
- model.makeValue('/root/send/recmaster', grd_recmaster.getUpdateDataAll('i'));
- for( var idx = 1 ; idx <= getNodesetCount(xRecDetailPath) ; idx++){
- if ( Number(model.getValue(xRecDetailPath + '[' + idx + ']/basepnt_multi')) > 0 ){
- model.setValue( xRecDetailPath + '[' + idx + ']/basepnt',model.getValue(xRecDetailPath + '[' + idx + ']/basepnt_multi'));
- }
- }
- model.makeValue('/root/send/recdetail', grd_recdetail.getUpdateDataAll('i'));
-
- //중증상세을 노드를 만들어서 내보낸다. 응급간호정보조사 인증저장용 데이타 생성
- var xDetailPath = '/root/temp/signdata/detailinfo/recdetailgruplist';
- opener.model.makeNode(xDetailPath);
- copyNodeType("/root/temp/signdata/detailinfo", "/root/main/recdetailgrup", "replace", opener.model, model);
-
- var recpntCnt = getNodesetCount("/root/main/recpntgrup/pnttitlgruplist");
- var timsval, hngnm;
- var colno;
-
- for(var i = 1; i <= recpntCnt; i++){
-
- if(i < 10){
- colno = '0' + i;
- }else{
- colno = i;
- }
-
- timsval = model.getValue("/root/main/recpntgrup/recpntlist/timsval" + colno);
- hngnm = model.getValue('/root/main/recpntgrup/pnttitlgruplist[' + i + ']/hngnm');
- //alert(colno + ', ' + timsval + ', ' + hngnm + ', ' + i);
-
- opener.model.makeValue('/root/temp/signdata/recpntgrup/recpntlist[' + i + ']/timsval', timsval);
- opener.model.makeValue('/root/temp/signdata/recpntgrup/recpntlist[' + i + ']/hngnm', hngnm);
- }
- opener.model.makeValue("/root/temp/signdata/recpntgrup/viewyn", "Y");
-
- }else {
- grd_recmaster.addStatus(grd_recmaster.row, 'delete');
- model.setValue(xRecMasterPath + '[' + grd_recmaster.row + ']/stat', 'd');
- model.makeValue('/root/send/recmaster', grd_recmaster.getUpdateDataAll('d'));
- }
- if(!submit('TXMNW04001')){
- messageBox('욕창위험사정의 저장을', 'E009');
- return false;
- }else{
- //환자리스트조회
- //fSearchPatList();
- //중증도조회
- //fSearchRecMaster(grd_patinfo.row);
- //중증도상세점수조회
- //fSearchRecPnt();
- var condparam = '';
- //중증도/낙상/욕창 내역 조회(grd_recmaster)
- //fSearchRecMaster(grd_patinfo.row);
- }
- }else if(Number(msg) == 7){//아니오
- return false;
- }
- } else {
- if ( Number(model.getValue("/root/cond/checkcnt")) < 1 && grd_recpnt.rowStatus(2) < 2 ){
- return true;
- }else {
- return false;
- }
-
- }
- return true;
- }
- /**
- * @group :
- * @ver : 2008.08.20
- * @by : dhkim
- * @-------------------------------------------------------------------------------------------------------
- * @type : function
- * @access : public
- * @param :
- * @return :
- * @desc : 상세내역 체크한 점수를 항목별로 합산하여 상세점수 노드에 set한다.
- * 0. 항목의 index값을 임시저장
- * 1. 항목에 해당하는 명칭 get (pnttitlgruplist)
- * 2. 1의 명칭에 해당하는 clstlcd get (recdetailgruplist)
- * 3. supcd가 2인 그룹의 첫번째 index를 찾는다.
- * 4. 3부터 detail값을 반복하여 supcd가 2인 그룹의 점수를 합산 (recdetailgruplist)
- * 5. 상세점수에 0번째 timsval+0 노드에 3값을 세팅 (recpntlist)
- */
- function fSetRecDetailPnt(){
- var recpntTitlCnt = getNodesetCount("/root/main/recpntgrup/pnttitlgruplist");
- var titlhngnm;
- var clstlcd;
- var detlFidx;
- var basepnt = 0;
- var totpnt = 0;
- var flag;
- for(var i = 1; i <= recpntTitlCnt; i++){
- //1. 항목에 해당하는 명칭 get (pnttitlgruplist)
- titlhngnm = model.getValue('/root/main/recpntgrup/pnttitlgruplist[' + i + ']/hngnm');
- //2. 1의 명칭에 해당하는 clstlcd get (recdetailgruplist)
- clstlcd = model.getValue("/root/main/recdetailgrup/recdetailgruplist[hngnm='" + titlhngnm + "']/clstlcd");
- //3. supcd가 2인 그룹의 첫번째 index를 찾는다.
- detlFidx = grd_recdetail.findRow(clstlcd, 1, grd_recdetail.colRef("supcd"));
- //alert('detlFidx : ' + detlFidx + ', clstlcd : ' + clstlcd );
- //4. 3부터 detail값을 반복하여 supcd가 2인 그룹의 점수를 합산 (recdetailgruplist)
- for(var j = detlFidx; j <= grd_recdetail.rows; j++){
- supcd = model.getValue(xRecDetailPath + '[' + j + ']/supcd');
- flag = model.getValue(xRecDetailPath + '[' + j + ']/flag');
- //basepnt = model.getValue(xRecDetailPath + '[' + j + ']/basepnt');
- //alert('supcd : ' + supcd + ', flag : ' + flag + ', basepnt : ' + basepnt);
- if(supcd == clstlcd){
- if(flag == 'Y'){//체크된 데이터만 합산한다.
- if( model.getValue(xRecDetailPath + '[' + j + ']/timsinptyn') == "Y" ){//횟수입력여부
- basepnt = Number(model.getValue(xRecDetailPath + '[' + j + ']/basepnt')) * Number(model.getValue(xRecDetailPath + '[' + j + ']/timsval'));
- } else {
- basepnt = Number(model.getValue(xRecDetailPath + '[' + j + ']/basepnt'));
- }
- model.makeValue(xRecDetailPath + '[' + j + ']/basepnt_multi',basepnt);
- totpnt += Number(basepnt);
- }
- }else{
- j = grd_recdetail.rows;//for루프를 멈춘다.
- }
- }
- //5. 상세점수에 i번째 timsval+i 노드에 3값을 세팅 (recpntlist)
- if(i < 10){
- colno = '0' + i;
- }else{
- colno = i;
- }
- model.setValue(xRecPntPath + '/timsval' + colno, totpnt);
- totpnt = 0; //초기화
- basepnt=0;
- }
- }
- /**
- * @group :
- * @ver : 2008.06.25
- * @by : dhkim
- * @-------------------------------------------------------------------------------------------------------
- * @type : function
- * @access : public
- * @param :
- * @return : totpnt 총점
- * @desc : 상세내역 체크된 내역의 점수를 합산한다.
- * @-------------------------------------------------------------------------------------------------------
- */
- function fSumPnt(){
- var flag, timsval;
- var totPnt = 0;
- for(var i = 1; i < grd_recdetail.rows; i++){
- flag = model.getValue(xRecDetailPath + '[' + i + ']/flag');
- if(flag == 'Y'){
- if( model.getValue(xRecDetailPath + '[' + i + ']/timsinptyn') == "Y" ){//횟수입력여부
- timsval = Number(model.getValue(xRecDetailPath + '[' + i + ']/basepnt')) * Number(model.getValue(xRecDetailPath + '[' + i + ']/timsval'));
- } else {
- timsval = Number(model.getValue(xRecDetailPath + '[' + i + ']/basepnt'));
- }
- totPnt += Number(timsval);
- }
- }
- return totPnt;
- }
- /**
- * @group :
- * @ver : 2008.06.25
- * @by : dhkim
- * @-------------------------------------------------------------------------------------------------------
- * @type : function
- * @access : public
- * @param :
- * @return :
- * @desc : 중증도 마스터와 상세내역을 저장하기 전 데이터의 유효성을 체크한다.
- * - 상세내역에 미체크 내역이 있는지 확인한다.
- * - 2008.08.06 dhkim 요구사항 추가
- * [모든항목 필수체크하는경우]
- * 1) 중증도 : 일반병동, 정신과병동(DT, ECT항목은 필수아님), 혈액투석
- * 2) 욕창
- * clsflag = 1, 3, 5, 10(화면내부)
- *
- * [모든항목 필수체크아닌경우]
- * 1) 중증도 : 중환자실, 신생아ICU
- * 2) 낙상 : 성인, 소아
- * clsflag = 2, 4, 8, 9(화면내부)
- * - 2008.08.20 dhkim 요구사항 추가
- * 낙상의 경우 나이를 체크할것.
- * 낙상 소아 : 만 12세 미만 clsflag = 8
- * 낙상 성인 : 만 13세 이상 clsflag = 9
- * - 2008.08.27 dhkim 요구사항 추가
- * 체크된 항목에 대해 횟수 입력필드가 0이면 횟수입력하라는 메세지 띄울것
- * @-------------------------------------------------------------------------------------------------------
- */
- function fIsValid(){
- var supcd;
- var _supcd, _flag, _hngnm, _timsval;
- var isChecked = false;
- var clsflag = model.getValue('/root/cond/clsflag');
- var age = model.getValue("/root/main/patinfo/patlist[" + (grd_patinfo.row-1) + "]/sexage").split('/')[1];
- //환자가 선택되지 않은경우 기록을 입력할수 없다.
- var pid = grd_recpnt.valueMatrix(2, grd_recpnt.colRef("pid"));//20080917 수정
- if(pid == ''){
- messageBox('기록하려는 환자정보가 존재하지 않습니다. 환자를 먼저 선택하신 후 기록을 작성하세요.', 'E');
- return false;
- }
- //20080827
- //체크된 항목에 대해 횟수 입력필드가 0이면 횟수입력하라는 메세지 띄울것
-
- var checkCnt=0;
- for(var j = 1; j < grd_recdetail.rows; j++){
- _flag = model.getValue(xRecDetailPath + '[' + j + ']/flag');
- _timsval = model.getValue(xRecDetailPath + '[' + j + ']/timsval');
- _hngnm = model.getValue(xRecDetailPath + '[' + j + ']/hngnm');
- //20080827
- //체크된 항목에 대해 횟수 입력필드가 0이면 횟수입력하라는 메세지 띄울것
- if(_flag == 'Y' && _timsval != '' && (_timsval == '0' || _timsval == 0)){
- messageBox('[' + _hngnm + ']의 횟수가 입력되지 않았습니다. 횟수를', 'C001');
- grd_recdetail.topRow = j;
- return false;
- }
-
- if ( _flag == 'Y' ){
- checkCnt++;
- }
- }
-
- //checkCnt = 0 이고 grd_recpnt.rowStatus(2) 가 U 인경우 delete로 저장되어야 하므로 true 반환
- if ( checkCnt < 1 && grd_recpnt.rowStatus(2) < 2 ){
- model.setValue("/root/cond/checkcnt","0" );
- //선택된 상세내역이 존재안할경우 저장안함(상세점수의 데이타행이 2번째 행이고 상세내역을 선택하면 grd_recpnt.rowStatus 가 2로 세팅되므로 아무것도 선택안한경우는 이경우임.)
- return false;
- }else if ( checkCnt > 0 && grd_recpnt.rowStatus(2) > 1 ){
- for(var i = 1; i <= grd_recdetail.rows; i++){
- supcd = model.getValue(xRecDetailPath + '[' + i + ']/supcd');
- if(i == (grd_recdetail.rows)){
- if(isChecked == false){//마지막 row의 그룹은 비교할 데이터가 없으므로 체크값이false이면 blocking건다.(20080825)
- messageBox(hngnm + '(이)가 선택되지 않았습니다.' + hngnm + '(를)을', 'C001');//선택하십시오.
- grd_recdetail.topRow = i-1;
- return false;
- }
- }
-
- if(supcd == '00000000'){
-
- hngnm = model.getValue(xRecDetailPath + '[' + i + ']/hngnm');
-
- for(var j = (i + 1); j < grd_recdetail.rows; j++){
-
- _supcd = model.getValue(xRecDetailPath + '[' + j + ']/supcd');
-
- //alert('상위 : ' + hngnm + ', 하위 : ' + model.getValue(xRecDetailPath + '[' + j + ']/hngnm') );
-
- if(supcd == _supcd){
-
- if(isChecked == false){//다른그룹으로 변경됐을때 isChecked가 false이면 리턴하면서 해당 row를 젤 위로 가도록 보여줌-_-;
-
- //2008.08.07 dhkim 추가
- //정신과병동 선택했을때 항목중 DT, ECT는 필수아님
- if((clsflag == '5' && hngnm == 'DT')||(clsflag == '5' && hngnm == 'ECT')){
- //skip
- }else{
- messageBox(hngnm + '(이)가 선택되지 않았습니다.' + hngnm + '(를)을', 'C001');//선택하십시오.
- grd_recdetail.topRow = i;
-
- return false;
- }
- }
-
- isChecked = false;
- j = grd_recdetail.rows;
- //break;
-
- }else{
-
- _flag = model.getValue(xRecDetailPath + '[' + j + ']/flag');
-
- if(_flag == 'Y'){
- isChecked = true;
- }
- }
- }
- }
- }
- }
-
- model.setValue("/root/cond/checkcnt",checkCnt );
- return true;
- }
- /**
- * @group :
- * @ver : 2007.12.06
- * @by : 신혁춘
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 내환자 정보를 조회한다.
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fmisetting(){
- var setid = getUserId();
- var setdeptcd = getUserInfo("dutplcecd");
- model.removeNodeset("/root/send");
- model.removeNodeset("/root/hidden/setting/settingrn");
- if(getScreenMenuParameter() == "SMMND"){
- model.makeValue("/root/send/wardcd", setdeptcd);
- }else{
- model.makeValue("/root/send/wardcd", model.getValue("/root/cond/wardcd"));
- }
- //내환자세팅한 간호사 조회
- if(submit("TRMNW04012")){
- //병동 변경시 내환자 정보 셋팅됨_2009-02-09_SMY수정
- model.setValue("/root/cond/settingrnid", "");
- for(i = 1; i <= getNodesetCount("/root/hidden/setting/settingrn"); i++ ) {
- if (model.getValue("/root/hidden/setting/settingrn[" + i + "]/settingrnid") == setid) {
- model.setValue("/root/cond/settingrnid", setid);
- }
- }
- }
- model.refresh();
- return;
- }
- /**
- * @group :
- * @ver : 2007.12.06
- * @by : 신혁춘
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 중증도 상세내역의 설명을 조회한다.
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fHistDescs(){
- var iRow = grd_recdetail.row;
- tar_desccnts.value = model.getValue(xRecDetailPath+"["+iRow+"]/desccnts") ;
- tar_desccnts.refresh();
- }
- /**********************************************************************************************************************************************/
- /***********************************************************스크립트정리중입니다******************************************************************/
- /**********************************************************************************************************************************************/
- /**
- * @group :
- * @ver : 2007.12.14
- * @by : 신혁춘
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : Sign 정보의 인스턴스를 만든다.
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fsingnode(){
- var clsrecchk = model.getValue("/root/main/topattribute/clsflag")
- var a = rdo_clsflaga.label;
- var b = rdo_clsflagb.label;
- var c = rdo_clsflagc.label;
- var iRow = grd_recmaster.row
- var xrecgruplistPath = "/root/main/recgrup/recgruplist"
- if(a != ""){
- model.makeValue("/root/main/sing/redord/clsflag",a);
- }
- if(b != ""){
- model.makeValue("/root/main/sing/redord/clsflag",b);
- }
- if(c != ""){
- model.makeValue("/root/main/sing/redord/clsflag",c);
- }
- model.makeValue("/root/main/sing/redord/usernm",model.getValue(xrecgruplistPath+"["+ iRow +"]/usernm"));
- model.makeValue("/root/main/sing/redord/execdt",model.getValue(xrecgruplistPath+"["+ iRow +"]/execdt"));
- model.makeValue("/root/main/sing/redord/exectm",model.getValue(xrecgruplistPath+"["+ iRow +"]/exectm"));
- var hRow = grd_recdetail.rows
- var k = 1
- var o = 1
- var xhistgruplistPath = "/root/main/histgrup/histgruplist"
- var xsinghistgrupPath = "/root/main/sing/histgrup"
- var total = 0
- var only = 0
- var supcd2 = "00000000"
- for(i=0; i <= hRow; i++){
- var flagchk = model.getValue(xhistgruplistPath+"["+i+"]/flag")
- var supcdk = model.getValue(xhistgruplistPath+"["+i+"]/supcd")
- if(supcdk == "00000000"){
- model.makeNode("/root/main/sing/histgrup["+k+"]");
- model.copyNode("/root/main/sing/histgrup["+k+"]", xhistgruplistPath+"["+i+"]");
- k = k + 1
- }
- if(flagchk == "Y"){
- model.makeNode("/root/main/sing/histgrup["+k+"]");
- model.copyNode("/root/main/sing/histgrup["+k+"]", xhistgruplistPath+"["+i+"]");
- k = k + 1
- }
- }
- for(i=0; i <= hRow; i++){
- var flagchk = model.getValue(xhistgruplistPath+"["+i+"]/flag")
- var supcdk = model.getValue(xhistgruplistPath+"["+i+"]/supcd")
- if(supcdk == "00000000"){
- var l = 0
- var grupcd1 = model.getValue(xhistgruplistPath+"["+i+"]/grupcd")
- }
- var supcd1 = model.getValue(xhistgruplistPath+"["+i+"]/supcd")
- var sum1 = model.getValue(xhistgruplistPath+"["+i+"]/sumk")
- var sumk = 0
- if(l==0 && flagchk == "Y" && sum1!="Y"){
- for(k=0; k<=hRow; k++){
- supcd2 = model.getValue(xhistgruplistPath+"["+k+"]/supcd")
- var flagchk1 = model.getValue(xhistgruplistPath+"["+k+"]/flag")
- if(supcd1==supcd2 && supcd1==grupcd1 && flagchk1 == "Y"){
- sumk = sumk + (model.getValue(xhistgruplistPath+"["+k+"]/basepnt") * model.getValue(xhistgruplistPath+"["+k+"]/timsinptyn"));
- total = total + (model.getValue(xhistgruplistPath+"["+k+"]/basepnt") * model.getValue(xhistgruplistPath+"["+k+"]/timsinptyn"));
- model.makeValue(xhistgruplistPath+"["+k+"]/sumk", "Y");
- }
- }
- model.makeNode("/root/main/sing/topsum["+o+"]");
- model.makeValue("/root/main/sing/topsum["+o+"]/sum", sumk);
- if(l==0){
- sumk = 0;
- o = o +1
- }
- }
- }
- model.makeNode("/root/main/sing/topsum["+o+"]");
- model.makeValue("/root/main/sing/topsum["+o+"]/sum", total);
- if(clsrecchk != 7 || clsrecchk != 8 || clsrecchk != 9){
- clsflag = model.getValue("/root/main/topattribute/clsflag") ;
- recflag = "1";
- }
- if (clsrecchk == 8 || clsrecchk == 7){
- clsflag = model.getValue("/root/main/topattribute/clsflag") ;
- recflag = "2";
- }
- if (clsrecchk == 9 ){
- clsflag = model.getValue("/root/main/topattribute/clsflag") ;
- recflag = "3";
- }
- var kRow = grd_recmaster.row
- var xrecgruplistPath = "/root/main/recgrup/recgruplist"
- model.makeValue("/root/send/execdt", model.getValue(xrecgruplistPath+"["+kRow+"]/execdt"))
- model.makeValue("/root/send/clsflag", '1');
- model.makeValue("/root/send/recflag", '9');
- model.makeValue("/root/send/totpnt", total);
- if(submit("TRMNW04014")){
- o = o+1
- model.makeNode("/root/main/sing/topsum["+o+"]");
- model.makeValue("/root/main/sing/topsum["+o+"]/sum", model.getValue("/root/main/sfbp/sfbpinfo/clsgrupkind"));
- }
- }
|