SMMNI02010.js 114 KB

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