SMMNW05700.js 142 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169
  1. /*
  2. 식이처방 등록(SMMNW05700.xrw - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var xCondPath = "/root/main/cond"; // 조회조건 정보
  7. var xWardMealListPath = "/root/main/wardmealinfo/wardmeallist"; // 병동별 리스트
  8. var xPatMealListPath = "/root/main/patmealinfo/patmeallist"; // 전처방 리스트
  9. var xDietLrgListPath = "/root/main/dietinfo/dietlrgcdinfo/dietlrgcdlist"; // 대분류 리스트
  10. var xDietmdlListPath = "/root/main/dietinfo/dietmdlcdinfo/dietmdlcdlist"; // 중분류 리스트
  11. var xDietsmlListPath = "/root/main/dietinfo/dietsmlcdinfo/dietsmlcdlist"; // 식사리스트
  12. var xTFDtlListPath = "/root/main/dietinfo/tfdtlicdnfo/tfdtlcdlist"; // 선택식 리스트(경장영양식)
  13. var xCalrListPath = "/root/main/dietinfo/calrinfo/calrlist"; // 칼로리 리스트
  14. var xCmntListPath = "/root/main/dietinfo/cmntinfo/cmntlist"; // comment 리스트
  15. var xCntListPath = "/root/main/dietinfo/cntinfo/cntlist"; // 횟수 리스트
  16. var xPatDietInfoPath = "/root/temp/patdietinfo/dietinfo"; // 끼니별 식사처방정보
  17. var xDietTmInfoPath = "/root/main/dietinfo/diettminfo/diettmlist"; // 식사별 수정시간 가능대 리스트
  18. var xDietEndTMListPath = "/root/temp/dietbaseinfo/dietendtmlist"; // 마감시간 리스트
  19. var xBMTDietInfoPath = "/root/main/dietinfo/tfdtlicdnfo/bmtdietlist" // BMT 음료/곡류간식 리스트_20090406(ByJA)
  20. var ProcerDietcd; //보호자식 코드
  21. var ProcerDietcdnm;
  22. var bmtdietlimitcnt = 0; // BMT음료/곡류간식 선택제한 갯수_20090406(ByJA)
  23. var NutrTeamsMealFlag = ""; // 수정요청시 선택끼니_20090728(ByJA)
  24. var seoulinstcd, vincentinstcd; // 병원별 기관코드
  25. var flag = "";
  26. /**
  27. * @group :
  28. * @ver : 2007.06.28
  29. * @by : 성미연
  30. * @---------------------------------------------------
  31. * @type : function
  32. * @access : public
  33. * @desc : 화면 초기화
  34. * @param :
  35. * @return :
  36. * @---------------------------------------------------
  37. */
  38. function fInitialize(){
  39. if(getUserInfo("dutplceinstcd") == "032") {
  40. inpt_remark3.attribute("width") = "355px";
  41. button8.visible = true;
  42. }else{
  43. inpt_remark3.attribute("width") = "425px";
  44. button8.visible = false;
  45. }
  46. zbcfGetDeptCodeList(getUserInfo("dutplceinstcd"),"orduseyn","W","/root/init/wardlist","depthngnm","asc"); // 병동정보
  47. //=============================================================================
  48. //2010.11.11 KNUH 김병국 추가(옵션별 우측메뉴)
  49. var pCode = "'T12', 'U34'"; // 조회할 CdGrupID 코드정보 (식이처방 우측팝업여부)
  50. var pDate = getCurrentDate(); //조회기준일자
  51. model.makeNode("/root/code");
  52. model.makeValue("/root/send/cdgrupid", pCode); // 조회할 CdGrupID 코드정보
  53. model.makeValue("/root/send/srchdd" , pDate); // 조회기준일자
  54. submit("TRMNW00001",false); // wardcareweb
  55. model.removenode("/root/send/cdgrupid");
  56. model.removenode("/root/send/srchdd");
  57. var node = instance1.selectNodes("/root/code/codeinfo/codelist[cdgrupid='T12']");
  58. model.makeNode("/root/temp/codelist/cdid");
  59. if(node.length > 0) {
  60. model.setValue("/root/temp/codelist/cdid", model.getValue("/root/code/codeinfo/codelist[cdgrupid='T12']/cdid"));
  61. if(model.getValue("/root/temp/codelist/cdid") == "N") {
  62. //caption4.visible = false;
  63. }
  64. } else {
  65. }
  66. var val = model.getValue("/root/code/codeinfo/codelist[cdgrupid='U34']/cdid");
  67. if(val =="Y") {
  68. flag = "Y";
  69. }
  70. //2010.11.11 KNUH 김병국 추가(옵션별 우측메뉴)
  71. //==============================================================================
  72. //설정된 상단정보를 불러옴
  73. model.makeNode("/root/main/paminfo");
  74. var node = getGlobalVariable("paminfo");
  75. setCSVToNode("/root/main/paminfo", node);
  76. if (model.getValue("/root/main/paminfo/list/pid") != "") { //상단정보에 환자가 셋팅되어 있을 경우
  77. model.setValue(xCondPath+"/wardcd", model.getValue("/root/main/paminfo/list/wardcd"));
  78. model.setValue(xCondPath+"/careinrmdd", model.getValue("/root/main/paminfo/list/careinrmdd"));
  79. } else {
  80. model.setValue(xCondPath+"/wardcd", getUserInfo("dutplcecd"));
  81. }
  82. model.setValue(xCondPath+"/mealdd", getCurrentDate());
  83. model.setValue(xCondPath+"/fromdd", getCurrentDate().toDate().getAddDate(-1, "D").getDateFormat());
  84. model.setValue(xCondPath+"/todd" , getCurrentDate());
  85. fSearchDietCls("lrg"); // 대분류
  86. fChengedMealFlag("WM");
  87. model.removenodeset(xCmntListPath);
  88. grd_cmntlist.rebuild();
  89. if(submit("TRMNW05710")){ //식이전달사항 조회
  90. var xDietCnmtListPath = "/root/init/cmntinfo/cmntlist";
  91. var iCmntRow = 0;
  92. // commnet 정보
  93. for(iRow=1; iRow<= getNodesetCnt(model,xDietCnmtListPath); iRow++){
  94. grd_cmntlist.addRow(false);
  95. iCmntRow = grd_cmntlist.rows - grd_cmntlist.fixedrows;
  96. model.setValue(xCmntListPath+"["+iCmntRow+"]/cmntnm", model.getValue(xDietCnmtListPath+"["+iRow+"]/cdnm"));
  97. model.setValue(xCmntListPath+"["+iCmntRow+"]/cmntcd", model.getValue(xDietCnmtListPath+"["+iRow+"]/cdid"));
  98. }
  99. }
  100. fSearchRoomRnInfo();
  101. if (model.getValue("/root/main/paminfo/list/roomcd") != "") { //상단정보에 환자가 셋팅되어 있을 경우
  102. model.setValue(xCondPath+"/roomcd", model.getValue("/root/main/paminfo/list/roomcd"));
  103. model.refresh();
  104. }
  105. fSearch("WM");
  106. var top_pid = model.getValue("/root/main/paminfo/list/pid");
  107. if (top_pid != "") { //상단정보에 환자가 셋팅되어 있을 경우
  108. for(i = 1; i <= getNodesetCount(xWardMealListPath); i++) {
  109. if (model.getValue(xWardMealListPath+"[" + i + "]/pid") == top_pid ) {
  110. grd_wardmealinfo.row = i+1;
  111. grd_wardmealinfo.topRow = i+1;
  112. model.setValue(xCondPath+"/dietprcpcopyflag", model.getValue(xWardMealListPath+"["+i+"]/dietprcpcopyflag"));
  113. fClickedGridRow("WM");
  114. }
  115. }
  116. }
  117. fSetProcerdietInfo(); // 보호자식자정보 셋팅 -- 식사 수정 요청 사유 가지고 오기 추가 2013.01.09 KJS
  118. // '14.10.22 - AYS 추가
  119. var UseModiListChk = model.getValue("/root/code/codeinfo/codelist[cdgrupid ='D5']/cdid");
  120. if(UseModiListChk == "Y") {
  121. ipt_reason_desc.disabled = true;
  122. } else {
  123. ipt_reason_desc.disabled = false;
  124. }
  125. model.refresh();
  126. }
  127. /**
  128. * @group :
  129. * @ver : 2009.05.07
  130. * @by : 김진아
  131. * @---------------------------------------------------
  132. * @type : function
  133. * @access : public
  134. * @desc : 보호자식자정보 셋팅 및 팝업메뉴구성(pflag:"pop")
  135. * @param :
  136. * @return :
  137. * @---------------------------------------------------
  138. */
  139. function fSetProcerdietInfo(pflag){
  140. var normalprocerdietcd, normalprocerdietcdnm, vipprocerdietcd, vipprocerdietcdnm, vipdeptcd1, vipdeptcd2;
  141. var pCode = "'068', '076', '077', 'D2', 'D5'"; // 조회할 CdGrupID 코드정보 (141022 추가 - AYS)
  142. var pDate = getCurrentDate(); // 조회기준일자
  143. fGetNursHardCdInfo(pCode, pDate); // 간호하드코딩 테이블 조회_20090416(ByJA)
  144. model.removeNodeset("/root/temp/modreasoninfo");
  145. var j = 1;
  146. for(var i=1; i<=getNodesetCount("/root/code/codeinfo/codelist"); i++){
  147. switch (model.getValue("/root/code/codeinfo/codelist["+i+"]/cdgrupid")){
  148. case "068": // 보호자식사처방코드
  149. normalprocerdietcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  150. normalprocerdietcdnm = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdnm");
  151. break;
  152. case "076": // 고급보호자식사처방코드 추가_20090507(ByJA)
  153. switch(model.getValue("/root/code/codeinfo/codelist["+i+"]/supcdid")){
  154. case "01":
  155. vipprocerdietcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  156. vipprocerdietcdnm = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdnm");
  157. break;
  158. case "02":
  159. vipdeptcd1 = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  160. break;
  161. case "03":
  162. vipdeptcd2 = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  163. break;
  164. }
  165. break;
  166. case "077": // 의정부성모병원기관코드_20090606
  167. switch(model.getValue("/root/code/codeinfo/codelist["+i+"]/supcdid")){
  168. case "01": // (01:서울성모,02:의정부성모,03:부천성가, 04:수원빈센트)
  169. seoulinstcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  170. break;
  171. case "04": // (01:서울성모,02:의정부성모,03:부천성가, 04:수원빈센트)
  172. vincentinstcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  173. break;
  174. }
  175. break;
  176. case "D2": // 식사 수정 요청 사유 2013.01.09 KJS
  177. model.makeValue("/root/temp/modreasoninfo["+j+"]/cdid", model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid"));
  178. model.makeValue("/root/temp/modreasoninfo["+j+"]/cdnm", model.getValue("/root/code/codeinfo/codelist["+i+"]/cdnm"));
  179. j ++;
  180. break;
  181. //case "D5": // 식이처방 수정요청 본원/칠곡 '14.10.22 - AYS
  182. // model.makeValue("/root/temp/modreasoninfo["+j+"]/cdid", model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid"));
  183. // model.makeValue("/root/temp/modreasoninfo["+j+"]/cdnm", model.getValue("/root/code/codeinfo/codelist["+i+"]/cdnm"));
  184. // j ++;
  185. // break;
  186. }
  187. }
  188. if (getUserInfo("dutplceinstcd") == seoulinstcd){ // 서울성모병원
  189. // 21층1병동,21층2병동의 경우 고급보호자식사처방 발행(요청번호:20090410_김숙인ITC)_20090507
  190. if (model.getValue(xCondPath+"/wardcd")==vipdeptcd1 || model.getValue(xCondPath+"/wardcd")==vipdeptcd2) {
  191. ProcerDietcd = vipprocerdietcd;
  192. ProcerDietcdnm = vipprocerdietcdnm;
  193. } else {
  194. ProcerDietcd = normalprocerdietcd;
  195. ProcerDietcdnm = normalprocerdietcdnm;
  196. }
  197. if (pflag == "pop"){
  198. if (model.getValue(xCondPath+"/wardcd")==vipdeptcd1 || model.getValue(xCondPath+"/wardcd")==vipdeptcd2) {
  199. window.setPopupMenu(true, "/root/main/popupmenu/vipprocermeal/item", "name", "func", false);
  200. } else {
  201. window.setPopupMenu(true, "/root/main/popupmenu/procermeal/item", "name", "func", false);
  202. }
  203. }
  204. } else {
  205. ProcerDietcd = normalprocerdietcd;
  206. ProcerDietcdnm = normalprocerdietcdnm;
  207. if (pflag == "pop"){
  208. window.setPopupMenu(true, "/root/main/popupmenu/procermeal/item", "name", "func", false);
  209. }
  210. }
  211. }
  212. /**
  213. * @group :
  214. * @ver : 2007.09.15
  215. * @by : 성미연
  216. * @---------------------------------------------------
  217. * @type : function
  218. * @access : public
  219. * @desc : 병동별 병실, 내환자 정보 조회
  220. * @param :
  221. * @return :
  222. * @---------------------------------------------------
  223. */
  224. function fSearchRoomRnInfo(){
  225. model.removenode("/root/send");
  226. model.makeValue("/root/send/wardcd", model.getValue(xCondPath+"/wardcd"));
  227. if(submit("TRMNW05707",false)) {
  228. model.setValue(xCondPath+"/roomcd", "-");
  229. model.setValue("/root/main/cond/settingrnid", "");
  230. for(i = 1; i <= getNodesetCount("/root/init/roompatinfo/settingrn"); i++ ) {
  231. if (model.getValue("/root/init/roompatinfo/settingrn["+ i +"]/settingrnid") == getUserId()) {
  232. model.setValue("/root/main/cond/settingrnid", getUserId());
  233. }
  234. }
  235. model.refresh();
  236. }
  237. }
  238. /**
  239. * @group :
  240. * @ver : 2007.06.28
  241. * @by : 이은영
  242. * @---------------------------------------------------
  243. * @type : function
  244. * @access : public
  245. * @desc : 병동별/환자별 식이 정보를 조회
  246. * @param :
  247. * @return :
  248. * @---------------------------------------------------
  249. */
  250. function fSearch(pFlag){
  251. model.removenode("/root/send");
  252. model.setValue("root/main/cond/selectcoldiet",grd_wardmealinfo.col);
  253. model.setValue("root/main/cond/selectrowdiet",grd_wardmealinfo.row - 1);
  254. switch(pFlag){
  255. case "WM" : // 병동별 식사정보
  256. var sRoomCd = "";
  257. //식사일자가 미래일자일 경우에는 전처방 todd가 오늘날짜임(전처방그리드에서 미래처방은 조회하지 않기 때문)
  258. if (model.getValue(xCondPath+"/mealdd") > getCurrentDate()){
  259. model.setValue(xCondPath+"/todd", getCurrentDate());
  260. }else{
  261. model.setValue(xCondPath+"/todd", model.getValue(xCondPath+"/mealdd"));
  262. }
  263. model.setValue(xCondPath+"/fromdd" , model.getValue(xCondPath+"/mealdd").toDate().getAddDate(-1, "D").getDateFormat());
  264. model.makeValue("/root/send/mealdd",model.getValue(xCondPath+"/mealdd"));
  265. model.makeValue("/root/send/wardcd",model.getValue(xCondPath+"/wardcd"));
  266. model.makeValue("/root/send/roomcd",model.getValue(xCondPath+"/roomcd"));
  267. model.makeValue("/root/send/settingrnid",model.getValue(xCondPath+"/settingrnid"));
  268. if(submit("TRMNW05701", false)){
  269. //같은 병실 merge
  270. for(var iRow = 1; iRow<= getNodesetCnt(model,xWardMealListPath); iRow++){
  271. if(iRow == 1){
  272. sRoomCd = model.getValue(xWardMealListPath+"["+iRow+"]/roomcd");
  273. model.setValue(xWardMealListPath+"["+iRow+"]/roomcd", sRoomCd);
  274. } else {
  275. if(sRoomCd == model.getValue(xWardMealListPath+"["+iRow+"]/roomcd")){
  276. model.setValue(xWardMealListPath+"["+iRow+"]/roomcd","");
  277. }else{
  278. sRoomCd = model.getValue(xWardMealListPath+"["+iRow+"]/roomcd");
  279. }
  280. }
  281. }
  282. grd_wardmealinfo.refresh();
  283. grd_wardmealinfo.resizeCells();
  284. fClearPatDetailInfo("total", "Y"); // 개별 환자의 상세한 정보를 지움
  285. }
  286. fSetProcerdietInfo(); // 보호자식자정보 셋팅_20090507추가(ByJA)
  287. break;
  288. case "PM" : // 환자별 식사정보
  289. //var iRow = grd_wardmealinfo.row-1;
  290. if(event.button == 3){ //마우스 뒤 클릭시에도 조회
  291. var iRow = grd_wardmealinfo.mouseRow-1;
  292. }else{
  293. var iRow = grd_wardmealinfo.row-1;
  294. }
  295. if (iRow < 1){
  296. messageBox("환자를 먼저","C002");
  297. return;
  298. }
  299. //전처방 조회시 미래일자는 조회되지 않음
  300. if (model.getValue(xCondPath+"/todd") > getCurrentDate()){
  301. messageBox("미래일자 처방은 조회되지 않습니다.","I");
  302. model.setValue(xCondPath+"/todd", getCurrentDate());
  303. ipt_todd.refresh();
  304. }
  305. model.removenodeset(xPatMealListPath);
  306. grd_wardmealinfo.rebuild();
  307. if(iRow < 1) return;
  308. model.makeValue("/root/send/fromdd", model.getValue(xCondPath+"/fromdd"));
  309. model.makeValue("/root/send/todd" , model.getValue(xCondPath+"/todd"));
  310. model.makeValue("/root/send/pid" , model.getValue(xWardMealListPath+"["+iRow+"]/pid"));
  311. model.makeValue("/root/send/orddd" , model.getValue(xWardMealListPath+"["+iRow+"]/orddd"));
  312. model.makeValue("/root/send/cretno", model.getValue(xWardMealListPath+"["+iRow+"]/cretno"));
  313. model.makeValue("/root/send/instcd", model.getValue(xWardMealListPath+"["+iRow+"]/instcd"));
  314. if(submit("TRMNW05702")){
  315. grd_wardmealinfo.row = iRow+1;
  316. grd_wardmealinfo.topRow = iRow;
  317. grd_patmealinfo.resizeCells();
  318. }
  319. break;
  320. }
  321. if(getNodesetCount(xWardMealListPath) > 0){
  322. for (var i=0;i<=getNodesetCount(xWardMealListPath);i++) {
  323. var sbreaknoprvyn = model.getValue(xWardMealListPath+"[" + i + "]/breaknoprvyn"); // 아침식사수정요청
  324. var slunchnoaprvyn = model.getValue(xWardMealListPath+"[" + i + "]/lunchnoaprvyn"); // 점심식사수정요청
  325. var sdinnernoaprvyn = model.getValue(xWardMealListPath+"[" + i + "]/dinnernoaprvyn");// 저녁식사수정요청
  326. if(sbreaknoprvyn != null && sbreaknoprvyn > 0 ){
  327. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakdietnm")) = "#FFCC66";
  328. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakcalr")) = "#FFCC66";
  329. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakcnt")) = "#FFCC66";
  330. }else{
  331. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakdietnm")) = "#FFFFFF";
  332. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakcalr")) = "#FFFFFF";
  333. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakcnt")) = "#FFFFFF";
  334. }
  335. if(slunchnoaprvyn != null && slunchnoaprvyn > 0 ){
  336. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchdietnm")) = "#FFCC66";
  337. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchcalr")) = "#FFCC66";
  338. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchcnt")) = "#FFCC66";
  339. }else{
  340. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchdietnm")) = "#FFFFFF";
  341. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchcalr")) = "#FFFFFF";
  342. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchcnt")) = "#FFFFFF";
  343. }
  344. if(sdinnernoaprvyn != null && sdinnernoaprvyn > 0 ){
  345. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnerdietnm")) = "#FFCC66";
  346. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnercalr")) = "#FFCC66";
  347. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnercnt")) = "#FFCC66";
  348. }else{
  349. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnerdietnm")) = "#FFFFFF";
  350. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnercalr")) = "#FFFFFF";
  351. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnercnt")) = "#FFFFFF";
  352. }
  353. }
  354. grd_wardmealinfo.refresh();
  355. }
  356. if(getNodesetCount(xPatMealListPath) > 0){
  357. for (var i=0;i<=getNodesetCount(xPatMealListPath);i++) {
  358. var snoprvyn = model.getValue(xPatMealListPath+"[" + i + "]/noprvyn"); // 식사수정요청
  359. if(snoprvyn != null && snoprvyn > 0 ){
  360. grd_patmealinfo.rowStyle(i,"data", "background-color") = "#FFCC66";
  361. }else{
  362. grd_patmealinfo.rowStyle(i,"data", "background-color") = "#FFFFFF";
  363. }
  364. }
  365. grd_patmealinfo.refresh();
  366. }
  367. }
  368. /**
  369. * @group :
  370. * @ver : 2007.06.29
  371. * @by : 이은영, 성미연
  372. * @---------------------------------------------------
  373. * @type : function
  374. * @access : public
  375. * @desc : 식사 대/중/소 분류 조회
  376. * @param :
  377. * @return :
  378. * @---------------------------------------------------
  379. */
  380. function fSearchDietCls(pFlag){
  381. model.removenode("/root/send");
  382. switch(pFlag){
  383. case "lrg" : // 대분류
  384. if(submit("TRMNW05703")){
  385. copyNodeset(xDietLrgListPath,"/root/temp/dietbaseinfo/dietlrgcdlist","replace");
  386. grd_dietlrgclsinfo.refresh();
  387. }
  388. break;
  389. case "mdl" : // 중분류
  390. var iLrgRow = grd_dietlrgclsinfo.row;
  391. model.removenodeset(xDietmdlListPath);
  392. if(iLrgRow < 1) return;
  393. model.makeValue("/root/send/dietlrgcd", model.getValue(xDietLrgListPath+"["+iLrgRow+"]/dietlrgcd"));
  394. if(submit("TRMNW05704")){
  395. fClearPatDetailInfo("mdl", "N");
  396. }
  397. break;
  398. case "sml" : // 소분류
  399. var iLrgRow = grd_dietlrgclsinfo.row;
  400. var iMdlRow = grd_dietmdlclsinfo.row;
  401. if(iLrgRow < 1) return;
  402. if(iMdlRow < 1) return;
  403. model.makeValue("/root/send/dietlrgcd", model.getValue(xDietLrgListPath+"["+iLrgRow+"]/dietlrgcd"));
  404. model.makeValue("/root/send/dietmdlcd", model.getValue(xDietmdlListPath+"["+iMdlRow+"]/dietmdlcd"));
  405. model.makeValue("/root/send/mealdd", model.getValue(xCondPath+"/mealdd"));
  406. model.makeValue("/root/send/procerprcpcd", ProcerDietcd);
  407. model.makeValue("/root/send/procermealrefyn", "N");
  408. if(submit("TRMNW05705")){
  409. fClearPatDetailInfo("sml", "N");
  410. }
  411. break;
  412. case "calr": // 칼로리/횟수/경장영양식 세부코드 조회/BMT음료,곡류간식 조회
  413. var iMdlRow = grd_dietmdlclsinfo.row;
  414. var iSmlRow = grd_dietsmlclsinfo.row;
  415. if(iSmlRow < 1) return;
  416. var sCalrMin = eval(model.getValue(xDietsmlListPath+"["+iSmlRow+"]/calrmin"));
  417. var sCalrMax = eval(model.getValue(xDietsmlListPath+"["+iSmlRow+"]/calrmax"));
  418. var sCntInfo = "";
  419. var iCalrRow = 0;
  420. var iCntRow = 0;
  421. var sCalrCnts = 0;
  422. var sCnt = 0;
  423. model.makeValue(xCondPath+"/toendflag", model.getValue(xDietsmlListPath+"["+iSmlRow+"]/endflag"));
  424. fClearPatDetailInfo("sml", "N");
  425. //식사분류 관계없이 세부코드 조회_20090316(ByJA)
  426. model.makeValue("/root/send/dietcd", model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd"));
  427. submit("TRMNW05711");
  428. // BMT음료/곡류간식 조회 시 선택제한 갯수별 갯수콤보 셋팅_20090406(ByJA)
  429. bmtdietlimitcnt = model.getValue(xDietsmlListPath+"["+iSmlRow+"]/limcnt");
  430. for(var i=0; i<=bmtdietlimitcnt; i++){
  431. model.makeValue("/root/main/dietinfo/tfdtlicdnfo/bmtdietcntlist["+(i+1)+"]/value", i);
  432. model.makeValue("/root/main/dietinfo/tfdtlicdnfo/bmtdietcntlist["+(i+1)+"]/label", i);
  433. }
  434. for(var i=1; i<=getNodesetCount(xBMTDietInfoPath); i++){
  435. model.makeValue(xBMTDietInfoPath+"["+i+"]/bmtdietcnt", 0);
  436. model.makeValue(xBMTDietInfoPath+"["+i+"]/orgbmtdietcnt", 0);
  437. }
  438. grd_bmtdietlist.refresh();
  439. /* 원본_20090316(ByJA)
  440. //경장영양식 세부코드 조회
  441. if(model.getValue(xDietmdlListPath+"["+iMdlRow+"]/dietmdlcd") == '09') { //09 : 경장영양식
  442. model.makeValue("/root/send/dietcd", model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd"));
  443. submit("TRMNW05711");
  444. }
  445. */
  446. // 칼로리 리스트가 존재하는 경우
  447. if(sCalrMin > 0) {
  448. // 수원빈센트병원 일 경우 경장영양식 칼로리 200씩 증가, 그외는 기존처럼 100씩 증가_20090831(ByJA)
  449. var calterm = 100;
  450. if(vincentinstcd == getUserInfo("dutplceinstcd")){ // 수원빈센트병원 일 경우
  451. if(model.getValue("/root/main/dietinfo/dietmdlcdinfo/dietmdlcdlist["+grd_dietmdlclsinfo.row+"]/dietmdlcd") == "09"){ // 경장영양식일 경우
  452. calterm = 200;
  453. }
  454. }
  455. for(sCalrCnts=sCalrMin; sCalrCnts<=sCalrMax; sCalrCnts += Number(calterm)){
  456. grd_calrlist.addRow(false);
  457. iCalrRow = grd_calrlist.rows - grd_calrlist.fixedrows;
  458. model.setValue(xCalrListPath+"["+iCalrRow+"]/calrcnts", sCalrCnts);
  459. }
  460. /* 원본_20090831
  461. for(sCalrCnts=sCalrMin; sCalrCnts<=sCalrMax; sCalrCnts += 100){
  462. grd_calrlist.addRow(false);
  463. iCalrRow = grd_calrlist.rows - grd_calrlist.fixedrows;
  464. model.setValue(xCalrListPath+"["+iCalrRow+"]/calrcnts", sCalrCnts);
  465. }
  466. */
  467. }
  468. // 횟수 리스트가 존재하는 경우
  469. if(model.getValue(xDietsmlListPath+"["+iSmlRow+"]/cntinptyn") == "Y"){
  470. sCntInfo = model.getValue(xDietsmlListPath+"["+iSmlRow+"]/cnt").split("^");
  471. for(i=0; i < sCntInfo.length; i++){
  472. grd_cntlist.addRow(false);
  473. iCntRow = grd_cntlist.rows - grd_cntlist.fixedrows;
  474. model.setValue(xCntListPath+"["+iCntRow+"]/cnt", sCntInfo[i]);
  475. }
  476. }
  477. /* for(var iRow=grd_cmntlist.fixedrows; iRow<= grd_cmntlist.rows-grd_cmntlist.fixedrows; iRow++){
  478. model.setValue(xCmntListPath+"["+iRow+"]/check","false");
  479. }*/
  480. grd_calrlist.row = 0;
  481. grd_cntlist.row = 0;
  482. grd_cmntlist.row = 0;
  483. break;
  484. }
  485. }
  486. /**
  487. * @group :
  488. * @ver : 2007.09.03
  489. * @by : 성미연
  490. * @---------------------------------------------------
  491. * @type : function
  492. * @access : public
  493. * @desc : 식사별 수정가능시간대 그리드 셋팅
  494. * @param :
  495. * @return :
  496. * @---------------------------------------------------
  497. */
  498. function fSetDietTmInfo(){
  499. // 식사별 수정가능 시간대 설정
  500. model.removeNodeset(xDietTmInfoPath);
  501. grd_diettminfo.refresh();
  502. var sMealFlag = ""; // 식사구분
  503. var sEndFlag = ""; // 마감구분
  504. var sFromTm = ""; // 시작시간
  505. var sToTm = ""; // 종료시간
  506. var sPrestTm = getCurrentTime().substr(0,4); // 현재시간
  507. var sBackColor = "#FFCCFF";
  508. var sPrestCol = 0;
  509. var sPrestRow = 0;
  510. var mealdd = model.getValue(xCondPath+"/mealdd");
  511. var curdd = getCurrentDate();
  512. for(var iRow = 1; iRow < 7; iRow++){
  513. grd_diettminfo.addRow(false);
  514. }
  515. model.setValue(xDietTmInfoPath+"[1]/mealflag", "1");
  516. model.setValue(xDietTmInfoPath+"[1]/mealkind", "치료식");
  517. model.setValue(xDietTmInfoPath+"[2]/mealflag", "1");
  518. model.setValue(xDietTmInfoPath+"[2]/mealkind", "일반식");
  519. model.setValue(xDietTmInfoPath+"[3]/mealflag", "2");
  520. model.setValue(xDietTmInfoPath+"[3]/mealkind", "치료식");
  521. model.setValue(xDietTmInfoPath+"[4]/mealflag", "2");
  522. model.setValue(xDietTmInfoPath+"[4]/mealkind", "일반식");
  523. model.setValue(xDietTmInfoPath+"[5]/mealflag", "3");
  524. model.setValue(xDietTmInfoPath+"[5]/mealkind", "치료식");
  525. model.setValue(xDietTmInfoPath+"[6]/mealflag", "3");
  526. model.setValue(xDietTmInfoPath+"[6]/mealkind", "일반식");
  527. for(var iRow=1; iRow<= getNodesetCnt(model,xDietEndTMListPath); iRow++){
  528. sMealFlag = model.getValue(xDietEndTMListPath+"["+iRow+"]/mealflag");
  529. sEndFlag = model.getValue(xDietEndTMListPath+"["+iRow+"]/endflag");
  530. sFromTm = model.getValue(xDietEndTMListPath+"["+iRow+"]/fromtm");
  531. sToTm = model.getValue(xDietEndTMListPath+"["+iRow+"]/totm");
  532. if(sMealFlag == "1"){ // 아침
  533. if(sEndFlag == "1"){ // 1차
  534. model.setValue(xDietTmInfoPath+"[1]/no2",sToTm);
  535. model.setValue(xDietTmInfoPath+"[2]/no2",sToTm);
  536. grd_diettminfo.cellStyle("background-color",0,3,0,5) = sBackColor;
  537. grd_diettminfo.cellStyle("background-color",1,3) = sBackColor;
  538. if(curdd == mealdd) { //식사일자가 현재날짜인 경우
  539. if(sFromTm <= sPrestTm && sPrestTm <= sToTm) {
  540. sPrestRow = 0;
  541. }
  542. } else if (curdd < mealdd ) { //미래 식사일자 조회할 경우
  543. sPrestRow = 0;
  544. } else if (curdd > mealdd ) { //과거 식사일자 조회할 경우
  545. sPrestRow = 4;
  546. }
  547. model.setValue(xDietTmInfoPath+"[1]/fromtm_1",sFromTm);
  548. model.setValue(xDietTmInfoPath+"[1]/totm_1",sToTm);
  549. model.setValue(xDietTmInfoPath+"[2]/fromtm_1",sFromTm);
  550. model.setValue(xDietTmInfoPath+"[2]/totm_1",sToTm);
  551. }else if(sEndFlag == "2"){ // 2차
  552. model.setValue(xDietTmInfoPath+"[1]/no4",sToTm);
  553. model.setValue(xDietTmInfoPath+"[2]/no4",sToTm);
  554. grd_diettminfo.cellStyle("background-color",0,3,0,5) = sBackColor;
  555. grd_diettminfo.cellStyle("background-color",1,5) = sBackColor;
  556. if(curdd == mealdd) {
  557. if(sFromTm <= sPrestTm && sPrestTm <= sToTm){
  558. sPrestRow = 0;
  559. }
  560. } else if (curdd < mealdd ) {
  561. sPrestRow = 0;
  562. } else if (curdd > mealdd ) {
  563. sPrestRow = 4;
  564. }
  565. model.setValue(xDietTmInfoPath+"[1]/fromtm_2",sFromTm);
  566. model.setValue(xDietTmInfoPath+"[1]/totm_2",sToTm);
  567. model.setValue(xDietTmInfoPath+"[2]/fromtm_2",sFromTm);
  568. model.setValue(xDietTmInfoPath+"[2]/totm_2",sToTm);
  569. }
  570. }else if(sMealFlag == "2"){ // 점심
  571. if(sEndFlag == "1"){ // 1차
  572. model.setValue(xDietTmInfoPath+"[3]/no2",sToTm);
  573. model.setValue(xDietTmInfoPath+"[4]/no2",sToTm);
  574. grd_diettminfo.cellStyle("background-color",2,3,2,5) = sBackColor;
  575. grd_diettminfo.cellStyle("background-color",3,3) = sBackColor;
  576. if(curdd == mealdd) {
  577. if(sFromTm <= sPrestTm && sPrestTm <= sToTm){
  578. sPrestRow = 2;
  579. }
  580. } else if (curdd < mealdd ) {
  581. sPrestRow = 0;
  582. } else if (curdd > mealdd ) {
  583. sPrestRow = 4;
  584. }
  585. model.setValue(xDietTmInfoPath+"[3]/fromtm_1",sFromTm);
  586. model.setValue(xDietTmInfoPath+"[3]/totm_1",sToTm);
  587. model.setValue(xDietTmInfoPath+"[4]/fromtm_1",sFromTm);
  588. model.setValue(xDietTmInfoPath+"[4]/totm_1",sToTm);
  589. }else if(sEndFlag == "2"){ // 2차
  590. model.setValue(xDietTmInfoPath+"[3]/no4",sToTm);
  591. model.setValue(xDietTmInfoPath+"[4]/no4",sToTm);
  592. grd_diettminfo.cellStyle("background-color",2,3,2,5) = sBackColor;
  593. grd_diettminfo.cellStyle("background-color",3,5) = sBackColor;
  594. if(curdd == mealdd) {
  595. if(sFromTm <= sPrestTm && sPrestTm <= sToTm){
  596. sPrestRow = 2;
  597. }
  598. } else if (curdd < mealdd ) {
  599. sPrestRow = 0;
  600. } else if (curdd > mealdd ) {
  601. sPrestRow = 4;
  602. }
  603. model.setValue(xDietTmInfoPath+"[3]/fromtm_2",sFromTm);
  604. model.setValue(xDietTmInfoPath+"[3]/totm_2",sToTm);
  605. model.setValue(xDietTmInfoPath+"[4]/fromtm_2",sFromTm);
  606. model.setValue(xDietTmInfoPath+"[4]/totm_2",sToTm);
  607. }
  608. }else if(sMealFlag == "3"){ // 저녁
  609. if(sEndFlag == "1"){ // 1차
  610. model.setValue(xDietTmInfoPath+"[5]/no2",sToTm);
  611. model.setValue(xDietTmInfoPath+"[6]/no2",sToTm);
  612. grd_diettminfo.cellStyle("background-color",4,3,4,5) = sBackColor;
  613. grd_diettminfo.cellStyle("background-color",5,3) = sBackColor;
  614. if(curdd == mealdd) {
  615. if(sFromTm <= sPrestTm && sPrestTm <= sToTm){
  616. sPrestRow = 4;
  617. }
  618. } else if (curdd < mealdd ) {
  619. sPrestRow = 0;
  620. } else if (curdd > mealdd ) {
  621. sPrestRow = 4;
  622. }
  623. model.setValue(xDietTmInfoPath+"[5]/fromtm_1",sFromTm);
  624. model.setValue(xDietTmInfoPath+"[5]/totm_1",sToTm);
  625. model.setValue(xDietTmInfoPath+"[6]/fromtm_1",sFromTm);
  626. model.setValue(xDietTmInfoPath+"[6]/totm_1",sToTm);
  627. }else if(sEndFlag == "2"){ // 2차
  628. model.setValue(xDietTmInfoPath+"[5]/no4",sToTm);
  629. model.setValue(xDietTmInfoPath+"[6]/no4",sToTm);
  630. grd_diettminfo.cellStyle("background-color",4,3,4,5) = sBackColor;
  631. grd_diettminfo.cellStyle("background-color",5,5) = sBackColor;
  632. if(curdd == mealdd) {
  633. if((sFromTm <= sPrestTm && sPrestTm <= sToTm) || sPrestTm >= sToTm){
  634. sPrestRow = 4;
  635. }
  636. } else if (curdd < mealdd ) {
  637. sPrestRow = 0;
  638. } else if (curdd > mealdd ) {
  639. sPrestRow = 4;
  640. }
  641. model.setValue(xDietTmInfoPath+"[5]/fromtm_2",sFromTm);
  642. model.setValue(xDietTmInfoPath+"[5]/totm_2",sToTm);
  643. model.setValue(xDietTmInfoPath+"[6]/fromtm_2",sFromTm);
  644. model.setValue(xDietTmInfoPath+"[6]/totm_2",sToTm);
  645. }
  646. }
  647. }
  648. // 현재 시간 설정
  649. for(var iRow=1; iRow<= getNodesetCnt(model,xDietTmInfoPath); iRow++){
  650. sEndFromTm_1 = model.getValue(xDietTmInfoPath+"["+iRow+"]/fromtm_1");
  651. sEndToTm_1 = model.getValue(xDietTmInfoPath+"["+iRow+"]/totm_1");
  652. sEndFromTm_2 = model.getValue(xDietTmInfoPath+"["+iRow+"]/fromtm_2");
  653. sEndToTm_2 = model.getValue(xDietTmInfoPath+"["+iRow+"]/totm_2");
  654. if(curdd == mealdd) {
  655. if(sPrestTm > sEndFromTm_1 && sPrestTm < sEndToTm_1) {
  656. sPrestCol = 2;
  657. } else if(sPrestTm == sEndToTm_1) {
  658. sPrestCol = 3;
  659. } else if(sPrestTm > sEndFromTm_2 && sPrestTm < sEndToTm_2) {
  660. sPrestCol = 4;
  661. } else if(sPrestTm >= sEndToTm_2) {
  662. sPrestCol = 5;
  663. } else {
  664. continue;
  665. }
  666. } else if (curdd < mealdd ) {
  667. sPrestCol = 2;
  668. } else if (curdd > mealdd ) {
  669. sPrestCol = 5;
  670. }
  671. }
  672. grd_diettminfo.cellStyle("border-style",sPrestRow,sPrestCol,sPrestRow+1,sPrestCol) = "solid";
  673. grd_diettminfo.cellStyle("border-width",sPrestRow,sPrestCol,sPrestRow+1,sPrestCol) = "3px";
  674. grd_diettminfo.cellStyle("border-color",sPrestRow,sPrestCol,sPrestRow+1,sPrestCol) = "#FF0000";
  675. grd_diettminfo.mergeCells = "bycol";
  676. grd_diettminfo.mergeCol(2) = false;
  677. grd_diettminfo.mergeCol(3) = false;
  678. grd_diettminfo.mergeCol(4) = false;
  679. grd_diettminfo.mergeCol(5) = false;
  680. grd_diettminfo.mergeCol(6) = false;
  681. grd_diettminfo.mergeCol(7) = false;
  682. grd_diettminfo.mergeCol(8) = false;
  683. grd_diettminfo.mergeCol(9) = false;
  684. grd_diettminfo.mergeCol(10) = false;
  685. grd_diettminfo.refresh();
  686. }
  687. /**
  688. * @group :
  689. * @ver : 2007.07.02
  690. * @by : 이은영
  691. * @---------------------------------------------------
  692. * @type : function
  693. * @access : public
  694. * @desc : 식사 구분 변경
  695. * @param :
  696. * @return :
  697. * @---------------------------------------------------
  698. */
  699. function fChengedMealFlag(pFlag){
  700. var mealflag = "";
  701. if(pFlag == "WM") { //병동별 식사정보 그리드 클릭시
  702. mealflag = model.getValue(xPatDietInfoPath+"/drugspdunitflag")
  703. }else if (pFlag == "PM"){ //전처방 식사정보 그리드 클릭시
  704. mealflag = model.getValue(xPatMealListPath+"[" + grd_patmealinfo.row + "]/drugspdunitflag");
  705. }
  706. if(model.getValue(xCondPath+"/changeonemeal") == "Y"){
  707. rdo_mealflag.disabled = false;
  708. model.setValue(xCondPath+"/mealflag", mealflag);
  709. }else{
  710. rdo_mealflag.disabled = true;
  711. model.setValue(xCondPath+"/mealflag","");
  712. }
  713. rdo_mealflag.refresh();
  714. }
  715. /**
  716. * @group :
  717. * @ver : 2007.07.02
  718. * @by : 이은영, 성미연
  719. * @---------------------------------------------------
  720. * @type : function
  721. * @access : public
  722. * @desc : 그리드 클릭시
  723. * @param :
  724. * @return :
  725. * @---------------------------------------------------
  726. */
  727. function fClickedGridRow(pFlag){
  728. model.removenode("/root/send");
  729. switch(pFlag){
  730. case "WM" : // 병동별 식사정보
  731. //var iRow = grd_wardmealinfo.row-1;
  732. //var iCol = grd_wardmealinfo.col;
  733. if(event.button == 3){ //마우스 뒤 클릭시에도 조회
  734. var iRow = grd_wardmealinfo.mouseRow-1;
  735. var iCol = grd_wardmealinfo.mouseCol;
  736. }else{
  737. var iRow = grd_wardmealinfo.row-1;
  738. var iCol = grd_wardmealinfo.col;
  739. }
  740. var sMealFlag = 0;
  741. var dietprcpcopyflag = "";
  742. var careinrmdd = "";
  743. var iStatus = "";
  744. var dietnmCol = "";
  745. var calrCol = "";
  746. var cntCol = "";
  747. var sMealFlag = "";
  748. var PatDietData ="X break lunch dinner"
  749. var PatArrDiet = PatDietData.split(" ");
  750. if(iRow < 1) return;
  751. dietprcpcopyflag = model.getValue(xWardMealListPath+"["+iRow+"]/dietprcpcopyflag");
  752. if (dietprcpcopyflag != "") {
  753. model.setValue(xCondPath+"/dietprcpcopyflag", dietprcpcopyflag);
  754. } else {
  755. model.setValue(xCondPath+"/dietprcpcopyflag", "D");
  756. }
  757. //입실확인 정보
  758. careinrmdd = model.getValue(xWardMealListPath+"["+iRow+"]/careinrmdd");
  759. model.setValue(xCondPath+"/careinrmdd", careinrmdd);
  760. //병동별 그리드 스타일 초기화
  761. grd_wardmealinfo.rebuildStyle(2,0,grd_wardmealinfo.rows-1,grd_wardmealinfo.cols-1);
  762. if(iCol == grd_wardmealinfo.colRef("breakdietnm") || iCol == grd_wardmealinfo.colRef("breakcalr") || iCol == grd_wardmealinfo.colRef("breakcnt")){ // 아침
  763. //선택된 셀 표시
  764. dietnmCol = grd_wardmealinfo.colRef("breakdietnm");
  765. calrCol = grd_wardmealinfo.colRef("breakcalr");
  766. cntCol = grd_wardmealinfo.colRef("breakcnt");
  767. grd_wardmealinfo.cellStyle("border-style", iRow+1, dietnmCol, iRow+1, dietnmCol) = "solid";
  768. grd_wardmealinfo.cellStyle("border-width", iRow+1, dietnmCol, iRow+1, dietnmCol) = "2px";
  769. grd_wardmealinfo.cellStyle("border-color", iRow+1, dietnmCol, iRow+1, dietnmCol) = "#FF0000";
  770. grd_wardmealinfo.cellStyle("border-style", iRow+1, calrCol, iRow+1, cntCol) = "solid";
  771. grd_wardmealinfo.cellStyle("border-width", iRow+1, calrCol, iRow+1, cntCol) = "2px";
  772. grd_wardmealinfo.cellStyle("border-color", iRow+1, calrCol, iRow+1, cntCol) = "#FF0000";
  773. sMealFlag = 1;
  774. } else if(iCol == grd_wardmealinfo.colRef("lunchdietnm") || iCol == grd_wardmealinfo.colRef("lunchcalr") || iCol == grd_wardmealinfo.colRef("lunchcnt")){ // 점심
  775. //선택된 셀 표시
  776. dietnmCol = grd_wardmealinfo.colRef("lunchdietnm");
  777. calrCol = grd_wardmealinfo.colRef("lunchcalr");
  778. cntCol = grd_wardmealinfo.colRef("lunchcnt");
  779. grd_wardmealinfo.cellStyle("border-style", iRow+1, dietnmCol, iRow+1, dietnmCol) = "solid";
  780. grd_wardmealinfo.cellStyle("border-width", iRow+1, dietnmCol, iRow+1, dietnmCol) = "2px";
  781. grd_wardmealinfo.cellStyle("border-color", iRow+1, dietnmCol, iRow+1, dietnmCol) = "#FF0000";
  782. grd_wardmealinfo.cellStyle("border-style", iRow+1, calrCol, iRow+1, cntCol) = "solid";
  783. grd_wardmealinfo.cellStyle("border-width", iRow+1, calrCol, iRow+1, cntCol) = "2px";
  784. grd_wardmealinfo.cellStyle("border-color", iRow+1, calrCol, iRow+1, cntCol) = "#FF0000";
  785. sMealFlag = 2;
  786. } else if(iCol == grd_wardmealinfo.colRef("dinnerdietnm") || iCol == grd_wardmealinfo.colRef("dinnercalr") || iCol == grd_wardmealinfo.colRef("dinnercnt")){ // 저녁
  787. //선택된 셀 표시
  788. dietnmCol = grd_wardmealinfo.colRef("dinnerdietnm");
  789. calrCol = grd_wardmealinfo.colRef("dinnercalr");
  790. cntCol = grd_wardmealinfo.colRef("dinnercnt");
  791. grd_wardmealinfo.cellStyle("border-style", iRow+1, dietnmCol, iRow+1, dietnmCol) = "solid";
  792. grd_wardmealinfo.cellStyle("border-width", iRow+1, dietnmCol, iRow+1, dietnmCol) = "2px";
  793. grd_wardmealinfo.cellStyle("border-color", iRow+1, dietnmCol, iRow+1, dietnmCol) = "#FF0000";
  794. grd_wardmealinfo.cellStyle("border-style", iRow+1, calrCol, iRow+1, cntCol) = "solid";
  795. grd_wardmealinfo.cellStyle("border-width", iRow+1, calrCol, iRow+1, cntCol) = "2px";
  796. grd_wardmealinfo.cellStyle("border-color", iRow+1, calrCol, iRow+1, cntCol) = "#FF0000";
  797. sMealFlag = 3;
  798. }
  799. //보호자 식사처방 표시
  800. model.setValue(xCondPath+"/procermealprcpyn", model.getValue(xWardMealListPath+"["+iRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag"));
  801. if(model.getValue(xCondPath+"/procermealprcpyn") == "N") {
  802. model.setValue(xCondPath+"/procermealprcpyn", "");
  803. }
  804. if((iCol>=4 && iCol<= 6) || (iCol>=29 && iCol<= 34)){
  805. if(model.getValue(xWardMealListPath+"["+iRow+"]/"+PatArrDiet[sMealFlag]+ "stat") == "I"){
  806. if(model.getValue(xWardMealListPath+"["+iRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") == "Y"){ //환자식사 DC되고 보호자식사만 있는 경우
  807. model.setValue(xCondPath+"/changeonemeal","Y");
  808. model.setValue(xPatDietInfoPath+"/drugspdunitflag", sMealFlag);
  809. }else{
  810. model.setValue(xCondPath+"/changeonemeal","");
  811. }
  812. fClearPatDetailInfo("total", "N");
  813. fChengedMealFlag("WM");
  814. grd_dietlrgclsinfo.row = 0;
  815. return;
  816. }
  817. model.makeValue("/root/send/pid",model.getValue(xWardMealListPath+"["+iRow+"]/pid"));
  818. model.makeValue("/root/send/orddd",model.getValue(xWardMealListPath+"["+iRow+"]/orddd"));
  819. model.makeValue("/root/send/cretno",model.getValue(xWardMealListPath+"["+iRow+"]/cretno"));
  820. model.makeValue("/root/send/instcd",model.getValue(xWardMealListPath+"["+iRow+"]/instcd"));
  821. model.makeValue("/root/send/prcpdd",model.getValue(xWardMealListPath+"["+iRow+"]/prcpdd"));
  822. model.makeValue("/root/send/prcphistno",model.getValue(xWardMealListPath+"["+iRow+"]/"+PatArrDiet[sMealFlag]+ "prcphistno"));
  823. model.makeValue("/root/send/prcpno",model.getValue(xWardMealListPath+"["+iRow+"]/"+PatArrDiet[sMealFlag]+ "prcpno"));
  824. if(submit("TRMNW05706")){
  825. model.setValue(xCondPath+"/changeonemeal","Y");
  826. if(grd_patmealinfo.rows > grd_patmealinfo.fixedrows){
  827. model.removenodeset(xPatMealListPath);
  828. }
  829. model.makeValue(xPatDietInfoPath+"/drugpackflag", model.getValue("/root/main/cond/procermealprcpyn")); //보호자식사처방 입력로직변경에 따라 보호자 식사처방이 있을 경우에도 drugpackflag를 N으로 가져옴. 따라서 체크여부로 확인
  830. fChengedMealFlag("WM");
  831. //보호자 식사처방, 칼로리 셋팅(저장시 상태변화 유무 비교하기 위해 셋팅)
  832. if(model.getValue(xPatDietInfoPath+"/drugpackflag") == "N") {
  833. model.makeValue(xPatDietInfoPath+"/drugpackflag", "");
  834. }
  835. // 대분류 정보 표시
  836. var iLrgRow = grd_dietlrgclsinfo.findRow(model.getValue(xPatDietInfoPath+"/dietlrgcd"),1,1,false,true);
  837. grd_dietlrgclsinfo.row = iLrgRow;
  838. grd_dietlrgclsinfo.topRow = iLrgRow-1;
  839. // 중분류 정보 표시
  840. fSearchDietCls("mdl");
  841. var iMdlRow = grd_dietmdlclsinfo.findRow(model.getValue(xPatDietInfoPath+"/dietmdlcd"),1,1,false,true);
  842. grd_dietmdlclsinfo.row = iMdlRow;
  843. grd_dietmdlclsinfo.topRow = iMdlRow-1;
  844. // 식이처방 정보 표시
  845. fSearchDietCls("sml");
  846. var iDietRow = grd_dietsmlclsinfo.findRow(model.getValue(xPatDietInfoPath+"/dietcd"),1,0,false,true);
  847. grd_dietsmlclsinfo.row = iDietRow;
  848. grd_dietsmlclsinfo.topRow = iDietRow-1;
  849. // 칼로리, 횟수, 경장영양식 조회
  850. fSearchDietCls("calr");
  851. //칼로리
  852. var sCalrCnts = model.getValue(xPatDietInfoPath+"/calrcnts");
  853. var iCalrRow = grd_calrlist.findRow(sCalrCnts,1,0,false,true);
  854. grd_calrlist.row = iCalrRow;
  855. grd_calrlist.topRow = iCalrRow-1;
  856. // 횟수
  857. var sCnt = model.getValue(xPatDietInfoPath+"/mealprotcnts");
  858. var iCntRow = grd_cntlist.findRow(sCnt,1,0,false,true);
  859. /*
  860. alert("iCntRow=== "+iCntRow);
  861. if(sCnt != "" && iCntRow < 1){
  862. grd_cntlist.addRow();
  863. iCntRow = grd_cntlist.rows - grd_cntlist.fixedrows;
  864. model.setValue(xCntListPath+"["+iCntRow+"]/cnt",sCnt);
  865. }
  866. */
  867. grd_cntlist.row = iCntRow;
  868. grd_cntlist.topRow = iCntRow-1;
  869. //경장영양식
  870. var tfdtlcd = model.getValue(xPatDietInfoPath+"/tfdtlcd");
  871. var iTFDtlCdRow = grd_tfdtlcdlist.findRow(tfdtlcd,1,1,false,true);
  872. grd_tfdtlcdlist.row = iTFDtlCdRow;
  873. grd_tfdtlcdlist.topRow = iTFDtlCdRow-1;
  874. // 영양실 remark
  875. var sRemark3 = model.getValue(xPatDietInfoPath+"/remark3");
  876. inpt_remark3.value = sRemark3;
  877. inpt_remark3.refresh();
  878. // comment
  879. var sCmntList = model.getValue(xPatDietInfoPath+"/clinccmtcnts").split(",");
  880. var iCmntRow = 0;
  881. fClearPatDetailInfo("PM", "N");
  882. for(var i=0; i< sCmntList.length; i++){
  883. if(sCmntList[0] == "" || sCmntList[0] == "-"){
  884. break;
  885. }
  886. iCmntRow = grd_cmntlist.findRow(sCmntList[i],1,2,false,true);
  887. model.setValue(xCmntListPath+"["+iCmntRow+"]/check","true");
  888. grd_cmntlist.topRow = sCmntList[0]-1;
  889. }
  890. // BMT음료/곡류간식_20090413(ByJA)
  891. for(var i=1; i<=getNodesetCount(xPatDietInfoPath); i++){
  892. var bmealdrnkcd = model.getValue(xPatDietInfoPath+"["+i+"]/bmealdrnkcd");
  893. var bmealdrnkqty = model.getValue(xPatDietInfoPath+"["+i+"]/bmealdrnkqty");
  894. for(var j=1; j<=getNodesetCount(xBMTDietInfoPath); j++){
  895. var bmtdietcd = model.getValue(xBMTDietInfoPath+"["+j+"]/bmtdietcd");
  896. if(bmtdietcd==bmealdrnkcd){
  897. model.makeValue(xBMTDietInfoPath+"["+j+"]/check", "true");
  898. model.makeValue(xBMTDietInfoPath+"["+j+"]/bmtdietcnt", bmealdrnkqty);
  899. model.makeValue(xBMTDietInfoPath+"["+j+"]/orgbmtdietcnt", bmealdrnkqty);
  900. }
  901. }
  902. }
  903. for(var i=1; i<=getNodesetCount(xBMTDietInfoPath); i++){
  904. if(model.getValue(xBMTDietInfoPath+"["+i+"]/bmtdietcnt") == 0){
  905. model.makeValue(xBMTDietInfoPath+"["+i+"]/orgbmtdietcnt", 0);
  906. }
  907. }
  908. }
  909. }else{
  910. model.setValue(xCondPath+"/changeonemeal","");
  911. fClearPatDetailInfo("total", "N");
  912. fChengedMealFlag("WM");
  913. grd_dietlrgclsinfo.row = 0;
  914. model.makeValue("/root/send/pid",model.getValue(xWardMealListPath+"["+iRow+"]/pid"));
  915. model.makeValue("/root/send/orddd",model.getValue(xWardMealListPath+"["+iRow+"]/orddd"));
  916. model.makeValue("/root/send/cretno",model.getValue(xWardMealListPath+"["+iRow+"]/cretno"));
  917. model.makeValue("/root/send/instcd",model.getValue(xWardMealListPath+"["+iRow+"]/instcd"));
  918. model.makeValue("/root/send/prcpdd",model.getValue(xWardMealListPath+"["+iRow+"]/prcpdd"));
  919. submit("TRMNW05706");
  920. }
  921. break;
  922. case "PM" : // 환자별 식사정보
  923. var iRow = grd_patmealinfo.row;
  924. if(iRow < 1) return;
  925. model.setValue(xCondPath+"/changeonemeal","Y");
  926. fChengedMealFlag("PM");
  927. fClearPatDetailInfo("PM", "N");
  928. //DC처방일 경우 조회되지 않음
  929. if(model.getValue(xPatMealListPath+"["+iRow+"]/prcpstat") == "D/C"){
  930. fClearPatDetailInfo("PMDC", "N");
  931. grd_cmntlist.Toprow = 1;
  932. return;
  933. }
  934. //병동별 그리드 스타일 초기화
  935. grd_wardmealinfo.rebuildStyle(2,0,grd_wardmealinfo.rows-1,grd_wardmealinfo.cols-1);
  936. // 대분류
  937. var iLrgRow = grd_dietlrgclsinfo.findRow(model.getValue(xPatMealListPath+"["+iRow+"]/dietlrgcd"),1,1,false,true);
  938. grd_dietlrgclsinfo.row = iLrgRow;
  939. grd_dietlrgclsinfo.topRow = iLrgRow-1;
  940. // 중분류
  941. fSearchDietCls("mdl");
  942. var iMdlRow = grd_dietmdlclsinfo.findRow(model.getValue(xPatMealListPath+"["+iRow+"]/dietmdlcd"),1,1,false,true);
  943. grd_dietmdlclsinfo.row = iMdlRow;
  944. grd_dietmdlclsinfo.topRow = iMdlRow-1;
  945. // 식이처방
  946. fSearchDietCls("sml");
  947. var iDietRow = grd_dietsmlclsinfo.findRow(model.getValue(xPatMealListPath+"["+iRow+"]/prcpcd"),1,0,false,true);
  948. grd_dietsmlclsinfo.row = iDietRow;
  949. grd_dietsmlclsinfo.topRow = iDietRow-1;
  950. // 칼로리, 횟수, 경장영양식 조회
  951. fSearchDietCls("calr");
  952. //칼로리
  953. var iCalrRow = grd_calrlist.findRow(model.getValue(xPatMealListPath+"["+iRow+"]/mealcalrcnts"),1,0,false,true);
  954. grd_calrlist.row = iCalrRow;
  955. grd_calrlist.topRow = iCalrRow-1;
  956. // 횟수
  957. sCnt = model.getValue(xPatMealListPath+"["+iRow+"]/cnt");
  958. var iCntRow = grd_cntlist.findRow(sCnt,1,0,false,true);
  959. /*
  960. if(sCnt != "" && iCntRow < 1){
  961. grd_cntlist.addRow();
  962. iCntRow = grd_cntlist.rows - grd_cntlist.fixedrows;
  963. model.setValue(xCntListPath+"["+iCntRow+"]/cnt",sCnt);
  964. }
  965. */
  966. grd_cntlist.row = iCntRow;
  967. grd_cntlist.topRow = iCntRow-1;
  968. //경장영양식
  969. var tfdtlcd = model.getValue(xPatMealListPath+"/tfdtlcd");
  970. var iTFDtlCdRow = grd_tfdtlcdlist.findRow(tfdtlcd,1,1,false,true);
  971. grd_tfdtlcdlist.row = iTFDtlCdRow;
  972. grd_tfdtlcdlist.topRow = iTFDtlCdRow-1;
  973. // comment
  974. var sCmntList = model.getValue(xPatMealListPath+"["+iRow+"]/clinccmtcnts").split(",");
  975. var iCmntRow = 0;
  976. for(var i=0; i< sCmntList.length; i++){
  977. if(sCmntList[0] == "" || sCmntList[0] == "-"){
  978. break;
  979. }
  980. iCmntRow = grd_cmntlist.findRow(sCmntList[i],1,2,false,true);
  981. model.setValue(xCmntListPath+"["+iCmntRow+"]/check","true");
  982. grd_cmntlist.Toprow = sCmntList[0]-1;
  983. }
  984. // 영양실 remark
  985. var sRemark3 = model.getValue(xPatMealListPath+"["+iRow+"]/remark3").split(",");
  986. inpt_remark3.value = sRemark3;
  987. inpt_remark3.refresh();
  988. // BMT음료/곡류간식_20090612(ByJA)
  989. var bmealdrnkcd = model.getValue(xPatMealListPath+"["+iRow+"]/bmealdrnkcd");
  990. var bmealdrnkqty = model.getValue(xPatMealListPath+"["+iRow+"]/bmealdrnkqty");
  991. var bmealdrnkcdlist = bmealdrnkcd.split(",");
  992. var bmealdrnkqtylist = bmealdrnkqty.split(",");
  993. for(var i=0; i<bmealdrnkcdlist.length; i++){
  994. for(var j=1; j<=getNodesetCount(xBMTDietInfoPath); j++){
  995. var bmtdietcd = model.getValue(xBMTDietInfoPath+"["+j+"]/bmtdietcd");
  996. if(bmtdietcd==bmealdrnkcdlist[i]){
  997. model.makeValue(xBMTDietInfoPath+"["+j+"]/check", "true");
  998. model.makeValue(xBMTDietInfoPath+"["+j+"]/bmtdietcnt" , bmealdrnkqtylist[i]);
  999. model.makeValue(xBMTDietInfoPath+"["+j+"]/orgbmtdietcnt", bmealdrnkqtylist[i]);
  1000. }
  1001. }
  1002. }
  1003. for(var i=1; i<=getNodesetCount(xBMTDietInfoPath); i++){
  1004. if(model.getValue(xBMTDietInfoPath+"["+i+"]/bmtdietcnt") == 0){
  1005. model.makeValue(xBMTDietInfoPath+"["+i+"]/orgbmtdietcnt", 0);
  1006. }
  1007. }
  1008. grd_bmtdietlist.refresh();
  1009. //보호자 식사처방 체크
  1010. model.setValue(xCondPath+"/procermealprcpyn", model.getValue(xPatMealListPath+"["+iRow+"]/drugpackflag"));
  1011. chk_procermealprcpyn.refresh();
  1012. break;
  1013. }
  1014. }
  1015. /**
  1016. * @group :
  1017. * @ver : 2007.07.12
  1018. * @by : 이은영
  1019. * @---------------------------------------------------
  1020. * @type : function
  1021. * @access : public
  1022. * @desc : 개별 환자의 상세한 정보를 지움
  1023. * @param :
  1024. * @return :
  1025. * @---------------------------------------------------
  1026. */
  1027. function fClearPatDetailInfo(pFlag, tmFlag){
  1028. switch(pFlag){
  1029. case "total":
  1030. grd_dietlrgclsinfo.row = 0;
  1031. if(grd_dietmdlclsinfo.rows > grd_dietmdlclsinfo.fixedrows){
  1032. model.removenodeset(xDietmdlListPath);
  1033. }
  1034. if(grd_dietsmlclsinfo.rows > grd_dietsmlclsinfo.fixedrows){
  1035. model.removenodeset(xDietsmlListPath);
  1036. }
  1037. if(grd_tfdtlcdlist.rows > grd_tfdtlcdlist.fixedrows){
  1038. model.removenodeset(xTFDtlListPath);
  1039. grd_tfdtlcdlist.rebuild();
  1040. }
  1041. if(grd_calrlist.rows > grd_calrlist.fixedrows){
  1042. model.removenodeset(xCalrListPath);
  1043. grd_calrlist.rebuild();
  1044. }
  1045. if(grd_cntlist.rows > grd_cntlist.fixedrows){
  1046. model.removenodeset(xCntListPath);
  1047. grd_cntlist.rebuild();
  1048. }
  1049. if(grd_patmealinfo.rows > grd_patmealinfo.fixedrows){
  1050. model.removenodeset(xPatMealListPath);
  1051. }
  1052. if(grd_bmtdietlist.rows > grd_bmtdietlist.fixedrows){ // 추가_20090406(ByJA)
  1053. model.removenodeset(xBMTDietInfoPath);
  1054. }
  1055. for(iRow=grd_cmntlist.fixedrows; iRow<= grd_cmntlist.rows - grd_cmntlist.fixedrows; iRow++){
  1056. model.setValue(xCmntListPath+"["+iRow+"]/check", "false");
  1057. }
  1058. //식사별 수정가능 시간대 그리스 셋팅(메인 그리드 조회시 현재시간 셋팅 필요)
  1059. if (tmFlag == "Y") {
  1060. fSetDietTmInfo();
  1061. }
  1062. model.refresh();
  1063. inpt_remark3.value = "";
  1064. inpt_remark3.refresh();
  1065. break;
  1066. case "mdl":
  1067. if(grd_dietsmlclsinfo.rows > grd_dietsmlclsinfo.fixedrows){
  1068. model.removenodeset(xDietsmlListPath);
  1069. grd_dietsmlclsinfo.rebuild();
  1070. }
  1071. if(grd_bmtdietlist.rows > grd_bmtdietlist.fixedrows){ // 추가_20090406(ByJA)
  1072. model.removenodeset(xBMTDietInfoPath);
  1073. grd_bmtdietlist.rebuild();
  1074. }
  1075. if(grd_tfdtlcdlist.rows > grd_tfdtlcdlist.fixedrows){
  1076. model.removenodeset(xTFDtlListPath);
  1077. grd_tfdtlcdlist.rebuild();
  1078. }
  1079. if(grd_calrlist.rows > grd_calrlist.fixedrows){
  1080. model.removenodeset(xCalrListPath);
  1081. grd_calrlist.rebuild();
  1082. }
  1083. if(grd_cntlist.rows > grd_cntlist.fixedrows){
  1084. model.removenodeset(xCntListPath);
  1085. grd_cntlist.rebuild();
  1086. }
  1087. break;
  1088. case "sml":
  1089. if(grd_tfdtlcdlist.rows > grd_tfdtlcdlist.fixedrows){
  1090. model.removenodeset(xTFDtlListPath);
  1091. grd_tfdtlcdlist.rebuild();
  1092. }
  1093. if(grd_calrlist.rows > grd_calrlist.fixedrows){
  1094. model.removenodeset(xCalrListPath);
  1095. grd_calrlist.rebuild();
  1096. }
  1097. if(grd_cntlist.rows > grd_cntlist.fixedrows){
  1098. model.removenodeset(xCntListPath);
  1099. grd_cntlist.rebuild();
  1100. }
  1101. break;
  1102. case "PM":
  1103. for(iRow=grd_cmntlist.fixedrows; iRow<= grd_cmntlist.rows - grd_cmntlist.fixedrows; iRow++){
  1104. model.setValue(xCmntListPath+"["+iRow+"]/check", "false");
  1105. }
  1106. grd_cmntlist.rebuild();
  1107. break;
  1108. case "PMDC": //전처방 중 DC처방 클릭시
  1109. grd_dietlrgclsinfo.row = 0;
  1110. if(grd_dietmdlclsinfo.rows > grd_dietmdlclsinfo.fixedrows){
  1111. model.removenodeset(xDietmdlListPath);
  1112. grd_dietmdlclsinfo.rebuild();
  1113. }
  1114. if(grd_dietsmlclsinfo.rows > grd_dietsmlclsinfo.fixedrows){
  1115. model.removenodeset(xDietsmlListPath);
  1116. grd_dietsmlclsinfo.rebuild();
  1117. }
  1118. if(grd_bmtdietlist.rows > grd_bmtdietlist.fixedrows){ // 추가_20090406(ByJA)
  1119. model.removenodeset(xBMTDietInfoPath);
  1120. grd_bmtdietlist.rebuild();
  1121. }
  1122. if(grd_tfdtlcdlist.rows > grd_tfdtlcdlist.fixedrows){
  1123. model.removenodeset(xTFDtlListPath);
  1124. grd_tfdtlcdlist.rebuild();
  1125. }
  1126. if(grd_calrlist.rows > grd_calrlist.fixedrows){
  1127. model.removenodeset(xCalrListPath);
  1128. grd_calrlist.rebuild();
  1129. }
  1130. if(grd_cntlist.rows > grd_cntlist.fixedrows){
  1131. model.removenodeset(xCntListPath);
  1132. grd_cntlist.rebuild();
  1133. }
  1134. break;
  1135. }
  1136. model.setValue("/root/main/dietinfo/modreason", "");
  1137. model.setValue("/root/main/dietinfo/modreasondesc", "");
  1138. cmb_reason.refresh();
  1139. ipt_reason_desc.refresh();
  1140. if(getNodesetCount(xWardMealListPath) > 0){
  1141. for (var i=0;i<=getNodesetCount(xWardMealListPath);i++) {
  1142. var sbreaknoprvyn = model.getValue(xWardMealListPath+"[" + i + "]/breaknoprvyn"); // 아침식사수정요청
  1143. var slunchnoaprvyn = model.getValue(xWardMealListPath+"[" + i + "]/lunchnoaprvyn"); // 점심식사수정요청
  1144. var sdinnernoaprvyn = model.getValue(xWardMealListPath+"[" + i + "]/dinnernoaprvyn");// 저녁식사수정요청
  1145. if(sbreaknoprvyn != null && sbreaknoprvyn > 0 ){
  1146. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakdietnm")) = "#FFCC66";
  1147. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakcalr")) = "#FFCC66";
  1148. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakcnt")) = "#FFCC66";
  1149. }else{
  1150. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakdietnm")) = "#FFFFFF";
  1151. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakcalr")) = "#FFFFFF";
  1152. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("breakcnt")) = "#FFFFFF";
  1153. }
  1154. if(slunchnoaprvyn != null && slunchnoaprvyn > 0 ){
  1155. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchdietnm")) = "#FFCC66";
  1156. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchcalr")) = "#FFCC66";
  1157. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchcnt")) = "#FFCC66";
  1158. }else{
  1159. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchdietnm")) = "#FFFFFF";
  1160. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchcalr")) = "#FFFFFF";
  1161. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("lunchcnt")) = "#FFFFFF";
  1162. }
  1163. if(sdinnernoaprvyn != null && sdinnernoaprvyn > 0 ){
  1164. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnerdietnm")) = "#FFCC66";
  1165. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnercalr")) = "#FFCC66";
  1166. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnercnt")) = "#FFCC66";
  1167. }else{
  1168. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnerdietnm")) = "#FFFFFF";
  1169. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnercalr")) = "#FFFFFF";
  1170. grd_wardmealinfo.cellStyle("background-color",i+1, grd_wardmealinfo.colRef("dinnercnt")) = "#FFFFFF";
  1171. }
  1172. }
  1173. grd_wardmealinfo.refresh();
  1174. }
  1175. }
  1176. /**
  1177. * @group :
  1178. * @ver : 2007.12.13
  1179. * @by : 성미연
  1180. * @---------------------------------------------------
  1181. * @type : function
  1182. * @access : public
  1183. * @desc : 보호자 식이처방 정보 조회
  1184. * @param :
  1185. * @return :
  1186. * @---------------------------------------------------
  1187. */
  1188. function fProcerDietInfo(){
  1189. model.makeValue("/root/send/mealdd", model.getValue(xCondPath+"/mealdd"));
  1190. model.makeValue("/root/send/procerprcpcd", ProcerDietcd);
  1191. model.makeValue("/root/send/procermealrefyn", "Y");
  1192. submit("TRMNW05709");
  1193. }
  1194. /**
  1195. * @group :
  1196. * @ver : 2007.07.12
  1197. * @by : 이은영, 성미연
  1198. * @---------------------------------------------------
  1199. * @type : function
  1200. * @access : public
  1201. * @desc : 식이처방정보 저장(copy옵션, 보호자 식이처방 정보도 함께 저장)
  1202. * @param :
  1203. * @return :
  1204. * @---------------------------------------------------
  1205. */
  1206. function fSave(procerdelflag){
  1207. //과거처방 수정불가
  1208. if(getCurrentDate() > model.getValue(xCondPath+"/mealdd")){
  1209. messageBox("과거식사는 수정할 수", "I004");
  1210. return;
  1211. }
  1212. //입실체크 이전에 입력불가
  1213. if(model.getValue(xCondPath+"/careinrmdd") == '-'){
  1214. messageBox("입실체크 후 식사를 입력 하십시오.", "I");
  1215. return;
  1216. }
  1217. var sChangeOneMeal = model.getValue(xCondPath+"/changeonemeal");
  1218. var sMealFlag = 0; // 식사구분
  1219. var sAprvYN = "";
  1220. var sMealSavePossMsg = ""; // 식사수정가능여부check
  1221. var sMealFlagMsg = ""; // 수정 불가능한 끼니 메세지
  1222. var sSaveHeader = "status▦prcpno▦prcphistno▦prcpcd▦calcscorcd▦tfdtlcd▦mealcalrcnts▦mealprotcnts▦procerdietflag▦payflagcd▦mealupdtflag▦dietprcpgenrflag▦prcpdelivefact▦clinccmtcnts▦execprcpno▦execprcpuniqno▦"
  1223. +"instcd▦pid▦orddd▦prcpdd▦cretno▦orddeptcd▦orddrid▦prcpflag▦"
  1224. +"asttestflag▦seqno▦deptcd▦deptnm▦userid▦usernm▦dietprcpcopyflag▦bmtdietcd▦bmtdietnm▦bmtdietcnt▦bmtstatus▩"; // BMT음료/곡류간식정보추가(bmtdietcd▦bmtdietnm▦bmtdietcnt▦bmtstatus)_20090407(ByJA)
  1225. var sSaveData = "";
  1226. var sProcerSaveData = "";
  1227. var sSaveComData = "";
  1228. var sPrcpFlag = "3"; // 처방구분 (영양 : 3)
  1229. var sInptCond = ""; // 입력조건 (1 : 바로 입력하는게없음. 그외 : 열량을 반드시 입력)
  1230. var sCntInptYN = ""; // 횟수 입력 여부
  1231. var sCalrCnts = ""; // 칼로리
  1232. var sCnt = ""; // 횟수
  1233. var sTFDtlCd = ""; // 경장영양식 세부코드
  1234. var sTFDtlNm = ""; // 경장영양식 세부코드명
  1235. var sProcerMealPrcpYN = ""; // 보호자 식이 처방 여부
  1236. var sAstTestFlag = ""; // 퇴원식이구분
  1237. var sMealUpdtFlag = ""; // 식이수정구분
  1238. var sCmntCDList = ""; // 식이전달사항 코드
  1239. var sCmntNMList = ""; // 식이전달사항명
  1240. var endflag = ""; // 마감구분
  1241. var bmtdietcd = "" // BMT음료/곡류간식코드_20090407(ByJA)
  1242. var bmtdietnm = "" // BMT음료/곡류간식명 _20090407(ByJA)
  1243. var bmtdietcnt = "" // BMT음료/곡류간식갯수_20090407(ByJA)
  1244. var bmtstatus = "" // BMT음료/곡류간식상태_20090407(ByJA)
  1245. var execprcpno = ""
  1246. var execprcpuniqno = ""
  1247. if(sChangeOneMeal == "Y"){
  1248. if(model.getValue(xCondPath+"/mealflag") == "") {
  1249. messageBox("아침/점심/저녁 끼니를 선택하세요.", "I");
  1250. return;
  1251. }
  1252. sMealFlag = eval(model.getValue(xCondPath+"/mealflag"));
  1253. }else{
  1254. sMealFlag = 0; // 세끼 모두 저장
  1255. }
  1256. var iPatRow = grd_wardmealinfo.row-1; //환자 정보
  1257. if(iPatRow < 1){
  1258. messageBox("환자를 먼저","C002");
  1259. return;
  1260. }
  1261. var iLrgRow = grd_dietlrgclsinfo.row; // 대분류
  1262. var iMdlRow = grd_dietmdlclsinfo.row; // 중분류
  1263. var iSmlRow = grd_dietsmlclsinfo.row; // 식이정보
  1264. var iTFDtlCdRow = grd_tfdtlcdlist.row; // 경장영양식
  1265. var iCalrRow = grd_calrlist.row; // 칼로리
  1266. var iCntRow = grd_cntlist.row; // 횟수
  1267. // var iDietLrgCD = model.getValue(xDietLrgListPath+"["+iLrgRow+"]/dietlrgcd"); // Q1 : 일반식, 이외 : 치료식
  1268. var DietData = "";
  1269. var ProcerDietData = "";
  1270. var PatDietData ="X break lunch dinner"
  1271. var PatArrDiet = PatDietData.split(" ");
  1272. var ProcerDietData ="X procerbreak procerlunch procerdinner"
  1273. var ProcerArrDiet = ProcerDietData.split(" ");
  1274. var ArrDietData ="X 아침 점심 저녁"
  1275. var ArrDiet = ArrDietData.split(" ");
  1276. var sSavePossYN = "";
  1277. // 보호자 식이처방
  1278. sProcerMealPrcpYN = model.getValue(xCondPath+"/procermealprcpyn");
  1279. if(sProcerMealPrcpYN == "") sProcerMealPrcpYN = "N";
  1280. // comment
  1281. for(var iRow = grd_cmntlist.fixedrows; iRow <=grd_cmntlist.rows - grd_cmntlist.fixedrows; iRow++){
  1282. if(model.getValue(xCmntListPath+"["+iRow+"]/check")=="true"){
  1283. if(sCmntCDList != "") sCmntCDList += ",";
  1284. sCmntCDList+= model.getValue(xCmntListPath+"["+iRow+"]/cmntcd");
  1285. if(sCmntNMList != "") sCmntNMList += ",";
  1286. sCmntNMList+= model.getValue(xCmntListPath+"["+iRow+"]/cmntnm"); //경장영양식 코드가 있을 경우에는 경장영양식세부코드,전달사항을 더해서 저장함
  1287. }
  1288. }
  1289. //퇴원식이구분
  1290. if (sAstTestFlag == "") {
  1291. sAstTestFlag = "N";
  1292. }
  1293. //변경된 정보가 없을 경우 체크
  1294. //BMT음료/곡류간식_20090413(ByJA)
  1295. var bmtudtcnt = 0;
  1296. for(var i=1; i<=getNodesetCount(xBMTDietInfoPath); i++){
  1297. if(model.getValue(xBMTDietInfoPath+"["+i+"]/bmtstatus")=="U"){
  1298. bmtudtcnt++;
  1299. }
  1300. }
  1301. if( model.getValue(xCondPath+"/procermealprcpyn") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") //보호자식이구분
  1302. && model.getValue(xCondPath+"/dietprcpcopyflag") == model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag") //식이copy옵션
  1303. && iLrgRow > 0 //기존식사 없을 경우에 dietcd만 비교하면 대분류만 선택하였을 경우에는 체크하지 못함(식사정보를 조회하였는지 알기 위해서는 대/중분류도 비교한다.)
  1304. && iMdlRow > 0
  1305. && model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "dietcd")
  1306. && model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "tfdtlcd")
  1307. && model.getValue(xCalrListPath+"["+iCalrRow+"]/calrcnts") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "calr")
  1308. && model.getValue(xCntListPath+"["+iCntRow+"]/cnt") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "cnt")
  1309. && sCmntCDList == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "clinccmtcnts")
  1310. ) {
  1311. if(bmtudtcnt==0){
  1312. messageBox("변경된 정보가", "I004");
  1313. return;
  1314. }
  1315. bmtudtcnt = -1;
  1316. /* 원본_20090413
  1317. messageBox("변경된 정보가", "I004");
  1318. return;
  1319. */
  1320. }
  1321. //식이를 선택하지 않고 환자만 선택하여 저장하는 경우 -> 식이copy옵션만 저장
  1322. if(iLrgRow < 1){ //대분류 선택하지 않았을 경우 식이copy옵션 저장(보호자 식사처방은 끼니마다 체크함) or 보호자 식사처방만 저장
  1323. if(model.getValue(xCondPath+"/procermealprcpyn") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") //보호자식이구분
  1324. && model.getValue(xCondPath+"/dietprcpcopyflag") == model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag")){ //식이copy옵션
  1325. messageBox("변경된 정보가", "I004");
  1326. return;
  1327. }
  1328. //환자식사 DC된 상태에서 보호자 식사 삭제, 환자식사 없는 상태에서 보호자식사만 입력은 불가함
  1329. if(model.getValue(xCondPath+"/dietprcpcopyflag") == model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag")
  1330. && model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") == ""
  1331. && model.getValue(xCondPath+"/procermealprcpyn") == "Y"){
  1332. messageBox("환자식사를 먼저 저장하십시오.", "I");
  1333. return;
  1334. }
  1335. //환자식사 DC된 상태에서 보호자 식사 삭제, 환자식사 없는 상태에서 보호자식사만 입력은 불가함
  1336. if(model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") == "Y"
  1337. && model.getValue(xCondPath+"/procermealprcpyn") == ""){
  1338. //보호자식 삭제
  1339. }
  1340. //식이copy옵션 변경
  1341. if(model.getValue(xCondPath+"/dietprcpcopyflag") != model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag")){
  1342. fSaveDietCopyinfo();
  1343. }
  1344. } else { //대분류를 선택했을 경우에는 식이 선택하여 저장
  1345. //식이를 조회한 후 식이copy옵션만 수정하여 저장할 경우
  1346. if( model.getValue(xCondPath+"/procermealprcpyn") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") //보호자식이구분
  1347. && model.getValue(xCondPath+"/dietprcpcopyflag") != model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag") //식이copy옵션
  1348. && iLrgRow > 0
  1349. && iMdlRow > 0
  1350. && model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "dietcd")
  1351. && model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "tfdtlcd")
  1352. && model.getValue(xCalrListPath+"["+iCalrRow+"]/calrcnts") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "calr")
  1353. && model.getValue(xCntListPath+"["+iCntRow+"]/cnt") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "cnt")
  1354. && sCmntCDList == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "clinccmtcnts")) {
  1355. fSaveDietCopyinfo();
  1356. }else{
  1357. if(iMdlRow < 1){
  1358. messageBox("중분류를","C002");
  1359. return;
  1360. }
  1361. if(iSmlRow < 1){
  1362. messageBox("식이를","C002");
  1363. return;
  1364. }
  1365. //endflag = model.getValue(xDietsmlListPath+"["+iSmlRow+"]/endflag"); //마감구분
  1366. endflag = model.getValue(xPatDietInfoPath+"["+iSmlRow+"]/endflag"); //마감구분 김홍점 수정 20091202 식사리스트조회한거에서 마감정보를 보면 안되고 환자의현재식사가 치료식마감인지를 판단해야함.
  1367. if(getNodesetCnt(model,xTFDtlListPath) > 0){
  1368. if(iTFDtlCdRow < 1){
  1369. messageBox("경장영양식 세부코드를","C002");
  1370. return;
  1371. }else{
  1372. sTFDtlCd = model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd");
  1373. sTFDtlNm = model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlnm");
  1374. if(sCmntNMList != "") {
  1375. sCmntNMList = sTFDtlNm + "," + sCmntNMList;
  1376. }else{
  1377. sCmntNMList = sTFDtlNm;
  1378. }
  1379. }
  1380. }
  1381. sInptCond = model.getValue(xDietsmlListPath+"["+iSmlRow+"]/inptcond");
  1382. sCntInptYN = model.getValue(xDietsmlListPath+"["+iSmlRow+"]/cntinptyn");
  1383. if(sInptCond != "1" && iCalrRow < 1){
  1384. messageBox("칼로리를","C002");
  1385. return;
  1386. }else{
  1387. sCalrCnts = model.getValue(xCalrListPath+"["+iCalrRow+"]/calrcnts");
  1388. if(sCalrCnts == ""){
  1389. sCalrCnts = 0;
  1390. }
  1391. }
  1392. if(sCntInptYN == "Y" && iCntRow<1){
  1393. messageBox("횟수를","C002");
  1394. return;
  1395. }else{
  1396. sCnt = model.getValue(xCntListPath+"["+iCntRow+"]/cnt");
  1397. if(sCnt == ""){
  1398. sCnt = 3;
  1399. }
  1400. }
  1401. //보호자 식이만 수정하는 경우 마감시간 체크
  1402. if( model.getValue(xCondPath+"/procermealprcpyn") != model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") //보호자식이구분
  1403. && model.getValue(xCondPath+"/dietprcpcopyflag") == model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag") //식이copy옵션
  1404. && iLrgRow > 0
  1405. && iMdlRow > 0
  1406. && model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "dietcd")
  1407. && model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "tfdtlcd")
  1408. && model.getValue(xCalrListPath+"["+iCalrRow+"]/calrcnts") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "calr")
  1409. && model.getValue(xCntListPath+"["+iCntRow+"]/cnt") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "cnt")
  1410. && sCmntCDList == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "clinccmtcnts")) {
  1411. sMealSavePossMsg = fChkEndTime(sMealFlag, model.getValue("/root/temp/procerdietinfo/procerdietlist/endflag"), "Y", "N"); //보호자식이 마감시간 체크
  1412. if(sMealSavePossMsg != ""){
  1413. messageBox("[" + ArrDiet[sMealFlag]+ "] " + sMealSavePossMsg + "를 수정할 수 없습니다.", "I");
  1414. return;
  1415. }
  1416. }
  1417. // DietData + sSaveComData;
  1418. if(getNodesetCount(xBMTDietInfoPath)>0){
  1419. for(var i=1; i<=getNodesetCount(xBMTDietInfoPath); i++){
  1420. // if(Number(model.getValue(xBMTDietInfoPath+"["+i+"]/bmtdietcnt"))>0){
  1421. bmtdietcd += model.getValue(xBMTDietInfoPath+"["+i+"]/bmtdietcd") +"|"; // BMT음료/곡류간식코드_20090407(ByJA)
  1422. bmtdietnm += model.getValue(xBMTDietInfoPath+"["+i+"]/bmtdietnm") +"|"; // BMT음료/곡류간식명_20090407(ByJA)
  1423. bmtdietcnt += model.getValue(xBMTDietInfoPath+"["+i+"]/bmtdietcnt")+"|"; // BMT음료/곡류간식갯수_20090407(ByJA)
  1424. bmtstatus += model.getValue(xBMTDietInfoPath+"["+i+"]/bmtstatus") +"|"; // BMT음료/곡류간식상태_20090407(ByJA)
  1425. // }
  1426. }
  1427. }
  1428. sSaveComData = model.getValue(xWardMealListPath+"["+iPatRow+"]/instcd") +"▦" // 기관코드
  1429. + model.getValue(xWardMealListPath+"["+iPatRow+"]/pid") +"▦" // 환자번호
  1430. + model.getValue(xWardMealListPath+"["+iPatRow+"]/orddd") +"▦" // 입원일자
  1431. + model.getValue(xCondPath+"/mealdd") +"▦" // 처방일자
  1432. + model.getValue(xWardMealListPath+"["+iPatRow+"]/cretno") +"▦" // 생성번호
  1433. + model.getValue(xWardMealListPath+"["+iPatRow+"]/orddeptcd") +"▦" // 진료부서코드
  1434. + model.getValue(xWardMealListPath+"["+iPatRow+"]/orddrid") +"▦" // 진료의ID
  1435. + sPrcpFlag +"▦" // 처방구분
  1436. + sAstTestFlag +"▦" // 퇴원식이구분
  1437. //+ sCmntNMList +"▦" // 식이전달사항명
  1438. //+ sCmntCDList +"▦" // 식이전달사항코드
  1439. + model.getValue(xWardMealListPath+"["+iPatRow+"]/seqno") +"▦" // 일련번호(원무테이블 업데이트 정보)
  1440. + getUserInfo("dutplcecd") +"▦" // 부서코드
  1441. + getUserInfo("dutplcenm") +"▦" // 부서명
  1442. + getUserId() +"▦" // 사용자ID
  1443. + getUserName() +"▦"
  1444. + model.getValue(xCondPath+"/dietprcpcopyflag") +"▦" // 식이Copy옵션(원무테이블 업데이트 정보)
  1445. + bmtdietcd +"▦" // BMT음료/곡류간식코드
  1446. + bmtdietnm +"▦" // BMT음료/곡류간식명
  1447. + bmtdietcnt +"▦" // BMT음료/곡류간식갯수
  1448. + bmtstatus // BMT음료/곡류간식상태
  1449. +"▩";
  1450. switch(sMealFlag){
  1451. case 0: // 세끼
  1452. for(i=1; i<4; i++) {
  1453. var patStatus = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[i]+ "stat");
  1454. //각 끼니의 보호자식사 저장 유무
  1455. //환자식사, 보호자식사 저장되어 있는 상태에서 의사가 환자식사만 DC했을 경우에, 보호자 식사만 남았을 경우 환자식사 재입력시 다시 저장하지 않는다.
  1456. var procerPrcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+ProcerArrDiet[i]+ "prcpno");
  1457. //마감구분 김홍점 수정 20091202 식사리스트조회한거에서 마감정보를 보면 안되고 환자의현재식사가 치료식마감인지를 판단해야함.
  1458. DietData = fDataConcatenate(i, iPatRow, model.getValue(xPatMealListPath+"["+i+"]/endflag"), xWardMealListPath, sTFDtlCd, sCalrCnts, sCnt, patStatus);
  1459. dData = DietData.split("_");
  1460. //BMT음료/곡류간식_20090413(ByJA)
  1461. if(bmtudtcnt==-1){
  1462. patStatus = "X";
  1463. }
  1464. if (dData[0] == "ERR"){
  1465. if(dData[1] == "msg1"){
  1466. messageBox("["+ArrDiet[i]+"] comment를 입력할 수", "I004");
  1467. return;
  1468. } else if(dData[1] == "msg2"){
  1469. messageBox("["+ArrDiet[i]+"] comment가 입력된 식사는 수정할 수", "I004");
  1470. return;
  1471. }
  1472. sMealFlagMsg += ArrDiet[i] + " ";
  1473. } else {
  1474. sSavePossYN ="Y";
  1475. sSaveData += DietData + sSaveComData; //환자식이처방정보
  1476. //보호자 식사 입력
  1477. if(patStatus == "I" && ProcerArrDiet[i]) {
  1478. if (sProcerMealPrcpYN == "Y" && procerPrcpno == "") {
  1479. ProcerDietData = fProcerDataConcatenate(i, iPatRow, xWardMealListPath, "I");
  1480. ProcerData = ProcerDietData.split("_");
  1481. if (ProcerData[0] == "ProErr") {
  1482. messageBox("[" + ArrDiet[i]+ "] " + ProcerData[1] + "를 입력할 수 없습니다.", "I");
  1483. return;
  1484. }
  1485. sProcerSaveData += ProcerDietData + sSaveComData;
  1486. }
  1487. }
  1488. }
  1489. }
  1490. if(sSavePossYN == "Y"){
  1491. if( sMealFlagMsg != ""){
  1492. var sRtn = messageBox(sMealFlagMsg+"은 수정 불가능 합니다. 그외 식사를 저장","S001");
  1493. if(sRtn != 6) return;
  1494. }
  1495. } else {
  1496. messageBox(sMealFlagMsg+"은 수정 불가능 합니다. 영양팀으로 수정의뢰 하십시오.", "I");
  1497. return;
  1498. }
  1499. break;
  1500. default : // 끼니 각각
  1501. var patStatus = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "stat");
  1502. var procerPrcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+ProcerArrDiet[sMealFlag]+ "prcpno"); //기존에 보호자식이 저장되어 있었는지 판단함
  1503. //변경된 정보가 없을 경우 체크
  1504. if(model.getValue(xCondPath+"/procermealprcpyn") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") //보호자식이구분
  1505. && (model.getValue(xCondPath+"/dietprcpcopyflag") != model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag") //식이copy옵션
  1506. || model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") != model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "dietcd")
  1507. || model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd") != model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "tfdtlcd")
  1508. || model.getValue(xCalrListPath+"["+iCalrRow+"]/calrcnts") != model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "calr")
  1509. || model.getValue(xCntListPath+"["+iCntRow+"]/cnt") != model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "cnt")
  1510. || sCmntCDList != model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "clinccmtcnts") //보호자 식사만 수정하는 경우에는 환자식이는 수정되지 않음
  1511. || bmtudtcnt != 0 ) //BMT음료/곡류간식_20090413(ByJA)
  1512. ){
  1513. //BMT음료/곡류간식_20090413(ByJA)
  1514. if(bmtudtcnt==-1){
  1515. patStatus = "X";
  1516. }
  1517. DietData = fDataConcatenate(sMealFlag, iPatRow, endflag, xWardMealListPath, sTFDtlCd, sCalrCnts, sCnt, patStatus);
  1518. dData = DietData.split("_");
  1519. if (dData[0] == "ERR"){
  1520. if(dData[1] == "msg1"){
  1521. messageBox("["+ArrDiet[sMealFlag]+"] comment를 입력할 수","I004");
  1522. return;
  1523. } else if(dData[1] == "msg2"){
  1524. messageBox("["+ArrDiet[sMealFlag]+"] comment가 입력된 식사는 수정할 수","I004");
  1525. return;
  1526. } else if(dData[1] == "msg3"){
  1527. messageBox(ArrDiet[sMealFlag]+"이 마감되었습니다. 영양팀으로 수정의뢰 하십시오.", "I");
  1528. return;
  1529. }
  1530. sMealFlagMsg += ArrDiet[sMealFlag];
  1531. } else {
  1532. sSavePossYN = "Y";
  1533. sSaveData += DietData + sSaveComData;
  1534. }
  1535. if(sSavePossYN == "Y"){
  1536. if( sMealFlagMsg != ""){
  1537. var sRtn = messageBox(sMealFlagMsg+"은 수정가능 시간이 아닙니다. 그외 식사를 저장","S001");
  1538. if(sRtn != 6) return;
  1539. }
  1540. } else {
  1541. messageBox(sMealFlagMsg+"은 수정가능 시간이 아닙니다. 영양팀으로 수정의뢰 하십시오.", "I");
  1542. return;
  1543. }
  1544. //1차-2차마감 시간 사이일때는 기존에 있던 식사의 마감체크도 함(기존 식사가 1차식사고, 새로 입력되는 식사가 2차식사여도 수정불가)
  1545. var sMealMsg = fChkEndTime(sMealFlag, model.getValue(xPatDietInfoPath+"/endflag"), "N", "Y");
  1546. if(sMealMsg != "" && sMealMsg != null){
  1547. // 1차마감식사 & 처방상태 마감 인 경우
  1548. if(sMealMsg == "msg3"){
  1549. messageBox(ArrDiet[sMealFlag]+"이 1차마감되었습니다. 영양팀으로 수정의뢰 하십시오.", "I");
  1550. return;
  1551. }else{
  1552. messageBox(ArrDiet[sMealFlag]+"은 수정가능 시간이 아닙니다. 영양팀으로 수정의뢰 하십시오.", "I");
  1553. return;
  1554. }
  1555. /* 원본_20090821
  1556. messageBox(ArrDiet[sMealFlag]+"은 수정가능 시간이 아닙니다. 영양팀으로 수정의뢰 하십시오.", "I");
  1557. return;
  1558. */
  1559. }
  1560. }
  1561. if(patStatus == "I") {
  1562. //보호자식 체크
  1563. if (sProcerMealPrcpYN == "Y"){
  1564. if(procerPrcpno == "") {
  1565. ProcerDietData = fProcerDataConcatenate(sMealFlag, iPatRow, xWardMealListPath, "I");
  1566. ProcerData = ProcerDietData.split("_");
  1567. if (ProcerData[0] == "ProErr") {
  1568. messageBox("[" + ArrDiet[sMealFlag]+ "] " + ProcerData[1] + "를 입력할 수 없습니다.", "I");
  1569. return;
  1570. }
  1571. sProcerSaveData += ProcerDietData + sSaveComData;
  1572. }
  1573. } else { //보호자식 체크 없음(환자식사 DC후 보호자 식사만 남은 경우 환자식사 저장하면서 보호자식 삭제)
  1574. if (procerPrcpno != "") {
  1575. ProcerDietData = fProcerDataConcatenate(sMealFlag, iPatRow, xWardMealListPath, "C");
  1576. ProcerData = ProcerDietData.split("_");
  1577. if (ProcerData[0] == "ProErr") {
  1578. messageBox("[" + ArrDiet[sMealFlag]+ "] " + ProcerData[1] + "를 수정할 수 없습니다.", "I");
  1579. return;
  1580. }
  1581. sProcerSaveData += ProcerDietData + sSaveComData;
  1582. }
  1583. }
  1584. } else { //patStatus = "U"
  1585. if (sProcerMealPrcpYN == "Y") { //보호자식 체크
  1586. if (procerPrcpno == "") { //기존에 보호자식이 저장되어 있지 않은 경우
  1587. ProcerDietData = fProcerDataConcatenate(sMealFlag, iPatRow, xWardMealListPath, "I");
  1588. ProcerData = ProcerDietData.split("_");
  1589. if (ProcerData[0] == "ProErr") {
  1590. messageBox("[" + ArrDiet[sMealFlag]+ "] " + ProcerData[1] + "를 수정할 수 없습니다.", "I");
  1591. return;
  1592. }
  1593. sProcerSaveData += ProcerDietData + sSaveComData;
  1594. }
  1595. }
  1596. // 보호자식 존재 할 경우 식사 수정시 식사수정되지 않고 보호자식이 D/C되는 현상 보완_20090914(ByJA)
  1597. // 1. 보호자식 삭제의 경우 추가
  1598. // 2. 보호자식 삭제로직 주석 처리
  1599. // 3. 보호자식 존재 시 식사 수정 되도록 수정
  1600. else if(procerdelflag == "Y"){ // 1. 보호자식 삭제의 경우 추가
  1601. ProcerDietData = fProcerDataConcatenate(sMealFlag, iPatRow, xWardMealListPath, "C");
  1602. ProcerData = ProcerDietData.split("_");
  1603. if (ProcerData[0] == "ProErr") {
  1604. messageBox("[" + ArrDiet[sMealFlag]+ "] " + ProcerData[1] + "를 수정할 수 없습니다.", "I");
  1605. return;
  1606. }
  1607. sProcerSaveData += ProcerDietData + sSaveComData;
  1608. } else { //보호자식 체크 없음
  1609. // 2. 보호자식 삭제로직 주석 처리
  1610. /* 원본_20090914
  1611. if (procerPrcpno != "") { //기존에 보호자식이 저장되어 있는 경우
  1612. ProcerDietData = fProcerDataConcatenate(sMealFlag, iPatRow, xWardMealListPath, "C");
  1613. ProcerData = ProcerDietData.split("_");
  1614. if (ProcerData[0] == "ProErr") {
  1615. messageBox("[" + ArrDiet[sMealFlag]+ "] " + ProcerData[1] + "를 수정할 수 없습니다.", "I");
  1616. return;
  1617. }
  1618. sProcerSaveData += ProcerDietData + sSaveComData;
  1619. } else if(bmtudtcnt==-1){ // BMT음료/곡류간식 생성_20090413(ByJA)
  1620. sSaveData += DietData + sSaveComData;
  1621. }
  1622. */
  1623. if(bmtudtcnt==-1){ // BMT음료/곡류간식 생성_20090413(ByJA)
  1624. sSaveData += DietData + sSaveComData;
  1625. } else if (procerPrcpno != "") { // 3. 보호자식 존재 시 식사 수정 되도록 수정
  1626. //1차-2차마감 시간 사이일때는 기존에 있던 식사의 마감체크도 함(기존 식사가 1차식사고, 새로 입력되는 식사가 2차식사여도 수정불가)
  1627. var sMealMsg = fChkEndTime(sMealFlag, model.getValue(xPatDietInfoPath+"/endflag"), "N", "Y");
  1628. if(sMealMsg != "" && sMealMsg != null){
  1629. // 1차마감식사 & 처방상태 마감 인 경우
  1630. if(sMealMsg == "msg3"){
  1631. messageBox(ArrDiet[sMealFlag]+"이 1차마감되었습니다. 영양팀으로 수정의뢰 하십시오.", "I");
  1632. return;
  1633. }else{
  1634. messageBox(ArrDiet[sMealFlag]+"은 수정가능 시간이 아닙니다. 영양팀으로 수정의뢰 하십시오.", "I");
  1635. return;
  1636. }
  1637. }
  1638. DietData = fDataConcatenate(sMealFlag, iPatRow, model.getValue(xPatDietInfoPath+"/endflag"), xWardMealListPath, sTFDtlCd, sCalrCnts, sCnt, patStatus);
  1639. sSaveData += DietData + sSaveComData;
  1640. }
  1641. }
  1642. }
  1643. }
  1644. model.removenode("/root/send");
  1645. model.makeValue("/root/send/mealinfo", sSaveHeader + sSaveData + sProcerSaveData);
  1646. model.makeValue("/root/send/mealdd",model.getValue(xCondPath+"/mealdd"));
  1647. model.makeValue("/root/send/wardcd",model.getValue(xCondPath+"/wardcd"));
  1648. model.makeValue("/root/send/roomcd",model.getValue(xCondPath+"/roomcd"));
  1649. model.makeValue("/root/send/settingrnid",model.getValue(xCondPath+"/settingrnid"));
  1650. model.makeValue("/root/send/procerdelflag",procerdelflag);
  1651. model.makeValue("/root/send/procerprcpstatcd",model.getValue(xWardMealListPath+"["+iPatRow+"]/"+ProcerArrDiet[sMealFlag]+ "prcpstatcd"));
  1652. if(submit("TXMNW05701", false)){
  1653. //오류팝업
  1654. var prcpErrList = model.instances(0).selectNodes( "/root/main/wardmealinfo/prcperrlist" );
  1655. if ( prcpErrList.length > 0 ) {
  1656. if ( !isNull(model.getValue ("/root/main/wardmealinfo/prcperrlist/prcpcd"))){
  1657. var xpt = window.screenleft + 100;
  1658. var ypt = window.screenTop + 50;
  1659. var coord = getRelativeCoordinate ( xpt, ypt );
  1660. var mon = coord[0];
  1661. xpt = coord[1];
  1662. ypt = coord[2];
  1663. open ( "SPMMO00600", mon, xpt, ypt, "prcpdetl", "/root/main/wardmealinfo", "/root/result", "", false );
  1664. model.removeNodeset("/root/main/wardmealinfo/prcperrlist");
  1665. model.refresh();
  1666. }
  1667. } else {
  1668. model.setValue(xCondPath+"/procermealprcpyn",""); // 보호자 식이 처방
  1669. //model.setValue(xCondPath+"/dietprcpcopyflag",""); // 식이Copy옵션
  1670. var sRoomCd = ""; // 병실코드
  1671. //같은 병실 merge
  1672. for(var iRow = 1; iRow<= getNodesetCnt(model,xWardMealListPath); iRow++){
  1673. if(iRow == 1){
  1674. sRoomCd = model.getValue(xWardMealListPath+"["+iRow+"]/roomcd");
  1675. model.setValue(xWardMealListPath+"["+iRow+"]/roomcd", sRoomCd);
  1676. } else {
  1677. if(sRoomCd == model.getValue(xWardMealListPath+"["+iRow+"]/roomcd")){
  1678. model.setValue(xWardMealListPath+"["+iRow+"]/roomcd","");
  1679. }else{
  1680. sRoomCd = model.getValue(xWardMealListPath+"["+iRow+"]/roomcd");
  1681. }
  1682. }
  1683. }
  1684. grd_wardmealinfo.resizeCells();
  1685. grd_wardmealinfo.refresh();
  1686. fClearPatDetailInfo("total", "Y"); // 개별 환자의 상세한 정보를 지움
  1687. }
  1688. }
  1689. }
  1690. }
  1691. }
  1692. /**
  1693. * @group :
  1694. * @ver : 2007.09.03
  1695. * @by : 성미연
  1696. * @---------------------------------------------------
  1697. * @type : function
  1698. * @access : public
  1699. * @desc : 환자 식사 저장시 공통함수
  1700. * @param : pDiet : 끼니구분 (1 : 아침, 2 : 점심, 3 : 저녁)
  1701. * @param : pRow : 환자정보
  1702. * @param : pEndFlag : 마감구분
  1703. * @param : pPath : 경로(병동별 리스트)
  1704. * @param : sTFDtlCd : 경장영양식코드
  1705. * @param : pCalrCnts : 칼로리
  1706. * @param : pCnt : 횟수
  1707. * @param : pstatus : 환자식 상태(I, U)
  1708. * @return :
  1709. * @---------------------------------------------------
  1710. */
  1711. function fDataConcatenate(pDiet, pRow, pEndFlag, pPath, sTFDtlCd, pCalrCnts, pCnt, pstatus){
  1712. var DietData ="X break lunch dinner"
  1713. var ArrDiet = DietData.split(" ");
  1714. var sAprvYN = model.getValue(pPath+"["+pRow+"]/"+ArrDiet[pDiet]+ "aprvyn");
  1715. var iPatRow = grd_wardmealinfo.row-1; //환자 정보
  1716. var rData = "";
  1717. var iSmlRow = grd_dietsmlclsinfo.row; // 식이정보
  1718. var sMealUpdtFlag = 0; // 식이수정구분
  1719. var sCmntCDList = ""; // 식이전달사항 코드
  1720. var sCmntNMList = ""; // 식이전달사항명
  1721. var iTFDtlCdRow = grd_tfdtlcdlist.row; // 경장영양식
  1722. var sMealSavePossMsg = fChkEndTime(pDiet, pEndFlag, "N", "N", pstatus);
  1723. if(sMealSavePossMsg != ""){
  1724. return "ERR_"+sMealSavePossMsg;
  1725. }
  1726. //2008-10-13, SMY 추가 : 보호자식사일 경우는 comment입력하지 않도록 수정함
  1727. // comment
  1728. for(var iRow = grd_cmntlist.fixedrows; iRow <=grd_cmntlist.rows - grd_cmntlist.fixedrows; iRow++){
  1729. if(model.getValue(xCmntListPath+"["+iRow+"]/check")=="true"){
  1730. if(sCmntCDList != "") sCmntCDList += ",";
  1731. sCmntCDList+= model.getValue(xCmntListPath+"["+iRow+"]/cmntcd");
  1732. if(sCmntNMList != "") sCmntNMList += ",";
  1733. sCmntNMList+= model.getValue(xCmntListPath+"["+iRow+"]/cmntnm"); //경장영양식 코드가 있을 경우에는 경장영양식세부코드,전달사항을 더해서 저장함
  1734. }
  1735. }
  1736. if(getNodesetCnt(model,xTFDtlListPath) > 0){
  1737. if(iTFDtlCdRow < 1){
  1738. messageBox("경장영양식 세부코드를","C002");
  1739. return;
  1740. }else{
  1741. sTFDtlCd = model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd");
  1742. sTFDtlNm = model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlnm");
  1743. if(sCmntNMList != "") {
  1744. sCmntNMList = sTFDtlNm + "," + sCmntNMList;
  1745. }else{
  1746. sCmntNMList = sTFDtlNm;
  1747. }
  1748. }
  1749. }
  1750. if(pstatus == "I") {
  1751. rData = pstatus +"▦" //status
  1752. + "" +"▦" //prcpno
  1753. + "" +"▦" //prcphistno
  1754. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") +"▦" // 처방코드
  1755. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/calcscorcd") +"▦" // 수가코드
  1756. + sTFDtlCd +"▦" // 경장영양식코드
  1757. + pCalrCnts +"▦" // 칼로리
  1758. + pCnt +"▦" // 횟수
  1759. + "N" +"▦" // 보호자식이구분
  1760. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/insupynpy1") +"▦" // 급여구분코드
  1761. + sMealUpdtFlag +"▦" // 식이수정구분
  1762. + pDiet +"▦" // 끼니구분
  1763. + sCmntNMList +"▦" // 식이전달사항명
  1764. + sCmntCDList +"▦" // 식이전달사항코드
  1765. + model.getValue(pPath+"["+pRow+"]/"+ArrDiet[pDiet]+ "execprcpno") +"▦" // 실시처방일련번호_20090413(ByJA)
  1766. + model.getValue(pPath+"["+pRow+"]/"+ArrDiet[pDiet]+ "execprcpuniqno") +"▦";// 실시처방일자의일련번호_20090413(ByJA)
  1767. } //else if(pstatus == "U") { // BM음료/곡류간식_20090413(ByJA)
  1768. else{
  1769. rData =
  1770. pstatus +"▦" //status
  1771. + model.getValue(pPath+"["+pRow+"]/"+ArrDiet[pDiet]+ "prcpno") +"▦"
  1772. + model.getValue(pPath+"["+pRow+"]/"+ArrDiet[pDiet]+ "prcphistno") +"▦"
  1773. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") +"▦" // 처방코드
  1774. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/calcscorcd") +"▦" // 수가코드
  1775. + sTFDtlCd +"▦" // 경장영양식코드
  1776. + pCalrCnts +"▦" // 칼로리
  1777. + pCnt +"▦" // 횟수
  1778. + "N" +"▦" // 보호자식이구분
  1779. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/insupynpy1") +"▦" // 급여구분코드
  1780. + sMealUpdtFlag +"▦" // 식이수정구분
  1781. + pDiet +"▦" // 끼니구분
  1782. + sCmntNMList +"▦" // 식이전달사항명
  1783. + sCmntCDList +"▦" // 식이전달사항코드
  1784. + model.getValue(pPath+"["+pRow+"]/"+ArrDiet[pDiet]+ "execprcpno") +"▦" // 실시처방일련번호_20090413(ByJA)
  1785. + model.getValue(pPath+"["+pRow+"]/"+ArrDiet[pDiet]+ "execprcpuniqno") +"▦";// 실시처방일자의일련번호_20090413(ByJA)
  1786. }
  1787. return rData;
  1788. }
  1789. /**
  1790. * @group :
  1791. * @ver : 2007.09.03
  1792. * @by : 성미연
  1793. * @---------------------------------------------------
  1794. * @type : function
  1795. * @access : public
  1796. * @desc : 보호자 식사 저장시 공통함수
  1797. * @param : pDiet : 끼니구분 (1 : 아침, 2 : 점심, 3 : 저녁)
  1798. * @param : pRow : 환자정보
  1799. * @param : pEndFlag : 마감구분
  1800. * @param : pPath : 경로(병동별 리스트)
  1801. * @param : pProcerStatus : 보호자식 상태(I, C)
  1802. * @return :
  1803. * @---------------------------------------------------
  1804. */
  1805. function fProcerDataConcatenate(pDiet, pRow, pPath, pProcerStatus){ //* 보호자식코드(마감 1차) => dietcd : Q4131004 / calcscorcd : Q40002 / insupayflag : 2
  1806. var DietData ="X procerbreak procerlunch procerdinner"
  1807. var ArrDiet = DietData.split(" ");
  1808. var rData = "";
  1809. var sProcerMealPrcpYN = ""; // 보호자 식이 처방 여부
  1810. var sMealUpdtFlag = 0; // 식이수정구분
  1811. var ProcerCalcscorcd = model.getValue("/root/temp/procerdietinfo/procerdietlist/calcscorcd");
  1812. var ProcerCalrCnts = 0;
  1813. var ProcerCnt = 3;
  1814. var ProcerPayflagcd = model.getValue("/root/temp/procerdietinfo/procerdietlist/insupynpy1");
  1815. var ProcerEndflag = model.getValue("/root/temp/procerdietinfo/procerdietlist/endflag");
  1816. if (pProcerStatus == "I") {
  1817. sProcerMealPrcpYN = "Y";
  1818. } else { //삭제인 경우
  1819. sProcerMealPrcpYN = "Y";
  1820. }
  1821. var sMealSavePossMsg = fChkEndTime(pDiet, ProcerEndflag, "Y", "N");
  1822. if(sMealSavePossMsg != ""){
  1823. return "ProErr_"+sMealSavePossMsg;
  1824. }
  1825. if(pProcerStatus == "I") {
  1826. rData = pProcerStatus +"▦" //status
  1827. + "" +"▦" //prcpno
  1828. + "" +"▦" //prcphistno
  1829. + ProcerDietcd +"▦" // 처방코드
  1830. + ProcerCalcscorcd +"▦" // 수가코드
  1831. + "" +"▦" // 경장영양식코드
  1832. + ProcerCalrCnts +"▦" // 칼로리
  1833. + ProcerCnt +"▦" // 횟수
  1834. + sProcerMealPrcpYN +"▦" // 보호자식이구분
  1835. + ProcerPayflagcd +"▦" // 급여구분코드
  1836. + sMealUpdtFlag +"▦" // 식이수정구분
  1837. + pDiet +"▦" // 끼니구분
  1838. + "" +"▦" // 식이전달사항명
  1839. + "" +"▦" // 식이전달사항코드
  1840. + model.getValue(pPath+"["+pRow+"]/"+DietData[pDiet]+ "execprcpno") +"▦" // 실시처방일련번호_20090413(ByJA)
  1841. + model.getValue(pPath+"["+pRow+"]/"+DietData[pDiet]+ "execprcpuniqno") +"▦";// 실시처방일자의일련번호_20090413(ByJA)
  1842. } else if(pProcerStatus == "C") {
  1843. rData =
  1844. pProcerStatus +"▦" //status
  1845. + model.getValue(pPath+"["+pRow+"]/"+ArrDiet[pDiet]+ "prcpno") +"▦"
  1846. + model.getValue(pPath+"["+pRow+"]/"+ArrDiet[pDiet]+ "prcphistno") +"▦"
  1847. + ProcerDietcd +"▦" // 처방코드
  1848. + ProcerCalcscorcd +"▦" // 수가코드
  1849. + "" +"▦" // 경장영양식코드
  1850. + ProcerCalrCnts +"▦" // 칼로리
  1851. + ProcerCnt +"▦" // 횟수
  1852. + sProcerMealPrcpYN +"▦" // 보호자식이구분
  1853. + ProcerPayflagcd +"▦" // 급여구분코드
  1854. + sMealUpdtFlag +"▦" // 식이수정구분
  1855. + pDiet +"▦" // 끼니구분
  1856. + "" +"▦" // 식이전달사항명
  1857. + "" +"▦" // 식이전달사항코드
  1858. + model.getValue(pPath+"["+pRow+"]/"+DietData[pDiet]+ "execprcpno") +"▦" // 실시처방일련번호_20090413(ByJA)
  1859. + model.getValue(pPath+"["+pRow+"]/"+DietData[pDiet]+ "execprcpuniqno") +"▦";// 실시처방일자의일련번호_20090413(ByJA)
  1860. }
  1861. return rData;
  1862. }
  1863. /**
  1864. * @group :
  1865. * @ver : 2007.07.12
  1866. * @by : 성미연
  1867. * @---------------------------------------------------
  1868. * @type : function
  1869. * @access : public
  1870. * @desc : 마감시간 검사
  1871. * @param : pMealFlag : 끼니구분 (1 : 아침, 2 : 점심, 3 : 저녁)
  1872. * @param : pEndFlag : 마감구분
  1873. * @param : pProcerYN : 보호자식사여부
  1874. * @param : pChkYN : 1차-2차마감 시간 사이일 때 기존식사 마감체크여부 (1차-2차마감 시간 사이일때는 기존에 있던 식사의 마감체크도 함)
  1875. pStatus : 최초등록인지 수정인지 I, U
  1876. * @return :
  1877. * @---------------------------------------------------
  1878. */
  1879. function fChkEndTime(pMealFlag, pEndFlag, pProcerYN, pChkYN, pStatus){
  1880. var sEndFromDT_1 = ""; // 1차마감시작시간
  1881. var sEndToDT_1 = ""; // 1차마감종료시간
  1882. var sEndFromDT_2 = ""; // 2차마감시작시간
  1883. var sEndToDT_2 = ""; // 2차마감종료시간
  1884. var sPrestDT = getCurrentDate()+getCurrentTime().substr(0,4); // 현재일시
  1885. var sPrestDD = getCurrentDate();
  1886. var sMealDD = model.getValue(xCondPath+"/mealdd");
  1887. var sMealFlag = model.getValue(xCondPath+"/mealflag");
  1888. var iPatRow = grd_wardmealinfo.row-1; // 환자정보
  1889. var statflag = ""; // I/U상태구분
  1890. var cmnt = ""; // comment
  1891. var prcpno = ""; // 처방번호_20090818(ByJA)
  1892. var prcphistno = ""; // 처방이력번호_20090818(ByJA)
  1893. var prcpdd = model.getValue(xWardMealListPath+"["+iPatRow+"]/prcpdd"); // 처방일자_20090818(ByJA)
  1894. var drugspdunitflag ="";
  1895. var endflag = pEndFlag;
  1896. sEndFromDT_1 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+pMealFlag+"' and endflag = 1]/fromtm");
  1897. sEndToDT_1 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+pMealFlag+"' and endflag = 1]/totm");
  1898. sEndFromDT_2 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+pMealFlag+"' and endflag = 2]/fromtm");
  1899. sEndToDT_2 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+pMealFlag+"' and endflag = 2]/totm");
  1900. //상태
  1901. if (sMealFlag == "1" && pStatus != "I") { //아침
  1902. statflag = model.getValue(xWardMealListPath+"["+iPatRow+"]/breakstat");
  1903. prcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/breakprcpno");
  1904. prcphistno = model.getValue(xWardMealListPath+"["+iPatRow+"]/breakprcphistno");
  1905. drugspdunitflag = sMealFlag;
  1906. } else if (sMealFlag == "2" && pStatus != "I") { //점심
  1907. statflag = model.getValue(xWardMealListPath+"["+iPatRow+"]/lunchstat");
  1908. prcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/lunchprcpno");
  1909. prcphistno = model.getValue(xWardMealListPath+"["+iPatRow+"]/lunchprcphistno");
  1910. drugspdunitflag = sMealFlag;
  1911. } else if (sMealFlag == "3" && pStatus != "I") { //저녁
  1912. statflag = model.getValue(xWardMealListPath+"["+iPatRow+"]/dinnerstat");
  1913. prcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/dinnerprcpno");
  1914. prcphistno = model.getValue(xWardMealListPath+"["+iPatRow+"]/dinnerprcphistno");
  1915. drugspdunitflag = sMealFlag;
  1916. } else if ( isNull(sMealFlag) && pStatus != "I" ) {
  1917. if (pMealFlag == "1") { //아침
  1918. drugspdunitflag = pMealFlag;
  1919. statflag = model.getValue(xWardMealListPath+"["+iPatRow+"]/breakstat");
  1920. prcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/breakprcpno");
  1921. prcphistno = model.getValue(xWardMealListPath+"["+iPatRow+"]/breakprcphistno");
  1922. } else if (pMealFlag == "2") { //점심
  1923. drugspdunitflag = pMealFlag;
  1924. statflag = model.getValue(xWardMealListPath+"["+iPatRow+"]/lunchstat");
  1925. prcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/lunchprcpno");
  1926. prcphistno = model.getValue(xWardMealListPath+"["+iPatRow+"]/lunchprcphistno");
  1927. } else if (pMealFlag == "3") { //저녁
  1928. drugspdunitflag = pMealFlag;
  1929. statflag = model.getValue(xWardMealListPath+"["+iPatRow+"]/dinnerstat");
  1930. prcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/dinnerprcpno");
  1931. prcphistno = model.getValue(xWardMealListPath+"["+iPatRow+"]/dinnerprcphistno");
  1932. }
  1933. }
  1934. if(sPrestDD < sMealDD) { // 미래 처방
  1935. return "";
  1936. }
  1937. if( pProcerYN == "Y" ){
  1938. endflag = pEndFlag;
  1939. } else {
  1940. endflag = model.getValue(xPatDietInfoPath+"[drugspdunitflag='"+ drugspdunitflag +"']/endflag");
  1941. }
  1942. if ( pProcerYN == "N" && !isNull(prcpno) && endflag == "1" ){//1차마감식사&처방상태마감인 경우_20090818(ByJA)
  1943. model.removeNodeset("/root/hidden/dietprcpinfo");
  1944. model.removenode("/root/send");
  1945. model.makeValue ("/root/send/reqdata/prcpdd" , prcpdd);
  1946. model.makeValue ("/root/send/reqdata/prcpno" , prcpno);
  1947. model.makeValue ("/root/send/reqdata/prcphistno", prcphistno);
  1948. submit("TRMNW05712"); // 1차마감 식사의 마감여부 조회
  1949. var prcpstatcd = model.getValue("/root/hidden/dietprcpinfo/prcpstatcd");
  1950. if(prcpstatcd != "000" && !isNull(prcpstatcd)){
  1951. return "msg3";
  1952. }
  1953. } else if (pProcerYN == "N" && !isNull(prcpno)
  1954. && endflag =="2"
  1955. && sPrestDT > sEndToDT_1 && sPrestDT < sEndToDT_2
  1956. && ( model.getValue(xPatDietInfoPath+"[drugspdunitflag='"+ drugspdunitflag +"']/patremarkyn") =="Y"
  1957. || !isNull(model.getValue(xPatDietInfoPath+"[drugspdunitflag='"+ drugspdunitflag +"']/clinccmtcnts")) )
  1958. ) {
  1959. //2차식을 수정할경우 comment , 환자특이사항이 등록되어 있으면 수정 안됨.20100330 김홍점
  1960. if ( !isNull(sMealFlag) && !isNull(model.getValue(xPatDietInfoPath+"[drugspdunitflag='"+ drugspdunitflag +"']/clinccmtcnts")) ){
  1961. return "msg2";
  1962. }else {
  1963. return "1차마감 식사";
  1964. }
  1965. }
  1966. if(sPrestDT < sEndToDT_1 && pChkYN == "N") { //1차마감시간 이전인 경우
  1967. return "";
  1968. } else if(sPrestDT >= sEndToDT_2 && pChkYN == "N"){ //2차마감시간 이후인 경우
  1969. if (pProcerYN == "N") { //환자식이 마감체크
  1970. return "2차마감 식사";
  1971. }else{ //보호자식이만 따로 저장하는 경우 체크
  1972. return "보호자 식사"
  1973. }
  1974. } else if(sPrestDT >= sEndToDT_1 && sPrestDT < sEndToDT_2){ //1차마감시간 이후, 2차마감시간 이전인 경우
  1975. if( endflag == "1"
  1976. || model.getValue(xCondPath+"/toendflag")=="1" ){ //기존식사가 1차마감이거나 수정하고자하는식사가 마감시간 지난 1차식인경우
  1977. if (pProcerYN == "N") { //환자식이 마감체크
  1978. return "1차마감 식사";
  1979. }else{ //보호자식이만 따로 저장하는 경우 체크
  1980. return "보호자 식사"
  1981. }
  1982. } else if(endflag == "2"){ //2차마감
  1983. cmnt = grd_cmntlist.findRow("true",1, 0); //있으면 != -1.... //20100713 환자를 선택한경우 comment 가 선택되어지지 못함.
  1984. if( isNull(model.getValue(xPatDietInfoPath+"[drugspdunitflag='"+ drugspdunitflag +"']/clinccmtcnts")) && cmnt != -1){
  1985. if (pProcerYN == "N") { //환자식이 마감체크
  1986. return "msg1";
  1987. }else{ //보호자식이만 따로 저장하는 경우 체크
  1988. //return "보호자 식사" //Comment여부와 상관없음, 2008-10-10, SMY추가
  1989. }
  1990. }
  1991. if(statflag == "U"){
  1992. //if(cmnt != -1) {
  1993. if ( !isNull(model.getValue(xPatDietInfoPath+"[drugspdunitflag='"+ drugspdunitflag +"']/clinccmtcnts")) ){
  1994. if (pProcerYN == "N") { //환자식이 마감체크
  1995. return "msg2";
  1996. }else{ //보호자식이만 따로 저장하는 경우 체크
  1997. //return "보호자 식사" //Comment여부와 상관없음, 2008-10-10, SMY추가(현재 처방인터페이스에서 코멘트가 있을 경우 막혀있음 => 보호자 식사에 한해서는 코멘트 체크 없어야 함)
  1998. }
  1999. }
  2000. }
  2001. }
  2002. return "";
  2003. }else {
  2004. return "";
  2005. }
  2006. }
  2007. /**
  2008. * @group :
  2009. * @ver : 2007.08.23
  2010. * @by : 성미연
  2011. * @---------------------------------------------------
  2012. * @type : function
  2013. * @access : public
  2014. * @desc : 영양팀 승인요청
  2015. * @param :
  2016. * @return :
  2017. * @---------------------------------------------------
  2018. */
  2019. function fNutrTeam() {
  2020. var sMealFlag = eval(model.getValue(xCondPath+"/mealflag")); // mealflag : 식사구분 (1.아침, 2.점심, 3.저녁)
  2021. NutrTeamsMealFlag = sMealFlag; // 수정요청시 선택끼니_20090728(ByJA)
  2022. var sPrestDT = getCurrentDate()+getCurrentTime().substr(0,4); // 현재일시
  2023. var sEndFromDT_1 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+sMealFlag+"' and endflag = 1]/fromtm");
  2024. var sEndToDT_1 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+sMealFlag+"' and endflag = 1]/totm");
  2025. var sEndFromDT_2 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+sMealFlag+"' and endflag = 2]/fromtm");
  2026. var sEndToDT_2 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+sMealFlag+"' and endflag = 2]/totm");
  2027. var sSaveData = "";
  2028. var sSaveComData = "";
  2029. var rData = "";
  2030. var sMealMsg = ""; //기존식사마감체크
  2031. var saveflag = ""; //입력식사마감체크
  2032. var sAprvYN = ""; //승인여부
  2033. var statflag = ""; //상태
  2034. var sAstTestFlag = ""; // 퇴원식이구분
  2035. var sCmntNMList = ""; // 식이전달사항명
  2036. var sCmntCDList = ""; // 식이전달사항 코드
  2037. var sTFDtlCd = ""; // 경장영양식 세부코드
  2038. var sTFDtlNm = ""; // 경장영양식 세부코드명
  2039. var sPrcpFlag = "3"; // 처방구분 (영양 : 3)
  2040. var sProcerMealPrcpYN = ""; // 보호자 식이 처방 여부
  2041. var prcpno = "";
  2042. var prcphistno = "";
  2043. var sMealUpdtFlag = ""; // 식이수정구분
  2044. var iPatRow = grd_wardmealinfo.row-1; //환자 정보
  2045. var iLrgRow = grd_dietlrgclsinfo.row; // 대분류
  2046. var iMdlRow = grd_dietmdlclsinfo.row; // 중분류
  2047. var iSmlRow = grd_dietsmlclsinfo.row; // 식이정보
  2048. var iTFDtlCdRow = grd_tfdtlcdlist.row; // 경장영양식
  2049. var iCalrRow = grd_calrlist.row; // 칼로리
  2050. var iCntRow = grd_cntlist.row; // 횟수
  2051. var endflag = model.getValue(xDietsmlListPath+"["+iSmlRow+"]/endflag"); //마감구분
  2052. var PatDietData ="X break lunch dinner"
  2053. var PatArrDiet = PatDietData.split(" ");
  2054. sAprvYN = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "aprvyn");
  2055. statflag = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "stat");
  2056. sAstTestFlag = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "asttestflag");
  2057. prcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "prcpno");
  2058. prcphistno = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "prcphistno");
  2059. execprcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "execprcpno");
  2060. execprcpuniqno = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "execprcpuniqno");
  2061. // 보호자 식이처방
  2062. sProcerMealPrcpYN = model.getValue(xCondPath+"/procermealprcpyn");
  2063. if(sProcerMealPrcpYN == "") sProcerMealPrcpYN = "N";
  2064. // comment
  2065. for(var iRow = grd_cmntlist.fixedrows; iRow <=grd_cmntlist.rows - grd_cmntlist.fixedrows; iRow++){
  2066. if(model.getValue(xCmntListPath+"["+iRow+"]/check")=="true"){
  2067. if(sCmntCDList != "") sCmntCDList += ",";
  2068. sCmntCDList+= model.getValue(xCmntListPath+"["+iRow+"]/cmntcd");
  2069. if(sCmntNMList != "") sCmntNMList += ",";
  2070. sCmntNMList+= model.getValue(xCmntListPath+"["+iRow+"]/cmntnm");
  2071. }
  2072. }
  2073. //퇴원식이구분
  2074. if (sAstTestFlag == "") {
  2075. sAstTestFlag = "N";
  2076. }
  2077. //당일 식이에 대해서만 승인요청함
  2078. /*
  2079. if (model.getValue(xCondPath+"/mealdd") < getCurrentDate()){
  2080. messageBox("과거식사는 수정할 수", "I004");
  2081. return;
  2082. }
  2083. */
  2084. //입실체크 이전에 승인요청불가
  2085. if(model.getValue(xCondPath+"/careinrmdd") == '-'){
  2086. messageBox("입실체크 후 승인요청 하십시오.", "I");
  2087. return;
  2088. }
  2089. if(iPatRow < 1){
  2090. messageBox("환자를 먼저","C002");
  2091. return;
  2092. }
  2093. if (model.getValue("/root/main/cond/changeonemeal") != "Y") {
  2094. messageBox("한끼씩 수정의뢰 할 수 있습니다.", "I");
  2095. return;
  2096. }else { // 20090506추가(ByJA)
  2097. if(model.getValue(xCondPath+"/mealflag") == ""){
  2098. messageBox("아침/점심/저녁 끼니를 선택하세요.", "I");
  2099. return;
  2100. }
  2101. }
  2102. //식이를 조회한 후 식이copy옵션만 수정하여 승인요청할 경우
  2103. if( model.getValue(xCondPath+"/procermealprcpyn") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") //보호자식이구분
  2104. && model.getValue(xCondPath+"/dietprcpcopyflag") != model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag") //식이copy옵션
  2105. && iLrgRow > 0
  2106. && iMdlRow > 0
  2107. && model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "dietcd")
  2108. && model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "tfdtlcd")
  2109. && model.getValue(xCalrListPath+"["+iCalrRow+"]/calrcnts") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "calr")
  2110. && model.getValue(xCntListPath+"["+iCntRow+"]/cnt") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "cnt")
  2111. && sCmntCDList == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "clinccmtcnts")) {
  2112. messageBox("저장버튼을 누르세요.","I");
  2113. return;
  2114. }
  2115. if(iLrgRow < 1){
  2116. messageBox("대분류를","C002");
  2117. return;
  2118. }
  2119. if(iMdlRow < 1){
  2120. messageBox("중분류를","C002");
  2121. return;
  2122. }
  2123. if(iSmlRow < 1){
  2124. messageBox("식사를","C002");
  2125. return;
  2126. }
  2127. if(getNodesetCnt(model,xTFDtlListPath) > 0){
  2128. if(iTFDtlCdRow < 1){
  2129. messageBox("경장영양식 세부코드를","C002");
  2130. return;
  2131. }else{
  2132. sTFDtlCd = model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd");
  2133. sTFDtlNm = model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlnm");
  2134. if(sCmntNMList != "") {
  2135. sCmntNMList = sTFDtlNm + "," + sCmntNMList;
  2136. }else{
  2137. sCmntNMList = sTFDtlNm;
  2138. }
  2139. }
  2140. }
  2141. sInptCond = model.getValue(xDietsmlListPath+"["+iSmlRow+"]/inptcond");
  2142. sCntInptYN = model.getValue(xDietsmlListPath+"["+iSmlRow+"]/cntinptyn");
  2143. if(sInptCond != "1" && iCalrRow < 1){
  2144. messageBox("칼로리를","C002");
  2145. return;
  2146. }else{
  2147. sCalrCnts = model.getValue(xCalrListPath+"["+iCalrRow+"]/calrcnts");
  2148. if(sCalrCnts == ""){
  2149. sCalrCnts = 0;
  2150. }
  2151. }
  2152. if(sCntInptYN == "Y" && iCntRow<1){
  2153. messageBox("횟수를","C002");
  2154. return;
  2155. }else{
  2156. sCnt = model.getValue(xCntListPath+"["+iCntRow+"]/cnt");
  2157. if(sCnt == ""){
  2158. sCnt = 3;
  2159. }
  2160. }
  2161. // BMT 변경사항은 승인요청할 수 없음_20090615
  2162. // BMT음료/곡류간식_20090413(ByJA)
  2163. for(var i=1; i<=getNodesetCount(xBMTDietInfoPath); i++){
  2164. if(model.getValue(xBMTDietInfoPath+"["+i+"]/bmtdietcnt") != model.getValue(xBMTDietInfoPath+"["+i+"]/orgbmtdietcnt")){
  2165. messageBox("BMT음료/곡류간식 변경은 수정요청할 수", "I004");
  2166. return;
  2167. }
  2168. }
  2169. //변경된 정보가 없을 경우 체크
  2170. //BMT음료/곡류간식_20090612(ByJA)
  2171. var bmtudtcnt = 0;
  2172. for(var i=1; i<=getNodesetCount(xBMTDietInfoPath); i++){
  2173. if(model.getValue(xBMTDietInfoPath+"["+i+"]/bmtstatus")=="U"){
  2174. bmtudtcnt++;
  2175. }
  2176. }
  2177. if( model.getValue(xCondPath+"/procermealprcpyn") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") //보호자식이구분
  2178. && model.getValue(xCondPath+"/dietprcpcopyflag") == model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag") //식이copy옵션
  2179. && iLrgRow > 0
  2180. && iMdlRow > 0
  2181. && model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "dietcd")
  2182. && model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "tfdtlcd")
  2183. && model.getValue(xCalrListPath+"["+iCalrRow+"]/calrcnts") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "calr")
  2184. && model.getValue(xCntListPath+"["+iCntRow+"]/cnt") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "cnt")
  2185. && sCmntCDList == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "clinccmtcnts")) {
  2186. /* if(bmtudtcnt==0){
  2187. messageBox("변경된 정보가", "I004");
  2188. return;
  2189. }
  2190. bmtudtcnt = -1;
  2191. */
  2192. // 원본_20090612
  2193. messageBox("변경된 정보가", "I004");
  2194. return;
  2195. }
  2196. /************************************************** 보호자식사여부와 상관없이 환자식사만 수정승인 요청하기 위해 주석처리함 : 2008-09-25, SMY
  2197. //환자식사는 변경하지 않고 보호자 식사만 변경할 경우(Y -> N)
  2198. if(model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") == "Y"
  2199. && model.getValue(xCondPath+"/procermealprcpyn") == "" //보호자식이구분
  2200. && model.getValue(xCondPath+"/dietprcpcopyflag") == model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag") //식이copy옵션
  2201. && iLrgRow > 0
  2202. && iMdlRow > 0
  2203. && model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "dietcd")
  2204. && model.getValue(xTFDtlListPath+"["+iTFDtlCdRow+"]/tfdtlcd") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "tfdtlcd")
  2205. && model.getValue(xCalrListPath+"["+iCalrRow+"]/calrcnts") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "calr")
  2206. && model.getValue(xCntListPath+"["+iCntRow+"]/cnt") == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "cnt")
  2207. && sCmntCDList == model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "clinccmtcnts")) {
  2208. messageBox("보호자 식사는 승인요청할 수", "I004");
  2209. return;
  2210. }
  2211. //보호자 식사처방 승인요청 불가
  2212. if(model.getValue(xCondPath+"/procermealprcpyn") == "Y"){
  2213. messageBox("보호자 식사는 승인요청할 수", "I004");
  2214. return;
  2215. }
  2216. ***********************************************************************************************/
  2217. //1차-2차마감 시간 사이일때는 기존에 있던 식사의 마감체크도 함(기존 식사가 1차식사고, 새로 입력되는 식사가 2차식사여도 수정불가)
  2218. sMealMsg = fChkEndTime(sMealFlag, model.getValue(xPatDietInfoPath+"/endflag"), "N", "Y");
  2219. //새로 입력하는 식사 마감시간 체크
  2220. saveflag = fChkEndTime(sMealFlag, endflag, "N", "N");
  2221. sMealMsg="1";
  2222. if(saveflag == "" && sMealMsg == ""){
  2223. var btn = messageBox("수정요청없이 수정이 가능한 시간입니다. 저장버튼을 누르세요.", "I");
  2224. return;
  2225. } else {
  2226. var dietcd = grd_dietsmlclsinfo.valueMatrix(grd_dietsmlclsinfo.row, grd_dietsmlclsinfo.colRef("dietcd"));
  2227. var dietnm;
  2228. if(NutrTeamsMealFlag == "1") {
  2229. dietnm = model.getValue(xWardMealListPath+"["+iPatRow+"]/orgbreakdietnm");
  2230. } else if(NutrTeamsMealFlag == "2") {
  2231. dietnm = model.getValue(xWardMealListPath+"["+iPatRow+"]/orglunchdietnm");
  2232. } else if(NutrTeamsMealFlag == "3") {
  2233. dietnm = model.getValue(xWardMealListPath+"["+iPatRow+"]/orgdinnerdietnm");
  2234. }
  2235. if(flag == "Y") {
  2236. if(dietnm == "" && ( dietcd == "Q9140001" || dietcd == "Q9140002") ) {
  2237. messageBox("수정요청이 불가한 식사입니다.", "E");
  2238. return;
  2239. }
  2240. }
  2241. }
  2242. //comment 변경사항은 승인요청할 수 없음
  2243. if( sCmntCDList != model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "clinccmtcnts")) {
  2244. messageBox("Comment 변경은 수정요청할 수", "I004");
  2245. return;
  2246. }
  2247. //퇴원확정여부 조회
  2248. model.removenode("/root/send");
  2249. model.makeValue("/root/send/wardcd", model.getValue(xCondPath+"/wardcd"));
  2250. model.makeValue("/root/send/pid", model.getValue(xWardMealListPath+"["+iPatRow+"]/pid"));
  2251. model.makeValue("/root/send/orddd", model.getValue(xWardMealListPath+"["+iPatRow+"]/orddd"));
  2252. model.makeValue("/root/send/cretno", model.getValue(xWardMealListPath+"["+iPatRow+"]/cretno"));
  2253. model.makeValue("/root/send/instcd", model.getValue(xWardMealListPath+"["+iPatRow+"]/instcd"));
  2254. if(submit("TRMNW05708")) {
  2255. if(model.getValue("/root/temp/dschcnfminfo/dschpid/dschpid")!= ""){
  2256. messageBox("이미 퇴원통보가 된 환자", "E008");
  2257. return;
  2258. }
  2259. }
  2260. //사유입력여부 확인
  2261. var modreason = model.getValue("/root/main/dietinfo/modreason");
  2262. var modreasondesc = model.getValue("/root/main/dietinfo/modreasondesc");
  2263. if (modreason == "" || modreason == null) {
  2264. messageBox("수정요청 사유없이 요청할 수", "I004");
  2265. return;
  2266. }
  2267. //승인신청 저장
  2268. /* 원본_20090507(ByJA)
  2269. var sSaveHeader = "reqflag▦prcpno▦prcphistno▦mealupdtflag▦dietprcpgenrflag▦dietcd▦updtreqdietcd▦"
  2270. +"instcd▦pid▦orddd▦prcpdd▦cretno▦orddeptcd▦orddrid▦prcpflag▦calcscorcd▦tfdtlcd▦mealcalrcnts▦mealprotcnts▦procerdietflag▦"
  2271. +"payflagcd▦asttestflag▦prcpdelivefact▦clinccmtcnts▦seqno▦deptcd▦deptnm▦userid▦usernm▦dietprcpcopyflag▦dietupdtaprvyn▩";
  2272. */
  2273. //승인신청 저장_20090507(ByJA)
  2274. var sSaveHeader = "reqflag▦prcpno▦prcphistno▦mealupdtflag▦dietprcpgenrflag▦dietcd▦updtreqdietcd▦execprcpno▦execprcpuniqno▦"
  2275. +"instcd▦pid▦orddd▦prcpdd▦cretno▦orddeptcd▦orddrid▦prcpflag▦calcscorcd▦tfdtlcd▦mealcalrcnts▦mealprotcnts▦procerdietflag▦"
  2276. +"payflagcd▦asttestflag▦prcpdelivefact▦clinccmtcnts▦seqno▦deptcd▦deptnm▦userid▦usernm▦dietprcpcopyflag▦dietupdtaprvyn▦modreason▦modreasondesc▩";
  2277. var sSaveComData = "";
  2278. sSaveComData = model.getValue(xWardMealListPath+"["+iPatRow+"]/instcd") +"▦" // 기관코드
  2279. + model.getValue(xWardMealListPath+"["+iPatRow+"]/pid") +"▦" // 환자번호
  2280. + model.getValue(xWardMealListPath+"["+iPatRow+"]/orddd") +"▦" // 입원일자
  2281. + model.getValue(xCondPath+"/mealdd") +"▦" // 처방일자
  2282. + model.getValue(xWardMealListPath+"["+iPatRow+"]/cretno") +"▦" // 생성번호
  2283. + model.getValue(xWardMealListPath+"["+iPatRow+"]/orddeptcd") +"▦" // 진료부서코드
  2284. + model.getValue(xWardMealListPath+"["+iPatRow+"]/orddrid") +"▦" // 진료의ID
  2285. + sPrcpFlag +"▦" // 처방구분
  2286. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/calcscorcd") +"▦" // 수가코드
  2287. + sTFDtlCd +"▦" // 경장영양식코드
  2288. + sCalrCnts +"▦" // 칼로리
  2289. + sCnt +"▦" // 횟수
  2290. + "N" +"▦" // 보호자식이구분
  2291. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/insupynpy1") +"▦" // 급여구분코드
  2292. + sAstTestFlag +"▦" // 퇴원식이구분
  2293. + sCmntNMList +"▦" // 식이전달사항명
  2294. + sCmntCDList +"▦" // 식이전달사항코드
  2295. + model.getValue(xWardMealListPath+"["+iPatRow+"]/seqno") +"▦" // 일련번호
  2296. + getUserInfo("dutplcecd") +"▦" // 부서코드
  2297. + getUserInfo("dutplcenm") +"▦" // 부서명
  2298. + getUserId() +"▦" // 사용자ID
  2299. + getUserName() +"▦" // 사용자명
  2300. + model.getValue(xCondPath+"/dietprcpcopyflag") +"▦" // 식이Copy옵션
  2301. + sAprvYN +"▦" // 식이Copy옵션
  2302. + modreason +"▦" // 수정요청 사유
  2303. + modreasondesc +"▩"; // 수정요청 사유 상세
  2304. if(statflag == "I") {
  2305. rData = statflag +"▦" //reqflag(status)
  2306. + "" +"▦" //prcpno
  2307. + "" +"▦" //prcphistno
  2308. + "2" +"▦" // 식이수정구분
  2309. + sMealFlag +"▦" // 끼니구분(drugspdunitflag/dietmeal)
  2310. + "" +"▦" // 이전식사코드 (prcpcd/dietcd)
  2311. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") +"▦" // 수정요청식사코드
  2312. + execprcpno +"▦" // 실시처방번호
  2313. + execprcpuniqno +"▦" // 실시처방유일번호
  2314. } else if(statflag == "U") {
  2315. rData =
  2316. statflag +"▦" //status
  2317. + prcpno +"▦"
  2318. + prcphistno +"▦"
  2319. + "2" +"▦" // 식이수정구분
  2320. + sMealFlag +"▦" // 끼니구분
  2321. + model.getValue(xPatDietInfoPath+"/dietcd") +"▦" // 이전식사코드 (prcpcd/dietcd)
  2322. + model.getValue(xDietsmlListPath+"["+iSmlRow+"]/dietcd") +"▦" // 수정요청식사코드
  2323. + execprcpno +"▦" // 실시처방번호
  2324. + execprcpuniqno +"▦" // 실시처방유일번호
  2325. }
  2326. sSaveData = rData + sSaveComData;
  2327. model.removenode("/root/send");
  2328. model.makeValue("/root/send/mealinfo", sSaveHeader+sSaveData);
  2329. if(submit("TXMNW05702")) {
  2330. var errmsg = model.getValue("/root/temp/updtaprvinfo/ret/errmsg");
  2331. if(errmsg!= ""){
  2332. messageBox(errmsg, "I");
  2333. return;
  2334. }else{
  2335. messageBox("수정요청이 완료되었습니다.","I");
  2336. model.setValue(xCondPath+"/procermealprcpyn",""); // 보호자 식이 처방
  2337. //model.setValue(xCondPath+"/dietprcpcopyflag",""); // 식이Copy옵션
  2338. fClearPatDetailInfo("total", "N"); // 개별 환자의 상세한 정보를 지움
  2339. fSearch("WM");
  2340. fClickedGridRow("WM");
  2341. return;
  2342. }
  2343. }
  2344. }
  2345. /**
  2346. * @group :
  2347. * @ver : 2008.10.16
  2348. * @by : 성미연
  2349. * @---------------------------------------------------
  2350. * @type : function
  2351. * @access : public
  2352. * @desc : 보호자 식사처방 영양팀 승인요청
  2353. * @param :
  2354. * @return :
  2355. * @---------------------------------------------------
  2356. */
  2357. function fProcerfNutrTeam(statflag) {
  2358. var sMealFlag = eval(model.getValue(xCondPath+"/mealflag")); //mealflag : 식사구분 (1.아침, 2.점심, 3.저녁)
  2359. var sPrestDT = getCurrentDate()+getCurrentTime().substr(0,4); // 현재일시
  2360. var sEndFromDT_1 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+sMealFlag+"' and endflag = 1]/fromtm");
  2361. var sEndToDT_1 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+sMealFlag+"' and endflag = 1]/totm");
  2362. var sEndFromDT_2 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+sMealFlag+"' and endflag = 2]/fromtm");
  2363. var sEndToDT_2 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+sMealFlag+"' and endflag = 2]/totm");
  2364. var sMealMsg = ""; //기존식사마감체크
  2365. var saveflag = ""; //입력식사마감체크
  2366. var sAprvYN = ""; //승인여부
  2367. var sAstTestFlag = ""; // 퇴원식이구분
  2368. var sPrcpFlag = "3"; // 처방구분 (영양 : 3)
  2369. var sProcerMealPrcpYN = ""; // 보호자 식이 처방 여부
  2370. var sMealUpdtFlag = ""; // 식이수정구분
  2371. var sProcerprcpno = "";
  2372. var sProcerprcphistno = "";
  2373. var ProcerCalcscorcd = model.getValue("/root/temp/procerdietinfo/procerdietlist/calcscorcd");
  2374. var ProcerCalrCnts = 0;
  2375. var ProcerCnt = 3;
  2376. var ProcerPayflagcd = model.getValue("/root/temp/procerdietinfo/procerdietlist/insupynpy1");
  2377. var ProcerEndflag = model.getValue("/root/temp/procerdietinfo/procerdietlist/endflag");
  2378. var iPatRow = grd_wardmealinfo.row-1; //환자 정보
  2379. var iSmlRow = grd_dietsmlclsinfo.row; // 식이정보
  2380. var PatDietData ="X break lunch dinner"
  2381. var PatArrDiet = PatDietData.split(" ");
  2382. var ProcerDietData ="X procerbreak procerlunch procerdinner"
  2383. var ProcerArrDiet = ProcerDietData.split(" ");
  2384. var rData = "";
  2385. var sSaveData = "";
  2386. var sSaveComData = "";
  2387. sAprvYN = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "aprvyn");
  2388. sAstTestFlag = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "asttestflag");
  2389. sProcerprcpno = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+ProcerArrDiet[sMealFlag]+ "prcpno")
  2390. sProcerprcphistno = model.getValue(xWardMealListPath+"["+iPatRow+"]/"+ProcerArrDiet[sMealFlag]+ "prcphistno")
  2391. // 보호자 식이처방
  2392. sProcerMealPrcpYN = model.getValue(xCondPath+"/procermealprcpyn");
  2393. if(sProcerMealPrcpYN == "") sProcerMealPrcpYN = "N";
  2394. //퇴원식이구분
  2395. if (sAstTestFlag == "") {
  2396. sAstTestFlag = "N";
  2397. }
  2398. //당일 식이에 대해서만 승인요청함
  2399. /*
  2400. if (model.getValue(xCondPath+"/mealdd") < getCurrentDate()){
  2401. messageBox("과거식사는 수정할 수", "I004");
  2402. return;
  2403. }
  2404. */
  2405. //입실체크 이전에 승인요청불가
  2406. if(model.getValue(xCondPath+"/careinrmdd") == '-'){
  2407. messageBox("입실체크 후 승인요청 하십시오.", "I");
  2408. return;
  2409. }
  2410. //환자식사 DC된 상태에서 보호자 식사 삭제, 환자식사 없는 상태에서 보호자식사만 입력은 불가함
  2411. if(iSmlRow < 1
  2412. && model.getValue(xCondPath+"/dietprcpcopyflag") == model.getValue(xWardMealListPath+"["+iPatRow+"]/dietprcpcopyflag")
  2413. && model.getValue(xWardMealListPath+"["+iPatRow+"]/"+PatArrDiet[sMealFlag]+ "drugpackflag") == ""){
  2414. messageBox("환자식사없이 보호자식사를 승인요청할 수 없습니다.", "I");
  2415. return;
  2416. }
  2417. //1차-2차마감 시간 사이일때는 기존에 있던 식사의 마감체크도 함(기존 식사가 1차식사고, 새로 입력되는 식사가 2차식사여도 수정불가)
  2418. sMealMsg = fChkEndTime(sMealFlag, ProcerEndflag, "Y", "N");
  2419. if(sMealMsg == ""){
  2420. var btn = messageBox("수정요청없이 수정이 가능한 시간입니다.", "I");
  2421. return;
  2422. }
  2423. //퇴원확정여부 조회
  2424. model.removenode("/root/send");
  2425. model.makeValue("/root/send/wardcd", model.getValue(xCondPath+"/wardcd"));
  2426. model.makeValue("/root/send/pid", model.getValue(xWardMealListPath+"["+iPatRow+"]/pid"));
  2427. model.makeValue("/root/send/orddd", model.getValue(xWardMealListPath+"["+iPatRow+"]/orddd"));
  2428. model.makeValue("/root/send/cretno", model.getValue(xWardMealListPath+"["+iPatRow+"]/cretno"));
  2429. model.makeValue("/root/send/instcd", model.getValue(xWardMealListPath+"["+iPatRow+"]/instcd"));
  2430. if(submit("TRMNW05708")) {
  2431. if(model.getValue("/root/temp/dschcnfminfo/dschpid/dschpid")!= ""){
  2432. messageBox("이미 퇴원통보가 된 환자", "E008");
  2433. return;
  2434. }
  2435. }
  2436. //승인신청 저장
  2437. var sSaveHeader = "reqflag▦prcpno▦prcphistno▦mealupdtflag▦dietprcpgenrflag▦dietcd▦updtreqdietcd▦"
  2438. +"instcd▦pid▦orddd▦prcpdd▦cretno▦orddeptcd▦orddrid▦prcpflag▦calcscorcd▦tfdtlcd▦mealcalrcnts▦mealprotcnts▦procerdietflag▦"
  2439. +"payflagcd▦asttestflag▦prcpdelivefact▦clinccmtcnts▦seqno▦deptcd▦deptnm▦userid▦usernm▦dietprcpcopyflag▦dietupdtaprvyn▩";
  2440. var sSaveComData = "";
  2441. sSaveComData = model.getValue(xWardMealListPath+"["+iPatRow+"]/instcd") +"▦" // 기관코드
  2442. + model.getValue(xWardMealListPath+"["+iPatRow+"]/pid") +"▦" // 환자번호
  2443. + model.getValue(xWardMealListPath+"["+iPatRow+"]/orddd") +"▦" // 입원일자
  2444. + model.getValue(xCondPath+"/mealdd") +"▦" // 처방일자
  2445. + model.getValue(xWardMealListPath+"["+iPatRow+"]/cretno") +"▦" // 생성번호
  2446. + model.getValue(xWardMealListPath+"["+iPatRow+"]/orddeptcd") +"▦" // 진료부서코드
  2447. + model.getValue(xWardMealListPath+"["+iPatRow+"]/orddrid") +"▦" // 진료의ID
  2448. + sPrcpFlag +"▦" // 처방구분
  2449. + ProcerCalcscorcd +"▦" // 수가코드
  2450. + "" +"▦" // 경장영양식코드
  2451. + ProcerCalrCnts +"▦" // 칼로리
  2452. + ProcerCnt +"▦" // 횟수
  2453. + "Y" +"▦" // 보호자식이구분
  2454. + ProcerPayflagcd +"▦" // 급여구분코드
  2455. + sAstTestFlag +"▦" // 퇴원식이구분
  2456. + "" +"▦" // 식이전달사항명
  2457. + "" +"▦" // 식이전달사항코드
  2458. + model.getValue(xWardMealListPath+"["+iPatRow+"]/seqno") +"▦" // 일련번호
  2459. + getUserInfo("dutplcecd") +"▦" // 부서코드
  2460. + getUserInfo("dutplcenm") +"▦" // 부서명
  2461. + getUserId() +"▦" // 사용자ID
  2462. + getUserName() +"▦" // 사용자명
  2463. + model.getValue(xCondPath+"/dietprcpcopyflag") +"▦"; // 식이Copy옵션
  2464. + sAprvYN +"▩"; // 식사수정승인여부
  2465. if(statflag == "I") {
  2466. rData = statflag +"▦" //reqflag(status)
  2467. + "" +"▦" //prcpno
  2468. + "" +"▦" //prcphistno
  2469. + "2" +"▦" // 식이수정구분
  2470. + sMealFlag +"▦" // 끼니구분(drugspdunitflag/dietmeal)
  2471. + "" +"▦" // 이전식사코드 (prcpcd/dietcd)
  2472. + ProcerDietcd +"▦" // 수정요청식사코드
  2473. } else if(statflag == "C") {
  2474. rData =
  2475. statflag +"▦" //status
  2476. + sProcerprcpno +"▦"
  2477. + sProcerprcphistno +"▦"
  2478. + "2" +"▦" // 식이수정구분
  2479. + sMealFlag +"▦" // 끼니구분
  2480. + ProcerDietcd +"▦" // 이전식사코드 (prcpcd/dietcd)
  2481. + ProcerDietcd +"▦" // 수정요청식사코드
  2482. }
  2483. sSaveData = rData + sSaveComData;
  2484. model.removenode("/root/send");
  2485. model.makeValue("/root/send/mealinfo", sSaveHeader+sSaveData);
  2486. if(submit("TXMNW05702")) {
  2487. var errmsg = model.getValue("/root/temp/updtaprvinfo/ret/errmsg");
  2488. if(errmsg!= ""){
  2489. messageBox(errmsg, "I");
  2490. return;
  2491. }else{
  2492. messageBox("수정요청이 완료되었습니다.","I");
  2493. model.setValue(xCondPath+"/procermealprcpyn",""); // 보호자 식이 처방
  2494. fClearPatDetailInfo("total", "N"); // 개별 환자의 상세한 정보를 지움
  2495. return;
  2496. }
  2497. }
  2498. }
  2499. /**
  2500. * @group :
  2501. * @ver : 2007.09.21
  2502. * @by : 성미연
  2503. * @---------------------------------------------------
  2504. * @type : function
  2505. * @access : public
  2506. * @desc : copy옵션정보 저장
  2507. * @param :
  2508. * @return :
  2509. * @---------------------------------------------------
  2510. */
  2511. function fSaveDietCopyinfo() {
  2512. var iPatRow = grd_wardmealinfo.row-1; //환자 정보
  2513. model.removenode("/root/send");
  2514. model.makeNode("/root/send/copyinfo"); //copy옵션을 저장할 정보
  2515. model.makeNode("/root/send/refinfo"); //재조회할 정보
  2516. model.makeValue("/root/send/copyinfo/dietprcpcopyflag", model.getValue(xCondPath+"/dietprcpcopyflag"));
  2517. model.makeValue("/root/send/copyinfo/userid", getUserId());
  2518. model.makeValue("/root/send/copyinfo/pid", model.getValue(xWardMealListPath+"["+iPatRow+"]/pid"));
  2519. model.makeValue("/root/send/copyinfo/indd", model.getValue(xWardMealListPath+"["+iPatRow+"]/orddd"));
  2520. model.makeValue("/root/send/copyinfo/cretno", model.getValue(xWardMealListPath+"["+iPatRow+"]/cretno"));
  2521. model.makeValue("/root/send/copyinfo/seqno", model.getValue(xWardMealListPath+"["+iPatRow+"]/seqno"));
  2522. model.makeValue("/root/send/refinfo/mealdd",model.getValue(xCondPath+"/mealdd"));
  2523. model.makeValue("/root/send/refinfo/wardcd",model.getValue(xCondPath+"/wardcd"));
  2524. model.makeValue("/root/send/refinfo/roomcd",model.getValue(xCondPath+"/roomcd"));
  2525. model.makeValue("/root/send/refinfo/settingrnid",model.getValue(xCondPath+"/settingrnid"));
  2526. if(submit("TXMNW05703",false)) {
  2527. model.setValue(xCondPath+"/procermealprcpyn",""); // 보호자 식이 처방
  2528. //model.setValue(xCondPath+"/dietprcpcopyflag",""); // 식이Copy옵션
  2529. var sRoomCd = ""; // 병실코드
  2530. //같은 병실 merge
  2531. for(var iRow = 1; iRow<= getNodesetCnt(model,xWardMealListPath); iRow++){
  2532. if(iRow == 1){
  2533. sRoomCd = model.getValue(xWardMealListPath+"["+iRow+"]/roomcd");
  2534. model.setValue(xWardMealListPath+"["+iRow+"]/roomcd", sRoomCd);
  2535. } else {
  2536. if(sRoomCd == model.getValue(xWardMealListPath+"["+iRow+"]/roomcd")){
  2537. model.setValue(xWardMealListPath+"["+iRow+"]/roomcd","");
  2538. }else{
  2539. sRoomCd = model.getValue(xWardMealListPath+"["+iRow+"]/roomcd");
  2540. }
  2541. }
  2542. }
  2543. grd_wardmealinfo.resizeCells();
  2544. fClearPatDetailInfo("total", "Y"); // 개별 환자의 상세한 정보를 지움
  2545. }
  2546. }
  2547. /**
  2548. * @group :
  2549. * @ver : 2007.09.21
  2550. * @by : 성미연
  2551. * @---------------------------------------------------
  2552. * @type : function
  2553. * @access : public
  2554. * @desc : comment 그리드 클릭시
  2555. * @param :
  2556. * @return :
  2557. * @---------------------------------------------------
  2558. */
  2559. function fClickedCmntGrid() {
  2560. var iCol = grd_cmntlist.col;
  2561. var iRow = grd_cmntlist.row;
  2562. if(iRow < 1) return;
  2563. var pMealFlag = model.getValue("/root/main/cond/mealflag"); //그리드 클릭시 셋팅
  2564. var iPatRow = grd_wardmealinfo.row-1; //환자 정보
  2565. var iSmlRow = grd_dietsmlclsinfo.row; // 식이정보
  2566. var stat = ""; //I/U구분
  2567. // var dietflag = model.getValue("/root/main/dietinfo/dietlrgcdinfo/dietlrgcdlist[" + grd_dietlrgclsinfo.row + "]/dietlrgcd"); // Q1 : 일반식, 이외 : 치료식
  2568. var endflag = model.getValue(xDietsmlListPath+"["+iSmlRow+"]/endflag"); //마감구분
  2569. if (pMealFlag == "1") { //아침
  2570. stat = model.getValue(xWardMealListPath+"["+iPatRow+"]/breakstat");
  2571. } else if (pMealFlag == "2") { //점심
  2572. stat = model.getValue(xWardMealListPath+"["+iPatRow+"]/lunchstat");
  2573. } else if (pMealFlag == "3") { //저녁
  2574. stat = model.getValue(xWardMealListPath+"["+iPatRow+"]/dinnerstat");
  2575. }
  2576. var sEndDT_1 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+pMealFlag+"' and endflag = 1]/totm"); // 1차마감시간
  2577. var sEndDT_2 = getCurrentDate()+model.getValue(xDietEndTMListPath+"[mealflag = '"+pMealFlag+"' and endflag = 2]/totm"); // 2차마감시간
  2578. var sPrestDT = getCurrentDate()+getCurrentTime().substr(0,4); // 현재일시
  2579. var sMealDD = model.getValue("/root/main/cond/mealdd");
  2580. if(sPrestDT > sEndDT_1 && sPrestDT < sEndDT_2 ){ //1차마감시간 이후, 2차마감시간 이전인 경우
  2581. /*
  2582. if (endflag == "1"){ //1차마감 신규발행시 comment는 입력할 수 없음
  2583. if(iCol == 0){
  2584. if(model.getValue(xCmntListPath+"["+iRow+"]/check") == "false"){
  2585. model.setValue(xCmntListPath+"["+iRow+"]/check","true");
  2586. }else{
  2587. model.resetInstanceNode(xCmntListPath+"["+iRow+"]/check");
  2588. }
  2589. grd_cmntlist.rebuild();
  2590. }
  2591. if (stat == "I") {
  2592. messageBox("1차~2차마감 사이에 Comment는 입력할 수 ", "I004");
  2593. } else if (stat == "U"){
  2594. messageBox("1차~2차마감 사이에 Comment는 수정할 수 없습니다. 영양팀으로 수정의뢰 하십시오.", "I");
  2595. }
  2596. return;
  2597. }
  2598. */
  2599. if (endflag == "2"){ //1차마감 신규발행시 comment는 입력할 수 없음
  2600. if(iCol == 0){
  2601. if(model.getValue(xCmntListPath+"["+iRow+"]/check") == "false"){
  2602. model.setValue(xCmntListPath+"["+iRow+"]/check","true");
  2603. }else{
  2604. model.resetInstanceNode(xCmntListPath+"["+iRow+"]/check");
  2605. }
  2606. grd_cmntlist.rebuild();
  2607. }
  2608. if(model.getValue(xCondPath+"/mealdd") == getCurrentDate()){ //오늘 날짜일때만 체크함
  2609. if (stat == "I") {
  2610. messageBox("1차~2차마감 사이에 Comment는 입력할 수 ", "I004");
  2611. } else if (stat == "U"){
  2612. messageBox("1차~2차마감 사이에 Comment는 수정할 수 ", "I004");
  2613. }
  2614. return;
  2615. }
  2616. }
  2617. }
  2618. //row선택시 체크
  2619. if(iCol == 1 && iRow != grd_cmntlist.findRow("02",1,2)){
  2620. if(model.getValue(xCmntListPath+"["+iRow+"]/check") == "false"){
  2621. model.setValue(xCmntListPath+"["+iRow+"]/check","true");
  2622. }else{
  2623. model.setValue(xCmntListPath+"["+iRow+"]/check","false");
  2624. }
  2625. grd_cmntlist.rebuild();
  2626. }
  2627. }
  2628. /**
  2629. * @group :
  2630. * @ver : 2008.08.29
  2631. * @by : 성미연
  2632. * @---------------------------------------------------
  2633. * @type : function
  2634. * @access : public
  2635. * @desc : 보호자 식사처방 저장
  2636. * @param :
  2637. * @return :
  2638. * @---------------------------------------------------
  2639. */
  2640. function fInsProcerPrcp() {
  2641. //=================20101111KNUH김병국====================
  2642. var openyn = model.getValue("/root/temp/codelist/cdid");
  2643. if(openyn == "N") {
  2644. messageBox("현재 이기능은 사용하실수 없습니다.", "E");
  2645. return;
  2646. }
  2647. //======================================================
  2648. if(model.getValue("/root/main/cond/procermealprcpyn") == "Y"){
  2649. messageBox("이미 보호자 식사처방이 존재합니다.", "I");
  2650. return;
  2651. }
  2652. fProcerDietInfo();
  2653. model.setValue("/root/main/cond/procermealprcpyn", "Y");
  2654. fSave();
  2655. model.setValue("/root/main/cond/procermealprcpyn", "");
  2656. }
  2657. /**
  2658. * @group :
  2659. * @ver : 2008.08.29
  2660. * @by : 성미연
  2661. * @---------------------------------------------------
  2662. * @type : function
  2663. * @access : public
  2664. * @desc : 보호자 식사처방 삭제
  2665. * @param :
  2666. * @return :
  2667. * @---------------------------------------------------
  2668. */
  2669. function fDelProcerPrcp() {
  2670. //=================20101111KNUH김병국====================
  2671. var openyn = model.getValue("/root/temp/codelist/cdid");
  2672. if(openyn == "N") {
  2673. messageBox("현재 이기능은 사용하실수 없습니다.", "E");
  2674. return;
  2675. }
  2676. //======================================================
  2677. if(model.getValue("/root/main/cond/procermealprcpyn") == ""){
  2678. messageBox("삭제할 보호자 식사처방이 존재하지 않습니다.", "I");
  2679. return;
  2680. }
  2681. fProcerDietInfo();
  2682. model.setValue("/root/main/cond/procermealprcpyn", "");
  2683. fSave("Y");
  2684. }
  2685. /**
  2686. * @group :
  2687. * @ver : 2008.10.16
  2688. * @by : 성미연
  2689. * @---------------------------------------------------
  2690. * @type : function
  2691. * @access : public
  2692. * @desc : 보호자 식사처방 저장요청
  2693. * @param :
  2694. * @return :
  2695. * @---------------------------------------------------
  2696. */
  2697. function fReqInsProcerPrcp() {
  2698. //=================20101111KNUH김병국====================
  2699. var openyn = model.getValue("/root/temp/codelist/cdid");
  2700. if(openyn == "N") {
  2701. messageBox("현재 이기능은 사용하실수 없습니다.", "E");
  2702. return;
  2703. }
  2704. //======================================================
  2705. if(model.getValue("/root/main/cond/procermealprcpyn") == "Y"){
  2706. messageBox("이미 보호자 식사처방이 존재합니다.", "I");
  2707. return;
  2708. }
  2709. fProcerfNutrTeam("I");
  2710. }
  2711. /**
  2712. * @group :
  2713. * @ver : 2008.10.16
  2714. * @by : 성미연
  2715. * @---------------------------------------------------
  2716. * @type : function
  2717. * @access : public
  2718. * @desc : 보호자 식사처방 삭제요청
  2719. * @param :
  2720. * @return :
  2721. * @---------------------------------------------------
  2722. */
  2723. function fReqDelProcerPrcp() {
  2724. //=================20101111KNUH김병국====================
  2725. var openyn = model.getValue("/root/temp/codelist/cdid");
  2726. if(openyn == "N") {
  2727. messageBox("현재 이기능은 사용하실수 없습니다.", "E");
  2728. return;
  2729. }
  2730. //======================================================
  2731. if(model.getValue("/root/main/cond/procermealprcpyn") == ""){
  2732. messageBox("삭제요청할 보호자 식사처방이 존재하지 않습니다.", "I");
  2733. return;
  2734. }
  2735. fProcerfNutrTeam("C");
  2736. }
  2737. /**
  2738. * @group :
  2739. * @ver : 2009.04.06
  2740. * @by : 김진아
  2741. * @--------------------------------------------------
  2742. * @type : function
  2743. * @access : public
  2744. * @desc : BMT 음료/곡류간식 선택 제한갯수초과 체크
  2745. * @param :
  2746. * @return :
  2747. * @---------------------------------------------------
  2748. */
  2749. function fChkBMTDietCnt(){
  2750. var sum = 0;
  2751. for(var i=1; i<=getNodesetCount(xBMTDietInfoPath); i++){
  2752. var bmtdietcnt = model.getValue(xBMTDietInfoPath+"["+i+"]/bmtdietcnt");
  2753. sum += Number(bmtdietcnt);
  2754. }
  2755. if(sum>bmtdietlimitcnt){
  2756. messageBox("음료/곡류간식의 총 선택가능갯수는 "+bmtdietlimitcnt+"개입니다.","I", "확인 후다시 선택하십시오.");
  2757. model.makeValue(xBMTDietInfoPath+"["+grd_bmtdietlist.row+"]/check" , "false");
  2758. model.makeValue(xBMTDietInfoPath+"["+grd_bmtdietlist.row+"]/bmtdietcnt", 0);
  2759. grd_bmtdietlist.refresh();
  2760. }
  2761. }
  2762. /**
  2763. * @group :
  2764. * @ver : 2009.04.06
  2765. * @by : 김진아
  2766. * @--------------------------------------------------
  2767. * @type : function
  2768. * @access : public
  2769. * @desc : BMT 음료/곡류간식 갯수 기본설정
  2770. * @param :
  2771. * @return :
  2772. * @---------------------------------------------------
  2773. */
  2774. function fSetBMTDietCnt(){
  2775. var bmtdietcnt = Number(model.getValue(xBMTDietInfoPath+"["+grd_bmtdietlist.row+"]/bmtdietcnt"));
  2776. if(grd_bmtdietlist.col == grd_bmtdietlist.colRef("check")){
  2777. var check = model.getValue(xBMTDietInfoPath+"["+grd_bmtdietlist.row+"]/check");
  2778. if(check == "true"){
  2779. if(bmtdietcnt<1){
  2780. model.makeValue(xBMTDietInfoPath+"["+grd_bmtdietlist.row+"]/bmtdietcnt", 1);
  2781. }
  2782. }else{
  2783. model.makeValue(xBMTDietInfoPath+"["+grd_bmtdietlist.row+"]/bmtdietcnt", 0);
  2784. }
  2785. }
  2786. else if(grd_bmtdietlist.col == grd_bmtdietlist.colRef("bmtdietcnt")){
  2787. if(bmtdietcnt>0){
  2788. model.makeValue(xBMTDietInfoPath+"["+grd_bmtdietlist.row+"]/check", "true");
  2789. }else{
  2790. model.makeValue(xBMTDietInfoPath+"["+grd_bmtdietlist.row+"]/check", "false");
  2791. }
  2792. }
  2793. model.makeValue(xBMTDietInfoPath+"["+grd_bmtdietlist.row+"]/bmtstatus","U");
  2794. grd_bmtdietlist.refresh();
  2795. }