SMMMO00110.js 124 KB

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