1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656 |
- /* 1. CP (SMMMP00800_CPGMAIN), 2. 항암프로토콜()
- <function list>
- fGetCurrentPrcpList : CP의 스텝의 진행상태를 참고하여, 처방정보를 조회한다
- fCheckCpPrcp : 그룹처방일 경우, 자코드를 조회하여 추가한다
- fInvalPrcpTret : 미완성처방으로 수동 처리한다
- fBatSaveCpPrtlPrcp : CP의 발행 가능한 처방들에 대해서 일괄저장(및 인증저장)을 한다
- fPrcpDCSave_CP : 항암, CP 미래처방 일괄저장 (MMPHPTCP)
- <호출하는 function list>
- addPrcp
- fPrcpSave
- addPrcpSetValue
- */
- /* 글로벌 변수 (호출하는 js에서 변수의 출처를 알 수 있도록, "변수명_SMMMO00110"으로 사용)*/
- var questionYN_SMMMO00110 = "N"; //실처방 저장 이후, 프로토콜 저장 로직을 수행할 때, "저장하시겠습니까?"라는 메세지가 2번 나오기 때문에, 실처방 저장 완료 후 questionYN의 값을 Y로 설정, 프로토콜 저장때 질문 여부 결정
- var stopSavePrcpYN_SMMMO00110 = "N"; //저장 모듈이 성공하지 못하고, 처방저장오류로 인해 return 된 상태 : Y (fGetCurrentPrcpList()를 통한 CP약속처방 재조회를 막기위함)
- var clickBtnNm_SMMMO00110 = ""; //이전에 클릭했던 버튼 (S:저장, A:적용)
- var prtlFlag_SMMMO00110 = ""; //프로토콜 구분(01:CP, 02:CPG, 10:항암프로토콜,20:임상시험프로토콜)
- var appNo_SMMMO00110 = ""; //프로토콜번호(CPG 적용번호)
- var etclnkspecValue_SMMMO00110 = ""; //항암프로토콜번호 | CP번호
- var prtlprcpstatus_SMMMO00110 = ""; //프로토콜저장상태(보통은 I, 프로토콜처방테이블에 등록된 데이터를 수정, 삭제할 때는 U/D)
- var isstimes_SMMMO00110 = ""; //발행시작회차 | 발행종료회차
- var isssteps_SMMMO00110 = ""; //cp일때 사용하는 발행시작스텝 | 발행종료스텝
- var stepArray_SMMMO00110 = ""; //cp일때 사용하는 스텝 array
- var prcpddArray_SMMMO00110 = "";
- var invalYN_SMMMO00110 = "N";
- var ErrExistYN_SMMMO00110 = "N";
- var SubmitTF_SMMMO00110 = false; //fPrcpsave()에서의 TXMMP00803/4 저장 성공 여부
- var curSavePrcpFlag_SMMMO00110 = ""; //N:당일, T:미래
- var saveNum_SMMMO00110 = 0; //0:저장전, 1:당일처방저장완료, 2:미래처방저장완료
- /*------fPrcpSave()의 local 변수, 미래처방 저장 후 인식하기 위해 CP에서는 global 변수로 사용-------*/
- var prcpsaveyn_SMMMO00110 = "N";
- var ocrcalcscorcd_SMMMO00110 = ""; //OCR자동출력 수행 여부 (당일+미래저장 후 N->Y)
- var cpSaveKindFlag_SMMMO00110 = ""; //"" "N" "T"
- var cpTmpPrcpSaveYN_SMMMO00110 = "N"; //임시처방을 CP처방으로 대치하는지 여부
- //parameter list
- //SMMMP00800_cpsaveflag //CP 처방 저장 모드 (T:미래처방)
- //SMMMP00800_tnmOrCncrSaveYN //병기분류 저장 여부 (당일+미래저장 후 N->Y) 2009.05.06
- //SMMMP00800_nonprgresnSaveYN //임부금기 저장 여부 (당일/미래저장 후 N->Y) 2009.05.06
- /*-------------------------------------------------------------------------------------------------*/
- /**
- * @group :
- * @ver : 2007.09
- * @by : 전지은
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 스텝의 진행상태를 참고하여, 처방정보를 조회한다
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fGetCurrentPrcpList(mode){
- /* 2007.11.22 추가
- * 일괄발행을 하기 전, 처방 그리드에 미리 추가시켜 놓은 처방이 있을 경우,
- * prcp 의 처방 리스트를 copy해서 따로 담아두었다가
- * 약속셋에서 조회한 리스트( /root/main/prcpsrch )에 합친다.
- * "/root/main/prcp" -> (copy) -> "/root/temp1/addprcp" -> (추가) -> "/root/main/prcpsrch"
- */
- if( isNull(mode) ){
- mode = "SEL";
- }
-
- var today = getCurrentDate();
- var prcpGenrFlag = model.getValue("/root/patflag/list/prcpgenrflag");
- var cpgIoFlag = model.getValue("/root/main/masterinfo/info/ioflagcd");
- if( cpgflagcd == "01" && prcpGenrFlag == "O"){ //1. CP외래환자
- if(cpgIoFlag == "O" ){ // 1-1) 외래CP
- var nodelist = instance1.selectNodes("/root/main/steppath/info" + "[prcpdd='" + today + "']");
- }else{ // 1-2) D0입원CP
- var nodelist = instance1.selectNodes("/root/main/steppath/info" + "[times='0']");
-
- if( nodelist.length <= 0 ){
- var nodelist = instance1.selectNodes("/root/main/steppath/info" + "[times='1']");
- }
- }
-
- } else{ //2. CP입원환자, CPG입원+외래환자
- var inptStepNode = instance1.selectSingleNode("/root/main/steppath/info[stepstat = '10' and decirflag = 'I']/stepno");
- /*if( (prcpGenrFlag == "D" || prcpGenrFlag == "E") && inptStepNode != null ){
- var nodelist = instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10' and stepno<='" + inptStepNode.text + "']");
- if( nodelist.length <= 0 ){
- messageBox ( "입원 전환 이후 저장이", "I006" );
- return false;
- }
- }else
- */
- var nodelist = null;
- // if( cpgflagcd == "01" ) nodelist = instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10']");
- // else
- nodelist = instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10' and savestatus='I']");
- }
-
- model.makeValue ( "/root/send/reqdata/cpgno", model.getValue("/root/main/masterinfo/info/cpgno") );
- model.makeValue ( "/root/send/reqdata/cpghistseq", model.getValue("/root/main/masterinfo/info/cpghistseq") );
- model.makeValue ( "/root/send/reqdata/cpgappno", model.getValue("/root/temp1/getdata/cpgappno") );
- model.makeValue ( "/root/send/reqdata/cpgflagcd", cpgflagcd ); //@@@선택필수 조회를 위한 파라메터(cpgFlagCd) 추가
-
- //var appScopMode = model.getValue("/root/main/appscopmode"); //CPG인 경우, CPG스텝/CP스텝 적용 모드를 구분함 (2010.06.26)
- var setNoArray = "";
- var timesArray = "";
- var startStepNo = "";
- var endStepNo = "";
- var startTimes = "";
- var endTimes = "";
- var prcpddArray = "";
- isstimes_SMMMO00110 = ""; //발행시작회차 | 발행종료회차
- isssteps_SMMMO00110 = ""; //발행시작스텝 | 발행종료스텝
- stepArray_SMMMO00110 = "";
- prcpddArray_SMMMO00110 = "";
-
- if( nodelist.length > 0 ){
- for(var i=0; i<nodelist.length; i++){
- var node = nodelist.item(i);
-
- var val1 = node.selectSingleNode("setno");
- if( !isNull(val1.text) ){
- setNoArray = setNoArray + val1.text + ",";
- }
-
- var val2 = node.selectSingleNode("times");
- var orgVal2 = node.selectSingleNode("orgtimes");
- if( !isNull(orgVal2.text) ){
- timesArray = timesArray + orgVal2.text + ",";
- if(i == 0){
- startTimes = orgVal2.text;
- }
- if(i == (nodelist.length-1)){
- endTimes = orgVal2.text;
- }
- }else if( !isNull(val2.text) ){
- timesArray = timesArray + val2.text + ",";
- if(i == 0){
- startTimes = val2.text;
- }
- if(i == (nodelist.length-1)){
- endTimes = val2.text;
- }
- }
-
- var val3 = node.selectSingleNode("stepno");
- if( !isNull(val3.text) ){
- stepArray_SMMMO00110 = stepArray_SMMMO00110 + val3.text + "|";
- if(i==0){
- startStepNo = val3.text;
- }
- if(i==(nodelist.length-1)){
- endStepNo = val3.text;
- }
- }
-
- var stepflagcd = node.selectSingleNode("stepflagcd");
- var val4 = node.selectSingleNode("prcpdd");
- if( !isNull(val4.text) ){
- prcpddArray_SMMMO00110 = prcpddArray_SMMMO00110 + val4.text + "|";
-
- if( stepflagcd.text != "D" ){
- prcpddArray = prcpddArray + val4.text + ",";
- }
- }
- }
- setNoArray = setNoArray.substr(0, setNoArray.length-1);
- timesArray = timesArray.substr(0, timesArray.length-1);
- stepArray_SMMMO00110 = stepArray_SMMMO00110.substr(0, stepArray_SMMMO00110.length-1);
- prcpddArray = prcpddArray.substr(0, prcpddArray.length-1); //D스텝 포함 처방일
- prcpddArray_SMMMO00110 = prcpddArray_SMMMO00110.substr(0, prcpddArray_SMMMO00110.length-1); //D스텝 제외 A스텝들의 처방일
-
- isstimes_SMMMO00110 = startTimes + "|" + endTimes; //시작-종료회차(js공통변수)
- isssteps_SMMMO00110 = startStepNo + "|" + endStepNo; //시작-종료스텝(js공통변수)
- }else{
- mode = "";
- }
-
- /*------------------------------------------------------------------------------------------------------------------*/
- // DSC or ER 환자일 경우 입원필요 전 처방까지는 ordtype 'D' 이후 처방들은 'I' 가 되므로, 기준 스텝을 함께 보낸다.
- // => isssteps_SMMMO00110 의 예외 사용 : 입원필요스텝 존재 시, 해당 '입원필요날짜'를 | 구분자로 세번째 값으로 보내줌.
- // 미래처방 저장 시 server 단에서는 '입원필요날짜'부터는 처방의 ordtype을 I로 넣어줌 (입원필요날짜 이전:현재 ordtype, 이후:I)
- /*------------------------------------------------------------------------------------------------------------------*/
- if( (prcpGenrFlag == "D" || prcpGenrFlag == "E") && inptStepNode != null ){
- var inptDDNode = instance1.selectSingleNode("/root/main/steppath/info" + "[stepstat = '10' and stepno='" + inptStepNode.text + "']/prcpdd");
- isssteps_SMMMO00110 += "|" + inptDDNode.text;
- }
-
- model.makeValue ("/root/send/reqdata/dayno", timesArray);
- model.makeValue ("/root/send/reqdata/setcond", setNoArray);
- model.makeValue ("/root/send/reqdata/cpgflagcd", settypecd);
- model.makeValue ("/root/send/reqdata/prcpddcond", prcpddArray);
- model.makeValue ("/root/send/reqdata/stepcond", stepArray_SMMMO00110); //@@@선택필수 조회를 위한 조건 추가
-
- if( mode == "SEL" ){
- var genrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
- //setno에 포함되는 모든 처방코드(목록)를 조회한다.
- if( submit("TRMMP02202", false ) ){
-
- //start: CPG인 경우, 처방 저장 범위 중 필수처방이 있다면 별도 table에 정보를 함께 저장
- if( cpgflagcd == "02" ){
- //(1) 선택필수(그룹) 셋 처방을 따로 조회해와서, 팝업으로 발행할 처방 선택은 후 prcpsrch에 합쳐줌 (2010.04.28 JJE)
- if( instance1.selectSingleNode("/root/main/prcpsrch/essprcplist") != null ){
- modal("SPMMP03900"); //선택필수 팝업 호출 (return 결과: /root/send/dessprcplist)
- model.removeNodeset("/root/main/prcpsrch/essprcplist"); //선택필수 전체 리스트 삭제
- }
- }
-
- var PrcpList = instance1.selectNodes("/root/main/prcpsrch/prcplist");
- var keyInfo = "";
- var pEssCnt = 0;
- var dEssCnt = 0;
- for(var i=0; i<PrcpList.length; i++){
- var node = PrcpList.item(i);
- var etclnkspecNode = node.selectSingleNode("etclnkspec");
- var prcpinptflagNode = node.selectSingleNode("prcpinptflag");
- var prcpgenrflagNode = node.selectSingleNode("prcpgenrflag");
-
- // ★ stepno 의 노드 text 에 값이 null 이라면, setval 안한다!
- model.setValue(prcpinptflagNode, "05");
- model.setValue(prcpgenrflagNode, genrflag);
-
- var pEssnprcpynNode = node.selectSingleNode("essnprcpyn");
- var pEsslimnoNode = node.selectSingleNode("limno");
- var pEsslimhistnoNode = node.selectSingleNode("limhistno");
- var pEssSetnoNode = node.selectSingleNode("setno");
- var pEssSettypecdNode = node.selectSingleNode("settypecd");
- var pEssSetcdnoNode = node.selectSingleNode("setcdno");
- var pEssPrcpddNode = node.selectSingleNode("prcpdd");
- var pEssPrcpcdNode = node.selectSingleNode("prcpcd");
-
- var dSetattrno = node.selectSingleNode("setattrno");
- var dSetattrhistno = node.selectSingleNode("setattrhistno");
-
- if (cpgflagcd == "02" && pEssnprcpynNode != null && pEsslimnoNode != null && pEsslimhistnoNode != null && pEssSetnoNode != null && pEssSettypecdNode != null && pEssSetcdnoNode != null && pEssnprcpynNode.text == "Y"){
- pEssCnt++; //(2) 스텝필수(단독) 처방
- keyInfo = "0" + "|" + appNo_SMMMO00110 + "^" + "P" + "^" + pEsslimnoNode.text + "^" + pEsslimhistnoNode.text + "^" + pEssSetnoNode.text + "^" + pEssSettypecdNode.text + "^" + pEssSetcdnoNode.text;
- }else if (cpgflagcd == "02" && dSetattrno != null && dSetattrhistno != null && pEssSetnoNode != null && pEssSettypecdNode != null && pEssSetcdnoNode != null){
- dEssCnt++; //(2) 선택필수(그룹) 처방
- keyInfo = "0" + "|" + appNo_SMMMO00110 + "^" + "D" + "^" + dSetattrno.text + "^" + dSetattrhistno.text + "^" + pEssSetnoNode.text + "^" + pEssSettypecdNode.text + "^" + pEssSetcdnoNode.text;
- }else{
- keyInfo = etclnkspecValue_SMMMO00110;
- }
- model.setValue(etclnkspecNode, keyInfo);
-
- if(pEssnprcpynNode != null) model.removenode(pEssnprcpynNode);
- if(pEsslimnoNode != null) model.removenode(pEsslimnoNode);
- if(pEsslimhistnoNode != null) model.removenode(pEsslimhistnoNode);
- if(dSetattrno != null) model.removenode(dSetattrno);
- if(dSetattrhistno != null) model.removenode(dSetattrhistno);
- }
-
- if( pEssCnt > 0 ){
- model.makeNode("/root/send/pessprcplist");
- model.makeValue("/root/send/pessprcplist/pesscpgappno" , appNo_SMMMO00110);
- }
- if( dEssCnt > 0 ){
- model.makeNode("/root/send/dessprcplist");
- model.makeValue("/root/send/dessprcplist/desscpgappno" , appNo_SMMMO00110);
- }
- }
- }
- stopSavePrcpYN_SMMMO00110 = "Y";
-
- model.removeNodeset ( "/root/send/reqdata" ); //2008.11.30 추가
-
- /* //DSC or ER 환자일 경우 입원 전 처방까지만 일괄발행시켜야 한다
- if( prcpGenrFlag == "D" || prcpGenrFlag == "E" ){
- //var inptStepNode = instance1.selectSingleNode("/root/main/prcpsrch/prcplist[prcpcd='000000000297']/stepno");
- if( inptStepNode != null ){
- model.removeNodeset("/root/main/prcpsrch/prcplist[stepno>'" + inptStepNode.text + "']");
- }
- }*/
- }
- /**
- * @group :
- * @ver
- : 2008.01
- * @by : 전지은
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 그룹처방일 경우, 자코드를 조회하여 추가한다
- * @param :
- * @return : true / false
- * @---------------------------------------------------
- */
- function fCheckCpPrcp( objFlag, strSrc, strDest, sendRow, srchRow, prcpInptFlag, grupSrc, direcSrc ) {
- var prcpClsCd = model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" );
- var prcpKindCd = model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd" );
- var drugmthdspccd = model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccd" );
- var prcpnm = model.getValue( strSrc + "[" + sendRow + "]/prcpnm" );
- var drugmastspec = model.getValue( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
-
- usge = model.getValue ( "/root/usge" );
- cpchk = model.getValue ( "/root/cp" );
- prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
-
- //추가
- var prcpInptFlag = model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" );
-
- if ( model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "M" ) { //그룹코드 M을 찾아낸다. 처방검색일때만 풀린다.
- var grupCond1 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
- var grupCond3 = "";
- var grupCond4 = "";
- var inclprcpno = "";
- if ( objFlag == "child" ) {
- grupCond3 = opener.model.getValue ( "/root/init/prcpdd" );
- grupCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
-
- if ( usge == "prcp" ) { //처방화면에만 종속처방이 적용된다.
- inclprcpno = eval(model.getValue ( "/root/init/inclprcpno")) + 1; //종속처방번호를 받아온다.
- }
- } else {
- grupCond3 = model.getValue ( "/root/init/prcpdd" );
- grupCond4 = model.getValue ( "/root/paminfo/list/insukind");
- if ( usge == "prcp" ) {//처방화면에만 종속처방이 적용된다.
- inclprcpno = eval(model.getValue ( "/root/init/inclprcpno")) + 1; //종속처방번호를 받아온다.
- }
- }
-
- prcpGroupSrch ( grupCond1, grupCond3, grupCond4 );
- if ( grupSrc == null ) grupSrc = "/root/prcpgroup/prcplist";
- var srcNodeList = model.instances(0).selectNodes( grupSrc );
-
- if ( srcNodeList.length > 0 ) {
- if ( objFlag == "child" ) {
- var destNode = model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
- model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
- if (!opener.javascript.addPrcpSetValue( "main", "/root/main/prcp/prcplist" , srchRow, prcpInptFlag, "N", "05" )) {
- return 0;
- }
- } else {
- var destNode = strDest;
- model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
- if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", "05" )) {
- return 0;
- }
- }
- srchRow ++;
- if ( usge == "prcp" ) {
- for (var i=1; i<=srcNodeList.length; i++) {
- if ( objFlag == "child" ) {
- var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
- model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
- if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", "05" )) {
- return 0;
- }
- } else {
- var destNode = strDest;
- model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
- //if (!addPrcpSetValue( "import", "/root/main/prcp/prcplist" , srchRow, prcpInptFlag, "N", "" )) {
- if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", "05" )) {
- return 0;
- }
- //자코드의 처방종류에 값이 들어가지 않아, 강제로 셋팅함
- model.setValue(strSrc + "[" + srchRow + "]/prcpkindcd", model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd" ));
- //cp처방일 경우, prcpinptflag와 cpno를 모코드와 동일한 값으로 셋팅함
- if( model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) == "05" ){
- model.setValue(strSrc + "[" + srchRow + "]/prcpinptflag", "05");
- model.setValue(strSrc + "[" + srchRow + "]/etclnkspec", model.getValue( strSrc + "[" + sendRow + "]/etclnkspec" ));
- }
- }
- if ( objFlag == "child" ) {
- srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
- } else {
- srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
- }
- srchRow ++;
- }
- }
-
- return srchRow;
- }
-
- } else if ( model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "J" ) { //그룹지시처방 J을 찾아낸다.
- //조회조건
- var direcCond1 = model.getValue( strSrc + "[" + sendRow + "]/srchcondcnts" );
- var direcCond5 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
- var direcCond3 = "";
- var direcCond4 = "";
- if ( prcpClsCd == "04" ) {
- hsctflag = "Y";
- }
- if ( objFlag == "child" ) {
- direcCond3 = opener.model.getValue ( "/root/init/prcpdd" );
- direcCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
- } else {
- direcCond3 = model.getValue ( "/root/init/prcpdd" );
- direcCond4 = model.getValue ( "/root/paminfo/list/insukind");
- }
- prcpDirecSrch ( direcCond1, direcCond3, direcCond4, direcCond5 );
- if ( direcSrc == null ) direcSrc = "/root/prcpdirec/prcplist";
- var srcNodeList = model.instances(0).selectNodes( direcSrc );
- if ( srcNodeList.length > 0 ){ //그룹지시처방 J는 종속하는 수가 코드가 있을 때만 추가.
- if ( objFlag == "child" ) {
- var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
- model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
- //종속처방번호 Setting ( hsctlnkno )
- var hsctlnkno = eval ( opener.model.getValue ( "/root/init/hsctlnkno" )) + 1;
- opener.model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
- if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05", "M" )) {
- return 0;
- }
- } else {
- var destNode = strDest;
- var hsctlnkno = eval ( model.getValue ( "/root/init/hsctlnkno" )) + 1;
- model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
- model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
- if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05", "M" )) {
- return 0;
- }
- }
-
- //CP 약속셋 생성 시에는 자코드가 풀리면 안된다. CP배치를 통해 실처방 저장시 풀린다! (2008.01.22)
- if( opener.model.getValue("/root/cp") == "S" || model.getValue("/root/cp") == "S" ){
- return;
- }
-
- if ( objFlag == "child" ) {
- srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
- } else {
-
- srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
- }
- srchRow ++;
- for (var k=1; k <= srcNodeList.length; k++) {
- if ( objFlag == "child" ) {
- var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
- model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]" );
- if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05", hsctflag )) {
- return 0;
- }
- } else {
- var destNode = strDest;
- model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]");
- if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05", hsctflag )) {
- return 0;
- }
-
- if( model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) == "05" ){
- model.setValue(strSrc + "[" + srchRow + "]/prcpinptflag", "05");
- model.setValue(strSrc + "[" + srchRow + "]/etclnkspec", model.getValue( strSrc + "[" + sendRow + "]/etclnkspec" ));
- }
- }
- if ( objFlag == "child" ) {
- srchRow = opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
- } else {
- srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
- }
- srchRow ++;
- }
- }
-
- return srchRow;
-
- } else if ( (prcpClsCd == "B2" || prcpClsCd == "B4" || prcpClsCd == "B6") && (getArrayData (drugmastspec, 0, 2, "^", "|" ) == "0" || getArrayData (drugmastspec, 0, 2, "^", "|" ) == "-")){
- //검사대분류유형(testlrgkind) 그룹: 0, 1
- //-일 때는 검체와 상관없는 그룹코드
- var grupCond1 = model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
- var grupCond3 = "";
- var grupCond4 = "";
- var popflag = "group"
- if ( objFlag == "child" ) {
- popflag = "child";
- grupCond3 = opener.model.getValue ( "/root/init/prcpdd" );
- grupCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
- } else {
- grupCond3 = model.getValue ( "/root/init/prcpdd" );
- grupCond4 = model.getValue ( "/root/paminfo/list/insukind");
- }
- //구수가코드일 경우
- if ( oldprcpflag == "Y" ) {
- popflag = "oldprcp";
- }
- var drugmthdspccd = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccd" );
- var spccd = "";
- var spcnm = "";
-
- if ( drugmthdspccd == "998" || drugmthdspccd == "999" ) {
-
- fGetSpc ( sendRow, popflag );
- if ( drugmthdspccd == "998") {
- if ( getParameter ("SPMMO03500_rtn_useyn") == "Y" ) {
- spccd = getParameter ( "SPMMO03500_rtn_spccd" );
- spcnm = getParameter ( "SPMMO03500_rtn_spcscrnnm" );
- }
- clearParameter ( "SPMMO03500_rtn_useyn" );
- clearParameter ( "SPMMO03500_rtn_spccd" );
- clearParameter ( "SPMMO03500_rtn_spcscrnnm" );
- } else {
- if ( getParameter ("SPMMO03400_rtn_useyn") == "Y" ) {
- spccd = getParameter ( "SPMMO03400_rtn_spccd" );
- spcnm = getParameter ("SPMMO03400_rtn_spcscrnnm" );
- }
- clearParameter ( "SPMMO03400_rtn_useyn" );
- clearParameter ( "SPMMO03400_rtn_spccd" );
- clearParameter ( "SPMMO03400_rtn_spcscrnnm" );
- }
- } else { //팝업이 뜨지 않을 때는 본체의 검체코드로 검색한다.
- spccd = drugmthdspccd;
- spcnm = model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccdnm" );
- }
- //if (isNull(spccd)) {
- // return 0 ;
- //}
- //getArrayData (drugmastspec, 0, 2, "^", "|" ) 검사분류유형
-
- prcpGroupSrch ( grupCond1, grupCond3, grupCond4, spccd, getArrayData (drugmastspec, 0, 2, "^", "|" ), "getLisPrcpGroupInfo" );
- if ( objFlag == "child" ) {
- var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
- } else {
- var destNode = strDest;
- }
- if ( grupSrc == null ) grupSrc = "/root/prcpgroup/prcplist";
- var srcNodeList = model.instances(0).selectNodes( grupSrc );
-
- for (var i=1; i<=srcNodeList.length; i++) {
- if ( objFlag == "child" ) {
- var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
- model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
- if (!opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05" )) {
- return 0;
- }
- if (!isNull(spccd)) {
- opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
- opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
- }
- } else {
- var destNode = strDest;
- model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
- if (!addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05" )) {
- return 0;
- }
- if (!isNull(spccd)) {
- model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
- model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
- }
- }
- srchRow ++;
- }
-
- } else { //그룹코드 M, J 가 아닐 경우
- return 0;
- }
- }
- /**
- * @group :
- * @ver
- : 2007.09
- * @by : 전지은
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 미완성 처방으로 수동 처리한다
- * @param : errflagcd 1:수술(당일), 2:수술(미래), 4:퇴원예고(당일)
- : opCSV 미완성 대상 처방 Nodeset
- : flag
- * @return :
- *
- * [미완성3:퇴원예고처방(미래)] 미래처방 중 퇴원예고처방 존재 시, 미완성처방으로 저장
- * var opNodeList = instance1.selectNodes("/root/main/prcp/prcplist[status!='S' and prcpkindcd = '70' ]");
- * @---------------------------------------------------
- */
- function fInvalPrcpTret(errflagcd, sFlag){
- var appScopMode = model.getValue("/root/main/appscopmode"); //CPG인 경우, CPG스텝/CP스텝 적용 모드를 구분함 (2010.06.26)
- if( cpgflagcd == "02" && appScopMode != "W" ) return; //CPG+CP의 CP처방은 미완성 처리 되도록
-
- var today = getCurrentDate();
- var copyYN = "N"; //2008.10.14 (저장취소-저장 반복적으로 수행 시 *n건 발생되어 저장되는 것 막음)
-
- if(model.getValue("/root/patflag/list/prcpgenrflag") == "O"){
- var pOrdDD = model.getValue("/root/paminfo/list/orddd");
- }else{
- var pOrdDD = model.getValue("/root/paminfo/list/indd");
- }
-
- if( instance1.selectSingleNode("/root/send/errprcplist") == null ){
- model.makeNode("/root/send/errprcplist");
- }
- if( instance1.selectSingleNode("/root/result") == null ){
- model.makeNode("/root/result");
- }
-
- //수술처방 존재 시, 수술예약정보 조회
- if ( errflagcd != 4 ){
- model.makeValue( "/root/send/pamdata/pid" , model.getValue("/root/paminfo/list/pid") );
- model.makeValue( "/root/send/pamdata/orddd" , pOrdDD );
-
- var rsrvOpCnt = 0;
- if( instance1.selectSingleNode("/root/temp1/oplist/info") == null ){
- submit("TRMMP02801", false);
- }
- model.removeNodeset("/root/send/pamdata");
-
- rsrvOpCnt = instance1.selectNodes("/root/temp1/oplist/info").length;
- if(rsrvOpCnt >= 1){
- if( errflagcd == 1 ){
- var opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
- }else if( errflagcd == 2 ){
- var opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and anstcnfmneedyn!='N']");
- }
-
- for( var r=0; r<rsrvOpCnt; r++ ){
- var rsrvDD = model.getValue("/root/temp1/oplist/info["+(r+1)+"]/opschedd"); //예정일
- var rsrvNo = model.getValue("/root/temp1/oplist/info["+(r+1)+"]/oprsrvno"); //예약번호
- var opfromtmcd = model.getValue("/root/main/oplist/info["+(r+1)+"]/opfromtmcd");
- var erYN = "N"; //응급구분
- var nighYN = "N"; //야간구분
- if( model.getValue("/root/temp1/oplist/info["+(r+1)+"]/opflagcd") == "2" ){
- erYN = "Y";
- }
- if(eval(opfromtmcd) > 170000 ) {
- nighYN = "Y";
- }
-
- var sameopscheddCnt = instance1.selectNodes("/root/temp1/oplist/info[opcnfmdd='"+rsrvDD+"']").length; //opcnfmdd:확정일,opschedd:예정일
- if(sameopscheddCnt == 1){ //동일한 예정일을 갖는 수술예약이 1건일 경우만 처방에 예약번호 셋팅(2건 이상이면, skip)
- for(var i=0; i<opNodeList.length; i++){
- var node = opNodeList.item(i);
- if( node.selectSingleNode("prcpdd").text == rsrvDD ){
- model.setValue(node.selectSingleNode("oprsrvno") , rsrvNo);
- model.setValue(node.selectSingleNode("erprcpflag") , erYN);
- model.setValue(node.selectSingleNode("nigtprcpflag"), nighYN);
- }
- }
- }
- } //end for
-
- } //end if(rsrvOpCnt >= 1)
- } //end if(errflagcd != 4)
-
- var opNodeList = null;
-
- if( errflagcd == 1 ){
- if( sFlag == "U" ){
- opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and valyn!='완성' and anstcnfmneedyn!='N']");
- }else{
- opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
- }
- }else if( errflagcd == 2 ){
- if( sFlag == "U" ){
- opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and valyn!='완성' and anstcnfmneedyn!='N']");
- }else{
- opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and anstcnfmneedyn!='N']");
- }
- }else if (errflagcd == 4 ){
- opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and (prcpkindcd = '60' or prcpkindcd = '70') and prcpdd='" + today + "']");
- }
-
- if(opNodeList.length > 0){
- opCSV = getNodeListCSV(opNodeList);
- }else{
- return;
- }
-
- setCSVToNode("/root/result", opCSV, "saveinvaliprcplist");
-
- var saveInvaliPrcpList = instance1.selectNodes( "/root/result/saveinvaliprcplist" );
- for(var i=1; i<=saveInvaliPrcpList.length; i++){
- model.removenode("/root/result/saveinvaliprcplist[" + i + "]/stepno");
- model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/orddd", pOrdDD);
- if( errflagcd == 1 || errflagcd == 2 ){
- //2008.11.27 --아래 1줄 주석처리
- //model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/prtlprcpno", "12"); //미완성처방 저장 시, prtlstat의 값을 prtlprcpno에 대신 넣어서 보낸다(prtlprcpno는 insert 때는 필요없는 노드임)
- model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/incpltnresn", "수술예약번호가 입력되지 않았습니다.");
- model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/errtretflag", "8");
- ErrExistYN_SMMMO00110 = "Y"; //저장 후 미완성처방 존재유무 파악 -> 미완성팝업 오픈 기준
-
- }else if( errflagcd == 4 ){
- //model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/prtlprcpno", "12");
- model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/incpltnresn", "퇴원예고를 하지 않으셨습니다.");
- model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/errtretflag", "10");
- ErrExistYN_SMMMO00110 = "Y"; //저장 후 미완성처방 존재유무 파악 -> 미완성팝업 오픈 기준
- }
-
- // 오라클 null error 로 인한 default값 설정
- model.makeValue ("/root/result/saveinvaliprcplist[" + i + "]/prcphopedd" , model.getValue("/root/result/saveinvaliprcplist[" + i + "]/prcpdd") );
-
- //CPG+CP 에서 CP스텝의 prcphopeddNode(처방희망일자)는 해당날짜로 변경해줌 (2010.06.26)
- if( cpgflagcd == "02" && appScopMode == "W" ){
- var iSetno = model.getValue("/root/result/saveinvaliprcplist[" + i + "]/setno");
- var iSettypecd = model.getValue("/root/result/saveinvaliprcplist[" + i + "]/settypecd");
- var iOrgprcpdd = model.getValue("/root/main/steppath/info[setno='"+iSetno+"' and settypecd='"+iSettypecd+"']/orgprcpdd");
- if( !isNull(iSetno) && !isNull(iSettypecd) && !isNull(iOrgprcpdd) ){
- model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/prcphopedd" , iOrgprcpdd );
- }
- }
-
- model.makeValue ("/root/result/saveinvaliprcplist[" + i + "]/offictourhealexamflag" , "N");
- model.makeValue ("/root/result/saveinvaliprcplist[" + i + "]/prcpauthflag" , "0");
- model.makeValue ("/root/result/saveinvaliprcplist[" + i + "]/prcpsignflag" , "2");
- model.makeValue ("/root/result/saveinvaliprcplist[" + i + "]/cvrtbforddd" , "00000000");
- model.makeValue ("/root/result/saveinvaliprcplist[" + i + "]/cvrtbfprcpgenrflag" , "-");
- }
-
- var saveInvaliPrcpList = model.instances(0).selectNodes( "/root/result/saveinvaliprcplist" ); //에러가 존재하여 미완성처방으로 저장될 데이터
- model.makeValue("/root/send/errprcplist", getNodeListCSV(saveInvaliPrcpList));
-
- // TXMMP00803,4 에 saveinvaliprcplist 의 하부노드 명은 inval_ 으로 시작하므로, 노드 명을 바꾼다 (2008.02.12)
- for( var i=0; i<saveInvaliPrcpList.length; i++ ){
- var node = model.instance1.selectSingleNode( "/root/result/saveinvaliprcplist["+(i+1)+"]" );
- var childNodeList = node.childNodes;
- for( var k=0; k<childNodeList.length; k++ ){
- var iNode = childNodeList.item(k);
- iNode.nodeName = "inval_" + iNode.nodeName;
- }
- }
-
- copyNodeListType("/root/main/invalprcplist", "/root/result/saveinvaliprcplist", "after", model, model);
- copyNodeListType("/root/send", "/root/result/saveinvaliprcplist", "after", model, model);
- model.removeNodeset("/root/result/saveinvaliprcplist");
- //model.removeNodeset("/root/send/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0']");
- if( errflagcd == 1 ){
- if( sFlag == "U" ){
- model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and valyn!='완성' and anstcnfmneedyn!='N']");
- }else{
- model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
- }
- model.removeNodeset("/root/temp1/addprcp/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
-
- }else if( errflagcd == 2 ){
- if( sFlag == "U" ){
- model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and valyn!='완성' and anstcnfmneedyn!='N']");
- }else{
- model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and anstcnfmneedyn!='N']");
- }
- model.removeNodeset("/root/temp1/addprcp/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
-
- }
- else if( errflagcd == 4 ){
- model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and (prcpkindcd = '60' or prcpkindcd = '70') and prcpdd='" + today + "']");
- model.removeNodeset("/root/temp1/addprcp/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "']");
-
- }
-
- }
- /**
- * @group :
- * @ver
- : 2007.09
- * @by : 전지은
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : CP적용 후, 발행 가능한 처방들에 대해서 일괄저장(및 인증저장)을 한다
- * @param : flag "":입력 / "U":수정
- : prcpflag 처방구분 (2007.09.19 추가됨) ex:0(일반),6(CP),7(항암프로토콜)...
- : prtlFlag_SMMMO00110 (+) 프로토콜처방구분(2007.09.19 추가됨) ex:01,02,10,20
- : rtnpstn (+) return position
- * @return :
- * @---------------------------------------------------
- */
- function fBatSaveCpPrtlPrcp( flag, prcpflag, savePrtlFlag, rtnpstn ){
- var today = getCurrentDate();
- var prcpgenrflag = model.getValue("/root/patflag/list/prcpgenrflag");
- var cpgIoFlag = model.getValue("/root/main/masterinfo/info/ioflagcd");
- var addFlag = "add_After"; //추가처방 저장 시, 당일 및 OCS에서 추가 시 addPrcp호출(X), 환자계획표에서 추가 시 addPrcp호출(O)
- //초기값 setting
- prtlFlag_SMMMO00110 = savePrtlFlag;
- questionYN_SMMMO00110 = "N";
- appNo_SMMMO00110 = model.getValue("/root/temp1/getdata/cpgappno");
- //ErrExistYN_SMMMO00110 = "N";
- etclnkspecValue_SMMMO00110 = "0" + "|" + appNo_SMMMO00110;
- saveNum_SMMMO00110 = 0;
- cpSaveKindFlag_SMMMO00110 = flag; //cp 저장구분에 따라, '-'를 같이 처리할지 말지...
- var dcNode = null; //DC노드
-
- var sCpBatchTime = fGetHardCDList("Y", 599, 3); //배치 실행 시간 2018.01.25 엄영만
- if(isNull(sCpBatchTime)) {
- sCpBatchTime = "180000"; // 디폴트 6시
- }
-
- //적용 직전, 항암프로토콜(안티스) 진행중인지를 체크한다. (2008.09.30) (s)
- model.removeNodeset ( "/root/send/reqdata" );
- model.makeNode( "/root/send/reqdata" );
- model.makeNode( "/root/temp1/rsltgetdata" );
- model.makeValue("/root/send/reqdata/pid", model.getValue("/root/paminfo/list/pid"));
- model.makeValue("/root/send/reqdata/cretno",model.getValue("/root/paminfo/list/cretno"));
- model.makeValue("/root/send/reqdata/prcpgenrflag",prcpgenrflag);
- if(prcpgenrflag == "O") model.makeValue("/root/send/reqdata/orddd", model.getValue("/root/paminfo/list/orddd"));
- else model.makeValue("/root/send/reqdata/orddd", model.getValue("/root/paminfo/list/indd"));
- model.makeValue("/root/send/reqdata/getanticncryn", "Y"); //항암프로토콜 진행중인지 조회 여부
- if( submit("TRMMP00807", false) ){
- if( instance1.selectSingleNode("/root/temp1/rsltgetdata/getdata/cpgappno") != null ){
- if( model.getValue("/root/temp1/rsltgetdata/getdata/prtlflagcd") == "10" ){
- messageBox( "항암프로토콜 진행중인 환자이므로 저장", "E001" );
- return false;
- }
- }
- }
- model.removeNodeSet ( "/root/temp1/rsltgetdata/getdata" );
-
- // (e)
- //[저장]버튼 (미완성처방 수정저장 할 경우, 삭제 데이터를 따로 담아간다)
- if( flag == "U" ){
- var delPrcpList = instance1.selectNodes("/root/main/prcp/prcplist[status='I' or status='U' or status='D']"); //prcp->prcpsrch 변경 여부..
- var delHeader = "dstatus▦prtlprcpno";
- var delData = "";
- var delCnt = 0;
- for(var i=0; i<delPrcpList.length; i++){
- var node = delPrcpList.item(i);
- var prcpddNode = node.selectSingleNode("prcpdd");
- var prtlprcpnoNode = node.selectSingleNode("prtlprcpno");
- //2008.06.23
- var errtretflagNode = node.selectSingleNode("errtretflag");
- var valynNode = node.selectSingleNode("valyn");
- var saveStatusNode = node.selectSingleNode("status");
-
- //if( prcpddNode.text == today || (errtretflagNode != null && valynNode.text == "완성") ){ //2008.06.23
- if( saveStatusNode.text == "D" ){ //2008.07.04
- var statusText = "22";
- delCnt++;
- }else if( saveStatusNode.text == "U" ){
- model.setValue(saveStatusNode, "I");
- var statusText = "23";
- delCnt++;
- }
-
- //2회 저장부터 prtlprcpnoNode 없어서 오류 발생
- if( prtlprcpnoNode != null ){
- delData = delData + "▩" + statusText + "▦" + prtlprcpnoNode.text;
- }
- }
-
- if( delCnt > 0 ){
- model.makeValue("/root/send/delprcplist", delHeader + delData + "▩");
- }
- copyNodeListType( "/root/main/prcpsrch", "/root/main/prcp/prcplist[status='I']", "replace", model, model );
- } else { //[적용]버튼
- var addPrcpNodeList = null;
- if( isNull(flag) ){
- if( ivw_prcp3.visible == true ){
- dcNode = ivw_prcp3.instance1.selectSingleNode("/root/prcpsrch/prcplist[chkcol='D']");
- }
-
- var nodeList = null;
- //CP/CPG별 저장 대상이 다름 처리 (2008.12.06)
- if( cpgIoFlag == "O" ){
- nodeList = instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10' and prcpdd='" + today + "' and savestatus='I']");
- } else {
- if( prcpgenrflag == "O" ){
- nodeList = instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10' and prcpdd='" + today + "']");
- }else{
- nodeList = instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10' and savestatus='I']");
- }
- }
-
- var DetlNodeList = null;
- if( ivw_detail.src != "" ) DetlNodeList = ivw_detail.instance1.selectNodes("/root/main/prcp/prcplist[status='I' or status='U' or status='D']"); // (OCS에서 추가된) 추가처방
- var existPrcpNode = instance1.selectSingleNode("/root/main/prcp/prcplist[status='I' or status='U' or status='D' or status='-']");
- var existPrcpSrchNode = instance1.selectSingleNode("/root/main/prcpsrch/prcplist[status='I' or status='U' or status='D']");
-
- var nextDay = getCurrentDate().toDate().getAddDate(1,"D").getDateFormat();
- var toDay = parseInt(getCurrentDate());
- var initDay = parseInt(model.getValue("/root/init/prcpdd"));
-
- if( ivw_detail.visible == true ){
- //환자계획표 visible : prcp 인스턴스 대상
- if( nodeList.length <= 0 && DetlNodeList.length <= 0 && dcNode == null ){
- stopSavePrcpYN_SMMMO00110 = "Y"; //refresh가 안 되도록, 리턴값을 Y
- messageBox( "저장할", "E013" );
- return false;
- }
-
- ivw_detail.model.removeNodeset("/root/main/prcp/prcplist[status='' or status='S']");
- addFlag = "add_Before";
- } else if (imp_prcp.visible == true && existPrcpSrchNode == null ){
- //OCS visible : prcpsrch 인스턴스 대상 (prcpsrch=null이면, 최초저장의 경우임)
- //prcpsrch에 데이터가 없고, prcp에 데이터가 없고, diaginfo에 데이터가 없을 경우, return
- if( (prcpgenrflag != "O" && nodeList.length <= 0 && existPrcpNode == null) ||
- (prcpgenrflag == "O" && nodeList.length <= 0 && existPrcpNode == null ) ) {
-
- if( dcNode == null && instance1.selectSingleNode("/root/main/diaginfo/diagcdlist[status!='-' and status!='' and status!='S']") == null ){
- stopSavePrcpYN_SMMMO00110 = "Y";
- messageBox( "저장할", "E013" );
- return false;
- }
- }
- addFlag = "add_After";
- }
- if( nodeList.length > 0 ){
- //스텝이 가지고 있는 set처방 목록을 조회한다(외래환자는 D0 처방만을 select, D0가 없다면 0건)
- if( getParameter("SPMMP00200_popupYN") != "Y" && cpTmpPrcpSaveYN_SMMMO00110 != "Y" ){ //약속처방 최초 1회만 조회(2008.10.14), D0처방은 처음부터 존재하므로 또 조회할 필요 없음(2009.02.03)
- fGetCurrentPrcpList("SEL");
- setParameter("SPMMP00200_popupYN", "Y"); //CP 처방 저장 시, 저장 후 오류있다면 오류팝업 호출(Y이면 팝업호출) (2008.09.30)
- //addPrcpSetValue()에 saveflaginfo 값 설정 부분이 잘못들어가있어 위치 변경.. (2008.12.09)
- //설정 시작 (s)
- model.makeValue ( "/root/save/saveflaginfo/isstimes", isstimes_SMMMO00110 ); //발행시작회차, 종료회차
- model.makeValue ( "/root/save/saveflaginfo/isssteps", isssteps_SMMMO00110 ); //발행시작스텝, 종료스텝
- model.makeValue ( "/root/save/saveflaginfo/steparray", stepArray_SMMMO00110 ); //저장하는 스텝 리스트 (|)
- model.makeValue ( "/root/save/saveflaginfo/prcpddarray", prcpddArray_SMMMO00110 ); //저장하는 스텝 처방일 리스트 (|)
- // 설정 끝 (e)
- }
- }
-
- // ★ 2007.11.14 (만약, 환자계획표 창이 열려있다면, 수정된 노드를 함께 더한다)
- if( ivw_detail.visible == true ){
-
- if( DetlNodeList.length > 0 ){
- //init/prcpdd 미래일자로 변경 (ivw_detail의 prcp는 저장 취소가 되어도 삭제되지 않으므로 항상 prcp의 첫번째 prcpdd를 set)
- var org_initprcpdd = model.getValue("/root/init/prcpdd");
- var new_initprcpdd = ivw_detail.instance1.selectSingleNode("/root/main/prcpsrch/prcplist[1]/prcpdd");
- if( new_initprcpdd != null ){
- if( !isNull(new_initprcpdd.text) && org_initprcpdd != new_initprcpdd.text ){
- model.setValue( "/root/init/prcpdd", new_initprcpdd.text );
- fPrcpDdCheck();
- }
- }
- var delHeader = "dstatus▦prtlprcpno";
- var delData = "";
- for(var i=0; i<DetlNodeList.length; i++){
- var node = DetlNodeList.item(i);
- var prcpddNode = node.selectSingleNode("prcpdd");
- var prtlprcpnoNode = node.selectSingleNode("prtlprcpno");
- var statusNode = node.selectSingleNode("status");
-
- //새로 추가하는 미래처방은 프로토콜 처방테이블에서 삭제할 대상이 없음
- if( statusNode.text != "I" ){
- if(statusNode.text == "D"){
- var statusText = "22"; // row delete(prtlstat 22(삭제)로 update 처리)
-
- }else if(statusNode.text == "U"){
- //model.setValue(statusNode, "I"); // U -> I (기존 row는 삭제처리)
- if(prcpddNode.text == today){
- var statusText = "22"; // row status update
- }else{
- var statusText = "23"; // row remove(delete)
- }
- model.setValue(statusNode, "I");
- }
- delData = delData + "▩" + statusText + "▦" + prtlprcpnoNode.text;
- }
- }
- //case 2. 환자계획표에서 추가/수정한 미래처방을 prcpsrch 에 add
- model.makeValue("/root/send/delprcplist", delHeader + delData + "▩");
- model.makeValue("/root/send/delprcplist", delHeader + delData + "▩");
- //test(추가처방 저장취소-저장 시 *n건 저장되는 문제로 인한, addPrcp 전 prcp remove 처리)
- //model.removeNodeset("/root/main/prcp/prcplist");
- /*before
- copyNodeListType( "/root/main/prcpsrch", "/root/main/prcpsrch/prcplist[status='I']", "after", model, ivw_detail.model );
- after
- */
- //2008.10.31 copy from.prcpsrch-prcpsrch -> prcp-prcp
- //copyNodeListType( "/root/main/prcp", "/root/main/prcp/prcplist[status='I']", "before", model, ivw_detail.model );
- copyNodeListType( "/root/main/prcp", "/root/main/prcp/prcplist[status='I']", "replace", model, ivw_detail.model );
- // end after
-
- var PrcpSrchList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I']");
- for(var i=0; i<PrcpSrchList.length; i++){
- var node = PrcpSrchList.item(i);
- var prtlprcpnoNode = node.selectSingleNode("prtlprcpno");
- var prcpnoNode = node.selectSingleNode("prcpno");
- var prcphistnoNode = node.selectSingleNode("prcphistno");
- var certprcpnoNode = node.selectSingleNode("certprcpno");
- var prtlstatNode = node.selectSingleNode("prtlstat");
- var timesNode = node.selectSingleNode("times");
- var stepnoNode = node.selectSingleNode("stepno");
- var stepnmNode = node.selectSingleNode("stepnm");
-
- if( prtlprcpnoNode != null && flag != "U" ) { model.removenode(prtlprcpnoNode); } //조건 add(2008.11.28)
- if( prcpnoNode != null ) { model.removenode(prcpnoNode); }
- if( prcphistnoNode != null ) { model.removenode(prcphistnoNode); }
- if( certprcpnoNode != null ) { model.removenode(certprcpnoNode); }
- if( prtlstatNode != null ) { model.removenode(prtlstatNode); }
- if( timesNode != null ) { model.removenode(timesNode); }
- if( stepnoNode != null ) { model.removenode(stepnoNode); }
- if( stepnmNode != null ) { model.removenode(stepnmNode); }
- }
- }
- }
- }
- flag = "I";
- }
-
- model.makeValue ( "/root/save/saveflaginfo/prtlflag", prtlFlag_SMMMO00110 ); //프로토콜구분
- model.makeValue ( "/root/save/saveflaginfo/cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
- model.makeValue ( "/root/save/saveflaginfo/prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
-
- var saveDiagNode = instance1.selectSingleNode( "/root/main/diaginfo/diagcdlist[status!='-' and status!='S']");
- var savePrcpSrchNode = instance1.selectSingleNode("/root/main/prcpsrch/prcplist[status='I' or status='U']");
- var delprcplistNode = instance1.selectSingleNode("/root/send/delprcplist");
- var saveinvaliprcplistNode = instance1.selectSingleNode("/root/result/saveinvaliprcplist");
- var addprcpNode = instance1.selectSingleNode("/root/temp1/addprcp/prcplist");
- //add node
- var savePrcpNode = instance1.selectSingleNode("/root/main/prcp/prcplist[status='I' or (status='-' and prcphistcd='T')]");
- if( dcNode == null && savePrcpNode == null && savePrcpSrchNode == null && delprcplistNode != null && saveinvaliprcplistNode == null ){
- //예외1 : 삭제만 수행한다면, TRMMP00803/TRMMP00804 수행하지 않고, 바로 TXMMP00806만 수행한다 (2008.06.23)
- //인증서를 띄워 인증저장을 해야하지만, 인증 데이터 구조를 만들 수 없음...
- //alert("예외1 ok");
- if( messageBox ( "", "Q002" ) == 7 ){
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- } else {
- submit("TXMMP00806", false);
- stopSavePrcpYN_SMMMO00110 = "N";
- return true;
- }
- } else if( dcNode != null && savePrcpNode == null && savePrcpSrchNode == null && delprcplistNode == null && saveinvaliprcplistNode == null ){
- //예외2 : DC처방만 저장할 경우, DC처방저장만 수행
- //alert("예외2 ok");
- var prePrcpDD = ivw_prcp3.model.getValue("/root/init/bfprcpdd");
- model.setValue( "/root/init/prcpdd", prePrcpDD );
- fPrcpSave( "0", "0", "/root/main/prcp/prcplist", "N" );
- if( SubmitTF_SMMMO00110 == false ){
- //당일 처방저장 실패, refresh 안함.
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- }else{
- stopSavePrcpYN_SMMMO00110 = "N";
- return true;
- }
- } else if( dcNode == null && savePrcpNode == null && savePrcpSrchNode == null && delprcplistNode == null && saveinvaliprcplistNode != null ){
- //예외3 : 저장 할 처방은 없지만, 미완성 처방만 존재하는 경우
- //alert("예외3");
- if( messageBox ( "", "Q002" ) == 7 ){
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- }else{
- fSetSavrPrcpInfo(); //저장시 필요한 데이터를 임의로 구성함
- if( !submit("TXMMP00806", false) ){
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- }else{
- stopSavePrcpYN_SMMMO00110 = "N";
- return true;
- }
- }
- }
- if( saveDiagNode != null && dcNode == null && savePrcpNode == null && savePrcpSrchNode == null && delprcplistNode == null && saveinvaliprcplistNode == null ){
- //예외4 : 저장할 처방데이터는 없고, 진단데이터만 존재할 경우, 진단만 저장(당일처방과 동일한 func 호출). 2008.02.13
- //alert("예외4 ok");
- if( !fPrcpSave( "0", "0", "/root/main/prcp/prcplist", "N" ) ){
- //당일 처방저장 실패, refresh 안함.
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- }else{
- if( SubmitTF_SMMMO00110 == false ){
- //당일 처방저장 실패, refresh 안함.
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- }else{
- stopSavePrcpYN_SMMMO00110 = "N";
- var diagNode = instance1.selectSingleNode( "/root/main/diaginfo/diagcdlist" + "[status = 'I' or status = 'U' or status = 'D']");
- var diagList = instance1.selectNodes( "/root/main/diaginfo/diagcdlist" + "[status = 'I' or status = 'U' or status = 'D']");
- if( diagNode != null ){
- for(var i=0; i<diagList.length; i++){
- var node = diagList.item(i);
- var statusNode = node.selectSingleNode("status");
- model.setValue(statusNode, "-");
- }
- }
- return true;
- }
- }
- }
- model.removeNodeset("/root/send/srchcond");
- model.removeNodeset("/root/send/steplist");
- model.makeNode("/root/send/srchcond");
- model.makeNode("/root/send/steplist");
- // 인스턴스명 중복을 피하기 위해, reqdata 삭제
- model.removeNodeset ( "/root/send/reqdata" );
- model.removeNodeset ( "/root/send/savedata" );
- model.removenode("/root/save/saveflaginfo/cpsaveflag"); //저장 전, cp저장구분 노드 삭제
-
- //2008.10.07
- if( flag != "U" ){
- if( instance1.selectSingleNode("/root/main/steppath/info" + "[stepstat = '10' and prcpdd='" + today + "']") != null ){
- //1. CP 원처방 저장
- var todayPrcpNode = instance1.selectSingleNode("/root/main/prcpsrch/prcplist" + "[prcpdd='" + today + "' and status='I']"); //2008.08.30 I 추가
- if(cpTmpPrcpSaveYN_SMMMO00110 == "Y"){ //2009.03.10
- if( todayPrcpNode == null )
- copyNodeListType("/root/main/prcpsrch", "/root/main/prcp/prcplist[status='-' or status='I']", "replace", model, model);
- var todayPrcpNode = instance1.selectSingleNode("/root/main/prcp/prcplist" + "[status='I']");
- }
-
- }else{
- //2. 추가처방 저장 시
- if( model.getValue("/root/init/prcpdd") == today ){
- var todayPrcpNode = instance1.selectSingleNode("/root/main/prcp/prcplist" + "[status='I' or staus='-']"); //2008.08.30 I 추가
- }else{
- var todayPrcpNode = null;
- }
- }
- } else {
- var todayPrcpNode = instance1.selectSingleNode("/root/main/prcpsrch/prcplist" + "[prcpdd='" + today + "' and (status='I' or status='-')]"); //2008.08.30 I 추가
- }
-
- //당일------------->
- var appScopMode = model.getValue("/root/main/appscopmode"); //CPG인 경우, CPG스텝/CP스텝 적용 모드를 구분함 (2010.06.26)
- if( todayPrcpNode != null ){
- /* [미완성1:수술처방(당일)] 처방수술처방은 당일, 미래 상관 없이 무조건 미완성처방으로 저장 */
- var opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
- if( opNodeList.length > 0 && (cpgflagcd == "01" || (flag != "U" && cpgflagcd == "02" && appScopMode == "W")) ){
- //var opCSV = getNodeListCSV(opNodeList);
- fInvalPrcpTret(1, flag); //미완성처방(inval)으로 수동으로 변경
- }
-
- /* [미완성4:(당일)] 1 or 2 day cp 퇴원예고 없이 진행한 경우*/
- var dschdclrtyn = getPatientInfoDetail("dschdclrtyn");
- if( dschdclrtyn != "Y" ) {
- var dschNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and (prcpkindcd = '60' or prcpkindcd = '70') and prcpdd='" + today + "']");
- if( dschNodeList.length > 0 && (cpgflagcd == "01" || (flag != "U" && cpgflagcd == "02" && appScopMode == "W")) ){
- fInvalPrcpTret(4, flag); //미완성처방(inval)으로 수동으로 변경
- }
- }
-
- if( flag != "U" ){
- if( instance1.selectSingleNode("/root/main/steppath/info" + "[stepstat = '10' and prcpdd='" + today + "']") != null && curSavePrcpFlag_SMMMO00110 == "" ){ //최초 1회만 addPrcp
- if( cpTmpPrcpSaveYN_SMMMO00110 != "Y" ){
- curSavePrcpFlag_SMMMO00110 = "N";
- //prcpsrch -> prcp 인스턴스로 복사
- addPrcp("import", "/root/main/prcpsrch/prcplist[status!='S']", "/root/main/prcp", "Y", "prcpdd", today, grd_formlist, "N", "05");
- }
- }
- }
- /* addPrcp 이후, prcp 노드리스트가 구성되었다면, 노드리스트를 재정비한다. */
- //2008.10.07
- if( flag != "U" ){
- var prcpSrchNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[prcpdd='" + today + "' and (status='I' or status='-')]"); //2008.08.29 추가조건
- }else{
- var prcpSrchNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[prcpdd='" + today + "' and status='I']"); //2008.08.29 추가조건
- }
-
- var prcpNodeList = instance1.selectNodes("/root/main/prcp/prcplist");
- var prcpNodeListCnt = prcpNodeList.length;
- var groupFlag = "";
- var groupInclprcpno = "0";
- var groupHsctlnkno = "0";
- var groupEtclnkspecNode = "-";
- var groupPrcpkindcd = "10";
- var srchRow = 0;
- var valynTxt = "";
-
- for(var i=0; i<prcpNodeListCnt; i++){
- srchRow++;
- var node = prcpNodeList.item(i);
- var statusNode = node.selectSingleNode("status");
- var stepnoNode = node.selectSingleNode("stepno");
- var stepnmNode = node.selectSingleNode("stepnm");
- var setnoNode = node.selectSingleNode("setno");
- var settypecdNode = node.selectSingleNode("settypecd");
- var prcpddNode = node.selectSingleNode("prcpdd");
- var incpltnresnNode = node.selectSingleNode("incpltnresn");
- var prtlprcpnoNode = node.selectSingleNode("prtlprcpno");
- var ordddNode = node.selectSingleNode("orddd");
-
- var groupFlag = node.selectSingleNode("grupsnglflag");
- var inclprcpnoNode = node.selectSingleNode("inclprcpno"); //자코드의 MSET 모코드 연결번호
- var hsctlnknoNode = node.selectSingleNode("hsctlnkno"); //자코드의 BMT지시처방 모코드 연결번호
-
- var prcpkindcdNode = node.selectSingleNode("prcpkindcd");
- var prcpinptflagNode = node.selectSingleNode("prcpinptflag");
- var etclnkspecNode = node.selectSingleNode("etclnkspec");
- var prcpclscdNode = node.selectSingleNode("prcpclscd");
- var oprsrvnoNode = node.selectSingleNode("oprsrvno");
- var anstcnfmneedynNode = node.selectSingleNode("anstcnfmneedyn");
- var valynNode = node.selectSingleNode("valyn");
- if( valynNode != null ) var valynTxt = valynNode.text;
-
- var prcphopeddNode = node.selectSingleNode("prcphopedd");
- if( prcphopeddNode != null ) var prcphopeddTxt = prcphopeddNode.text;
-
- if( (inclprcpnoNode != null || hsctlnknoNode != null) && groupFlag != null ){
- var ininclprcpnoText = inclprcpnoNode.text;
- var hsctlnknoText = hsctlnknoNode.text;
- if( isNull(ininclprcpnoText) ){
- ininclprcpnoText = "0";
- }
- if( isNull(hsctlnknoText) ){
- hsctlnknoText = "0";
- }
-
- if( parseInt(ininclprcpnoText) > 0 || parseInt(hsctlnknoText) > 0 ){
- //모코드가 M/J이면서, CP처방이면,
- // BMT지시처방은 hsctlnkno 로 처리
- if( groupFlag.text == "M" && prcpinptflagNode.text == "05" ){
- if( prcpclscdNode.text=="H2" && oprsrvnoNode.text=="0" && valynTxt!="완성" )break;
- if( dschdclrtyn != "Y" && (prcpkindcdNode.text == "60" || prcpkindcdNode.text == "70") )break;
- groupInclprcpno = inclprcpnoNode.text;
- groupEtclnkspec = etclnkspecNode.text;
- groupPrcpkindcd = prcpkindcdNode.text;
- groupHsctlnkno = "0";
-
- } else if( groupFlag.text == "J" && prcpinptflagNode.text == "05" ){
- if( prcpclscdNode.text=="H2" && oprsrvnoNode.text=="0" && valynTxt!="완성" )break;
- if( dschdclrtyn != "Y" && (prcpkindcdNode.text == "60" || prcpkindcdNode.text == "70") )break;
- groupHsctlnkno = hsctlnknoNode.text;
- groupEtclnkspec = etclnkspecNode.text;
- groupInclprcpno = "0";
-
- } else if(groupFlag.text == "S" && groupInclprcpno != "0"){
- //자코드이면, cp처방으로 변환한다.
- if(groupInclprcpno == inclprcpnoNode.text){
- model.setValue(prcpinptflagNode, "05");
- model.setValue(etclnkspecNode, groupEtclnkspec);
- model.setValue(prcpkindcdNode, groupPrcpkindcd); //처방종류가 사라지므로, 강제 셋팅
- }
- } else if(groupFlag.text == "S" && groupHsctlnkno != "0"){
- //자코드이면, cp처방으로 변환한다.
- if(groupHsctlnkno == hsctlnknoNode.text){
- model.setValue(prcpinptflagNode, "05");
- model.setValue(etclnkspecNode, groupEtclnkspec);
- }
- }
- }
- }
-
- /* 저장할 prcp 노드리스트를 동일한 노드셋 형테로 만들기 위해, 필요없는 노드들을 삭제한다. */
- if(stepnoNode != null) {model.removenode(stepnoNode);}
- if(stepnmNode != null) {model.removenode(stepnmNode);}
- if(anstcnfmneedynNode != null) {model.removenode(anstcnfmneedynNode);}
- if( flag != "U" ){
- //다시 삭제 처리 (2008.08.31)
- if(prcpddNode != null){model.removenode(prcpddNode);}
- if(incpltnresnNode != null){model.removenode(incpltnresnNode);}
- }
- if(ordddNode != null){model.removenode(ordddNode);}
- if(prtlprcpnoNode != null){
- if(flag != "U") model.removenode(prtlprcpnoNode); //조건 add(2008.11.28)
- //미완성처방 그리드에서 당일미완성 수정할 경우, cp처방으로 간주되어야 함.
- model.setValue(prcpinptflagNode, "05");
- model.setValue(etclnkspecNode, etclnkspecValue_SMMMO00110);
- }
-
- if( statusNode.text != "-" && statusNode.text != "S" ){ //flag == "U" && 2009.03.10 제외
- if( groupFlag.text == "M" || groupFlag.text == "J" ){
- var vSrchRow = srchRow;
- groupFlagRow = srchRow;
-
- if( prcpclscdNode.text=="H2" && oprsrvnoNode.text=="0" && valynTxt!="완성" )break;
- if( dschdclrtyn != "Y" && (prcpkindcdNode.text == "60" || prcpkindcdNode.text == "70") )break;
- if( groupFlag.text == "M" && inclprcpnoNode.text != "0" )break;
- if( groupFlag.text == "J" && hsctlnknoNode.text != "0" )break;
-
- model.resetInstanceNode ( "/root/temp1/addprcp" );
- for(var j=prcpNodeListCnt ; j>srchRow ; j--){
- fAppendSaveNode( "/root/temp1/addprcp", "/root/main/prcp/prcplist["+j+"]" );
- model.removeNodeset("/root/main/prcp/prcplist["+j+"]");
- }
-
- srchRow = fCheckCpPrcp("import", "/root/main/prcp/prcplist", "/root/main/prcp", groupFlagRow, srchRow, "05" );
-
- if( srchRow == 0 ){
- cnt++;
- srchRow = vSrchRow; //복사된 값이 없어 srchrow가 없으면 기존 srchrow로 다시 시작함
- }else{
- groupFlagRow = 0;
- model.removeNodeset("/root/main/prcp/prcplist[("+srchRow+")]");
-
- grd_prcplist.refresh();
- model.recalculate();
-
- --srchRow;
- i = srchRow-1;
-
- var addPrcpNodeList = instance1.selectNodes("/root/temp1/addprcp/prcplist");
- for(var j=addPrcpNodeList.length ; j>=1 ; j--){
- var statusTxt = model.getValue("/root/temp1/addprcp/prcplist["+j+"]/status");
- var prcpnmTxt = model.getValue("/root/temp1/addprcp/prcplist["+j+"]/prcpcd");
- //alert(statusTxt + " , " + prcpnmTxt);
- fAppendSaveNode( "/root/main/prcp", "/root/temp1/addprcp/prcplist["+j+"]" );
- model.removeNodeset("/root/temp1/addprcp/prcplist["+j+"]");
- }
- grd_prcplist.refresh();
- model.recalculate();
-
- prcpNodeList = instance1.selectNodes("/root/main/prcp/prcplist");
- prcpNodeListCnt = prcpNodeList.length;
- }
-
- }else{
- groupFlagRow = 0;
- var iPrcpInptFlag = model.getValue("/root/main/prcp/prcplist[" + srchRow + "]/prcpinptflag");
- addPrcpSetValue( "main", "/root/main/prcp/prcplist" , srchRow, "05");
- //★삭제 미래처방 존재할 경우, status가 I로 return 되기 때문에, 다시 'D"로 셋팅
- if( stsText == "D" ){
- model.setValue("/root/main/prcp/prcplist[" + srchRow + "]/status", "D");
- }else if( stsText == "-" ){
- model.setValue("/root/main/prcp/prcplist[" + srchRow + "]/status", "-");
- }
- }
-
- } //end if(flag == "U")
-
- //s 응급환자 admission, 정규, 외출외박 처방 불가 처리 (2008.12.30)
- if ( prcpgenrflag == "E" && (prcpkindcdNode.text == "00" || prcpkindcdNode.text == "10" || prcpkindcdNode.text == "50") ) {
- //messageBox ( "응급환자는 Admission, 정규, 외출외박 처방을 등록하실 수", "I004" );
- model.setValue(prcpkindcdNode, "20"); //추가처방으로 대신 냄.
- setParameter("CheckPrcpKind01_SMMMO00110", "Y");
-
- }else if( model.getValue( "/root/initsrchprcp/prcpetccnts/admiprcpyn") != "Y" && prcpkindcdNode.text == "00" ){
- //messageBox ( "Admission 처방은 1회만", "I006" );
- model.setValue(prcpkindcdNode, "20"); //추가처방으로 대신 냄.
- setParameter("CheckPrcpKind02_SMMMO00110", "Y");
- }//e
-
- //CPG+CP 에서 CP스텝의 prcphopeddNode(처방희망일자)는 해당날짜로 변경해줌 (2010.06.26)
- if( flag != "U" && cpgflagcd == "02" && appScopMode == "W" ){
- //prcpdd or stepno or setno+settypecd
- if(statusNode.text != "-" && statusNode.text != "S" && setnoNode != null && settypecdNode != null ){ // && settypecdNode.text == "W"
- prcphopeddTxt = model.getValue("/root/main/steppath/info[setno='"+setnoNode.text+"' and settypecd='"+settypecdNode.text+"']/orgprcpdd");
- //model.removenode(setnoNode);
- //model.removenode(settypecdNode);
- }
- }
-
- //처방 희망일자가 저절로 원복되는 문제 조치 (2010.06.26 JJE)
- model.setValue(prcphopeddNode, prcphopeddTxt);
- } //end for
- model.setValue("/root/main/appscopmode", ""); //최초만 prcphopedd를 default로 설정, 이후에는 변경한 대로 지정되도록 하기위함 (2010.06.26 JJE)
-
- clearParameter("CheckPrcpKind01_SMMMO00110");
- clearParameter("CheckPrcpKind02_SMMMO00110");
-
- model.removeNodeset("/root/send/savedata/master");
- /* 적용상태(appstat) 및 스텝상태(stepstat) 저장하기 위한 데이터 구성 */
- if( cpgflagcd == "01" && prcpgenrflag == "O"){
- model.makeValue("/root/send/srchcond/srchcond" , "C");
- model.makeValue("/root/send/srchcond/cpgappno" , model.getValue("/root/temp1/getdata/cpgappno")); //2008.06.23 풀어줬음
- model.makeValue("/root/send/srchcond/cpgno" , model.getValue("/root/main/masterinfo/info/cpgno")); //2008.07.31 추가
- model.makeValue("/root/send/srchcond/cpghistseq", model.getValue("/root/main/masterinfo/info/cpghistseq")); //2008.07.31 추가
- model.makeValue("/root/send/srchcond/cpgflagcd" , model.getValue("/root/main/masterinfo/info/cpgflagcd")); //2009.02.16 추가
- if( cpgIoFlag == "O" ){
- //(1). 외래환자이면서 외래CP이면, 처방일이 당일인 스텝만 발행.
- var nodeList = instance1.selectNodes("/root/main/steppath/info" + "[prcpdd='" + today + "' and stepstat='10']");
- model.makeValue("/root/send/srchcond/appstat", "10"); //진행중
- }else{
- //(2). 외래환자이면서, D0가 step 이 있다면, D0 스텝의 처방만을 실처방으로 저장하고, cp적용환자리스트에 appstat를 12(입원필요)로 바꾼다
- //외래환자이면서, 입원CP(D0)이면, D0 처방만 발행 가능하므로 D1부터 스텝정보를 저장할 필요가 없음.
- var nodeList = instance1.selectNodes("/root/main/steppath/info" + "[times='0' and stepstat='10']");
- model.makeValue("/root/send/srchcond/appstat", "12"); //입원필요
- }
- var stepCSV = getNodeListCSV(nodeList);
- model.makeValue("/root/send/steplist", stepCSV);
-
- }else{
- //(3). 입원 혹은 DSC환자 등의 경우, 하루치 당일 처방만 저장한 경우, 상태값을 바꿔주고, return
- model.makeValue("/root/send/srchcond/srchcond", "C");
- model.makeValue("/root/send/srchcond/cpgappno", model.getValue("/root/temp1/getdata/cpgappno")); //2008.06.23 풀어줬음
- model.makeValue("/root/send/srchcond/cpgno" , model.getValue("/root/main/masterinfo/info/cpgno")); //2008.07.31 추가
- model.makeValue("/root/send/srchcond/cpghistseq", model.getValue("/root/main/masterinfo/info/cpghistseq")); //2008.07.31 추가
- model.makeValue("/root/send/srchcond/cpgflagcd" , model.getValue("/root/main/masterinfo/info/cpgflagcd")); //2009.02.16 추가
-
- if( cpgflagcd == "01" ){ //CP일때의 appstat 변경 기준
- var trgNodeLngth = instance1.selectNodes("/root/main/steppath/info").length;
- var lastPrcpDD = model.getValue("/root/main/steppath/info[" + trgNodeLngth + "]/prcpdd");
- var nxtDate = new Date().getAddDate(1, "D").getDateFormat();
-
-
- if( lastPrcpDD == today && model.getValue("/root/main/masterinfo/info/fcstinhospdayno") == "1" && parseInt(model.getValue("/root/temp1/getdata/appstat")) < 30 ){
- //하루짜리 case 추가 (2009.05.25)
- model.makeValue("/root/send/srchcond/appstat", "30"); //하루짜리 CP이므로 30
- } else if( (lastPrcpDD == today || (lastPrcpDD == nxtDate && getCurrentTime() >= sCpBatchTime)) && model.getValue("/root/main/masterinfo/info/fcstinhospdayno") != "1" ){
- //마지막스텝처방발행(30) 으로 보냈으나, 이전 상태 변경 없도록 null 보냄(2009.03.16)
- model.makeValue("/root/send/srchcond/appstat", "");
- } else {
- //마지막 스텝 처방일 전일 마지막 스텝의 처방이 실처방 발행된 상태에서, 익일 추가처방 저장 시 appstat 30->10으로 바뀌지 않도록 처리 (2008.10.16 JJE)
- if( parseInt(model.getValue("/root/temp1/getdata/appstat")) < 30 ){
- model.makeValue("/root/send/srchcond/appstat", "10"); //진행중(10) 혹은 마지막스텝처방발행(30)
- }
- }
- }else { //CPG일때의 appstat 변경 기준
- var swimLineNo = model.getValue("/root/main/masterinfo/info/swimlineno");
- if( model.getValue("/root/main/steppath/info[swimlineno = '" + swimLineNo + "']/savestatus") == "I" ){
- model.makeValue("/root/send/srchcond/appstat", "30"); //진행중(10) 혹은 마지막스텝처방발행(30)
- }else{
- //마지막 스텝 처방일 전일 마지막 스텝의 처방이 실처방 발행된 상태에서, 익일 추가처방 저장 시 appstat 30->10으로 바뀌지 않도록 처리 (2008.10.16 JJE)
- if( parseInt(model.getValue("/root/temp1/getdata/appstat")) < 30 ){
- model.makeValue("/root/send/srchcond/appstat", "10"); //진행중(10) 혹은 마지막스텝처방발행(30)
- }
- }
- }
-
- var nodeList = instance1.selectNodes("/root/main/steppath/info" + "[stepstat='10' and (prcpdd='" + today + "' and savestatus!='-')]"); //2009.06.23 or->and
- var stepCSV = getNodeListCSV(nodeList);
- model.makeValue("/root/send/steplist", stepCSV);
- }
- /* 1. PRCPDD가 오늘 날짜인 처방들은 따로 실처방 저장을 먼저 한다 (처방 로직을 그대로 따른다) */
- SubmitTF_SMMMO00110 = false; //TXMMP00803, TXMMP00804 수행 결과 true 이면 SubmitTF_SMMMO00110 = true
- if( flag != "U" ){
- if( instance1.selectSingleNode("/root/main/steppath/info" + "[stepstat = '10' and prcpdd='" + today + "']") != null ){
- var prcpSrchNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[prcpdd='" + today + "' and status='I' or status='-']"); //2008.08.29 추가조건
- }else{
- var prcpSrchNodeList = instance1.selectSingleNode("/root/main/prcp/prcplist" + "[status='I' or status='-']");
- }
-
- }else{
- var prcpSrchNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[prcpdd='" + today + "' and status='I']"); //2008.08.29 추가조건
- }
-
- if(prcpSrchNodeList.length > 0){
- if( flag != "U" ){
- var saveSrc = "/root/main/prcp/prcplist";
- }else{
- var saveSrc = "/root/main/prcp/prcplist[status='I']";
- }
- fPrcpSave( "0", "0", saveSrc );
-
- if( SubmitTF_SMMMO00110 == false ){
- //당일 처방저장 실패, refresh 안함.
- stopSavePrcpYN_SMMMO00110 = "Y";
- return;
-
- }else{
- //당일처방저장 성공, 미래처방이 존재한다면, 처방저장을 계속 진행
- var diagNode = instance1.selectSingleNode( "/root/main/diaginfo/diagcdlist" + "[status = 'I' or status = 'U' or status = 'D']");
- var diagList = instance1.selectNodes ( "/root/main/diaginfo/diagcdlist" + "[status = 'I' or status = 'U' or status = 'D']");
- if( diagNode != null ){
- //진단 코드가 있으면, 저장 falg를 '-'로 바꾼다 (제대로 돌아간다면, 이 부분이 필요가 없는지 확인)
- for(var i=diagList.length-1; i>=0; i--){
- var node = diagList.item(i);
- var statusNode = node.selectSingleNode("status");
- if(statusNode.text == "D"){
- model.removeNodeset("/root/main/diaginfo/diagcdlist["+(i+1)+"]");
- }else{
- model.setValue(statusNode, "-");
- }
- }
- //grd_diaglist.refresh();
- }
- //alert(diagNode.xml);
- questionYN_SMMMO00110 = "Y";
- stopSavePrcpYN_SMMMO00110 = "N";
- var nodeInvalPrcpList = model.instance1.selectSingleNode("/root/main/invalprcplist/prcplist");
- if(nodeInvalPrcpList != null && nodeInvalPrcpList.length > 0){ //2008.09.30
- ErrExistYN_SMMMO00110 = "Y"; //당일 처방 저장 중 미완성처방이 있다면, Y
- }
- model.removeNodeset("/root/main/prcp/prcplist[status != 'S']");
- model.removeNodeset("/root/result/saveinvaliprcplist");
- model.removeNodeset("/root/send/saveinvaliprcplist");
- model.removeNodeset("/root/result/errprcplist");
- model.removeNodeset("/root/result/prcperrlist"); //처방오류(팝업) 데이터 삭제
- model.removeNodeset("/root/send/errprcplist");
-
- // 인스턴스명 중복을 피하기 위해, reqdata 삭제(2008.08.28)
- model.removeNodeset ( "/root/send/reqdata" );
- model.removeNodeset ( "/root/send/savedata" );
-
- // 원위치
- if( cpgIoFlag == "O" || prcpgenrflag == "O" || instance1.selectSingleNode("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']") == null){
- model.removeNodeset("/root/main/prcpsrch/prcplist");
- return;
- }
- } //처방저장 END if
- }else{
- //예외5: 당일 처방 모두가, 미완성 처방일 경우..
- //alert("예외5, 오늘날짜 처방 중 미완성만 존재함");
- fSetSavrPrcpInfo(); //저장시 필요한 데이터를 임의로 구성함
- if( !submit("TXMMP00803", false) ){
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- }else{
- questionYN_SMMMO00110 = "Y";
- stopSavePrcpYN_SMMMO00110 = "N";
- model.removeNodeset("root/result");
- model.makeNode("root/result");
- model.removeNodeset("root/send/delprcplist");
- model.removeNodeset("root/send/errprcplist");
- model.removeNodeset("root/send/saveinvaliprcplist");
- //미래처방도 없다면 더이상 저장할 데이터가 없으므로, return
- if( instance1.selectSingleNode("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']") == null ){
- model.removeNodeset("/root/main/prcpsrch/prcplist");
- return true;
- }
- }
- }
- //당일자 처방이 있을 때, END
- } else{
- stopSavePrcpYN_SMMMO00110 = "N";
- }
-
- if(stopSavePrcpYN_SMMMO00110 == "Y") return;
-
- if ( SubmitTF_SMMMO00110 == "Y" ){
- saveNum_SMMMO00110 = 1;
- }
-
- /* ------------------------------------------------------------------------------------------------------------------------------------------------------------- */
- //미래------------->
- //(프로토콜 테이블 저장 + 프로토콜처방 인증저장)
- /* [미완성2:수술처방] 처방수술처방은 당일, 미래 상관 없이 무조건 미완성처방으로 저장 */
- var opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and anstcnfmneedyn!='N']");
- if( opNodeList.length > 0 ){
- //var opCSV = getNodeListCSV(opNodeList);
- fInvalPrcpTret(2, flag); //미완성처방(inval)으로 수동으로 변경
- }
- if( flag != "U" ){
- var dayCntList = instance1.selectNodes("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']");
- if(dayCntList.length > 0){
- model.removeNodeset("/root/main/prcpsrch/prcplist[prcpdd <='" + today + "']");
- curSavePrcpFlag_SMMMO00110 = "T";
- //prcpsrch -> prcp
- addPrcp("import", "/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']", "/root/main/prcp", "Y", "status", "I", grd_prcplist, "N", "05");
- }
- }
-
- var nodelist = instance1.selectNodes("/root/main/prcp/prcplist");
- var srchNodelist = instance1.selectNodes("/root/main/prcpsrch/prcplist");
- var srchRow = 0;
- var groupFlagRow = 0;
- var cnt = 0;
- var nodelistLength = nodelist.length;
- var valynTxt = "";
-
- if(nodelist.length > 0){
- for(var i=0; i<nodelistLength; i++){
- srchRow++;
-
- var node = nodelist.item(i);
- var prcpClsCd = node.selectSingleNode("prcpclscd");
- var prcpKindCd = node.selectSingleNode("prcpkindcd");
- var drugmthdspccd = node.selectSingleNode("drugmthdspccd");
- var prcpnm = node.selectSingleNode("prcpnm");
- var drugmastspec = node.selectSingleNode("drugmastspec") + "^";
- var statusNode = node.selectSingleNode("status");
- var stsText = statusNode.text;
- var etclnkspecNode = node.selectSingleNode("etclnkspec"); // if( statusNode.text == "I" ) model.setValue(etclnkspecNode, etclnkspecValue_SMMMO00110);
- var stepnoNode = node.selectSingleNode("stepno");
- var stepnmNode = node.selectSingleNode("stepnm");
- var prcpddNode = node.selectSingleNode("prcpdd");
- var prcphopeddNode = node.selectSingleNode("prcphopedd");
- var rsrvddNode = node.selectSingleNode("rsrvdd");
- var oprsrvno = node.selectSingleNode("oprsrvno");
-
- var dschdclrtyn = getPatientInfoDetail("dschdclrtyn");
- var valynNode = node.selectSingleNode("valyn");
- if( valynNode != null ) valynTxt = valynNode.text;
- var anstcnfmneedynNode = node.selectSingleNode("anstcnfmneedyn");
- if(anstcnfmneedynNode != null) {model.removenode(anstcnfmneedynNode);}
-
- if(prcpddNode != null && !isNull(prcpddNode.text)){
- model.setValue ( "/root/init/prcpdd", prcpddNode.text );
- if(prcphopeddNode != null && !isNull(prcpddNode.text)){
- model.setValue(prcphopeddNode, prcpddNode.text);
- }
- }
- var groupFlag = node.selectSingleNode("grupsnglflag");
- var inclprcpnoNode = node.selectSingleNode("inclprcpno");
- var hsctlnknoNode = node.selectSingleNode("hsctlnkno");
- var prcpInptFlag = "05"; //cp처방
- if( flag == "U" && stsText != "-" ){
- if( groupFlag.text == "M" || groupFlag.text == "J" ){
- var vSrchRow = srchRow;
- groupFlagRow = srchRow;
-
- if( prcpClsCd.text=="H2" && oprsrvno.text=="0" && valynTxt!="완성" )break;
- if( dschdclrtyn != "Y" && (prcpKindCd.text == "60" || prcpKindCd.text == "70") )break;
- if( groupFlag.text == "M" && inclprcpnoNode.text != "0" )break;
- if( groupFlag.text == "J" && hsctlnknoNode.text != "0" )break;
-
- model.resetInstanceNode ( "/root/temp1/addprcp" );
- for(var j=prcpNodeListCnt ; j>srchRow ; j--){
- fAppendSaveNode( "/root/temp1/addprcp", "/root/main/prcp/prcplist["+j+"]" );
- model.removeNodeset("/root/main/prcp/prcplist["+j+"]");
- }
-
- srchRow = fCheckCpPrcp("import", "/root/main/prcp/prcplist", "/root/main/prcp", groupFlagRow, srchRow, "05" );
-
- if( srchRow == 0 ){
- cnt++;
- srchRow = vSrchRow; //복사된 값이 없어 srchrow가 없으면 기존 srchrow로 다시 시작함
- }else{
- groupFlagRow = 0;
- model.removeNodeset("/root/main/prcp/prcplist[("+srchRow+")]");
-
- grd_prcplist.refresh();
- model.recalculate();
-
- //srchRow = instance1.selectNodes("/root/main/prcp/prcplist").length-1;
- --srchRow;
- i = srchRow-1;
-
- var addPrcpNodeList = instance1.selectNodes("/root/temp1/addprcp/prcplist");
- for(var j=addPrcpNodeList.length ; j>=1 ; j--){
- var statusTxt = model.getValue("/root/temp1/addprcp/prcplist["+j+"]/status");
- var prcpnmTxt = model.getValue("/root/temp1/addprcp/prcplist["+j+"]/prcpcd");
- //alert(statusTxt + " , " + prcpnmTxt);
- fAppendSaveNode( "/root/main/prcp", "/root/temp1/addprcp/prcplist["+j+"]" );
- model.removeNodeset("/root/temp1/addprcp/prcplist["+j+"]");
- }
- grd_prcplist.refresh();
- model.recalculate();
-
- prcpNodeList = instance1.selectNodes("/root/main/prcp/prcplist"); //다시..
- prcpNodeListCnt = prcpNodeList.length;
- }
- }else{
- groupFlagRow = 0;
- var iPrcpInptFlag = model.getValue("/root/main/prcp/prcplist[" + srchRow + "]/prcpinptflag");
- addPrcpSetValue( "import", "/root/main/prcp/prcplist" , srchRow, "05");
- if( stsText == "D" ){
- model.setValue("/root/main/prcp/prcplist[" + srchRow + "]/status", "D");
- }else if( stsText == "-" ){
- model.setValue("/root/main/prcp/prcplist[" + srchRow + "]/status", "-");
- }
- }
- } else if( flag != "U" && ivw_detail.visible == true && stsText == "I" ){
- /* after (환자계획표에서 '추가' 시 미리 addprcp 수행되었으므로 addprcpSetValue() 수행안되어도 됨. 2중 호출. but, '수정' 시는 addprcpSetValue가 수행되어야 함. 2008.12.02) */
- //환자계획표에서 추가/수정한 처방 저장하는 경우, addPrcpSetValue() prcppkspec, pampkspec 등 구성을 위해 필요 (2008.10.31 JJE)
- if(DetlNodeList.length > 0 && curSavePrcpFlag_SMMMO00110 != "T") addPrcpSetValue( "import", "/root/main/prcp/prcplist" , srchRow, "05");
- } //add (after end)
- }
- }
- //실제 저장 시작
- fClearSaveInstance();
- SubmitTF_SMMMO00110 = false;
- /* after */
- var iPrcpddNode = instance1.selectSingleNode("/root/main/steppath/info[prcpdd > '"+today+"' and stepstat = '10']/prcpdd");
- if( imp_prcp.visible == true && iPrcpddNode == null && flag != "U" && parseInt(model.getValue("/root/init/prcpdd")) > parseInt(today) && instance1.selectSingleNode("/root/main/prcp/prcplist[status='I' or status='-']") != null ){
- //(1) 미래일자이지만 처방 저장 프로세스를 따라가는 경우...!
- prtlFlag_SMMMO00110 = "-";
- fPrcpSave( "0", "0", "/root/main/prcp/prcplist" );
-
- prtlFlag_SMMMO00110 = model.getValue("/root/main/masterinfo/info/cpgflagcd");
-
- if( SubmitTF_SMMMO00110 == false ){
- //당일 처방저장 실패, refresh 안함.
- stopSavePrcpYN_SMMMO00110 = "Y";
- return;
- }else{
- //당일처방저장 성공, 미래처방이 존재한다면, 처방저장을 계속 진행
- questionYN_SMMMO00110 = "Y";
- stopSavePrcpYN_SMMMO00110 = "N";
-
- model.removeNodeset("/root/main/prcp/prcplist[status != 'S']");
- model.removeNodeset("/root/result/saveinvaliprcplist");
- model.removeNodeset("/root/send/saveinvaliprcplist");
- model.removeNodeset("/root/result/errprcplist");
- model.removeNodeset("/root/result/prcperrlist"); //처방오류(팝업) 데이터 삭제
- model.removeNodeset("/root/send/errprcplist");
- model.removeNodeset ( "/root/send/reqdata" );
- model.removeNodeset ( "/root/send/savedata" );
- return;
- } //처방저장 END if
- } else {
- //(2) cp 미래처방 저장
- if( fPrcpDCSave_CP(prcpflag, rtnpstn, flag) != false ){
- questionYN_SMMMO00110 = "N";
- stopSavePrcpYN_SMMMO00110 = "N";
-
- //JJE 2008.10.09 (s)
- model.removeNodeset("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']");
- if( flag != "U" && !isNull(ivw_detail.src) ){
- ivw_detail.model.removeNodeset("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']");
- }
- //(e)
- }else{
- model.removeNodeset("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']");
- if( flag != "U" && !isNull(ivw_detail.src) ){
- ivw_detail.model.removeNodeset("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']");
- }
- return false;
- } //프로토콜처방 저장 end
-
- } //add(after end)
-
- model.setValue( "/root/init/prcpdd", today );
- }
- /**
- * @group :
- * @ver
- : 2007.09
- * @by : 전지은
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : TRMMP00803 을 거치지 않고 바로 저장하는 경우, 저장시 필요한 데이터를 임의로 구성함
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fSetSavrPrcpInfo(){
- var prcpgenrflag = model.getValue("/root/patflag/list/prcpgenrflag");
-
- //저장구분정보(saveFlagInfo)
- model.removeNodeset("/root/send/cond1");
- model.makeNode("/root/send/cond1");
- model.makeValue ( "/root/save/saveflaginfo/savedataflag", 2 );
- model.makeValue ( "/root/save/saveflaginfo/saveflag" , prcpgenrflag );
- model.makeValue ( "/root/save/saveflaginfo/prcpflag" , "0" );
- model.makeValue ( "/root/save/saveflaginfo/inptflag" , "0" );
- model.makeValue ( "/root/save/saveflaginfo/deptcd" , getUserInfo("dutplcecd"));
- model.makeValue ( "/root/save/saveflaginfo/deptnm" , getUserInfo("dutplcenm"));
- model.makeValue ( "/root/save/saveflaginfo/userid" , getUserInfo("userid"));
- model.makeValue ( "/root/save/saveflaginfo/usernm" , getUserInfo("usernm"));
- model.makeValue ( "/root/save/saveflaginfo/signyn" , "Y" );
- model.makeValue ( "/root/save/saveflaginfo/prcpdd" , getCurrentDate() );
- model.makeValue ( "/root/save/saveflaginfo/divyn" , "N" );
- model.makeValue ( "/root/save/saveflaginfo/prtlflag" , prtlFlag_SMMMO00110 );
-
- model.makeValue ( "/root/save/saveflaginfo/prtlprcpstatus" , "U" );
- /*
- model.makeValue ( "/root/save/saveflaginfo/isstimes" , "" );
- model.makeValue ( "/root/save/saveflaginfo/isssteps" , "" );
- model.makeValue ( "/root/save/saveflaginfo/steparray" , "" );
- */
- model.makeValue ( "/root/save/saveflaginfo/cpsaveflag" , "T" );
-
- var saveFlagInfoNodeList = model.instances(0).selectNodes( "/root/save/saveflaginfo" );
- model.setValue ( "/root/send/cond1", getNodeListCSV(saveFlagInfoNodeList));
-
- //saveRgstInfo 데이터 구성
-
- model.makeNode("/root/send/cond2/savepamlist");
- model.copyNode( "/root/send/cond2", "/root/paminfo/list" ); //원무정보 저장데이터
-
- var savepamlist = model.instance1.selectSingleNode( "/root/send/cond2" );
- var childNodeList = savepamlist.childNodes;
- for( var k=0; k<childNodeList.length; k++ ){
- var iNode = childNodeList.item(k);
- iNode.nodeName = "pam_" + iNode.nodeName;
- }
- model.makeValue ( "/root/send/cond2/pam_ordtype" , prcpgenrflag );
-
- //var saveRgstInfo = model.instances(0).selectNodes( "/root/send/cond2" );
- //model.setValue ( "/root/send/cond2", getNodeListCSV(saveRgstInfo));
-
- }
- /********************************* 처방과 저장 functon 합치기 전 *********************************/
- /**
- * @group :
- * @ver : 2007.09
- * @by :
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : 미수행처방/DC처방 저장 및 CP/항암프로토콜처방 저장
- * @param : prcpflag: 처방구분 0:의사처방, 2:간호, 3:지원부서, 5:Admission, 6:CP, 7:항암프로토콜, 8:임시처방
- rtnPstn : return position
- * @return : true, false
- * @---------------------------------------------------
- */
- function fPrcpDCSave_CP(prcpflag , rtnPstn, saveflag, prcpchkflag ) {
- var today = getCurrentDate();
- if( parseInt(model.getValue("/root/init/prcpdd")) > parseInt(today) ){
- setParameter("SMMMP00800_cpsaveflag", "T");
- }
- if (isNull(saveflag)) saveflag = "";
- if (isNull(prcpchkflag)) prcpchkflag = "Y"; //"저장하시겠습니까?" 메세지 or div 여부
- if (isNull(prcpflag)){
- var cpgflag = model.getValue("/root/main/masterinfo/info/cpgflagcd");
- if(cpgflagcd == "01") prcpflag = "6";
- }
- var savekindflag = "0"; //인증저장
- var saveNode = "/root/main/prcp/prcplist";
- var prcpgenrflag = model.getValue ( "/root/patflag/list/prcpgenrflag" );
- prtlFlag_SMMMO00110 = model.getValue("/root/main/masterinfo/info/cpgflagcd"); //fPrcpSave() 후 '-'로 바뀌므로 다시 선언
- //아래의 용량분할, 보험제한, 제한항생제 체크에 걸려서 fPrcpDCSave_CP()가 재귀호출되는 경우 ocrcalcscorcd 가 비워지는 현상이 발생함->조치(2008.11.07)
- if( ocrcalcscorcd != "" ){
- ocrcalcscorcd_SMMMO00110 = ocrcalcscorcd;
- }
- ////saveNode 셋팅 끝
-
- //당일처방 저장 시 질문을 했다면, 질문 skip
- if( questionYN_SMMMO00110 != "Y" ){
- var msg = messageBox ( "", "Q002" );
- if( msg == 7 ){
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- }else{
- saveok = "Y";
- }
- }else{
- saveok = "Y";
- }
-
- if(saveok == "Y"){
- //최초저장인 경우 iPrcpddNode > 0
- var iPrcp = "";
- var iPrcpddNode = instance1.selectSingleNode("/root/main/steppath/info[prcpdd > '"+today+"' and stepstat = '10']/prcpdd");
-
- //저장할 데이터가 있는지 체크
- //var savedataflag = fSaveExistCheck( savekindflag );
- //처방 저장전 체크 해야 할 것들
- if (savekindflag != 1) { // 처방 저장전 체크 해야 할 것들
- model.setValue ( "/root/save/saveflaginfo/prcpdd" , today );
- if (!fPrcpSaveChkBf(prcpchkflag)) return false; //2009.05.06(추가수정 by mjm)
- }
- model.removeNodeSet ( "/root/send/cond2" );
- model.makeNode ( "/root/send/cond2" );
-
- //저장구분정보(saveFlagInfo)
- model.setValue ( "/root/save/saveflaginfo/savedataflag", 2 ); //저장자료구분 0:진단 및 처방, 1:진단, 2:처방, 4:임시저장
- model.setValue ( "/root/save/saveflaginfo/saveflag" , prcpgenrflag ); //저장구분 O:외래, I:입원, E:응급, S:건진
- model.setValue ( "/root/save/saveflaginfo/prcpflag" , "0" ); //처방구분 0:의사처방, 2:간호, 3:지원부서, 5:Admission, 6:CP, 7:항암프로토콜, 8:임시처방
- model.setValue ( "/root/save/saveflaginfo/inptflag" , "0" ); //입력구분 0:의사, 1:간호사(간호에서 사용), 3:지원부서
- model.setValue ( "/root/save/saveflaginfo/deptcd" , getUserInfo("dutplcecd")); //부서코드
- model.setValue ( "/root/save/saveflaginfo/deptnm" , getUserInfo("dutplcenm")); //부서명
- model.setValue ( "/root/save/saveflaginfo/userid" , getUserInfo("userid")); //사용자ID
- model.setValue ( "/root/save/saveflaginfo/usernm" , getUserInfo("usernm")); //사용자명
- model.setValue ( "/root/save/saveflaginfo/signyn" , signyn );
- model.setValue ( "/root/save/saveflaginfo/prcpdd" , today );
- model.setValue ( "/root/save/saveflaginfo/divyn" , prcpchkflag ); //용량분할 할건지
-
- if( parseInt(model.getValue("/root/init/prcpdd")) > parseInt(today) ){
- /*after 조건 추가(1줄)*/
- if( !(iPrcpddNode == null && imp_prcp.visible == true && instance1.selectSingleNode("/root/main/prcp/prcplist[status='I' or status='-']") != null) ){
- model.makeValue ( "/root/save/saveflaginfo/cpsaveflag" , "T" ); //미래처방 체크 flag(2008.08.02 추가)
- } //add (after end)
- }
- model.makeValue ( "/root/save/saveflaginfo/prtlflag", prtlFlag_SMMMO00110 );
-
- //저장정보
- var saveFlagInfoNodeList = model.instances(0).selectNodes( "/root/save/saveflaginfo" );
- model.setValue ( "/root/send/cond1", getNodeListCSV(saveFlagInfoNodeList));
-
- //저장등록정보(saveRgstInfo)
- var saveRgstInfo = model.instances(0).selectNodes( "/root/paminfo/list" );
- model.setValue ( "/root/send/cond2", getNodeListCSV(saveRgstInfo));
-
- //저장처방정보(savePrcpInfo)
- var savePrcpInfo = model.instances(0).selectNodes( saveNode );
- model.copyNode ( "/root/send/cond3", "/root/main/prcp" );
- fAppendSaveNode( "/root/send/cond3", "/root/prcper/prcplist" );
- fAppendSaveNode( "/root/send/cond3", "/root/prcpdc/prcplist" );
-
- //저장 후, send에서 미완성처방을 빼기 위해, rownum을 순차적으로 만들어줌(원본과 결과 비교를 위함)
- var cond3List = instance1.selectNodes("/root/send/cond3/prcplist");
- for(var i=1; i<=cond3List.length; i++){
- model.makeValue("/root/send/cond3/prcplist[" + i + "]/rownum", i);
- }
-
- if ( prcpchkflag == "drugdc" ) { //약/주사 D/C 요청 중에 반납요청된 것은 D/C 처리한다.( 저장로직에서 사용 )
- model.setValue ( "/root/send/cond14", getNodeListCSV (model.instances(0).selectNodes( "/root/prcpdc/prcplist" )));
- }
-
- //setValue 후에 prcpdc 에 옮겨 놓은 prcplist를 클리어 한다.
- model.removeNodeset ( "/root/prcpdc/prcplist" );
-
- //저장진단정보(saveDiagInfo)
- var saveDiagInfo = model.instances(0).selectNodes( "/root/main/diaginfo/diagcdlist" );
- model.setValue ( "/root/send/cond4", getNodeListCSV(saveDiagInfo));
-
- //저장데이터 조회 분기
- if ( prcpgenrflag == "O" ) {
- if ( !submit ( "TRMMP00805", false )) { //TRMMO00103
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- }
- } else {
- if ( !submit ( "TRMMP00806", false )){ //TRMMO00104
- stopSavePrcpYN_SMMMO00110 = "Y";
- return false;
- }
- }
- if( rtnPstn == 1 ){
- return false;
- }
- //return;
-
- /* CP 미래처방의 유전자 검사 동의서 처리
- 출력은 적용 시 모두 발생하고 실제 데이터는 배치 실행시에 발생한다. 20100514 by LYJ
- ===========================================================================================================================================*/
- //**********************미래처방에 유전자검사 처방이 있을 경우 출력물 모달을 띄운다 **********
- var atadagn = model.getValue("root/tmp/atadagn");
- if ( atadagn != "" ) {
- var atadPrcpNodes = instance1.selectNodes("/root/result/savedrprcplist[tempcol13='A' and status='I']");
- var Nodes = instance1.selectNodes("/root/result/savedrprcplist");
- model.removeNodeSet("/root/hidden/atadinfo");
- model.removeNodeSet("/root/hidden/geneunitlist");
-
- if( atadPrcpNodes.length > 0 ) {
- model.makeValue("/root/hidden/atadinfo", "");
- for(var m=0; m < atadPrcpNodes.length; m++ ){
- var node = atadPrcpNodes.item(m);
- var atadNode = node.selectSingleNode("tempcol14");
- var atadNodeArray = atadNode.text.split("▦");
-
- model.makeValue("/root/init/atadinfo/row/instcd", atadNodeArray[0]);
- model.makeValue("/root/init/atadinfo/row/prcpdd", atadNodeArray[1]);
- model.makeValue("/root/init/atadinfo/row/prcpno", atadNodeArray[2]);
- model.makeValue("/root/init/atadinfo/row/pid", atadNodeArray[3]);
- model.makeValue("/root/init/atadinfo/row/orddd", atadNodeArray[4]);
- model.makeValue("/root/init/atadinfo/row/cretno", atadNodeArray[5]);
- model.makeValue("/root/init/atadinfo/row/patnm", getPatientInfoDetail("hngnm") );
-
-
- var gender = atadNodeArray[7].substr(6, 1);
- var regYY = parseInt(atadNodeArray[7].substr(0, 2));
-
- if(gender == '3' || gender == '4' || gender == '7' || gender == '8') {
- regYY += 2000;
- } else if(gender == '0' || gender == '9') {
- regYY += 1800;
- } else {
- regYY += 1900;
- }
- model.makeValue("/root/init/atadinfo/row/rrgstno", regYY + atadNodeArray[7].substr(2, 5));
- model.makeValue("/root/init/atadinfo/row/drnm", getUserInfo("usernm") );
-
- gender = atadNodeArray[9].substr(6, 1);
- regYY = parseInt(atadNodeArray[9].substr(0, 2));
-
- if(gender == '3' || gender == '4' || gender == '7' || gender == '8') {
- regYY += 2000;
- } else if(gender == '0' || gender == '9') {
- regYY += 1800;
- } else {
- regYY += 1900;
- }
- model.makeValue("/root/init/atadinfo/row/drbrthdd", regYY + atadNodeArray[9].substr(2, 4));
- model.makeValue("/root/init/atadinfo/row/prcpcd", atadNodeArray[10]);
- model.makeValue("/root/init/atadinfo/row/prcpnm", atadNodeArray[11]);
- model.makeValue("/root/init/atadinfo/row/deptengabbr", atadNodeArray[12]);
- model.makeValue("/root/init/atadinfo/row/roomcd", atadNodeArray[13]);
- model.makeValue("/root/init/atadinfo/row/prcpgenrflag", atadNodeArray[14]);
- model.makeValue("/root/init/atadinfo/row/centcd", model.getValue("/root/paminfo/list/centnm") );
- model.makeValue("/root/init/atadinfo/row/ocrtag", atadNodeArray[16]);
- model.makeValue("/root/init/atadinfo/row/formcd", atadNodeArray[17]);
- model.makeValue("/root/init/atadinfo/row/formfromdt", atadNodeArray[18]);
- model.makeValue("/root/init/atadinfo/row/pagenum", atadNodeArray[19]);
- model.makeValue("/root/init/atadinfo/row/execprcpuniqno", atadNodeArray[20]);
- model.makeValue("/root/init/atadinfo/row/pattelno", atadNodeArray[21]);
- model.makeValue("/root/init/atadinfo/row/pataddr", atadNodeArray[22]);
- model.makeValue("/root/init/atadinfo/row/patsex", atadNodeArray[23]);
- model.makeValue("/root/init/atadinfo/row/instnm", atadNodeArray[24]);
- model.makeValue("/root/init/atadinfo/row/insttelno", atadNodeArray[25]);
-
- copyNodeType("/root/hidden/atadinfo", "/root/init/atadinfo", "after");
- }
- modal("SPMMO21000", "", "", "", "", "/root/hidden/atadinfo", "/root/main/prcplist");
- var atadInfoNodes = instance1.selectNodes("/root/hidden/geneunitlist");
- if( atadInfoNodes.length > 0 ) { }
- else return false;
- }
-
- //**********************유전자 검사 관련 처방의 데이터를 생성하여 bach 실행시에 실제 발생될 데이터를 생성해 mmphptcp에 저장한다 **********
- var atadInfoNodes = instance1.selectNodes("/root/hidden/geneunitlist");
- if( atadPrcpNodes.length > 0 ) {
- for (var i = 0; i< atadPrcpNodes.length ; i++) {
- var j = i+1;
- var geneprnttmp = model.getValue("/root/hidden/geneunitlist[" + j + "]/testresn") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/spcpossnterm") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/stdyresn") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/spcproccd") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/spcpossntermcd") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/spcuseaprvyn") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/patinfouseyn") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/pid") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/patnm") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/procernm") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/procerbrthdd") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/rrgstno") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/rrgstno2") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/drnm") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/drbrthdd") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/deptengabbr") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/roomcd") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/prcpgenrflag") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/centcd") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/ocrtag") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/histcd") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/proceryn") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/orddd") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/logurl") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/pagenum") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/execprcpuniqno") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/pattelno") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/pataddr") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/patsex") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/instnm") + "▦" +
- model.getValue("/root/hidden/geneunitlist[" + j + "]/insttelno");
-
- var node = atadPrcpNodes.item(i);
- var atadNode = node.selectSingleNode("tempcol14");
- var atadNodeArray = atadNode.text.split("▦");
- for (var z = 1; z<= Nodes.length ; z++) {
- if (model.getValue ("/root/result/savedrprcplist[" + z + "]/prcpcd") == atadNodeArray[10]){
- if ( model.getValue ("/root/result/savedrprcplist[" + z + "]/geneprnttmp") == "" ){
- model.setValue("/root/result/savedrprcplist[" + z + "]/geneprnttmp" ,geneprnttmp)
- break;
- }
- }
- }
- }
- var atadInfoNodeleng = instance1.selectNodes("/root/hidden/geneunitlist/pid");
- if( atadPrcpNodes.length > 0 ) {
- for (var j = 1; j <= atadPrcpNodes.length ; j++){
- if ( j != 1 ){
- model.copyNode("/root/hidden/geneunitlist[" +1 + "]", "/root/hidden/geneunitlist[" + j + "]");
- }
-
- exeReportPreview("RPMMO21001", "XMLSTR" , "/root/hidden/geneunitlist", "" , "true" , "", "", "", "", "", "", "grp_report");
- var orddrid = ""
- if (model.getValue("/root/hidden/atadinfo/row[" + j + "]/prcpgenrflag") == "O" || model.getValue("/root/hidden/atadinfo/row[" + j + "]/prcpgenrflag") == "S" ) {
- orddrid = model.getValue("/root/paminfo/list/orddrid")
- } else {
- orddrid = model.getValue("/root/paminfo/list/medispclid");
- }
-
- if( ! fSaveOCRIF(model.getValue("/root/hidden/atadinfo/row[" + j + "]/ocrtag")
- , model.getValue("/root/hidden/atadinfo/row[" + j + "]/pid")
- , model.getValue("/root/hidden/atadinfo/row[" + j + "]/orddd")
- , model.getValue("/root/hidden/atadinfo/row[" + j + "]/cretno")
- , model.getValue("/root/hidden/atadinfo/row[" + j + "]/prcpgenrflag")
- , model.getValue("/root/paminfo/list/orddeptcd")
- , orddrid
- , model.getValue("/root/hidden/atadinfo/row[" + j + "]/formcd")
- , model.getValue("/root/hidden/atadinfo/row[" + j + "]/formfromdt")
- , "", "", 1) ) {
- messageBox("유전자검사동의서 IF 저장시 오류발생", "I");
- }
- }
- }
- }
- }
- model.makeValue("root/tmp/atadagn", "Y");
-
-
- // ===========CP 미래처방의 유전자 검사 동의서 처리 END================================================================================================================================
- if ( model.getValue ( "/root/result/divinfo/divchkflag" ) == "N" ) {
- var divPrcpInfo = model.instances(0).selectNodes( "/root/result/prcplist" );
- if ( divPrcpInfo.length > 0 ) { // 용량분할, 저함량
- if ( !isNull(model.getValue ( "/root/result/prcplist/prcpcd"))){
- xpt = window.screenleft + 100;
- ypt = window.screenTop + 50;
- coord = getRelativeCoordinate ( xpt, ypt );
- mon = coord[0];
- xpt = coord[1];
- ypt = coord[2];
- modal ( "SPADB62400", mon, xpt, ypt, "SPADB62400", "/root/result", "/root/main/prcp", "", false );
- model.refresh();
- model.recalculate();
- fClearSaveInstance();
- }
- else model.refresh();
- //fPrcpSave( "", "", "", "N" );
- fPrcpDCSave_CP(prcpflag , rtnPstn, saveflag, "N");
- return false;
- }
- } else if (model.getValue ( "/root/result/divinfo/divchkflag" ) == "A") {
- //20090420 마정민 수정 항암용량분할은 기존에는 서버에서 불할되어 바로 저장체크로직으로 갔지만 보험제한규정에 걸려서
- //다시저장할때 분할된 내용이 화면이 표시가 되지 않아 용량분할이 되지 않음.
- //항암용량분할도 화면에 표시하게 수정
- model.removeNodeSet ( "/root/main/prcp/prcplist" );
- var srcNodeList = model.instances(0).selectNodes("/root/result/prcplist");
- var destNode = model.instances(0).selectSingleNode("/root/main/prcp");
- for ( i=0; i < srcNodeList.length; i++ ){
- destNode.appendChild(srcNodeList.item(i).cloneNode(true));
- }
- model.refresh();
- //fPrcpSave( "", "", "", "N" );
- fPrcpDCSave_CP(prcpflag , rtnPstn, saveflag, "N");
- return false;
- }
-
- //실패시, 인스턴스 값을 확인하기 위해서 값을 copy
- model.makeNode("/root/result_copy");
- copyNodesetType("/root/result_copy", "/root/result", "replace", model, model);
-
- //CP일 경우, 미완성 처방을 인스턴스로 가지고만 있음(팝업은 저장 후 open)
- if(prcpflag == "6") {
- if( instance1.selectSingleNode("/root/result/savedrprcplist[status='U' or status='D']") ){
- var DetlNodeList = instance1.selectNodes("/root/result/savedrprcplist[status='U' or status='D']");
- for(var i=0; i<DetlNodeList.length; i++){
- var node = DetlNodeList.item(i);
- var prcpnoNode = node.selectSingleNode("prcpno");
- var etcLnkSpecNode = node.selectSingleNode("etclnkspec");
- var tmpstatNode = node.selectSingleNode("tmpstat");
- var etcLnkSpecText = etcLnkSpecNode.text;
- // 수정하는 경우, 프로토콜처방 테이블의 키값을 가져가야 함
- //if(prcpnoNode) {model.setValue(prcpnoNode, etcLnkSpecText.split("|")[2]);}
- //if(etcLnkSpecNode) {model.setValue(etcLnkSpecNode, etcLnkSpecText.split("|")[0] + "|" + etcLnkSpecText.split("|")[1]);}
- }
- }
- }
- //return;
-
- //오류메세지 팝업 분기
- if( ErrExistYN_SMMMO00110 != "Y" ) ErrExistYN_SMMMO00110 = "N";
- var prcpErrList = model.instances(0).selectNodes( "/root/result/prcperrlist/prcpcd" );
-
- if ( prcpErrList.length > 0 ) {
- if ( !isNull(model.getValue ( "/root/result/prcperrlist/prcpcd")) ){
- var srcNodeList = model.instances(0).selectNodes ("/root/result/prcperrlist");
- var flag = "";
- var errorCnt = 0;
- var notErrorCnt = 0;
- var nErrorCnt = 0; // 오류 CNT
- var nResnCnt = 0; // 사유 CNT
- var nInfoCnt = 0; // 정보 CNT
-
- //처방데이터구성 인스턴스 리턴 후, 처방데이터구성 전 인스턴스에서 오류처방(미완성처방)을 제한다
- var orgCond3List = model.instances(0).selectNodes( "/root/send/cond3/prcplist" );
- if(orgCond3List.length > 0){
- if(prcpErrList.length != orgCond3List.length){
- var valPrcpList = model.instances(0).selectNodes( "/root/result/savedrprcplist" );
-
- if(valPrcpList.length > 0){
- for ( var k=1; k <= orgCond3List.length; k++ ){
- model.setValue("/root/send/cond3/prcplist[" + k + "]/tempcol5", "D");
- }
-
- for(var k=0; k<valPrcpList.length; k++){
- var node = valPrcpList.item(k);
- var rownumNode = node.selectSingleNode("rownum");
- if(rownumNode != null){
- if( instance1.selectSingleNode("/root/send/cond3/prcplist[rownum='"+rownumNode.text+"']") != null ){
- model.setValue("/root/send/cond3/prcplist[rownum='"+rownumNode.text+"']/tempcol5", (k+1));
- }
- }
- }
- }
- model.removeNodeSet("/root/send/cond3/prcplist[tempcol5='D']");
- }
- }
- //인스턴스 제거 end
-
- //병용금기, 연령금기 팝업은 미리 띄운다
- for ( var i=1; i <= srcNodeList.length; i++ ) {
- flag = model.getValue ( "/root/result/prcperrlist[" + i + "]/flag" );
- if ( flag == "1" ) { // DUR 처리 구분 (1:오류, 5:사유입력, 4:정보제공)
- nErrorCnt++;
- } else if (flag == "5") {
- nResnCnt++;
- } else if (flag == "4") {
- nInfoCnt++;
- }
- }
-
- /*
- if ( nErrorCnt > 0 ){
- //오류처방 리턴 여부 (CP일 경우, 오류처방이 있어도 제외한 처방데이터를 함께 리턴하므로 오류메세지 팝업은 skip)
- ErrExistYN_SMMMO00110 = "Y";
- } else if (nResnCnt > 0) {
- xpt = window.screenleft + 100;
- ypt = window.screenTop + 50;
- coord = getRelativeCoordinate ( xpt, ypt );
- mon = coord[0];
- xpt = coord[1];
- ypt = coord[2];
-
- clearParameter ( "SPMMO90200_rtn" )
- modal("SPMMO90200", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/result", "", false);
- if ( getParameter ( "SPMMO90200_rtn" ) != "Y" ) { //CP미래처방은 취소 블록킹 처리했으므로 N일 경우 없음...(2009.05.04 JJE)
- var srcNodeList = model.instances(0).selectNodes( "/root/main/prcp/prcplist" );
- for(var i=1; i<=srcNodeList.length; i++) {
- model.setValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol19" , "" );
- }
- return false;
- }
- } else if (nInfoCnt > 0) {
- xpt = window.screenleft + 100;
- ypt = window.screenTop + 50;
- coord = getRelativeCoordinate ( xpt, ypt );
- mon = coord[0];
- xpt = coord[1];
- ypt = coord[2];
-
- clearParameter("SPMMO90100_rtn");
- modal("SPMMO90100", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/result", "", false);
- if(getParameter("SPMMO90100_rtn") != "Y") {
- var srcNodeList = model.instances(0).selectNodes( "/root/main/prcp/prcplist" );
- for(var i=1; i<=srcNodeList.length; i++) {
- model.setValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol19" , "" );
- }
- return false;
- }
- }
- */
- /*
- if( notErrorCnt > 0 ){
- //2008-09-28 마정민 수정
- xpt = window.screenleft + 100;
- ypt = window.screenTop + 50;
- coord = getRelativeCoordinate ( xpt, ypt );
- mon = coord[0];
- xpt = coord[1];
- ypt = coord[2];
-
- clearParameter ( "SPMMO16100_rtn1" )
- modal ( "SPMMO16100", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/result", "", false ); //병용연령금기
- if ( getParameter ( "SPMMO16100_rtn1" ) != "Y" ) { //CP미래처방은 취소 블록킹 처리했으므로 N일 경우 없음...(2009.05.04 JJE)
- var srcNodeList = model.instances(0).selectNodes( "/root/main/prcp/prcplist" );
- for(var i=1; i<=srcNodeList.length; i++) {
- model.setValue ( "/root/main/prcp/prcplist[" + i + "]/tempcol19" , "" );
- }
- return false;
- } else {
- //messageBox ( "삭제선택된 처방이 있습니다. 삭제후 계속 저장됩니다." , "I" );
- if ( getParameter ( "SPMMO16100_rtn2" ) == "D" ){
- fPrcpDCSave_CP(prcpflag , rtnPstn, saveflag, "N"); //fPrcpSave( "", "", "", "N" );
- return false;
- }
- }
- }
- */
- }
- }
-
- if(iPrcpddNode == null){
- //iPrcp = model.getValue("/root/send/cond3/prcplist[1]/prcpdd");
- var jPrcpddNode = instance1.selectSingleNode("/root/result/savedrprcplist[1]/prcpdd");
- if(jPrcpddNode != null){
- iPrcp = jPrcpddNode.text;
- }
- }else{
- iPrcp = iPrcpddNode.text;
- }
- if( !isNull(iPrcp) ){
- model.setValue ( "/root/save/saveflaginfo/prcpdd", iPrcp );
- var saveFlagInfoNodeList = model.instances(0).selectNodes( "/root/save/saveflaginfo" );
- model.setValue ( "/root/send/cond1", getNodeListCSV(saveFlagInfoNodeList));
- }
-
- //미래처방 사전 체크(1회) (s)
- if ( model.getValue("/root/init/restantimicyn") == "Y" ) { // 제한항생제처방
- if (!fAntiBioticsChk()) {
- fClearSaveInstance();
- return false;
- }
- }
- var qestflagcnt = 0;
- var limprcplist = model.instances(0).selectNodes( "/root/result/limprcplist" ); // 보험제한처방
- if ( limprcplist.length > 0 ) {
- for ( var i=1; i < limprcplist.length; i++ ) {
- if ( model.getValue ( "/root/result/limprcplist[" + i + "]/qestflag") != "M" ) {
- qestflagcnt++;
- }
- }
- if ( qestflagcnt == 0 && getRegistryPrcp ( "limprcp|"+getCurrentDate()) == "Y" ) {
- } else {
- if ( !isNull(model.getValue ( "/root/result/limprcplist/calcscorcd"))){
- xpt = window.screenleft + 100;
- ypt = window.screenTop + 50;
- coord = getRelativeCoordinate ( xpt, ypt );
- mon = coord[0];
- xpt = coord[1];
- ypt = coord[2];
- var rowid = 0;
- for ( var k=1; k <= limprcplist.length; k++ ){
- rowid = eval(model.getValue ( "/root/result/limprcplist[" + k + "]/rowid" ));
- var displayprcpnm = rowid + ". " + model.getValue ( "/root/result/limprcplist[" + k + "]/calcscorcd" ) + "\n" + "[" + model.getValue ( "/root/result/limprcplist[" + k + "]/prcpnm") + "]";
- model.setValue ( "/root/result/limprcplist[" + k + "]/displayprcpnm", displayprcpnm );
- }
- modal ( "SPMMO00900", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/result", "", false );
- model.removeNodeset("/root/result/limprcplist");
- if ( getParameter ( "SPMMO00900_rtnyn" ) == "Y" ) {
- clearParameter ( "SPMMO00900_rtnyn" );
- var savePrcpListLen = model.instances(0).selectNodes ( prcpNode + "[status!='S']" ).length;
- var saveDiagListLen = model.instances(0).selectNodes ( diagNode + "[status!='S' and status!='-']" ).length;
- if ( savePrcpListLen > 0 || saveDiagListLen >0 ) {
- //fPrcpSave( "", "", "", "N" );
- fPrcpDCSave_CP(prcpflag , rtnPstn, saveflag, "N");
- }
- return false;
- } else if ( getParameter ( "SPMMO00900_rtnyn" ) == "C" ) {
- //msg만 있는 것이라면 그냥 진행함
- } else {
- return false;
- }
- }
- }
- } // 보험제한처방끝
-
- if ( !isNull(model.getValue ( "/root/result/savetnmlist/pid" )) || !isNull(model.getValue ( "/root/result/savecncrlist/pid" ))) { //병기분류
- xpt = window.screenleft + 300;
- ypt = window.screenTop;
- coord = getRelativeCoordinate ( xpt, ypt );
- mon = coord[0];
- xpt = coord[1];
- ypt = coord[2];
- modal ( "SPMMO08400", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/tempresult", "", false );
- if ( getParameter ( "SPMMO08400_rtn1" ) != "Y" ){
- return false;
- }
- }
- fClearSaveInstance();
- if ( savekindflag != 1 && signyn == "Y" ) {
- var signbfcnts = model.getValue ( "/root/result/signprcplist/signprcp_signbfcnts" );
- var setnode = "/root/result/signprcplist/signprcp_signaftcnts";
- var signid = getUserInfo ("userid");
- var signopt = false;
- if ( prcpgenrflag != "O" ) {
- signopt = true;
- }
-
- ////인증 구분자 추가
- if( prcpflag == "6" ){
- //CP 일 때, 인증저장 2번 뜨는 것을 막는다
- if( questionYN_SMMMO00110 == "Y" ){
- var signid = getUserInfo ("userid");
- signopt = false;
- }
- }
- ////인증 구분자 추가 끝
- //처방인증
- var v_stext = fSaveSign ( signbfcnts, signid, signopt, setnode );
- if ( v_stext != "N" ) {
- if (isNull( v_stext )) {
- stopSavePrcpYN_SMMMO00110 = "Y";
- //fRemoveSaveNodeList();
- return false;
- }
- var saveSignPrcpInfo = model.instances(0).selectNodes( "/root/result/signprcplist" );
- //model.setValue ( "/root/send/cond2", getNodeListCSV(saveSignPrcpInfo));
- fAppendSaveNode( "/root/send/cond2", "/root/result/signprcplist" ); //의사처방데이터
- signopt = false; //진단에서 또 안띄우기 위해서 false로 수정
- }
- signbfcnts = model.getValue ( "/root/result/signdiaglist/signbfcnts" );
- setnode = "/root/result/signdiaglist/signaftcnts";
- //진단인증
- v_stext = fSaveSign ( signbfcnts, signid, signopt, setnode );
- if ( v_stext != "N") {
- if (isNull(v_stext)) {
- stopSavePrcpYN_SMMMO00110 = "Y";
- //fRemoveSaveNodeList();
- return false;
- }
- var saveSignDiagInfo = model.instances(0).selectNodes( "/root/result/signdiaglist" );
- //model.setValue ( "/root/send/cond2", getNodeListCSV(saveSignDiagInfo));
- fAppendSaveNode( "/root/send/cond2", "/root/result/signdiaglist" ); //의사처방데이터
- }
- }
-
- fAppendSaveNode( "/root/send/cond2", "/root/result/savedrprcplist" ); //의사처방데이터
- fAppendSaveNode( "/root/send/cond2", "/root/result/saveexecprcplist" ); //실시처방 저장데이터
- fAppendSaveNode( "/root/send/cond2", "/root/result/savediaglist" ); //진단저장 저장데이터
- fAppendSaveNode( "/root/send/cond2", "/root/result/savepamlist" ); //원무정보 저장데이터
- fAppendSaveNode( "/root/send/cond2", "/root/result/savematrprcplist" ); //재료처방정보 저장데이터
-
- if ( prcpgenrflag != "O" ) {
- //퇴원후 외래처방 저장 setting
- fAppendSaveNode( "/root/send/cond2", "/root/result/dschflaginfo" );
- fAppendSaveNode( "/root/send/cond2", "/root/result/dschpamlist" );
- fAppendSaveNode( "/root/send/cond2", "/root/result/dschdrprcplist" );
- fAppendSaveNode( "/root/send/cond2", "/root/result/dschexecprcplist" );
- fAppendSaveNode( "/root/send/cond2", "/root/result/dschmatrprcplist" );
-
- if(ErrExistYN_SMMMO00110 == "Y"){
- //미완성 처방을 저장하기 위해 send에 append
- fAppendSaveNode ( "/root/send", "/root/result/saveinvaliprcplist" );
- model.removeNodeset("/root/result/saveinvaliprcplist"); //2008.09.03 추가
- }
- }
- //return;
- //저장(return:오류처방 조회) 전 오류처방 받을 인스턴스 비움.
- model.removeNodeset ("/root/main/invalprcplist/prcplist");
-
- if( prcpflag == "0" ){
- if ( !submit ( "TXMMO00103", false )) {
- model.removeNodeSet ( "/root/result");
- model.resetInstanceNode ( "/root/send" );
- model.refresh();
- return false;
- }
- }else{
- if ( prcpgenrflag == "O" ) {
- if ( !submit ( "TXMMP00804", false )) { //TXMMO00101
- model.removeNodeSet ( "/root/result");
- stopSavePrcpYN_SMMMO00110 = "Y";
- if( saveNum_SMMMO00110 == 1 ) messageBox ("미래처방 저장을 실패했습니다.\n다시 저장", "I008");
- return false;
- }else{
- SubmitTF_SMMMO00110 = true;
- }
-
- }else {
- if ( !submit( "TXMMP00803", false )) { //TXMMO00103
- //messageBox("처방 저장을 ", "E009");
- model.removeNodeSet ( "/root/result");
- stopSavePrcpYN_SMMMO00110 = "Y";
- if( saveNum_SMMMO00110 == 1 ) messageBox ("미래처방 저장을 실패했습니다.\n다시 저장", "I008");
- return false;
- }else{
- SubmitTF_SMMMO00110 = true;
- }
- }
- if (savekindflag != 1) {
- /* 서버단에서 처리 함
- if ( prcpgenrflag != "O" ) { //외래를 제외하고 원무 batch 호출
- model.removeNodeset("/root/send/batch");
- model.makeValue("/root/send/batch/pid" , model.getValue("/root/paminfo/list/pid"));
- model.makeValue("/root/send/batch/prcpdd", model.getValue("/root/init/prcpdd"));
- model.makeValue("/root/send/batch/instcd", model.getValue("/root/paminfo/list/instcd"));
- submit ( "TXMMO00111", false );
- }*/
- /*
- if ( prcpgenrflag == "I" || prcpgenrflag == "D" ) { //입원일 때 약집계 호출 => mgr로 빼달라는 요청 or 약국 자동 집계
- submit ( "TXMMO00106", false );
- }
- if ( prcpgenrflag == "E" ) { //응급일 때 진료지원 예약모듈 호출
- submit ( "TXMMO00110", false );
- }
- if ( model.getValue ( "/root/init/restantimicyn" ) == "Y" ) { //제한항생제 저장
- fAntiBioticsSave();
- }
- */
- }
-
- /*미래처방 분에 대한 처방오류 메세지 팝업 (로직 맨 마지막으로 이동 (web))
- var popYN = getParameter("SPMMP00200_popupYN");
- if ( ErrExistYN == "Y" && instance1.selectSingleNode("/root/main/invalprcplist/prcplist") != null && popYN != "Y" ) {
- //...
- }*/
- saveNum_SMMMO00110 = 2;
- stopSavePrcpYN_SMMMO00110 = "N"
- clearParameter("SMMMP00800_cpsaveflag");
- return true;
- }
- return true;
- }
- }
- /************************************************************************
- 1. fCheckInvalList() : 최초 미래처방 저장 시, 저장 전 미완성 처방으로 분류
- 2. fTretInvalList() : 미래처방-미완성 처방 저장 시, 모두 체크 - 팝업/저장
- ************************************************************************/
- /**
- * @group :
- * @ver : 2008.03
- * @by :
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : CP미래처방을 체크하여 미완성처방을 분리한다 (사용안함-로직변경)
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fCheckInvalList(){
- /* 체크해야 할 미완성 처방
- - 1 : 저함량 배수 => 저함량배수처방 사유 들어가는 컬럼..fastprcpflag 에는 코드고 기타일때 tootfact에 내용
- - 2 : 병리의뢰지 : fReqfrm ( curRow, flag ) -> D2 (mgr에서 넣어줌)
- - 3 : 제한항생제처방 체크 => getArrayData ( drugmastspec + "^", 0, 16, "^", "|" )
- - 4 : 보험제한처방 처리 =>
- - 병기분류 => 진단(cncr)/처방 -> cancer stage 분류
- - 처방에 대한 중증진료, 산정특례, 법정전염병 처리
- - 퇴원후 외래처방 체크
- - 입원일 때 약집계 호출(skip)
- - 응급일 때 진료지원 예약모듈 호출(skip)
- - 처방중복체크(skip)
- - OCR 자동출력 ocrcalcscorcd 값은 MMO001에 global로 선언. 값은 fPrcpSaveChkaft에서 체크(skip)
- */
-
- // /root/result/savedrprcplist
- var nodelist = instance1.selectNodes("/root/result/savedrprcplist"); //정상 처방
- var limprcplist = model.instances(0).selectNodes( "/root/result/limprcplist" ); //보험제한 대상 처방
- var divPrcpList = model.instances(0).selectNodes( "/root/result/prcplist" ); //용량분할 대상 처방
-
- var limprcplistCnt = 0; //보험제한처방 갯수
- var checkYN = "N"; //중복copy를 막음
- var checkCnt = 0;
- model.removeNodeset("/root/result/saveinvaliprcplist");
- model.makeNode("/root/temp1/checkinvalprcp");
-
- //if ( model.getValue ( "/root/init/restantimicyn" ) == "Y" ){ // 제한항생제처방 + 보험제한처처방
- //for(var i=0; i<nodelist.length; i++){
- var endNo = nodelist.length - 1;
- for(var i=endNo; i>=0; i--){
- var node = nodelist.item(i);
- var prcpno = node.selectSingleNode("prcpno").text;
- checkYN = "N";
-
- /*
- //1. 용량분할은 reqGetPrcpSaveChk() 에서 체크
- //2. 병리의뢰지 -> reqGetPrcpSaveChk()-getPrcpSaveChk() 에서 체크
- var prcpclscd = node.selectSingleNode("prcpclscd").text;
- if(prcpclscd == "D2"){
- fAppendSaveNode( "/root/temp1/checkinvalprcp", "/root/main/prcp/prcplist["+(i+1)+"]" );
- checkYN = "Y";
- }
- */
- // 3. 제한항생제처방
- var drugmastspec = node.selectSingleNode("drugmastspec").text;
- var restantimicyn = "N";
- restantimicyn = getArrayData ( drugmastspec + "^", 0, 16, "^", "|" );
-
- if( restantimicyn == "Y" && checkYN == "N" ){
- if( isNull(model.getValue("/root/result/savedrprcplist[" + (i+1) + "]/tempcol6")) && isNull(model.getValue("/root/result/savedrprcplist[" + (i+1) + "]/tempcol7")) ){
- fAppendSaveNode( "/root/temp1/checkinvalprcp", "/root/result/savedrprcplist["+(i+1)+"]" );
- checkYN = "Y";
- checkCnt++;
- var prcpSpec = model.getValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/prcppkspec");
- model.makeValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/prcpdd", prcpSpec.substr(0, 8));
- //model.makeValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/prtlprcpno", "12"); //미완성처방 저장 시, prtlstat의 값을 prtlprcpno에 대신 넣어서 보낸다(prtlprcpno는 insert 때는 필요없는 노드임)
- if(model.getValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/prcpgenrflag") == "O"){
- model.makeValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/orddd", model.getValue("/root/paminfo/list/orddd"));
- }else{
- model.makeValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/orddd", model.getValue("/root/paminfo/list/indd"));
- }
- model.makeValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/incpltnresn", "제한항생제승인신청서를 작성해야 합니다.");
- model.makeValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/errtretflag", "3");
-
- }
- }
-
- // 2. 보험제한처방
- if ( limprcplist.length > 0 && limprcplistCnt <= limprcplist.length && checkYN == "N" ) {
- if ( !isNull(model.getValue ( "/root/result/limprcplist/calcscorcd"))) {
- //var k=0;
- //while(k<limprcplist.length && checkYN == "N"){
- //k++;
- for(var k=0; k<limprcplist.length; k++){
- var limNode = limprcplist.item(k);
- var limprcpcd = limNode.selectSingleNode("calcscorcd").text;
- var limprcpdd = limNode.selectSingleNode("prcpdd").text;
- var limprcpno = limNode.selectSingleNode("prcpno").text;
- var trgprcpcd = node.selectSingleNode("prcpcd").text;
- var trgprcpdd = node.selectSingleNode("prcpdd").text;
- var trgprcpno = node.selectSingleNode("prcpno").text;
- if( limprcpno == trgprcpno && checkYN == "N"){ //trgprcpcd == limprcpcd && trgprcpdd == limprcpdd
- fAppendSaveNode( "/root/temp1/checkinvalprcp", "/root/result/savedrprcplist["+(i+1)+"]" );
- checkYN = "Y";
- checkCnt++;
- limprcplistCnt++;
- var prcpSpec = model.getValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/prcppkspec");
- model.makeValue ("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/prcpdd", prcpSpec.substr(0, 8));
- //model.makeValue ("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/prtlprcpno", "12");
- if(model.getValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/prcpgenrflag") == "O"){
- model.makeValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/orddd", model.getValue("/root/paminfo/list/orddd"));
- }else{
- model.makeValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/orddd", model.getValue("/root/paminfo/list/indd"));
- }
- model.makeValue ("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/incpltnresn", "보험제한 처방입니다.");
- model.makeValue("/root/temp1/checkinvalprcp/savedrprcplist[" + checkCnt + "]/errtretflag", "4");
-
- }
- }
- }
- }
-
- //위에서 지우면 node.selectSingleNode("prcpcd").text; 에서 err
- if( checkYN == "Y" ){
- model.removeNodeset("/root/result/savedrprcplist["+(i+1)+"]");
- }
-
- }
- //}
-
-
- var checkinvalNodeList = instance1.selectNodes("/root/temp1/checkinvalprcp/savedrprcplist"); //제한항생제, 보험제한
-
- if( checkinvalNodeList.length > 0 ){
- if( instance1.selectSingleNode("/root/send/errprcplist") == null ){
- model.makeNode("/root/send/errprcplist");
- }
- if( instance1.selectSingleNode("/root/result") == null ){
- model.makeNode("/root/result");
- }
-
- var checkinvalCSV = getNodeListCSV(checkinvalNodeList);
- setCSVToNode("/root/result", checkinvalCSV, "saveinvaliprcplist");
- var saveInvaliPrcpList = model.instances(0).selectNodes( "/root/result/saveinvaliprcplist" ); //에러가 존재하여 미완성처방으로 저장될 데이터
- model.makeValue("/root/send/errprcplist", getNodeListCSV(saveInvaliPrcpList));
-
- model.removeNodeset("/root/result/saveinvaliprcplist/valyn");
- // TXMMP00803,4 에 saveinvaliprcplist 의 하부노드 명은 inval_ 으로 시작하므로, 노드 명을 바꾼다 (2008.02.12)
- for( var i=0; i<saveInvaliPrcpList.length; i++ ){
- var node = instance1.selectSingleNode( "/root/result/saveinvaliprcplist["+(i+1)+"]" );
- var childNodeList = node.childNodes;
- for( var k=0; k<childNodeList.length; k++ ){
- var iNode = childNodeList.item(k);
- if( iNode.nodeName.substr(0, 5) != "inval_" ){
- iNode.nodeName = "inval_" + iNode.nodeName;
- }
- }
- }
-
- copyNodeListType("/root/main/invalprcplist", "/root/result/saveinvaliprcplist", "after", model, model);
- copyNodeListType("/root/send", "/root/result/saveinvaliprcplist", "after", model, model);
- model.removeNodeset("/root/result/saveinvaliprcplist");
- // ★ prcpno 리스트와 비교하여 prcp 노드리스트에서 삭제
- model.removeNodeset("/root/temp1/checkinvalprcp");
- }
-
- }
- /**
- * @group :
- * @ver : 2008.03
- * @by :
- * @---------------------------------------------------
- * @type : function
- * @access : public
- * @desc : CP미래처방을 체크하여 미완성처방을 처리한다(팝업 및 정보저장)
- * @param :
- * @return :
- * @---------------------------------------------------
- */
- function fTretInvalList(){
- /* 체크해야 할 미완성 처방
- - 병리의뢰지 : fReqfrm ( curRow, flag ) -> D2
- - 제한항생제처방 체크 => getArrayData ( drugmastspec + "^", 0, 16, "^", "|" )
- - 보험제한처방 처리 =>
- - 병기분류 => 진단(cncr)/처방 -> cancer stage 분류
- - 처방에 대한 중증진료, 산정특례, 법정전염병 처리
- - 저함량 배수 => 저함량배수처방 사유 들어가는 컬럼..fastprcpflag 에는 코드고 기타일때 tootfact에 내용
- - 퇴원후 외래처방 체크
- - 입원일 때 약집계 호출(skip)
- - 응급일 때 진료지원 예약모듈 호출(skip)
- - 처방중복체크(skip)
- - OCR 자동출력 ocrcalcscorcd 값은 MMO001에 global로 선언. 값은 fPrcpSaveChkaft에서 체크(skip)
- */
-
- // 1. 용량분할
- if ( divPrcpList.length > 0 ) { // 용량분할, 저함량
- if ( !isNull(model.getValue ( "/root/result/prcplist/prcpcd"))){
- for(var i=0; i<divPrcpList.length; i++){
- var divNode = divPrcpList.item(i);
- var divprcpcd = divNode.selectSingleNode("calcscorcd").text;
- var divprcpdd = divNode.selectSingleNode("prcpdd").text;
- var trgprcpcd = node.selectSingleNode("prcpcd").text;
- var trgprcpdd = node.selectSingleNode("prcpdd").text;
- if( trgprcpcd == divprcpcd && trgprcpdd == divprcpdd ){
- fAppendSaveNode( "/root/temp1/checkinvalprcp", "/root/main/prcp/prcplist["+(i+1)+"]" );
- limprcplistCnt++;
- }
- }
- }
- }
- }
|