SMMNP06010.js 117 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828
  1. /*
  2. DSC 퇴실정리(SMMNP06010.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var xPathInddPationList = "/root/main/inddpatlist/inddpatinfo";
  7. var dccparam = ""; // DCC
  8. var dschdclrdt = "";
  9. /**
  10. * @group :
  11. * @ver : 2007.10.10
  12. * @by : Grace
  13. * @---------------------------------------------------
  14. * @type : function
  15. * @access : public
  16. * @desc : 초기 화면 설정(기초 정보 설정)
  17. * @param :
  18. * @return :
  19. * @---------------------------------------------------
  20. */
  21. function fInit(){
  22. // DCC
  23. if(opener.javascript.getParameter("SMMNP06300_DCC") == "Y"){
  24. dccparam = "DCC";
  25. }else{
  26. dccparam = getScreenMenuParameter();
  27. }
  28. fInotSetNode();//노드 초기화
  29. model.removenode("/root/send");
  30. model.makeValue("/root/send/searchitem", "outrm");
  31. model.makeValue("/root/main/condition/outrmdd", getCurrentDate());
  32. model.makeValue("/root/main/condition/outrmtm", fTimeSetting() );
  33. model.makeValue("/root/main/condition/researchflag", "N");
  34. zbcfGetCodeList( new Array("M0011"), new Array("/root/init/M0011list") );//공통코드 로드
  35. grd_testlist.frozenCols = grd_testlist.colRef("prcpcd");
  36. grd_inglist.frozenCols = grd_inglist.colRef("prcpstatcd");
  37. //fGetPatList();//DSC 퇴실정리 환자리스트를 조회한다
  38. //fPidFind(); //상단정보를 내려서 자동설정하기
  39. // UI 설정변경
  40. if(dccparam == "DCC"){ // DCC일 경우
  41. grp_sea.visible = false; // DSC환자리스트의 조회조건 그룹
  42. line5.visible = false;
  43. line6.visible = true;
  44. caption9.visible = false; // 퇴실구분
  45. rdo_outrmflag.visible = false;
  46. caption12.visible = false; // 예정병실
  47. output5.visible = false;
  48. btn_dccpatlist.visible = true; // DCC환자리스트 조회버튼
  49. grd_patlist.attribute("top") = "110";
  50. model.makeValue("/root/main/condition/outrmtp", "1"); // 퇴실구분 "귀가"로 fix
  51. //20090803_SMY
  52. cap_title.attribute("text") = "DCC 퇴실정리";
  53. btn_end.visible = true; //병동마감버튼
  54. btn_refresh.attribute("left") = "754px";
  55. }else{
  56. grp_sea.visible = true; // DSC환자리스트의 조회조건 그룹
  57. line5.visible = true;
  58. line6.visible = false;
  59. caption9.visible = true; // 퇴실구분
  60. rdo_outrmflag.visible = true;
  61. caption12.visible = true; // 예정병실
  62. output5.visible = true;
  63. btn_dccpatlist.visible = false; // DCC환자리스트 조회버튼
  64. grd_patlist.attribute("top") = "150";
  65. //20090803_SMY
  66. cap_title.attribute("text") = "DSC 퇴실정리";
  67. btn_end.visible = false; //병동마감버튼
  68. btn_refresh.attribute("left") = "821px";
  69. }
  70. fGetPatList();//DSC 퇴실정리 환자리스트를 조회한다 + DCC 환자리스트 조회
  71. }
  72. /**
  73. * @group :
  74. * @ver : 2007.10.09
  75. * @by : Grace
  76. * @---------------------------------------------------
  77. * @type : function
  78. * @access : public
  79. * @desc : DSC 환자 조회 부분
  80. * @param :
  81. * @return :
  82. * @---------------------------------------------------
  83. */
  84. function fGetPatList(){
  85. var sSrchData = "";
  86. grd_patlist.allstyle("all", "background-color") = "white";
  87. //조회시 조건 추가
  88. fQueryCond();
  89. grd_patlist.allstyle("all", "background-color") = "white";
  90. submit("TRMNP06015");
  91. //submit("TXMNP06011");
  92. var iRow = grd_patlist.rows
  93. for(i= 0 ; i < iRow ; i ++ ){
  94. if(model.getValue("/root/main/inddpatlist/inddpatinfo["+i+"]/dschdclrtyn") == "Y"){
  95. //퇴원예고 환자에 대해 셀 색상 지정
  96. grd_patlist.cellstyle("background-color", i, 0, i, 4) = "#ffd3ff"; //분홍색
  97. }
  98. }
  99. fGetParamSetting(); //(20080126) 상단 정보 이용 환자 선택
  100. fChangeFocusColor();
  101. // model.refresh();
  102. fPidFind();
  103. }
  104. /**
  105. * @group :
  106. * @ver : 2007.06.07
  107. * @by : 양천덕
  108. * @---------------------------------------------------
  109. * @type : function
  110. * @access : public
  111. * @desc : 상단 정보 이용 환자 선택
  112. * @param :
  113. * @return :
  114. * @---------------------------------------------------
  115. */
  116. function fGetParamSetting(){
  117. var chkPid = getPatientInfo("pid");
  118. var iTgPatRow = 0;
  119. if(chkPid != ""){
  120. var tRow = grd_patlist.rows;
  121. if(tRow == "1"){
  122. return;
  123. }else{
  124. for( i =0 ; i < tRow ; i++ ){
  125. iTgPatRow = grd_patlist.findRow(chkPid ,1, 3,true,true);
  126. }
  127. }
  128. }
  129. if(iTgPatRow > 0){
  130. grd_patlist.row = iTgPatRow;
  131. grd_patlist.topRow = iTgPatRow;
  132. //fSelectPatList();//환자 선택 검사/약,주사 처방조회
  133. }
  134. }
  135. //--------------------------
  136. // 상단정보를 내려서 자동설정하기
  137. //--------------------------
  138. function fPidFind() {
  139. // alert("내리기");
  140. var pGrd = grd_patlist;
  141. model.makeNode("/root/main/paminfo");
  142. var node = getGlobalVariable("paminfo");
  143. setCSVToNode("/root/main/paminfo", node);
  144. //var sPamInfo = getGlobalVariable("paminfo");
  145. //setCSVToNode("/root/main/paminfo",sPamInfo,"pamlist");
  146. var sPID = model.getValue("/root/main/paminfo/list/pid");
  147. if (sPID != "") {
  148. //false : 대소문자 구분하지 않음
  149. //true : 전체일치여부
  150. var sRow = pGrd.findRow(sPID,1,pGrd.colRef("pid"),false,true);
  151. if(sRow > 0){
  152. //messageBox("상단 등록번호가 " + sPID +" 인 환자로 자동설정합니다.", "E999","");
  153. pGrd.row = sRow;
  154. //선택시 색상변경
  155. fChangeFocusColor();//퇴원예고 환자 Cellstyle 변경 및 포커스 컬러 변경
  156. //자동설정
  157. fSelectPatList();//환자 선택 검사/약,주사 처방조회
  158. }
  159. }
  160. //--------------------------
  161. }
  162. /**
  163. * @group :
  164. * @ver : 2007.11.09
  165. * @by : 김보성
  166. * @---------------------------------------------------
  167. * @type : function
  168. * @access : public
  169. * @desc : 조회시 조건 추가
  170. * @param :
  171. * @return :
  172. * @---------------------------------------------------
  173. */
  174. function fQueryCond(){
  175. model.removenode("/root/send/cond");
  176. var sSrchHeader = "instcd▦angioflag▦dccparam▩";
  177. var sSrchData = getUserInfo("dutplceinstcd")+"▦"
  178. + model.getValue("/root/main/condition/angioflag")+"▦"
  179. + dccparam + "▩";
  180. model.makeValue("/root/send/cond", sSrchHeader + sSrchData);
  181. }
  182. /**
  183. * @group :
  184. * @ver : 2007.06.07
  185. * @by : 양천덕
  186. * @---------------------------------------------------
  187. * @type : function
  188. * @access : public
  189. * @desc : 현재 시간 설정
  190. * @param :
  191. * @return :
  192. * @---------------------------------------------------
  193. */
  194. function fTimeSetting(){
  195. var d, s= "" ,t;
  196. d = new Date();
  197. if( d.getMinutes() > 10 ) {
  198. if(d.getHours() >= 10 ) {
  199. t = d.getHours() + "" + d.getMinutes();
  200. } else {
  201. t = "0" + d.getHours() + "" + d.getMinutes();
  202. }
  203. } else {
  204. if(d.getHours() >= 10 ) {
  205. t = d.getHours() + "0" + d.getMinutes();
  206. } else {
  207. t = "0" + d.getHours() + "0" + d.getMinutes();
  208. }
  209. }
  210. return t;
  211. //model.makeValue("/root/main/condition/outrmtm", t );
  212. }
  213. /**
  214. * @group :
  215. * @ver : 2007.07.07
  216. * @by : Grace
  217. * @---------------------------------------------------
  218. * @type : function
  219. * @access : public
  220. * @desc : 노드 초기화
  221. * @param :
  222. * @return :
  223. * @---------------------------------------------------
  224. */
  225. function fInotSetNode(){
  226. model.removeNodeset("/root/main/inddpatlist/inddpatinfo");
  227. model.removeNodeset("/root/main/incplist/testinfo" );
  228. model.removeNodeset("/root/main/incplist/inginfo" );
  229. }
  230. /**
  231. * @group :
  232. * @ver : 2007.10.10
  233. * @by : Grace
  234. * @---------------------------------------------------
  235. * @type : function
  236. * @access : public
  237. * @desc : 상단 퇴실 조건 초기화
  238. * @param :
  239. * @return :
  240. * @---------------------------------------------------
  241. */
  242. function fInitSettingTop(){
  243. model.makeValue("/root/main/condition/outrmtp", "" );
  244. model.makeValue("/root/main/condition/chnghospnm", "" );
  245. model.makeValue("/root/main/condition/outrmcd", "" );
  246. model.makeValue("/root/main/condition/dethdd", "" );
  247. model.makeValue("/root/main/condition/dethtm", "" );
  248. model.makeValue("/root/main/condition/pid", "" );
  249. model.makeValue("/root/main/condition/healcaretgdyn", "");
  250. model.makeValue("/root/main/condition/proceraprvyn", "" );
  251. model.makeValue("/root/main/condition/outrmtm", fTimeSetting() );
  252. model.refresh();
  253. }
  254. /**
  255. * @group :
  256. * @ver : 2007.07.07
  257. * @by : 양천덕
  258. * @---------------------------------------------------
  259. * @type : function
  260. * @access : public
  261. * @desc : 응급실 처방 조회 key설정
  262. * @param :
  263. * @return :
  264. * @---------------------------------------------------
  265. */
  266. function fSetPatInfo(){
  267. var iRow = grd_patlist.row;
  268. var sSrchData = "";
  269. var sSrchHeader = "pid▦indd▦cretno▦instcd▦dschdclrdt▦dccparam▩";
  270. var sSrchData = model.getValue(xPathInddPationList+"["+iRow+"]/pid" )+"▦"
  271. + model.getValue(xPathInddPationList+"["+iRow+"]/indd" )+"▦"
  272. + model.getValue(xPathInddPationList+"["+iRow+"]/cretno")+"▦"
  273. + model.getValue(xPathInddPationList+"["+iRow+"]/instcd")+"▦"
  274. + model.getValue(xPathInddPationList+"["+iRow+"]/dschdclrdt")+"▦"
  275. + dccparam +"▩"; // DCC 미마감건수조회 추가_20090704
  276. model.removeNodeset("/root/send");
  277. return sSrchHeader + sSrchData;
  278. }
  279. /**
  280. * @group :
  281. * @ver : 2007.07.07
  282. * @by : 양천덕
  283. * @---------------------------------------------------
  284. * @type : function
  285. * @access : public
  286. * @desc : DSC 재원환자 선택 검사/약,주사 처방 조회&
  287. * 투약저장 정보 조회 &
  288. * 혈액처방 조회 (20080904)
  289. DCC 미마감건수조회 추가_20090704
  290. * @param :
  291. * @return :
  292. * @---------------------------------------------------
  293. */
  294. function fSelectInddPatList(pFlag){
  295. // 검사, 약/주사 처방 조회
  296. // & 혈액처방 조회 (20080904)
  297. // DCC 미마감건수조회 추가_20090704
  298. if(pFlag == "S"){
  299. model.makeValue("/root/send/searchpat", fSetPatInfo() );
  300. model.makeValue("/root/main/condition/researchflag", "N");
  301. }
  302. // 투약저장 정보 조회
  303. if(pFlag == "R"){
  304. if(model.getValue("/root/main/condition/researchflag") == "N"){
  305. model.makeValue("/root/send/researchpat",sSrchHeader+sSrchData );
  306. model.makeValue("/root/main/condition/researchflag", "I");
  307. } else {
  308. model.makeValue("/root/send/searchpat", sSrchHeader+sSrchData );
  309. model.makeValue("/root/main/condition/researchflag", "N");
  310. }
  311. }
  312. //grd_inglist.allstyle("all", "background-color") = "white";
  313. grd_inglist.rebuildStyle();
  314. //dsc 환자 검사, 약/주사 처방 정보 조회
  315. //& 혈액처방 정보 조회 (20080904)
  316. //& 마약처방 정보 조회 (20081226)
  317. if(submit("TXMNP06012")){
  318. grd_inglist.rebuild();
  319. var iRow = grd_inglist.rows
  320. for(i= 0 ; i < iRow ; i ++ ){
  321. if(model.getValue("/root/main/incplist/inginfo["+i+"]/prcpkindcdyn") == "Y"){
  322. //퇴원약 약 확인
  323. grd_inglist.cellstyle("background-color", i, 0, i, 19) = "#ccffff"; //하늘색
  324. }
  325. }
  326. model.refresh();
  327. }else{
  328. messageBox('미수행 처방조회를', 'E009');
  329. return;
  330. }
  331. }
  332. /**
  333. * @group :
  334. * @ver : 2007.10.10
  335. * @by : Grace
  336. * @---------------------------------------------------
  337. * @type : function
  338. * @access : public
  339. * @desc : 화면상단정보설정
  340. * @param :
  341. * @return :
  342. * @---------------------------------------------------
  343. */
  344. function fSetParam(){
  345. // 입원환자 화면상단정보 설정
  346. if(grd_patlist.row < 1) return;
  347. //alert(grd_patlist.row);
  348. var param = "I" + "▦"
  349. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/pid" ) + "▦"
  350. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/indd" ) + "▦"
  351. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/cretno" ) + "▦"
  352. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/instcd" ) + "▦"
  353. + "▦" ;
  354. setParameter("condparam", param);
  355. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  356. }
  357. /**
  358. * @group :
  359. * @ver : 2007.06.21
  360. * @by : Grace
  361. * @---------------------------------------------------
  362. * @type : function
  363. * @access : public
  364. * @desc : DSC퇴실처리
  365. * @param :
  366. * @return :
  367. * @---------------------------------------------------
  368. */
  369. function fOutRmTret(){
  370. // 환자 선택 여부 체크
  371. if(model.getValue("/root/main/condition/pid") == "" ) {
  372. messageBox("환자가 선택되지", "E007");
  373. model.setFocus("grd_patlist");
  374. return;
  375. }
  376. // 입원으로 인한 퇴원 배정 병실 체크
  377. if(model.getValue("/root/main/condition/outrmtp") =="2" &&
  378. model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/assgroom") == ""){
  379. //20090123 dhkim
  380. //itc김숙인 변경개발요청내용 반영 -> 메세지 수정
  381. messageBox("병실배정이 되지 않은 경우 입원에 의한 퇴실정리가 불가능합니다.","I");
  382. //messageBox("입원 병실 배정이 되지 않았습니다.","I");
  383. return;
  384. }
  385. // 환자 퇴원예고 상태 체크
  386. if(( model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/dschdclrtyn") == "N" ||
  387. model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/dschdclrtyn") == "" ) &&
  388. model.getValue("/root/main/condition/outrmtp") != "2" ){
  389. //20090123 dhkim
  390. //itc김숙인 변경개발요청내용 반영 -> 메세지 수정
  391. messageBox("퇴원예고가 되지 않은 경우 귀가에 의한 퇴실정리가 불가능합니다.", "E");
  392. //messageBox("퇴원예고 환자가 아닙니다.", "E");
  393. model.setFocus("grd_patlist");
  394. return;
  395. }
  396. // 퇴실시 선택진료 확인
  397. fChkSpecOrdPrt();
  398. // 퇴실일시 입력 체크
  399. if(model.getValue("/root/main/condition/outrmdd") == "" ||
  400. model.getValue("/root/main/condition/outrmtm")== ""){
  401. messageBox("퇴실일시는", "I003");
  402. model.setFocus("ipt_outrddd");
  403. return;
  404. }
  405. // 퇴실일시 입실일시 비교 체크
  406. var eroutdt = model.getValue("/root/main/condition/outrmdd")
  407. + model.getValue("/root/main/condition/outrmtm");
  408. if(output2.value > eroutdt ) {
  409. messageBox("입실/퇴실 일시를 확인하십시요", "I");
  410. model.setFocus("ipt_outrmtm");
  411. }
  412. // 퇴실구분 선택확인
  413. if(model.getValue("/root/main/condition/outrmtp") == ""){
  414. messageBox("퇴실구분을", "I003");
  415. model.setFocus("rdo_outrmflag");
  416. return;
  417. }
  418. //미시행 검사 처방 존재 여부 체크
  419. //(20080102:검사인경우는 입원되는경우가 있으므로 입원시는 병원이관 된다.
  420. // var chktest = "Y";
  421. // for(i=1; i <= getNodesetCount("/root/main/incplist/testinfo");i++ ) {
  422. // if(model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "N" ){
  423. // chktest = "N";
  424. // }
  425. // }
  426. //
  427. // if( chktest == "N" ) {
  428. // if ( model.getValue("/root/main/condition/outrmtp") == "2" ) { // 입원인 경우 확인
  429. // var vbYes = messageBox("미시행 검사 처방이 존재합니다.","Q003");
  430. // if( vbYes != 6 ){
  431. // return;
  432. // }
  433. // }else{
  434. // messageBox("미시행 검사처방이 존재합니다.", "E");
  435. // model.setFocus("grd_testlist");
  436. // return;
  437. // }
  438. // }
  439. //미시행 약,주사 처방 존재 여부 체크
  440. var chking = "";
  441. var outdrug = 0; //---(20080923)
  442. for(i=1; i <= getNodesetCount("/root/main/incplist/inginfo"); i++ ) {
  443. if(model.getValue("/root/main/incplist/inginfo["+i+"]/execyn") == "N" ){//미시행
  444. if(model.getValue("/root/main/incplist/inginfo["+i+"]/prcpkindcdyn") == "Y"){//퇴원처방여부
  445. chking = "OUT";//퇴원약있음
  446. //--------------(20080923)
  447. if(model.getValue("/root/main/incplist/inginfo["+i+"]/drugno") != "") {
  448. outdrug ++;
  449. }
  450. //--------------(20080923)
  451. }else{
  452. chking = "N";//미시행처방있음
  453. }
  454. }else if(model.getValue("/root/main/incplist/inginfo["+i+"]/execyn") == "DC"){//반납의뢰(d/c)
  455. chking = "DC";//반납의뢰
  456. }
  457. }
  458. //20080922 dhkim 퇴원약 자동으로 약국에 전송됨. 퇴실정리시 퇴원약은 blocking처리하지 않음
  459. /*
  460. if(chking == "OUT"){
  461. messageBox("퇴원약확인을 하지 않은 퇴원처방이 존재하여 퇴실처리를 할 수 없습니다.", "E");
  462. model.setFocus("btn_drugsave");
  463. return;
  464. }
  465. */
  466. if(chking == "N"){
  467. messageBox("미시행 약/주사 처방이 존재하여 퇴실처리를 할 수 없습니다.", "E");
  468. model.setFocus("grd_inglist");
  469. return;
  470. }
  471. if(chking == "DC"){
  472. messageBox("반환요청 약/주사 처방이 존재하여 퇴실처리를 할 수 없습니다.", "E");
  473. model.setFocus("grd_inglist");
  474. return;
  475. }
  476. //퇴원후 외래 처방 체크 & 미시행 검사처방 체크
  477. var sOutPrcp = "";
  478. var sDefineCnt = 0;
  479. for(i=1 ; i < grd_testlist.rows ; i++){
  480. if(model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "OUT" ){
  481. if(sOutPrcp == ""){
  482. sOutPrcp = "퇴원 후 외래 처방이 존재합니다.";
  483. }
  484. sOutPrcp += "\n" + model.getValue("/root/main/incplist/testinfo["+i+"]/prcpnm") ;
  485. }else{
  486. if(model.getValue("/root/main/incplist/testinfo["+i+"]/viewstat") == "-"){
  487. sDefineCnt++;
  488. }
  489. }
  490. }
  491. if(sDefineCnt > 0){
  492. if(model.getValue("/root/main/condition/outrmtp") == "2"){//퇴실구분이 입원
  493. messageBox(sDefineCnt+" 건의 상태 미설정 데이터가 존재합니다.\n미설정 데이터는 병동이관 됩니다.", "I");
  494. }else{//퇴실구분 귀가
  495. messageBox("미시행 검사처방이 존재합니다.", "E");
  496. model.setFocus("grd_testlist");
  497. return;
  498. }
  499. }
  500. //퇴원후 외래 처방 확인 메시지
  501. if(sOutPrcp != ""){
  502. messageBox(sOutPrcp, "I");
  503. }
  504. //----------------------(20080923)
  505. // 퇴원약은 투약번호가 생성되지 않아도 일반병동처럼 퇴실은 가능하게 한다.
  506. if (outdrug > 0) {
  507. messageBox("퇴원약이 존재합니다. 투약번호가생성되지 않았지만 퇴실은 가능합니다","E999");
  508. }
  509. //----------------------(20080923)
  510. // DCC 투약미마감건 존재 시 퇴실금지_20090705
  511. if(model.getValue("/root/main/incplist/dccdrugendlist/dccdrugendcnt")>0){
  512. messageBox("미마감내역이 존재합니다.", "E", "병동투약마감을 확인하십시오.");
  513. return;
  514. }
  515. //-----------(20110228) 경북대
  516. // 수술료체크--dsc제외
  517. // * @desc : 체크기능(병동퇴실/응급실퇴실/dsc퇴실)
  518. // 환자정보 조회
  519. //model.removeNodeSet(xPatInfoPath);
  520. //var sPamInfo = getGlobalVariable("paminfo");
  521. //setCSVToNode("/root/main/paminfo",sPamInfo,"pamlist"); //환자정보내리기
  522. // var sschk = model.getValue("/root/main/paminfo/list/opfeechkyn"); //수술료체크여부
  523. // var sspid = model.getValue("/root/main/paminfo/list/pid");
  524. // var ssindd = model.getValue("/root/main/paminfo/list/indd");
  525. // var ssdschdd = model.getValue("/root/main/condition/outrmdd"); //퇴원예정일
  526. // //alert(sschk + "/" +sspid + "/" + ssindd + "/" + ssdschdd);
  527. // if (sschk != "Y") {
  528. // messageBox("다음팝업창에서 수술료여부 항목의 'N' 인 경우에 대한 수술료 입력을 의료진에 요청하십시오.", "E");
  529. //
  530. // setParameter("SPMMO21600_param", sspid + "|" + ssindd + "|" + ssdschdd )
  531. // modal("SPMMO21600");
  532. // clearParameter("SPMMO21600_param");
  533. // return ;
  534. // }
  535. //-----------(20110228) 경북대
  536. //치과이면서 6시간 초과 환자
  537. if((getUserInfo("dutplceinstcd") == "033") && (Number(model.getValue("/root/timeterm/hh"))>6)){
  538. messageBox("재실시간 6시간 초과환자입니다.\n진행불가합니다!", "I");
  539. return;
  540. }
  541. // DCC 6시간 이내 체류 시 경고 창
  542. if((dccparam == "DCC") && (Number(model.getValue("/root/timeterm/hh"))<6)){
  543. var rtnMsg = messageBox("재실시간 6시간 이내 환자입니다.\n퇴실처리하시겠습니까?", "Q");
  544. if("6" == rtnMsg){
  545. vbYes = rtnMsg;
  546. }else{
  547. return;
  548. }
  549. }
  550. else{
  551. var vbYes = messageBox("퇴실처리를 ", "Q004");
  552. }
  553. if(vbYes == 6){
  554. var iRow = grd_patlist.row;
  555. //--------- (20080123): DSC 퇴실시 DUMP을 위한 반영
  556. var sHeader = "inpt_pid▦inpt_indd▦inpt_cretno▦inpt_orddeptcd▦brateflag▦outrmtp▦pid▦indd▦cretno▦ordtype▦ordrslttype▦medispclid▩";
  557. var sTerm = "";
  558. var ordrslttype = ""; //20081024 원무 인터페이스 parameter추가요청
  559. if(model.getValue("/root/main/condition/outrmtp") == '1'){
  560. ordrslttype = 'H';//귀가
  561. }else if(model.getValue("/root/main/condition/outrmtp") == '2'){
  562. ordrslttype = 'I';//입원
  563. }
  564. if(Number(model.getValue("/root/timeterm/hh")) >= 6) {
  565. sTerm = "I";
  566. } else {
  567. sTerm = "O";
  568. }
  569. /* 20081027 원무 parameter추가 요청으로 주석처리함. old버전
  570. var sData = model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/pid" ) +"▦"
  571. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/indd" ) +"▦"
  572. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/cretno" ) +"▦"
  573. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/orddeptcd" )+"▦"
  574. + sTerm +"▦"
  575. + model.getValue("/root/main/condition/outrmtp") +"▩";
  576. */
  577. //20081027 원무 인터페이스 호출시 parameter추가 요청으로 변경
  578. var sData = model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/pid" ) +"▦"
  579. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/indd" ) +"▦"
  580. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/cretno" ) +"▦"
  581. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/orddeptcd" ) +"▦"
  582. + sTerm +"▦"
  583. + model.getValue("/root/main/condition/outrmtp") +"▦"
  584. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/pid" ) +"▦"//20081024 원무 인터페이스 parameter추가요청
  585. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/indd" ) +"▦"//20081024 원무 인터페이스 parameter추가요청
  586. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/cretno" ) +"▦"//20081024 원무 인터페이스 parameter추가요청
  587. + "D" +"▦"//20081024 원무 인터페이스 parameter추가요청
  588. + ordrslttype +"▦"//20081024 원무 인터페이스 parameter추가요청
  589. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/orddrid") +"▩";//20091012 원무 인터페이스 parameter추가요청 K. J. M
  590. //퇴원결정일시 셋팅(입원 : 입원결정일시 , 기타 : 퇴원예고일시)
  591. //
  592. //if(rdo_outrmflag.value == "2"){
  593. // dschdclrdt = model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/inrsrvacptdt");
  594. //}else{
  595. dschdclrdt = model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/dschdclrdt");
  596. //}
  597. var sSrchData = "";
  598. var sSrchHeader = "pid▦indd▦cretno▦seqno▦visitno▦outrmdd▦outrmtm▦outrmcd▦chnghospnm▦dethdd▦dethtm▦healcaretgdyn▦proceraprvyn▦eroutdt▦instcd▦dschdclrdt▦outrmtp▦brateflag▦dccparam▩";
  599. var sSrchData = model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/pid" ) +"▦"//환자등록번호
  600. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/indd" ) +"▦"//입원일자
  601. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/cretno" ) +"▦"//입원생성번호
  602. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/seqno" ) +"▦"//이력일련번호
  603. + "▦"//
  604. + model.getValue("/root/main/condition/outrmdd" ) +"▦"//dsc퇴실일자
  605. + model.getValue("/root/main/condition/outrmtm" ) +"▦"//dsc퇴실시간
  606. + model.getValue("/root/main/condition/outrmcd" ) +"▦"//
  607. + "▦"
  608. + "▦"
  609. + "▦"
  610. + "▦"
  611. + "▦"
  612. + eroutdt +"▦"//dsc퇴실일자 + 시간
  613. + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/instcd" )+"▦"//기관코드
  614. + dschdclrdt +"▦"//
  615. + model.getValue("/root/main/condition/outrmtp") +"▦"//퇴실구분
  616. + sTerm +"▦"//입원외래요율구분
  617. + dccparam +"▩"; +"▩";
  618. //----------(20080102)
  619. // + model.getValue("/root/main/inddpatlist/inddpatinfo" +"["+iRow+"]/dschdclrdt")+"▦"
  620. // + model.getValue("/root/main/condition/outrmtp" )
  621. // + "▩";
  622. model.removenode("/root/send");
  623. //[20081211 dhkim] 퇴원약 원내 처리시 약제 인터페이스 호출을 위한 파라미터세팅
  624. model.makeValue("/root/send/pharmacyif", grd_inglist.getUpdateDataAll('i'));
  625. model.makeValue("/root/send/outrmtret", sSrchHeader + sSrchData);
  626. var sSrchData = "";
  627. var sSrchHeader = "section▩";
  628. var sSrchData = "▩";
  629. model.makeValue("/root/send/searchinfo", sSrchHeader + sSrchData);
  630. fInotSetNode();//노드초기화
  631. //--------- (20080123): DSC 퇴실시 DUMP을 위한 반영
  632. model.removenode("/root/send/outrmtret2");
  633. model.makeValue("/root/send/outrmtret2", sHeader + sData);
  634. //-------------------------------------------------
  635. //--------- (20121208): DSC 퇴실시 일일 수술실 수납안내문 출력을 위한 반영_손성훈.
  636. var sPrtData = "";
  637. var sPrtHeader = "pid▦orddeptcd▩";
  638. var sPrtData = model.getValue("/root/main/paminfo/list/pid" ) +"▦"//환자등록번호
  639. + model.getValue("/root/main/paminfo/list/orddeptcd") +"▩" // 환자 진료 과.
  640. model.removenode("/root/send/nxtordchk");
  641. model.makeValue("/root/send/nxtordchk", sPrtHeader + sPrtData );
  642. //------------------------------------------------
  643. //조회시 조건 추가
  644. fQueryCond();
  645. model.removeNode("/root/main/condition/judpopup");
  646. if(submit("TXMNP06011")==true){
  647. grd_patlist.rebuildStyle();
  648. //-- (20121208): DSC 퇴실시 일일 수술실 수납안내문 출력을 위한 반영_손성훈.
  649. var sNxtOrddd = model.getValue("/root/main/condition/prtinfo/nxtorddd");
  650. var sNxtOrdtm = model.getValue("/root/main/condition/prtinfo/nxtordtm");
  651. model.makeValue("/root/main/paminfo/list/nxtorddd", sNxtOrddd);
  652. model.makeValue("/root/main/paminfo/list/nxtordtm", sNxtOrdtm);
  653. if (Number(model.getValue("/root/timeterm/hh")) >= 6) {
  654. exeReportPreview("RPMNP06011", "XMLSTR", "/root/main/paminfo/list", "", "true", "false", "", "", "", "true"); // 입원 출력물
  655. }else{
  656. if( getUserInfo("dutplceinstcd") == "033" ) {
  657. exeReportPreview("RPMNP06012", "XMLSTR", "/root/main/paminfo/list", "", "true", "false", "", "", "", "true"); // 치과 외래 출력물
  658. }
  659. else {
  660. exeReportPreview("RPMNP06010", "XMLSTR", "/root/main/paminfo/list", "", "true", "false", "", "", "", "true"); // 외래 출력물
  661. }
  662. }
  663. //exeReportPreview("RPMNP06010", "XMLSTR", "/root/main/paminfo/list", "", "true", "false", "", "", "", "true");
  664. //exeReportPreview(레포트명, 연계방법, 매개변수필드 XPath, SubmitID, 출력여부, 인쇄 창 보임 여부, 저장타입, 파일명, 파일 저장 창 보임여부, 미리보기창닫기여부, 모니터 번호, 데이터 소스, 데이터 XPath , 메인리포트 반복XPath, 서브리포트1 반복Xpath)
  665. //------------------------------------------------
  666. //
  667. var judpopup = "N";
  668. judpopup = model.getValue("/root/main/condition/judpopup/judpopup");
  669. if (judpopup == "Y") {
  670. messageBox("심사 대상자입니다. 심사완료 후 퇴원 안내하시기 바랍니다.", "I999");
  671. }
  672. // btn_prn.dispatch("DOMActivate");
  673. }
  674. fInitSettingTop();
  675. var tRow = grd_patlist.rows;
  676. for(i= 0 ; i < tRow ; i ++ ){
  677. if(model.getValue("/root/main/inddpatlist/inddpatinfo["+i+"]/dschdclrtyn") == "Y"){
  678. //퇴원예고 환자에 대해 셀 색상 지정
  679. grd_patlist.cellstyle("background-color", i, 0, i, 4) = "#ffd3ff";
  680. }
  681. }
  682. model.refresh();
  683. }else{
  684. return;
  685. }
  686. }
  687. /**
  688. * @group :
  689. * @ver : 2007.06.21
  690. * @by : 양천덕
  691. * @---------------------------------------------------
  692. * @type : function
  693. * @access : public
  694. * @desc : 그리드 선택 컨트롤
  695. * @param :
  696. * @return :
  697. * @---------------------------------------------------
  698. */
  699. function fSelectGridRowCtrl(pPath, pFlag){
  700. //선택row 초기화
  701. var iRow = "";
  702. var iRow = "";
  703. var sRow = "";
  704. var tRow = "";
  705. var chkNode1 = "";
  706. var chkNode2 = "";
  707. //검사 그리드 선택 시 발생
  708. if(pFlag == "T"){
  709. iRow = grd_testlist.row;
  710. sRow = grd_testlist.selectedRows;
  711. eRow = grd_testlist.selectedRow(0);
  712. tRow = grd_testlist.rows;
  713. chkNode1 = "/selectyn";
  714. chkNode2 = "/testtp";
  715. //약,주사 그리드 선택 시 발생
  716. }else if(pFlag == "I"){
  717. iRow = grd_inglist.row;
  718. sRow = grd_inglist.selectedRows;
  719. eRow = grd_inglist.selectedRow(0);
  720. tRow = grd_inglist.rows;
  721. chkNode1 = "/selectyn";
  722. chkNode2 = "/prcpkindcdyn";
  723. }
  724. //혈액 그리드 선택 시 발생
  725. else if(pFlag == "TNS"){
  726. iRow = grd_tnsprcplist.row;//선택한 row
  727. sRow = grd_tnsprcplist.selectedRows;//선택된 행들의 갯수
  728. eRow = grd_tnsprcplist.selectedRow(0);//선택된 0번째행의 인덱스
  729. tRow = grd_tnsprcplist.rows;//그리드의 총갯수
  730. chkNode1 = "/selectyn";
  731. chkNode2 = "/prcpkindcdyn";
  732. }
  733. if(eRow < "0"){
  734. return;
  735. } else {
  736. if(pFlag == "T"){
  737. if(tRow != "1"){
  738. // ctrl키 누른 상태에서 그리드 클릭시 선택된 모든 행 상태값 변경
  739. if(event.ctrlKey == 1){
  740. if(model.getValue(pPath+"["+iRow+"]"+chkNode1) != "Y" ){
  741. //&& model.getValue(pPath+"["+iRow+"]"+chkNode2)== "Y" ) {
  742. model.makeValue(pPath+"["+iRow+"]"+chkNode1, "Y");
  743. } else {
  744. model.makeValue(pPath+"["+iRow+"]"+chkNode1, "");
  745. }
  746. }
  747. // shift키 누른 상태에서 선택행과 마지막 선택행 사이의 그리드 상태값 변경
  748. else if(event.shiftKey == 1){
  749. for(i =1 ; i < tRow ; i++){
  750. model.makeValue(pPath+"["+i+"]"+chkNode1, "");
  751. }
  752. if(iRow == eRow){
  753. for(i = iRow ; i < iRow+sRow ; i++) {
  754. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ){
  755. // && model.getValue(pPath+"["+iRow+"]"+chkNode2)== "Y" ) {
  756. model.makeValue(pPath+"["+i+"]"+chkNode1, "Y");
  757. }
  758. }
  759. }else{
  760. for(i = eRow; i <= iRow ; i ++ ){
  761. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ){
  762. // && model.getValue(pPath+"["+iRow+"]"+chkNode2)== "Y" ) {
  763. model.makeValue(pPath+"["+i+"]"+chkNode1, "Y");
  764. }
  765. }
  766. }
  767. }
  768. // 마우스 드래그를 하여 그리드의 로우 선택시 상태값 변경
  769. else {
  770. for(i =1 ; i < tRow ; i++){
  771. model.makeValue(pPath+"["+i+"]"+chkNode1, "");
  772. }
  773. if(sRow == "1"){
  774. if(model.getValue(pPath+"["+eRow+"]"+chkNode1) != "Y" ){
  775. //&& model.getValue(pPath+"["+iRow+"]"+chkNode2)== "Y" ) {
  776. if(tRow ==1){
  777. return;
  778. }else{
  779. model.makeValue(pPath+"["+eRow+"]"+chkNode1, "Y");
  780. }
  781. } else {
  782. model.makeValue(pPath+"["+eRow+"]"+chkNode1, "");
  783. }
  784. } else {
  785. if(iRow == eRow){
  786. for(i = iRow ; i < iRow+sRow ; i++) {
  787. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ){
  788. //&& model.getValue(pPath+"["+iRow+"]"+chkNode2)== "Y" ) {
  789. model.makeValue(pPath+"["+i+"]"+chkNode1, "Y");
  790. }
  791. }
  792. }else{
  793. for(i = eRow; i <= iRow ; i ++ ){
  794. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ){
  795. //&& model.getValue(pPath+"["+iRow+"]"+chkNode2)== "Y" ) {
  796. model.makeValue(pPath+"["+i+"]"+chkNode1, "Y");
  797. }
  798. }
  799. }
  800. }
  801. }
  802. }
  803. }else if(pFlag == "I" || pFlag == "TNS"){
  804. if(tRow != "1"){
  805. // ctrl키 누른 상태에서 그리드 클릭시 선택된 모든 행 상태값 변경
  806. if(event.ctrlKey == 1){
  807. if(model.getValue(pPath+"["+iRow+"]"+chkNode1) != "Y" ) {
  808. model.makeValue(pPath+"["+iRow+"]"+chkNode1, "Y");
  809. } else {
  810. model.makeValue(pPath+"["+iRow+"]"+chkNode1, "");
  811. }
  812. }
  813. // shift키 누른 상태에서 선택행과 마지막 선택행 사이의 그리드 상태값 변경
  814. else if(event.shiftKey == 1){
  815. //alert('shift');
  816. for(i =1 ; i < tRow ; i++){
  817. model.makeValue(pPath+"["+i+"]"+chkNode1, "");
  818. }
  819. if(iRow == eRow){
  820. for(i = iRow ; i < iRow+sRow ; i++) {
  821. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ) {
  822. model.makeValue(pPath+"["+i+"]"+chkNode1, "Y");
  823. }
  824. }
  825. }else{
  826. for(i = eRow; i <= iRow ; i ++ ){
  827. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ) {
  828. model.makeValue(pPath+"["+i+"]"+chkNode1, "Y");
  829. }
  830. }
  831. }
  832. }
  833. // 마우스 드래그를 하여 그리드의 로우 선택시 상태값 변경
  834. else {
  835. //alert('drag');
  836. for(i =1 ; i < tRow ; i++){
  837. model.makeValue(pPath+"["+i+"]"+chkNode1, "");
  838. }
  839. if(sRow == "1"){
  840. if(model.getValue(pPath+"["+eRow+"]"+chkNode1) != "Y" ) {
  841. if(tRow ==1){
  842. return;
  843. }else{
  844. model.makeValue(pPath+"["+eRow+"]"+chkNode1, "Y");
  845. }
  846. } else {
  847. model.makeValue(pPath+"["+eRow+"]"+chkNode1, "");
  848. }
  849. } else {
  850. if(iRow == eRow){
  851. for(i = iRow ; i < iRow+sRow ; i++) {
  852. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ) {
  853. model.makeValue(pPath+"["+i+"]"+chkNode1, "Y");
  854. }
  855. }
  856. }else{
  857. for(i = eRow; i <= iRow ; i ++ ){
  858. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ) {
  859. model.makeValue(pPath+"["+i+"]"+chkNode1, "Y");
  860. }
  861. }
  862. }
  863. }
  864. }
  865. }
  866. }
  867. }
  868. }
  869. /**
  870. * @group :
  871. * @ver : 2007.06.21
  872. * @by : 양천덕
  873. * @---------------------------------------------------
  874. * @type : function
  875. * @access : public
  876. * @desc : 투약저장 이밴트 처리
  877. * @param :
  878. * @return :
  879. * @---------------------------------------------------
  880. */
  881. function fSaveDrugTret(){
  882. //미정의(사용하지 않음)
  883. if(model.getValue("/root/main/condition/researchflag") == "I"){
  884. fSelectInddPatList("S");
  885. }
  886. var datacheck2 = "N";
  887. var datacheck3 = "N";
  888. //퇴원약이면서 약국으로 전송하여 집계하지 않는 처방 검증
  889. for(i= 1 ; i < grd_inglist.rows; i++ ) {
  890. //퇴원약이면서 미acting건
  891. if(model.getvalue("/root/main/incplist/inginfo["+i+"]/prcpkindcdyn") == "Y" &&
  892. model.getvalue("/root/main/incplist/inginfo["+i+"]/execyn") == "N" ){
  893. datacheck2 = "Y";
  894. }
  895. if(model.getvalue("/root/main/incplist/inginfo["+i+"]/prcpstatcd") == "000"){
  896. datacheck2 = "C";
  897. }
  898. if(model.getvalue("/root/main/incplist/inginfo["+i+"]/prcpkindcdyn") == "Y"){
  899. datacheck3 = "Y";
  900. }
  901. }
  902. if(datacheck2 == "N" || grd_inglist.rows == "1" ){
  903. messageBox("미시행 퇴실처방이 존재하지", "E007");
  904. model.setFocus("btn_outsave");
  905. return;
  906. }else if(datacheck2 == "C"){
  907. messageBox("간호확인을 하지 않은 퇴원약이 존재합니다.", "E");
  908. return;
  909. }else{
  910. model.removenodeset("/root/send");
  911. model.makeValue("/root/send/searchpat", fSetPatInfo() );
  912. model.makeValue("/root/send/drugsaveinfo", grd_inglist.getUpdateDataAll("i"));
  913. model.removeNodeset("/root/main/incplist");
  914. if(submit("TXMNP06015")== true){
  915. //messageBox("약국으로 퇴원약 전송 완료했습니다.","I");
  916. model.refresh();
  917. }
  918. }
  919. }
  920. /**
  921. * @group :
  922. * @ver : 2007.07.07
  923. * @by : 양천덕
  924. * @---------------------------------------------------
  925. * @type : function
  926. * @access : public
  927. * @desc : 왼쪽 마우스 클릭 메뉴
  928. * @param :
  929. * @return :
  930. * @---------------------------------------------------
  931. */
  932. function fPopupMenuInfo(pFlag){
  933. //------------(20080102이전)
  934. //마우스 오른쪽 버튼 클릭시 이밴트 발생
  935. /*
  936. if(event.button == 3){
  937. //검사탭에서 마우스 클릭시 발생
  938. if(pFlag == "T"){
  939. //선택없이 마우스 오른쪽 클릭으로 선택 이밴트
  940. if(grd_testlist.row == "-1"){
  941. grd_testlist.row = grd_testlist.mouseRow;
  942. }
  943. //선택행 선택 플래그 변경 후 DC팝업창 활성화
  944. if(grd_testlist.isCell(event.target) && grd_testlist.mouseRow >= grd_testlist.fixedrows){
  945. model.makeValue("/root/main/incplist/testinfo["+grd_testlist.row+"]/selectyn", "Y");
  946. window.setPopupMenu( true, "/root/codedata/popupmenu/grid01/item", "name", "func", true);
  947. }else{
  948. window.setPopupMenu(false);
  949. }
  950. //약,주사탭에서 마우스 클릭시 발생
  951. }else{
  952. //선택없이 마우스 오른쪽 클릭으로 선택 이밴트
  953. if(grd_inglist.row == "-1"){
  954. grd_inglist.row = grd_inglist.mouseRow;
  955. }
  956. //선택행 선택 플래그 변경 후 DC팝업창 활성화
  957. if(grd_inglist.isCell(event.target) && grd_inglist.mouseRow >= grd_inglist.fixedrows){
  958. model.makeValue("/root/main/incplist/inginfo["+grd_inglist.row+"]/selectyn", "Y");
  959. window.setPopupMenu( true, "/root/codedata/popupmenu/grid02/item", "name", "func", true);
  960. }else{
  961. window.setPopupMenu(false);
  962. }
  963. }
  964. }
  965. -------------------------*/
  966. //-------------------(20080102이후)
  967. //마우스 오른쪽 버튼 클릭시 이밴트 발생
  968. if(event.button == 3){
  969. //검사탭에서 마우스 클릭시 발생
  970. if(pFlag == "T"){
  971. //선택없이 마우스 오른쪽 클릭으로 선택 이밴트
  972. if(grd_testlist.selectedRows == 1 || (( grd_testlist.selectedRow(0) > grd_testlist.mouseRow) || ((grd_testlist.row + grd_testlist.selectedRows -1) < grd_testlist.mouseRow ))){
  973. for(var i = 1 ; i < grd_testlist.rows ; i++){
  974. model.makeValue("/root/main/incplist/testinfo["+i+"]/selectyn", "");
  975. }
  976. grd_testlist.row = grd_testlist.mouseRow;
  977. }
  978. //선택행 선택 플래그 변경 후 DC팝업창 활성화
  979. if(grd_testlist.isCell(event.target) && grd_testlist.mouseRow >= grd_testlist.fixedrows){
  980. model.makeValue("/root/main/incplist/testinfo["+grd_testlist.row+"]/selectyn", "Y");
  981. //퇴실구분에 따른 팝업목록 선택
  982. if( model.getValue("/root/main/condition/outrmtp") == ""){
  983. //window.setPopupMenu( true, "/root/codedata/popupmenu/grid00/item", "name", "func", true); //퇴원구분 미선택
  984. }else if(model.getValue("/root/main/condition/outrmtp") == "2"){
  985. window.setPopupMenu( true, "/root/codedata/popupmenu/grid01/item", "name", "func", true); //퇴원구분 입원 선택
  986. }else{
  987. window.setPopupMenu( true, "/root/codedata/popupmenu/grid02/item", "name", "func", true); //퇴원구분 선택(입원제외)
  988. }
  989. }else{
  990. window.setPopupMenu(false);
  991. }
  992. //약,주사탭에서 마우스 클릭시 발생
  993. }else if(pFlag == "I"){
  994. //선택없이 마우스 오른쪽 클릭으로 선택 이밴트
  995. if(grd_inglist.selectedRows == 1 || (( grd_inglist.selectedRow(0) > grd_inglist.mouseRow) || ((grd_inglist.row + grd_inglist.selectedRows -1) < grd_inglist.mouseRow ))){
  996. for(var i = 1 ; i < grd_inglist.rows ; i++){
  997. model.makeValue("/root/main/incplist/inginfo["+i+"]/selectyn", "");
  998. }
  999. grd_inglist.row = grd_inglist.mouseRow;
  1000. }
  1001. //선택행 선택 플래그 변경 후 DC팝업창 활성화
  1002. if(grd_inglist.isCell(event.target) && grd_inglist.mouseRow >= grd_inglist.fixedrows){
  1003. model.makeValue("/root/main/incplist/inginfo["+grd_inglist.row+"]/selectyn", "Y");
  1004. window.setPopupMenu( true, "/root/codedata/popupmenu/grid10/item", "name", "func", true); //퇴원구분 미선택
  1005. }else{
  1006. window.setPopupMenu(false);
  1007. }
  1008. }
  1009. //혈액탭에서 마우스 클릭시 발생
  1010. else if(pFlag == "TNS"){
  1011. //선택없이 마우스 오른쪽 클릭으로 선택 이밴트
  1012. if( grd_tnsprcplist.selectedRows == 1
  1013. || (( grd_tnsprcplist.selectedRow(0) > grd_tnsprcplist.mouseRow)
  1014. || (( grd_tnsprcplist.row + grd_tnsprcplist.selectedRows -1) < grd_tnsprcplist.mouseRow ))){
  1015. for(var i = 1 ; i < grd_tnsprcplist.rows ; i++){
  1016. model.makeValue("/root/main/incplist/tnsprcplist["+i+"]/selectyn", "");
  1017. }
  1018. grd_tnsprcplist.row = grd_tnsprcplist.mouseRow;
  1019. }
  1020. //선택행 선택 플래그 변경 후 DC팝업창 활성화
  1021. if(grd_tnsprcplist.isCell(event.target) && grd_tnsprcplist.mouseRow >= grd_tnsprcplist.fixedrows){
  1022. model.makeValue("/root/main/incplist/tnsprcplist["+grd_tnsprcplist.row+"]/selectyn", "Y");
  1023. window.setPopupMenu( true, "/root/codedata/popupmenu/grid12/item", "name", "func", true); //퇴원구분 미선택
  1024. }else{
  1025. window.setPopupMenu(false);
  1026. }
  1027. }
  1028. }
  1029. }
  1030. /**
  1031. * @group :
  1032. * @ver : 2007.06.21
  1033. * @by : 양천덕
  1034. * @---------------------------------------------------
  1035. * @type : function
  1036. * @access : public
  1037. * @desc : 검사, 약주사 DC 구현 부분
  1038. * @param :
  1039. * @return :
  1040. * @---------------------------------------------------
  1041. */
  1042. function fPrcpDC(pFlag){
  1043. var prcpddprcpno = ""; //------------(20080917)김보성
  1044. //----------(20080126이후버젼)
  1045. if(messageBox ( "DC 처리를 ", "Q003" ) == "6"){
  1046. var iRow = grd_patlist.findRow(model.getValue("/root/main/condition/pid"), 1, grd_patlist.colRef("pid"), false, false);
  1047. var sHeaderData = "status▦prcpdd▦prcpno▦prcphistno▦instcd▩";
  1048. var dcPrcpInfo = "";
  1049. var dcMediPrcpInfo = "";
  1050. var dcPrcpCnt = 0;
  1051. if(pFlag == "Test"){
  1052. var tRow = grd_testlist.rows;
  1053. //DC할 검사처방 확인
  1054. for(i=1 ; i < tRow ; i ++){
  1055. var chkprcp = "";
  1056. var chkprcp = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpnm");
  1057. // 그리드에서 선택된 처방 선택
  1058. if(model.getValue("/root/main/incplist/testinfo["+i+"]/selectyn") == "Y" ){
  1059. //선택된 처방 중 혈액 처방 제외
  1060. if( model.getValue("/root/main/incplist/testinfo["+i+"]/testtp") == "Y"){
  1061. //미수행 처방 선택
  1062. if( model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "N"){
  1063. if(model.getValue("/root/main/incplist/testinfo["+i+"]/grupsnglflag") != "M"){
  1064. dcPrcpInfo += "C▦"
  1065. + model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd" ) + "▦"
  1066. + model.getValue("/root/main/incplist/testinfo["+i+"]/prcpno" ) + "▦"
  1067. + model.getValue("/root/main/incplist/testinfo["+i+"]/prcphistno" ) + "▦"
  1068. + model.getValue("/root/main/incplist/testinfo["+i+"]/instcd" ) + "▩";
  1069. dcPrcpCnt++;
  1070. }else{
  1071. messageBox(chkprcp+" 는 Mset 처방입니다.","E");
  1072. }
  1073. }else if(model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "OUT"){
  1074. messageBox(chkprcp+"는 퇴원 후 외래 검사 처방입니다.","E");
  1075. }else{
  1076. messageBox(chkprcp+"는 이미 시행된 검사 처방입니다.","E");
  1077. }
  1078. }else{
  1079. messageBox(chkprcp+"는 혈액 처방입니다.","E");
  1080. }
  1081. }
  1082. }
  1083. }else{
  1084. //DC할 약/주사 처방 확인
  1085. var tRow = grd_inglist.rows;
  1086. var prcpno = "";
  1087. var dcstatus="";
  1088. for(i=1 ; i < tRow ; i ++){
  1089. var chkprcp = model.getValue("/root/main/incplist/inginfo["+i+"]/prcpnm");
  1090. // 그리드에서 선택된 처방 선택
  1091. if(model.getValue("/root/main/incplist/inginfo["+i+"]/selectyn") == "Y" ){
  1092. //미수행 처방 선택 ( Actiong 완료, 퇴원약 약국전송 건 제외)
  1093. if(model.getValue("/root/main/incplist/inginfo["+i+"]/prcpkindcdyn") == "Y" ){
  1094. messageBox(chkprcp + "는 퇴원약 처방입니다.\n퇴원 처방은 간호사가 D/C할 수 없습니다.","E");
  1095. }else{//20100108 --KHJ 투약TAB에 의사반환요청된 미액팅된 투약 조회건 요청번호 3040
  1096. if( model.getValue("/root/main/incplist/inginfo["+i+"]/execyn") == "N"
  1097. || model.getValue("/root/main/incplist/inginfo["+i+"]/execyn") == "E" ){
  1098. //약,주사 경우는 3개로 풀릴 수 있으므로 한개의 처방 번호만 넘기도록 함
  1099. //if(prcpno != model.getValue("/root/main/incplist/inginfo["+i+"]/prcpno"))
  1100. //dcstatus E 이면 의사 후인증을 안타도록 "MEDI", N이면 후인증타도록 "CERT"
  1101. dcstatus = ( model.getValue("/root/main/incplist/inginfo["+i+"]/execyn") == "N" ? "CERT" : "MEDI");
  1102. switch( model.getValue("/root/main/incplist/inginfo["+i+"]/execyn") ){
  1103. case "N" : //정상처방인것이고 처방 인터페이스를 타면 의사 처방반환요청 상태인 "E"로 변경됨.
  1104. // prcpno = model.getValue("/root/main/incplist/inginfo["+i+"]/prcpno");
  1105. dcPrcpInfo += "C▦"
  1106. + model.getValue("/root/main/incplist/inginfo["+i+"]/prcpdd" ) + "▦"
  1107. + model.getValue("/root/main/incplist/inginfo["+i+"]/prcpno" ) + "▦"
  1108. + model.getValue("/root/main/incplist/inginfo["+i+"]/prcphistno" ) + "▦"
  1109. + model.getValue("/root/main/incplist/inginfo["+i+"]/instcd" ) + "▩";
  1110. // dcPrcpCnt++;
  1111. // //-----------------(20080926) 김보성
  1112. // if (model.getValue("/root/main/incplist/inginfo["+i+"]/prcpstatcd") >= "000" ) {
  1113. // prcpddprcpno += "'" +
  1114. // model.getValue("/root/main/incplist/inginfo["+i+"]/prcpdd") +
  1115. // model.getValue("/root/main/incplist/inginfo["+i+"]/prcpno") + "',";
  1116. // }
  1117. case "E" :
  1118. /*의사반환요청들어온 처방이고 투약기록에서 DC최종 정리를 하고 후인증처리대상이 안됨.dcstatus "CERT"인것은 후인증관리에도 조회가 되어야한다.
  1119. 투약기록을 태우기위한 파라미터 정의이므로 case "N" 에는 break가 없는게 정상임. 20100108 김홍점
  1120. */
  1121. prcpno = model.getValue("/root/main/incplist/inginfo["+i+"]/prcpno");
  1122. dcMediPrcpInfo += dcstatus + "▦"
  1123. + model.getValue("/root/main/incplist/inginfo["+i+"]/prcpdd" ) + "▦"
  1124. + model.getValue("/root/main/incplist/inginfo["+i+"]/prcpno" ) + "▦"
  1125. + model.getValue("/root/main/incplist/inginfo["+i+"]/prcphistno" ) + "▦"
  1126. + model.getValue("/root/main/incplist/inginfo["+i+"]/instcd" ) + "▩";
  1127. dcPrcpCnt++;
  1128. //-----------------(20080926) 김보성
  1129. if (model.getValue("/root/main/incplist/inginfo["+i+"]/prcpstatcd") >= "000" ) {
  1130. prcpddprcpno += "'" +
  1131. model.getValue("/root/main/incplist/inginfo["+i+"]/prcpdd") +
  1132. model.getValue("/root/main/incplist/inginfo["+i+"]/prcpno") + "',";
  1133. }
  1134. break;
  1135. }
  1136. }else if(model.getValue("/root/main/incplist/inginfo["+i+"]/execyn") == "DC"){
  1137. messageBox(chkprcp+"는 반환요청된 처방입니다.","E");
  1138. }else{
  1139. messageBox(chkprcp+"는 이미 시행된 처방입니다.","E");
  1140. }
  1141. }
  1142. }
  1143. }
  1144. }
  1145. model.makeValue("/root/send/cond3" , sHeaderData+dcPrcpInfo );
  1146. model.makeValue("/root/send/cond5" , sHeaderData+dcMediPrcpInfo );
  1147. //저장구분정보(saveFlagInfo)
  1148. model.makeValue ( "/root/save/saveflaginfo/savedataflag" , "2" ); //저장자료구분 0:진단 및 처방, 1:진단, 2:처방, 4:임시저장
  1149. model.makeValue ( "/root/save/saveflaginfo/saveflag" , "D" ); //저장구분 O:외래, I:입원, E:응급, S:건진
  1150. model.makeValue ( "/root/save/saveflaginfo/prcpflag" , "0" ); //처방구분 0:의사처방, 2:간호, 3:지원부서, 5:Admission, 6:CP, 7:항암프로토콜, 8:임시처방
  1151. model.makeValue ( "/root/save/saveflaginfo/inptflag" , "3" ); //입력구분 (11:건진처방, 12:LIS장비IF, 13:기타LIS, 14:병리, 15:EMR기록, 16:원무)
  1152. model.makeValue ( "/root/save/saveflaginfo/pamflag" , "Y" ); //원무정보 처리구분 (Y/N) -> N일 경우 check하지 않음.
  1153. //20080116 진료팀에서 D/C는 체크하지 말것
  1154. model.makeValue ( "/root/save/saveflaginfo/diagflag" , "N" ); //진단정보 처리구분 (Y/N) -> N일 경우 check하지 않음. ('Y'이면 진단없이 처방 저장이 안됨)
  1155. model.makeValue ( "/root/save/saveflaginfo/prcperrflag" , "Y" ); //처방오류구분(Y/N) -> Y일 경우 의사처방과 동일하게 오류리스트를 반환, N이면 오류를 확인하지 않음
  1156. model.makeValue ( "/root/save/saveflaginfo/deptcd" , getUserInfo("dutplcecd") ); //부서코드
  1157. model.makeValue ( "/root/save/saveflaginfo/deptnm" , getUserInfo("dutplcenm") ); //부서명
  1158. model.makeValue ( "/root/save/saveflaginfo/userid" , getUserInfo("userid") ); //사용자ID
  1159. model.makeValue ( "/root/save/saveflaginfo/usernm" , getUserInfo("usernm") ); //사용자명
  1160. model.makeValue ( "/root/save/saveflaginfo/signyn" , "N" ); //전자서명여부
  1161. var saveFlagInfoNodeList = model.instances(0).selectNodes( "/root/save/saveflaginfo" );
  1162. model.makeValue ( "/root/send/cond1", getNodeListCSV(saveFlagInfoNodeList));
  1163. //저장등록정보(saveRgstInfo)
  1164. model.makeValue ( "/root/save/savergstinfo/pid" , model.getValue("/root/main/inddpatlist/inddpatinfo["+iRow+"]/pid") ); // 등록번호(원무Key)
  1165. model.makeValue ( "/root/save/savergstinfo/orddd" , "-" ); // 진료일자(원무Key) - 입원일경우는 '-'
  1166. model.makeValue ( "/root/save/savergstinfo/indd" , model.getValue("/root/main/inddpatlist/inddpatinfo["+iRow+"]/indd") ); // 입원일자(원무Key)
  1167. model.makeValue ( "/root/save/savergstinfo/cretno" , model.getValue("/root/main/inddpatlist/inddpatinfo["+iRow+"]/cretno") ); // 생성번호(원무Key)
  1168. model.makeValue ( "/root/save/savergstinfo/orddeptcd" , model.getValue("/root/main/inddpatlist/inddpatinfo["+iRow+"]/orddeptcd") ); // 진료과(원무)
  1169. model.makeValue ( "/root/save/savergstinfo/orddrid" , model.getValue("/root/main/inddpatlist/inddpatinfo["+iRow+"]/orddrid") ); // 진료의ID(원무)
  1170. model.makeValue ( "/root/save/savergstinfo/instcd" , model.getValue("/root/main/inddpatlist/inddpatinfo["+iRow+"]/instcd") ); // 기관코드
  1171. var saveRgstInfo = model.instances(0).selectNodes( "/root/save/savergstinfo" );
  1172. model.makeValue ( "/root/send/cond2", getNodeListCSV(saveRgstInfo));
  1173. // D/C할 처방이 없을 경우 return처리
  1174. if( dcPrcpCnt > 0 ){
  1175. //-----------------------(20080917)김보성
  1176. //약 D/C인 경우만
  1177. if(pFlag != "Test") {
  1178. //1. 인증을 위한 자료 추출
  1179. prcpddprcpno = prcpddprcpno.substr(0,prcpddprcpno.length-1);
  1180. //alert("prcpddprcpno:" + prcpddprcpno);
  1181. fnSignSaveCall("30",prcpddprcpno);
  1182. //----------------(20090923)
  1183. if (getNodesetCount("/root/signinfo/signsave/signdata") > 0 ) {
  1184. //2. 자료에 대해서 인증하기
  1185. if ( fnSignSaveWork() == true) {
  1186. //3. 인증자료를 묶음submit("TXMNP06013")
  1187. var signsave = model.instances(0).selectNodes( "/root/signinfo/signsave/signdata" );
  1188. model.makeValue ( "/root/send/cond4", getNodeListCSV(signsave));
  1189. } else {
  1190. return ;
  1191. }
  1192. }
  1193. //----------------(20090923)
  1194. }
  1195. //-----------------------(20080917)
  1196. if(submit("TXMNP06013") == true ){
  1197. if(getNodesetCount("/root/temp/errlist") > 0){
  1198. var iNode = "/root/srcdata/list/patlist";
  1199. fShowModal("SPMNE00200");
  1200. }
  1201. fSelectInddPatList("S");
  1202. //-----------------------(20080917):김보성
  1203. //약 D/C인 경우만
  1204. if(pFlag != "Test") {
  1205. //1. 일자별 인증을 위한 일자 추출
  1206. var signDates = new Array;
  1207. var signDateCnt = 0;
  1208. var signdispdd = "";
  1209. var sPathsignsave = "/root/signinfo/signsave/signdata";
  1210. var rows = getNodesetCount(sPathsignsave);
  1211. if (rows <= 0 ) return;
  1212. //for (var i=0;i< rows ;i++) {
  1213. for (var i=1;i<= rows ;i++) { //--(20080922)
  1214. signdispdd = model.getValue(sPathsignsave + "[" + i + "]/execdd");
  1215. //alert( "전체loop:" + signdispdd + "/"+ medrexecdd + "/" + currentdd);
  1216. if ( signDates.length == 0) {
  1217. signDateCnt =0;
  1218. signDates[signDateCnt] = "";
  1219. }
  1220. if (signdayFind(signDates,signdispdd) == true ) { //------(투약일자)
  1221. signDateCnt ++;
  1222. signDates[signDateCnt] = signdispdd;
  1223. //alert("b:" + signDates[signDateCnt] +"/" + medrexecdd);
  1224. }
  1225. }
  1226. //2. 투약기록을 일자별로 XLST를 만들기 위해서
  1227. fnWorkddSign(signDates);
  1228. }
  1229. //-----------------------(20080917)
  1230. }
  1231. }
  1232. }
  1233. }
  1234. function fShowModal(pProgID) {
  1235. var xpos = event.screenX-300;
  1236. var ypos = event.screenY-400;
  1237. //modal(pProgID, 1, xpos, ypos, pProgID, "/root/temp/errlist", "/root/result/prcperrlist");
  1238. modal(pProgID, 1, xpos, ypos, pProgID, "/root/temp", "/root/result");
  1239. var iProperties = getParameter("SendData");
  1240. return iProperties
  1241. }
  1242. /**
  1243. * @group :
  1244. * @ver : 2007.06.21
  1245. * @by : 양천덕
  1246. * @---------------------------------------------------
  1247. * @type : function
  1248. * @access : public
  1249. * @desc : 퇴실일시 확인 부분
  1250. * @param :
  1251. * @return :
  1252. * @---------------------------------------------------
  1253. */
  1254. function fChkOutrmdd(){
  1255. // var iRow = grd_patlist.findRow(model.getValue("/root/main/condition/pid"), 1, grd_patlist.colRef("pid"), false, false);
  1256. var nowDate = fTimeSetting(); //현재 시간 셋팅
  1257. var checktime = model.getValue("/root/main/condition/outrmdd") + model.getValue("/root/main/condition/outrmtm") ; //체크할 시간 셋팅(퇴원일시)
  1258. //입실일시, 퇴실일시 체크
  1259. if(output2.value > checktime ){
  1260. model.makeValue("/root/main/condition/outrmdd", getCurrentDate() );
  1261. model.makeValue("/root/main/condition/outrmtm", nowDate );
  1262. ipt_outrddd.refresh();
  1263. ipt_outrmtm.refresh();
  1264. messageBox("퇴실일이 입실일보다 이전입니다.", "E");
  1265. return;
  1266. } else {
  1267. output3.value = model.getValue("/root/main/condition/outrmdd") + model.getValue("/root/main/condition/outrmtm");
  1268. }
  1269. //output3.refresh();
  1270. }
  1271. /**
  1272. * @group :
  1273. * @ver : 2007.06.21
  1274. * @by : 양천덕
  1275. * @---------------------------------------------------
  1276. * @type : function
  1277. * @access : public
  1278. * @desc : 환자 기본 정보 설정 부분
  1279. * @param :
  1280. * @return :
  1281. * @---------------------------------------------------
  1282. */
  1283. function fCalcChosOut(){
  1284. var inrmdt = model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/careinrmdd") +
  1285. model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/careinrmtm"); // 입실일시
  1286. var outrmdt = model.getValue("/root/main/condition/outrmdd") +
  1287. model.getValue("/root/main/condition/outrmtm");
  1288. if(inrmdt.length != 12 || outrmdt.length != 12){
  1289. if(inrmdt.length != 12)model.makeValue("/root/main/condition/out2","");
  1290. btn_outsave.disabled = true; // 입실일시가 등록되지 않은 경우 퇴실처리 버튼 disable
  1291. return "";
  1292. }else{
  1293. btn_outsave.disabled = false;
  1294. }
  1295. //퇴실일시 확인 부분
  1296. fChkOutrmdd();
  1297. //입실시간 세팅
  1298. var careinyy = inrmdt.substr(0,4);
  1299. var careinmm = inrmdt.substr(4,2);
  1300. var careindd = inrmdt.substr(6,2);
  1301. var careinhh = inrmdt.substr(8,2);
  1302. var careinnn = inrmdt.substr(10,2);
  1303. //퇴실시간 세팅
  1304. var outrmyy = outrmdt.substr(0,4);
  1305. var outrmmm = outrmdt.substr(4,2);
  1306. var outrmdd = outrmdt.substr(6,2);
  1307. var outrmhh = outrmdt.substr(8,2);
  1308. var outrmnn = outrmdt.substr(10,2);
  1309. //재실 시간 계산을 위하여 시간, 분 단위로 차이를 계산
  1310. var rstFromTime = new Date(careinyy,careinmm,careindd,careinhh,careinnn,0);
  1311. var rstEndTime = new Date(outrmyy, outrmmm,outrmdd,outrmhh,outrmnn,0);
  1312. var diffnn = ((rstEndTime - rstFromTime) / (60*1000)) ;
  1313. var diffhh = Math.ceil( (rstEndTime - rstFromTime) / ( 60*60*1000) ) ;
  1314. //시간 : 분 구하기
  1315. if(careinnn != outrmnn){
  1316. calcdiffhh = diffhh -1;
  1317. calcdiffnn = (diffnn - ((diffhh-1) * 60 ));
  1318. //분이 정각일 경우
  1319. }else{
  1320. calcdiffhh = diffhh;
  1321. calcdiffnn = "00"
  1322. }
  1323. //시간(20080123)
  1324. model.makeValue("/root/timeterm/hh",calcdiffhh);
  1325. model.makeValue("/root/timeterm/nn",calcdiffnn);
  1326. //환자 기본정보 문장 생성
  1327. var CalcDate = calcdiffhh + "시간 "+ calcdiffnn + "분" ;
  1328. return CalcDate;
  1329. }
  1330. /**
  1331. * @group :
  1332. * @ver : 2007.06.21
  1333. * @by : 양천덕
  1334. * @---------------------------------------------------
  1335. * @type : function
  1336. * @access : public
  1337. * @desc : 검사 처방 강제 Action 처리 부분
  1338. * @param :
  1339. * @return :
  1340. * @---------------------------------------------------
  1341. */
  1342. function fSaveTestPrcp(){
  1343. //----------------(20080102버젼)
  1344. /*------------------
  1345. //acting저장
  1346. var datacheck2 = "N";
  1347. var tRow = grd_testlist.rows;
  1348. //마우스 드래그시 실시 검사 처방 여부 확인
  1349. for(i= 1 ; i <tRow; i++ ) {
  1350. if( model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "N" ){
  1351. var datacheck2 = "Y";
  1352. }
  1353. }
  1354. if(datacheck2 == "N" || grd_testlist.rows == "1"){
  1355. messageBox("미시행 검사 처방이 존재하지", "E007");
  1356. model.setFocus("button3");
  1357. return;
  1358. }else{
  1359. for(i=1 ; i < tRow ; i ++){
  1360. if(model.getValue("/root/main/incplist/testinfo["+i+"]/selectyn") == "Y" ){
  1361. if( model.getValue("/root/main/incplist/testinfo["+i+"]/testtp") == "Y"){
  1362. if( model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") != "N"){
  1363. var chkprcp = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpnm");
  1364. messageBox(chkprcp+"는 이미 시행된 검사입니다.","I");
  1365. return;
  1366. }
  1367. }else{
  1368. messageBox("혈액불출은 Acting 할 수 없습니다.","E");
  1369. return;
  1370. }
  1371. }
  1372. }
  1373. model.makeValue("/root/send/searchpat", fSetPatInfo() );
  1374. model.makeValue("/root/send/prcplist", grd_testlist.getUpdateDataAll("i"));
  1375. model.removeNodeset("/root/main/incplist");
  1376. submit("TXMNP06014");
  1377. model.refresh();
  1378. }
  1379. ---------------------------*/
  1380. //-----------------------(20080102이후버젼)
  1381. //acting저장
  1382. var datacheck2 = "N";
  1383. var tRow = grd_testlist.rows;
  1384. var vbYes = messageBox("선택된 처방 Acting","Q004");
  1385. if( vbYes == 6 ){
  1386. //마우스 드래그시 실시 검사 처방 여부 확인
  1387. for(i= 1 ; i <tRow; i++ ) {
  1388. if( model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "N" ){
  1389. var datacheck2 = "Y";
  1390. }
  1391. }
  1392. if(datacheck2 == "N" || grd_testlist.rows == "1"){
  1393. messageBox("미시행 검사 처방이 존재하지", "E007");
  1394. model.setFocus("button3");
  1395. return;
  1396. }else{
  1397. for(i=1 ; i < tRow ; i ++){
  1398. var chkprcp = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpnm");
  1399. if(model.getValue("/root/main/incplist/testinfo["+i+"]/selectyn") == "Y" ){
  1400. if( model.getValue("/root/main/incplist/testinfo["+i+"]/testtp") == "Y"){
  1401. if( model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "N"){
  1402. if(model.getValue("/root/main/incplist/testinfo["+i+"]/grupsnglflag") != "M" ){ // MSet처방
  1403. model.makeValue("/root/main/incplist/testinfo["+i+"]/viewstat" , "2");
  1404. }else{
  1405. messageBox(chkprcp+"처방은 MSet 처방입니다.\n강제 Acting할 수 없습니다.","E");
  1406. }
  1407. }else if(model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "OUT"){
  1408. messageBox(chkprcp+"는 퇴원 후 외래 처방입니다.\n강제 Acting 할 수 없습니다.","E");
  1409. }else{
  1410. messageBox(chkprcp+"는 이미 시행된 처방입니다.\n강제 Acting 할 수 없습니다.","E");
  1411. }
  1412. }else{
  1413. messageBox(chkprcp+" 은 혈액처방 입니다.\n강제 Acting 할 수 없습니다.","E");
  1414. }
  1415. }
  1416. }
  1417. model.removenodeset("/root/send");
  1418. model.makeValue("/root/send/searchpat", fSetPatInfo() );
  1419. model.makeValue("/root/send/prcplist", grd_testlist.getUpdateDataAll("i"));
  1420. model.removeNodeset("/root/main/incplist");
  1421. submit("TXMNP06014");
  1422. model.refresh();
  1423. }
  1424. }
  1425. }
  1426. /**
  1427. * @group :
  1428. * @ver : 2007.06.21
  1429. * @by : 양천덕
  1430. * @---------------------------------------------------
  1431. * @type : function
  1432. * @access : public
  1433. * @desc : 검사, 약주사 오른쪽 팝업 메뉴 선택에 따른 처리
  1434. * @param :
  1435. * @return :
  1436. * @---------------------------------------------------
  1437. */
  1438. function fChagnePrcpStat(pFlag){
  1439. if(pFlag == ""){
  1440. pFlag == "StatInit";
  1441. }
  1442. var sStatFlag = ""; // 1: DC, 2: Action, 3: 병동이관, -: 초기화
  1443. var sTargetGrid = ""; // All : 검사, 약 전체 초기화, Test: 검사 초기화, Ing: 약주사 초기화
  1444. var sExecFlag = "";
  1445. //Param에 따른 상태값 설정
  1446. if(pFlag == "StatInit"){
  1447. sStatFlag = "-";
  1448. sTargetGrid = "ALL";
  1449. sExecFlag = "N";
  1450. }else if(pFlag == "DefTestDC"){
  1451. sStatFlag = "1";
  1452. sTargetGrid = "Test";
  1453. sExecFlag = "Y";
  1454. }else if(pFlag == "DefTestAct"){
  1455. sStatFlag = "2";
  1456. sTargetGrid = "Test";
  1457. sExecFlag = "Y";
  1458. }else if(pFlag == "ChosTestInit"){
  1459. sStatFlag = "-";
  1460. sTargetGrid = "Test";
  1461. sExecFlag = "N";
  1462. }else if(pFlag == "ChosTestWard"){
  1463. sStatFlag = "3";
  1464. sTargetGrid = "Test";
  1465. sExecFlag = "N";
  1466. }else if(pFlag == "ChosTestDC"){
  1467. sStatFlag = "1";
  1468. sTargetGrid = "Test";
  1469. sExecFlag = "N";
  1470. }else if(pFlag == "ChosTestAct"){
  1471. sStatFlag = "2";
  1472. sTargetGrid = "Test";
  1473. sExecFlag = "N";
  1474. }else if(pFlag == "DefIngDC"){
  1475. sStatFlag = "1";
  1476. sTargetGrid = "Ing";
  1477. sExecFlag = "Y";
  1478. }else if(pFlag == "ChosIngInit"){
  1479. sStatFlag = "-";
  1480. sTargetGrid = "Ing";
  1481. sExecFlag = "N";
  1482. }else if(pFlag == "ChosIngDC"){
  1483. sStatFlag = "1";
  1484. sTargetGrid = "Ing";
  1485. sExecFlag = "N";
  1486. }else if(pFlag == "TnsDC"){
  1487. //혈액처방d/c의 경우
  1488. fSetPrcpTnsDC();
  1489. }
  1490. // alert(pFlag + " : " + sExecFlag +" : "+ sTargetGrid +" : "+ sStatFlag );
  1491. // 상태 변경및 실행 function 호출 부분
  1492. if(sExecFlag != "" && sTargetGrid != "" && sStatFlag != ""){
  1493. // 선택 바로 실시( Acting, D/C )
  1494. if(sExecFlag == "Y"){
  1495. if(sStatFlag == "1"){ // D/C
  1496. fPrcpDC(sTargetGrid);
  1497. }else if(sStatFlag == "2"){ // Action
  1498. fSaveTestPrcp();
  1499. }else if(sStatFlag == "3" || sStatFlag == "-" ){
  1500. return;
  1501. }
  1502. // 상태 변경
  1503. }else{
  1504. fChangeStatCode(sStatFlag, sTargetGrid);
  1505. }
  1506. }
  1507. }
  1508. //----------------------(20080126)
  1509. function fChangeStatCode(pStat, pTarget){
  1510. if(pTarget == "Test" ){
  1511. for(var i= 1 ; i <= getNodesetCount("/root/main/incplist/testinfo") ; i++){
  1512. var chkprcp = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpnm");
  1513. // 선택된 처방
  1514. if(model.getValue("/root/main/incplist/testinfo["+i+"]/selectyn")=="Y"){
  1515. // 혈액처방이 아닌것 || 혈액처방이면서 병동이관
  1516. if( model.getValue("/root/main/incplist/testinfo["+i+"]/testtp") == "Y"
  1517. || (model.getValue("/root/main/incplist/testinfo["+i+"]/testtp") == "N"
  1518. && (pStat == "3" || pStat == "-"))){
  1519. // 미수행 처방 선택
  1520. if(model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "N"){
  1521. // MSet처방
  1522. if( (model.getValue("/root/main/incplist/testinfo["+i+"]/grupsnglflag") == "M"
  1523. && (pStat == "3" || pStat == "-") )
  1524. || model.getValue("/root/main/incplist/testinfo["+i+"]/grupsnglflag") != "M" ){
  1525. //단순영상 처방(DC,병동이관,초기화인경우만)
  1526. if( model.getValue("/root/main/incplist/testinfo["+i+"]/c2check") == "N"
  1527. || model.getValue("/root/main/incplist/testinfo["+i+"]/c2check") == "Y"
  1528. && (pStat == "3" || pStat == "-")){
  1529. model.makeValue("/root/main/incplist/testinfo["+i+"]/viewstat", pStat);
  1530. }else if(model.getValue("/root/main/incplist/testinfo["+i+"]/c2check") == "Y" &&
  1531. pStat == '1'){
  1532. if(model.getValue("/root/main/incplist/testinfo["+i+"]/prcpstatcd") == "000" ||
  1533. model.getValue("/root/main/incplist/testinfo["+i+"]/prcpstatcd") == "100"){
  1534. //20081009 단순영상처방 dc는 간호확인, 처방상태일때 가능
  1535. model.makeValue("/root/main/incplist/testinfo["+i+"]/viewstat", pStat);
  1536. }else{
  1537. messageBox(chkprcp+" 처방은 처방상태가 '간호확인' 또는 '처방' 상태일때만 D/C할 수 있습니다.","E");
  1538. }
  1539. }else{
  1540. messageBox(chkprcp+" 처방은 Acting 할 수 없는 단순 영상 처방입니다.","E");
  1541. }
  1542. }else{
  1543. messageBox(chkprcp+" 처방은 MSet 처방입니다.\nD/C, Acting 할 수 없습니다.","E");
  1544. }
  1545. }else if(model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "OUT"){
  1546. messageBox(chkprcp+" 처방은 퇴원 후 외래 검사 처방입니다.\n병동이관, D/C, Acting 할 수 없습니다.","E");
  1547. }else{
  1548. messageBox(chkprcp+" 처방은 시행된 검사 처방입니다.\n병동이관, D/C, Acting 할 수 없습니다.","E");
  1549. }
  1550. }else{
  1551. messageBox(chkprcp+" 처방은 혈액처방입니다.\nD/C, Acting 할 수 없습니다.", "E");
  1552. }
  1553. }
  1554. }
  1555. } else if(pTarget == "Ing"){
  1556. for(var i= 0 ; i <= getNodesetCount("/root/main/incplist/inginfo") ; i++){
  1557. if(model.getValue("/root/main/incplist/inginfo["+i+"]/selectyn")=="Y"){
  1558. model.makeValue("/root/main/incplist/inginfo["+i+"]/viewstat", pStat);
  1559. }
  1560. }
  1561. } else if(pTarget == "All"){
  1562. for(var i= 1 ; i <= getNodesetCount("/root/main/incplist/testinfo") ; i++){
  1563. model.makeValue("/root/main/incplist/testinfo["+i+"]/viewstat", pStat);
  1564. }
  1565. for(var i= 0 ; i <= getNodesetCount("/root/main/incplist/inginfo") ; i++){
  1566. model.makeValue("/root/main/incplist/inginfo["+i+"]/viewstat", pStat);
  1567. }
  1568. }
  1569. }
  1570. /**
  1571. * @group :
  1572. * @ver : 2008.01.17
  1573. * @by : 양천덕
  1574. * @---------------------------------------------------
  1575. * @type : function
  1576. * @access : public
  1577. * @desc : 검사처방 일괄 처리
  1578. * @param :
  1579. * @return :
  1580. * @---------------------------------------------------
  1581. */
  1582. function fSaveTestPrcpAll(){
  1583. /*
  1584. var tRow = grd_testlist.rows;
  1585. var cntDC = 0;
  1586. var cntACT = 0;
  1587. var cntWard = 0 ;
  1588. for(var i = 1 ; i<tRow ; i++){
  1589. if(model.getValue("/root/main/incplist/testinfo["+i+"]/viewstat") == "1"){
  1590. cntDC++;
  1591. }
  1592. if(model.getValue("/root/main/incplist/testinfo["+i+"]/viewstat") == "2"){
  1593. cntACT++;
  1594. }
  1595. if(model.getValue("/root/main/incplist/testinfo["+i+"]/viewstat") == "3"){
  1596. cntWard++;
  1597. model.makeValue("/root/testprcp/tmp["+cntWard+"]/prcpno" , model.getValue("/root/main/incplist/testinfo["+i+"]/prcpno"));
  1598. model.makeValue("/root/testprcp/tmp["+cntWard+"]/prcphistno" , model.getValue("/root/main/incplist/testinfo["+i+"]/prcphistno"));
  1599. model.makeValue("/root/testprcp/tmp["+cntWard+"]/prcpdd" , model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd"));
  1600. }
  1601. }
  1602. if(cntDC < 1 && cntACT < 1){
  1603. messageBox("DC & Acting 할 처방이 존재하지 않습니다.", "I");
  1604. return;
  1605. }
  1606. var vbYes = messageBox("DC : "+cntDC+" 건 Acting : "+cntACT+" 건 입니다.","Q004");
  1607. if( vbYes == 6 ){
  1608. if(cntDC > 0){
  1609. fPrcpDCSave("Test", cntACT);
  1610. }
  1611. if(cntACT > 0){
  1612. fSaveTestPrcpSave();
  1613. }
  1614. for(var i = 1 ; i <= getNodesetCount("/root/main/incplist/testinfo") ; i++ ){
  1615. for(var j = 1 ; j <= getNodesetCount("/root/testprcp/tmp") ; j++ ){
  1616. if(model.getValue("/root/main/incplist/testinfo["+i+"]/prcpno") == model.getValue("/root/testprcp/tmp["+j+"]/prcpno") ){
  1617. model.makeValue("/root/main/incplist/testinfo["+i+"]/viewstat", "3");
  1618. }
  1619. }
  1620. model.refresh();
  1621. }
  1622. }
  1623. */
  1624. model.removeNodeset("/root/testprcp/tmp");
  1625. var tRow = grd_testlist.rows;
  1626. var cntDC = 0;
  1627. var cntACT = 0;
  1628. var cntWard = 0 ;
  1629. //상태 설정값 저장(병동이관)
  1630. for(var i = 1 ; i<tRow ; i++){
  1631. if(model.getValue("/root/main/incplist/testinfo["+i+"]/viewstat") == "1"){//d/c
  1632. cntDC++;
  1633. }
  1634. if(model.getValue("/root/main/incplist/testinfo["+i+"]/viewstat") == "2"){//Acting
  1635. cntACT++;
  1636. }
  1637. if(model.getValue("/root/main/incplist/testinfo["+i+"]/viewstat") == "3"){//병동이관
  1638. cntWard++;
  1639. model.makeValue("/root/testprcp/tmp["+cntWard+"]/prcpno" , model.getValue("/root/main/incplist/testinfo["+i+"]/prcpno"));
  1640. model.makeValue("/root/testprcp/tmp["+cntWard+"]/prcphistno" , model.getValue("/root/main/incplist/testinfo["+i+"]/prcphistno"));
  1641. model.makeValue("/root/testprcp/tmp["+cntWard+"]/prcpdd" , model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd"));
  1642. }
  1643. }
  1644. if(cntDC < 1 && cntACT < 1){
  1645. messageBox("DC & Acting 할 처방이 존재하지 않습니다.", "I");
  1646. return;
  1647. }
  1648. var vbYes = messageBox("DC : "+cntDC+" 건 Acting : "+cntACT+" 건 입니다.","Q004");
  1649. if( vbYes == 6 ){
  1650. if(cntDC > 0){ //DC 설정 스크립트 호출
  1651. fPrcpDCSave("Test", cntACT);
  1652. }
  1653. if(cntACT > 0){ //Acting 설정 스크립트 호출
  1654. fSaveTestPrcpSave();
  1655. }
  1656. //임시 저장된 상태 설정값 세팅(병동이관)
  1657. for(var i = 1 ; i <= getNodesetCount("/root/main/incplist/testinfo") ; i++ ){
  1658. for(var j = 1 ; j <= getNodesetCount("/root/testprcp/tmp") ; j++ ){
  1659. if(model.getValue("/root/main/incplist/testinfo["+i+"]/prcpno") == model.getValue("/root/testprcp/tmp["+j+"]/prcpno") ){
  1660. model.makeValue("/root/main/incplist/testinfo["+i+"]/viewstat", "3");
  1661. }
  1662. }
  1663. }
  1664. model.refresh();
  1665. }
  1666. }
  1667. /*
  1668. var saveFlagInfoNodeList = model.instances(0).selectNodes( "/root/save/saveflaginfo" );
  1669. model.makeValue ( "/root/send/cond1", getNodeListCSV(saveFlagInfoNodeList));
  1670. * 20080904 혈액처방 dc
  1671. */
  1672. function fSetPrcpTnsDC(){
  1673. var iRow = grd_patlist.row;
  1674. if (model.getvalue("/root/main/inddpatlist/inddpatinfo["+iRow+"]/pid") != "" ) {
  1675. var path_tnsprcplist = "/root/main/incplist/tnsprcplist";
  1676. var FlagInfoHeader = "savedataflag▦saveflag▦prcpflag▦inptflag▦pamflag▦diagflag▦prcperrflag▦deptcd▦deptnm▦userid▦usernm▦signyn▩";
  1677. var RgstInfoHeader = "pid▦orddd▦indd▦cretno▦orddeptcd▦orddrid▦instcd▩";
  1678. var PrcpInfoHeader = "status▦rowno▦prcpdd▦prcpno▦prcphistno▦instcd▦pid▦orddd▦cretno▦orddeptcd▦orddrid▦prcpgenrflag▦prcpstatcd▦prcpkindcd▦prcpcd▦calcscorcd▦prcpexecdeptcd▦prcphopedd"
  1679. +" ▦prcpqty▦prcpqtyunitflag▦prcptims▦prcpdayno▦payflagcd▦prcpmixno▦erprcpflag▦prnprcpflag▦precureprcpflag▦nigtprcpflag▦portprcpflag▦fixprcpflag▦choiordflag▦anamneflag▦prcpdirecflag"
  1680. +" ▦angioflagcd▦opansflagcd▦ansttm▦offictourhealexamflag▦stemcellflag▦hosinhosoutflag▦hosinprcpresncd▦issdeptcd▦prcpauthflag▦prcpinptflag▦prcpsignflag▦oprsrvno▦clincstdyflag▦clincstdycd"
  1681. +" ▦drugmthdspccd▦tootfact▦matrsetprcpspec▦anticncrprtlno▦cpno▦calcflag▦rsrvflag▦rsrvdd▦rsrvtm▦rsrvrid▦execdd▦exectm▦execrid▦direcprcplnkdd▦direcprcplnkno▦ordreqlnkno▦testreqlnkno▩";
  1682. //***** 저장구분정보(saveFlagInfoVO)
  1683. var FlagInfoData = '2' +"▦" //저장자료구분 (2:처방)
  1684. + 'D' +"▦" //저장구분 (O:외래, I:입원, E:응급, S:건진)
  1685. + '1' +"▦" //처방구분(M0035 처방권한에 대한 구분종류 : 의사처방)
  1686. + '18' +"▦" //입력구분(M0034 처방입력에 대한 구분종류 : 간호PRN)
  1687. + 'N' +"▦" //원무정보 처리구분 (Y/N)
  1688. + 'N' +"▦" //진단정보 처리구분 (Y/N)
  1689. + 'Y' +"▦" //처방오류구분(Y/N) -> Y일 경우 의사처방과 동일하게 오류리스트를 반환, N이면 오류를 확인하지 않음
  1690. + getUserInfo("dutplcecd") +"▦" //부서코드 (입력자 또는 로그인한 사용자의 부서코드)
  1691. + getUserInfo("dutplcenm") +"▦" //부서명 (입력자 또는 로그인한 사용자의 부서명)
  1692. + getUserId() +"▦" //사용자ID (입력자 또는 로그인한 사용자ID)
  1693. + getUserName() +"▦" //사용자명 (입력자 또는 로그인한 사용자명)
  1694. + 'N' +"▩"; //전자서명여부 (Y/N)
  1695. //***** 저장등록정보(saveRgstInfoVO)
  1696. var RgstInfoData = model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/pid") +"▦"
  1697. + '-' +"▦"
  1698. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/indd") +"▦"
  1699. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/cretno") +"▦"
  1700. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/orddeptcd") +"▦"
  1701. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/orddrid") +"▦"
  1702. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/instcd") +"▩";
  1703. var PrcpInfoData = "";
  1704. for(var i=1;i<=grd_tnsprcplist.rows;i++){
  1705. if(model.getValue(path_tnsprcplist+"["+i+"]/selectyn") == "Y" ){
  1706. //***** 저장처방정보(savePrcpInfoVO)
  1707. PrcpInfoData += 'C' + "▦" // status : 신규(I),DC(C)
  1708. + i + "▦" // rowno : 줄번호(병리요구)
  1709. + model.getValue(path_tnsprcplist+"["+i+"]/prcpdd" ) + "▦" // prcpdd : 처방일자(외래/종건은orddd와동일,입원은처방일자)
  1710. + model.getValue(path_tnsprcplist+"["+i+"]/prcpno" ) + "▦" // prcpno : 처방번호(status가'I'일경우0)
  1711. + model.getValue(path_tnsprcplist+"["+i+"]/prcphistno" ) + "▦" // prcphistno : 처방이력번호(status가'I'일경우0)
  1712. + model.getValue(path_tnsprcplist+"["+i+"]/instcd" ) + "▦" // instcd : 기관코드
  1713. + model.getValue(path_tnsprcplist+"["+i+"]/pid" ) + "▦" // pid : 등록번호(원무Key)
  1714. + model.getValue(path_tnsprcplist+"["+i+"]/orddd" )+ "▦" // orddd : 진료일자(원무Key)-입원환자일경우indd
  1715. + model.getValue(path_tnsprcplist+"["+i+"]/cretno" )+ "▦" // cretno : 생성번호(원무Key)
  1716. + model.getValue(path_tnsprcplist+"["+i+"]/orddeptcd" )+ "▦" // orddeptcd : 진료과(원무)
  1717. + model.getValue(path_tnsprcplist+"["+i+"]/orddrid" ) + "▦" // orddrid : 진료의ID(원무)
  1718. + model.getValue(path_tnsprcplist+"["+i+"]/prcpgenrflag" ) + "▦" // prcpgenrflag : 처방발생구분(원무)-O:외래,I:입원,E:응급,S:건진
  1719. + model.getValue(path_tnsprcplist+"["+i+"]/prcpstatcd" ) + "▦" // prcpstatcd : 처방상태:'000'
  1720. + model.getValue(path_tnsprcplist+"["+i+"]/prcpkindcd" ) + "▦" // prcpkindcd : 처방종류:'20'
  1721. + model.getValue(path_tnsprcplist+"["+i+"]/prcpcd" ) + "▦" // prcpcd : 처방코드
  1722. + model.getValue(path_tnsprcplist+"["+i+"]/calcscorcd" ) + "▦" // calcscorcd : 수가코드
  1723. + model.getValue(path_tnsprcplist+"["+i+"]/prcpexecdeptcd" ) + "▦" // prcpexecdeptcd : 처방실시부서코드(수가의접수부서를넣어주거나,접수하는부서코드,없을경우'-'로처리)
  1724. + model.getValue(path_tnsprcplist+"["+i+"]/prcphopedd" ) + "▦" // prcphopedd : 처방희망일자(처방일자이전으로발생불가)
  1725. + model.getValue(path_tnsprcplist+"["+i+"]/prcpqty" ) + "▦" // prcpqty : 처방수량(1)(약품일경우반드시포장단위수량을넣어주어야됨)
  1726. + model.getValue(path_tnsprcplist+"["+i+"]/prcpqtyunitflag" ) + "▦" // prcpqtyunitflag : 처방수량단위(약품일경우'3',그렇지않을경우'-')
  1727. + model.getValue(path_tnsprcplist+"["+i+"]/prcptims" ) + "▦" // prcptims : 처방횟수(1)(입원일경우횟수에따라풀림)
  1728. + model.getValue(path_tnsprcplist+"["+i+"]/prcpdayno" ) + "▦" // prcpdayno : 처방일수(1)(지원부서에서는주사처방에대하여일수를넣으면안됨,넣으면자료가문제가생김)
  1729. + model.getValue(path_tnsprcplist+"["+i+"]/payflagcd" ) + "▦" // payflagcd : 급여구분코드(M0029참조)->'-'로넣으주면환자의보험유형에따라자동발생
  1730. + model.getValue(path_tnsprcplist+"["+i+"]/prcpmixno" ) + "▦" // prcpmixno : 처방MIX번호
  1731. + model.getValue(path_tnsprcplist+"["+i+"]/erprcpflag" ) + "▦" // erprcpflag : 응급처방구분(Y/N)
  1732. + model.getValue(path_tnsprcplist+"["+i+"]/prnprcpflag" ) + "▦" // prnprcpflag : PRN 처방구분(Y/N)
  1733. + model.getValue(path_tnsprcplist+"["+i+"]/precureprcpflag" ) + "▦" // precureprcpflag : 선처치처방구분(Y/N)
  1734. + model.getValue(path_tnsprcplist+"["+i+"]/nigtprcpflag" ) + "▦" // nigtprcpflag : 야간처방구분(Y/N):야간가산에해당될경우
  1735. + model.getValue(path_tnsprcplist+"["+i+"]/portprcpflag" ) + "▦" // portprcpflag : 포터블처방구분(Y/N)
  1736. + model.getValue(path_tnsprcplist+"["+i+"]/fixprcpflag" ) + "▦" // fixprcpflag : 정액처방구분(Y/N)
  1737. + model.getValue(path_tnsprcplist+"["+i+"]/choiordflag" ) + "▦" // choiordflag : 선택처방구분(Y/N)->만약'-'일경우원무정보기준으로처리
  1738. + model.getValue(path_tnsprcplist+"["+i+"]/anamneflag" ) + "▦" // anamneflag : 기왕력(증)구분(Y/N)
  1739. + model.getValue(path_tnsprcplist+"["+i+"]/prcpdirecflag" ) + "▦" // prcpdirecflag : 처방방향구분(코드정의서M0041참조),재활은위치구분으로사용:'-'
  1740. + model.getValue(path_tnsprcplist+"["+i+"]/angioflagcd" ) + "▦" // angioflagcd : Angio구분(코드정의서M0006참조)
  1741. + model.getValue(path_tnsprcplist+"["+i+"]/opansflagcd" ) + "▦" // opansflagcd : 수술마취구분(코드정의서M0007,M0008참조)
  1742. + model.getValue(path_tnsprcplist+"["+i+"]/ansttm" ) + "▦" // ansttm : 마취처방에대한마취적용시간-분을4자리로표현,연속검사검사간격
  1743. + model.getValue(path_tnsprcplist+"["+i+"]/offictourhealexamflag") + "▦" // offictourhealexamflag: 출장검진구분(Y/N)
  1744. + model.getValue(path_tnsprcplist+"["+i+"]/stemcellflag" ) + "▦" // stemcellflag : '00NNN'건진청구구분,조혈모(줄기)세포구분-StemCellSource여부,Cryo여부,CD34채집여부,해동여부의조합으로구성
  1745. + model.getValue(path_tnsprcplist+"["+i+"]/hosinhosoutflag" ) + "▦" // hosinhosoutflag : 원내외구분(건진은'I',약이아닐경우'-')
  1746. + model.getValue(path_tnsprcplist+"["+i+"]/hosinprcpresncd" ) + "▦" // hosinprcpresncd : 원내처방사유(건진에해당하는사유-정의,약이아닐경우'00')
  1747. + model.getValue(path_tnsprcplist+"["+i+"]/issdeptcd" ) + "▦" // issdeptcd : 발행부서코드(집계가타부서일경우타과코드,입원은기본이병동)->'-'로처리하면자동처리(기본은처방입력부서이나입원은해당병동으로처리)
  1748. + model.getValue(path_tnsprcplist+"["+i+"]/prcpauthflag" ) + "▦" // prcpauthflag : 처방권한구분(0:의사처방화면,1:의사및간호사공유처방,2:순수간호처방,3:지원부서의사처방,4:기타처방-기타지원부서추가,5:계산용원무처방,6:건진처방==>0,1만의사처방화면에보임,단3은추후에결정)
  1749. + model.getValue(path_tnsprcplist+"["+i+"]/prcpinptflag" ) + "▦" // prcpinptflag : 처방입력구분(저장구분정보의inptflag와동일하게처리)
  1750. + model.getValue(path_tnsprcplist+"["+i+"]/prcpsignflag" ) + "▦" // prcpsignflag : 처방서명구분(0:서명안함,1:후인증,2:서명완료)
  1751. + model.getValue(path_tnsprcplist+"["+i+"]/oprsrvno" ) + "▦" // oprsrvno : 수술예약번호(0)
  1752. + 'N' + "▦" // clincstdyflag : 임상연구구분(Y/N)
  1753. + '-' + "▦" // clincstdycd : 임상연구코드('-')->임상연구구분이'Y'일경우임상연구코드를등록
  1754. + model.getValue(path_tnsprcplist+"["+i+"]/drugmthdspccd" ) + "▦" // drugmthdspccd : 투여방법및검체코드(약품일경우복용방법,진검및병리일경우검체코드,Single코드에대한AllSize규격ID,Default'-')
  1755. + '-' + "▦" // tootfact : 치식(병리만사용,나머지는'-')
  1756. + '-' + "▦" // matrsetprcpspec : 재료처방내용(처방코드|수량|AllSize규격ID|Y|-|-^):Group에묶여있는allsize재료에대해서만처리
  1757. + model.getValue(path_tnsprcplist+"["+i+"]/anticncrprtlno" ) + "▦" // anticncrprtlno : 항암프로토콜번호(0)
  1758. + model.getValue(path_tnsprcplist+"["+i+"]/cpno" ) + "▦" // cpno : CP번호(0)
  1759. + model.getValue(path_tnsprcplist+"["+i+"]/calcflag" ) + "▦" // calcflag : 계산구분(Y/N)
  1760. + model.getValue(path_tnsprcplist+"["+i+"]/rsrvflag" ) + "▦" // rsrvflag : 예약구분(Y/N)
  1761. + model.getValue(path_tnsprcplist+"["+i+"]/rsrvdd" ) + "▦" // rsrvdd : 예약일자('N'일경우'00000000')
  1762. + model.getValue(path_tnsprcplist+"["+i+"]/rsrvtm" ) + "▦" // rsrvtm : 예약시간('N'일경우'000000')
  1763. + model.getValue(path_tnsprcplist+"["+i+"]/rsrvrid" ) + "▦" // rsrvrid : 예약자ID('-')
  1764. + model.getValue(path_tnsprcplist+"["+i+"]/execdd" ) + "▦" // execdd : 실시일자('00000000')
  1765. + model.getValue(path_tnsprcplist+"["+i+"]/exectm" ) + "▦" // exectm : 실시시간('000000')
  1766. + model.getValue(path_tnsprcplist+"["+i+"]/execrid" ) + "▦" // execrid : 실시자ID('-')
  1767. + model.getValue(path_tnsprcplist+"["+i+"]/direcprcplnkdd" ) + "▦" // direcprcplnkdd : 지시처방연계일자(00000000)->지원부서에서사용-원지시처방의처방일자
  1768. + model.getValue(path_tnsprcplist+"["+i+"]/direcprcplnkno" ) + "▦" // direcprcplnkno : 지시처방연계번호(0)->지원부서에서사용-원지시처방의실시처방유일번호
  1769. + model.getValue(path_tnsprcplist+"["+i+"]/ordreqlnkno" ) + "▦" // ordreqlnkno : 진료의뢰연계번호(0)
  1770. + model.getValue(path_tnsprcplist+"["+i+"]/testreqlnkno" ) + "▩" // testreqlnkno : 검사의뢰연계번호(0)->병리와진단검사사용
  1771. if(model.getValue(path_tnsprcplist+"["+i+"]/dcyn") == "Y" && model.getValue(path_tnsprcplist+"["+i+"]/irr") == "Y"){
  1772. PrcpInfoData += model.getValue(path_tnsprcplist+"["+i+"]/irrinfo"); // irr처방정보
  1773. }
  1774. }
  1775. }
  1776. if (PrcpInfoData == "") {
  1777. messageBox("선택한 처방이 없습니다.", "I");
  1778. } else {
  1779. model.removeNodeset("/root/send");
  1780. model.makeValue("/root/send/saveflaginfo" , FlagInfoHeader+FlagInfoData);
  1781. model.makeValue("/root/send/savergstinfo" , RgstInfoHeader+RgstInfoData);
  1782. model.makeValue("/root/send/saveprcpinfo" , PrcpInfoHeader+PrcpInfoData);
  1783. if(submit("TXMNW01203")) {
  1784. //오류팝업
  1785. var prcpErrList = model.instances(0).selectNodes( "/root/temp/result/prcperrlist" );
  1786. if ( prcpErrList.length > 0 ) {
  1787. if ( !isNull(model.getValue ("/root/temp/result/prcperrlist/prcpcd"))){
  1788. var xpt = window.screenleft + 100;
  1789. var ypt = window.screenTop + 50;
  1790. var coord = getRelativeCoordinate ( xpt, ypt );
  1791. var mon = coord[0];
  1792. xpt = coord[1];
  1793. ypt = coord[2];
  1794. open ( "SPMMO00600", mon, xpt, ypt, "prcpdetl", "/root/temp/result", "/root/result", "", false );
  1795. model.removeNodeset("/root/temp/result/prcperrlist");
  1796. }
  1797. }
  1798. }
  1799. }
  1800. //검사,약주사,혈액처방 재조회
  1801. fSelectPatList();
  1802. } else {
  1803. messageBox("환자를", "C002");
  1804. return;
  1805. }
  1806. }
  1807. /**
  1808. * @group :
  1809. * @ver : 2007.06.21
  1810. * @by : 양천덕
  1811. * @---------------------------------------------------
  1812. * @type : function
  1813. * @access : public
  1814. * @desc : 검사, 약주사 DC 구현 부분(상태값으로 D/C 결정 된 처방 일괄 D/C)
  1815. * @param :
  1816. * @return :
  1817. * @---------------------------------------------------
  1818. */
  1819. function fPrcpDCSave(pFlag, pCnt){
  1820. var sHeaderData = "status▦prcpdd▦prcpno▦prcphistno▦instcd▩";
  1821. var dcPrcpInfo = "";
  1822. var dcPrcpCnt = 0;
  1823. //DC할 검사처방 확인
  1824. var tRow = grd_testlist.rows;
  1825. for(i=1 ; i < tRow ; i ++){
  1826. // 그리드에서 선택된 처방 선택
  1827. if(model.getValue("/root/main/incplist/testinfo["+i+"]/viewstat") == "1" ){
  1828. dcPrcpInfo += "C▦"
  1829. + model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd" ) + "▦"
  1830. + model.getValue("/root/main/incplist/testinfo["+i+"]/prcpno" ) + "▦"
  1831. + model.getValue("/root/main/incplist/testinfo["+i+"]/prcphistno") + "▦"
  1832. + model.getValue("/root/main/incplist/testinfo["+i+"]/instcd" ) + "▩";
  1833. dcPrcpCnt++;
  1834. }
  1835. }
  1836. //alert(dcPrcpInfo);
  1837. model.removenodeset("/root/send");
  1838. model.makeValue("/root/send/cond3" , sHeaderData+dcPrcpInfo );
  1839. //저장구분정보(saveFlagInfo)
  1840. model.makeValue ( "/root/save/saveflaginfo/savedataflag", "2" ); //저장자료구분 0:진단 및 처방, 1:진단, 2:처방, 4:임시저장
  1841. model.makeValue ( "/root/save/saveflaginfo/saveflag", "D"); //저장구분 O:외래, I:입원, E:응급, S:건진
  1842. model.makeValue ( "/root/save/saveflaginfo/prcpflag", "0"); //처방구분 0:의사처방, 2:간호, 3:지원부서, 5:Admission, 6:CP, 7:항암프로토콜, 8:임시처방
  1843. model.makeValue ( "/root/save/saveflaginfo/inptflag", "3" ); //입력구분 (11:건진처방, 12:LIS장비IF, 13:기타LIS, 14:병리, 15:EMR기록, 16:원무)
  1844. model.makeValue ( "/root/save/saveflaginfo/pamflag", "Y" ); //원무정보 처리구분 (Y/N) -> N일 경우 check하지 않음.
  1845. //20080116 진료팀에서 D/C는 체크하지 말것
  1846. model.makeValue ( "/root/save/saveflaginfo/diagflag", "N" ); //진단정보 처리구분 (Y/N) -> N일 경우 check하지 않음. ('Y'이면 진단없이 처방 저장이 안됨)
  1847. model.makeValue ( "/root/save/saveflaginfo/prcperrflag", "Y" ); //처방오류구분(Y/N) -> Y일 경우 의사처방과 동일하게 오류리스트를 반환, N이면 오류를 확인하지 않음
  1848. model.makeValue ( "/root/save/saveflaginfo/deptcd", getUserInfo("dutplcecd")); //부서코드
  1849. model.makeValue ( "/root/save/saveflaginfo/deptnm", getUserInfo("dutplcenm")); //부서명
  1850. model.makeValue ( "/root/save/saveflaginfo/userid", getUserInfo("userid")); //사용자ID
  1851. model.makeValue ( "/root/save/saveflaginfo/usernm", getUserInfo("usernm")); //사용자명
  1852. model.makeValue ( "/root/save/saveflaginfo/signyn", "N" ); //전자서명여부
  1853. var saveFlagInfoNodeList = model.instances(0).selectNodes( "/root/save/saveflaginfo" );
  1854. model.makeValue ( "/root/send/cond1", getNodeListCSV(saveFlagInfoNodeList));
  1855. //저장등록정보(saveRgstInfo)
  1856. model.makeValue ( "/root/save/savergstinfo/pid" , model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/pid") ); // 등록번호(원무Key)
  1857. model.makeValue ( "/root/save/savergstinfo/orddd" , "-"); // 진료일자(원무Key) - 입원일경우는 '-'
  1858. model.makeValue ( "/root/save/savergstinfo/indd" , model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/indd") ); // 입원일자(원무Key)
  1859. model.makeValue ( "/root/save/savergstinfo/cretno" , model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/cretno") ); // 생성번호(원무Key)
  1860. model.makeValue ( "/root/save/savergstinfo/orddeptcd" , model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/orddeptcd") ); // 진료과(원무)
  1861. model.makeValue ( "/root/save/savergstinfo/orddrid" , model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/orddrid") ); // 진료의ID(원무)
  1862. model.makeValue ( "/root/save/savergstinfo/instcd" , model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/instcd") ); // 기관코드
  1863. var saveRgstInfo = model.instances(0).selectNodes( "/root/save/savergstinfo" );
  1864. model.makeValue ( "/root/send/cond2", getNodeListCSV(saveRgstInfo));
  1865. // alert("dc test");
  1866. // return;
  1867. // D/C할 처방이 없을 경우 return처리
  1868. if( dcPrcpCnt > 0 ){
  1869. if(submit("TXMNP06013") == true ){
  1870. if(getNodesetCount("/root/temp/errlist") > 0){
  1871. var iNode = "/root/srcdata/list/patlist";
  1872. fShowModal("SPMNE00200");
  1873. }
  1874. if(pCnt < 1){
  1875. fSelectInddPatList("S");
  1876. }
  1877. }
  1878. }
  1879. }
  1880. /**
  1881. * @group :
  1882. * @ver : 2007.06.21
  1883. * @by : 양천덕
  1884. * @---------------------------------------------------
  1885. * @type : function
  1886. * @access : public
  1887. * @desc : 검사 처방 강제 Action 처리 부분(Acting상태값 처방 일괄 Acting)
  1888. * @param :
  1889. * @return :
  1890. * @---------------------------------------------------
  1891. */
  1892. function fSaveTestPrcpSave(){
  1893. //acting저장
  1894. /*
  1895. var datacheck2 = "N";
  1896. var tRow = grd_testlist.rows;
  1897. //마우스 드래그시 실시 검사 처방 여부 확인
  1898. for(i= 1 ; i <tRow; i++ ) {
  1899. if( model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "N" ){
  1900. var datacheck2 = "Y";
  1901. }
  1902. }
  1903. if(datacheck2 == "N" || grd_testlist.rows == "1"){
  1904. messageBox("미시행 검사 처방이 존재하지", "E007");
  1905. model.setFocus("button3");
  1906. return;
  1907. }else{
  1908. for(i=1 ; i < tRow ; i ++){
  1909. var chkprcp = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpnm");
  1910. if(model.getValue("/root/main/incplist/testinfo["+i+"]/viewstat") == "2" ){
  1911. if( model.getValue("/root/main/incplist/testinfo["+i+"]/testtp") == "Y"){
  1912. if( model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "Y"){
  1913. var chkprcp = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpnm");
  1914. messageBox(chkprcp+"는 이미 시행된 검사입니다.\n강제 Acting 할 수 없습니다.","I");
  1915. return;
  1916. }else if(model.getValue("/root/main/incplist/testinfo["+i+"]/execyn") == "퇴원후"){
  1917. messageBox(chkprcp+"는 퇴원 후 외래 처방입니다.\n강제 Acting 할 수 없습니다.","I");
  1918. return;
  1919. }
  1920. }else{
  1921. messageBox(chkprcp +" 은 혈액처방 입니다.\n강제 Acting 할 수 없습니다.","E");
  1922. return;
  1923. }
  1924. }
  1925. }
  1926. */
  1927. model.removenodeset("/root/send");
  1928. model.makeValue("/root/send/searchpat", fSetPatInfo() );
  1929. model.makeValue("/root/send/prcplist", grd_testlist.getUpdateDataAll("i"));
  1930. // alert("검사상태저장 acting test");
  1931. // return;
  1932. model.removeNodeset("/root/main/incplist");
  1933. submit("TXMNP06014");
  1934. }
  1935. /**
  1936. * @group :
  1937. * @ver : 2007.06.21
  1938. * @by : 양천덕
  1939. * @---------------------------------------------------
  1940. * @type : function
  1941. * @access : public
  1942. * @desc : 퇴실구분 선택 및 콤보 옵션 설정
  1943. * @param :
  1944. * @return :
  1945. * @---------------------------------------------------
  1946. */
  1947. function fSelectOutRmCnts(){
  1948. }
  1949. /**
  1950. * @group :
  1951. * @ver : 2008.01.17
  1952. * @by : 양천덕
  1953. * @---------------------------------------------------
  1954. * @type : function
  1955. * @access : public
  1956. * @desc : 환자 클릭시 상대값 재조회(퇴원예고, 예정병실)
  1957. * @param :
  1958. * @return :
  1959. * @---------------------------------------------------
  1960. */
  1961. function fResrchPatList(){
  1962. var sRow = grd_patlist.row;
  1963. var sSrchHeader = "pid▦indd▦cretno▦seqno▦angioflag▦roomcd▦dccparam▩";
  1964. var sSrchData = model.getValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/pid") +"▦"
  1965. + model.getValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/indd" ) +"▦"
  1966. + model.getValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/cretno")+"▦"
  1967. + model.getValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/seqno") +"▦"
  1968. + model.getValue("/root/main/condition/angioflag") +"▦"
  1969. + model.getValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/roomcd")+"▦"
  1970. + dccparam +"▩";
  1971. model.removenode("/root/send");
  1972. model.makeValue("/root/send/reqcond", sSrchHeader + sSrchData);
  1973. //dsc 퇴실시 환자 조회
  1974. if(submit("TRMNP06011") == true){
  1975. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/oprsrvdd" , model.getValue("/root/temp/patinforesrch/patinfo/oprsrvdd" )); // 수술예약일시"
  1976. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/patnm" , model.getValue("/root/temp/patinforesrch/patinfo/patnm" )); // 환자명"
  1977. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/sexage" , model.getValue("/root/temp/patinforesrch/patinfo/sexage" )); // 나이"
  1978. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/pid" , model.getValue("/root/temp/patinforesrch/patinfo/pid" )); // 등록번호"
  1979. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/ioflag" , model.getValue("/root/temp/patinforesrch/patinfo/ioflag" )); // IOFLAG"
  1980. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/indd" , model.getValue("/root/temp/patinforesrch/patinfo/indd" )); // 입원일자"
  1981. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/cretno" , model.getValue("/root/temp/patinforesrch/patinfo/cretno" )); // 생성번호"
  1982. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/seqno" , model.getValue("/root/temp/patinforesrch/patinfo/seqno" )); // 일련번호"
  1983. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/instcd" , model.getValue("/root/temp/patinforesrch/patinfo/instcd" )); // 기관코드"
  1984. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/dschdclrtyn" , model.getValue("/root/temp/patinforesrch/patinfo/dschdclrtyn" )); // 퇴원예고여부"
  1985. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/dschdclrdt" , model.getValue("/root/temp/patinforesrch/patinfo/dschdclrdt" )); // 퇴원예고일시"
  1986. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/orddeptcd" , model.getValue("/root/temp/patinforesrch/patinfo/orddeptcd" )); // 진료과"
  1987. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/orddrid" , model.getValue("/root/temp/patinforesrch/patinfo/orddrid" )); // 주치의"
  1988. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/roomcd" , model.getValue("/root/temp/patinforesrch/patinfo/roomcd" )); // 병실코드"
  1989. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/medispclid" , model.getValue("/root/temp/patinforesrch/patinfo/medispclid" )); // 전문의"
  1990. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/careinrmdd" , model.getValue("/root/temp/patinforesrch/patinfo/careinrmdd" )); // 간호입실일자"
  1991. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/careinrmtm" , model.getValue("/root/temp/patinforesrch/patinfo/careinrmtm" )); // 간호입실시간"
  1992. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/assgroom" , model.getValue("/root/temp/patinforesrch/patinfo/assgroom" )); // 예정병실"
  1993. model.makeValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/inrsrvacptdt" , model.getValue("/root/temp/patinforesrch/patinfo/inrsrvacptdt" )); // 입원결정일시"
  1994. }
  1995. if( model.getValue("/root/main/inddpatlist/inddpatinfo["+ sRow +"]/dschdclrtyn") == "Y" ){
  1996. fChangeFocusColor();//퇴원예고 환자 Cellstyle 변경 및 포커스 컬러 변경
  1997. //grd_patlist.cellstyle("background-color", sRow, 0, sRow, 4) = "#ffd3ff";
  1998. //grd_patlist.attribute("focuscolor") = "#00cc66";
  1999. }
  2000. }
  2001. /**
  2002. * @group :
  2003. * @ver : 2008.01.17
  2004. * @by : 양천덕
  2005. * @---------------------------------------------------
  2006. * @type : function
  2007. * @access : public
  2008. * @desc : 퇴원예고 환자 Cellstyle 변경 및 포커스 컬러 변경
  2009. * @param :
  2010. * @return :
  2011. * @---------------------------------------------------
  2012. */
  2013. function fChangeFocusColor(){
  2014. //var color = grd_patlist.cellstyle("background-color", grd_patlist.row, grd_patlist.col, grd_patlist.row, grd_patlist.col);
  2015. //if(color == "#ffd3ff"){
  2016. if(model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/dschdclrtyn") == "Y"){
  2017. grd_patlist.cellstyle("background-color", grd_patlist.row, 0, grd_patlist.row, 4) = "#ffd3ff"; //분홍색
  2018. //grd_patlist.attribute("focuscolor") = "#00cc66"; //초록색(20080417)
  2019. grd_patlist.refresh();
  2020. }
  2021. }
  2022. function fSelectPatListDBL(){
  2023. fSelectPatList();
  2024. if(btn_ingmv.selected == true){
  2025. if(grd_narcoticlist.rows != '1') {
  2026. btn_antimv.visible = true;
  2027. messageBox("미정리된 마약처방이 존재합니다.", "I");
  2028. }else{
  2029. btn_antimv.visible = false;
  2030. }
  2031. }
  2032. if(btn_antimv.selected == true){
  2033. if(grd_narcoticlist.rows == '1') {
  2034. btn_antimv.visible = false;
  2035. btn_ingmv.selected = true;
  2036. model.toggle("case2");
  2037. }
  2038. }
  2039. if(model.getValue("/root/temp/patinforesrch/bloodinfo/bloodcomment") !='') { //임시저장한 수혈기록 존재여부
  2040. button5.visible = true;
  2041. output12.visible = true;
  2042. } else {
  2043. button5.visible = false;
  2044. output12.visible = false;
  2045. }
  2046. }
  2047. /**
  2048. * @group :
  2049. * @ver : 2007.06.07
  2050. * @by : 양천덕
  2051. * @---------------------------------------------------------------------------------
  2052. * @type : function
  2053. * @access : public
  2054. * @desc : 환자 선택 검사/약,주사 처방조회
  2055. * @param :
  2056. * @return :
  2057. * @---------------------------------------------------------------------------------
  2058. */
  2059. function fSelectPatList(){
  2060. if(grd_patlist.row < 1) return;
  2061. fResrchPatList(); //환자 재조회
  2062. fSetParam(); //상단정보재설정----------- 확인 grace
  2063. fSelectInddPatList("S"); //검사/약,주사/혈액 처방 조회, DCC 미마감건수조회 추가_20090704
  2064. fInitSettingTop(); //상단 퇴실 조건 초기화
  2065. model.makeValue("/root/main/condition/pid",model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/pid"));
  2066. //퇴실일시 계산
  2067. var tRow = grd_testlist.rows;
  2068. var iRow = grd_inglist.rows;
  2069. var maxDate = "";
  2070. var minDate = "";
  2071. for(i = 1 ; i < tRow ; i++){
  2072. if(maxDate != ""){
  2073. if(maxDate < model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd") ){
  2074. maxDate = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd");
  2075. }
  2076. }else{
  2077. maxDate = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd");
  2078. }
  2079. if(minDate != ""){
  2080. if(minDate >= model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd") ){
  2081. minDate = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd");
  2082. }
  2083. }else {
  2084. minDate = model.getValue("/root/main/incplist/testinfo["+i+"]/prcpdd");
  2085. }
  2086. }
  2087. model.makeValue("/root/main/condition/outrmdd", getCurrentDate() );
  2088. model.makeValue("/root/main/condition/outrmtm", fTimeSetting() );
  2089. /*
  2090. output1.value = model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/pid")+" "
  2091. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/patnm")+" "
  2092. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/sexage"); // 환자정보
  2093. output2.value = model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/careinrmdd") +
  2094. model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/careinrmtm"); // 입실일시
  2095. output3.value = model.getValue("/root/main/condition/outrmdd")
  2096. + model.getValue("/root/main/condition/outrmtm"); // 퇴실일시
  2097. output4.value = fCalcChosOut(); // 재실시간
  2098. output5.value = model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/assgroom"); // 예정병실
  2099. */
  2100. var output1value = model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/pid")+" "
  2101. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/patnm")+" "
  2102. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/sexage"); // 환자정보
  2103. var output2value = model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/careinrmdd")
  2104. + model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/careinrmtm"); // 입실일시
  2105. var output3value = model.getValue("/root/main/condition/outrmdd")
  2106. + model.getValue("/root/main/condition/outrmtm"); // 퇴실일시
  2107. var output4value = fCalcChosOut(); // 재실시간
  2108. var output5value = model.getValue("/root/main/inddpatlist/inddpatinfo["+grd_patlist.row+"]/assgroom"); // 예정병실
  2109. model.makeValue("/root/main/condition/out1", output1value);
  2110. model.makeValue("/root/main/condition/out2", output2value);
  2111. model.makeValue("/root/main/condition/out3", output3value);
  2112. model.makeValue("/root/main/condition/out4", output4value);
  2113. model.makeValue("/root/main/condition/out5", output5value);
  2114. output1.refresh();
  2115. output2.refresh();
  2116. output3.refresh();
  2117. output4.refresh();
  2118. output5.refresh();
  2119. if(dccparam == "DCC"){
  2120. model.makeValue("/root/main/condition/outrmtp", "1"); // 퇴실구분 "귀가"로 fix
  2121. }
  2122. }
  2123. //=====================================================================================
  2124. // 아래는 약 D/C 시 투약기록에 반영및 투약기록 일자별 XSLT 생성하기(20080917) 김보성
  2125. //=====================================================================================
  2126. // 투약기록 통합기록을 위한 자료 추출질의문
  2127. // prcpddprcpno으로 n개의 iprc에 대한 exip단위의 정보를 추출한다.
  2128. function fnSignSaveCall(workflag, prcpddprcpno) {
  2129. var sPathSign = "/root/signinfo";
  2130. model.resetInstanceNode(sPathSign + "/reqsigncond");
  2131. var pGrd = grd_patlist;
  2132. var spid = model.getValue("/root/main/inddpatlist/inddpatinfo["+ pGrd.row + "]/pid"); //등록번호(필수)
  2133. var sinstcd = getUserInfo("dutplceinstcd"); //기관코드(사용X)
  2134. var sindd = model.getValue("/root/main/inddpatlist/inddpatinfo["+ pGrd.row +"]/indd"); //입원일자(필수)
  2135. var scretno = ""; //생성번호(사용X)
  2136. var sprcpdd = ""; //처방일자(PRN시 필수)
  2137. var sprcpno = ""; //처방번호(확인사항)
  2138. var sworkdd = ""; //투약일(일자그룹일때만 (필수))
  2139. var slistflag = workflag; //작업구분(필수)
  2140. var snursnm = getUserName(); //간호사명추가(필수)
  2141. var shngnm = model.getValue("/root/main/inddpatlist/inddpatinfo["+ pGrd.row +"]/patnm"); //환자명추가 (필수)
  2142. var smedrexecdd = ""; //화면에서저장할투약일자(사용X)
  2143. var smedrexectm = ""; //화면에서저장할투약시간(사용X)
  2144. var sprcpddprcpno = prcpddprcpno; //n개의 iprc
  2145. model.makeValue(sPathSign + "/reqsigncond/pid" ,spid ); //desc="등록번호"
  2146. model.makeValue(sPathSign + "/reqsigncond/instcd" ,sinstcd ); //desc="기관코드"
  2147. model.makeValue(sPathSign + "/reqsigncond/indd" ,sindd ); //desc="입원일자"
  2148. model.makeValue(sPathSign + "/reqsigncond/cretno" ,scretno ); //desc="생성번호"
  2149. model.makeValue(sPathSign + "/reqsigncond/prcpdd" ,sprcpdd ); //desc="처방일자"
  2150. model.makeValue(sPathSign + "/reqsigncond/prcpno" ,sprcpno ); //desc="처방번호"
  2151. model.makeValue(sPathSign + "/reqsigncond/workdd" ,sworkdd ); //desc="투약일"
  2152. model.makeValue(sPathSign + "/reqsigncond/listflag" ,slistflag ); //desc="작업구분"
  2153. model.makeValue(sPathSign + "/reqsigncond/nursnm" ,snursnm ); //desc="간호사명추가"
  2154. model.makeValue(sPathSign + "/reqsigncond/hngnm" ,shngnm ); //desc="환자명추가"
  2155. model.makeValue(sPathSign + "/reqsigncond/medrexecdd" ,smedrexecdd); //desc="화면에서저장할투약일자"
  2156. model.makeValue(sPathSign + "/reqsigncond/medrexectm" ,smedrexectm); //desc="화면에서저장할투약시간"
  2157. model.makeValue(sPathSign + "/reqsigncond/prcpddprcpno" ,sprcpddprcpno); //desc=""
  2158. var sPathSign = "/root/signinfo";
  2159. model.removenode(sPathSign + "/signsave/signdata");
  2160. submit("TRMNR00608");
  2161. }
  2162. /**
  2163. * @group :
  2164. * @ver : 2008.08.31
  2165. * @by : 김보성
  2166. * @---------------------------------------------------
  2167. * @type : function
  2168. * @access : public
  2169. * @desc : 투약기록 관련 인증저장(interface제공한 web에서 사용)(iprc단위 1개 처리용)
  2170. * : 따라서 여러개의 iprc이면 n번 호출해야한다.
  2171. * @param :
  2172. * @return :
  2173. * @---------------------------------------------------
  2174. */
  2175. function fnSignSaveWork() {
  2176. var sSignPath = "/root/signinfo/signsave/signdata";
  2177. var sSignPathCount = getNodesetCount(sSignPath);
  2178. var sPathSignSave = "/root/signinfo/signsave/signdata";
  2179. if ( sSignPathCount <= 0 ) {
  2180. messageBox("자료가 존재하지 않습니다. ","E999");
  2181. return false;
  2182. }
  2183. Sign.certreload = true ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리(20080921)
  2184. model.removenode("/root/send/savedata");
  2185. for(var j = 1; j <= getNodesetCount(sSignPath); j++){
  2186. //alert("loop:"+j);
  2187. sSignRow= j; //전역변수(프로그램내)
  2188. if(Sign.signprocess() == false){//인증저장 데이터 생성fMake_SignData 호출
  2189. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 안뜨도록 처리(20080921)
  2190. return false;
  2191. }
  2192. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 안뜨도록 처리(20080921)
  2193. model.makeValue(sPathSignSave + "[" + j + "]/recdd", getCurrentDate()); //실제기록이 이루어진 기록일자
  2194. model.makeValue(sPathSignSave + "[" + j + "]/rectm", getCurrentTime()); //실제기록이 이루어진 기록시간
  2195. model.makeValue(sPathSignSave + "[" + j + "]/recsaveflag", "Y"); //전자서명인적정보변경여부
  2196. model.makeValue(sPathSignSave + "[" + j + "]/signflag", "02"); //서명자료구분(02:간호)
  2197. model.makeValue(sPathSignSave + "[" + j + "]/signgenrflag", "D"); //외래/입원구분(20080922)
  2198. model.makeValue(sPathSignSave + "[" + j + "]/formcd", "0000002476"); //투약기록 서식번호
  2199. model.makeValue(sPathSignSave + "[" + j + "]/signbfcnts", Sign.signedInfos[1]); //인증할 데이터 정보(미기록 노드 제거된 정보)
  2200. model.makeValue(sPathSignSave + "[" + j + "]/signaftcnts", Sign.signedInfos[2]); //공인인증 처리후 데이터
  2201. model.makeValue(sPathSignSave + "[" + j + "]/signflagyn", "Y"); //비공식적으로 인증되지않도록 제어할수 있는기능
  2202. //--------------------------(20080921)
  2203. //건별인증은 통합기록조회에서 보이지 않고 일자별을 보이기 위해서
  2204. //건별인증은 dispyn ='N'
  2205. //하단의 일자별인 경우만 보임
  2206. model.makeValue(sPathSignSave + "[" + j + "]/dispyn", "N");
  2207. //--------------------------(20080921)
  2208. }
  2209. return true;
  2210. }
  2211. //인증정보 말기
  2212. function fMake_SignData(){
  2213. //alert("fMake_SignData---------시작");
  2214. /*
  2215. <signinfo>
  2216. <signdata>
  2217. <pid>29953</pid>
  2218. <hngnm>T입0820</hngnm>
  2219. <prcpdd>20080821</prcpdd>
  2220. <execdd>20080821</execdd>
  2221. <prcpkindnm/>
  2222. <prcpmixno/>
  2223. <prcpcd>DSSL500</prcpcd>
  2224. <prcpnm>Disal tab. 500mg (Salsalate)</prcpnm>
  2225. <prcpvolnm>1500mg</prcpvolnm>
  2226. <prcpqtynm>3T</prcpqtynm>
  2227. <abbrnm>PO</abbrnm>
  2228. <exectm>130000</exectm>
  2229. <nursnm>김보성</nursnm>
  2230. <execcarestatnm>정상투약</execcarestatnm>
  2231. <carecfactnm> </carecfactnm>
  2232. <orddrnm>김만수</orddrnm>
  2233. </signdata>
  2234. </signinfo>
  2235. */
  2236. var ssigndruglist = "/root/signinfo/signsave/signdata";
  2237. var spid = model.getValue(ssigndruglist + "[" + sSignRow + "]/pid");
  2238. var shngnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/hngnm");
  2239. var sprcpdd = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpdd");
  2240. var sexecdd = model.getValue(ssigndruglist + "[" + sSignRow + "]/execdd");
  2241. /*
  2242. ,CASE WHEN a.careprnexecflag = 'P' THEN 'PRN' ELSE '' END || ' ' ||
  2243. CASE WHEN a.anticncrprtlno <> 0 THEN '항암' ELSE '' END || ' ' ||
  2244. CASE WHEN a.dccountyn = 'Y' AND a.selfdrugflag = 'Y' THEN 'self D/C'
  2245. WHEN a.dccountyn = 'Y' then 'D/C'
  2246. WHEN a.selfdrugflag = 'Y' then 'self'
  2247. END prcpkindnm
  2248. //처방종류명 (다른업무에서 투약기록관련인증정보를 생성시 어려운 항목
  2249. */
  2250. var sprcpkindnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpkindnm");
  2251. var sprcpmixno = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpmixno");
  2252. var sprcpcd = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpcd");
  2253. var sprcpnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpnm");
  2254. var sprcpvolnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpvolnm");
  2255. var sprcpqtynm = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpqtynm");
  2256. var sabbrnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/abbrnm");
  2257. var sexectm = model.getValue(ssigndruglist + "[" + sSignRow + "]/exectm");
  2258. var snursnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/nursnm");
  2259. var sexeccarestatnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/execcarestatnm");
  2260. var scarecfactnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/carecfactnm");
  2261. var sorddrnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/orddrnm");
  2262. model.resetInstanceNode("/root/send/signinfo/signdata");
  2263. model.makeValue("/root/send/signinfo/signdata/pid", spid );
  2264. model.makeValue("/root/send/signinfo/signdata/hngnm", shngnm );
  2265. model.makeValue("/root/send/signinfo/signdata/prcpdd", sprcpdd ); //처방일자
  2266. if(sexecdd == "00000000"){ //투약일자
  2267. model.makeValue("/root/send/signinfo/signdata/execdd", "");
  2268. }else{
  2269. model.makeValue("/root/send/signinfo/signdata/execdd", sexecdd);
  2270. }
  2271. model.makeValue("/root/send/signinfo/signdata/prcpkindnm", sprcpkindnm );
  2272. model.makeValue("/root/send/signinfo/signdata/prcpmixno", sprcpmixno ); //MIXNO
  2273. model.makeValue("/root/send/signinfo/signdata/prcpcd", sprcpcd ); //처방코드
  2274. model.makeValue("/root/send/signinfo/signdata/prcpnm", sprcpnm ); //처방명
  2275. model.makeValue("/root/send/signinfo/signdata/prcpvolnm", sprcpvolnm ); //용량단위명칭(용량+용량단위명칭)
  2276. model.makeValue("/root/send/signinfo/signdata/prcpqtynm", sprcpqtynm ); //수량단위명칭(수량+수량단위명칭)
  2277. //투여방법약어명(다른업무에서 투약기록관련인증정보를 생성시 어려운 항목)
  2278. model.makeValue("/root/send/signinfo/signdata/abbrnm", sabbrnm );
  2279. if(sexectm == "000000"){ //투약시간
  2280. model.makeValue("/root/send/signinfo/signdata/exectm", "");
  2281. }else{
  2282. model.makeValue("/root/send/signinfo/signdata/exectm", sexectm);
  2283. }
  2284. model.makeValue("/root/send/signinfo/signdata/nursnm", snursnm); //간호사명칭
  2285. if(sexeccarestatnm == "") sexeccarestatnm = "N";
  2286. //미확인,정상투약,투약X-반환가능,투약X-반환불가,퇴원당일남은약
  2287. //(다른업무에서 투약기록관련인증정보를 생성시 정상투약,)
  2288. model.makeValue("/root/send/signinfo/signdata/execcarestatnm", sexeccarestatnm);
  2289. //간호사REMARK CODE에 대한 REMARK 명칭((다른업무에서 투약기록관련인증정보를 생성시 공백)
  2290. model.makeValue("/root/send/signinfo/signdata/carecfactnm", scarecfactnm);
  2291. //진료의명(다른업무에서 투약기록관련인증정보를 생성시 어려운 항목)
  2292. model.makeValue("/root/send/signinfo/signdata/orddrnm", sorddrnm);
  2293. Sign.addnode("/root/send/signinfo/signdata");
  2294. //alert("fMake_SignData---------종료");
  2295. //Sign.signedInfos[1] 는 없음
  2296. //alert("fmake_signdata"+ Sign.signedInfos[1] );
  2297. }
  2298. //일자별 XSLT 생성작업
  2299. function fnWorkddSign(signDates) {
  2300. //-----------------------------------------------)
  2301. // 투약기록을 일자별로 XLST를 만들기 위해서
  2302. //-----------------------------------------------
  2303. var sPathSign = "/root/signinfo";
  2304. var pGrd = grd_patlist;
  2305. var signDate = "";
  2306. //alert(signDates.length);
  2307. for (var i=0;i<signDates.length;i++) {
  2308. signDate = "" + signDates[i];
  2309. //alert("1:" + signDate);
  2310. if ( signDate != "") {
  2311. model.resetInstanceNode(sPathSign + "/reqsigncond");
  2312. signDate = signDate.replace("-","");
  2313. //alert("2:" + signDate);
  2314. var spid = model.getValue("/root/main/inddpatlist/inddpatinfo[" + pGrd.row + "]/pid"); //등록번호 (필수)
  2315. var sinstcd = "";//model.getValue("/root/main/inddpatlist/inddpatinfo/instcd"); //기관코드 (사용X)
  2316. var sindd = model.getValue("/root/main/inddpatlist/inddpatinfo[" + pGrd.row + "]/indd"); //입원일자 (필수)
  2317. var scretno = model.getValue("/root/main/inddpatlist/inddpatinfo[" + pGrd.row + "]/cretno");//생성번호 (사용X)
  2318. var sprcpdd = ""; //처방일자 (PRN시 필수)
  2319. var sprcpno = ""; //처방번호 (확인사항)
  2320. var sworkdd = signDate; //model.getValue("/root/main/cond/orddd"); //투약일(일자그룹일때만 (필수)
  2321. var slistflag = "90"; //작업구분 (필수)
  2322. var snursnm = getUserName(); //간호사명추가 (필수)
  2323. var shngnm = model.getValue("/root/main/inddpatlist/inddpatinfo[" + pGrd.row + "]/patnm") //환자명추가 (필수)
  2324. var smedrexecdd = ""; //화면에서저장할투약일자(사용X)
  2325. var smedrexectm = ""; //화면에서저장할투약시간(사용X)
  2326. model.makeValue(sPathSign + "/reqsigncond/pid" ,spid ); //desc="등록번호"
  2327. model.makeValue(sPathSign + "/reqsigncond/instcd" ,sinstcd ); //desc="기관코드"
  2328. model.makeValue(sPathSign + "/reqsigncond/indd" ,sindd ); //desc="입원일자"
  2329. model.makeValue(sPathSign + "/reqsigncond/cretno" ,scretno ); //desc="생성번호"
  2330. model.makeValue(sPathSign + "/reqsigncond/prcpdd" ,sprcpdd ); //desc="처방일자"
  2331. model.makeValue(sPathSign + "/reqsigncond/prcpno" ,sprcpno ); //desc="처방번호"
  2332. model.makeValue(sPathSign + "/reqsigncond/workdd" ,sworkdd ); //desc="투약일"
  2333. model.makeValue(sPathSign + "/reqsigncond/listflag" ,slistflag ); //desc="작업구분"
  2334. model.makeValue(sPathSign + "/reqsigncond/nursnm" ,snursnm ); //desc="간호사명추가"
  2335. model.makeValue(sPathSign + "/reqsigncond/hngnm" ,shngnm ); //desc="환자명추가"
  2336. model.makeValue(sPathSign + "/reqsigncond/medrexecdd" ,smedrexecdd); //desc="화면에서저장할투약일자"
  2337. model.makeValue(sPathSign + "/reqsigncond/medrexectm" ,smedrexectm); //desc="화면에서저장할투약시간"
  2338. var pFlag = "Drug"; //저장구분 (Drug : 투약기록)
  2339. var pNode1 = ""; //조회할 조건 PATH(의미없음)
  2340. var pNode2 = "/root/signinfo/signdruginfo/signdruglist"; //Return 리스트 PATH
  2341. //alert("signDate:" + i + "/" + signDate);
  2342. //임시로 막음(test)
  2343. fCare_SignNode(pFlag, pNode1, pNode2,spid,sindd,scretno,"D"); //-----(20080917)수정
  2344. //fCare_SignNode(pFlag, pNode1, pNode2, pPid, pIndd, pCretno, pIoflag){
  2345. }
  2346. }
  2347. }
  2348. //일자별 인증정보를 묶을 일자를 찾는다
  2349. //넣어야 할지는 판단한다.
  2350. function signdayFind(signDates,findDate) {
  2351. var sreturn = false;
  2352. if (findDate == "00000000" || findDate == "") {
  2353. } else {
  2354. //alert("signDates.length:"+ signDates.length);
  2355. for (var i=0;i<signDates.length;i++) {
  2356. //alert("비교:" + signDates[i] + "/" + findDate);
  2357. sreturn = true;
  2358. if ( signDates[i] == findDate) {
  2359. sreturn = false;
  2360. break;
  2361. }
  2362. }
  2363. }
  2364. return sreturn;
  2365. }
  2366. // 20110920 김지선 - 전동기록지 연결
  2367. function fTransferSummary(){
  2368. // 환자 선택 여부 체크
  2369. if(model.getValue("/root/main/condition/pid") == "" ) {
  2370. messageBox("환자가 선택되지", "E007");
  2371. model.setFocus("grd_patlist");
  2372. return;
  2373. }
  2374. var pid = grd_patlist.valueMatrix(grd_patlist.row, grd_patlist.colRef("pid"));
  2375. var indd = grd_patlist.valueMatrix(grd_patlist.row, grd_patlist.colRef("indd"));
  2376. var cretno = grd_patlist.valueMatrix(grd_patlist.row, grd_patlist.colRef("cretno"));
  2377. var wardcd = grd_patlist.valueMatrix(grd_patlist.row, grd_patlist.colRef("wardcd"));
  2378. if(wardcd == null || wardcd == "") {
  2379. messageBox("입원승인이 나지 않아 전동기록을 할수 없습니다.", "E");
  2380. return;
  2381. } else {
  2382. model.makeValue("/root/send/reqdata/pid", pid);
  2383. model.makeValue("/root/send/reqdata/indd", indd);
  2384. model.makeValue("/root/send/reqdata/cretno", cretno);
  2385. model.makeValue("/root/send/reqdata/wardcd", wardcd);
  2386. model.makeValue("/root/send/reqdata/flag", "Y");
  2387. submit("TRMNB00210");
  2388. if(grd_translist.rows > grd_translist.fixedRows) {
  2389. setParameter("SMMNW01301_PID" , grd_translist.valueMatrix(1,grd_translist.colRef("pid")) );
  2390. setParameter("SMMNW01301_INDD" , grd_translist.valueMatrix(1,grd_translist.colRef("indd")) );
  2391. setParameter("SMMNW01301_CRETNO" , grd_translist.valueMatrix(1,grd_translist.colRef("cretno"))) ;
  2392. setParameter("SMMNW01301_APPDD" , grd_translist.valueMatrix(1,grd_translist.colRef("appdd")) );
  2393. setParameter("SMMNW01301_APPTM" , grd_translist.valueMatrix(1,grd_translist.colRef("apptm")) );
  2394. setParameter("SMMNW01301_INSTCD" , grd_translist.valueMatrix(1,grd_translist.colRef("instcd"))) ;
  2395. setParameter("SMMNW01301_SEQNO" , grd_translist.valueMatrix(1,grd_translist.colRef("seqno"))) ;
  2396. open("SMMNW01301");
  2397. } else {
  2398. messageBoX("입원승인이 나지 않아 전동기록을 할수 없습니다.");
  2399. return;
  2400. }
  2401. }
  2402. }
  2403. // 퇴실시 선택진료 확인
  2404. function fChkSpecOrdPrt() {
  2405. model.removeNode("/root/main/paminfo");
  2406. model.makeNode("/root/main/paminfo");
  2407. var node = getGlobalVariable("paminfo");
  2408. setCSVToNode("/root/main/paminfo", node);
  2409. var s_pid = model.getValue("/root/main/paminfo/list/pid");;
  2410. var s_ordtype = 'I';
  2411. var s_orddd = model.getValue("/root/main/paminfo/list/indd");
  2412. var s_orddeptcd = model.getValue("/root/main/paminfo/list/orddeptcd");
  2413. var s_orddrid = model.getValue("/root/main/paminfo/list/medispclid");
  2414. var s_fromdd = model.getValue("/root/main/paminfo/list/indd");
  2415. var s_hngnm = model.getValue("/root/main/paminfo/list/hngnm");
  2416. var s_rrgstno1 = model.getValue("/root/main/paminfo/list/rrgstno1");
  2417. var s_rrgstno2 = model.getValue("/root/main/paminfo/list/rrgstno2");
  2418. var sOrddeptcdMsg = model.getValue("/root/main/paminfo/list/orddeptnm");
  2419. var sOrddridMsg = model.getValue("/root/main/paminfo/list/orddrnm");
  2420. model.makeValue("/root/send/data26/pid", s_pid); // pid
  2421. model.makeValue("/root/send/data26/ordtype", "I"); // ordtype
  2422. model.makeValue("/root/send/data26/indd", s_orddd);// orddd
  2423. model.makeValue("/root/send/data26/orddd", s_orddd);// orddd
  2424. model.makeValue("/root/send/data26/orddeptcd", s_orddeptcd); // orddeptcd
  2425. model.makeValue("/root/send/data26/medispclid", s_orddrid); // orddrid
  2426. model.makeValue("/root/send/data26/orddrid", s_orddrid); // orddrid
  2427. // submit("TRPMI00406");
  2428. //
  2429. // if (model.getValue("/root/tempchk/specapp/rgstyn") == "N") {
  2430. //
  2431. // var sMsg = "[" + sOrddeptcdMsg + "]" + "[" + sOrddridMsg + "]";
  2432. //
  2433. // if( messageBox(sMsg + " 선택진료 등록이 되어 있지 않습니다. 등록하시겠습니까?", "Q999", "") == 6 ){
  2434. // fCallSpecPopUp(s_pid,s_ordtype,s_orddd,s_orddeptcd,s_orddrid,s_fromdd,s_hngnm,s_rrgstno1,s_rrgstno2);
  2435. // }
  2436. // } else {
  2437. //
  2438. submit("TRMNW01208");
  2439. var existyn = model.getValue("/root/temp/specordprtinfo/specordprtlist/existyn");
  2440. if(existyn == "N") {
  2441. //messageBox("출력된 메세지없음", "I");
  2442. } else {
  2443. messageBox("선택진료 동의 확인이 되지않았습니다.", "I");
  2444. setParameter("SMPMC06503_PARM_PID", s_pid);
  2445. modal("SMPMC06503");
  2446. //fCallSpecPopUp(s_pid,s_ordtype,s_orddd,s_orddeptcd,s_orddrid,s_fromdd,s_hngnm,s_rrgstno1,s_rrgstno2);
  2447. }
  2448. // }
  2449. }
  2450. //=====================================================================================