SMMMO00110.xjs 169 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/* 1. CP (SMMMP00800_CPGMAIN), 2. 항암프로토콜()
  3. <function list>
  4. fGetCurrentPrcpList : CP의 스텝의 진행상태를 참고하여, 처방정보를 조회한다
  5. fCheckCpPrcp : 그룹처방일 경우, 자코드를 조회하여 추가한다
  6. fInvalPrcpTret : 미완성처방으로 수동 처리한다
  7. fBatSaveCpPrtlPrcp : CP의 발행 가능한 처방들에 대해서 일괄저장(및 인증저장)을 한다
  8. fPrcpDCSave_CP : 항암, CP 미래처방 일괄저장 (MMPHPTCP)
  9. <호출하는 function list>
  10. addPrcp
  11. fPrcpSave
  12. addPrcpSetValue
  13. */
  14. var arErrorCode = new HashArray();
  15. /* 글로벌 변수 (호출하는 js에서 변수의 출처를 알 수 있도록, "변수명_SMMMO00110"으로 사용)*/
  16. var prtlFlag_SMMMO00110 = ""; //프로토콜 구분(01:CP, 02:CPG, 10:항암프로토콜,20:임상시험프로토콜)
  17. var stopSavePrcpYN_SMMMO00110 = "N"; //저장 모듈이 성공하지 못하고, 처방저장오류로 인해 return 된 상태 : Y (fGetCurrentPrcpList()를 통한 CP약속처방 재조회를 막기위함)
  18. var questionYN_SMMMO00110 = "N"; //실처방 저장 이후, 프로토콜 저장 로직을 수행할 때, "저장하시겠습니까?"라는 메세지가 2번 나오기 때문에, 실처방 저장 완료 후 questionYN의 값을 Y로 설정, 프로토콜 저장때 질문 여부 결정
  19. var appNo_SMMMO00110 = ""; //프로토콜번호(CPG 적용번호)
  20. var etclnkspecValue_SMMMO00110 = ""; //항암프로토콜번호 | CP번호
  21. var prtlprcpstatus_SMMMO00110 = ""; //프로토콜저장상태(보통은 I, 프로토콜처방테이블에 등록된 데이터를 수정, 삭제할 때는 U/D)
  22. var isstimes_SMMMO00110 = ""; //발행시작회차 | 발행종료회차
  23. var isssteps_SMMMO00110 = ""; //cp일때 사용하는 발행시작스텝 | 발행종료스텝
  24. var stepArray_SMMMO00110 = ""; //cp일때 사용하는 스텝 array
  25. var prcpddArray_SMMMO00110 = "";
  26. var invalYN_SMMMO00110 = "N";
  27. var ErrExistYN_SMMMO00110 = "N";
  28. //var SubmitTF_SMMMO00110 = false; //fPrcpsave()에서의 TXMMP00803/4 저장 성공 여부
  29. var curSavePrcpFlag_SMMMO00110 = ""; //N:당일, T:미래
  30. var saveNum_SMMMO00110 = 0; //0:저장전, 1:당일처방저장완료, 2:미래처방저장완료
  31. /*------fPrcpSave()의 local 변수, 미래처방 저장 후 인식하기 위해 CP에서는 global 변수로 사용-------*/
  32. var prcpsaveyn_SMMMO00110 = "N";
  33. var ocrcalcscorcd_SMMMO00110 = ""; //OCR자동출력 수행 여부 (당일+미래저장 후 N->Y)
  34. var cpSaveKindFlag_SMMMO00110 = ""; //"" "N" "T"
  35. var cpTmpPrcpSaveYN_SMMMO00110 = "N"; //임시처방을 CP처방으로 대치하는지 여부
  36. /**
  37. * @group :
  38. * @ver
  39. : 2007.09
  40. * @by : 전지은
  41. * @type : function
  42. * @access : public
  43. * @desc : CP적용 후, 발행 가능한 처방들에 대해서 일괄저장(및 인증저장)을 한다
  44. * @param : flag "":입력 / "U":수정
  45. : prcpflag 처방구분 (2007.09.19 추가됨) ex:0(일반),6(CP),7(항암프로토콜)...
  46. : prtlFlag_SMMMO00110 (+) 프로토콜처방구분(2007.09.19 추가됨) ex:01,02,10,20
  47. : rtnpstn (+) return position
  48. * @return :
  49. * @---------------------------------------------------
  50. */
  51. function fBatSaveCpPrtlPrcp( flag, prcpflag, savePrtlFlag, rtnpstn ){
  52. var prcpTab = grp_biz.grp_prcp.imp_prcp.div_all.Tab_prcp; // 처방 탭
  53. var prcpMain = grp_biz.grp_prcp.imp_prcp; // ocs 화면
  54. if( flag == "U" ){
  55. prcpMain = this;
  56. }
  57. // 20200401 김현석, 적용일자 세팅, 20200310998
  58. //var today = utlf_getCurrentDate();
  59. var today = fGetAppdd();
  60. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag"); //model.getValue("/root/patflag/list/prcpgenrflag");
  61. var cpgIoFlag = ds_main_masterinfo_info.getColumn(0, "ioflagcd"); //model.getValue("/root/main/masterinfo/info/ioflagcd");
  62. var addFlag = "add_After"; //추가처방 저장 시, 당일 및 OCS에서 추가 시 addPrcp호출(X), 환자계획표에서 추가 시 addPrcp호출(O)
  63. var sCpBatchTime = lf_getHardCDList("Y", 599, 3); //배치 실행 시간 2018.01.25 엄영만
  64. if(utlf_isNull(sCpBatchTime)) {
  65. sCpBatchTime = "153000"; // 디폴트 6시 => 153000 으로 변경
  66. }
  67. //초기값 setting
  68. prtlFlag_SMMMO00110 = savePrtlFlag;
  69. questionYN_SMMMO00110 = "N";
  70. appNo_SMMMO00110 = ds_temp1_getdata.getColumn(0, "cpgappno"); //model.getValue("/root/temp1/getdata/cpgappno");
  71. //ErrExistYN_SMMMO00110 = "N";
  72. etclnkspecValue_SMMMO00110 = "0" + "|" + appNo_SMMMO00110;
  73. saveNum_SMMMO00110 = 0;
  74. cpSaveKindFlag_SMMMO00110 = flag; //cp 저장구분에 따라, '-'를 같이 처리할지 말지...
  75. var dcNode = null; //DC노드
  76. //적용 직전, 항암프로토콜(안티스) 진행중인지를 체크한다. (2008.09.30) (s)
  77. ds_send_reqdata.clear(); //model.removeNodeset ( "/root/send/reqdata" );
  78. // model.makeNode( "/root/send/reqdata" );
  79. // model.makeNode( "/root/temp1/rsltgetdata" );
  80. dsf_makeValue(ds_send_reqdata, "pid", "string", prcpMain.ds_paminfo.getColumn(0, "pid")); //model.makeValue("/root/send/reqdata/pid", model.getValue("/root/paminfo/list/pid"));
  81. dsf_makeValue(ds_send_reqdata, "cretno", "string", prcpMain.ds_paminfo.getColumn(0, "cretno")); //model.makeValue("/root/send/reqdata/cretno",model.getValue("/root/paminfo/list/cretno"));
  82. dsf_makeValue(ds_send_reqdata, "prcpgenrflag", "string", prcpgenrflag); //model.makeValue("/root/send/reqdata/prcpgenrflag",prcpgenrflag);
  83. if(prcpgenrflag == "O") {
  84. dsf_makeValue(ds_send_reqdata, "orddd", "string", prcpMain.ds_paminfo.getColumn(0, "orddd")); //model.makeValue("/root/send/reqdata/orddd", model.getValue("/root/paminfo/list/orddd"));
  85. } else {
  86. dsf_makeValue(ds_send_reqdata, "orddd", "string", prcpMain.ds_paminfo.getColumn(0, "indd")); //model.makeValue("/root/send/reqdata/orddd", model.getValue("/root/paminfo/list/indd"));
  87. }
  88. dsf_makeValue(ds_send_reqdata, "getanticncryn", "string", "Y"); //model.makeValue("/root/send/reqdata/getanticncryn", "Y"); //항암프로토콜 진행중인지 조회 여부
  89. var oParam = {};
  90. oParam.id = "TRMMP00807";
  91. oParam.service = "prcpbaseapp.CpMngt";
  92. oParam.method = "reqGePattValidity";
  93. oParam.inds = "req=ds_send_reqdata";
  94. oParam.outds = "ds_temp1_rsltgetdata=getdata ds_inptdata=inptdata";
  95. oParam.async = false;
  96. //oParam.callback = "cf_TRMMP00807";
  97. tranf_submit(oParam);
  98. if( !utlf_isNull(ds_temp1_rsltgetdata.getColumn(0, "cpgappno")) ){ // instance1.selectSingleNode("/root/temp1/rsltgetdata/getdata/cpgappno") != null
  99. if( ds_temp1_rsltgetdata.getColumn(0, "prtlflagcd") == "10" ){ // model.getValue("/root/temp1/rsltgetdata/getdata/prtlflagcd") == "10"
  100. sysf_messageBox( "항암프로토콜 진행중인 환자이므로 저장", "E001" );
  101. return false;
  102. }
  103. }
  104. ds_temp1_rsltgetdata.clearData(); //model.removeNodeSet ( "/root/temp1/rsltgetdata/getdata" );
  105. // (e)
  106. //[저장]버튼 (미완성처방 수정저장 할 경우, 삭제 데이터를 따로 담아간다)
  107. if( flag == "U" ){
  108. // var invalprcpObj = frmf_findPopup("SPMMP00200");
  109. // if( utlf_isNull(invalprcpObj) ) { // CPMAIN 미완성처방
  110. // invalprcpObj = grp_biz.swt_formatt.incompletion_tab.ivw_invalprcp; // 미완성처방 화면
  111. // } else { } // 팝업 미완성처방
  112. var invalprcpObj = this;
  113. dsf_createDs("ds_delPrcpList");
  114. invalprcpObj.ds_main_prcplist.filter("status == 'I' || status == 'U' || status == 'D'"); //instance1.selectNodes("/root/main/prcp/prcplist[status='I' or status='U' or status='D']"); //prcp->prcpsrch 변경 여부..
  115. ds_delPrcpList.copyData(invalprcpObj.ds_main_prcplist, true);
  116. var delHeader = "dstatus▦prtlprcpno";
  117. var delData = "";
  118. var delCnt = 0;
  119. for(var i = 0; i < ds_delPrcpList.rowcount; i++){
  120. //var node = delPrcpList.item(i);
  121. var prcpddNode = ds_delPrcpList.getColumn(i, "prcpdd"); //node.selectSingleNode("prcpdd");
  122. var prtlprcpnoNode = ds_delPrcpList.getColumn(i, "prtlprcpno"); //node.selectSingleNode("prtlprcpno");
  123. //2008.06.23
  124. var errtretflagNode = ds_delPrcpList.getColumn(i, "prtlprcpno"); //node.selectSingleNode("errtretflag");
  125. var valynNode = ds_delPrcpList.getColumn(i, "valyn"); //node.selectSingleNode("valyn");
  126. var saveStatusNode = ds_delPrcpList.getColumn(i, "status"); //node.selectSingleNode("status");
  127. if( saveStatusNode == "D" ){ //2008.07.04
  128. var statusText = "22";
  129. delCnt++;
  130. }else if( saveStatusNode == "U" ){
  131. //saveStatusNode = "I"; //model.setValue(saveStatusNode, "I");
  132. invalprcpObj.ds_main_prcplist.setColumn(i, "status", "I");
  133. var statusText = "23";
  134. delCnt++;
  135. }
  136. //2회 저장부터 prtlprcpnoNode 없어서 오류 발생
  137. if( !utlf_isNull(prtlprcpnoNode)){
  138. delData = delData + "▩" + statusText + "▦" + prtlprcpnoNode;
  139. }
  140. }
  141. invalprcpObj.ds_main_prcplist.filter("");
  142. if( delCnt > 0 ){
  143. dsf_setCSVToDs("ds_send_delprcplist", delHeader + delData + "▩"); //model.makeValue("/root/send/delprcplist", delHeader + delData + "▩");
  144. }
  145. // 확인필요
  146. invalprcpObj.ds_main_prcplist.filter("status == 'I'");
  147. dsf_copyDs(ds_main_prcpsrch_prcplist, invalprcpObj.ds_main_prcplist, "replace"); //copyNodeListType( "/root/main/prcpsrch", "/root/main/prcp/prcplist[status='I']", "replace", model, model );
  148. invalprcpObj.ds_main_prcplist.filter("");
  149. } else { //[적용]버튼
  150. var addPrcpNodeList = null;
  151. if( utlf_isNull(flag) ){
  152. if( prcpTab.tabindex == 1 ){ // ivw_prcp3.visible == true // 전 처방탭 활성화이면
  153. dcNode = prcpTab.tp_bfprcp.ds_prcpsrch_prcplist.getCaseCount("chkcol == 'D'"); // ivw_prcp3.instance1.selectSingleNode("/root/prcpsrch/prcplist[chkcol='D']");
  154. }
  155. var nodeList = null;
  156. //CP/CPG별 저장 대상이 다름 처리 (2008.12.06)
  157. if( cpgIoFlag == "O" ){
  158. nodeList = ds_main_steppath_info.getCaseCount("stepstat == '10' && prcpdd == '" + today + "' && savestatus == 'I'"); //instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10' and prcpdd='" + today + "' and savestatus='I']");
  159. } else {
  160. if( prcpgenrflag == "O" ){
  161. nodeList = ds_main_steppath_info.getCaseCount("stepstat == '10' && prcpdd == '" + today + "'"); //instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10' and prcpdd='" + today + "']");
  162. }else{
  163. nodeList = ds_main_steppath_info.getCaseCount("stepstat == '10' && savestatus == 'I'"); //instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10' and savestatus='I']");
  164. }
  165. }
  166. //var DetlNodeList = null;
  167. if( !utlf_isNull(grp_biz.ivw_detail.url) ) {
  168. dsf_createDs("ds_DetlNodeList");
  169. grp_biz.ivw_detail.ds_main_prcplist.filter("status == 'I' || status == 'U' || status == 'D'"); //ivw_detail.instance1.selectNodes("/root/main/prcp/prcplist[status='I' or status='U' or status='D']"); // (OCS에서 추가된) 추가처방
  170. ds_DetlNodeList.copyData(grp_biz.ivw_detail.ds_main_prcplist, true);
  171. grp_biz.ivw_detail.ds_main_prcplist.filter("");
  172. }
  173. var existPrcpNode = prcpMain.ds_main_prcplist.getCaseCount("status == 'I' || status == 'U' || status == 'D' || status == '-'"); //instance1.selectSingleNode("/root/main/prcp/prcplist[status='I' or status='U' or status='D' or status='-']");
  174. var existPrcpSrchNode = ds_main_prcpsrch_prcplist.getCaseCount("status == 'I' || status == 'U' || status == 'D'"); //instance1.selectSingleNode("/root/main/prcpsrch/prcplist[status='I' or status='U' or status='D']");
  175. // 20200401 김현석, 적용일자 세팅, 20200310998
  176. //var toDay = parseInt(utlf_getCurrentDate());
  177. //var nextDay = utlf_getCurrentDate().toDate().getAddDate(1,"D").getDateFormat();
  178. var toDay = parseInt(fGetAppdd());
  179. var nextDay = fGetAppdd().toDate().getAddDate(1,"D").getDateFormat();
  180. var initDay = parseInt(ds_init.getColumn(0, "prcpdd")); // model.getValue("/root/init/prcpdd")
  181. if( grp_biz.btn_detail_tab.tabindex == 0 ){
  182. //환자계획표 visible : prcp 인스턴스 대상
  183. if( nodeList <= 0 && ds_DetlNodeList.rowcount <= 0 && (dcNode == 0 || dcNode == null) ){
  184. stopSavePrcpYN_SMMMO00110 = "Y"; //refresh가 안 되도록, 리턴값을 Y
  185. sysf_messageBox( "저장할", "E013" );
  186. return false;
  187. }
  188. grp_biz.ivw_detail.ds_main_prcplist.filter("status != '' && status != 'S'"); //ivw_detail.model.removeNodeset("/root/main/prcp/prcplist[status='' or status='S']");
  189. dsf_createDs("ds_temp_prcplist");
  190. ds_temp_prcplist.copyData(grp_biz.ivw_detail.ds_main_prcplist, true);
  191. grp_biz.ivw_detail.ds_main_prcplist.filter("");
  192. grp_biz.ivw_detail.ds_main_prcplist.copyData(ds_temp_prcplist);
  193. addFlag = "add_Before";
  194. } else if ( grp_biz.btn_detail_tab.tabindex == 1 && existPrcpSrchNode == 0 ){ // grp_biz.grp_prcp.imp_prcp.visible == true
  195. //OCS visible : prcpsrch 인스턴스 대상 (prcpsrch=null이면, 최초저장의 경우임)
  196. //prcpsrch에 데이터가 없고, prcp에 데이터가 없고, diaginfo에 데이터가 없을 경우, return
  197. if( (prcpgenrflag != "O" && nodeList <= 0 && existPrcpNode == 0) ||
  198. (prcpgenrflag == "O" && nodeList <= 0 && existPrcpNode == 0 ) ) {
  199. if( (dcNode == 0 || dcNode == null) && prcpMain.ds_main_diagcdlist.getCaseCount("status != '-' && status != '' && status != 'S'") == 0 ){ // instance1.selectSingleNode("/root/main/diaginfo/diagcdlist[status!='-' and status!='' and status!='S']") == null
  200. stopSavePrcpYN_SMMMO00110 = "Y";
  201. sysf_messageBox( "저장할", "E013" );
  202. return false;
  203. }
  204. }
  205. addFlag = "add_After";
  206. }
  207. if( nodeList > 0 ){
  208. //스텝이 가지고 있는 set처방 목록을 조회한다(외래환자는 D0 처방만을 select, D0가 없다면 0건)
  209. if( frmf_getParameter("SPMMP00200_popupYN") != "Y" && cpTmpPrcpSaveYN_SMMMO00110 != "Y" ){ //약속처방 최초 1회만 조회(2008.10.14), D0처방은 처음부터 존재하므로 또 조회할 필요 없음(2009.02.03)
  210. fGetCurrentPrcpList("SEL");
  211. frmf_setParameter("SPMMP00200_popupYN", "Y"); //CP 처방 저장 시, 저장 후 오류있다면 오류팝업 호출(Y이면 팝업호출) (2008.09.30)
  212. //addPrcpSetValue()에 saveflaginfo 값 설정 부분이 잘못들어가있어 위치 변경.. (2008.12.09)
  213. //설정 시작 (s)
  214. dsf_makeValue(prcpMain.ds_save_saveflaginfo, "isstimes", "string", isstimes_SMMMO00110); // model.makeValue ( "/root/save/saveflaginfo/isstimes", isstimes_SMMMO00110 ); //발행시작회차, 종료회차
  215. dsf_makeValue(prcpMain.ds_save_saveflaginfo, "isssteps", "string", isssteps_SMMMO00110); // model.makeValue ( "/root/save/saveflaginfo/isssteps", isssteps_SMMMO00110 ); //발행시작스텝, 종료스텝
  216. dsf_makeValue(prcpMain.ds_save_saveflaginfo, "steparray", "string", stepArray_SMMMO00110); // model.makeValue ( "/root/save/saveflaginfo/steparray", stepArray_SMMMO00110 ); //저장하는 스텝 리스트 (|)
  217. dsf_makeValue(prcpMain.ds_save_saveflaginfo, "prcpddarray", "string", prcpddArray_SMMMO00110); // model.makeValue ( "/root/save/saveflaginfo/prcpddarray", prcpddArray_SMMMO00110 ); //저장하는 스텝 처방일 리스트 (|)
  218. // 설정 끝 (e)
  219. }
  220. }
  221. // ★ 2007.11.14 (만약, 환자계획표 창이 열려있다면, 수정된 노드를 함께 더한다)
  222. if( grp_biz.btn_detail_tab.tabindex == 0 ){ // grp_biz.ivw_detail.visible == true
  223. if( ds_DetlNodeList.rowcount > 0 ){
  224. //init/prcpdd 미래일자로 변경 (ivw_detail의 prcp는 저장 취소가 되어도 삭제되지 않으므로 항상 prcp의 첫번째 prcpdd를 set)
  225. var org_initprcpdd = ds_init.getColumn(0, "prcpdd"); //model.getValue("/root/init/prcpdd");
  226. var new_initprcpdd = grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.getColumn(0, "prcpdd"); //ivw_detail.instance1.selectSingleNode("/root/main/prcpsrch/prcplist[1]/prcpdd");
  227. if( new_initprcpdd != null ){
  228. if( !utlf_isNull(new_initprcpdd) && org_initprcpdd != new_initprcpdd ){
  229. prcpMain.ds_init.setColumn(0, "prcpdd", new_initprcpdd); //model.setValue( "/root/init/prcpdd", new_initprcpdd.text );
  230. prcpMain.fPrcpDdCheck();
  231. }
  232. }
  233. var delHeader = "dstatus▦prtlprcpno";
  234. var delData = "";
  235. var tempFlag = false;
  236. for(var i = 0; i < ds_DetlNodeList.rowcount; i++){
  237. //var node = DetlNodeList.item(i);
  238. var prcpddNode = ds_DetlNodeList.getColumn(i, "prcpdd"); // var prcpddNode = node.selectSingleNode("prcpdd");
  239. var prtlprcpnoNode = ds_DetlNodeList.getColumn(i, "prtlprcpno"); // var prtlprcpnoNode = node.selectSingleNode("prtlprcpno");
  240. var statusNode = ds_DetlNodeList.getColumn(i, "status"); // var statusNode = node.selectSingleNode("status");
  241. //새로 추가하는 미래처방은 프로토콜 처방테이블에서 삭제할 대상이 없음
  242. if( statusNode != "I" ){
  243. if(statusNode == "D"){
  244. var statusText = "22"; // row delete(prtlstat 22(삭제)로 update 처리)
  245. }else if(statusNode == "U"){
  246. //model.setValue(statusNode, "I"); // U -> I (기존 row는 삭제처리)
  247. if(prcpddNode == today){
  248. var statusText = "22"; // row status update
  249. }else{
  250. var statusText = "23"; // row remove(delete)
  251. }
  252. tempFlag = true;
  253. //model.setValue(statusNode, "I"); // status 값이 "U"이면 모두 "I"로 바꿈
  254. }
  255. delData = delData + "▩" + statusText + "▦" + prtlprcpnoNode;
  256. }
  257. }
  258. // status 값이 "U"이면 모두 "I"로 바꿈
  259. if( tempFlag == true ) {
  260. for(var i = 0; i < grp_biz.ivw_detail.ds_main_prcplist.rowcount; i++ ) {
  261. if( grp_biz.ivw_detail.ds_main_prcplist.getColumn(i, "status") == "U" ) {
  262. grp_biz.ivw_detail.ds_main_prcplist.setColumn(i, "status", "I");
  263. }
  264. }
  265. }
  266. //case 2. 환자계획표에서 추가/수정한 미래처방을 prcpsrch 에 add
  267. dsf_setCSVToDs("ds_send_delprcplist", delHeader + delData + "▩"); // model.makeValue("/root/send/delprcplist", delHeader + delData + "▩");
  268. //test(추가처방 저장취소-저장 시 *n건 저장되는 문제로 인한, addPrcp 전 prcp remove 처리)
  269. //2008.10.31 copy from.prcpsrch-prcpsrch -> prcp-prcp
  270. // 데이터셋 확인 필요
  271. grp_biz.ivw_detail.ds_main_prcplist.filter("status == 'I'");
  272. // 17.05.27, HMH, ds_main_prcplist -> prcpMain.ds_main_prcplist
  273. prcpMain.ds_main_prcplist.copyData(grp_biz.ivw_detail.ds_main_prcplist, true);
  274. grp_biz.ivw_detail.ds_main_prcplist.filter("");
  275. // end after
  276. ds_main_prcpsrch_prcplist.filter("status == 'I'"); //instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I']");
  277. for(var i = 0; i < ds_main_prcpsrch_prcplist.rowcount; i++){
  278. var prtlprcpnoNode = ds_main_prcpsrch_prcplist.getColumn(i, "prtlprcpno"); //node.selectSingleNode("prtlprcpno");
  279. var prcpnoNode = ds_main_prcpsrch_prcplist.getColumn(i, "prcpno"); //node.selectSingleNode("prcpno");
  280. var prcphistnoNode = ds_main_prcpsrch_prcplist.getColumn(i, "prcphistno"); //node.selectSingleNode("prcphistno");
  281. var certprcpnoNode = ds_main_prcpsrch_prcplist.getColumn(i, "certprcpno"); //node.selectSingleNode("certprcpno");
  282. var prtlstatNode = ds_main_prcpsrch_prcplist.getColumn(i, "prtlstat"); //node.selectSingleNode("prtlstat");
  283. var timesNode = ds_main_prcpsrch_prcplist.getColumn(i, "times"); //node.selectSingleNode("times");
  284. var stepnoNode = ds_main_prcpsrch_prcplist.getColumn(i, "stepno"); //node.selectSingleNode("stepno");
  285. var stepnmNode = ds_main_prcpsrch_prcplist.getColumn(i, "stepnm"); //node.selectSingleNode("stepnm");
  286. if( !utlf_isNull(prtlprcpnoNode) && flag != "U" ) {
  287. ds_main_prcpsrch_prcplist.setColumn(i, "prtlprcpno", ""); //model.removenode(prtlprcpnoNode);
  288. } //조건 add(2008.11.28)
  289. if( !utlf_isNull(prcpnoNode) ) { ds_main_prcpsrch_prcplist.setColumn(i, "prcpno", ""); }
  290. if( !utlf_isNull(prcphistnoNode) ) { ds_main_prcpsrch_prcplist.setColumn(i, "prcphistno", ""); }
  291. if( !utlf_isNull(certprcpnoNode) ) { ds_main_prcpsrch_prcplist.setColumn(i, "certprcpno", ""); }
  292. if( !utlf_isNull(prtlstatNode) ) { ds_main_prcpsrch_prcplist.setColumn(i, "prtlstat", ""); }
  293. if( !utlf_isNull(timesNode) ) { ds_main_prcpsrch_prcplist.setColumn(i, "times", ""); }
  294. if( !utlf_isNull(stepnoNode) ) { ds_main_prcpsrch_prcplist.setColumn(i, "stepno", ""); }
  295. if( !utlf_isNull(stepnmNode) ) { ds_main_prcpsrch_prcplist.setColumn(i, "stepnm", ""); }
  296. }
  297. ds_main_prcpsrch_prcplist.filter("");
  298. }
  299. }
  300. }
  301. flag = "I";
  302. }
  303. // 20190827 김현석, 수술예약번호 세팅
  304. var operation = sysf_getGlobalVariable("operation");
  305. var tmpOprsrvno = "";
  306. if(!utlf_isNull(operation))
  307. {
  308. dsf_setCSVToDs ( "ds_tmp_operation", operation);
  309. tmpOprsrvno = ds_tmp_operation.getColumn(0, "oprsrvno");
  310. for(var i = 0; i < ds_main_prcpsrch_prcplist.rowcount; i++)
  311. {
  312. ds_main_prcpsrch_prcplist.setColumn(i, "oprsrvno", tmpOprsrvno);
  313. }
  314. }
  315. trace("\nprcpMain:" + prcpMain.name + ", prcpMain.ds_save_saveflaginfo : " + prcpMain.ds_save_saveflaginfo);
  316. // 처방화면의 데이터셋으로 보임 -> ds_save_saveflaginfo
  317. dsf_makeValue(prcpMain.ds_save_saveflaginfo, "prtlflag", "string", prtlFlag_SMMMO00110 ); //프로토콜구분
  318. dsf_makeValue(prcpMain.ds_save_saveflaginfo, "cpgappno", "string", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  319. dsf_makeValue(prcpMain.ds_save_saveflaginfo, "prtlprcpstatus", "string", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  320. // TF의 saveDiagNode, savePrcpSrchNode, savePrcpNode는 해당노드값이 없더라고 XPATH 경로만의 노드만 있으면 NULL이 아님
  321. var saveDiagNode = prcpMain.ds_main_diagcdlist.findRowExpr("status != '-' && status != 'S'"); //instance1.selectSingleNode( "/root/main/diaginfo/diagcdlist[status!='-' and status!='S']");
  322. var savePrcpSrchNode = ds_main_prcpsrch_prcplist.findRowExpr("status == 'I' || status == 'U'"); //instance1.selectSingleNode("/root/main/prcpsrch/prcplist[status='I' or status='U']");
  323. var delprcplistNode = ds_send_delprcplist; //instance1.selectSingleNode("/root/send/delprcplist");
  324. var saveinvaliprcplistNode = ds_result_saveinvaliprcplist; //instance1.selectSingleNode("/root/result/saveinvaliprcplist"); 확인 필요
  325. //var addprcpNode = ds_temp1_addprcp_prcplist; //instance1.selectSingleNode("/root/temp1/addprcp/prcplist"); 확인 필요 데이터셋 껍데기만 만들어 놓음 안쓰는 듯
  326. //add node
  327. if( grp_biz.btn_detail_tab.tabindex == 0 ) {
  328. var savePrcpNode = grp_biz.ivw_detail.ds_main_prcplist.findRowExpr("status == 'I' || ( status == '-' && prcphistcd == 'T')"); // instance1.selectSingleNode("/root/main/prcp/prcplist[status='I' or (status='-' and prcphistcd='T')]");
  329. } else {
  330. var savePrcpNode = prcpMain.ds_main_prcplist.findRowExpr("status == 'I' || ( status == '-' && prcphistcd == 'T')"); // instance1.selectSingleNode("/root/main/prcp/prcplist[status='I' or (status='-' and prcphistcd='T')]");
  331. }
  332. // temp case 1
  333. // dsf_createDs("ds_savePrcpNode");
  334. dsf_createDs("ds_srcDs"); // 15.12.23
  335. //alert("dcNode : " + dcNode + " savePrcpNode : " + savePrcpNode + " savePrcpSrchNode : " + savePrcpSrchNode + " delprcplistNode.rowcount : " + delprcplistNode.rowcount + " saveinvaliprcplistNode.rowcount : " + saveinvaliprcplistNode.rowcount);
  336. // TF의 savePrcpNode는 selectSingleNode로 노드의 값이 없어도 xpath만 존재하면 null 반환하지 않는다
  337. // XP에서는 변수에 담을 때 NULL이면 이미 에러가 남
  338. if( (dcNode == 0 || dcNode == null) && savePrcpNode == -1 && savePrcpSrchNode == -1 && delprcplistNode.rowcount > 0 && saveinvaliprcplistNode.rowcount == 0 ){
  339. // if( dcNode == null && savePrcpNode == null && savePrcpSrchNode == null && delprcplistNode != null && saveinvaliprcplistNode == null ){
  340. //예외1 : 삭제만 수행한다면, TRMMP00803/TRMMP00804 수행하지 않고, 바로 TXMMP00806만 수행한다 (2008.06.23)
  341. //인증서를 띄워 인증저장을 해야하지만, 인증 데이터 구조를 만들 수 없음...
  342. //alert("예외1 ok");
  343. if( sysf_messageBox ( "", "Q002" ) == 7 ){
  344. stopSavePrcpYN_SMMMO00110 = "Y";
  345. return false;
  346. } else {
  347. var oParam = {};
  348. oParam.id = "TXMMP00806";
  349. oParam.service = "prcpmngtapp.CPPrcpMngt";
  350. oParam.method = "reqDelPrtlPrcp";
  351. oParam.inds = "delprcplist=ds_send_delprcplist";
  352. oParam.async = false;
  353. oParam.callback = "cf_TXMMP00806";
  354. tranf_submit(oParam);
  355. if(arErrorCode.pop("TXMMP00806") < 0) {
  356. stopSavePrcpYN_SMMMO00110 = "Y";
  357. return false;
  358. } else {
  359. stopSavePrcpYN_SMMMO00110 = "N";
  360. return true;
  361. }
  362. }
  363. } else if( dcNode > 0 && savePrcpNode == -1 && savePrcpSrchNode == -1 && delprcplistNode.rowcount == 0 && saveinvaliprcplistNode.rowcount == 0 ){
  364. //예외2 : DC처방만 저장할 경우, DC처방저장만 수행
  365. //alert("예외2");
  366. var prePrcpDD = prcpTab.tp_bfprcp.ds_init.getColumn(0, "bfprcpdd"); //ivw_prcp3.model.getValue("/root/init/bfprcpdd");
  367. prcpMain.ds_init.setColumn(0, "prcpdd", prePrcpDD); //model.setValue( "/root/init/prcpdd", prePrcpDD );
  368. ds_srcDs.copyData(prcpMain.ds_main_prcplist);
  369. prcpMain.fPrcpSave( "0", "0", "ds_srcDs", "N" ); // 확인 필요
  370. if( prcpMain.SubmitTF_SMMMO00110 == false ){
  371. //당일 처방저장 실패, refresh 안함.
  372. stopSavePrcpYN_SMMMO00110 = "Y";
  373. return false;
  374. }else{
  375. stopSavePrcpYN_SMMMO00110 = "N";
  376. return true;
  377. }
  378. } else if( (dcNode == 0 || dcNode == null) && savePrcpNode == -1 && savePrcpSrchNode == -1 && delprcplistNode.rowcount == 0 && saveinvaliprcplistNode.rowcount > 0 ){
  379. //예외3 : 저장 할 처방은 없지만, 미완성 처방만 존재하는 경우
  380. // alert("예외3");
  381. if( sysf_messageBox ( "", "Q002" ) == 7 ){
  382. stopSavePrcpYN_SMMMO00110 = "Y";
  383. return false;
  384. }else{
  385. fSetSavrPrcpInfo(); //저장시 필요한 데이터를 임의로 구성함
  386. var oParam = {};
  387. oParam.id = "TXMMP00806";
  388. oParam.service = "prcpmngtapp.CPPrcpMngt";
  389. oParam.method = "reqDelPrtlPrcp";
  390. oParam.inds = "delprcplist=ds_send_delprcplist";
  391. oParam.async = false;
  392. oParam.callback = "cf_TXMMP00806";
  393. tranf_submit(oParam);
  394. }
  395. }
  396. if( saveDiagNode != -1 && (dcNode == 0 || dcNode == null) && savePrcpNode == -1 && savePrcpSrchNode == -1 && delprcplistNode.rowcount == 0 && saveinvaliprcplistNode.rowcount == 0 ){
  397. //예외4 : 저장할 처방데이터는 없고, 진단데이터만 존재할 경우, 진단만 저장(당일처방과 동일한 func 호출). 2008.02.13
  398. //alert("예외4 ok");
  399. ds_srcDs.copyData(prcpMain.ds_main_prcplist);
  400. if( !prcpMain.fPrcpSave( "0", "0", "ds_srcDs", "N" ) ){
  401. //당일 처방저장 실패, refresh 안함.
  402. stopSavePrcpYN_SMMMO00110 = "Y";
  403. return false;
  404. }else{
  405. if( prcpMain.SubmitTF_SMMMO00110 == false ){
  406. //당일 처방저장 실패, refresh 안함.
  407. stopSavePrcpYN_SMMMO00110 = "Y";
  408. return false;
  409. }else{
  410. stopSavePrcpYN_SMMMO00110 = "N";
  411. var diagNode = prcpMain.ds_main_diagcdlist.getCaseCount("status == 'I' || status == 'U' || status == 'D'"); //instance1.selectSingleNode( "/root/main/diaginfo/diagcdlist" + "[status = 'I' or status = 'U' or status = 'D']");
  412. dsf_createDs("ds_diagList");
  413. prcpMain.ds_main_diagcdlist.filter("status == 'I' || status == 'U' || status == 'D'"); //instance1.selectNodes( "/root/main/diaginfo/diagcdlist" + "[status = 'I' or status = 'U' or status = 'D']");
  414. ds_diagList.copyData(prcpMain.ds_main_diagcdlist, true);
  415. if( ds_diagList.rowcount > 0 ){
  416. for(var i = 0; i < diagList.rowcount; i++){
  417. //var node = diagList.item(i);
  418. // 확인 필요
  419. var statusNode = ds_diagList.getColumn(i, "status"); //node.selectSingleNode("status");
  420. statusNode = "-"; //model.setValue(statusNode, "-");
  421. }
  422. }
  423. prcpMain.ds_main_diagcdlist.filter("");
  424. return true;
  425. }
  426. }
  427. }
  428. // model.removeNodeset("/root/send/srchcond");
  429. // model.removeNodeset("/root/send/steplist");
  430. // model.makeNode("/root/send/srchcond");
  431. // model.makeNode("/root/send/steplist");
  432. ds_send_srchcond.clearData();
  433. ds_send_steplist.clearData();
  434. // 인스턴스명 중복을 피하기 위해, reqdata 삭제
  435. ds_send_savedata.clearData();
  436. ds_send_reqdata.clearData();
  437. dsf_deleteColumn(prcpMain.ds_save_saveflaginfo, "cpsaveflag"); //저장 전, cp저장구분 노드 삭제
  438. //2008.10.07
  439. if( flag != "U" ){
  440. //20180417 이돈희 : CP 처방(2일차 이후 부터 첫 시작) 후 당일자 처방시 아래 값이기 때문에 CP 원처방 저장 로직을 타는 현상 발생으로 아래 사항 추가
  441. // ds_main_steppath_info.getCaseCount("stepstat == '30' && prcpdd == '" + today + "'") < 1
  442. // 1일차 stepstat = 10, prcpdd 20180417
  443. // 2일차 stepstat = 30, prcpdd 20180417 ....
  444. if( ds_main_steppath_info.getCaseCount("stepstat == '30' && prcpdd == '" + today + "'") < 1
  445. && ds_main_steppath_info.getCaseCount("stepstat == '10' && prcpdd == '" + today + "'") > 0 ){ // instance1.selectSingleNode("/root/main/steppath/info" + "[stepstat = '10' and prcpdd='" + today + "']") != null
  446. //1. CP 원처방 저장
  447. //alert("cp 원처방");
  448. var todayPrcpNode = ds_main_prcpsrch_prcplist.getCaseCount("prcpdd == '" + today + "' && status == 'I'"); //instance1.selectSingleNode("/root/main/prcpsrch/prcplist" + "[prcpdd='" + today + "' and status='I']"); //2008.08.30 I 추가
  449. if(cpTmpPrcpSaveYN_SMMMO00110 == "Y"){ //2009.03.10
  450. if( todayPrcpNode == 0 ) {
  451. prcpMain.ds_main_prcplist.filter("status == '-' || status == 'I'");
  452. ds_main_prcpsrch_prcplist.copyData(prcpMain.ds_main_prcplist, true); //copyNodeListType("/root/main/prcpsrch", "/root/main/prcp/prcplist[status='-' or status='I']", "replace", model, model);
  453. prcpMain.ds_main_prcplist.filter("");
  454. }
  455. var todayPrcpNode = prcpMain.ds_main_prcplist.getCaseCount("status == 'I'"); //instance1.selectSingleNode("/root/main/prcp/prcplist" + "[status='I']");
  456. }
  457. }else{
  458. //2. 추가처방 저장 시
  459. ds_main_prcpsrch_prcplist.clearData(); // 16.05.13
  460. if( prcpMain.ds_init.getColumn(0, "prcpdd") == today ){
  461. var todayPrcpNode = prcpMain.ds_main_prcplist.getCaseCount("status == 'I' || staus == '-'"); //instance1.selectSingleNode("/root/main/prcp/prcplist" + "[status='I' or staus='-']"); //2008.08.30 I 추가
  462. }else{
  463. var todayPrcpNode = 0;
  464. }
  465. }
  466. } else {
  467. var todayPrcpNode = ds_main_prcpsrch_prcplist.getCaseCount("prcpdd == '" + today + "' && (status == 'I' || status == '-')"); //instance1.selectSingleNode("/root/main/prcpsrch/prcplist" + "[prcpdd='" + today + "' and (status='I' or status='-')]"); //2008.08.30 I 추가
  468. }
  469. //당일------------->
  470. var appScopMode = ds_main.getColumn(0, "appscopmode"); //model.getValue("/root/main/appscopmode"); //CPG인 경우, CPG스텝/CP스텝 적용 모드를 구분함 (2010.06.26)
  471. //alert("당일-------------> appScopMode : " + appScopMode); // appScopMode = G CP
  472. //alert("당일-------------> todayPrcpNode : " + todayPrcpNode);
  473. if( todayPrcpNode > 0 ){
  474. /* [미완성1:수술처방(당일)] 처방수술처방은 당일, 미래 상관 없이 무조건 미완성처방으로 저장 */
  475. dsf_createDs("ds_opNodeList");
  476. ds_main_prcpsrch_prcplist.filter("status == 'I' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd == '" + today + "' && anstcnfmneedyn != 'N'"); //instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
  477. ds_opNodeList.copyData(ds_main_prcpsrch_prcplist, true);
  478. if( ds_opNodeList.rowcount > 0 && (cpgflagcd == "01" || (flag != "U" && cpgflagcd == "02" && appScopMode == "W")) ){
  479. //var opCSV = getNodeListCSV(opNodeList);
  480. fInvalPrcpTret(1, flag); //미완성처방(inval)으로 수동으로 변경
  481. }
  482. ds_main_prcpsrch_prcplist.filter("");
  483. /* [미완성4:(당일)] 1 or 2 day cp 퇴원예고 없이 진행한 경우*/
  484. var dschdclrtyn = appf_getPatientInfoDetail("dschdclrtyn");
  485. if( dschdclrtyn != "Y" ) {
  486. var dschNodeList = ds_main_prcpsrch_prcplist.getCaseCount("status == 'I' && (prcpkindcd == '60' || prcpkindcd == '70') && prcpdd == '" + today + "'"); //instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and (prcpkindcd = '60' or prcpkindcd = '70') and prcpdd='" + today + "']");
  487. if( dschNodeList > 0 && (cpgflagcd == "01" || (flag != "U" && cpgflagcd == "02" && appScopMode == "W")) ){
  488. fInvalPrcpTret(4, flag); //미완성처방(inval)으로 수동으로 변경
  489. }
  490. }
  491. if( flag != "U" ){
  492. //20180417 이돈희 : CP 처방(2일차 이후 부터 첫 시작) 후 당일자 처방시 아래 값이기 때문에 CP 원처방 저장 로직을 타는 현상 발생으로 아래 사항 추가
  493. // ds_main_steppath_info.getCaseCount("stepstat == '30' && prcpdd == '" + today + "'") < 1
  494. // 1일차 stepstat = 10, prcpdd 20180417
  495. // 2일차 stepstat = 30, prcpdd 20180417 ....
  496. if( ds_main_steppath_info.getCaseCount("stepstat == '30' && prcpdd == '" + today + "'") < 1
  497. && ds_main_steppath_info.getCaseCount("stepstat == '10' && prcpdd == '" + today + "'") > 0
  498. && utlf_isNull(curSavePrcpFlag_SMMMO00110) ){ //최초 1회만 addPrcp instance1.selectSingleNode("/root/main/steppath/info" + "[stepstat = '10' and prcpdd='" + today + "']") != null
  499. if( cpTmpPrcpSaveYN_SMMMO00110 != "Y" ){
  500. curSavePrcpFlag_SMMMO00110 = "N";
  501. //prcpsrch -> prcp 인스턴스로 복사
  502. ds_main_prcpsrch_prcplist.filter("status != 'S'");
  503. ds_tempPrcpsrch.copyData(ds_main_prcpsrch_prcplist, true);
  504. ds_main_prcpsrch_prcplist.filter("");
  505. dsf_copyDs(prcpMain.ds_tempPrcpsrch, ds_tempPrcpsrch, "replace");
  506. prcpMain.lf_addPrcp("import", "ds_tempPrcpsrch", "ds_main_prcplist", "Y", "prcpdd", today, grp_biz.swt_formatt.att_tab.grd_formlist, "N", "05");
  507. //addPrcp("import", "/root/main/prcpsrch/prcplist[status!='S']", "/root/main/prcp", "Y", "prcpdd", today, grd_formlist, "N", "05");
  508. }
  509. }
  510. }
  511. /* addPrcp 이후, prcp 노드리스트가 구성되었다면, 노드리스트를 재정비한다. */
  512. //2008.10.07
  513. if( flag != "U" ){
  514. var prcpSrchNodeList = ds_main_prcpsrch_prcplist.getCaseCount("prcpdd == '" + today + "' && (status == 'I' || status == '-')"); //instance1.selectNodes("/root/main/prcpsrch/prcplist[prcpdd='" + today + "' and (status='I' or status='-')]"); //2008.08.29 추가조건
  515. }else{
  516. var prcpSrchNodeList = ds_main_prcpsrch_prcplist.getCaseCount("prcpdd == '" + today + "' && status == 'I'"); //instance1.selectNodes("/root/main/prcpsrch/prcplist[prcpdd='" + today + "' and status='I']"); //2008.08.29 추가조건
  517. }
  518. //prcpMain.fDirecPrcpFlag = true;
  519. var prcpNodeList = prcpMain.ds_main_prcplist;
  520. var prcpNodeListCnt = prcpNodeList.rowcount; //prcpNodeList.length;
  521. var groupFlag = "";
  522. var groupInclprcpno = "0";
  523. var groupHsctlnkno = "0";
  524. var groupEtclnkspecNode = "-";
  525. var groupEtclnkspec = ""; // 15.12.22 추가
  526. var groupPrcpkindcd = "10";
  527. var srchRow = 0;
  528. var valynTxt = "";
  529. // warning 잡기 위해 s
  530. if( utlf_isNull(prcpNodeList.getColumnInfo("stepno")) ) prcpNodeList.addColumn("stepno", "string");
  531. if( utlf_isNull(prcpNodeList.getColumnInfo("stepnm")) ) prcpNodeList.addColumn("stepnm", "string");
  532. if( utlf_isNull(prcpNodeList.getColumnInfo("setno")) ) prcpNodeList.addColumn("setno", "string");
  533. if( utlf_isNull(prcpNodeList.getColumnInfo("settypecd")) ) prcpNodeList.addColumn("settypecd", "string");
  534. if( utlf_isNull(prcpNodeList.getColumnInfo("incpltnresn")) ) prcpNodeList.addColumn("incpltnresn", "string");
  535. if( utlf_isNull(prcpNodeList.getColumnInfo("prtlprcpno")) ) prcpNodeList.addColumn("prtlprcpno", "string");
  536. if( utlf_isNull(prcpNodeList.getColumnInfo("orddd")) ) prcpNodeList.addColumn("orddd", "string");
  537. if( utlf_isNull(prcpNodeList.getColumnInfo("anstcnfmneedyn")) ) prcpNodeList.addColumn("anstcnfmneedyn", "string");
  538. if( utlf_isNull(prcpNodeList.getColumnInfo("valyn")) ) prcpNodeList.addColumn("valyn", "string");
  539. // warning 잡기 위해 e
  540. for(var i = 0; i < prcpNodeListCnt; i++){
  541. //var node = prcpNodeList.fitem(i);
  542. var statusNode = prcpNodeList.getColumn(i, "status"); //node.selectSingleNode("status");
  543. var stepnoNode = prcpNodeList.getColumn(i, "stepno"); //node.selectSingleNode("stepno");
  544. var stepnmNode = prcpNodeList.getColumn(i, "stepnm"); //node.selectSingleNode("stepnm");
  545. var setnoNode = prcpNodeList.getColumn(i, "setno"); //node.selectSingleNode("setno");
  546. var settypecdNode = prcpNodeList.getColumn(i, "settypecd"); //node.selectSingleNode("settypecd");
  547. var prcpddNode = prcpNodeList.getColumn(i, "prcpdd"); //node.selectSingleNode("prcpdd");
  548. var incpltnresnNode = prcpNodeList.getColumn(i, "incpltnresn"); //node.selectSingleNode("incpltnresn");
  549. var prtlprcpnoNode = prcpNodeList.getColumn(i, "prtlprcpno"); //node.selectSingleNode("prtlprcpno");
  550. var ordddNode = prcpNodeList.getColumn(i, "orddd"); //node.selectSingleNode("orddd");
  551. var groupFlag = prcpNodeList.getColumn(i, "grupsnglflag"); //node.selectSingleNode("grupsnglflag");
  552. var inclprcpnoNode = prcpNodeList.getColumn(i, "inclprcpno"); //node.selectSingleNode("inclprcpno"); //자코드의 MSET 모코드 연결번호
  553. var hsctlnknoNode = prcpNodeList.getColumn(i, "hsctlnkno"); //node.selectSingleNode("hsctlnkno"); //자코드의 BMT지시처방 모코드 연결번호
  554. var prcpkindcdNode = prcpNodeList.getColumn(i, "prcpkindcd"); //node.selectSingleNode("prcpkindcd");
  555. var prcpinptflagNode = prcpNodeList.getColumn(i, "prcpinptflag"); //node.selectSingleNode("prcpinptflag");
  556. var etclnkspecNode = prcpNodeList.getColumn(i, "etclnkspec"); //node.selectSingleNode("etclnkspec");
  557. var prcpclscdNode = prcpNodeList.getColumn(i, "prcpclscd"); //node.selectSingleNode("prcpclscd");
  558. var oprsrvnoNode = prcpNodeList.getColumn(i, "oprsrvno"); //node.selectSingleNode("oprsrvno");
  559. var anstcnfmneedynNode = prcpNodeList.getColumn(i, "anstcnfmneedyn"); //node.selectSingleNode("anstcnfmneedyn");
  560. var valynNode = prcpNodeList.getColumn(i, "valyn"); //node.selectSingleNode("valyn");
  561. if( !utlf_isNull(valynNode) ) var valynTxt = valynNode;
  562. var prcphopeddNode = prcpNodeList.getColumn(i, "prcphopedd"); //node.selectSingleNode("prcphopedd");
  563. if( !utlf_isNull(prcphopeddNode) ) var prcphopeddTxt = prcphopeddNode;
  564. if( (!utlf_isNull(inclprcpnoNode) || !utlf_isNull(hsctlnknoNode)) && !utlf_isNull(groupFlag) ){
  565. var ininclprcpnoText = inclprcpnoNode;
  566. var hsctlnknoText = hsctlnknoNode;
  567. if( utlf_isNull(ininclprcpnoText) ){
  568. ininclprcpnoText = "0";
  569. }
  570. if( utlf_isNull(hsctlnknoText) ){
  571. hsctlnknoText = "0";
  572. }
  573. if( parseInt(ininclprcpnoText) > 0 || parseInt(hsctlnknoText) > 0 ){
  574. //모코드가 M/J이면서, CP처방이면,
  575. // BMT지시처방은 hsctlnkno 로 처리
  576. if( groupFlag == "M" && prcpinptflagNode == "05" ){
  577. if( prcpclscdNode == "H2" && oprsrvnoNode == "0" && valynTxt != "완성" )break;
  578. if( dschdclrtyn != "Y" && (prcpkindcdNode == "60" || prcpkindcdNode == "70") )break;
  579. groupInclprcpno = inclprcpnoNode;
  580. groupEtclnkspec = etclnkspecNode;
  581. groupPrcpkindcd = prcpkindcdNode;
  582. groupHsctlnkno = "0";
  583. } else if( groupFlag == "J" && prcpinptflagNode == "05" ){
  584. if( prcpclscdNode == "H2" && oprsrvnoNode == "0" && valynTxt != "완성" )break;
  585. if( dschdclrtyn != "Y" && (prcpkindcdNode == "60" || prcpkindcdNode == "70") )break;
  586. groupHsctlnkno = hsctlnknoNode;
  587. groupEtclnkspec = etclnkspecNode;
  588. groupInclprcpno = "0";
  589. } else if(groupFlag == "S" && groupInclprcpno != "0"){
  590. //자코드이면, cp처방으로 변환한다.
  591. if(groupInclprcpno == inclprcpnoNode){
  592. prcpinptflagNode = "05"; //model.setValue(prcpinptflagNode, "05");
  593. etclnkspecNode = groupEtclnkspec; //model.setValue(etclnkspecNode, groupEtclnkspec);
  594. prcpkindcdNode = groupPrcpkindcd; //model.setValue(prcpkindcdNode, groupPrcpkindcd); //처방종류가 사라지므로, 강제 셋팅
  595. }
  596. } else if(groupFlag == "S" && groupHsctlnkno != "0"){
  597. //자코드이면, cp처방으로 변환한다.
  598. if(groupHsctlnkno == hsctlnknoNode){
  599. prcpinptflagNode = "05"; //model.setValue(prcpinptflagNode, "05");
  600. etclnkspecNode = groupEtclnkspec; //model.setValue(etclnkspecNode, groupEtclnkspec);
  601. }
  602. }
  603. }
  604. }
  605. /* 저장할 prcp 노드리스트를 동일한 노드셋 형테로 만들기 위해, 필요없는 노드들을 삭제한다. */
  606. if( !utlf_isNull(stepnoNode) ) {
  607. prcpNodeList.setColumn(i, "stepno", ""); //model.removenode(stepnoNode);
  608. }
  609. if( !utlf_isNull(stepnmNode) ) {
  610. prcpNodeList.setColumn(i, "stepnmNode", ""); //model.removenode(stepnmNode);
  611. }
  612. if( !utlf_isNull(anstcnfmneedynNode) ) {
  613. prcpNodeList.setColumn(i, "anstcnfmneedyn", ""); //model.removenode(anstcnfmneedynNode);
  614. }
  615. if( flag != "U" ){
  616. //다시 삭제 처리 (2008.08.31)
  617. if( !utlf_isNull(prcpddNode) ){
  618. prcpNodeList.setColumn(i, "prcpdd", ""); //model.removenode(prcpddNode);
  619. }
  620. if( !utlf_isNull(incpltnresnNode) ){
  621. prcpNodeList.setColumn(i, "incpltnresn", ""); //model.removenode(incpltnresnNode);
  622. }
  623. }
  624. if( !utlf_isNull(ordddNode) ){
  625. prcpNodeList.setColumn(i, "orddd", ""); //model.removenode(ordddNode);
  626. }
  627. if( !utlf_isNull(prtlprcpnoNode) ){
  628. if(flag != "U") prcpNodeList.setColumn(i, "prtlprcpno", ""); //model.removenode(prtlprcpnoNode); //조건 add(2008.11.28)
  629. //미완성처방 그리드에서 당일미완성 수정할 경우, cp처방으로 간주되어야 함.
  630. prcpinptflagNode = "05"; //model.setValue(prcpinptflagNode, "05");
  631. etclnkspecNode = etclnkspecValue_SMMMO00110; //model.setValue(etclnkspecNode, etclnkspecValue_SMMMO00110);
  632. }
  633. if( statusNode != "-" && statusNode != "S" ){ //flag == "U" && 2009.03.10 제외
  634. if( groupFlag == "M" || groupFlag == "J" ){
  635. var vSrchRow = srchRow;
  636. groupFlagRow = srchRow;
  637. if( prcpclscdNode == "H2" && oprsrvnoNode == "0" && valynTxt != "완성" )break;
  638. if( dschdclrtyn != "Y" && (prcpkindcdNode == "60" || prcpkindcdNode == "70") )break;
  639. if( groupFlag == "M" && inclprcpnoNode != "0" )break;
  640. if( groupFlag == "J" && hsctlnknoNode != "0" )break;
  641. ds_temp1_addprcp_prcplist.clearData(); // ds_temp1_addprcp_prcplist 확인 필요 model.resetInstanceNode ( "/root/temp1/addprcp" );
  642. for(var j = prcpNodeListCnt; j > srchRow ; j--){
  643. var tempPrcp = dsf_getDsCSV(prcpMain.ds_main_prcplist, j);
  644. prcpMain.fAppendSaveNode( "ds_temp1_addprcp_prcplist", tempPrcp ); //fAppendSaveNode( "/root/temp1/addprcp", "/root/main/prcp/prcplist["+j+"]" );
  645. prcpMain.ds_main_prcplist.deleteRow(j); //model.removeNodeset("/root/main/prcp/prcplist["+j+"]");
  646. }
  647. // 확인 필요
  648. srchRow = fCheckCpPrcp("import", "ds_main_prcplist", "ds_main_prcplist", groupFlagRow, srchRow, "05" ); //fCheckCpPrcp("import", "/root/main/prcp/prcplist", "/root/main/prcp", groupFlagRow, srchRow, "05" );
  649. if( srchRow == 0 ){
  650. cnt++;
  651. srchRow = vSrchRow; //복사된 값이 없어 srchrow가 없으면 기존 srchrow로 다시 시작함
  652. }else{
  653. groupFlagRow = 0;
  654. prcpMain.ds_main_prcplist.deleteRow(srchRow); //model.removeNodeset("/root/main/prcp/prcplist[("+srchRow+")]");
  655. //grd_prcplist.refresh();
  656. //model.recalculate();
  657. --srchRow;
  658. i = srchRow-1;
  659. var addPrcpNodeList = ds_temp1_addprcp_prcplist; //instance1.selectNodes("/root/temp1/addprcp/prcplist");
  660. for(var j = addPrcpNodeList.rowcount - 1; j >= 0 ; j--){ // var j = addPrcpNodeList.rowcount; j >= 1 ; j--
  661. var statusTxt = ds_temp1_addprcp_prcplist.getColumn(j, "status"); //model.getValue("/root/temp1/addprcp/prcplist["+j+"]/status");
  662. var prcpnmTxt = ds_temp1_addprcp_prcplist.getColumn(j, "prcpcd"); //model.getValue("/root/temp1/addprcp/prcplist["+j+"]/prcpcd");
  663. var tempAddprcp = dsf_getDsCSV(ds_temp1_addprcp_prcplist, j);
  664. prcpMain.fAppendSaveNode( "ds_main_prcplist", tempAddprcp ); //fAppendSaveNode( "/root/main/prcp", "/root/temp1/addprcp/prcplist["+j+"]" );
  665. ds_temp1_addprcp_prcplist.deleteRow(j);
  666. }
  667. // grd_prcplist.refresh();
  668. // model.recalculate();
  669. prcpNodeList = prcpMain.ds_main_prcplist; //instance1.selectNodes("/root/main/prcp/prcplist");
  670. prcpNodeListCnt = prcpNodeList.rowcount; //prcpNodeList.length;
  671. }
  672. }else{
  673. groupFlagRow = 0;
  674. var iPrcpInptFlag = prcpMain.ds_main_prcplist.getColumn(srchRow, "prcpinptflag"); //model.getValue("/root/main/prcp/prcplist[" + srchRow + "]/prcpinptflag");
  675. prcpMain.lf_addPrcpSetValue("main", "ds_main_prcplist", srchRow, "05"); //addPrcpSetValue( "main", "/root/main/prcp/prcplist" , srchRow, "05");
  676. //★삭제 미래처방 존재할 경우, status가 I로 return 되기 때문에, 다시 'D"로 셋팅
  677. if( stsText == "D" ){
  678. prcpMain.ds_main_prcplist.setColumn(srchRow, "status", "D"); //model.setValue("/root/main/prcp/prcplist[" + srchRow + "]/status", "D");
  679. }else if( stsText == "-" ){
  680. prcpMain.ds_main_prcplist.setColumn(srchRow, "status", "-"); //model.setValue("/root/main/prcp/prcplist[" + srchRow + "]/status", "-");
  681. }
  682. }
  683. } //end if(flag == "U")
  684. //s 응급환자 admission, 정규, 외출외박 처방 불가 처리 (2008.12.30)
  685. if ( prcpkindcdNode == "00" || prcpkindcdNode == "10" || prcpkindcdNode == "50" && prcpgenrflag == "E" ) {
  686. //messageBox ( "응급환자는 Admission, 정규, 외출외박 처방을 등록하실 수", "I004" );
  687. prcpkindcdNode = "20"; //model.setValue(prcpkindcdNode, "20"); //추가처방으로 대신 냄.
  688. frmf_setParameter("CheckPrcpKind01_SMMMO00110", "Y");
  689. } else if( prcpMain.ds_initsrchprcp_prcpetccnts.getColumn(0, "admiprcpyn") != "Y" && prcpkindcdNode == "00" ){
  690. //messageBox ( "Admission 처방은 1회만", "I006" );
  691. prcpkindcdNode = "20"; //model.setValue(prcpkindcdNode, "20"); //추가처방으로 대신 냄.
  692. frmf_setParameter("CheckPrcpKind02_SMMMO00110", "Y");
  693. }//e
  694. //CPG+CP 에서 CP스텝의 prcphopeddNode(처방희망일자)는 해당날짜로 변경해줌 (2010.06.26)
  695. if( flag != "U" && cpgflagcd == "02" && appScopMode == "W" ){
  696. //prcpdd or stepno or setno+settypecd
  697. if(statusNode != "-" && statusNode != "S" && !utlf_isNull(setnoNode) && !utlf_isNUll(settypecdNode) ){ // && settypecdNode.text == "W"
  698. //model.getValue("/root/main/steppath/info[setno='"+setnoNode.text+"' and settypecd='"+settypecdNode.text+"']/orgprcpdd");
  699. var idx = ds_main_steppath_info.findRowExpr("setno == '" + setnoNode + "' && settypecd == '" + settypecdNode + "'");
  700. prcphopeddTxt = ds_main_steppath_info.getColumn(idx, "orgprcpdd");
  701. }
  702. }
  703. //처방 희망일자가 저절로 원복되는 문제 조치 (2010.06.26 JJE)
  704. prcphopeddNode = prcphopeddTxt; //model.setValue(prcphopeddNode, prcphopeddTxt);
  705. srchRow++;
  706. } //end for
  707. //prcpMain.fDirecPrcpFlag = false;
  708. ds_main.setColumn(0, "appscopmode", ""); //model.setValue("/root/main/appscopmode", ""); //최초만 prcphopedd를 default로 설정, 이후에는 변경한 대로 지정되도록 하기위함 (2010.06.26 JJE)
  709. frmf_clearParameter("CheckPrcpKind01_SMMMO00110");
  710. frmf_clearParameter("CheckPrcpKind02_SMMMO00110");
  711. ds_send_savedata.deleteColumn("master"); //model.removeNodeset("/root/send/savedata/master");
  712. /* 적용상태(appstat) 및 스텝상태(stepstat) 저장하기 위한 데이터 구성 */
  713. if( cpgflagcd == "01" && prcpgenrflag == "O"){
  714. dsf_makeValue(ds_send_srchcond, "srchcond", "string", "C"); //model.makeValue("/root/send/srchcond/srchcond" , "C");
  715. dsf_makeValue(ds_send_srchcond, "cpgappno", "int", ds_temp1_getdata.getColumn(0, "cpgappno")); //model.makeValue("/root/send/srchcond/cpgappno" , model.getValue("/root/temp1/getdata/cpgappno")); //2008.06.23 풀어줬음
  716. dsf_makeValue(ds_send_srchcond, "cpgno", "string", ds_main_masterinfo_info.getColumn(0, "cpgno")); //model.makeValue("/root/send/srchcond/cpgno" , model.getValue("/root/main/masterinfo/info/cpgno")); //2008.07.31 추가
  717. dsf_makeValue(ds_send_srchcond, "cpghistseq", "string", ds_main_masterinfo_info.getColumn(0, "cpghistseq")); //model.makeValue("/root/send/srchcond/cpghistseq", model.getValue("/root/main/masterinfo/info/cpghistseq")); //2008.07.31 추가
  718. dsf_makeValue(ds_send_srchcond, "cpgflagcd", "string", ds_main_masterinfo_info.getColumn(0, "cpgflagcd")); //model.makeValue("/root/send/srchcond/cpgflagcd" , model.getValue("/root/main/masterinfo/info/cpgflagcd")); //2009.02.16 추가
  719. if( cpgIoFlag == "O" ){
  720. //(1). 외래환자이면서 외래CP이면, 처방일이 당일인 스텝만 발행.
  721. ds_main_steppath_info.filter("prcpdd == '" + today + "' && stepstat == '10'"); //instance1.selectNodes("/root/main/steppath/info" + "[prcpdd='" + today + "' and stepstat='10']");
  722. dsf_makeValue(ds_send_srchcond, "appstat", "string", "10"); //model.makeValue("/root/send/srchcond/appstat", "10"); //진행중
  723. }else{
  724. //(2). 외래환자이면서, D0가 step 이 있다면, D0 스텝의 처방만을 실처방으로 저장하고, cp적용환자리스트에 appstat를 12(입원필요)로 바꾼다
  725. //외래환자이면서, 입원CP(D0)이면, D0 처방만 발행 가능하므로 D1부터 스텝정보를 저장할 필요가 없음.
  726. ds_main_steppath_info.filter("times == '0' && stepstat == '10'"); //var nodeList = instance1.selectNodes("/root/main/steppath/info" + "[times='0' and stepstat='10']");
  727. dsf_makeValue(ds_send_srchcond, "appstat", "string", "12"); //model.makeValue("/root/send/srchcond/appstat", "12"); //입원필요
  728. }
  729. ds_send_steplist.copyData(ds_main_steppath_info, true); // var stepCSV = getNodeListCSV(nodeList); // model.makeValue("/root/send/steplist", stepCSV);
  730. ds_main_steppath_info.filter("");
  731. }else{
  732. //(3). 입원 혹은 DSC환자 등의 경우, 하루치 당일 처방만 저장한 경우, 상태값을 바꿔주고, return
  733. dsf_makeValue(ds_send_srchcond, "srchcond", "string", "C"); //model.makeValue("/root/send/srchcond/srchcond", "C");
  734. dsf_makeValue(ds_send_srchcond, "cpgappno", "int", ds_temp1_getdata.getColumn(0, "cpgappno")); //model.makeValue("/root/send/srchcond/cpgappno", model.getValue("/root/temp1/getdata/cpgappno")); //2008.06.23 풀어줬음
  735. dsf_makeValue(ds_send_srchcond, "cpgno", "string", ds_main_masterinfo_info.getColumn(0, "cpgno")); //model.makeValue("/root/send/srchcond/cpgno" , model.getValue("/root/main/masterinfo/info/cpgno")); //2008.07.31 추가
  736. dsf_makeValue(ds_send_srchcond, "cpghistseq", "string", ds_main_masterinfo_info.getColumn(0, "cpghistseq")); //model.makeValue("/root/send/srchcond/cpghistseq", model.getValue("/root/main/masterinfo/info/cpghistseq")); //2008.07.31 추가
  737. dsf_makeValue(ds_send_srchcond, "cpgflagcd", "string", ds_main_masterinfo_info.getColumn(0, "cpgflagcd")); //model.makeValue("/root/send/srchcond/cpgflagcd" , model.getValue("/root/main/masterinfo/info/cpgflagcd")); //2009.02.16 추가
  738. if( cpgflagcd == "01" ){ //CP일때의 appstat 변경 기준
  739. var trgNodeLngth = ds_main_steppath_info.rowcount; //instance1.selectNodes("/root/main/steppath/info").length;
  740. var lastPrcpDD = ds_main_steppath_info.getColumn(trgNodeLngth-1, "prcpdd"); //model.getValue("/root/main/steppath/info[" + trgNodeLngth + "]/prcpdd");
  741. var nDate = new Date();
  742. var nxtDate = nDate.getAddDate(1, "D").getDateFormat();
  743. if( lastPrcpDD == today && ds_main_masterinfo_info.getColumn(0, "fcstinhospdayno") == "1" && parseInt(ds_temp1_getdata.getColumn(0, "appstat")) < 30 ){ // model.getValue("/root/temp1/getdata/appstat")
  744. //하루짜리 case 추가 (2009.05.25)
  745. dsf_makeValue(ds_send_srchcond, "appstat", "string", "30"); //model.makeValue("/root/send/srchcond/appstat", "30"); //하루짜리 CP이므로 30
  746. } else if( (lastPrcpDD == today || (lastPrcpDD == nxtDate && utlf_getCurrentTime() >= sCpBatchTime)) && ds_main_masterinfo_info.getColumn(0, "fcstinhospdayno") != "1" ){ // model.getValue("/root/main/masterinfo/info/fcstinhospdayno")
  747. //마지막스텝처방발행(30) 으로 보냈으나, 이전 상태 변경 없도록 null 보냄(2009.03.16)
  748. dsf_makeValue(ds_send_srchcond, "appstat", "string", ""); //model.makeValue("/root/send/srchcond/appstat", "");
  749. } else {
  750. //마지막 스텝 처방일 전일 마지막 스텝의 처방이 실처방 발행된 상태에서, 익일 추가처방 저장 시 appstat 30->10으로 바뀌지 않도록 처리 (2008.10.16 JJE)
  751. if( parseInt(ds_temp1_getdata.getColumn(0, "appstat") ) < 30 ){ // model.getValue("/root/temp1/getdata/appstat")
  752. dsf_makeValue(ds_send_srchcond, "appstat", "string", "10"); //model.makeValue("/root/send/srchcond/appstat", "10"); //진행중(10) 혹은 마지막스텝처방발행(30)
  753. }
  754. }
  755. }else { //CPG일때의 appstat 변경 기준
  756. var swimLineNo = ds_main_masterinfo_info.getColumn(0, "swimlineno"); //model.getValue("/root/main/masterinfo/info/swimlineno");
  757. if( ds_main_masterinfo_info.lookup("swimlineno", swimLineNo, "savestatus") == "I" ){ // model.getValue("/root/main/steppath/info[swimlineno = '" + swimLineNo + "']/savestatus") == "I"
  758. dsf_makeValue(ds_send_srchcond, "appstat", "string", "30"); //model.makeValue("/root/send/srchcond/appstat", "30"); //진행중(10) 혹은 마지막스텝처방발행(30)
  759. }else{
  760. //마지막 스텝 처방일 전일 마지막 스텝의 처방이 실처방 발행된 상태에서, 익일 추가처방 저장 시 appstat 30->10으로 바뀌지 않도록 처리 (2008.10.16 JJE)
  761. if( parseInt(ds_temp1_getdata.getColumn(0, "appstat")) < 30 ){
  762. dsf_makeValue(ds_send_srchcond, "appstat", "string", "10"); //model.makeValue("/root/send/srchcond/appstat", "10"); //진행중(10) 혹은 마지막스텝처방발행(30)
  763. }
  764. }
  765. }
  766. ds_main_steppath_info.filter("stepstat == '10' && (prcpdd == '" + today + "' && savestatus != '-')"); //var nodeList = instance1.selectNodes("/root/main/steppath/info" + "[stepstat='10' and (prcpdd='" + today + "' and savestatus!='-')]"); //2009.06.23 or->and
  767. ds_send_steplist.copyData(ds_main_steppath_info, true);
  768. ds_main_steppath_info.filter("");
  769. sysf_trace("+++++++++++++++++++++++++++++++++++++++++++++++++")
  770. sysf_trace("cms tt =>>>>>>>>" + ds_send_steplist.saveXML())
  771. //var stepCSV = getNodeListCSV(nodeList);
  772. //model.makeValue("/root/send/steplist", stepCSV);
  773. }
  774. /* 1. PRCPDD가 오늘 날짜인 처방들은 따로 실처방 저장을 먼저 한다 (처방 로직을 그대로 따른다) */
  775. prcpMain.SubmitTF_SMMMO00110 = false; //TXMMP00803, TXMMP00804 수행 결과 true 이면 SubmitTF_SMMMO00110 = true
  776. if( flag != "U" ){
  777. //20180417 이돈희 : CP 처방(2일차 이후 부터 첫 시작) 후 당일자 처방시 아래 값이기 때문에 CP 원처방 저장 로직을 타는 현상 발생으로
  778. // ds_main_steppath_info.getCaseCount("stepstat == '30' && prcpdd == '" + today + "'") < 1 추가
  779. // 1일차 stepstat = 10, prcpdd 20180417
  780. // 2일차 stepstat = 30, prcpdd 20180417 ....
  781. if( ds_main_steppath_info.getCaseCount("stepstat == '30' && prcpdd == '" + today + "'") < 1
  782. && ds_main_steppath_info.getCaseCount("stepstat == '10' && prcpdd == '" + today + "'") > 0 ){
  783. var prcpSrchNodeList = ds_main_prcpsrch_prcplist.getCaseCount("prcpdd == '" + today + "' && status == 'I' || status == '-'"); //instance1.selectNodes("/root/main/prcpsrch/prcplist[prcpdd='" + today + "' and status='I' or status='-']"); //2008.08.29 추가조건
  784. }else{
  785. var prcpSrchNodeList = prcpMain.ds_main_prcplist.getCaseCount("status == 'I' || status == '-'"); //instance1.selectSingleNode("/root/main/prcp/prcplist" + "[status='I' or status='-']");
  786. }
  787. }else{
  788. var prcpSrchNodeList = ds_main_prcpsrch_prcplist.getCaseCount("prcpdd == '" + today + "' && status == 'I'"); //instance1.selectNodes("/root/main/prcpsrch/prcplist[prcpdd='" + today + "' and status='I']"); //2008.08.29 추가조건
  789. }
  790. dsf_createDs("ds_saveSrc");
  791. if(prcpSrchNodeList > 0){
  792. if( flag != "U" ){
  793. //ds_saveSrc.copyData(prcpMain.ds_main_prcplist); //"/root/main/prcp/prcplist";
  794. }else{
  795. //"/root/main/prcp/prcplist[status='I']";
  796. prcpMain.ds_main_prcplist.filter("status == 'I'");
  797. //ds_saveSrc.copyData(prcpMain.ds_main_prcplist, true);
  798. //prcpMain.ds_main_prcplist.filter("");
  799. }
  800. //alert("fPrcpSave 1 prcpMain.SubmitTF_SMMMO00110 : " + prcpMain.SubmitTF_SMMMO00110 );
  801. prcpMain.dsf_createDs("ds_send_steplist");
  802. prcpMain.ds_send_steplist.copyData(ds_send_steplist);
  803. //prcpMain.fPrcpSave( "0", "0", "ds_saveSrc" );
  804. prcpMain.fPrcpSave( "0", "0", "ds_main_prcplist" );
  805. prcpMain.ds_main_prcplist.filter("");
  806. if( prcpMain.SubmitTF_SMMMO00110 == false ){
  807. //당일 처방저장 실패, refresh 안함.
  808. stopSavePrcpYN_SMMMO00110 = "Y";
  809. return;
  810. }else{
  811. //당일처방저장 성공, 미래처방이 존재한다면, 처방저장을 계속 진행
  812. var diagNode = prcpMain.ds_main_diagcdlist.getCaseCount("status == 'I' || status == 'U' status = 'D'"); //instance1.selectSingleNode( "/root/main/diaginfo/diagcdlist" + "[status = 'I' or status = 'U' or status = 'D']");
  813. //var diagList = instance1.selectNodes ( "/root/main/diaginfo/diagcdlist" + "[status = 'I' or status = 'U' or status = 'D']");
  814. dsf_createDs("ds_diagList");
  815. prcpMain.ds_main_diagcdlist.filter("status == 'I' || status == 'U' || status == 'D'");
  816. ds_diagList.copyData(prcpMain.ds_main_diagcdlist, true);
  817. if( ds_diagList > 0 ){
  818. //진단 코드가 있으면, 저장 falg를 '-'로 바꾼다 (제대로 돌아간다면, 이 부분이 필요가 없는지 확인)
  819. for(var i = ds_diagList.rowcount - 1; i >= 0; i--){ // 인덱스 확인 필요
  820. //var node = diagList.item(i);
  821. var statusNode = ds_diagList.getColumn(i, "status"); //node.selectSingleNode("status");
  822. if(statusNode == "D"){
  823. prcpMain.ds_main_diagcdlist.deleteRow(i+1); //model.removeNodeset("/root/main/diaginfo/diagcdlist["+(i+1)+"]");
  824. }else{
  825. statusNode = "-"; //model.setValue(statusNode, "-");
  826. }
  827. }
  828. //grd_diaglist.refresh();
  829. }
  830. prcpMain.ds_main_diagcdlist.filter("");
  831. //alert(diagNode.xml);
  832. questionYN_SMMMO00110 = "Y";
  833. stopSavePrcpYN_SMMMO00110 = "N";
  834. var nodeInvalPrcpList = ds_main_invalprcplist.rowcount; //model.instance1.selectSingleNode("/root/main/invalprcplist/prcplist");
  835. if(nodeInvalPrcpList > 0){ //2008.09.30
  836. ErrExistYN_SMMMO00110 = "Y"; //당일 처방 저장 중 미완성처방이 있다면, Y
  837. }
  838. prcpMain.ds_main_prcplist.filter("status != 'S'");
  839. for(var i=prcpMain.ds_main_prcplist.rowcount-1; i>=0; i-- ) {
  840. prcpMain.ds_main_prcplist.deleteRow(i);
  841. }
  842. prcpMain.ds_main_prcplist.filter("");
  843. ds_result_saveinvaliprcplist.clearData(); // model.removeNodeset("/root/result/saveinvaliprcplist");
  844. ds_send_saveinvaliprcplist.clearData(); // model.removeNodeset("/root/send/saveinvaliprcplist");
  845. ds_result_errprcplist.clearData(); // model.removeNodeset("/root/result/errprcplist");
  846. ds_result_prcperrlist.clearData(); // model.removeNodeset("/root/result/prcperrlist"); //처방오류(팝업) 데이터 삭제
  847. ds_send_errprcplist.clearData(); // model.removeNodeset("/root/send/errprcplist");
  848. // 인스턴스명 중복을 피하기 위해, reqdata 삭제(2008.08.28)
  849. ds_send_reqdata.clearData(); // model.removeNodeset ( "/root/send/reqdata" );
  850. ds_send_savedata.clearData(); // model.removeNodeset ( "/root/send/savedata" );
  851. // 원위치
  852. if( cpgIoFlag == "O" || prcpgenrflag == "O" || ds_main_prcpsrch_prcplist.getCaseCount("prcpdd > '" + today + "'") <= 0 ){ // instance1.selectSingleNode("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']") == null
  853. ds_main_prcpsrch_prcplist.clearData(); //model.removeNodeset("/root/main/prcpsrch/prcplist");
  854. return;
  855. }
  856. } //처방저장 END if
  857. }else{
  858. //예외5: 당일 처방 모두가, 미완성 처방일 경우..
  859. //alert("예외5, 오늘날짜 처방 중 미완성만 존재함");
  860. fSetSavrPrcpInfo(); //저장시 필요한 데이터를 임의로 구성함
  861. // TF는 steplist값이 없어도 컬럼정보 넘김, XP는 값이 없으면 컬럼정보도 안넘김
  862. if( ds_send_steplist.rowcount == 0 ) {
  863. dsf_copyColInfo(ds_send_steplist, ds_steplist_columninfo);
  864. ds_send_steplist.addRow();
  865. ds_send_steplist.setColumn(0, "prcpdd", null);
  866. }
  867. // 이거 확인 필요 smmmo00100.xjs 카피
  868. dsf_setFixVal(ds_result_savedrprcplist, "instcd:"+sysf_getUserInfo("dutplceinstcd"));
  869. var oParam = {};
  870. oParam.id = "TXMMP00803";
  871. oParam.service = "prcpmngtapp.CPPrcpMngt";
  872. oParam.method = "reqExeSavePrtcPrcp";
  873. oParam.inds = "saveflaginfo=ds_send_cond1 savedrprcplist=ds_result_savedrprcplist saveexecprcplist=ds_result_saveexecprcplist savediaglist=ds_result_savediaglist savepamlist=ds_result_savepamlist "
  874. + "signprcplist=ds_result_signprcplist signdiaglist=ds_result_signdiaglist savematrprcplist=ds_result_savematrprcplist dschflaginfo=ds_result_dschflaginfo dschpamlist=ds_result_dschpamlist "
  875. + "dschdrprcplist=ds_result_dschdrprcplist dschexecprcplist=ds_result_dschexecprcplist dschmatrprcplist=ds_result_dschmatrprcplist savePrcpInfo=ds_send_cond14 saveinvaliprcplist=ds_result_saveinvaliprcplist "
  876. + "req=ds_send_srchcond steplist=ds_send_steplist delprcplist=ds_send_delprcplist dessprcplist=ds_send_dessprcplist pessprcplist=ds_send_pessprcplist";
  877. oParam.outds = "ds_main_invalprcplist=prcplist";
  878. oParam.async = false;
  879. oParam.callback = "cf_TXMMP00803";
  880. tranf_submit(oParam);
  881. }
  882. //당일자 처방이 있을 때, END
  883. } else{
  884. stopSavePrcpYN_SMMMO00110 = "N";
  885. }
  886. if(stopSavePrcpYN_SMMMO00110 == "Y") return;
  887. if ( prcpMain.SubmitTF_SMMMO00110 == "Y" ){
  888. saveNum_SMMMO00110 = 1;
  889. }
  890. /* ------------------------------------------------------------------------------------------------------------------------------------------------------------- */
  891. //미래------------->
  892. //(프로토콜 테이블 저장 + 프로토콜처방 인증저장)
  893. /* [미완성2:수술처방] 처방수술처방은 당일, 미래 상관 없이 무조건 미완성처방으로 저장 */
  894. ds_main_prcpsrch_prcplist.filter("");
  895. var opNodeList = ds_main_prcpsrch_prcplist.getCaseCount("status == 'I' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd > '" + today + "' && anstcnfmneedyn != 'N'"); //instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and anstcnfmneedyn!='N']");
  896. if( opNodeList > 0 ){
  897. //var opCSV = getNodeListCSV(opNodeList);
  898. fInvalPrcpTret(2, flag); //미완성처방(inval)으로 수동으로 변경
  899. }
  900. if( flag != "U" ){
  901. ds_main_prcpsrch_prcplist.filter("");
  902. var dayCntList = ds_main_prcpsrch_prcplist.getCaseCount("prcpdd >'" + today + "'");
  903. utlf_addLog("dayCntList : " + dayCntList );
  904. if(dayCntList > 0){
  905. for(var i = ds_main_prcpsrch_prcplist.rowcount - 1; i >= 0; i--) {
  906. if( ds_main_prcpsrch_prcplist.getColumn(i, "prcpdd") <= today ) {
  907. ds_main_prcpsrch_prcplist.deleteRow(i);
  908. }
  909. }
  910. curSavePrcpFlag_SMMMO00110 = "T";
  911. ds_main_prcpsrch_prcplist.filter("prcpdd >'" + today + "'");
  912. prcpMain.ds_tempPrcpsrch.copyData(ds_main_prcpsrch_prcplist, true);
  913. ds_tempPrcpsrch.copyData(ds_main_prcpsrch_prcplist, true);
  914. ds_main_prcpsrch_prcplist.filter("");
  915. utlf_addLog(ds_main_prcpsrch_prcplist.saveXML());
  916. utlf_addLog(prcpMain.ds_tempPrcpsrch.saveXML());
  917. prcpMain.lf_addPrcp("import", "ds_tempPrcpsrch", "ds_main_prcplist", "Y", "status", "I", prcpMain.div_all.grd_prcplist, "N", "05");
  918. }
  919. }
  920. //
  921. // dsf_createDs("ds_nodelist");
  922. //
  923. // // TF에서는 CPMAIN 화면의 노드에 수정/추가된 정보를 담았다가 저장함
  924. // if( grp_biz.btn_detail_tab.tabindex == 0 ) { // 환자계획표탭에서 적용
  925. // var prcpds = grp_biz.ivw_detail.objects["ds_main_prcpsrch_prcplist"];
  926. // } else { // ocs탭에서 적용
  927. // var prcpds = prcpMain.objects["ds_main_prcplist"];
  928. // }
  929. var prcpds = prcpMain.objects["ds_main_prcplist"];
  930. var srchRow = 0; // XP는 0번터 로우 시작
  931. var groupFlagRow = 0;
  932. var cnt = 0;
  933. var valynTxt = "";
  934. if(prcpds.rowcount > 0){
  935. for(var i = 0; i < prcpds.rowcount; i++){
  936. var prcpClsCd = prcpds.getColumnSet(i, "prcpclscd");
  937. var prcpKindCd = prcpds.getColumnSet(i, "prcpkindcd");
  938. var drugmthdspccd = prcpds.getColumnSet(i, "drugmthdspccd");
  939. var prcpnm = prcpds.getColumnSet(i, "prcpnm");
  940. var drugmastspec = prcpds.getColumnSet(i, "drugmastspec") + "^";
  941. var statusNode = prcpds.getColumnSet(i, "status");
  942. var stsText = statusNode[0].value;
  943. var etclnkspecNode = prcpds.getColumnSet(i, "etclnkspec");
  944. var stepnoNode = prcpds.getColumnSet(i, "stepno");
  945. var stepnmNode = prcpds.getColumnSet(i, "stepnm");
  946. var prcpddNode = prcpds.getColumnSet(i, "prcpdd");
  947. var prcphopeddNode = prcpds.getColumnSet(i, "prcphopedd");
  948. var rsrvddNode = prcpds.getColumnSet(i, "rsrvdd");
  949. var oprsrvno = prcpds.getColumnSet(i, "oprsrvno");
  950. var dschdclrtyn = appf_getPatientInfoDetail("dschdclrtyn");
  951. var valynNode = prcpds.getColumnSet(i, "valyn");
  952. if( valynNode != null ) valynTxt = valynNode[0].value;
  953. var anstcnfmneedynNode = prcpds.getColumnSet(i, "anstcnfmneedyn");
  954. if( anstcnfmneedynNode != null ) {anstcnfmneedynNode[0].value = "";}
  955. if( prcpddNode != null && !utlf_isNull(prcpddNode[0].value) ) {
  956. utlf_addLog(">>>>>>>>>>>>>>>>>>> prcpddNode[0].value : " + prcpddNode[0].value);
  957. prcpMain.ds_init.setColumn(0, "prcpdd", prcpddNode[0].value);
  958. if( prcphopeddNode != null ){
  959. prcphopeddNode[0].value = prcpddNode[0].value;
  960. }
  961. }
  962. var groupFlag = prcpds.getColumnSet(i, "grupsnglflag");
  963. var inclprcpnoNode = prcpds.getColumnSet(i, "inclprcpno");
  964. var hsctlnknoNode = prcpds.getColumnSet(i, "hsctlnkno");
  965. var prcpInptFlag = "05"; //cp처방
  966. var tempPrcp = ""; // 15.12.28
  967. if( flag == "U" && stsText != "-" ){
  968. if( groupFlag[0].value == "M" || groupFlag[0].value == "J" ){
  969. var vSrchRow = srchRow;
  970. groupFlagRow = srchRow;
  971. if( prcpClsCd[0].value=="H2" && oprsrvno[0].value=="0" && valynTxt!="완성" )break;
  972. if( dschdclrtyn != "Y" && (prcpKindCd[0].value == "60" || prcpKindCd[0].value == "70") )break;
  973. if( groupFlag[0].value == "M" && inclprcpnoNode[0].value != "0" )break;
  974. if( groupFlag[0].value == "J" && hsctlnknoNode[0].value != "0" )break;
  975. ds_temp1_addprcp_prcplist.clearData();
  976. for(var j = prcpNodeListCnt-1; j > srchRow; j--){
  977. tempPrcp = dsf_getDsCSV(prcpMain.ds_main_prcplist, j);
  978. prcpMain.fAppendSaveNode( "ds_temp1_addprcp_prcplist", tempPrcp ); //fAppendSaveNode( "/root/temp1/addprcp", "/root/main/prcp/prcplist["+j+"]" );
  979. prcpMain.ds_main_prcplist.deleteRow(j); //model.removeNodeset("/root/main/prcp/prcplist["+j+"]");
  980. }
  981. srchRow = fCheckCpPrcp("import", "prcpMain.ds_main_prcplist", "ds_main_prcplist", groupFlagRow, srchRow, "05" ); // 확인 필요
  982. if( srchRow == 0 ){
  983. cnt++;
  984. srchRow = vSrchRow; //복사된 값이 없어 srchrow가 없으면 기존 srchrow로 다시 시작함
  985. }else{
  986. groupFlagRow = 0;
  987. prcpds.deleteRow(srchRow);
  988. --srchRow;
  989. i = srchRow - 1;
  990. var addPrcpNodeList = ds_temp1_addprcp_prcplist.rowcount -1;
  991. for(var j = addPrcpNodeList; j >= 0 ; j--){ // j >= 1
  992. var statusTxt = ds_temp1_addprcp_prcplist.getColumn(j, "status");
  993. var prcpnmTxt = ds_temp1_addprcp_prcplist.getColumn(j, "prcpcd");
  994. tempPrcp = dsf_getDsCSV(ds_temp1_addprcp_prcplist, j);
  995. prcpMain.fAppendSaveNode( "ds_main_prcplist", tempPrcp );
  996. ds_temp1_addprcp_prcplist.deleteRow(j);
  997. }
  998. prcpNodeList = prcpMain.ds_main_prcplist; //instance1.selectNodes("/root/main/prcp/prcplist"); //다시..
  999. prcpNodeListCnt = prcpNodeList.rowcount;
  1000. }
  1001. }else{
  1002. groupFlagRow = 0;
  1003. var iPrcpInptFlag = prcpds.getColumn(srchRow, "prcpinptflag");
  1004. prcpMain.lf_addPrcpSetValue("import", "ds_main_prcplist", srchRow, "05");
  1005. if( stsText == "D" ){
  1006. prcpds.setColumn(srchRow, "status", "D");
  1007. }else if( stsText == "-" ){
  1008. prcpds.setColumn(srchRow, "status", "-");
  1009. }
  1010. }
  1011. } else if( flag != "U" && grp_biz.btn_detail_tab.tabindex == 0 && stsText == "I" ){
  1012. /* after (환자계획표에서 '추가' 시 미리 addprcp 수행되었으므로 addprcpSetValue() 수행안되어도 됨. 2중 호출. but, '수정' 시는 addprcpSetValue가 수행되어야 함. 2008.12.02) */
  1013. //환자계획표에서 추가/수정한 처방 저장하는 경우, addPrcpSetValue() prcppkspec, pampkspec 등 구성을 위해 필요 (2008.10.31 JJE)
  1014. //ds_main_prcplist.copyData(grp_biz.ivw_detail.ds_main_prcpsrch_prcplist); // cp 메인화면의 데이터셋으로 복사
  1015. if(ds_DetlNodeList.rowcount > 0 && curSavePrcpFlag_SMMMO00110 != "T") {
  1016. //dsf_setDefaultVal(ds_main_prcplist, "all"); // 추가
  1017. // 허만호 추가 START
  1018. var oOpener = this.getOwnerFrame().form;
  1019. if( oOpener.name == "SMMMP00800" ) {
  1020. /* prcpMain.lf_addPrcpSetValue 가 아닌 lf_addPrcpSetValue로 호출하기 위해서 필요한 데이터셋을 CP화면에 생성
  1021. ds_main_prcplist를 환자계획표에 데이터셋을 사용하기 위해 */
  1022. dsf_createDs("ds_initsrch_prcpetccnts");
  1023. dsf_createDs("ds_initsrch_escopedirecprcpcd");
  1024. dsf_createDs("ds_specdrinfo");
  1025. ds_initsrch_escopedirecprcpcd.copyData(grp_biz.grp_prcp.imp_prcp.ds_initsrch_escopedirecprcpcd); // 처방화면 데이터셋
  1026. ds_initsrch_prcpetccnts.copyData(grp_biz.grp_prcp.imp_prcp.ds_initsrch_prcpetccnts); // 처방화면 데이터셋
  1027. ds_specdrinfo.copyData(grp_biz.grp_prcp.imp_prcp.ds_specdrinfo);
  1028. }
  1029. // 허만호 추가 END
  1030. prcpMain.lf_addPrcpSetValue("import", "ds_main_prcplist", srchRow, "05"); //addPrcpSetValue( "import", "/root/main/prcp/prcplist" , srchRow, "05");
  1031. grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.copyData(prcpMain.ds_main_prcplist);
  1032. }
  1033. } //add (after end)
  1034. srchRow++;
  1035. }
  1036. }
  1037. //실제 저장 시작
  1038. prcpMain.fClearSaveInstance();
  1039. prcpMain.SubmitTF_SMMMO00110 = false;
  1040. /* after */
  1041. ds_main_steppath_info.filter("");
  1042. var iPrcpddidx = ds_main_steppath_info.findRowExpr("prcpdd > '"+today+"' && stepstat == '10'"); //instance1.selectSingleNode("/root/main/steppath/info[prcpdd > '"+today+"' and stepstat = '10']/prcpdd");
  1043. var iPrcpddNode = ds_main_steppath_info.getColumn(iPrcpddidx, "prcpdd");
  1044. //alert("prcpMain.visible : " + prcpMain.visible + " iPrcpddNode : " + iPrcpddNode + " flag : " + flag + " prcpdd : " + parseInt(ds_init.getColumn(0, "prcpdd")) + " today : " + parseInt(today) + " casecount : " + prcpMain.ds_main_prcplist.getCaseCount("status == 'I' || status == '-'"));
  1045. if( prcpMain.visible == true && utlf_isNull(iPrcpddNode) && flag != "U" && parseInt(prcpMain.ds_init.getColumn(0, "prcpdd")) > parseInt(today) && prcpMain.ds_main_prcplist.getCaseCount("status == 'I' || status == '-'") > 0 ){ // instance1.selectSingleNode("/root/main/prcp/prcplist[status='I' or status='-']") != null
  1046. trace("미래일자이지만 처방 저장 프로세스를 따라가는 경우...");
  1047. //(1) 미래일자이지만 처방 저장 프로세스를 따라가는 경우...!
  1048. prtlFlag_SMMMO00110 = "-";
  1049. prcpMain.fPrcpSave( "0", "0", "ds_main_prcplist" );
  1050. prtlFlag_SMMMO00110 = ds_main_masterinfo_info.getColumn(0, "cpgflagcd"); //model.getValue("/root/main/masterinfo/info/cpgflagcd");
  1051. if( prcpMain.SubmitTF_SMMMO00110 == false ){
  1052. //당일 처방저장 실패, refresh 안함.
  1053. stopSavePrcpYN_SMMMO00110 = "Y";
  1054. return;
  1055. }else{
  1056. //당일처방저장 성공, 미래처방이 존재한다면, 처방저장을 계속 진행
  1057. questionYN_SMMMO00110 = "Y";
  1058. stopSavePrcpYN_SMMMO00110 = "N";
  1059. // model.removeNodeset("/root/main/prcp/prcplist[status != 'S']"); 확인 필요
  1060. for(var i = 0; i < prcpMain.ds_main_prcplist.rowcount; i++ ) {
  1061. var delRow = prcpMain.ds_main_prcplist.findRowExpr("status != 'S'");
  1062. prcpMain.ds_main_prcplist.deleteRow(delRow);
  1063. }
  1064. ds_result_saveinvaliprcplist.clearData(); // model.removeNodeset("/root/result/saveinvaliprcplist");
  1065. ds_send_saveinvaliprcplist.clearData(); // model.removeNodeset("/root/send/saveinvaliprcplist");
  1066. ds_result_errprcplist.clearData(); // model.removeNodeset("/root/result/errprcplist");
  1067. ds_result_prcperrlist.clearData(); // model.removeNodeset("/root/result/prcperrlist"); //처방오류(팝업) 데이터 삭제
  1068. ds_send_errprcplist.clearData(); // model.removeNodeset("/root/send/errprcplist");
  1069. ds_send_reqdata.clearData(); //model.removeNodeset ( "/root/send/reqdata" );
  1070. ds_send_savedata.clearData(); //model.removeNodeset ( "/root/send/savedata" );
  1071. return;
  1072. } //처방저장 END if
  1073. } else {
  1074. //(2) cp 미래처방 저장
  1075. //alert("fPrcpDCSave_CP s");
  1076. trace("fPrcpDCSave_CP ==== " + prcpMain.name);
  1077. if( fPrcpDCSave_CP(prcpflag, rtnpstn, flag) != false ){
  1078. questionYN_SMMMO00110 = "N";
  1079. stopSavePrcpYN_SMMMO00110 = "N";
  1080. //JJE 2008.10.09 (s)
  1081. //model.removeNodeset("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']");
  1082. for(var i = 0; i < grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.rowcount; i++) {
  1083. var delRow = grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.findRowExpr("prcpdd >'" + today + "'");
  1084. grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1085. }
  1086. if( flag != "U" && !utlf_isNull(grp_biz.ivw_detail.url) ){
  1087. //ivw_detail.model.removeNodeset("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']");
  1088. for(var i = 0; i < grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.rowcount; i++) {
  1089. var delRow = grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.findRowExpr("prcpdd >'" + today + "'");
  1090. grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1091. }
  1092. }
  1093. //(e)
  1094. }else{
  1095. //model.removeNodeset("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']");
  1096. trace("777//////>>")
  1097. for(var i = 0; i < grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.rowcount; i++) {
  1098. var delRow = grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.findRowExpr("prcpdd >'" + today + "'");
  1099. grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1100. }
  1101. if( flag != "U" && !utlf_isNull(grp_biz.ivw_detail.url) ){
  1102. trace("8888//////>>")
  1103. //ivw_detail.model.removeNodeset("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']");
  1104. for(var i = 0; i < grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.rowcount; i++) {
  1105. var delRow = grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.findRowExpr("prcpdd >'" + today + "'");
  1106. grp_biz.ivw_detail.ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1107. }
  1108. }
  1109. return false;
  1110. } //프로토콜처방 저장 end
  1111. } //add(after end)
  1112. ds_init.setColumn(0, "prcpdd", today); //model.setValue( "/root/init/prcpdd", today );
  1113. }
  1114. /**
  1115. * @group :
  1116. * @ver
  1117. : 2007.09
  1118. * @by : 전지은
  1119. * @---------------------------------------------------
  1120. * @type : function
  1121. * @access : public
  1122. * @desc : 미완성 처방으로 수동 처리한다
  1123. * @param : errflagcd 1:수술(당일), 2:수술(미래), 4:퇴원예고(당일)
  1124. : opCSV 미완성 대상 처방 Nodeset
  1125. : flag
  1126. * @return :
  1127. *
  1128. * [미완성3:퇴원예고처방(미래)] 미래처방 중 퇴원예고처방 존재 시, 미완성처방으로 저장
  1129. * var opNodeList = instance1.selectNodes("/root/main/prcp/prcplist[status!='S' and prcpkindcd = '70' ]");
  1130. * @---------------------------------------------------
  1131. */
  1132. function fInvalPrcpTret(errflagcd, sFlag){
  1133. var appScopMode = ds_main.getColumn(0, "appscopmode"); //model.getValue("/root/main/appscopmode"); //CPG인 경우, CPG스텝/CP스텝 적용 모드를 구분함 (2010.06.26)
  1134. if( cpgflagcd == "02" && appScopMode != "W" ) return; //CPG+CP의 CP처방은 미완성 처리 되도록
  1135. // 20200401 김현석, 적용일자 세팅, 20200310998
  1136. //var today = utlf_getCurrentDate();
  1137. var today = fGetAppdd();
  1138. var copyYN = "N"; //2008.10.14 (저장취소-저장 반복적으로 수행 시 *n건 발생되어 저장되는 것 막음)
  1139. if( ds_patflag.getColumn(0, "prcpgenrflag") == "O" ){ // model.getValue("/root/patflag/list/prcpgenrflag") == "O"
  1140. var pOrdDD = ds_paminfo.getColumn(0, "orddd"); //model.getValue("/root/paminfo/list/orddd");
  1141. }else{
  1142. var pOrdDD = ds_paminfo.getColumn(0, "indd"); //model.getValue("/root/paminfo/list/indd");
  1143. }
  1144. if( utlf_isNull(ds_result_errprcplist) ){ // instance1.selectSingleNode("/root/send/errprcplist") == null
  1145. dsf_createDs("ds_result_errprcplist"); //model.makeNode("/root/send/errprcplist");
  1146. }
  1147. if( utlf_isNull(ds_result_saveinvaliprcplist) ){
  1148. dsf_createDs("ds_result_saveinvaliprcplist"); //model.makeNode("/root/result");
  1149. }
  1150. //수술처방 존재 시, 수술예약정보 조회
  1151. if ( errflagcd != 4 ){
  1152. dsf_createDs("ds_send_pamdata");
  1153. dsf_makeValue(ds_send_pamdata, "pid", "string", ds_paminfo.getColumn(0, "pid")); // model.makeValue( "/root/send/pamdata/pid" , model.getValue("/root/paminfo/list/pid") );
  1154. dsf_makeValue(ds_send_pamdata, "orddd", "string", pOrdDD); // model.makeValue( "/root/send/pamdata/orddd" , pOrdDD );
  1155. var rsrvOpCnt = 0;
  1156. if( utlf_isNull(ds_temp1_oplist_info) || ds_temp1_oplist_info.rowcount < 1 ){
  1157. var oParam = {};
  1158. oParam.id = "TRMMP02801";
  1159. oParam.service = "prcpmngtapp.CPPrcpMngt";
  1160. oParam.method = "reqGetOPList";
  1161. oParam.inds = "req=ds_send_pamdata";
  1162. oParam.outds = "ds_temp1_oplist_info=info";
  1163. oParam.async = false;
  1164. //oParam.callback = "cf_TRMMP02801";
  1165. tranf_submit(oParam);
  1166. }
  1167. ds_send_pamdata.clearData(); //model.removeNodeset("/root/send/pamdata");
  1168. rsrvOpCnt = ds_temp1_oplist_info.rowcount; //instance1.selectNodes("/root/temp1/oplist/info").length;
  1169. if(rsrvOpCnt >= 1){
  1170. var opNodeList = new Dataset;
  1171. var filterCnt = 0;
  1172. if( errflagcd == 1 ){
  1173. //instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
  1174. filterCnt = ds_main_prcpsrch_prcplist.getCaseCount("status == 'I' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd == '" + today + "' && anstcnfmneedyn != 'N'");
  1175. }else if( errflagcd == 2 ){
  1176. //var opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status='I' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and anstcnfmneedyn!='N']");
  1177. filterCnt = ds_main_prcpsrch_prcplist.getCaseCount("status == 'I' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd > '" + today + "' && anstcnfmneedyn != 'N'");
  1178. }
  1179. for( var r = 0; r < rsrvOpCnt; r++ ){
  1180. var rsrvDD = ds_temp1_oplist_info.getColumn(r, "opschedd"); //model.getValue("/root/temp1/oplist/info["+(r+1)+"]/opschedd"); //예정일
  1181. var rsrvNo = ds_temp1_oplist_info.getColumn(r, "oprsrvno"); //model.getValue("/root/temp1/oplist/info["+(r+1)+"]/oprsrvno"); //예약번호
  1182. var opfromtmcd = ds_temp1_oplist_info.getColumn(r, "opfromtmcd"); //model.getValue("/root/main/oplist/info["+(r+1)+"]/opfromtmcd");
  1183. var erYN = "N"; //응급구분
  1184. var nighYN = "N"; //야간구분
  1185. if( ds_temp1_oplist_info.getColumn(r, "opflagcd") == "2" ){ // model.getValue("/root/temp1/oplist/info["+(r+1)+"]/opflagcd") == "2"
  1186. erYN = "Y";
  1187. }
  1188. if( eval(opfromtmcd) > 170000 ) {
  1189. nighYN = "Y";
  1190. }
  1191. var sameopscheddCnt = ds_temp1_oplist_info.getCaseCount("opcnfmdd == '" + rsrvDD + "'"); //instance1.selectNodes("/root/temp1/oplist/info[opcnfmdd='"+rsrvDD+"']").length; //opcnfmdd:확정일,opschedd:예정일
  1192. if(sameopscheddCnt == 1){ //동일한 예정일을 갖는 수술예약이 1건일 경우만 처방에 예약번호 셋팅(2건 이상이면, skip)
  1193. if( errflagcd == 1 ){
  1194. ds_main_prcpsrch_prcplist.filter("status == 'I' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd == '" + today + "' && anstcnfmneedyn != 'N'");
  1195. }else if( errflagcd == 2 ){
  1196. ds_main_prcpsrch_prcplist.filter("status == 'I' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd > '" + today + "' && anstcnfmneedyn != 'N'");
  1197. }
  1198. for(var i = 0; i < ds_main_prcpsrch_prcplist.rowcount; i++){
  1199. if( ds_main_prcpsrch_prcplist.getColumn(i, "prcpdd") == rsrvDD ){ // node.selectSingleNode("prcpdd").text == rsrvDD
  1200. ds_main_prcpsrch_prcplist.setColumn(i, "oprsrvno", rsrvNo); // model.setValue(node.selectSingleNode("oprsrvno") , rsrvNo);
  1201. ds_main_prcpsrch_prcplist.setColumn(i, "erprcpflag", erYN); // model.setValue(node.selectSingleNode("erprcpflag") , erYN);
  1202. ds_main_prcpsrch_prcplist.setColumn(i, "nigtprcpflag", nighYN); // model.setValue(node.selectSingleNode("nigtprcpflag"), nighYN);
  1203. }
  1204. }
  1205. ds_main_prcpsrch_prcplist.filter("");
  1206. }
  1207. } //end for
  1208. } //end if(rsrvOpCnt >= 1)
  1209. } //end if(errflagcd != 4)
  1210. var opNodeList = new Dataset; //var opNodeList = null;
  1211. if( errflagcd == 1 ){
  1212. if( sFlag == "U" ){
  1213. //opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and valyn!='완성' and anstcnfmneedyn!='N']");
  1214. ds_main_prcpsrch_prcplist.filter("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd == '" + today + "' && valyn != '완성' && anstcnfmneedyn != 'N'");
  1215. opNodeList.copyData(ds_main_prcpsrch_prcplist, true);
  1216. ds_main_prcpsrch_prcplist.filter("");
  1217. }else{
  1218. //opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
  1219. ds_main_prcpsrch_prcplist.filter("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd =='" + today + "' && anstcnfmneedyn != 'N'");
  1220. opNodeList.copyData(ds_main_prcpsrch_prcplist, true);
  1221. ds_main_prcpsrch_prcplist.filter("");
  1222. }
  1223. }else if( errflagcd == 2 ){
  1224. if( sFlag == "U" ){
  1225. //opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and valyn!='완성' and anstcnfmneedyn!='N']");
  1226. ds_main_prcpsrch_prcplist.filter("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd > '" + today + "' && valyn != '완성' && anstcnfmneedyn != 'N'");
  1227. opNodeList.copyData(ds_main_prcpsrch_prcplist, true);
  1228. ds_main_prcpsrch_prcplist.filter("");
  1229. }else{
  1230. //opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and anstcnfmneedyn!='N']");
  1231. ds_main_prcpsrch_prcplist.filter("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd > '" + today + "' && anstcnfmneedyn != 'N'");
  1232. opNodeList.copyData(ds_main_prcpsrch_prcplist, true);
  1233. ds_main_prcpsrch_prcplist.filter("");
  1234. }
  1235. }else if (errflagcd == 4 ){
  1236. //opNodeList = instance1.selectNodes("/root/main/prcpsrch/prcplist[status!='S' and (prcpkindcd = '60' or prcpkindcd = '70') and prcpdd='" + today + "']");
  1237. ds_main_prcpsrch_prcplist.filter("status != 'S' && (prcpkindcd == '60' || prcpkindcd == '70') && prcpdd == '" + today + "'");
  1238. opNodeList.copyData(ds_main_prcpsrch_prcplist, true);
  1239. ds_main_prcpsrch_prcplist.filter("");
  1240. }
  1241. ds_result_saveinvaliprcplist.clearData();
  1242. if(opNodeList.rowcount > 0){
  1243. ds_result_saveinvaliprcplist.copyData(opNodeList);
  1244. }else{
  1245. return;
  1246. }
  1247. for(var i = 0; i < ds_result_saveinvaliprcplist.rowcount; i++){
  1248. ds_result_saveinvaliprcplist.setColumn(i, "stepno", ""); //model.removenode("/root/result/saveinvaliprcplist[" + i + "]/stepno");
  1249. dsf_makeValue(ds_result_saveinvaliprcplist, "orddd", "string", pOrdDD, i); //model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/orddd", pOrdDD);
  1250. if( errflagcd == 1 || errflagcd == 2 ){
  1251. //2008.11.27 --아래 1줄 주석처리
  1252. dsf_makeValue(ds_result_saveinvaliprcplist, "incpltnresn", "string", "수술예약번호가 입력되지 않았습니다.", i); // model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/incpltnresn", "수술예약번호가 입력되지 않았습니다.");
  1253. dsf_makeValue(ds_result_saveinvaliprcplist, "errtretflag", "string", "8", i); // model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/errtretflag", "8");
  1254. ErrExistYN_SMMMO00110 = "Y"; //저장 후 미완성처방 존재유무 파악 -> 미완성팝업 오픈 기준
  1255. }else if( errflagcd == 4 ){
  1256. dsf_makeValue(ds_result_saveinvaliprcplist, "incpltnresn", "string", "퇴원예고를 하지 않으셨습니다.", i); // model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/incpltnresn", "퇴원예고를 하지 않으셨습니다.");
  1257. dsf_makeValue(ds_result_saveinvaliprcplist, "errtretflag", "string", "10", i); // model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/errtretflag", "10");
  1258. ErrExistYN_SMMMO00110 = "Y"; //저장 후 미완성처방 존재유무 파악 -> 미완성팝업 오픈 기준
  1259. }
  1260. // 오라클 null error 로 인한 default값 설정
  1261. dsf_makeValue(ds_result_saveinvaliprcplist, "prcphopedd", "string", ds_result_saveinvaliprcplist.getColumn(i, "prcpdd"), i); //model.makeValue ("/root/result/saveinvaliprcplist[" + i + "]/prcphopedd" , model.getValue("/root/result/saveinvaliprcplist[" + i + "]/prcpdd") );
  1262. //CPG+CP 에서 CP스텝의 prcphopeddNode(처방희망일자)는 해당날짜로 변경해줌 (2010.06.26)
  1263. if( cpgflagcd == "02" && appScopMode == "W" ){
  1264. var iSetno = ds_result_saveinvaliprcplist.getColumn(i, "setno"); //model.getValue("/root/result/saveinvaliprcplist[" + i + "]/setno");
  1265. var iSettypecd = ds_result_saveinvaliprcplist.getColumn(i, "settypecd"); //model.getValue("/root/result/saveinvaliprcplist[" + i + "]/settypecd");
  1266. var findRow = ds_main_steppath_info.findRowExpr("setno == '" + iSetno +"' && settypecd == '" + iSettypecd + "'");
  1267. var iOrgprcpdd = ds_main_steppath_info.getColumn(findRow, "orgprcpdd"); //model.getValue("/root/main/steppath/info[setno='"+iSetno+"' and settypecd='"+iSettypecd+"']/orgprcpdd");
  1268. if( !utlf_isNull(iSetno) && !utlf_isNull(iSettypecd) && !utlf_isNull(iOrgprcpdd) ){
  1269. dsf_makeValue(ds_result_saveinvaliprcplist, "prcphopedd", "string", iOrgprcpdd, i); //model.makeValue("/root/result/saveinvaliprcplist[" + i + "]/prcphopedd" , iOrgprcpdd );
  1270. }
  1271. }
  1272. dsf_makeValue(ds_result_saveinvaliprcplist, "offictourhealexamflag", "string", "N", i); // model.makeValue ("/root/result/saveinvaliprcplist[" + i + "]/offictourhealexamflag" , "N");
  1273. dsf_makeValue(ds_result_saveinvaliprcplist, "prcpauthflag", "string", "0", i);
  1274. dsf_makeValue(ds_result_saveinvaliprcplist, "prcpsignflag", "string", "2", i);
  1275. dsf_makeValue(ds_result_saveinvaliprcplist, "cvrtbforddd", "string", "00000000", i);
  1276. dsf_makeValue(ds_result_saveinvaliprcplist, "cvrtbfprcpgenrflag", "string", "-", i);
  1277. }
  1278. ds_send_errprcplist.copyData(ds_result_saveinvaliprcplist);//에러가 존재하여 미완성처방으로 저장될 데이터
  1279. // TXMMP00803,4 에 saveinvaliprcplist 의 하부노드 명은 inval_ 으로 시작하므로, 노드 명을 바꾼다 (2008.02.12)
  1280. // for( var i=0; i<saveInvaliPrcpList.length; i++ ){
  1281. // var node = model.instance1.selectSingleNode( "/root/result/saveinvaliprcplist["+(i+1)+"]" );
  1282. // var childNodeList = node.childNodes;
  1283. // for( var k=0; k<childNodeList.length; k++ ){
  1284. // var iNode = childNodeList.item(k);
  1285. // iNode.nodeName = "inval_" + iNode.nodeName;
  1286. // }
  1287. // }
  1288. dsf_copyDs(ds_main_invalprcplist, ds_result_saveinvaliprcplist, "after"); // copyNodeListType("/root/main/invalprcplist", "/root/result/saveinvaliprcplist", "after", model, model);
  1289. dsf_copyDs(ds_send_saveinvaliprcplist, ds_result_saveinvaliprcplist, "after"); // copyNodeListType("/root/send", "/root/result/saveinvaliprcplist", "after", model, model);
  1290. ds_result_saveinvaliprcplist.clearData(); //model.removeNodeset("/root/result/saveinvaliprcplist");
  1291. if( errflagcd == 1 ){
  1292. if( sFlag == "U" ){
  1293. //model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and valyn!='완성' and anstcnfmneedyn!='N']");
  1294. // var delRow = ds_main_prcpsrch_prcplist.findRowExpr("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd == '" + today + "' && valyn != '완성' && anstcnfmneedyn != 'N'");
  1295. // ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1296. // 위 주석 아래와 같이 변경 2016-07-13 추민수
  1297. ds_main_prcpsrch_prcplist.enableevent = false;
  1298. ds_main_prcpsrch_prcplist.updatecontrol = false;
  1299. for(var delRow = ds_main_prcpsrch_prcplist.rowcount - 1; delRow >= 0; delRow--)
  1300. {
  1301. if( ds_main_prcpsrch_prcplist.getColumn(delRow, "status") != "S" &&
  1302. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpclscd") == "H2" &&
  1303. ds_main_prcpsrch_prcplist.getColumn(delRow, "oprsrvno") == "0" &&
  1304. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpdd") == today &&
  1305. ds_main_prcpsrch_prcplist.getColumn(delRow, "valyn") != "완성" &&
  1306. ds_main_prcpsrch_prcplist.getColumn(delRow, "valyn") != "N"
  1307. )
  1308. {
  1309. ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1310. }
  1311. }
  1312. ds_main_prcpsrch_prcplist.updatecontrol = true;
  1313. ds_main_prcpsrch_prcplist.enableevent = true;
  1314. }else{
  1315. //model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
  1316. // var delRow = ds_main_prcpsrch_prcplist.findRowExpr("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd == '" + today + "' && anstcnfmneedyn != 'N'");
  1317. // ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1318. // 위 주석 아래와 같이 변경 2016-07-13 추민수
  1319. ds_main_prcpsrch_prcplist.enableevent = false;
  1320. ds_main_prcpsrch_prcplist.updatecontrol = false;
  1321. for(var delRow = ds_main_prcpsrch_prcplist.rowcount - 1; delRow >= 0; delRow--)
  1322. {
  1323. if( ds_main_prcpsrch_prcplist.getColumn(delRow, "status") != "S" &&
  1324. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpclscd") == "H2" &&
  1325. ds_main_prcpsrch_prcplist.getColumn(delRow, "oprsrvno") == "0" &&
  1326. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpdd") == today &&
  1327. ds_main_prcpsrch_prcplist.getColumn(delRow, "anstcnfmneedyn") != "N"
  1328. )
  1329. {
  1330. ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1331. }
  1332. }
  1333. ds_main_prcpsrch_prcplist.updatecontrol = true;
  1334. ds_main_prcpsrch_prcplist.enableevent = true;
  1335. }
  1336. //model.removeNodeset("/root/temp1/addprcp/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
  1337. // var delRow = ds_temp1_addprcp_prcplist.findRowExpr("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd == '" + today + "' && anstcnfmneedyn != 'N'");
  1338. // ds_temp1_addprcp_prcplist.deleteRow(delRow);
  1339. // 위 주석 아래와 같이 변경 2016-07-13 추민수
  1340. ds_temp1_addprcp_prcplist.enableevent = false;
  1341. ds_temp1_addprcp_prcplist.updatecontrol = false;
  1342. for(var delRow = ds_temp1_addprcp_prcplist.rowcount - 1; delRow >= 0; delRow--)
  1343. {
  1344. if( ds_temp1_addprcp_prcplist.getColumn(delRow, "status") != "S" &&
  1345. ds_temp1_addprcp_prcplist.getColumn(delRow, "prcpclscd") == "H2" &&
  1346. ds_temp1_addprcp_prcplist.getColumn(delRow, "oprsrvno") == "0" &&
  1347. ds_temp1_addprcp_prcplist.getColumn(delRow, "prcpdd") == today &&
  1348. ds_temp1_addprcp_prcplist.getColumn(delRow, "anstcnfmneedyn") != "N"
  1349. )
  1350. {
  1351. ds_temp1_addprcp_prcplist.deleteRow(delRow);
  1352. }
  1353. }
  1354. ds_temp1_addprcp_prcplist.updatecontrol = true;
  1355. ds_temp1_addprcp_prcplist.enableevent = true;
  1356. }else if( errflagcd == 2 ){
  1357. if( sFlag == "U" ){
  1358. //model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and valyn!='완성' and anstcnfmneedyn!='N']");
  1359. // var delRow = ds_main_prcpsrch_prcplist.findRowExpr("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd > '" + today + "' && valyn != '완성' && anstcnfmneedyn != 'N'");
  1360. // ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1361. // 위 주석 아래와 같이 변경 2016-07-13 추민수
  1362. ds_main_prcpsrch_prcplist.enableevent = false;
  1363. ds_main_prcpsrch_prcplist.updatecontrol = false;
  1364. for(var delRow = ds_main_prcpsrch_prcplist.rowcount - 1; delRow >= 0; delRow--)
  1365. {
  1366. if( ds_main_prcpsrch_prcplist.getColumn(delRow, "status") != "S" &&
  1367. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpclscd") == "H2" &&
  1368. ds_main_prcpsrch_prcplist.getColumn(delRow, "oprsrvno") == "0" &&
  1369. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpdd") > today &&
  1370. ds_main_prcpsrch_prcplist.getColumn(delRow, "valyn") != "완성" &&
  1371. ds_main_prcpsrch_prcplist.getColumn(delRow, "anstcnfmneedyn") != "N"
  1372. )
  1373. {
  1374. ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1375. }
  1376. }
  1377. ds_main_prcpsrch_prcplist.updatecontrol = true;
  1378. ds_main_prcpsrch_prcplist.enableevent = true;
  1379. }else{
  1380. //model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd>'" + today + "' and anstcnfmneedyn!='N']");
  1381. // var delRow = ds_main_prcpsrch_prcplist.findRowExpr("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd > '" + today + "' && valyn != '완성' && anstcnfmneedyn != 'N'");
  1382. // ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1383. // 위 주석 아래와 같이 변경 2016-07-13 추민수
  1384. ds_main_prcpsrch_prcplist.enableevent = false;
  1385. ds_main_prcpsrch_prcplist.updatecontrol = false;
  1386. for(var delRow = ds_main_prcpsrch_prcplist.rowcount - 1; delRow >= 0; delRow--)
  1387. {
  1388. if( ds_main_prcpsrch_prcplist.getColumn(delRow, "status") != "S" &&
  1389. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpclscd") == "H2" &&
  1390. ds_main_prcpsrch_prcplist.getColumn(delRow, "oprsrvno") == "0" &&
  1391. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpdd") > today &&
  1392. ds_main_prcpsrch_prcplist.getColumn(delRow, "valyn") != "완성" &&
  1393. ds_main_prcpsrch_prcplist.getColumn(delRow, "anstcnfmneedyn") != "N"
  1394. )
  1395. {
  1396. ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1397. }
  1398. }
  1399. ds_main_prcpsrch_prcplist.updatecontrol = true;
  1400. ds_main_prcpsrch_prcplist.enableevent = true;
  1401. }
  1402. //model.removeNodeset("/root/temp1/addprcp/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "' and anstcnfmneedyn!='N']");
  1403. // var delRow = ds_temp1_addprcp_prcplist.findRowExpr("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd == '" + today + "' && anstcnfmneedyn != 'N'");
  1404. // ds_temp1_addprcp_prcplist.deleteRow(delRow);
  1405. // 위 주석 아래와 같이 변경 2016-07-13 추민수
  1406. ds_temp1_addprcp_prcplist.enableevent = false;
  1407. ds_temp1_addprcp_prcplist.updatecontrol = false;
  1408. for(var delRow = ds_temp1_addprcp_prcplist.rowcount - 1; delRow >= 0; delRow--)
  1409. {
  1410. if( ds_temp1_addprcp_prcplist.getColumn(delRow, "status") != "S" &&
  1411. ds_temp1_addprcp_prcplist.getColumn(delRow, "prcpclscd") == "H2" &&
  1412. ds_temp1_addprcp_prcplist.getColumn(delRow, "oprsrvno") == "0" &&
  1413. ds_temp1_addprcp_prcplist.getColumn(delRow, "prcpdd") == today &&
  1414. ds_temp1_addprcp_prcplist.getColumn(delRow, "anstcnfmneedyn") != "N"
  1415. )
  1416. {
  1417. ds_temp1_addprcp_prcplist.deleteRow(delRow);
  1418. }
  1419. }
  1420. ds_temp1_addprcp_prcplist.updatecontrol = true;
  1421. ds_temp1_addprcp_prcplist.enableevent = true;
  1422. }
  1423. else if( errflagcd == 4 ){
  1424. // model.removeNodeset("/root/main/prcpsrch/prcplist[status!='S' and (prcpkindcd = '60' or prcpkindcd = '70') and prcpdd='" + today + "']");
  1425. // model.removeNodeset("/root/temp1/addprcp/prcplist[status!='S' and prcpclscd='H2' and oprsrvno='0' and prcpdd='" + today + "']");
  1426. //var delRow = ds_main_prcpsrch_prcplist.findRowExpr("status != 'S' && (prcpkindcd == '60' || prcpkindcd == '70') && prcpdd == '" + today + "'");
  1427. //ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1428. //delRow = ds_temp1_addprcp_prcplist.findRowExpr("status != 'S' && prcpclscd == 'H2' && oprsrvno == '0' && prcpdd == '" + today + "'");
  1429. //ds_temp1_addprcp_prcplist.deleteRow(delRow);
  1430. // 위 주석 아래와 같이 변경 2016-07-13 추민수
  1431. ds_main_prcpsrch_prcplist.enableevent = false;
  1432. ds_main_prcpsrch_prcplist.updatecontrol = false;
  1433. for(var delRow = ds_main_prcpsrch_prcplist.rowcount - 1; delRow >= 0; delRow--)
  1434. {
  1435. if( ds_main_prcpsrch_prcplist.getColumn(delRow, "status") != "S" &&
  1436. (ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpkindcd") == "60" ||
  1437. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpkindcd") == "70") &&
  1438. ds_main_prcpsrch_prcplist.getColumn(delRow, "prcpdd") == today
  1439. )
  1440. {
  1441. ds_main_prcpsrch_prcplist.deleteRow(delRow);
  1442. }
  1443. }
  1444. ds_main_prcpsrch_prcplist.updatecontrol = true;
  1445. ds_main_prcpsrch_prcplist.enableevent = true;
  1446. ds_temp1_addprcp_prcplist.enableevent = false;
  1447. ds_temp1_addprcp_prcplist.updatecontrol = false;
  1448. for(var delRow = ds_temp1_addprcp_prcplist.rowcount - 1; delRow >= 0; delRow--)
  1449. {
  1450. if( ds_temp1_addprcp_prcplist.getColumn(delRow, "status") != "S" &&
  1451. ds_temp1_addprcp_prcplist.getColumn(delRow, "prcpclscd") == "H2" &&
  1452. ds_temp1_addprcp_prcplist.getColumn(delRow, "oprsrvno") == "0" &&
  1453. ds_temp1_addprcp_prcplist.getColumn(delRow, "prcpdd") == today
  1454. )
  1455. {
  1456. ds_temp1_addprcp_prcplist.deleteRow(delRow);
  1457. }
  1458. }
  1459. ds_temp1_addprcp_prcplist.updatecontrol = true;
  1460. ds_temp1_addprcp_prcplist.enableevent = true;
  1461. //sysf_trace("cms2222===== " + ds_result_saveinvaliprcplist.saveXML())
  1462. }
  1463. }
  1464. /**
  1465. * @group :
  1466. * @ver
  1467. : 2008.01
  1468. * @by : 전지은
  1469. * @---------------------------------------------------
  1470. * @type : function
  1471. * @access : public
  1472. * @desc : 그룹처방일 경우, 자코드를 조회하여 추가한다
  1473. * @param :
  1474. * @return : true / false
  1475. * @---------------------------------------------------
  1476. */
  1477. function fCheckCpPrcp( objFlag, strSrc, strDest, sendRow, srchRow, prcpInptFlag, grupSrc, direcSrc ) {
  1478. var ds_src = this.objects[strSrc];
  1479. var ds_dest = this.objects[strDest];
  1480. var prcpClsCd = ds_src.getColumn(sendRow, "prcpclscd"); //model.getValue( strSrc + "[" + sendRow + "]/prcpclscd" );
  1481. var prcpKindCd = ds_src.getColumn(sendRow, "prcpkindcd"); //model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd" );
  1482. var drugmthdspccd = ds_src.getColumn(sendRow, "drugmthdspccd"); //model.getValue( strSrc + "[" + sendRow + "]/drugmthdspccd" );
  1483. var prcpnm = ds_src.getColumn(sendRow, "prcpnm"); //model.getValue( strSrc + "[" + sendRow + "]/prcpnm" );
  1484. var drugmastspec = ds_src.getColumn(sendRow, "drugmastspec") + "^"; //model.getValue( strSrc + "[" + sendRow + "]/drugmastspec" ) + "^";
  1485. var usge = ds_root.getColumn(0, "usge"); //model.getValue ( "/root/usge" );
  1486. var cpchk = ds_root.getColumn(0, "cp"); //model.getValue ( "/root/cp" );
  1487. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag"); //model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1488. //추가
  1489. var prcpInptFlag = ds_src.getColumn(sendRow, "prcpinptflag"); //model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" );
  1490. if ( ds_src.getColumn(sendRow, "grupsnglflag") == "M" ) { //그룹코드 M을 찾아낸다. 처방검색일때만 풀린다. model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "M"
  1491. var grupCond1 = ds_src.getColumn(sendRow, "prcpcd"); //model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1492. var grupCond3 = "";
  1493. var grupCond4 = "";
  1494. var inclprcpno = "";
  1495. if ( objFlag == "child" ) {
  1496. grupCond3 = opener.ds_init.getColumn(0, "prcpdd"); //opener.model.getValue ( "/root/init/prcpdd" );
  1497. grupCond4 = opener.ds_paminfo.getColumn(0, "insukind"); //opener.model.getValue ( "/root/paminfo/list/insukind");
  1498. if ( usge == "prcp" ) { //처방화면에만 종속처방이 적용된다.
  1499. inclprcpno = eval(ds_init.getColumn(0, "inclprcpno")) + 1; //종속처방번호를 받아온다. //model.getValue ( "/root/init/inclprcpno")
  1500. }
  1501. } else {
  1502. grupCond3 = ds_init.getColumn(0, "prcpdd"); //model.getValue ( "/root/init/prcpdd" );
  1503. grupCond4 = ds_paminfo.getColumn(0, "insukind"); //model.getValue ( "/root/paminfo/list/insukind");
  1504. if ( usge == "prcp" ) {//처방화면에만 종속처방이 적용된다.
  1505. inclprcpno = eval(ds_init.getColumn(0, "inclprcpno")) + 1; //종속처방번호를 받아온다. model.getValue ( "/root/init/inclprcpno")
  1506. }
  1507. }
  1508. lf_prcpGroupSrch ( grupCond1, grupCond3, grupCond4 );
  1509. if ( utlf_isNull(grupSrc) ) {
  1510. var ds_grupSrc = new dataset; //"/root/prcpgroup/prcplist";
  1511. ds_grupSrc.copyData(ds_prcpgroup_prcplist);
  1512. }
  1513. //var srcNodeList = model.instances(0).selectNodes( grupSrc );
  1514. if ( ds_grupSrc.rowcount > 0 ) {
  1515. if ( objFlag == "child" ) {
  1516. //var destNode = model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1517. //model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1518. ds_dest.insertRow(srchRow);
  1519. ds_dest.copyRow(srchRow, ds_src, sendRow);
  1520. /* duplicate 예시
  1521. ds_main_prcplist.insertRow(insRow);
  1522. ds_main_prcplist.copyRow(insRow, ds_prcpdel_prcplist, i);
  1523. model.duplicate ( "/root/main/prcp", "/root/prcpdel/prcplist[" + i + "]", "*[" + insRow + "]" );
  1524. */
  1525. if ( !opener.lf_addPrcpSetValue("main", "ds_main_prcplist", srchRow, prcpInptFlag, "N", "05") ) { // !opener.javascript.addPrcpSetValue( "main", "/root/main/prcp/prcplist" , srchRow, prcpInptFlag, "N", "05" )
  1526. return 0;
  1527. }
  1528. } else {
  1529. var destNode = strDest;
  1530. //model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1531. ds_dest.insertRow(srchRow);
  1532. ds_dest.copyRow(srchRow, ds_src, sendRow);
  1533. if ( !lf_addPrcpSetValue("main", ds_dest, srchRow, prcpInptFlag, "N", "05") ) { // !addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", "05" )
  1534. return 0;
  1535. }
  1536. }
  1537. srchRow ++;
  1538. if ( usge == "prcp" ) {
  1539. for (var i = 0; i < ds_grupSrc.rowcount; i++) { // var i=1; i<=srcNodeList.length; i++
  1540. if ( objFlag == "child" ) {
  1541. //var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1542. //model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1543. opener.ds_dest.insertRow(srchRow);
  1544. opener.ds_dest.copyRow(srchRow, ds_src, i);
  1545. if ( !opener.lf_addPrcpSetValue("main", ds_dest, srchRow, prcpInptFlag, "N", "05") ) { // !opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", "05" )
  1546. return 0;
  1547. }
  1548. } else {
  1549. //var destNode = strDest;
  1550. //model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1551. ds_dest.insertRow(srchRow);
  1552. ds_dest.copyRow(srchRow, ds_grupSrc, i); // 확인 필요
  1553. if ( !lf_addPrcpSetValue("main", ds_dest, srchRow, prcpInptFlag, "N", "05") ) { // !addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, prcpInptFlag, "N", "05" )
  1554. return 0;
  1555. }
  1556. //자코드의 처방종류에 값이 들어가지 않아, 강제로 셋팅함
  1557. ds_src.setColumn(srchRow, "prcpkindcd", ds_src.getColumn(sendRow, "prcpkindcd")); //model.setValue(strSrc + "[" + srchRow + "]/prcpkindcd", model.getValue( strSrc + "[" + sendRow + "]/prcpkindcd" ));
  1558. //cp처방일 경우, prcpinptflag와 cpno를 모코드와 동일한 값으로 셋팅함
  1559. if( ds_src.getColumn(sendRow, "prcpinptflag") == "05" ){ // model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) == "05"
  1560. ds_src.setColumn(srchRow, "prcpinptflag", "05"); // model.setValue(strSrc + "[" + srchRow + "]/prcpinptflag", "05");
  1561. ds_src.setColumn(srchRow, "etclnkspec", ds_src.getColumn(sendRow, "etclnkspec")); // model.setValue(strSrc + "[" + srchRow + "]/etclnkspec", model.getValue( strSrc + "[" + sendRow + "]/etclnkspec" ));
  1562. }
  1563. }
  1564. if ( objFlag == "child" ) {
  1565. srchRow = opener.addPrcpPop(srchRow, usge, prcpClsCd, srchRow); //opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1566. } else {
  1567. srchRow = addPrcpPop(srchRow, usge, prcpClsCd, srchRow); //addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1568. }
  1569. srchRow ++;
  1570. }
  1571. }
  1572. return srchRow;
  1573. }
  1574. } else if ( ds_src.getColumn(sendRow, "grupsnglflag") == "J" ) { //그룹지시처방 J을 찾아낸다. model.getValue( strSrc + "[" + sendRow + "]/grupsnglflag" ) == "J"
  1575. //조회조건
  1576. var direcCond1 = ds_src.getColumn(sendRow, "srchcondcnts"); //model.getValue( strSrc + "[" + sendRow + "]/srchcondcnts" );
  1577. var direcCond5 = ds_src.getColumn(sendRow, "prcpcd"); //model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1578. var direcCond3 = "";
  1579. var direcCond4 = "";
  1580. if ( prcpClsCd == "04" ) {
  1581. hsctflag = "Y";
  1582. }
  1583. if ( objFlag == "child" ) {
  1584. direcCond3 = opener.ds_init.getColumn(0, "prcpdd"); //opener.model.getValue ( "/root/init/prcpdd" );
  1585. direcCond4 = opener.ds_paminfo.getColumn(0, "insukind"); //opener.model.getValue ( "/root/paminfo/list/insukind");
  1586. } else {
  1587. direcCond3 = ds_init.getColumn(0, "prcpdd"); //model.getValue ( "/root/init/prcpdd" );
  1588. direcCond4 = ds_paminfo.getColumn(0, "insukind"); //model.getValue ( "/root/paminfo/list/insukind");
  1589. }
  1590. lf_prcpDirecSrch ( direcCond1, direcCond3, direcCond4, direcCond5 );
  1591. if ( utlf_isNull(direcSrc) ) {
  1592. //direcSrc = "/root/prcpdirec/prcplist";
  1593. var ds_direcSrc = new dataset;
  1594. ds_direcSrc.copyData(ds_prcpdirec_prcplist);
  1595. }
  1596. //var srcNodeList = model.instances(0).selectNodes( direcSrc );
  1597. if ( ds_direcSrc.rowcount > 0 ){ //그룹지시처방 J는 종속하는 수가 코드가 있을 때만 추가.
  1598. if ( objFlag == "child" ) {
  1599. //var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1600. //model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1601. opener.ds_dest.insertRow(srchRow);
  1602. opener.ds_dest.copyRow(srchRow, ds_src, sendRow);
  1603. //종속처방번호 Setting ( hsctlnkno )
  1604. var hsctlnkno = eval ( opener.ds_init.getColumn(0, "hsctlnkno") ) + 1; //eval ( opener.model.getValue ( "/root/init/hsctlnkno" )) + 1;
  1605. opener.ds_init.setColumn(0, "hsctlnkno", hsctlnkno); //opener.model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
  1606. if ( !opener.lf_addPrcpSetValue("main", ds_dest, srchRow, "05", "M") ) { // !opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05", "M" )
  1607. return 0;
  1608. }
  1609. } else {
  1610. var destNode = strDest;
  1611. var hsctlnkno = eval ( ds_init.getColumn(0, "hsctlnkno") ) + 1; //eval ( model.getValue ( "/root/init/hsctlnkno" )) + 1;
  1612. ds_init.setColumn(0, "hsctlnkno", hsctlnkno); //model.setValue ( "/root/init/hsctlnkno", hsctlnkno );
  1613. ds_dest.insertRow(srchRow);
  1614. ds_dest.copyRow(srchRow, ds_src, i);
  1615. //model.duplicate( destNode, strSrc + "[" + sendRow + "]", "*[" + srchRow + "]");
  1616. if ( !opener.lf_addPrcpSetValue("main", ds_dest, srchRow, "05", "M") ) { // !addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05", "M" )
  1617. return 0;
  1618. }
  1619. }
  1620. //CP 약속셋 생성 시에는 자코드가 풀리면 안된다. CP배치를 통해 실처방 저장시 풀린다! (2008.01.22)
  1621. if( opener.ds_root.getColumn(0, "cp") == "S" || ds_root.getColumn(0, "cp") == "S" ){ // opener.model.getValue("/root/cp") == "S" || model.getValue("/root/cp") == "S"
  1622. return;
  1623. }
  1624. if ( objFlag == "child" ) {
  1625. srchRow = opener.addPrcpPop (srchRow, usge, prcpClsCd, srchRow ); //opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1626. } else {
  1627. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1628. }
  1629. srchRow ++;
  1630. for ( var k = 0; k < ds_direcSrc.rowcount; k++ ) { // var k=1; k <= srcNodeList.length; k++
  1631. if ( objFlag == "child" ) {
  1632. //var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1633. //model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]");
  1634. opener.ds_dest.insertRow(srchRow);
  1635. opener.ds_dest.copyRow(srchRow, ds_direcSrc, k);
  1636. if ( !opener.lf_addPrcpSetValue("main", ds_dest, srchRow, "05", hsctflag) ) { // !opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05", hsctflag )
  1637. return 0;
  1638. }
  1639. } else {
  1640. //var destNode = strDest;
  1641. //model.duplicate( destNode, direcSrc + "[" + k + "]", "*[" + srchRow + "]");
  1642. ds_dest.insertRow(srchRow);
  1643. ds_dest.copyRow(srchRow, ds_direcSrc, k);
  1644. if ( !lf_addPrcpSetValue("main", ds_dest, srchRow, "05", hsctflag) ) { // !addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05", hsctflag )
  1645. return 0;
  1646. }
  1647. if( ds_src.getColumn(sendRow, "prcpinptflag") == "05" ){ // model.getValue( strSrc + "[" + sendRow + "]/prcpinptflag" ) == "05"
  1648. ds_src.setColumn(srchRow, "prcpinptflag", "05"); // model.setValue(strSrc + "[" + srchRow + "]/prcpinptflag", "05");
  1649. ds_src.setColumn(srchRow, "etclnkspec", ds_src.getColumn(sendRow, "etclnkspec")); // model.setValue(strSrc + "[" + srchRow + "]/etclnkspec", model.getValue( strSrc + "[" + sendRow + "]/etclnkspec" ));
  1650. }
  1651. }
  1652. if ( objFlag == "child" ) {
  1653. srchRow = opener.addPrcpPop (srchRow, usge, prcpClsCd, srchRow ); //opener.javascript.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1654. } else {
  1655. srchRow = addPrcpPop (srchRow, usge, prcpClsCd, srchRow ); //addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  1656. }
  1657. srchRow ++;
  1658. }
  1659. }
  1660. return srchRow;
  1661. } else if ( (prcpClsCd == "B2" || prcpClsCd == "B4" || prcpClsCd == "B6") && (lf_getArrayData (drugmastspec, 0, 2, "^", "|" ) == "0" || lf_getArrayData (drugmastspec, 0, 2, "^", "|" ) == "-")){
  1662. //검사대분류유형(testlrgkind) 그룹: 0, 1
  1663. //-일 때는 검체와 상관없는 그룹코드
  1664. var grupCond1 = ds_src.getColumn(sendRow, "prcpcd"); //model.getValue( strSrc + "[" + sendRow + "]/prcpcd" );
  1665. var grupCond3 = "";
  1666. var grupCond4 = "";
  1667. var popflag = "group"
  1668. if ( objFlag == "child" ) {
  1669. popflag = "child";
  1670. grupCond3 = opener.ds_init.getColumn(0, "prcpdd"); // grupCond3 = opener.model.getValue ( "/root/init/prcpdd" );
  1671. grupCond4 = opener.ds_paminfo.getColumn(0, "insukind"); // grupCond4 = opener.model.getValue ( "/root/paminfo/list/insukind");
  1672. } else {
  1673. grupCond3 = ds_init.getColumn(0, "prcpdd"); //model.getValue ( "/root/init/prcpdd" );
  1674. grupCond4 = ds_pamino.getColumn(0, "insukind"); //model.getValue ( "/root/paminfo/list/insukind");
  1675. }
  1676. //구수가코드일 경우
  1677. if ( oldprcpflag == "Y" ) {
  1678. popflag = "oldprcp";
  1679. }
  1680. var drugmthdspccd = ds_src.getColumn(sendRow, "drugmthdspccd"); //model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccd" );
  1681. var spccd = "";
  1682. var spcnm = "";
  1683. if ( drugmthdspccd == "998" || drugmthdspccd == "999" ) {
  1684. fGetSpc ( sendRow, popflag );
  1685. if ( drugmthdspccd == "998") {
  1686. if ( frmf_getParameter ("SPMMO03500_rtn_useyn") == "Y" ) {
  1687. spccd = frmf_getParameter ( "SPMMO03500_rtn_spccd" );
  1688. spcnm = frmf_getParameter ( "SPMMO03500_rtn_spcscrnnm" );
  1689. }
  1690. frmf_clearParameter ( "SPMMO03500_rtn_useyn" );
  1691. frmf_clearParameter ( "SPMMO03500_rtn_spccd" );
  1692. frmf_clearParameter ( "SPMMO03500_rtn_spcscrnnm" );
  1693. } else {
  1694. if ( frmf_getParameter ("SPMMO03400_rtn_useyn") == "Y" ) {
  1695. spccd = frmf_getParameter ( "SPMMO03400_rtn_spccd" );
  1696. spcnm = frmf_getParameter ("SPMMO03400_rtn_spcscrnnm" );
  1697. }
  1698. frmf_clearParameter ( "SPMMO03400_rtn_useyn" );
  1699. frmf_clearParameter ( "SPMMO03400_rtn_spccd" );
  1700. frmf_clearParameter ( "SPMMO03400_rtn_spcscrnnm" );
  1701. }
  1702. } else { //팝업이 뜨지 않을 때는 본체의 검체코드로 검색한다.
  1703. spccd = drugmthdspccd;
  1704. spcnm = ds_src.getColumn(sendRow, "drugmthdspccdnm"); //model.getValue ( strSrc + "[" + sendRow + "]/drugmthdspccdnm" );
  1705. }
  1706. lf_prcpGroupSrch ( grupCond1, grupCond3, grupCond4, spccd, lf_getArrayData (drugmastspec, 0, 2, "^", "|" ), "getLisPrcpGroupInfo" );
  1707. // 필요없어 보여 주석처리
  1708. // if ( objFlag == "child" ) {
  1709. // var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1710. // } else {
  1711. // var destNode = strDest;
  1712. // }
  1713. if ( utlf_isNull(grupSrc) ) {
  1714. //grupSrc = "/root/prcpgroup/prcplist";
  1715. var ds_grupSrc = new dataset;
  1716. ds_grupSrc.copyData(ds_prcpgroup_prcplist);
  1717. }
  1718. //var srcNodeList = model.instances(0).selectNodes( grupSrc );
  1719. for (var i = 0; i < ds_grupSrc.rowcount; i++) {
  1720. if ( objFlag == "child" ) {
  1721. //var destNode = opener.model.instances(0).selectSingleNode( strDest ) // or opener.root.main.prcp 이런식으로
  1722. //model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1723. opener.ds_dest.insertRow(srchRow);
  1724. opener.ds_dest.copyRow(srchRow, ds_grupSrc, i);
  1725. if ( !opener.lf_addPrcpSetValue("main", ds_dest, srchRow, "05") ) { // !opener.javascript.addPrcpSetValue ( "main", strDest + "/prcplist", srchRow, "05" )
  1726. return 0;
  1727. }
  1728. if (!utlf_isNull(spccd)) {
  1729. opener.ds_main_prcplist.setColumn(srchRow, "drugmthdspccd", spccd); // opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
  1730. opener.ds_main_prcplist.setColumn(srchRow, "drugmthdspccdnm", spcnm); // opener.model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
  1731. }
  1732. } else {
  1733. // var destNode = strDest;
  1734. // model.duplicate( destNode, grupSrc +"[" + i + "]", "*[" + srchRow + "]");
  1735. ds_dest.insertRow(srchRow);
  1736. ds_dest.copyRow(srchRow, ds_grupSrc, i);
  1737. if (!lf_addPrcpSetValue ( "main", ds_dest, srchRow, "05" )) {
  1738. return 0;
  1739. }
  1740. if (!utlf_isNull(spccd)) {
  1741. ds_main_prcplist.setColumn(srchRow, "drugmthdspccd", spccd); // model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccd", spccd );
  1742. ds_main_prcplist.setColumn(srchRow, "drugmthdspccdnm", spcnm); // model.setValue ( "/root/main/prcp/prcplist[" + srchRow + "]/drugmthdspccdnm", spcnm );
  1743. }
  1744. }
  1745. srchRow ++;
  1746. }
  1747. } else { //그룹코드 M, J 가 아닐 경우
  1748. return 0;
  1749. }
  1750. }
  1751. function cf_TXMMP00803(sSvcId, nErrorCode, sErrorMsg) {
  1752. if(nErrorCode < 0) {
  1753. stopSavePrcpYN_SMMMO00110 = "Y";
  1754. return false;
  1755. } else {
  1756. questionYN_SMMMO00110 = "Y";
  1757. stopSavePrcpYN_SMMMO00110 = "N";
  1758. // model.removeNodeset("root/result");
  1759. // model.makeNode("root/result");
  1760. ds_send_delprcplist.clearData(); // model.removeNodeset("root/send/delprcplist");
  1761. ds_send_serrprcplist.clearData(); // model.removeNodeset("root/send/errprcplist");
  1762. ds_send_saveinvaliprcplist.clearData(); // model.removeNodeset("root/send/saveinvaliprcplist");
  1763. //미래처방도 없다면 더이상 저장할 데이터가 없으므로, return
  1764. if( ds_main_prcpsrch_prcplist.getCaseCount("prcpdd >'" + today + "'") == 0 ){ // instance1.selectSingleNode("/root/main/prcpsrch/prcplist[prcpdd >'" + today + "']") == null
  1765. ds_main_prcpsrch_prcplist.clearData(); //model.removeNodeset("/root/main/prcpsrch/prcplist");
  1766. return true;
  1767. }
  1768. }
  1769. }
  1770. function cf_TXMMP00806(sSvcId, nErrorCode, sErrorMsg) {
  1771. if(nErrorCode < 0) { }
  1772. }
  1773. /**
  1774. * @group :
  1775. * @ver : 2007.09
  1776. * @by : 전지은
  1777. * @---------------------------------------------------
  1778. * @type : function
  1779. * @access : public
  1780. * @desc : 스텝의 진행상태를 참고하여, 처방정보를 조회한다
  1781. * @param :
  1782. * @return :
  1783. * @---------------------------------------------------
  1784. */
  1785. function fGetCurrentPrcpList(mode){
  1786. /* 2007.11.22 추가
  1787. * 일괄발행을 하기 전, 처방 그리드에 미리 추가시켜 놓은 처방이 있을 경우,
  1788. * prcp 의 처방 리스트를 copy해서 따로 담아두었다가
  1789. * 약속셋에서 조회한 리스트( /root/main/prcpsrch )에 합친다.
  1790. * "/root/main/prcp" -> (copy) -> "/root/temp1/addprcp" -> (추가) -> "/root/main/prcpsrch"
  1791. */
  1792. if( utlf_isNull(mode) ){
  1793. mode = "SEL";
  1794. }
  1795. // 20200401 김현석, 적용일자 세팅, 20200310998
  1796. //var today = utlf_getCurrentDate();
  1797. var today = fGetAppdd();
  1798. var prcpGenrFlag = ds_patflag.getColumn(0, "prcpgenrflag"); //model.getValue("/root/patflag/list/prcpgenrflag");
  1799. var cpgIoFlag = ds_main_masterinfo_info.getColumn(0, "ioflagcd"); //model.getValue("/root/main/masterinfo/info/ioflagcd");
  1800. var nodelist = null;
  1801. dsf_createDs("ds_nodelist1");
  1802. if( cpgflagcd == "01" && prcpGenrFlag == "O"){ //1. CP외래환자
  1803. if(cpgIoFlag == "O" ){ // 1-1) 외래CP
  1804. ds_main_steppath_info.filter("prcpdd == '" + today + "'"); //instance1.selectNodes("/root/main/steppath/info" + "[prcpdd='" + today + "']");
  1805. ds_nodelist1.copyData(ds_main_steppath_info, true);
  1806. ds_main_steppath_info.filter(""); // 필터링 해제
  1807. }else{ // 1-2) D0입원CP
  1808. ds_main_steppath_info.filter("times == '0'"); //instance1.selectNodes("/root/main/steppath/info" + "[times='0']");
  1809. ds_nodelist1.copyData(ds_main_steppath_info, true);
  1810. ds_main_steppath_info.filter(""); // 필터링 해제
  1811. if( nodelist <= 0 ){
  1812. ds_main_steppath_info.filter("times == '1'"); //instance1.selectNodes("/root/main/steppath/info" + "[times='1']");
  1813. ds_nodelist1.copyData(ds_main_steppath_info, true);
  1814. ds_main_steppath_info.filter(""); // 필터링 해제
  1815. }
  1816. }
  1817. } else { //2. CP입원환자, CPG입원+외래환자
  1818. var inptStepIdx = ds_main_steppath_info.findRowExpr("stepstat == '10' && decirflag == 'I'"); //instance1.selectSingleNode("/root/main/steppath/info[stepstat = '10' and decirflag = 'I']/stepno");
  1819. var inptStepNode = ds_main_steppath_info.getColumn(inptStepIdx, "stepno");
  1820. ds_nodelist1.clear(); //nodelist = null;
  1821. ds_main_steppath_info.filter("stepstat == '10' && savestatus == 'I'"); //instance1.selectNodes("/root/main/steppath/info" + "[stepstat = '10' and savestatus='I']");
  1822. ds_nodelist1.copyData(ds_main_steppath_info, true);
  1823. ds_main_steppath_info.filter(""); // 필터링 해제
  1824. }
  1825. //anticncrprtlno
  1826. //alert("cms ddd >>> " + etclnkspecValue_SMMMO00110)
  1827. dsf_makeValue(ds_send_reqdata, "cpgno", "string", ds_main_masterinfo_info.getColumn(0, "cpgno")); //model.makeValue ( "/root/send/reqdata/cpgno", model.getValue("/root/main/masterinfo/info/cpgno") );
  1828. dsf_makeValue(ds_send_reqdata, "cpghistseq", "string", ds_main_masterinfo_info.getColumn(0, "cpghistseq")); //model.makeValue ( "/root/send/reqdata/cpghistseq", model.getValue("/root/main/masterinfo/info/cpghistseq") );
  1829. dsf_makeValue(ds_send_reqdata, "cpgappno", "string", ds_temp1_getdata.getColumn(0, "cpgappno")); //model.makeValue ( "/root/send/reqdata/cpgappno", model.getValue("/root/temp1/getdata/cpgappno") );
  1830. dsf_makeValue(ds_send_reqdata, "etclnkspec", "string", etclnkspecValue_SMMMO00110);
  1831. dsf_makeValue(ds_send_reqdata, "cpgflagcd", "string", cpgflagcd); //model.makeValue ( "/root/send/reqdata/cpgflagcd", cpgflagcd ); //@@@선택필수 조회를 위한 파라메터(cpgFlagCd) 추가
  1832. //var appScopMode = model.getValue("/root/main/appscopmode"); //CPG인 경우, CPG스텝/CP스텝 적용 모드를 구분함 (2010.06.26)
  1833. var setNoArray = "";
  1834. var timesArray = "";
  1835. var startStepNo = "";
  1836. var endStepNo = "";
  1837. var startTimes = "";
  1838. var endTimes = "";
  1839. var prcpddArray = "";
  1840. isstimes_SMMMO00110 = ""; //발행시작회차 | 발행종료회차
  1841. isssteps_SMMMO00110 = ""; //발행시작스텝 | 발행종료스텝
  1842. stepArray_SMMMO00110 = "";
  1843. prcpddArray_SMMMO00110 = "";
  1844. if( ds_nodelist1.rowcount > 0 ){
  1845. for(var i = 0; i < ds_nodelist1.rowcount; i++){
  1846. //var node = nodelist.item(i);
  1847. var val1 = ds_nodelist1.getColumn(i, "setno"); //node.selectSingleNode("setno");
  1848. if( !utlf_isNull(val1) ){
  1849. setNoArray = setNoArray + val1 + ",";
  1850. }
  1851. var val2 = ds_nodelist1.getColumn(i, "times"); //node.selectSingleNode("times");
  1852. var orgVal2 = ds_nodelist1.getColumn(i, "orgtimes"); //node.selectSingleNode("orgtimes");
  1853. if( !utlf_isNull(orgVal2) ){
  1854. timesArray = timesArray + orgVal2 + ",";
  1855. if(i == 0){
  1856. startTimes = orgVal2;
  1857. }
  1858. if(i == (ds_nodelist1.rowcount - 1)){
  1859. endTimes = orgVal2;
  1860. }
  1861. }else if( !utlf_isNull(val2) ){
  1862. timesArray = timesArray + val2 + ",";
  1863. if(i == 0){
  1864. startTimes = val2;
  1865. }
  1866. if(i == (ds_nodelist1.rowcount - 1)){
  1867. endTimes = val2;
  1868. }
  1869. }
  1870. var val3 = ds_nodelist1.getColumn(i, "stepno"); //node.selectSingleNode("stepno");
  1871. if( !utlf_isNull(val3) ){
  1872. stepArray_SMMMO00110 = stepArray_SMMMO00110 + val3 + "|";
  1873. if( i == 0 ) {
  1874. startStepNo = val3;
  1875. }
  1876. if(i == (ds_nodelist1.rowcount - 1)){
  1877. endStepNo = val3;
  1878. }
  1879. }
  1880. var stepflagcd = ds_nodelist1.getColumn(i, "stepflagcd"); //node.selectSingleNode("stepflagcd");
  1881. var val4 = ds_nodelist1.getColumn(i, "prcpdd"); //node.selectSingleNode("prcpdd");
  1882. if( !utlf_isNull(val4) ){
  1883. prcpddArray_SMMMO00110 = prcpddArray_SMMMO00110 + val4 + "|";
  1884. if( stepflagcd != "D" ){
  1885. prcpddArray = prcpddArray + val4 + ",";
  1886. }
  1887. }
  1888. }
  1889. setNoArray = setNoArray.substr(0, setNoArray.length-1);
  1890. timesArray = timesArray.substr(0, timesArray.length-1);
  1891. stepArray_SMMMO00110 = stepArray_SMMMO00110.substr(0, stepArray_SMMMO00110.length-1);
  1892. prcpddArray = prcpddArray.substr(0, prcpddArray.length-1); //D스텝 포함 처방일
  1893. prcpddArray_SMMMO00110 = prcpddArray_SMMMO00110.substr(0, prcpddArray_SMMMO00110.length-1); //D스텝 제외 A스텝들의 처방일
  1894. isstimes_SMMMO00110 = startTimes + "|" + endTimes; //시작-종료회차(js공통변수)
  1895. isssteps_SMMMO00110 = startStepNo + "|" + endStepNo; //시작-종료스텝(js공통변수)
  1896. }else{
  1897. mode = "";
  1898. }
  1899. /*------------------------------------------------------------------------------------------------------------------*/
  1900. // DSC or ER 환자일 경우 입원필요 전 처방까지는 ordtype 'D' 이후 처방들은 'I' 가 되므로, 기준 스텝을 함께 보낸다.
  1901. // => isssteps_SMMMO00110 의 예외 사용 : 입원필요스텝 존재 시, 해당 '입원필요날짜'를 | 구분자로 세번째 값으로 보내줌.
  1902. // 미래처방 저장 시 server 단에서는 '입원필요날짜'부터는 처방의 ordtype을 I로 넣어줌 (입원필요날짜 이전:현재 ordtype, 이후:I)
  1903. /*------------------------------------------------------------------------------------------------------------------*/
  1904. if( (prcpGenrFlag == "D" || prcpGenrFlag == "E") && !utlf_isNull(inptStepNode) ){
  1905. var inptDDIdx = ds_main_steppath_info.findRowExpr("stepstat == '10' && stepno == '" + inptStepNode + "'");
  1906. var inptDDNode = ds_main_steppath_info.getColumn(inptDDIdx, "prcpdd"); //instance1.selectSingleNode("/root/main/steppath/info" + "[stepstat = '10' and stepno='" + inptStepNode.text + "']/prcpdd");
  1907. isssteps_SMMMO00110 += "|" + inptDDNode;
  1908. }
  1909. dsf_makeValue(ds_send_reqdata, "dayno", "string", timesArray); // model.makeValue ("/root/send/reqdata/dayno", timesArray);
  1910. dsf_makeValue(ds_send_reqdata, "setcond", "string", setNoArray); // model.makeValue ("/root/send/reqdata/setcond", setNoArray);
  1911. dsf_makeValue(ds_send_reqdata, "cpgflagcd", "string", settypecd); // model.makeValue ("/root/send/reqdata/cpgflagcd", settypecd);
  1912. dsf_makeValue(ds_send_reqdata, "prcpddcond", "string", prcpddArray); // model.makeValue ("/root/send/reqdata/prcpddcond", prcpddArray);
  1913. dsf_makeValue(ds_send_reqdata, "stepcond", "string", stepArray_SMMMO00110); // model.makeValue ("/root/send/reqdata/stepcond", stepArray_SMMMO00110); //@@@선택필수 조회를 위한 조건 추가
  1914. sysf_trace(">>>>>>>>>>>>>>>>>>>>>>>>")
  1915. utlf_addLog(ds_send_reqdata.saveXML())
  1916. if( mode == "SEL" ){
  1917. var genrflag = ds_patflag.getColumn(0, "prcpgenrflag"); //model.getValue ( "/root/patflag/list/prcpgenrflag" );
  1918. //setno에 포함되는 모든 처방코드(목록)를 조회한다.
  1919. var oParam = {};
  1920. oParam.id = "TRMMP02202";
  1921. oParam.service = "prcpbaseapp.CpMngt";
  1922. oParam.method = "reqGetPrcpSetList";
  1923. oParam.inds = "req=ds_send_reqdata";
  1924. oParam.outds = "ds_main_prcpsrch_prcplist=prcplist ds_main_prcpsrch_essprcplist=essprcplist";
  1925. oParam.async = false;
  1926. oParam.callback = "cf_TRMMP02202";
  1927. tranf_submit(oParam);
  1928. utlf_addLog(ds_main_prcpsrch_prcplist.saveXML())
  1929. }
  1930. stopSavePrcpYN_SMMMO00110 = "Y";
  1931. ds_send_reqdata.clearData(); //model.removeNodeset ( "/root/send/reqdata" ); //2008.11.30 추가
  1932. }
  1933. function cf_TRMMP02202(sSvcId, nErrorCode, sErrorMsg) {
  1934. if(nErrorCode < 0) {
  1935. return;
  1936. } else {
  1937. //start: CPG인 경우, 처방 저장 범위 중 필수처방이 있다면 별도 table에 정보를 함께 저장
  1938. if( cpgflagcd == "02" ){
  1939. //(1) 선택필수(그룹) 셋 처방을 따로 조회해와서, 팝업으로 발행할 처방 선택은 후 prcpsrch에 합쳐줌 (2010.04.28 JJE)
  1940. if( ds_main_prcpsrch_essprcplist.rowcount > 0 ){ // instance1.selectSingleNode("/root/main/prcpsrch/essprcplist") != null
  1941. frmf_open("SPMMP03900"); //modal("SPMMP03900"); //선택필수 팝업 호출 (return 결과: /root/send/dessprcplist)
  1942. ds_main_prcpsrch_essprcplist.clearData(); //model.removeNodeset("/root/main/prcpsrch/essprcplist"); //선택필수 전체 리스트 삭제
  1943. }
  1944. }
  1945. var PrcpList = ds_main_prcpsrch_prcplist; //instance1.selectNodes("/root/main/prcpsrch/prcplist");
  1946. var keyInfo = "";
  1947. var pEssCnt = 0;
  1948. var dEssCnt = 0;
  1949. for(var i = 0; i < PrcpList.rowcount; i++){
  1950. //var node = PrcpList.item(i);
  1951. var etclnkspecNode = PrcpList.getColumn(i, "etclnkspec"); //node.selectSingleNode("etclnkspec");
  1952. var prcpinptflagNode = PrcpList.getColumn(i, "prcpinptflag"); //node.selectSingleNode("prcpinptflag");
  1953. var prcpgenrflagNode = PrcpList.getColumn(i, "prcpgenrflag"); //node.selectSingleNode("prcpgenrflag");
  1954. // ★ stepno 의 노드 text 에 값이 null 이라면, setval 안한다!
  1955. prcpinptflagNode = "05"; //model.setValue(prcpinptflagNode, "05");
  1956. prcpgenrflagNode = genrflag; //model.setValue(prcpgenrflagNode, genrflag);
  1957. var pEssnprcpynNode = PrcpList.getColumn(i, "essnprcpyn"); //node.selectSingleNode("essnprcpyn");
  1958. var pEsslimnoNode = PrcpList.getColumn(i, "limno"); //node.selectSingleNode("limno");
  1959. var pEsslimhistnoNode = PrcpList.getColumn(i, "limhistno"); //node.selectSingleNode("limhistno");
  1960. var pEssSetnoNode = PrcpList.getColumn(i, "setno"); //node.selectSingleNode("setno");
  1961. var pEssSettypecdNode = PrcpList.getColumn(i, "settypecd"); //node.selectSingleNode("settypecd");
  1962. var pEssSetcdnoNode = PrcpList.getColumn(i, "setcdno"); //node.selectSingleNode("setcdno");
  1963. var pEssPrcpddNode = PrcpList.getColumn(i, "prcpdd"); //node.selectSingleNode("prcpdd");
  1964. var pEssPrcpcdNode = PrcpList.getColumn(i, "prcpcd"); //node.selectSingleNode("prcpcd");
  1965. var dSetattrno = PrcpList.getColumn(i, "setattrno"); //node.selectSingleNode("setattrno");
  1966. var dSetattrhistno = PrcpList.getColumn(i, "setattrno"); //node.selectSingleNode("setattrhistno");
  1967. if (cpgflagcd == "02" && !utlf_isNull(pEssnprcpynNode) && !utlf_isNull(pEsslimnoNode) && !utlf_isNull(pEsslimhistnoNode) && !utlf_isNull(pEssSetnoNode) && !utlf_isNull(pEssSettypecdNode) && !utlf_isNull(pEssSetcdnoNode) && pEssnprcpynNode == "Y"){
  1968. pEssCnt++; //(2) 스텝필수(단독) 처방
  1969. keyInfo = "0" + "|" + appNo_SMMMO00110 + "^" + "P" + "^" + pEsslimnoNode + "^" + pEsslimhistnoNode + "^" + pEssSetnoNode + "^" + pEssSettypecdNode + "^" + pEssSetcdnoNode;
  1970. } else if (cpgflagcd == "02" && !utlf_isNull(dSetattrno) && !utlf_isNull(dSetattrhistno) && !utlf_isNull(pEssSetnoNode) && !utlf_isNull(pEssSettypecdNode) && !utlf_isNull(pEssSetcdnoNode) ){
  1971. dEssCnt++; //(2) 선택필수(그룹) 처방
  1972. keyInfo = "0" + "|" + appNo_SMMMO00110 + "^" + "D" + "^" + dSetattrno + "^" + dSetattrhistno + "^" + pEssSetnoNode + "^" + pEssSettypecdNode + "^" + pEssSetcdnoNode;
  1973. } else {
  1974. keyInfo = etclnkspecValue_SMMMO00110;
  1975. }
  1976. etclnkspecNode = keyInfo; //model.setValue(etclnkspecNode, keyInfo);
  1977. // if(pEssnprcpynNode != null) model.removenode(pEssnprcpynNode);
  1978. // if(pEsslimnoNode != null) model.removenode(pEsslimnoNode);
  1979. // if(pEsslimhistnoNode != null) model.removenode(pEsslimhistnoNode);
  1980. // if(dSetattrno != null) model.removenode(dSetattrno);
  1981. // if(dSetattrhistno != null) model.removenode(dSetattrhistno);
  1982. }
  1983. if( pEssCnt > 0 ){
  1984. //model.makeNode("/root/send/pessprcplist");
  1985. dsf_makeValue(ds_send_pessprcplist, "pesscpgappno", "string", appNo_SMMMO00110); //model.makeValue("/root/send/pessprcplist/pesscpgappno" , appNo_SMMMO00110);
  1986. }
  1987. if( dEssCnt > 0 ){
  1988. //model.makeNode("/root/send/dessprcplist");
  1989. dsf_makeValue(ds_send_dessprcplist, "desscpgappno", "string", appNo_SMMMO00110); //model.makeValue("/root/send/dessprcplist/desscpgappno" , appNo_SMMMO00110);
  1990. }
  1991. }
  1992. }
  1993. /**
  1994. * @group :
  1995. * @ver
  1996. : 2007.09
  1997. * @by : 전지은
  1998. * @---------------------------------------------------
  1999. * @type : function
  2000. * @access : public
  2001. * @desc : TRMMP00803 을 거치지 않고 바로 저장하는 경우, 저장시 필요한 데이터를 임의로 구성함
  2002. * @param :
  2003. * @return :
  2004. * @---------------------------------------------------
  2005. */
  2006. function fSetSavrPrcpInfo(){
  2007. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag"); //model.getValue("/root/patflag/list/prcpgenrflag");
  2008. //저장구분정보(saveFlagInfo)
  2009. //model.removeNodeset("/root/send/cond1");
  2010. dsf_createDs("ds_send_cond1"); //model.makeNode("/root/send/cond1");
  2011. dsf_createDs("ds_save_saveflaginfo");
  2012. dsf_makeValue(ds_save_saveflaginfo, "savedataflag", "string", 2); // model.makeValue ( "/root/save/saveflaginfo/savedataflag", 2 );
  2013. dsf_makeValue(ds_save_saveflaginfo, "saveflag", "string", prcpgenrflag); // model.makeValue ( "/root/save/saveflaginfo/saveflag" , prcpgenrflag );
  2014. dsf_makeValue(ds_save_saveflaginfo, "prcpflag", "string", "0"); // model.makeValue ( "/root/save/saveflaginfo/prcpflag" , "0" );
  2015. dsf_makeValue(ds_save_saveflaginfo, "inptflag", "string", "0"); // model.makeValue ( "/root/save/saveflaginfo/inptflag" , "0" );
  2016. dsf_makeValue(ds_save_saveflaginfo, "deptcd", "string", sysf_getUserInfo("dutplcecd")); // model.makeValue ( "/root/save/saveflaginfo/deptcd" , getUserInfo("dutplcecd"));
  2017. dsf_makeValue(ds_save_saveflaginfo, "deptnm", "string", sysf_getUserInfo("dutplcenm")); // model.makeValue ( "/root/save/saveflaginfo/deptnm" , getUserInfo("dutplcenm"));
  2018. dsf_makeValue(ds_save_saveflaginfo, "userid", "string", sysf_getUserInfo("userid")); // model.makeValue ( "/root/save/saveflaginfo/userid" , getUserInfo("userid"));
  2019. dsf_makeValue(ds_save_saveflaginfo, "usernm", "string", sysf_getUserInfo("usernm")); // model.makeValue ( "/root/save/saveflaginfo/usernm" , getUserInfo("usernm"));
  2020. dsf_makeValue(ds_save_saveflaginfo, "signyn", "string", "Y"); // model.makeValue ( "/root/save/saveflaginfo/signyn" , "Y" );
  2021. // 20200401 김현석, 적용일자 세팅, 20200310998
  2022. // dsf_makeValue(ds_save_saveflaginfo, "prcpdd", "string", utlf_getCurrentDate()); // model.makeValue ( "/root/save/saveflaginfo/prcpdd" , getCurrentDate() ); dsf_makeValue(ds_save_saveflaginfo, "divyn", "string", "N"); // model.makeValue ( "/root/save/saveflaginfo/divyn" , "N" );*/
  2023. dsf_makeValue(ds_save_saveflaginfo, "prcpdd", "string", fGetAppdd()); // model.makeValue ( "/root/save/saveflaginfo/prcpdd" , getCurrentDate() ); dsf_makeValue(ds_save_saveflaginfo, "divyn", "string", "N"); // model.makeValue ( "/root/save/saveflaginfo/divyn" , "N" );
  2024. dsf_makeValue(ds_save_saveflaginfo, "prtlflag", "string", prtlFlag_SMMMO00110); // model.makeValue ( "/root/save/saveflaginfo/prtlflag" , prtlFlag_SMMMO00110 );
  2025. dsf_makeValue(ds_save_saveflaginfo, "prtlprcpstatus", "string", "U"); //model.makeValue ( "/root/save/saveflaginfo/prtlprcpstatus" , "U" );
  2026. dsf_makeValue(ds_save_saveflaginfo, "cpsaveflag", "string", "T"); //model.makeValue ( "/root/save/saveflaginfo/cpsaveflag" , "T" );
  2027. //model.instances(0).selectNodes( "/root/save/saveflaginfo" );
  2028. ds_send_cond1.copyData(ds_save_saveflaginfo); //model.setValue ( "/root/send/cond1", getNodeListCSV(saveFlagInfoNodeList));
  2029. //saveRgstInfo 데이터 구성
  2030. dsf_createDs("ds_send_cond2"); //model.makeNode("/root/send/cond2/savepamlist");
  2031. //ds_send_cond2.addColumn("savepamlist", "string");
  2032. ds_send_cond2.copyData(ds_paminfo); //model.copyNode( "/root/send/cond2", "/root/paminfo/list" ); //원무정보 저장데이터
  2033. var savepamlist = ds_send_cond2; //model.instance1.selectSingleNode( "/root/send/cond2" );
  2034. //var childNodeList = savepamlist.childNodes;
  2035. // for( var k = 0; k < ds_send_cond2.rowcount; k++ ){
  2036. // var iNode = childNodeList.item(k);
  2037. // iNode.nodeName = "pam_" + iNode.nodeName;
  2038. // }
  2039. dsf_makeValue(ds_send_cond2, "pam_ordtype", "string", prcpgenrflag); //model.makeValue ( "/root/send/cond2/pam_ordtype" , prcpgenrflag );
  2040. }
  2041. function cf_TXMMO00103(sSvcId, nErrorCode, sErrorMsg) {
  2042. if(nErrorCode < 0) {
  2043. //model.removeNodeSet ( "/root/result");
  2044. grp_biz.grp_prcp.imp_prcp.ds_send_cond1.clearData();
  2045. grp_biz.grp_prcp.imp_prcp.ds_send_cond2.clearData();
  2046. grp_biz.grp_prcp.imp_prcp.ds_send_cond3.clearData();
  2047. grp_biz.grp_prcp.imp_prcp.ds_send_cond4.clearData();
  2048. grp_biz.grp_prcp.imp_prcp.ds_send_cond5.clearData();
  2049. grp_biz.grp_prcp.imp_prcp.ds_send_cond14.clearData();
  2050. grp_biz.grp_prcp.imp_prcp.ds_send_cond15.clearData();
  2051. //model.refresh();
  2052. return false;
  2053. }
  2054. }
  2055. function cf_TXMMP00804(sSvcId, nErrorCode, sErrorMsg) {
  2056. if(nErrorCode < 0) {
  2057. //model.removeNodeSet ( "/root/result");
  2058. stopSavePrcpYN_SMMMO00110 = "Y";
  2059. if( saveNum_SMMMO00110 == 1 ) sysf_messageBox ("미래처방 저장을 실패했습니다.\n다시 저장", "I008");
  2060. return false;
  2061. } else {
  2062. grp_biz.grp_prcp.imp_prcp.SubmitTF_SMMMO00110 = true;
  2063. }
  2064. }
  2065. function cf_TXMMP00803(sSvcId, nErrorCode, sErrorMsg) {
  2066. if(nErrorCode < 0) {
  2067. //model.removeNodeSet ( "/root/result");
  2068. stopSavePrcpYN_SMMMO00110 = "Y";
  2069. if( saveNum_SMMMO00110 == 1 ) sysf_messageBox ("미래처방 저장을 실패했습니다.\n다시 저장", "I008");
  2070. return false;
  2071. } else {
  2072. grp_biz.grp_prcp.imp_prcp.SubmitTF_SMMMO00110 = true;
  2073. }
  2074. }
  2075. function fPrcpDCSave_CP(prcpflag, rtnPstn, saveflag, prcpchkflag ) {
  2076. var prcpMain = grp_biz.grp_prcp.imp_prcp;
  2077. if( saveflag == "U" ){
  2078. prcpMain = this;
  2079. }
  2080. // 17.06.14, hmh s
  2081. var oOpener = this.getOwnerFrame().form;
  2082. var prcpdd = "";
  2083. if( oOpener.name == "SMMMP00800") {
  2084. utlf_addLog(">>> 1 : " + prcpMain.ds_init.getColumn(0, "prcpdd") + " || " + ds_init.getColumn(0, "prcpdd"));
  2085. prcpdd = prcpMain.ds_init.getColumn(0, "prcpdd");
  2086. } else {
  2087. utlf_addLog(">>> 2 : " + prcpMain.ds_init.getColumn(0, "prcpdd") + " || " + ds_init.getColumn(0, "prcpdd"));
  2088. prcpdd = ds_init.getColumn(0, "prcpdd");
  2089. }
  2090. utlf_addLog(">>> 3 prcpdd : " + prcpdd);
  2091. var prcpds = prcpMain.objects["ds_main_prcplist"];
  2092. // 17.06.14, hmh e
  2093. // 20200401 김현석, 적용일자 세팅, 20200310998
  2094. //var today = utlf_getCurrentDate();
  2095. var today = fGetAppdd();
  2096. if( parseInt(prcpdd) > parseInt(today) ){
  2097. frmf_setParameter("SMMMP00800_cpsaveflag", "T");
  2098. }
  2099. if (utlf_isNull(saveflag)) saveflag = "";
  2100. if (utlf_isNull(prcpchkflag)) prcpchkflag = "Y"; //"저장하시겠습니까?" 메세지 or div 여부
  2101. if (utlf_isNull(prcpflag)){
  2102. var cpgflag = ds_main_masterinfo_info.getColumn(0, "cpgflagcd");
  2103. if(cpgflagcd == "01") prcpflag = "6";
  2104. }
  2105. var savekindflag = "0"; //인증저장
  2106. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  2107. prtlFlag_SMMMO00110 = ds_main_masterinfo_info.getColumn(0, "cpgflagcd"); //fPrcpSave() 후 '-'로 바뀌므로 다시 선언
  2108. //아래의 용량분할, 보험제한, 제한항생제 체크에 걸려서 fPrcpDCSave_CP()가 재귀호출되는 경우 ocrcalcscorcd 가 비워지는 현상이 발생함->조치(2008.11.07)
  2109. if( !utlf_isNull(ocrcalcscorcd) ){
  2110. ocrcalcscorcd_SMMMO00110 = ocrcalcscorcd;
  2111. }
  2112. //당일처방 저장 시 질문을 했다면, 질문 skip
  2113. if( questionYN_SMMMO00110 != "Y" ){
  2114. var msg = sysf_messageBox ( "", "Q002" );
  2115. if( msg == 7 ){
  2116. stopSavePrcpYN_SMMMO00110 = "Y";
  2117. return false;
  2118. }else{
  2119. saveok = "Y";
  2120. }
  2121. }else{
  2122. saveok = "Y";
  2123. }
  2124. if(saveok == "Y"){
  2125. //최초저장인 경우 iPrcpddNode > 0
  2126. var iPrcp = "";
  2127. var iPrcpddidx = ds_main_steppath_info.findRowExpr("prcpdd > '"+today+"' && stepstat == '10'");
  2128. var iPrcpddNode = ds_main_steppath_info.getColumn(iPrcpddidx, "prcpdd");
  2129. utlf_addLog("iPrcpddidx : " + iPrcpddidx + " || iPrcpddNode : " + iPrcpddNode);
  2130. //처방 저장전 체크 해야 할 것들
  2131. if (savekindflag != 1) { // 처방 저장전 체크 해야 할 것들
  2132. prcpMain.ds_save_saveflaginfo.setColumn(0, "prcpdd", today);
  2133. prcpMain.ds_main_prcplist.enableevent = false; // 17.09.19, 임시저장 후 적용 시 gGridUpdateChk 을 수행하여 저장되지 않는 오류 수정
  2134. if (!prcpMain.fPrcpSaveChkBf(prcpchkflag)) return false; //2009.05.06(추가수정 by mjm)
  2135. prcpMain.ds_main_prcplist.enableevent = true;
  2136. }
  2137. prcpMain.ds_send_cond2.clearData();
  2138. //저장구분정보(saveFlagInfo)
  2139. prcpMain.ds_save_saveflaginfo.setColumn(0, "savedataflag", 2); //저장자료구분 0:진단 및 처방, 1:진단, 2:처방, 4:임시저장
  2140. prcpMain.ds_save_saveflaginfo.setColumn(0, "saveflag", prcpgenrflag ); //저장구분 O:외래, I:입원, E:응급, S:건진
  2141. prcpMain.ds_save_saveflaginfo.setColumn(0, "prcpflag", "0"); //처방구분 0:의사처방, 2:간호, 3:지원부서, 5:Admission, 6:CP, 7:항암프로토콜, 8:임시처방
  2142. prcpMain.ds_save_saveflaginfo.setColumn(0, "inptflag", "0"); //입력구분 0:의사, 1:간호사(간호에서 사용), 3:지원부서
  2143. prcpMain.ds_save_saveflaginfo.setColumn(0, "deptcd", sysf_getUserInfo("dutplcecd")); //처방구분 0:의사처방, 2:간호, 3:지원부서, 5:Admission, 6:CP, 7:항암프로토콜, 8:임시처방
  2144. prcpMain.ds_save_saveflaginfo.setColumn(0, "deptnm", sysf_getUserInfo("dutplcenm")); //부서명
  2145. prcpMain.ds_save_saveflaginfo.setColumn(0, "userid", sysf_getUserInfo("userid")); //사용자ID
  2146. prcpMain.ds_save_saveflaginfo.setColumn(0, "usernm", sysf_getUserInfo("usernm")); //사용자명
  2147. prcpMain.ds_save_saveflaginfo.setColumn(0, "signyn", signyn);
  2148. prcpMain.ds_save_saveflaginfo.setColumn(0, "prcpdd", today);
  2149. prcpMain.ds_save_saveflaginfo.setColumn(0, "divyn", prcpchkflag); //용량분할 할건지
  2150. if( parseInt(prcpdd) > parseInt(today) ){
  2151. /*after 조건 추가(1줄)*/
  2152. if( !(utlf_isNull(iPrcpddNode) && prcpMain.visible == true && prcpds.getCaseCount("status == 'I' || status == '-'") > 0 ) ){
  2153. trace(" 미래처방조건 추가 >>>>>> ");
  2154. dsf_makeValue(prcpMain.ds_save_saveflaginfo, "cpsaveflag", "string", "T"); //미래처방 체크 flag(2008.08.02 추가)
  2155. } //add (after end)
  2156. }
  2157. dsf_makeValue(prcpMain.ds_save_saveflaginfo, "prtlflag", "string", prtlFlag_SMMMO00110);
  2158. //저장정보
  2159. prcpMain.ds_send_cond1.copyData(prcpMain.ds_save_saveflaginfo);
  2160. utlf_addLog(prcpMain.ds_send_cond1.saveXML());
  2161. //저장등록정보(saveRgstInfo)
  2162. prcpMain.ds_send_cond2.copyData(ds_paminfo);
  2163. //저장처방정보(savePrcpInfo)
  2164. prcpMain.ds_send_cond3.copyData(prcpMain.ds_main_prcplist, true);
  2165. utlf_addLog(prcpMain.ds_send_cond3.saveXML());
  2166. prcpMain.fAppendSaveNode( "ds_send_cond3", "ds_prcper_prcplist" );
  2167. prcpMain.fAppendSaveNode( "ds_send_cond3", "ds_prcpdc_prcplist" );
  2168. //저장 후, send에서 미완성처방을 빼기 위해, rownum을 순차적으로 만들어줌(원본과 결과 비교를 위함)
  2169. for(var i = 0; i < prcpMain.ds_send_cond3.rowcount; i++){
  2170. dsf_makeValue(prcpMain.ds_send_cond3, "rownum", "string", i, i);
  2171. }
  2172. if ( prcpchkflag == "drugdc" ) { //약/주사 D/C 요청 중에 반납요청된 것은 D/C 처리한다.( 저장로직에서 사용 )
  2173. prcpMain.ds_send_cond14.copyData(prcpMain.ds_prcpdc_prcplist);
  2174. }
  2175. //setValue 후에 prcpdc 에 옮겨 놓은 prcplist를 클리어 한다.
  2176. prcpMain.ds_prcpdc_prcplist.clearData();
  2177. //저장진단정보(saveDiagInfo)
  2178. prcpMain.ds_send_cond4.copyData(prcpMain.ds_main_diagcdlist);
  2179. //dsf_createDs("ds_send_cond1");
  2180. // SMMMO00100.xjs에서 실행 - in, out 데이터셋이 모두 처방 데이터셋임
  2181. var submitRtn = prcpMain.fPrcpDCSave_submit(prcpgenrflag);
  2182. utlf_addLog(" submitRtn : " + submitRtn );
  2183. if( submitRtn == false ){
  2184. return false;
  2185. }
  2186. if( rtnPstn == 1 ){
  2187. return false;
  2188. }
  2189. /* CP 미래처방의 유전자 검사 동의서 처리
  2190. 출력은 적용 시 모두 발생하고 실제 데이터는 배치 실행시에 발생한다. 20100514 by LYJ
  2191. ===========================================================================================================================================*/
  2192. //**********************미래처방에 유전자검사 처방이 있을 경우 출력물 모달을 띄운다 **********
  2193. var atadagn = prcpMain.ds_tmp.getColumn(0, "atadagn"); //model.getValue("root/tmp/atadagn");
  2194. if ( !utlf_isNull(atadagn) ) {
  2195. prcpMain.ds_result_savedrprcplist.filter("tempcol13 == 'A' && status == 'I'");
  2196. dsf_createDs("ds_atadPrcpNodes");
  2197. ds_atadPrcpNodes.copyData(prcpMain.ds_result_savedrprcplist, true);
  2198. prcpMain.ds_result_savedrprcplist.filter("");
  2199. try {
  2200. dsf_createDs("ds_hidden_geneunitlist"); // 16.02.03
  2201. ds_hidden_atadinfo.clearData(); //model.removeNodeSet("/root/hidden/atadinfo");
  2202. ds_hidden_geneunitlist.clearData(); //model.removeNodeSet("/root/hidden/geneunitlist");
  2203. } catch(e) { }
  2204. //var atadPrcpNodes = instance1.selectNodes("/root/result/savedrprcplist[tempcol13='A' and status='I']");
  2205. //var Nodes = instance1.selectNodes("/root/result/savedrprcplist");
  2206. if( ds_atadPrcpNodes.rowcount > 0 ) {
  2207. // 확인필요
  2208. //model.makeValue("/root/hidden/atadinfo", "");
  2209. dsf_createDs("ds_hidden_atadinfo");
  2210. for(var m = 0; m < ds_atadPrcpNodes.rowcount; m++ ){
  2211. //var node = atadPrcpNodes.item(m);
  2212. var atadNode = ds_atadPrcpNodes.getColumn(i, "tempcol14"); //node.selectSingleNode("tempcol14");
  2213. var atadNodeArray = atadNode.split("▦");
  2214. dsf_makeValue(prcpMain.ds_init_atadinfo, "instcd", "string", atadNodeArray[0]); // model.makeValue("/root/init/atadinfo/row/instcd", atadNodeArray[0]);
  2215. dsf_makeValue(prcpMain.ds_init_atadinfo, "prcpdd", "string", atadNodeArray[1]); // model.makeValue("/root/init/atadinfo/row/prcpdd", atadNodeArray[1]);
  2216. dsf_makeValue(prcpMain.ds_init_atadinfo, "prcpno", "string", atadNodeArray[2]); // model.makeValue("/root/init/atadinfo/row/prcpno", atadNodeArray[2]);
  2217. dsf_makeValue(prcpMain.ds_init_atadinfo, "pid", "string", atadNodeArray[3]); // model.makeValue("/root/init/atadinfo/row/pid", atadNodeArray[3]);
  2218. dsf_makeValue(prcpMain.ds_init_atadinfo, "orddd", "string", atadNodeArray[4]); // model.makeValue("/root/init/atadinfo/row/orddd", atadNodeArray[4]);
  2219. dsf_makeValue(prcpMain.ds_init_atadinfo, "cretno", "string", atadNodeArray[5]); // model.makeValue("/root/init/atadinfo/row/cretno", atadNodeArray[5]);
  2220. dsf_makeValue(prcpMain.ds_init_atadinfo, "patnm", "string", appf_getPatientInfoDetail("hngnm")); // model.makeValue("/root/init/atadinfo/row/patnm", getPatientInfoDetail("hngnm") );
  2221. var gender = atadNodeArray[7].substr(6, 1);
  2222. var regYY = parseInt(atadNodeArray[7].substr(0, 2));
  2223. if(gender == '3' || gender == '4' || gender == '7' || gender == '8') {
  2224. regYY += 2000;
  2225. } else if(gender == '0' || gender == '9') {
  2226. regYY += 1800;
  2227. } else {
  2228. regYY += 1900;
  2229. }
  2230. dsf_makeValue(prcpMain.ds_init_atadinfo, "rrgstno", "string", regYY + atadNodeArray[7].substr(2, 5)); // model.makeValue("/root/init/atadinfo/row/rrgstno", regYY + atadNodeArray[7].substr(2, 5));
  2231. dsf_makeValue(prcpMain.ds_init_atadinfo, "drnm", "string", sysf_getUserInfo("usernm")); // model.makeValue("/root/init/atadinfo/row/drnm", getUserInfo("usernm") );
  2232. gender = atadNodeArray[9].substr(6, 1);
  2233. regYY = parseInt(atadNodeArray[9].substr(0, 2));
  2234. if(gender == '3' || gender == '4' || gender == '7' || gender == '8') {
  2235. regYY += 2000;
  2236. } else if(gender == '0' || gender == '9') {
  2237. regYY += 1800;
  2238. } else {
  2239. regYY += 1900;
  2240. }
  2241. dsf_makeValue(prcpMain.ds_init_atadinfo, "drbrthdd", "string", regYY + atadNodeArray[9].substr(2, 4)); // model.makeValue("/root/init/atadinfo/row/drbrthdd", regYY + atadNodeArray[9].substr(2, 4));
  2242. dsf_makeValue(prcpMain.ds_init_atadinfo, "prcpcd", "string", atadNodeArray[10]); // model.makeValue("/root/init/atadinfo/row/prcpcd", atadNodeArray[10]);
  2243. dsf_makeValue(prcpMain.ds_init_atadinfo, "prcpnm", "string", atadNodeArray[11]); // model.makeValue("/root/init/atadinfo/row/prcpnm", atadNodeArray[11]);
  2244. dsf_makeValue(prcpMain.ds_init_atadinfo, "deptengabbr", "string", atadNodeArray[12]); // model.makeValue("/root/init/atadinfo/row/deptengabbr", atadNodeArray[12]);
  2245. dsf_makeValue(prcpMain.ds_init_atadinfo, "roomcd", "string", atadNodeArray[13]); // model.makeValue("/root/init/atadinfo/row/roomcd", atadNodeArray[13]);
  2246. dsf_makeValue(prcpMain.ds_init_atadinfo, "prcpgenrflag", "string", atadNodeArray[14]); // model.makeValue("/root/init/atadinfo/row/prcpgenrflag", atadNodeArray[14]);
  2247. dsf_makeValue(prcpMain.ds_init_atadinfo, "centcd", "string", ds_paminfo.getColumn(0, "centnm")); // model.makeValue("/root/init/atadinfo/row/centcd", model.getValue("/root/paminfo/list/centnm") );
  2248. dsf_makeValue(prcpMain.ds_init_atadinfo, "ocrtag", "string", atadNodeArray[16]); // model.makeValue("/root/init/atadinfo/row/ocrtag", atadNodeArray[16]);
  2249. dsf_makeValue(prcpMain.ds_init_atadinfo, "formcd", "string", atadNodeArray[17]); // model.makeValue("/root/init/atadinfo/row/formcd", atadNodeArray[17]);
  2250. dsf_makeValue(prcpMain.ds_init_atadinfo, "formfromdt", "string", atadNodeArray[18]); // model.makeValue("/root/init/atadinfo/row/formfromdt", atadNodeArray[18]);
  2251. dsf_makeValue(prcpMain.ds_init_atadinfo, "pagenum", "string", atadNodeArray[19]); // model.makeValue("/root/init/atadinfo/row/pagenum", atadNodeArray[19]);
  2252. dsf_makeValue(prcpMain.ds_init_atadinfo, "execprcpuniqno", "string", atadNodeArray[20]); // model.makeValue("/root/init/atadinfo/row/execprcpuniqno", atadNodeArray[20]);
  2253. dsf_makeValue(prcpMain.ds_init_atadinfo, "pattelno", "string", atadNodeArray[21]); // model.makeValue("/root/init/atadinfo/row/pattelno", atadNodeArray[21]);
  2254. dsf_makeValue(prcpMain.ds_init_atadinfo, "pataddr", "string", atadNodeArray[22]); // model.makeValue("/root/init/atadinfo/row/pataddr", atadNodeArray[22]);
  2255. dsf_makeValue(prcpMain.ds_init_atadinfo, "patsex", "string", atadNodeArray[23]); // model.makeValue("/root/init/atadinfo/row/patsex", atadNodeArray[23]);
  2256. dsf_makeValue(prcpMain.ds_init_atadinfo, "instnm", "string", atadNodeArray[24]); // model.makeValue("/root/init/atadinfo/row/instnm", atadNodeArray[24]);
  2257. dsf_makeValue(prcpMain.ds_init_atadinfo, "insttelno", "string", atadNodeArray[25]); // model.makeValue("/root/init/atadinfo/row/insttelno", atadNodeArray[25]);
  2258. dsf_copyDs(ds_hidden_atadinfo, prcpMain.ds_init_atadinfo, "after"); //copyNodeType("/root/hidden/atadinfo", "/root/init/atadinfo", "after");
  2259. }
  2260. var objArg = new Object();
  2261. objArg.arg_ds_main_prcplist = ds_hidden_atadinfo;
  2262. frmf_modal("SPMMO21000", "SPMMO21000", objArg, null, null, null, null, null, null, null, null, null, "M"); // 인체 유래물 동의서
  2263. var atadInfoNodes = prcpMain.objects["ds_hidden_geneunitlist"]; // 인체 유래물 동의서 서식 데이터
  2264. //var atadInfoNodes = instance1.selectNodes("/root/hidden/geneunitlist");
  2265. if( ds_hidden_geneunitlist.rowcount > 0 ) { }
  2266. else return false;
  2267. }
  2268. //**********************유전자 검사 관련 처방의 데이터를 생성하여 bach 실행시에 실제 발생될 데이터를 생성해 mmphptcp에 저장한다 **********
  2269. //var atadInfoNodes = instance1.selectNodes("/root/hidden/geneunitlist");
  2270. if( ds_hidden_geneunitlist.rowcount > 0 ) {
  2271. for (var i = 0; i < ds_hidden_geneunitlist.rowcount; i++) {
  2272. var j = i+1;
  2273. var geneprnttmp = ds_hidden_geneunitlist.getColumn(j, "testresn") + "▦" +
  2274. ds_hidden_geneunitlist.getColumn(j, "spcpossnterm") + "▦" +
  2275. ds_hidden_geneunitlist.getColumn(j, "stdyresn") + "▦" +
  2276. ds_hidden_geneunitlist.getColumn(j, "spcproccd") + "▦" +
  2277. ds_hidden_geneunitlist.getColumn(j, "spcpossntermcd") + "▦" +
  2278. ds_hidden_geneunitlist.getColumn(j, "spcuseaprvyn") + "▦" +
  2279. ds_hidden_geneunitlist.getColumn(j, "patinfouseyn") + "▦" +
  2280. ds_hidden_geneunitlist.getColumn(j, "pid") + "▦" +
  2281. ds_hidden_geneunitlist.getColumn(j, "patnm") + "▦" +
  2282. ds_hidden_geneunitlist.getColumn(j, "procernm") + "▦" +
  2283. ds_hidden_geneunitlist.getColumn(j, "procerbrthdd") + "▦" +
  2284. ds_hidden_geneunitlist.getColumn(j, "rrgstno") + "▦" +
  2285. ds_hidden_geneunitlist.getColumn(j, "rrgstno2") + "▦" +
  2286. ds_hidden_geneunitlist.getColumn(j, "drnm") + "▦" +
  2287. ds_hidden_geneunitlist.getColumn(j, "drbrthdd") + "▦" +
  2288. ds_hidden_geneunitlist.getColumn(j, "deptengabbr") + "▦" +
  2289. ds_hidden_geneunitlist.getColumn(j, "roomcd") + "▦" +
  2290. ds_hidden_geneunitlist.getColumn(j, "prcpgenrflag") + "▦" +
  2291. ds_hidden_geneunitlist.getColumn(j, "centcd") + "▦" +
  2292. ds_hidden_geneunitlist.getColumn(j, "ocrtag") + "▦" +
  2293. ds_hidden_geneunitlist.getColumn(j, "histcd") + "▦" +
  2294. ds_hidden_geneunitlist.getColumn(j, "proceryn") + "▦" +
  2295. ds_hidden_geneunitlist.getColumn(j, "orddd") + "▦" +
  2296. ds_hidden_geneunitlist.getColumn(j, "logurl") + "▦" +
  2297. ds_hidden_geneunitlist.getColumn(j, "pagenum") + "▦" +
  2298. ds_hidden_geneunitlist.getColumn(j, "execprcpuniqno") + "▦" +
  2299. ds_hidden_geneunitlist.getColumn(j, "pattelno") + "▦" +
  2300. ds_hidden_geneunitlist.getColumn(j, "pataddr") + "▦" +
  2301. ds_hidden_geneunitlist.getColumn(j, "patsex") + "▦" +
  2302. ds_hidden_geneunitlist.getColumn(j, "instnm") + "▦" +
  2303. ds_hidden_geneunitlist.getColumn(j, "insttelno");
  2304. //var node = atadPrcpNodes.item(i);
  2305. var atadNode = ds_atadPrcpNodes.getColumn(i, "tempcol14"); //node.selectSingleNode("tempcol14");
  2306. var atadNodeArray = atadNode.split("▦");
  2307. for (var z = 0; z < prcpMain.ds_result_savedrprcplist.rowcount; z++) {
  2308. if (prcpMain.ds_result_savedrprcplist.getColumn(z, "prcpcd") == atadNodeArray[10]){ // model.getValue ("/root/result/savedrprcplist[" + z + "]/prcpcd")
  2309. if ( utlf_isNull(prcpMain.ds_result_savedrprcplist.getColumn(z, "geneprnttmp")) ){
  2310. prcpMain.ds_result_savedrprcplist.setColumn(z, "geneprnttmp", geneprnttmp); //model.setValue("/root/result/savedrprcplist[" + z + "]/geneprnttmp" ,geneprnttmp)
  2311. break;
  2312. }
  2313. }
  2314. }
  2315. }
  2316. var atadInfoNodeleng = ds_hidden_geneunitlist.getColumn(0, "pid"); // instance1.selectNodes("/root/hidden/geneunitlist/pid");
  2317. if( ds_atadPrcpNodes.rowcount > 0 ) {
  2318. for (var j = 0; j < ds_atadPrcpNodes.rowcount ; j++){
  2319. if ( j != 0 ){ // j != 1
  2320. // 확인필요
  2321. ds_hidden_geneunitlist.copyRow(0, ds_hidden_geneunitlist, j); //model.copyNode("/root/hidden/geneunitlist[" +1 + "]", "/root/hidden/geneunitlist[" + j + "]");
  2322. }
  2323. //exeReportPreview("RPMMO21001", "XMLSTR" , "/root/hidden/geneunitlist", "" , "true" , "", "", "", "", "", "", "grp_report");
  2324. var objDOM = rptf_createDOM(); // DOM 객체 설정
  2325. rptf_setNodeListToDOM(objDOM, "/root/hidden/geneunitlist", ds_hidden_geneunitlist); // 데이터셋 1
  2326. var objParam = new Object();
  2327. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  2328. var option = "open=1;save=1;directprint=1;printdialog=0;print=1;zoom=0;";
  2329. rptf_exeReportPreview30(["RPMMO21001"],[objParam], option);
  2330. var orddrid = ""
  2331. // model.getValue("/root/hidden/atadinfo/row[" + j + "]/prcpgenrflag") == "O" || model.getValue("/root/hidden/atadinfo/row[" + j + "]/prcpgenrflag") == "S"
  2332. if ( ds_hidden_atadinfo.getColumn(j, "prcpgenrflag") == "O" || ds_hidden_atadinfo(j, "prcpgenrflag") == "S" ) {
  2333. orddrid = ds_paminfo.getColumn(0, "orddrid"); //model.getValue("/root/paminfo/list/orddrid")
  2334. } else {
  2335. orddrid = ds_paminfo.getColumn(0, "medispclid"); //model.getValue("/root/paminfo/list/medispclid");
  2336. }
  2337. if( ! fSaveOCRIF(ds_hidden_atadinfo.getColumn(j, "ocrtag")
  2338. , ds_hidden_atadinfo.getColumn(j, "pid")
  2339. , ds_hidden_atadinfo.getColumn(j, "orddd")
  2340. , ds_hidden_atadinfo.getColumn(j, "cretno")
  2341. , ds_hidden_atadinfo.getColumn(j, "prcpgenrflag")
  2342. , ds_paminfo.getColumn(0, "orddeptcd")
  2343. , orddrid
  2344. , ds_hidden_atadinfo.getColumn(j, "formcd")
  2345. , ds_hidden_atadinfo.getColumn(j, "formfromdt")
  2346. , "", "", 1) ) {
  2347. sysf_messageBox("유전자검사동의서 IF 저장시 오류발생", "I");
  2348. }
  2349. }
  2350. }
  2351. }
  2352. }
  2353. dsf_makeValue(prcpMain.ds_tmp, "atadagn", "string", "Y"); //model.makeValue("root/tmp/atadagn", "Y");
  2354. // ===========CP 미래처방의 유전자 검사 동의서 처리 END================================================================================================================================
  2355. if ( prcpMain.ds_result_divinfo.getColumn(0, "divchkflag") == "N" ) {
  2356. if ( prcpMain.ds_result_prcplist.rowcount > 0 ) { // 용량분할, 저함량
  2357. if ( !utlf_isNull(prcpMain.ds_result_prcplist.getColumn(0, "prcpcd")) ){
  2358. var xpt = this.getOwnerFrame().position.x + 100;
  2359. var ypt = this.getOwnerFrame().position.y + 50;
  2360. var mon = sysf_getCurrentMonitorNumber();
  2361. prcpMain.ds_main_prcplist.enableevent = false;
  2362. var objArg = new Object();
  2363. objArg.arg_ds_main_prcplist = prcpMain.ds_result_prcplist;
  2364. frmf_modal("SPADB62400", "SPADB62400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); //modal ( "SPADB62400", mon, xpt, ypt, "SPADB62400", "/root/result", "/root/main/prcp", "", false );
  2365. prcpMain.fClearSaveInstance();
  2366. } else {}
  2367. fPrcpDCSave_CP(prcpflag , rtnPstn, saveflag, "N");
  2368. prcpMain.ds_main_prcplist.enableevent = true;
  2369. return false;
  2370. }
  2371. } else if ( prcpMain.ds_result_divinfo.getColumn(0, "divchkflag") == "A") {
  2372. //20090420 마정민 수정 항암용량분할은 기존에는 서버에서 불할되어 바로 저장체크로직으로 갔지만 보험제한규정에 걸려서
  2373. //다시저장할때 분할된 내용이 화면이 표시가 되지 않아 용량분할이 되지 않음.
  2374. //항암용량분할도 화면에 표시하게 수정
  2375. prcpMain.ds_main_prcplist.clearData();
  2376. prcpMain.ds_main_prcplist.copyData(prcpMain.ds_result_prcplist);
  2377. // for ( i = 0; i < prcpMain.ds_result_prcplist.rowcount; i++ ){
  2378. // var addRow = prcpMain.ds_main_prcplist.addRow();
  2379. // prcpMain.ds_main_prcplist.copyRow(addRow, prcpMain.ds_result_prcplist, i);
  2380. // }
  2381. fPrcpDCSave_CP(prcpflag , rtnPstn, saveflag, "N");
  2382. return false;
  2383. }
  2384. //실패시, 인스턴스 값을 확인하기 위해서 값을 copy
  2385. dsf_createDs("ds_result_copy");
  2386. dsf_copyDs(ds_result_copy , prcpMain.ds_result_prcplist, "replace");
  2387. //CP일 경우, 미완성 처방을 인스턴스로 가지고만 있음(팝업은 저장 후 open)
  2388. if(prcpflag == "6") {
  2389. if( prcpMain.ds_result_savedrprcplist.getCaseCount("status == 'U' || status == 'D'") ){ // instance1.selectSingleNode("/root/result/savedrprcplist[status='U' or status='D']")
  2390. dsf_createDs("ds_DetlNodeList");
  2391. prcpMain.ds_result_savedrprcplist.filter("status == 'U' || status == 'D'");
  2392. ds_DetlNodeList.copyData(prcpMain.ds_result_savedrprcplist, true);
  2393. prcpMain.ds_result_savedrprcplist.filter("");
  2394. // var ds_DetlNodeList = instance1.selectNodes("/root/result/savedrprcplist[status='U' or status='D']");
  2395. for(var i = 0; i < ds_DetlNodeList.rowcount; i++){
  2396. //var node = DetlNodeList.item(i);
  2397. var prcpnoNode = ds_DetlNodeList.getColumn(i, "prcpno"); //node.selectSingleNode("prcpno");
  2398. var etcLnkSpecNode = ds_DetlNodeList.getColumn(i, "etclnkspec"); //node.selectSingleNode("etclnkspec");
  2399. var tmpstatNode = ds_DetlNodeList.getColumn(i, "tmpstat"); //node.selectSingleNode("tmpstat");
  2400. var etcLnkSpecText = etcLnkSpecNode;
  2401. }
  2402. }
  2403. }
  2404. //오류메세지 팝업 분기
  2405. if( ErrExistYN_SMMMO00110 != "Y" ) ErrExistYN_SMMMO00110 = "N";
  2406. if ( prcpMain.ds_result_prcperrlist.rowcount > 0 ) {
  2407. if ( !utlf_isNull(prcpMain.ds_result_prcperrlist.getColumn(0, "prcpcd")) ){
  2408. var flag = "";
  2409. var errorCnt = 0;
  2410. var notErrorCnt = 0;
  2411. //처방데이터구성 인스턴스 리턴 후, 처방데이터구성 전 인스턴스에서 오류처방(미완성처방)을 제한다
  2412. if( prcpMain.ds_send_cond3.rowcount > 0 ){
  2413. if( prcpMain.ds_result_prcperrlist.rowcount != prcpMain.ds_send_cond3.rowcount ){
  2414. if(prcpMain.ds_result_savedrprcplist.rowcount > 0){
  2415. for ( var k = 0; k < prcpMain.ds_send_cond3.rowcount; k++ ){
  2416. prcpMain.ds_send_cond3.setColumn(k, "tempcol5", "D"); //model.setValue("/root/send/cond3/prcplist[" + k + "]/tempcol5", "D");
  2417. }
  2418. for(var k = 0; k < prcpMain.ds_result_savedrprcplist.rowcount; k++){
  2419. //var node = valPrcpList.item(k);
  2420. var rownumNode = prcpMain.ds_result_savedrprcplist.getColumn(k, "rownum"); //node.selectSingleNode("rownum");
  2421. if( !utlf_isNull(rownumNode) ){
  2422. if( prcpMain.ds_send_cond3.getCaseCount("rownum == '"+rownumNode+"'") > 0 ){
  2423. var idx = prcpMain.ds_send_cond3.findRow("rownum", rownumNode);
  2424. prcpMain.ds_send_cond3.setColumn(idx, "tempcol5", (k + 1));
  2425. }
  2426. }
  2427. }
  2428. }
  2429. for(var j = prcpMain.ds_send_cond3.rowcount-1; j >= 0; j--){
  2430. if( prcpMain.ds_send_cond3.getColumn(j, "tempcol5") == "D" ) {
  2431. prcpMain.ds_send_cond3.deleteRow(j);
  2432. }
  2433. }
  2434. }
  2435. }
  2436. //인스턴스 제거 end
  2437. //병용금기, 연령금기 팝업은 미리 띄운다
  2438. for ( var i = 0; i < prcpMain.ds_result_prcperrlist.rowcount; i++ ) {
  2439. flag = prcpMain.ds_result_prcperrlist.getColumn(i, "flag");
  2440. if ( flag == "1" ) {
  2441. errorCnt++;
  2442. }else{
  2443. notErrorCnt++;
  2444. }
  2445. }
  2446. if ( errorCnt > 0 ){
  2447. //오류처방 리턴 여부 (CP일 경우, 오류처방이 있어도 제외한 처방데이터를 함께 리턴하므로 오류메세지 팝업은 skip)
  2448. ErrExistYN_SMMMO00110 = "Y";
  2449. }
  2450. /*
  2451. if( notErrorCnt > 0 ){
  2452. //2008-09-28 마정민 수정
  2453. frmf_clearParameter ( "SPMMO16100_rtn1" );
  2454. var xpt = this.getOwnerFrame().position.x + 100;
  2455. var ypt = this.getOwnerFrame().position.y + 50;
  2456. var mon = sysf_getCurrentMonitorNumber();
  2457. var objArg = new Object();
  2458. objArg.ds_result_prcplist = prcpMain.ds_result_prcplist; // 확인 필요
  2459. // SPMMO16100 화면 작성 후 확인 필요
  2460. frmf_modal("SPMMO16100", "SPMMO16100", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); //병용연령금기
  2461. if ( frmf_getParameter ( "SPMMO16100_rtn1" ) != "Y" ) { //CP미래처방은 취소 블록킹 처리했으므로 N일 경우 없음...(2009.05.04 JJE)
  2462. for(var i = 0; i < prcpMain.ds_main_prcplist.rowcount; i++) {
  2463. prcpMain.ds_main_prcplist.setColumn(i, "tempcol19", "");
  2464. }
  2465. return false;
  2466. } else {
  2467. if ( frmf_getParameter ( "SPMMO16100_rtn2" ) == "D" ){
  2468. fPrcpDCSave_CP(prcpflag , rtnPstn, saveflag, "N");
  2469. return false;
  2470. }
  2471. }
  2472. }
  2473. */
  2474. }
  2475. }
  2476. if( utlf_isNull(iPrcpddNode) ){
  2477. if( prcpMain.ds_result_savedrprcplist.rowcount > 0 ){
  2478. iPrcp = prcpMain.ds_result_savedrprcplist.getColumn(0, "prcpdd");
  2479. }
  2480. }else{
  2481. iPrcp = iPrcpddNode;
  2482. }
  2483. if( !utlf_isNull(iPrcp) ){
  2484. prcpMain.ds_save_saveflaginfo.setColumn(0, "prcpdd", iPrcp);
  2485. prcpMain.ds_send_cond1.copyData(prcpMain.ds_save_saveflaginfo);
  2486. }
  2487. //미래처방 사전 체크(1회) (s)
  2488. if ( prcpMain.ds_init.getColumn(0, "restantimicyn") == "Y" ) { // 제한항생제처방
  2489. if ( !prcpMain.fAntiBioticsChk() ) {
  2490. prcpMain.fClearSaveInstance();
  2491. return false;
  2492. }
  2493. }
  2494. var qestflagcnt = 0;
  2495. //var limprcplist = model.instances(0).selectNodes( "/root/result/limprcplist" ); // 보험제한처방
  2496. if ( prcpMain.ds_result_limprcplist.rowcount > 0 ) {
  2497. for ( var i = 0; i < prcpMain.ds_result_limprcplist.rowcount; i++ ) {
  2498. if ( prcpMain.ds_result_limprcplist.getColumn(i, "qestflag") != "M" ) {
  2499. qestflagcnt++;
  2500. }
  2501. }
  2502. if ( qestflagcnt == 0 && getRegistryPrcp ( "limprcp|"+utlf_getCurrentDate()) == "Y" ) {
  2503. } else {
  2504. if ( !utlf_isNull(prcpMain.ds_result_limprcplist.getColumn(0, "calcscorcd")) ){
  2505. var xpt = this.getOwnerFrame().position.x + 100; //window.screenleft + 100;
  2506. var ypt = this.getOwnerFrame().position.y + 50; //window.screenTop + 50;
  2507. var mon = sysf_getCurrentMonitorNumber();
  2508. var rowid = 0;
  2509. for ( var k = 0; k < prcpMain.ds_result_limprcplist.rowcount; k++ ){
  2510. rowid = eval(prcpMain.ds_result_limprcplist.getColumn(k, "rowid") + 1); // 17.05.24, 2.0은 0부터 시작 1.0은 1부터 시작하는 로우값 때문에 +1 추가
  2511. if( utlf_isNull(prcpMain.ds_result_limprcplist.getColumnInfo("displayprcpnm")) ) prcpMain.ds_result_limprcplist.addColumn("displayprcpnm", "string"); // 17.05.24
  2512. var displayprcpnm = rowid + ". " + prcpMain.ds_result_limprcplist.getColumn(k, "calcscorcd") + "\n" + "[" + prcpMain.ds_result_limprcplist.getColumn(k, "prcpnm") + "]";
  2513. prcpMain.ds_result_limprcplist.setColumn(k, "displayprcpnm", displayprcpnm);
  2514. }
  2515. var objArg = new Object();
  2516. objArg.arg_ds_result_limprcplist = prcpMain.ds_result_limprcplist;
  2517. frmf_modal("SPMMO00900", "SPMMO00900", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M"); // modal ( "SPMMO00900", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/result", "", false );
  2518. prcpMain.ds_result_limprcplist.clearData();
  2519. if ( prcpMain.frmf_getParameter ( "SPMMO00900_rtnyn" ) == "Y" ) {
  2520. prcpMain.frmf_clearParameter ( "SPMMO00900_rtnyn" );
  2521. var savePrcpListLen = prcpMain.ds_main_prcplist.getCaseCount("status != 'S'");
  2522. var saveDiagListLen = prcpMain.ds_main_diagcdlist.getCaseCount("status != 'S' && status != '-'");
  2523. if ( savePrcpListLen > 0 || saveDiagListLen > 0 ) {
  2524. //fPrcpSave( "", "", "", "N" );
  2525. fPrcpDCSave_CP(prcpflag , rtnPstn, saveflag, "N");
  2526. }
  2527. return false;
  2528. } else if ( prcpMain.frmf_getParameter ( "SPMMO00900_rtnyn" ) == "C" ) {
  2529. //msg만 있는 것이라면 그냥 진행함
  2530. } else {
  2531. return false;
  2532. }
  2533. }
  2534. }
  2535. } // 보험제한처방끝
  2536. if ( !utlf_isNull( prcpMain.ds_result_savetnmlist.getColumn(0, "pid") ) || !utlf_isNull( prcpMain.ds_result_savecncrlist.getColumn(0, "pid") )) { //병기분류
  2537. var xpt = this.getOwnerFrame().position.x + 300; //window.screenleft + 300;
  2538. var ypt = this.getOwnerFrame().position.y; //window.screenTop;
  2539. var mon = sysf_getCurrentMonitorNumber();
  2540. var objArg = new Object();
  2541. objArg.arg_ds_tempresult_savetnmlist = prcpMain.ds_result_savetnmlist;
  2542. objArg.arg_ds_tempresult_savecncrlist = prcpMain.ds_result_savecncrlist; // 확인 필요
  2543. //modal ( "SPMMO08400", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/tempresult", "", false );
  2544. frmf_modal("SPMMO08400", "SPMMO08400", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  2545. if ( frmf_getParameter ( "SPMMO08400_rtn1" ) != "Y" ){
  2546. return false;
  2547. }
  2548. }
  2549. prcpMain.fClearSaveInstance();
  2550. if ( savekindflag != 1 && signyn == "Y" ) {
  2551. var signbfcnts = prcpMain.ds_result_signprcplist.getColumn(0, "signbfcnts"); //model.getValue ( "/root/result/signprcplist/signprcp_signbfcnts" );
  2552. var setnode = "ds_result_signprcplist"; //prcpMain.ds_result_signprcplist.getColumn(0, "signaftcnts"); // "/root/result/signprcplist/signprcp_signaftcnts";
  2553. var signid = sysf_getUserInfo ("userid");
  2554. var signopt = false;
  2555. if ( prcpgenrflag != "O" ) {
  2556. signopt = true;
  2557. }
  2558. ////인증 구분자 추가
  2559. if( prcpflag == "6" ){
  2560. //CP 일 때, 인증저장 2번 뜨는 것을 막는다
  2561. if( questionYN_SMMMO00110 == "Y" ){
  2562. var signid = sysf_getUserInfo ("userid");
  2563. signopt = false;
  2564. }
  2565. }
  2566. ////인증 구분자 추가 끝
  2567. //처방인증
  2568. var v_stext = prcpMain.lf_saveSign ( signbfcnts, signid, signopt, setnode );
  2569. if ( v_stext != "N" ) {
  2570. if (utlf_isNull( v_stext )) {
  2571. stopSavePrcpYN_SMMMO00110 = "Y";
  2572. //fRemoveSaveNodeList();
  2573. return false;
  2574. }
  2575. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_signprcplist" ); //의사처방데이터
  2576. signopt = false; //진단에서 또 안띄우기 위해서 false로 수정
  2577. }
  2578. signbfcnts = prcpMain.ds_result_signdiaglist.getColumn(0, "signbfcnts"); //model.getValue ( "/root/result/signdiaglist/signbfcnts" );
  2579. setnode = prcpMain.ds_result_signdiaglist.getColumn(0, "signaftcnts"); //"/root/result/signdiaglist/signaftcnts";
  2580. //진단인증
  2581. v_stext = prcpMain.lf_saveSign ( signbfcnts, signid, signopt, setnode );
  2582. if ( v_stext != "N") {
  2583. if (utlf_isNull(v_stext)) {
  2584. stopSavePrcpYN_SMMMO00110 = "Y";
  2585. //fRemoveSaveNodeList();
  2586. return false;
  2587. }
  2588. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_signprcplist" ); //의사처방데이터
  2589. }
  2590. }
  2591. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_savedrprcplist" ); //의사처방데이터
  2592. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_saveexecprcplist" ); //실시처방 저장데이터
  2593. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_savediaglist" ); //진단저장 저장데이터
  2594. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_savepamlist" ); //원무정보 저장데이터
  2595. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_savematrprcplist" ); //재료처방정보 저장데이터
  2596. if ( prcpgenrflag != "O" ) {
  2597. //퇴원후 외래처방 저장 setting
  2598. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_dschflaginfo" );
  2599. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_dschpamlist" );
  2600. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_dschdrprcplist" );
  2601. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_dschexecprcplist" );
  2602. prcpMain.fAppendSaveNode( "ds_send_cond2", "ds_result_dschmatrprcplist" );
  2603. if(ErrExistYN_SMMMO00110 == "Y"){
  2604. //미완성 처방을 저장하기 위해 send에 append
  2605. fAppendSaveNode ( "ds_send_saveinvaliprcplist", "ds_result_saveinvaliprcplist" );
  2606. ds_result_saveinvaliprcplist.clearData(); //model.removeNodeset("/root/result/saveinvaliprcplist"); //2008.09.03 추가
  2607. }
  2608. }
  2609. //저장(return:오류처방 조회) 전 오류처방 받을 인스턴스 비움.
  2610. ds_main_invalprcplist.clearData(); //model.removeNodeset ("/root/main/invalprcplist/prcplist");
  2611. if( !utlf_isNull(this.objects["ds_main_invalprcplist_prcpetccnts"]) ) ds_main_invalprcplist_prcpetccnts.clearData();
  2612. prcpMain.fPrcpDCSave_submit2(prcpflag, prcpgenrflag);
  2613. return true;
  2614. }
  2615. }
  2616. ]]></Script>