SMMNW01200.js 86 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860
  1. /*
  2. 퇴원정리 및 확정화면 (SMMNW01200.xrw - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. //** 전역변수 **//
  7. var iRow = -1;
  8. var iCol = -1;
  9. /* 특수주사실 사용 안함. 주석처리_20090416(ByJA)
  10. var chemodeptcd = "3120400000"; // 특수주사실(외래CHEMO)부서코드
  11. */
  12. var chkPath = "/root/main/checkcntinfo/checkcntlist";
  13. var dschPath = "/root/main/dschpatinfo/dschpatlist" ;
  14. var babyicudeptcd, babydeptcd, dietnprcpcd, alcoholdeptcd, daywardcd, erwardcd; //alcoholdeptcd_20090529_SMY추가
  15. var uijungbuinstcd, sunggainstcd; // 병원별 기관코드_20090716_ByJA
  16. var starttmcd, endtmcd; // 병원별 업무시간코드_20100118_by박영우
  17. /**
  18. * @group :
  19. * @ver : 2007.08.30
  20. * @by : 김진아
  21. * @---------------------------------------------------
  22. * @type : function
  23. * @access : public
  24. * @desc : 화면 초기설정
  25. * @param :
  26. * @return :
  27. * @---------------------------------------------------
  28. */
  29. function fInitSetup(){
  30. //** 컨트롤 초기화 **/
  31. group1.disabled = true;
  32. btn_dschnurY.disabled = true;
  33. boolafter18.disabled = true;
  34. btn_dschnurN.disabled = true;
  35. btn_dschdrN.disabled = true;
  36. var instcd = getUserInfo("dutplceinstcd");
  37. var standard_yn = "orduseyn";
  38. var ord_deptflag = "W";
  39. var rslt_ref = "/root/init/ward";
  40. // zbcfGetDeptCodeList(instcd, standard_yn, ord_deptflag, rslt_ref, "depthngnm", "asc" );
  41. submit("TRMNW01207"); // 병동리스트 조회
  42. //** 그리드 초기화 **//
  43. model.removeNodeset("/root/main/dschpatinfo"); // 퇴원예정환자리스트 그리드 초기화
  44. model.removeNodeset("/root/main/outrsrvinfo"); // 외래예약리스트 그리드 초기화
  45. model.removeNodeset("/root/main/tnsprcpinfo"); // 혈액처방리스트 그리드 초기화
  46. model.removeNodeset("/root/main/narcprcpinfo"); // 마약처방리스트 그리드 초기화
  47. model.removeNodeset("/root/temp/checkcntinfo");
  48. model.makeValue("/root/main/temp/sDietFlag", "");
  49. if (instcd =='012'){
  50. cap_time.text = "17:00 이후의 퇴원수납은 응급지원 UNIT에서만 합니다.";
  51. } else if (instcd == '017') { // 성빈센트 요구사항 by 박영우 20100113
  52. cap_time.text = "토요일 13:00 이후/ 평일 17:00 이후/ 휴일 - 응급의료센터 원무팀에서 퇴원수납합니다.";
  53. caption39.text = "18시 이후퇴원체크는 18시 이후의 늦은 퇴원이 예정된 경우에만 클릭합니다.";
  54. cap_vindsch.visible=true;
  55. } else {
  56. cap_time.text = "토요일 : 14:00 이후 / 기타 : 17:00 이후 - 응급실원무과 확인";
  57. }
  58. //** 상단환자 화면설정 **//
  59. var node = getGlobalVariable("paminfo");
  60. setCSVToNode("/root/main/paminfo", node);
  61. if(model.getValue("/root/main/paminfo/list/wardcd") != ""){
  62. model.makeValue("/root/main/cond/wardcd", model.getValue("/root/main/paminfo/list/wardcd"));
  63. } else {
  64. model.makeValue("/root/main/cond/wardcd", getUserInfo("dutplcecd"));
  65. }
  66. model.makeValue("/root/main/cond/dschdclrdt", getCurrentDate()); // 퇴원예정일 설정(현재일자)
  67. cmb_wardcd.refresh();
  68. ipt_dschdclrdt.refresh();
  69. /* 특수주사실 사용 안함. 주석처리_20090416(ByJA)
  70. if(model.getValue("/root/main/cond/wardcd")== chemodeptcd) { // 특수주사실(외래CHEMO)인 경우
  71. group4.visible = true;
  72. }else {
  73. group4.visible = false;
  74. }
  75. */
  76. select_dschpatlist("P"); // 퇴원예정환자 리스트조회
  77. fSrchDietEndInfo(); // 식이별 1차마감시간 조회
  78. // 간호하드코딩 테이블 조회_20090416(ByJA)
  79. var pCode = "'052', '053', '062', '087', '077', '176', 'W01', 'W04', 'W11','D4'"; // 조회할 CdGrupID 코드정보
  80. var pDate = getCurrentDate(); // 조회기준일자
  81. fGetNursHardCdInfo(pCode, pDate);
  82. for(var i=1; i<=getNodesetCount("/root/code/codeinfo/codelist"); i++){
  83. switch (model.getValue("/root/code/codeinfo/codelist["+i+"]/cdgrupid")){
  84. case "052": // 신생아중환자실
  85. babyicudeptcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  86. break;
  87. case "053": // 신생아실
  88. babydeptcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  89. break;
  90. case "062": // 개인금식처방코드
  91. dietnprcpcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  92. break;
  93. case "087": // 알코올의존치료센터부서코드
  94. alcoholdeptcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  95. break;
  96. case "077": // 병원별 기관코드
  97. switch(model.getValue("/root/code/codeinfo/codelist["+i+"]/supcdid")){
  98. case "02": // 의정부성모병원 기관코드
  99. uijungbuinstcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  100. break;
  101. case "03": // 부천성가병원 기관코드
  102. sunggainstcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  103. break;
  104. }
  105. break;
  106. case "176": //병원별 업무시간코드 by 박영우
  107. switch(model.getValue("/root/code/codeinfo/codelist["+i+"]/supcdid")){
  108. case "01": //시작시간코드
  109. starttmcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid") + "00";
  110. break;
  111. case "02": //종료시간코드
  112. endtmcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid") + "00";
  113. break;
  114. }
  115. break;
  116. case "W01": //일일입원실 - 퇴원확정일시 지정할 수 있도록 함
  117. daywardcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  118. break;
  119. case "W11": //508응급병동 - 약 처방 D/C 가능하도록 함
  120. erwardcd = model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid");
  121. break;
  122. }
  123. }
  124. var wardcd = model.getValue("/root/main/cond/wardcd");
  125. if (wardcd == daywardcd) {
  126. fVisibleNotidt('Y');
  127. } else {
  128. fVisibleNotidt('N');
  129. }
  130. zbcfGetCodeList( new Array("M0011"), new Array("/root/init/M0011list") );
  131. }
  132. /**
  133. * @group :
  134. * @ver : 2007.09.03
  135. * @by : 김진아
  136. * @---------------------------------------------------
  137. * @type : function
  138. * @access : public
  139. * @desc : 식이별 1차마감시간 조회
  140. * @param :
  141. * @return :
  142. * @---------------------------------------------------
  143. */
  144. function fSrchDietEndInfo(){
  145. model.removenode("/root/send");
  146. model.makeNode ("/root/send");
  147. model.makeValue ("/root/send/reqdata/dschdclrdt" , model.getValue("/root/main/cond/dschdclrdt")); // 퇴원예정일
  148. model.makeValue ("/root/send/reqdata/dschdclrtodt" , model.getValue("/root/main/cond/dschdclrdt")+"235959");
  149. model.makeValue ("/root/send/reqdata/dschdclrfromdt", model.getValue("/root/main/cond/dschdclrdt")+"000000");
  150. model.removeNodeset("/root/main/dietendinfo");
  151. submit("TRMNW01205");
  152. }
  153. /**
  154. * @group :
  155. * @ver : 2007.07.13 / 수정일자 : 2007.08.30
  156. * @by : 정경화 / 수정자 : 김진아
  157. * @-------------------------------------------------------------------------------
  158. * @type : function
  159. * @access : public
  160. * @desc : 퇴원예정환자 리스트조회
  161. * @param : sSrchFlag 조회구분 ("P":퇴원예정일자별 / "A":당일이후퇴원예정자 모두)
  162. * @return :
  163. * @-------------------------------------------------------------------------------
  164. */
  165. function select_dschpatlist(sSrchFlag){
  166. //** 컨트롤 초기화 **//
  167. fInit();
  168. group1.disabled = true;
  169. btn_dschnurY.disabled = true;
  170. boolafter18.disabled = true;
  171. btn_dschnurN.disabled = true;
  172. btn_dschdrN.disabled = true;
  173. model.removeNodeset("/root/main/dschpatinfo"); // 퇴원예정환자리스트 그리드 초기화
  174. model.removeNodeset("/root/main/outrsrvinfo"); // 외래예약리스트 그리드 초기화
  175. model.removeNodeset("/root/main/tnsprcpinfo" ); // 혈액처방리스트 그리드 초기화
  176. model.removeNodeset("/root/main/narcprcpinfo"); // 마약처방리스트 그리드 초기화
  177. model.removeNodeset("/root/main/checkcntinfo/bloodinfo/bloodcomment"); // 수혈기록 필드 초기화
  178. model.removeNodeset("/root/main/descpatdeinfo");
  179. model.removenode("/root/send");
  180. model.makeNode ("/root/send");
  181. model.makeValue ("/root/send/reqdata/wardcd" , model.getValue("/root/main/cond/wardcd")); // 병동
  182. model.makeValue ("/root/send/reqdata/dschdclrdt" , model.getValue("/root/main/cond/dschdclrdt")); // 퇴원예정일
  183. model.makeValue ("/root/send/reqdata/dschdclrtodt" , model.getValue("/root/main/cond/dschdclrdt")+"235959");
  184. model.makeValue ("/root/send/reqdata/dschdclrfromdt", model.getValue("/root/main/cond/dschdclrdt")+"000000");
  185. model.makeValue ("/root/send/reqdata/srchflag" , sSrchFlag); // 조회구분
  186. model.makeValue ("/root/main/cond/notidt", getCurrentDate());
  187. model.makeValue ("/root/main/cond/notitm", getCurrentTime().substr(0, 4));
  188. submit("TRMNW01201");
  189. grd_inppatlist.allstyle("all", "background-color") = "white"; // 퇴원예정자리스트 그리드 색상 초기화
  190. model.makeValue("/root/main/descpatdeinfo/nurseid", getUserName()); // 로그인한 간호사명 설정
  191. //var isnendyn = model.getValue("/root/main/descpatdeinfo/isnendyn"); // 병동마감여부확인 비마감여부 (Y : 마감되지 않음. N : 마감됨)
  192. /* 특수주사실 사용 안함. 주석처리_20090416(ByJA)
  193. if(model.getValue("/root/main/cond/wardcd")!="3120400000") { // 특수주사실(외래CHEMO)인 경우 마감여부체크 제외_20080826김보성대리님요청으로 추가_특수주사실퇴실정리개발 후 삭제해야 함.
  194. if(isnendyn == "Y"){
  195. messageBox("["+ cmb_wardcd.label +"] 미마감 내역이 존재합니다.", "E", "마감처리 후 다시 시도하십시오!");
  196. modal("SPMNR05400","1","1","1", "SPMNR05400"); // 병동간호마감화면 팝업
  197. }
  198. }
  199. */
  200. model.refresh();
  201. }
  202. /**
  203. * @group :
  204. * @ver : 2007.07.13 / 수정일자 : 2007.08.30
  205. * @by : 정경화 / 수정자 : 김진아
  206. * @-----------------------------------------------------------------------------------------------
  207. * @type : function
  208. * @access : public
  209. * @desc : 환자상세정보조회
  210. * @param : sActFlag : 실시입원처방 액팅 처리 프로시저 호출 여부("Y"/"N")
  211. * (퇴원예정자리스트 더블 클릭 시에만 해당_20080617기준)
  212. * @return :
  213. * @-----------------------------------------------------------------------------------------------
  214. */
  215. function select_dschpatinfo(sActFlag){
  216. if(iRow < 0 || iRow == ""){
  217. iRow = grd_inppatlist.row;
  218. iCol = grd_inppatlist.col;
  219. }
  220. var wardcd = model.getValue(dschPath + "[" + iRow + "]/wardcd");
  221. if (wardcd == daywardcd) {
  222. fVisibleNotidt('Y');
  223. } else {
  224. fVisibleNotidt('N');
  225. }
  226. var sDschDclrdt = model.getValue(dschPath + "[" + iRow + "]/dschdclrdt"); // 환자별 퇴원예정일
  227. var sDethdt = model.getValue(dschPath + "[" + iRow + "]/dethdt"); // 환자별 사망일
  228. var dietc = 0;
  229. for(var i=1; i<=getNodesetCount("/root/code/codeinfo/codelist"); i++){
  230. if(model.getValue("/root/code/codeinfo/codelist["+i+"]/cdgrupid") == "D4"){ //식이안함 가능한 병동
  231. if(model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid") == wardcd){
  232. dietc++;
  233. }
  234. }
  235. }
  236. //** 퇴원예고일자가 당일여부에 따른 컨트롤 활성화 **//
  237. //* 당일이 아닌 경우 && 20091201 김홍점 추가 사망환자인경우 사망일시로 퇴원확정 되므로 익일이어도 사망등록이 된경우 퇴원확정가능
  238. if( (isNull(sDethdt) || sDethdt == "-" ) && sDschDclrdt != getCurrentDate()) {
  239. group1.disabled = true;
  240. //group4.disabled = true; // 외래CHEMO그룹
  241. btn_dschnurY.disabled = true; // 간호사퇴원확정 버튼
  242. boolafter18.disabled = true; // 병실료추가산정 체크박스
  243. btn_dschnurN.disabled = true; // 간호사퇴원확정 취소 버튼
  244. btn_dschdrN.disabled = true; // 의사퇴원예고 취소 버튼
  245. btn_dietC.disabled = true; // 식사안함
  246. }
  247. //* 당일인 경우 && 20091201 김홍점 추가 사망환자인경우 사망일시로 퇴원확정 되므로 익일이어도 사망등록이 된경우 퇴원확정가능
  248. else {
  249. //** 환자별 진행 상태값에 따른 컨트롤 활성화 **//
  250. var sStatVal = model.getValue(dschPath + "[" + iRow + "]/stat"); // 환자별 진행 상태값
  251. if(sStatVal == "퇴원예고"){
  252. group1.disabled = false;
  253. //group4.disabled = false; // 외래CHEMO그룹
  254. btn_dschnurY.disabled = false; // 간호사퇴원확정 버튼
  255. boolafter18.disabled = false; // 병실료추가산정 체크박스
  256. btn_dschnurN.disabled = true; // 간호사퇴원확정 취소 버튼
  257. btn_dschdrN.disabled = false; // 의사퇴원예고 취소 버튼
  258. if(dietc == 0){
  259. btn_dietC.disabled = true; // 식사안함
  260. }else{
  261. btn_dietC.disabled = false; // 식사안함
  262. if(wardcd == babyicudeptcd){ //신생아중환자실
  263. btn_dietC.dispatch("DOMActivate");
  264. }
  265. }
  266. } else if(sStatVal == "간호사퇴원확정"){
  267. group1.disabled = false;
  268. btn_dschnurY.disabled = true; // 간호사퇴원확정 버튼
  269. boolafter18.disabled = true; // 병실료추가산정 체크박스
  270. btn_dschnurN.disabled = false; // 간호사퇴원확정 취소 버튼
  271. btn_dschdrN.disabled = false; // 의사퇴원예고 취소 버튼
  272. if(dietc == 0){
  273. btn_dietC.disabled = true; // 식사안함
  274. }else{
  275. btn_dietC.disabled = false; // 식사안함
  276. }
  277. } else {
  278. group1.disabled = true;
  279. btn_dschnurY.disabled = true; // 간호사퇴원확정 버튼
  280. boolafter18.disabled = true; // 병실료추가산정 체크박스
  281. btn_dschnurN.disabled = true; // 간호사퇴원확정 취소 버튼
  282. btn_dschdrN.disabled = true; // 의사퇴원예고 취소 버튼
  283. btn_dietC.disabled = true; // 식사안함
  284. }
  285. }
  286. //** 퇴원예정자리스트 스타일 지정 **//
  287. grd_inppatlist.cellstyle("background-color", 0, 0, grd_inppatlist.rows-1, grd_inppatlist.cols-1) = "white"; // 초기화(WHITE)
  288. grd_inppatlist.cellstyle("background-color", iRow, 0, iRow, grd_inppatlist.cols-1) = "#ffd9ff"; // 선택된 행 색상지정(PINK)
  289. // 환자상세정보조회
  290. model.makeValue("/root/main/descpatdeinfo/roomcd" , model.getValue(dschPath + "[" + iRow + "]/roomcd")); // 병실
  291. model.makeValue("/root/main/descpatdeinfo/pid" , model.getValue(dschPath + "[" + iRow + "]/pid" )); // 등록번호
  292. model.makeValue("/root/main/descpatdeinfo/hngnm" , model.getValue(dschPath + "[" + iRow + "]/hngnm" )); // 환자명
  293. model.makeValue("/root/main/descpatdeinfo/nurseid", getUserName() ); // 로그인한 간호사명 설정
  294. model.removenode("/root/send");
  295. model.makeNode ("/root/send");
  296. model.makeValue ("/root/send/reqdata/pid" , model.getValue(dschPath + "[" + iRow + "]/pid" )); // 등록번호
  297. model.makeValue ("/root/send/reqdata/orddd" , model.getValue(dschPath + "[" + iRow + "]/indd" )); // 입원일자
  298. model.makeValue ("/root/send/reqdata/dschdclrdt" , model.getValue(dschPath + "[" + iRow + "]/dschdclrdt")); // 퇴원예정일시
  299. model.makeValue ("/root/send/reqdata/dschdclrtodt" , model.getValue("/root/main/cond/dschdclrdt")+"235959" ); // 퇴원예정일시
  300. model.makeValue ("/root/send/reqdata/dschdclrfromdt", model.getValue("/root/main/cond/dschdclrdt")+"000000" ); // 퇴원예정일시
  301. model.makeValue ("/root/send/reqdata/cretno" , model.getValue(dschPath + "[" + iRow + "]/cretno" )); // 생성번호
  302. model.makeValue ("/root/send/reqdata/wardcd" , model.getValue(dschPath + "[" + iRow + "]/wardcd" )); // 병동코드
  303. model.makeValue ("/root/send/reqdata/actflag" , sActFlag ); // 실시입원처방 액팅 처리 프로시저 호출 여부
  304. model.makeValue ("/root/send/reqdata/orddeptcd" , model.getValue("/root/main/paminfo/list/orddeptcd") ); // 진료과코드
  305. if ( !isNull(sDethdt) && sDethdt != "-" ){
  306. model.makeValue("/root/send/reqdata/dethdt" , sDethdt);//사망환자인경우 사망일시 세팅해줌.
  307. }
  308. model.removeNodeset("/root/main/checkcntinfo");
  309. model.removeNodeset("/root/main/outrsrvinfo" );
  310. model.removeNodeset("/root/main/tnsprcpinfo" );
  311. model.removeNodeset("/root/main/narcprcpinfo"); // 마약처방리스트 그리드 초기화
  312. model.removeNodeset("/root/main/checkcntinfo/bloodinfo/bloodcomment"); // 수혈기록 필드 초기화
  313. submit("TRMNW01202"); // 환자 외래예약 조회, 혈액처방 조회추가_20080827
  314. submit("TRMNW01203"); // 환자 처방건수 조회(/투약기록/퇴원약/반환예정/마감/식이정리정보/입원전검사처방/퇴원후 외래검사 처방/입원예정정보)
  315. //** 정보설정 **//
  316. model.makeValue(chkPath + "/dschdclrdr" , (model.getValue(dschPath + "[" + iRow + "]/dschdclrtrgstdt")).substr(0,4) + "-"
  317. + (model.getValue(dschPath + "[" + iRow + "]/dschdclrtrgstdt")).substr(4,2) + "-"
  318. + (model.getValue(dschPath + "[" + iRow + "]/dschdclrtrgstdt")).substr(6,2) + " "
  319. + (model.getValue(dschPath + "[" + iRow + "]/dschdclrtrgstdt")).substr(8,2) + ":"
  320. + (model.getValue(dschPath + "[" + iRow + "]/dschdclrtrgstdt")).substr(10,2)+ " / "
  321. + model.getValue(dschPath + "[" + iRow + "]/dschdclrtrgstnm") ); // 의사 퇴원예고
  322. model.makeValue(chkPath + "/dschnotinurse", (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(0,4) + "-"
  323. + (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(4,2) + "-"
  324. + (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(6,2) + " "
  325. + (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(8,2) + ":"
  326. + (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(10,2)+ " / "
  327. + model.getValue(dschPath + "[" + iRow + "]/dschnotirgstnm") ); // 간호사 퇴원확정
  328. // model.makeValue(chkPath + "/dschnotinurse", "[일시] " + (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(0,4) + "-"
  329. // + (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(4,2) + "-"
  330. // + (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(6,2) + " "
  331. // + (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(8,2) + ":"
  332. // + (model.getValue(dschPath + "[" + iRow + "]/dschnotirgstdt")).substr(10,2)+ " "
  333. // + "[등록자] " + model.getValue(dschPath + "[" + iRow + "]/dschnotirgstnm") ); // 간호사 퇴원확정
  334. if(sStatVal == "간호사퇴원확정" || sStatVal == "심사완료" || sStatVal == "심사중"){
  335. model.makeValue("/root/main/cond/notidt", model.getValue(dschPath + "[" + iRow + "]/dschnotidt").substr(0,8));
  336. model.makeValue("/root/main/cond/notitm", model.getValue(dschPath + "[" + iRow + "]/dschnotidt").substr(8,4));
  337. ipt_notitm.disabled = true;
  338. } else {
  339. model.makeValue ("/root/main/cond/notidt", getCurrentDate());
  340. model.makeValue ("/root/main/cond/notitm", getCurrentTime().substr(0, 4));
  341. ipt_notitm.disabled = false;
  342. }
  343. //20091006 김홍점 병실료 추가산정 20091201 3762 사망환자는 사망일시가 퇴원확정시간임.
  344. if ( ((model.getValue(dschPath + "[" + iRow + "]/dschnotidt")).substr(8,2) >= "18" )
  345. || (( isNull(model.getValue(dschPath + "[" + iRow + "]/dschnotidt")) || model.getValue(dschPath + "[" + iRow + "]/dschnotidt")=="-" )
  346. && (getCurrentTime().substr(0, 2) >= "18" || (model.getValue(dschPath + "[" + iRow + "]/dethdt")).substr(8,2) >= "18") ) ){
  347. model.makeValue(chkPath + "/boolafter18","true");
  348. }else{
  349. model.makeValue(chkPath + "/boolafter18","false");
  350. }
  351. model.makeValue(chkPath + "/judgperchgrinfo", "[담당자] " + model.getValue(dschPath + "[" + iRow + "]/judgperchgrnm") + " "
  352. + "[Office] " + model.getValue(dschPath + "[" + iRow + "]/judgperchgrofficetelno") + " "
  353. + "[H.P] " + model.getValue(dschPath + "[" + iRow + "]/judgperchgrmpphonno")); // 심사자 정보
  354. var sDrugspdUnitFlag = model.getValue("/root/main/checkcntinfo/checkcntlist/drugspdunitflag"); // 식이구분
  355. var sPrcpCd = model.getValue("/root/main/checkcntinfo/checkcntlist/prcpcd" ); // 수가코드
  356. // 조식
  357. if(sDrugspdUnitFlag == "1") {
  358. if(sPrcpCd == dietnprcpcd) { // 금식("Q9140002":개인금식코드(수가테이블참조:emr.mmbtprcd))
  359. model.makeValue(chkPath + "/dietcmfninfo" , "[아침금식]으로 정리되었습니다.");
  360. } else {
  361. model.makeValue(chkPath + "/dietcmfninfo" , "[아침먹고 퇴원]으로 정리되었습니다.");
  362. }
  363. }
  364. // 중식
  365. else if(sDrugspdUnitFlag == "2") {
  366. model.makeValue(chkPath + "/dietcmfninfo" , "[점심먹고 퇴원]으로 정리되었습니다.");
  367. }
  368. // 석식
  369. else if(sDrugspdUnitFlag == "3") {
  370. model.makeValue(chkPath + "/dietcmfninfo" , "[저녁먹고 퇴원]으로 정리되었습니다.");
  371. }
  372. // 식사정리가 된 경우
  373. if(model.getValue(chkPath + "/dietcmfninfo") != "" ) {
  374. btn_diet1.disabled = true; // [아침먹고]
  375. btn_diet2.disabled = true; // [점심먹고]
  376. btn_diet3.disabled = true; // [저녁먹고퇴원하기]
  377. btn_dietN.disabled = true; // [아침금식]
  378. }
  379. if(model.getValue("/root/temp/checkcntinfo/checkcntlist/dietcmfninfo")!=""){
  380. model.makeValue(chkPath + "/dietcmfninfo" , model.getValue("/root/temp/checkcntinfo/checkcntlist/dietcmfninfo"));
  381. }
  382. if(model.getValue(chkPath + "/inrsrvinfo") == ""){
  383. model.setValue(chkPath + "/inrsrvinfo", "입원예정으로 발급된 입원장이 없습니다.");
  384. }
  385. /*
  386. if(getNodesetCount("/root/main/outrsrvinfo/outrsrvinfolist") < 1){
  387. model.makeValue("/root/main/outrsrvinfo/outcomment", "외래예약이 없습니다.");
  388. }
  389. alert(getNodesetCount("/root/main/outrsrvinfo/outrsrvinfolist")+"**"+getNodesetCount("/root/main/tnsprcpinfo/tnsprcplist"));
  390. if(getNodesetCount("/root/main/tnsprcpinfo/tnsprcplist") < 1){
  391. model.makeValue("/root/main/tnsprcpinfo/tnsprcpcomment", "정리되지 않은 혈액처방이 없습니다.");
  392. }
  393. */
  394. //** 외래CHEMO 정보_특수주사실(외래CHEMO)인 경우 **//
  395. /* 특수주사실 사용 안함. 주석처리_20090416(ByJA)
  396. if(model.getValue("/root/main/cond/wardcd")== chemodeptcd) {
  397. model.setValue("/root/main/chemoinrminfo/careinrmdt", model.getValue(dschPath + "[" + iRow + "]/careinrmdt") ); // 외래CHEMO입실일시
  398. model.setValue("/root/main/chemoinrminfo/dschnotidd", model.getValue(dschPath + "[" + iRow + "]/chemodschnotidd")); // 외래CHEMO퇴실일자
  399. model.setValue("/root/main/chemoinrminfo/dschnotitm", model.getValue(dschPath + "[" + iRow + "]/chemodschnotitm")); // 외래CHEMO퇴실시간
  400. fCalTime(); // 재실시간계산
  401. }
  402. */
  403. //** 의사 가정간호의뢰서 작성여부에 따른 가정간호기능 활성화_20080616추가 **//
  404. if(model.getValue("/root/main/checkcntinfo/checkcntlist/cnstinfoyn")=="Y"){ //의사 가정간호의뢰서 작성 여부(Y:작성함/N:작성하지 않음)
  405. btn_homecare.disabled = "false"; //[가정간호]버튼 활성화
  406. }else{
  407. btn_homecare.disabled = "true"; //[가정간호]버튼 비활성화
  408. }
  409. //** 삭제불가능한 혈액처방에 색상표시 **//
  410. grd_tnsprcplist.allstyle( "all", "background-color" ) = "white";
  411. for(var i=0;i<=grd_tnsprcplist.rows;i++){
  412. if(model.getValue("/root/main/tnsprcpinfo/tnsprcplist["+i+"]/dcyn") == "N"){
  413. grd_tnsprcplist.rowstyle(i, "all", "background-color") = "pink";
  414. }
  415. }
  416. grd_tnsprcplist.fixedcellcheckbox(0, grd_tnsprcplist.colRef("checks")) = true; // 혈액처방 그리드의 전체선택 체크박스 생성
  417. grd_tnsprcplist.fixedcellischeck (0, grd_tnsprcplist.colRef("checks")) = false; // 혈액처방 그리드의 전체선택 체크박스 초기화
  418. model.removeNodeset("/root/main/incplist");
  419. // 2012.02.14 일일입원실 환자 퇴원약 처리
  420. if (wardcd == daywardcd) {
  421. submit("TRMNW01209");
  422. }
  423. model.refresh();
  424. }
  425. /**
  426. * @group :
  427. * @ver : 2007.07.13 / 수정일자 : 2007.08.31
  428. * @by : 정경화 / 수정자 : 김진아
  429. * @--------------------------------------------------------------------------------
  430. * @type : function
  431. * @access : public
  432. * @desc :
  433. * @param : dschfg (Y:간호사 퇴원 확정 / N:간호사 퇴원취소 / D:의사 퇴원예고 취소)
  434. * @return :
  435. * @history: 20090604 김홍점 병실료 50% 산정 변경요청번호 1807 저녁먹고 퇴원시 퇴실확정시간 18시로 지정
  436. * @--------------------------------------------------------------------------------
  437. */
  438. function select_dschyn(dschfg){
  439. //debugger;
  440. var sDietReqYN = model.getValue("/root/main/checkcntinfo/checkcntlist/dietreqyn");
  441. var sInreport = model.getValue("/root/main/inreportInfo/inreport");
  442. var sPrcpYn = model.getValue("/root/main/inreportInfo/prcpyn");
  443. var cnt = 0;
  444. /*20110411_KNUH_Start
  445. if(sDietReqYN == "Y") {
  446. messageBox("식이처방 수정요청 중인 건이 있습니다. 요청이 완료된 후 다시 퇴실정리 해주세요. ", "E");
  447. return;
  448. }
  449. */
  450. for(var i=1; i<=getNodesetCount("/root/code/codeinfo/codelist"); i++){
  451. if(model.getValue("/root/code/codeinfo/codelist["+i+"]/cdgrupid") == "W04"){
  452. if(model.getValue("/root/code/codeinfo/codelist["+i+"]/cdid") == model.getValue("/root/main/cond/wardcd")){
  453. cnt++;
  454. }
  455. }
  456. }
  457. if(dschfg == "Y"){
  458. /*
  459. if(cnt == 0){
  460. if(sInreport == "N" ){
  461. messageBox("인증저장 되지 않은 간호정보조사지가 있습니다.", "E", "간호정보조사지 작성을 완료한 후 다시 시도하십시오.");
  462. return;
  463. }
  464. }
  465. */
  466. if(sPrcpYn == "N" ){
  467. messageBox("간호처방모니터링 간호확인이 완료되지 않은 건이 있습니다.", "E", "퇴원정리 원스탑의 간호처방모니터링 바로가기 버튼을 이용하여 간호확인을 하시기 바랍니다.");
  468. return;
  469. }
  470. }
  471. var sDschNotiDt="";// 병실료 50% 추가 산정 변경요청번호 8135 김홍점 20091006
  472. var sDietFlag = model.getValue("/root/main/temp/sDietFlag"); // 식사정리구분자 ("B":아침먹고, "L":점심먹고, "D":저녁먹고, "F":아침금식, "C":식사안함 )
  473. model.getValue("/root/main/cond/wardcd")!= babyicudeptcd
  474. /*
  475. // 신생아실 (wardcd:2110200000) 식사정리 제외_20080909소경화ITC요청으로 추가_신생아는 식사처방 없음_삭제불가
  476. if( model.getValue("/root/main/cond/wardcd")!= babydeptcd // 신생아실
  477. && model.getValue("/root/main/cond/wardcd")!= babyicudeptcd // 신생아중환자실
  478. && model.getValue("/root/main/cond/wardcd")!= alcoholdeptcd // 알코올의존치료센터_20090529_SMY추가
  479. // && (isNull(model.getValue(dschPath + "[" + iRow + "]/dethdt"))
  480. // || model.getValue(dschPath + "[" + iRow + "]/dethdt") == '-')
  481. ){
  482. */
  483. if(sDietFlag == "" && sDietFlag != "C" && dschfg == "Y" && model.getValue("/root/main/checkcntinfo/checkcntlist/drugspdunitflag")==""){
  484. messageBox("식사정리를 하지 않았습니다.", "E", "식사정리를 완료한 후 다시 시도하십시오.");
  485. model.setFocus("btn_diet1");
  486. return;
  487. }
  488. //}
  489. //* 성가병원의 경우, 당일 퇴원예고등록환자의 퇴원확정시간이 08:00이후이면 당일퇴원사유를 입력하도록 요청(원무팀통계자료)_20090716_ByJA
  490. if(getUserInfo("dutplceinstcd") == sunggainstcd){
  491. //2009-08-13 오후 4:04:52 taebum add 당일 퇴원등록을 하지 않을 경우에도 사유 popup이 뜨도록 변경 함. 원상복구 함.
  492. //2009-08-17 오후 6:04:52 JA 당일 퇴원등록을 하지 않을 경우에도 사유 popup이 뜨도록 주석처리함.
  493. if( //(model.getValue(dschPath + "[" + iRow + "]/dschdclrdt") == (model.getValue(dschPath + "[" + iRow + "]/dschdclrtrgstdt").substr(0,8))) &&
  494. (model.getValue(chkPath + "/tdaydschresn") == "" || model.getValue(chkPath + "/tdaydschresn") == "-")
  495. &&(getCurrentTime() >= "080000")
  496. &&(dschfg == "Y") //dschfg-"Y":간호사퇴원확정
  497. &&(model.getValue(chkPath + "/actcnt") == "0")
  498. &&(model.getValue(chkPath + "/drugcnt") == "0")
  499. &&(model.getValue(chkPath + "/prcpendcnt") == "0")
  500. &&(model.getValue(chkPath + "/retcnt") == "0")
  501. &&(model.getValue(chkPath + "/uncnfmcnt") == "0")
  502. ){
  503. messageBox("당일퇴원환자입니다.", "I", "당일퇴원사유 입력 후 간호사 퇴원확정 하십시오.");
  504. setParameter("unitflag", "dsch");
  505. setParameter("pid" , model.getValue(dschPath + "[" + iRow + "]/pid"));
  506. setParameter("wardcd" , model.getValue(dschPath + "[" + iRow + "]/wardcd"));
  507. modal("SMMNW13100","1","15","128", "SMMNW13100");
  508. select_dschpatinfo("N"); // 환자 처방건수 조회(/투약기록/퇴원약/반환예정/마감/식이정리정보/입원전검사처방/퇴원후 외래검사 처방/입원예정정보)
  509. return;
  510. }
  511. }
  512. //** 간호사 퇴원 확정 **//
  513. model.removenode("/root/send");
  514. model.makeNode ("/root/send");
  515. model.makeValue ("/root/send/reqdata/pid" , model.getValue(dschPath + "[" + iRow + "]/pid" )); // 환자번호
  516. model.makeValue ("/root/send/reqdata/orddd" , model.getValue(dschPath + "[" + iRow + "]/indd" )); // 입원일자
  517. model.makeValue ("/root/send/reqdata/cretno" , model.getValue(dschPath + "[" + iRow + "]/cretno" )); // 생성번호
  518. model.makeValue ("/root/send/reqdata/seqno" , model.getValue(dschPath + "[" + iRow + "]/seqno" )); // 이력일련번호
  519. model.makeValue ("/root/send/reqdata/dschdclrdt" , model.getValue(dschPath + "[" + iRow + "]/dschdclrdt")); // 퇴원예정일
  520. model.makeValue ("/root/send/reqdata/dschdclrtodt" , model.getValue("/root/main/cond/dschdclrdt")+"235959" ); // 퇴원예정일
  521. model.makeValue ("/root/send/reqdata/dschdclrfromdt", model.getValue("/root/main/cond/dschdclrdt")+"000000" ); // 퇴원예정일
  522. model.makeValue ("/root/send/reqdata/wardcd" , model.getValue("/root/main/cond/wardcd" )); // 병동코드
  523. //메시지를 보낼 시간 추가 by 박영우
  524. model.makeValue ("/root/send/reqdata/starttmcd" , starttmcd); //병원별시작시간
  525. model.makeValue ("/root/send/reqdata/endtmcd" , endtmcd); //병원별종료시간
  526. if ( getCurrentTime().substring(0,2) < "18" && boolafter18.value == "true"){
  527. sDschNotiDt = model.getValue("/root/main/cond/dschdclrdt") + "183000"; //여긴 8자리일자만 들어옴.
  528. model.makeValue("/root/send/reqdata/dschnotidt" , sDschNotiDt); // 병실료 50% 산정 변경요청번호 8135 김홍점 20091006
  529. }
  530. if ( !isNull(model.getValue(dschPath + "[" + iRow + "]/dethdt"))
  531. && model.getValue(dschPath + "[" + iRow + "]/dethdt") != '-'
  532. && (model.getValue(dschPath + "[" + iRow + "]/dethdt") <= getCurrentDate()+getCurrentTime()) ){
  533. sDschNotiDt = model.getValue(dschPath + "[" + iRow + "]/dethdt");//
  534. model.makeValue("/root/send/reqdata/dschnotidt" , sDschNotiDt); //사망환자 퇴원확정시간을 사망일시로 변경요청번호 3762 김홍점 20091201
  535. model.makeValue("/root/send/reqdata/dethdt" , sDschNotiDt); //사망환자인경우 사망일시 세팅해줌.
  536. }
  537. // chemo퇴실시간 사용안함.
  538. // model.makeValue ("/root/send/reqdata/dschnotidt" , model.getValue("/root/main/chemoinrminfo/dschnotidd")
  539. // + model.getValue("/root/main/chemoinrminfo/dschnotitm") ); // 퇴실일시
  540. model.makeValue ("/root/send/reqdata/dschflag" , dschfg ); // Y:간호사 퇴원 확정 / N:간호사 퇴원취소 / D:의사 퇴원예고 취소
  541. model.makeValue ("/root/send/reqdata/orddeptcd" , model.getValue("/root/main/paminfo/list/orddeptcd") ); // 진료과코드
  542. model.makeValue ("/root/send/reqdata/dscharngmnmemo", model.getValue("/root/main/checkcntinfo/checkcntlist/dscharngmnmemo")); // 수납에 전달 될 메모
  543. // 식이구분
  544. switch(sDietFlag) {
  545. case "B":
  546. model.makeValue("/root/send/reqdata/drugspdunitflag", "1");
  547. model.makeValue("/root/send/reqdata/fastflag" , "N"); // 금식구분 ("Y":금식/"N":금식아님)
  548. sDietNm = "[아침]";
  549. break;
  550. case "L":
  551. model.makeValue("/root/send/reqdata/drugspdunitflag", "2");
  552. model.makeValue("/root/send/reqdata/fastflag" , "N");
  553. sDietNm = "[점심]";
  554. break;
  555. case "D":
  556. model.makeValue("/root/send/reqdata/drugspdunitflag", "3");
  557. model.makeValue("/root/send/reqdata/fastflag" , "N"); // 금식구분 ("Y":금식/"N":금식아님)
  558. sDietNm = "[저녁]";
  559. break;
  560. case "F":
  561. model.makeValue("/root/send/reqdata/drugspdunitflag", "1");
  562. model.makeValue("/root/send/reqdata/fastflag" , "Y");
  563. sDietNm = "[아침]";
  564. break;
  565. default:
  566. model.makeValue("/root/send/reqdata/drugspdunitflag", "");
  567. model.makeValue("/root/send/reqdata/fastflag" , "");
  568. }
  569. //******************************************************************************************
  570. //일일입원실일 경우 지정한 퇴실일시로 퇴원확정 하도록 수정 2012.02.13 김지선
  571. var chk_wardcd = model.getValue("/root/main/cond/wardcd");
  572. if (daywardcd == chk_wardcd) {
  573. // 퇴실일시 지정
  574. model.makeValue("/root/send/reqdata/dschnotidt", model.getValue("/root/main/cond/notidt")+
  575. model.getValue("/root/main/cond/notitm"));
  576. //2017.02.21_외퇴 로직 추가
  577. model.makeValue("/root/send/reqdata/brateflagchk", model.getValue("/root/main/cond/brateflagchk"));
  578. //alert(":"+model.getValue("/root/send/reqdata/brateflagchk") + ":");
  579. if(model.getValue("/root/main/cond/notitm") == ""){
  580. messageBox("퇴원확정 시간을 입력하지 않아 간호사퇴원확정을 ", "E001", "퇴원확정 시간을 입력 후 다시 시도하십시오.");
  581. return;
  582. }
  583. // 퇴원약 약번호 I/F 처리
  584. model.makeValue("/root/send/pharmacyif", grd_inglist.getUpdateDataAll('i'));
  585. }
  586. //******************************************************************************************
  587. model.removeNodeset("/root/main/chkstatinfo");
  588. submit("TXMNW01201");
  589. //** 미수행 건수 존재 여부 확인 **//
  590. var rtnmsg = model.getValue("/root/main/chkstatinfo/rtnmsg");
  591. //***** 의사퇴원예고 취소 *****//
  592. if(dschfg == "D"){
  593. if(rtnmsg == "P") {
  594. messageBox("퇴원약, 퇴원후외래처방, 입원전검사처방이 존재하여 의사 퇴원예고 취소를 ", "E001");
  595. model.makeValue("/root/main/temp/sDietFlag", "");
  596. }
  597. select_dschpatlist("P"); // 퇴원예정환자 리스트조회
  598. }
  599. //***** 간호사 퇴원확정, 간호사 퇴원확정 취소 *****//
  600. else{
  601. /* "U" : 간호미확인처방 존재함
  602. "N" : 정리되지 않은 마약처방 존재함
  603. "A" : 미수행처방 존재함
  604. "B" : 미투약기록 존재함
  605. "R" : 반환예정처방 존재함
  606. "E" : 미마감 건수 존재함
  607. "T" : 정리되지 않은 혈액처방 존재함
  608. "Z" : 실시일시(시간까지 포함)가 간호사퇴원확정일시 보다 이후인 처방이 존재
  609. "D" : 식사미정리
  610. "O" : 미처리된 외출/외박약
  611. "C" : 미승인된 식이 수정요청
  612. "F" : 반환요청으로 남아있는 처방
  613. "H" : 가정간호 의뢰간호기록 미작성
  614. "I" : 의사 미확인 구두처방 존재함 */
  615. //* "X" : 미수행(식사포함) 건수 존재함
  616. /*
  617. if(rtnmsg == "X") {
  618. messageBox("미수행처방이 존재하여 간호사퇴원확정을 ", "E001", "[Acting Check], [투약기록], [반환예정] 또는 Order Manage를 확인하여 미수행처방을 정리한 후 다시 시도하십시오.");
  619. model.makeValue("/root/main/temp/sDietFlag", "");
  620. }
  621. */
  622. //* "U" : 간호미확인처방 존재함
  623. if(rtnmsg == "U") {
  624. messageBox("간호미확인 처방이 존재하여 간호사퇴원확정을 ", "E001", "[미확인처방(OrderManage)]화면을 확인하여 간호확인 후 다시 시도하십시오.");
  625. model.makeValue("/root/main/temp/sDietFlag", "");
  626. }
  627. //* "I" : 의사 미확인 구두처방 존재함
  628. else if(rtnmsg == "I") {
  629. messageBox("미확인 구두처방이 존재하여 간호사퇴원확정을 ", "E001", "[구두처방]화면을 확인하여 정리한 후 다시 시도하십시오.");
  630. model.makeValue("/root/main/temp/sDietFlag", "");
  631. }
  632. //* "N" : 정리되지 않은 마약처방 존재함 김홍점 20090507
  633. else if(rtnmsg == "N") {
  634. messageBox("정리되지 않은 마약처방이 존재하여 간호사퇴원확정을 ", "E001", "마약처방을 정리한 후 다시 시도하십시오.");
  635. model.setAttribute("Narc_Menu_Param", "");
  636. var sParam = "I,op";
  637. model.setAttribute("Narc_Menu_Param", sParam);
  638. model.setAttribute("SMADT30400_Fromdd", model.getValue(dschPath + "[" + iRow + "]/indd"));
  639. modal("SMADT30400","1","15","128");
  640. model.setAttribute("SMADT30400_Fromdd", "");
  641. select_dschyn("Y");
  642. }
  643. //* "A" : 미수행처방 존재함
  644. else if(rtnmsg == "A") {
  645. messageBox("미수행처방이 존재하여 간호사퇴원확정을 ", "E001", "[Acting Check]화면을 확인하여 미수행처방을 정리한 후 다시 시도하십시오.");
  646. model.makeValue("/root/main/temp/sDietFlag", "");
  647. }
  648. //* "B" : 미투약기록 존재함
  649. else if(rtnmsg == "B") {
  650. messageBox("투약기록 되지 않은 처방이 존재하여 간호사퇴원확정을 ", "E001", "[투약기록]화면을 확인하여 투약기록을 한 후 다시 시도하십시오.");
  651. model.makeValue("/root/main/temp/sDietFlag", "");
  652. }
  653. //* "R" : 반환예정처방 존재함
  654. else if(rtnmsg == "R") {
  655. messageBox("반환예정 처방이 존재하여 간호사퇴원확정을 ", "E001", "[반환예정]화면을 확인하여 정리한 후 다시 시도하십시오.");
  656. model.makeValue("/root/main/temp/sDietFlag", "");
  657. }
  658. //* "E" : 미마감 건수 존재함
  659. else if(rtnmsg == "E") {
  660. /* 특수주사실 사용 안함. 주석처리_20090416(ByJA)
  661. if(model.getValue("/root/main/cond/wardcd")!="3120400000") { // 특수주사실(외래CHEMO)인 경우 마감여부체크 제외_20080826김보성대리님요청으로 추가_특수주사실퇴실정리개발 후 삭제해야 함.
  662. messageBox("마감처리가 되지 않은 처방이 존재하여 간호사퇴원확정을 ", "E001", "[마감]화면을 확인하여 마감완료 후 다시 시도하십시오.");
  663. model.makeValue("/root/main/temp/sDietFlag", "");
  664. }
  665. */
  666. messageBox("마감처리가 되지 않은 처방이 존재하여 간호사퇴원확정을 ", "E001", "[마감]화면을 확인하여 마감완료 후 다시 시도하십시오.");
  667. model.makeValue("/root/main/temp/sDietFlag", "");
  668. }
  669. //* "T" : 정리되지 않은 혈액처방 존재함
  670. else if(rtnmsg == "T") {
  671. messageBox("정리되지 않은 혈액처방이 존재하여 간호사퇴원확정을 ", "E001", "혈액처방을 정리한 후 다시 시도하십시오.");
  672. model.makeValue("/root/main/temp/sDietFlag", "");
  673. }
  674. //* "Z" : 실시일시(시간까지 포함)가 간호사퇴원확정일시 보다 이후인 처방이 존재하면 퇴원확정 안되도록 Blocking 처리 요청_원무 채희철과장님 요청_20081216
  675. else if(rtnmsg == "Z") {
  676. messageBox("실시일시(시간까지 포함)가 간호사퇴원확정일시 보다 이후인 처방이 존재하여 퇴원확정을", "E001", "확인 후 다시 시도하십시오.");
  677. model.makeValue("/root/main/temp/sDietFlag", "");
  678. }
  679. //* "D" : 식사미정리
  680. else if(rtnmsg == "D") {
  681. messageBox("정리되지 않은 식사처방이 존재합니다.\n식사정리를 완료하지 않으면 퇴원확정을", "E001", "\n식사정리를 완료한 후 다시 시도하십시오.");
  682. select_dschpatinfo("N");
  683. model.makeValue("/root/main/temp/sDietFlag", "");
  684. }
  685. //* "O" : 식사미정리
  686. else if(rtnmsg == "O") {
  687. messageBox("정리되지 않은 외출/외박약이 존재하여 퇴원확정을", "E001", "\n정리한 후 다시 시도하십시오.");
  688. select_dschpatinfo("N");
  689. model.makeValue("/root/main/temp/sDietFlag", "");
  690. }
  691. //"F" : 반환요청으로 남아있는 처방
  692. else if(rtnmsg == "F") {
  693. messageBox("반환요청 상태의 처방이 존재하여 간호사퇴원확정을 ", "E001", "정리한 후 다시 시도하십시오.");
  694. select_dschpatinfo("N");
  695. model.makeValue("/root/main/temp/sDietFlag", "");
  696. }
  697. //* "H" : 가정간호 의뢰간호기록 미작성
  698. //***************************************************************************************************************//
  699. //***************************************************************************************************************//
  700. //** " 3월24일 요청했던 퇴원시 가정간호 의뢰 간호기록을 작성하지 않았을 경우의 간호사 퇴원확정을 할 수 없도록 **//
  701. //** blocking을 요청한 사항에 관하여 삭제(병동간호와 가정간호의 협의사항임)" 에 따른 주석처리_20080805(ByJA) **//
  702. //** -> 삭제 되었던 Blocking 기능을 경북대학교병원 가정간호 요청사항으로 다시 체크 하도록 함_ 20110607(손성훈)**//
  703. //***************************************************************************************************************//
  704. else if(rtnmsg == "H") {
  705. messageBox("가정간호의뢰서가 존재하나 '퇴원시 가정간호 의뢰 간호기록'이.", "E014", "'퇴원시 가정간호 의뢰 간호기록'을 작성(인증저장)하신 후 다시 시도하십시오.");
  706. select_dschpatinfo("N");
  707. if(model.getValue("/root/main/checkcntinfo/checkcntlist/dietcmfninfo")==""){
  708. fGetDietYn(sDietFlag); // 당일 해당식사 존재여부 확인 및 상태값 지정
  709. }
  710. }
  711. //***************************************************************************************************************//
  712. else{
  713. //* "DETH" : 사망환자는 실시일시(시간까지 포함)가 간호사퇴원확정일시 보다 이후인 처방이 존재하면 자동 사망일시로 실시일시 수정처리 요청_김숙인itc 요청_20091203 khj
  714. if(rtnmsg == "DETH") {
  715. messageBox("실시일자가 사망등록일자 이후인 처방이 존재합니다.\n 실시일자를 사망등록일자로 자동수정합니다.", "I");
  716. model.makeValue("/root/main/temp/sDietFlag", "");
  717. }
  718. select_dschpatlist("P"); // 퇴원예정환자 리스트조회
  719. model.makeValue("/root/main/temp/sDietFlag", "");
  720. }
  721. model.makeValue("/root/main/temp/sDietFlag", sDietFlag);
  722. model.makeValue("/root/main/cond/brateflagchk", "");
  723. model.refresh();
  724. }
  725. }
  726. /**
  727. * @group :
  728. * @ver : 2007.07.16 / 수정일자 : 2007.08.31
  729. * @by : 정경화 / 수정자 : 김진아
  730. * @--------------------------------------------------------------
  731. * @type : function
  732. * @access : public
  733. * @desc : 퇴원약/퇴원후 검사처방/입원전 검사처방 화면 Popup
  734. * @param :
  735. * @return :
  736. * @--------------------------------------------------------------
  737. */
  738. function select_dschPopup(){
  739. if (model.getvalue("/root/main/dschpatinfo/dschpatlist[" + iRow + "]/pid") != "") {
  740. model.makevalue("/root/source/pidinfo/dschdclrdt", model.getValue(dschPath + "[" + iRow + "]/dschdclrdt")); // 퇴원일자
  741. model.makevalue("/root/source/pidinfo/pid" , model.getValue(dschPath + "[" + iRow + "]/pid") ); // 등록번호
  742. model.makevalue("/root/source/pidinfo/orddd" , model.getValue(dschPath + "[" + iRow + "]/indd") ); // 입원일자
  743. model.makevalue("/root/source/pidinfo/cretno" , model.getValue(dschPath + "[" + iRow + "]/cretno") ); // 생성반호
  744. model.makevalue("/root/source/pidinfo/hngnm" , model.getValue(dschPath + "[" + iRow + "]/hngnm") ); // 환자명
  745. model.makevalue("/root/source/pidinfo/wardcd" , model.getValue(dschPath + "[" + iRow + "]/wardcd") ); // 병동코드
  746. modal("SPMNW01300","","700","350","SPMNW01300","/root/source/pidinfo","/root/target/pidinfo");
  747. }
  748. else{
  749. messageBox("환자를", "C002");
  750. return;
  751. }
  752. }
  753. /**
  754. * @group :
  755. * @ver : 2007.09.03
  756. * @by : 김진아
  757. * @------------------------------------------------------------------------------------------------
  758. * @type : function
  759. * @access : public
  760. * @desc : 진행상태값 체크 (간호사퇴원확정/간호사퇴원확정취소/의사퇴원예고취소 버튼 클릭 시)
  761. * @param :
  762. * @return :
  763. * @------------------------------------------------------------------------------------------------
  764. */
  765. function fChkStatVal(){
  766. model.removenode("/root/send");
  767. model.makeNode ("/root/send");
  768. model.makeValue ("/root/send/reqdata/pid" , model.getValue(dschPath + "[" + iRow + "]/pid")); // 등록번호
  769. model.makeValue ("/root/send/reqdata/indd" , model.getValue(dschPath + "[" + iRow + "]/indd")); // 입원일자
  770. //16.01.06_ AYS추가
  771. model.makeValue ("/root/send/reqdata/cretno" , model.getValue(dschPath + "[" + iRow + "]/cretno")); // 생성번호
  772. //16.01.06_ AYS추가
  773. model.makeValue ("/root/send/reqdata/dschdclrdt", model.getValue(dschPath + "[" + iRow + "]/dschdclrdt")); // 퇴원예정일
  774. model.removeNodeset("/root/main/chkstatinfo");
  775. submit("TRMNW01204");
  776. }
  777. /**
  778. * @group :
  779. * @ver : 2008.02.19
  780. * @by : 김진아
  781. * @---------------------------------------------------------------------
  782. * @type : function
  783. * @access : public
  784. * @desc : 식사존재여부 확인
  785. * @param : "B":아침먹고, "L":점심먹고, "D":저녁먹고, "F":아침금식
  786. * @return :
  787. * @---------------------------------------------------------------------
  788. */
  789. function fGetDietYn(sDietFlag){
  790. var sDietNm = "", sDietSetNm = "";
  791. var sAddMsg = "";
  792. var sMsg = "";
  793. var sDschNotiDt="";
  794. var sDethdt = model.getValue(dschPath + "[" + iRow + "]/dethdt"); // 환자별 사망일
  795. model.removenode("/root/send");
  796. model.makeValue ("/root/send/reqdata/pid" , model.getValue(dschPath + "[" + iRow + "]/pid")); // 등록번호
  797. model.makeValue ("/root/send/reqdata/orddd" , model.getValue(dschPath + "[" + iRow + "]/indd")); // 입원일자
  798. model.makeValue ("/root/send/reqdata/dschdclrdt" , model.getValue(dschPath + "[" + iRow + "]/dschdclrdt")); // 퇴원예정일
  799. model.makeValue ("/root/send/reqdata/dschdclrtodt" , model.getValue("/root/main/cond/dschdclrdt")+"235959");
  800. model.makeValue ("/root/send/reqdata/dschdclrfromdt", model.getValue("/root/main/cond/dschdclrdt")+"000000");
  801. model.makeValue ("/root/send/reqdata/notidt", model.getValue ("/root/main/cond/notidt"));
  802. model.makeValue ("/root/send/reqdata/notitm", model.getValue ("/root/main/cond/notitm"));
  803. if ( !isNull(sDethdt) && sDethdt != "-" ){
  804. model.makeValue("/root/send/reqdata/dethdt" , sDethdt);//사망환자인경우 사망일시 세팅해줌.
  805. }
  806. // 식이구분
  807. switch(sDietFlag) {
  808. case "B":
  809. model.makeValue("/root/send/reqdata/drugspdunitflag", "1");
  810. model.makeValue("/root/send/reqdata/fastflag" , "N"); // 금식구분 ("Y":금식/"N":금식아님)
  811. sDietNm = "[아침]"; sDietSetNm = "[아침먹고 퇴원]";
  812. break;
  813. case "L":
  814. model.makeValue("/root/send/reqdata/drugspdunitflag", "2");
  815. model.makeValue("/root/send/reqdata/fastflag" , "N"); // 금식구분 ("Y":금식/"N":금식아님)
  816. sDietNm = "[점심]"; sDietSetNm = "[점심먹고 퇴원]";
  817. break;
  818. case "D":
  819. model.makeValue("/root/send/reqdata/drugspdunitflag", "3");
  820. model.makeValue("/root/send/reqdata/fastflag" , "N"); // 금식구분 ("Y":금식/"N":금식아님)
  821. sDietNm = "[저녁]"; sDietSetNm = "[저녁먹고 퇴원]";
  822. break;
  823. case "F":
  824. model.makeValue("/root/send/reqdata/drugspdunitflag", "1");
  825. model.makeValue("/root/send/reqdata/fastflag" , "Y"); // 금식구분 ("Y":금식/"N":금식아님)
  826. sDietNm = "[아침]"; sDietSetNm = "[아침금식]";
  827. break;
  828. }
  829. model.removeNodeset("/root/main/chkstatinfo");
  830. submit("TRMNW01206");
  831. model.makeValue("/root/main/temp/sDietFlag", sDietFlag);
  832. // 지정한 식사가 존재 하지 않을 경우
  833. if(model.getValue("/root/main/chkstatinfo/getdietyn") == "N" ){
  834. messageBox("해당환자의 당일 "+sDietNm+"식사처방이 존재하지 않아 퇴원식이지정을 하지 못했습니다.", "E", "해당환자의 당일 식사처방을 확인 후 다시 식사정리 또는 퇴원식이 없이 간호사 퇴원확정하십시오.\n(단, 간호사퇴원확정시 해당환자의 당일 "+sDietNm+"식사이후의 식사는 모두 D/C처리 됩니다.)");
  835. sMsg = sAddMsg + sDietNm + "식사이후의 식사는 모두 D/C처리 될 예정입니다.";
  836. model.makeValue("/root/main/checkcntinfo/checkcntlist/dietcmfninfo",sMsg);
  837. model.makeValue("/root/temp/checkcntinfo/checkcntlist/dietcmfninfo",sMsg);
  838. }else{
  839. sMsg = sAddMsg + sDietSetNm + "으로 정리예정입니다.";
  840. model.makeValue("/root/main/checkcntinfo/checkcntlist/dietcmfninfo",sMsg);
  841. model.makeValue("/root/temp/checkcntinfo/checkcntlist/dietcmfninfo",sMsg);
  842. }
  843. opt_dietcmfninfo.hint = sMsg;
  844. opt_dietcmfninfo.refresh();
  845. }
  846. /**
  847. * @group :
  848. * @ver : 2007.09.03
  849. * @by : 김진아
  850. * @---------------------------------------------------------------------
  851. * @type : function
  852. * @access : public
  853. * @desc : 식사정리 not used reqSetDietPrcp 이것도 사용안함.
  854. * @param : "B":아침먹고, "L":점심먹고, "D":저녁먹고, "F":아침금식
  855. * @return :
  856. * @---------------------------------------------------------------------
  857. */
  858. function fDietArngmn(sDietFlag){
  859. var sDietNm = "";
  860. model.removenode("/root/send");
  861. model.makeNode ("/root/send");
  862. model.makeValue ("/root/send/reqdata/pid" , model.getValue(dschPath + "[" + iRow + "]/pid")); // 등록번호
  863. model.makeValue ("/root/send/reqdata/orddd" , model.getValue(dschPath + "[" + iRow + "]/indd")); // 입원일자
  864. model.makeValue ("/root/send/reqdata/dschdclrdt" , model.getValue(dschPath + "[" + iRow + "]/dschdclrdt")); // 퇴원예정일
  865. model.makeValue ("/root/send/reqdata/dschdclrtodt" , model.getValue("/root/main/cond/dschdclrdt")+"235959");
  866. model.makeValue ("/root/send/reqdata/dschdclrfromdt", model.getValue("/root/main/cond/dschdclrdt")+"000000");
  867. // 식이구분
  868. switch(sDietFlag) {
  869. case "B":
  870. model.makeValue("/root/send/reqdata/drugspdunitflag", "1");
  871. model.makeValue("/root/send/reqdata/fastflag" , "N"); // 금식구분 ("Y":금식/"N":금식아님)
  872. sDietNm = "[아침]";
  873. break;
  874. case "L":
  875. model.makeValue("/root/send/reqdata/drugspdunitflag", "2");
  876. model.makeValue("/root/send/reqdata/fastflag" , "N"); // 금식구분 ("Y":금식/"N":금식아님)
  877. sDietNm = "[점심]";
  878. break;
  879. case "D":
  880. model.makeValue("/root/send/reqdata/drugspdunitflag", "3");
  881. model.makeValue("/root/send/reqdata/fastflag" , "N"); // 금식구분 ("Y":금식/"N":금식아님)
  882. sDietNm = "[저녁]";
  883. break;
  884. case "F":
  885. model.makeValue("/root/send/reqdata/drugspdunitflag", "1");
  886. model.makeValue("/root/send/reqdata/fastflag" , "Y"); // 금식구분 ("Y":금식/"N":금식아님)
  887. sDietNm = "[아침]";
  888. break;
  889. }
  890. model.removeNodeset("/root/main/chkstatinfo");
  891. submit("TXMNW01202");
  892. // 식이처방 존재여부 표시("X":없음/"Y":있음)
  893. if(model.getValue("/root/main/chkstatinfo/dietynrtnmsg") == "X"){
  894. messageBox("해당환자의 당일 " + sDietNm + "식사처방이 존재하지 않아 식사정리가 되지 않았습니다.", "E", "해당환자의 당일 식사처방을 확인 후 다시 정리하십시오.\n(해당환자의 당일 "+sDietNm+"식사이후의 식사는 D/C처리 됩니다.)");
  895. //model.makeValue(chkPath + "/dietcmfninfo" , sDietNm+"식사처방이 존재하지 않습니다.");
  896. //model.refresh();
  897. } else {
  898. select_dschpatinfo("N"); // 환자상세정보조회
  899. }
  900. }
  901. /**
  902. * @group :
  903. * @ver : 2007.09.05
  904. * @by : 김진아
  905. * @---------------------------------------------------
  906. * @type : function
  907. * @access : public
  908. * @desc : 초기화
  909. * @param :
  910. * @return :
  911. * @---------------------------------------------------
  912. */
  913. function fInit(){
  914. grd_inppatlist.cellstyle("background-color", 0, 0, grd_inppatlist.rows-1, grd_inppatlist.cols-1) = "white";
  915. fClearChildNode("/root/main/descpatdeinfo");
  916. fClearChildNode("/root/main/chemoinrminfo");
  917. fClearChildNode(chkPath);
  918. if(getNodesetCount("/root/main/outrsrvinfo") > 0){
  919. fClearChildNode("/root/main/outrsrvinfo");
  920. }
  921. var wardcd = model.getValue("/root/main/cond/wardcd");
  922. if (wardcd == daywardcd) {
  923. fVisibleNotidt('Y');
  924. } else {
  925. fVisibleNotidt('N');
  926. }
  927. grp_erprcp.visible = false;
  928. model.refresh();
  929. }
  930. /**
  931. * @group :
  932. * @ver : 2007.09.07
  933. * @by : 김진아
  934. * @---------------------------------------------------
  935. * @type : function
  936. * @access : public
  937. * @desc : 화면상단 정보설정
  938. * @param :
  939. * @return :
  940. * @---------------------------------------------------
  941. */
  942. function fsetHngBaseInfo(){
  943. //**상단정보 초기화**//
  944. delPatientInfos(); //화면상단정보 삭제
  945. setGlobalVariable("paminfo", ""); //원무정보 reset
  946. if(getNodesetCount("/root/main/paminfo/list") > 0) {
  947. model.removeNodeset("/root/main/paminfo/list");
  948. }
  949. var iRow = grd_inppatlist.row;
  950. // 상단 환자정보 parameter
  951. var sIoflag = "I";
  952. var sPid = model.getValue(dschPath + "[" + iRow + "]/pid");
  953. model.removenode ("/root/send");
  954. model.makeNode ("/root/send");
  955. model.makeValue ("/root/send/reqdata/pid" , sPid);
  956. model.makeValue ("/root/send/reqdata/histstat", sIoflag);
  957. model.removeNodeset("/root/temp/gettoplist");
  958. submit("TRMND00103");
  959. var sCretno = model.getValue("/root/temp/gettoplist/gettopinfo/cretno" ); //생성번호
  960. var sSeqno = model.getValue("/root/temp/gettoplist/gettopinfo/seqno" ); //일련번호
  961. var sInstcd = model.getValue("/root/temp/gettoplist/gettopinfo/instcd" ); //기관코드
  962. var sIndd = model.getValue("/root/temp/gettoplist/gettopinfo/indd" ); //입원일자
  963. var sParam;
  964. sParam = (sIoflag + "▦" + sPid + "▦" + sIndd + "▦" + sCretno + "▦" + sInstcd + "▦");
  965. setParameter("condparam", sParam);
  966. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;"); // 상단올리기 화면 호출
  967. //debugger;
  968. var useyn = getParameter("SPMMO08900_rtn_useyn"); // 입원,외래 원무환자정보 존재 "Y" / 존재하지 않을 경우 "N"
  969. // 원무환자정보 있을 경우만 다음 단계 진행
  970. if(useyn == 'Y') {
  971. var node = getGlobalVariable("paminfo");
  972. setCSVToNode("/root/main/paminfo", node);
  973. // 환자상세정보조회
  974. // 환자 외래예약
  975. // 환자 처방건수 조회(/투약기록/퇴원약/반환예정/마감/식이정리정보/입원전검사처방/퇴원후 외래검사 처방/입원예정정보)
  976. select_dschpatinfo("Y");
  977. }
  978. }
  979. /**
  980. * @group :
  981. * @ver : 2007.10.16
  982. * @by : 김진아
  983. * @---------------------------------------------------
  984. * @type : function
  985. * @access : public
  986. * @desc : 재실시간계산
  987. * @param :
  988. * @return :
  989. * @---------------------------------------------------
  990. */
  991. function fCalTime(){
  992. //** 외래CHEMO 정보 **//
  993. /* 특수주사실 사용 안함. 주석처리_20090416(ByJA)
  994. if(model.getValue("/root/main/cond/wardcd")== chemodeptcd) { // 특수주사실(외래CHEMO)인 경우
  995. var HH=0, MM=0, wHH=0, sHH=0, tHH=0;
  996. var sInHospTMs, sInHospTM;
  997. var sCareInRmDT = model.getValue("/root/main/chemoinrminfo/careinrmdt"); // 외래CHEMO 입실일시
  998. var sCareInRmDD = sCareInRmDT.substr(0,8); // 외래CHEMO 입실일자
  999. var sCareInRmTM = sCareInRmDT.substr(8,4); // 외래CHEMO 입실시간
  1000. var sDschnotiDD = model.getValue("/root/main/chemoinrminfo/dschnotidd"); // 외래CHEMO 퇴실일자
  1001. var sDschnotiTM = model.getValue("/root/main/chemoinrminfo/dschnotitm"); // 외래CHEMO 퇴실시간
  1002. if(sCareInRmDT!="" && sDschnotiDD!="" && sDschnotiTM!=""){
  1003. if(sCareInRmDT > sDschnotiDD+sDschnotiTM){
  1004. messageBox("외래 CHEMO 입실일시 및 퇴실일시를 확인하십시오.", "E");
  1005. return;
  1006. }
  1007. }
  1008. if(sDschnotiDD.length<8){
  1009. model.setValue("/root/main/chemoinrminfo/dschnotidd", getCurrentDate()); // 외래 CHENO 퇴실일자(현재일자)
  1010. ipt_dschnotidd.refresh();
  1011. }
  1012. if(sDschnotiTM.length<4){
  1013. model.setValue("/root/main/chemoinrminfo/dschnotitm", getCurrentTime().substr(0,4)); // 외래 CHENO 퇴실시간 (현재시간)
  1014. ipt_dschnotitm.refresh();
  1015. }
  1016. if(sCareInRmDD!="" && sDschnotiDD!="" && sCareInRmTM!="" && sDschnotiTM!=""){
  1017. var sDateInterval = getDateInterval(sCareInRmDD , sDschnotiDD ); // 두 일자사이의 차(일단위)
  1018. var sTimeInterval = getTimeInterval(sCareInRmTM+"00", sDschnotiTM+"00" ); // 두 시간사이의 차(초단위)
  1019. tHH = Number(sDateInterval * 24 )
  1020. + Number(sTimeInterval / 3600);
  1021. HH = Math.floor(tHH);
  1022. MM = (HH == 0) ? Math.round(tHH * 60) : Math.round((tHH % HH) * 60);
  1023. model.setValue("/root/main/chemoinrminfo/inhosptm", (HH+"시간 "+MM+"분")); // 외래 CHEMO 재실시간
  1024. opt_inhosptm.refresh();
  1025. } else if(sCareInRmDD =="" || sCareInRmTM =="") {
  1026. messageBox("외래 CHEMO 입실일시가 존재하지 않습니다.", "E");
  1027. }else if(model.getValue("/root/main/chemoinrminfo/dschnotidd") =="" || model.getValue("/root/main/chemoinrminfo/dschnotitm") =="") {
  1028. messageBox("외래 CHENO 퇴실일시를 입력하십시오.", "E");
  1029. }
  1030. }
  1031. */
  1032. }
  1033. /**
  1034. * @group
  1035. * @ver : 2008.06.30
  1036. * @by : 김진아
  1037. * @---------------------------------------------------
  1038. * @type : function
  1039. * @access : public
  1040. * @desc : 출력기능
  1041. * @param :
  1042. * @return :
  1043. * @---------------------------------------------------
  1044. */
  1045. function fExecPrint(){
  1046. // 출력할 데이터가 없는 경우
  1047. if(getNodesetCount("/root/main/dschpatinfo/dschpatlist")==0){
  1048. messageBox("출력할 데이터가", "I004"); return;
  1049. }else{
  1050. model.removenode("/root/send");
  1051. model.makeNode("/root/send/printdata/dschpatinfo"); // 퇴원예정자리스트
  1052. model.copyNode("/root/send/printdata/dschpatinfo", "/root/main/dschpatinfo");
  1053. exeReportPreview("RPMNW01200", "XMLSTR");
  1054. }
  1055. }
  1056. function fVisibleNotidt(vsb)
  1057. {
  1058. if (vsb == 'Y') {
  1059. cap_inroomdt.visible = true;
  1060. cap_outroomdt.visible = true;
  1061. ipt_inroomdt.visible = true;
  1062. ipt_notidt.visible = true;
  1063. ipt_notitm.visible = true;
  1064. chk_brateflag.visible = true;
  1065. } else {
  1066. cap_inroomdt.visible = false;
  1067. cap_outroomdt.visible = false;
  1068. ipt_inroomdt.visible = false;
  1069. ipt_notidt.visible = false;
  1070. ipt_notitm.visible = false;
  1071. chk_brateflag.visible = false
  1072. }
  1073. }
  1074. function fNrCpRecord() {
  1075. var cpPid = model.getValue("/root/main/paminfo/list/pid");
  1076. var cpIndd = model.getValue("/root/main/paminfo/list/indd");
  1077. var cpCretno = model.getValue("/root/main/paminfo/list/cretno");
  1078. var cpPatnm = model.getValue("/root/main/paminfo/list/hngnm2");
  1079. var cpRoom = model.getValue("/root/main/paminfo/list/roomcd");
  1080. var cpSexage = model.getValue("/root/main/paminfo/list/sex") + "/" + model.getValue("/root/main/paminfo/list/age");
  1081. var cpOrddeptcd = model.getValue("/root/main/paminfo/list/orddeptcd");
  1082. var cpMedispclid = model.getValue("/root/main/paminfo/list/medispclid");
  1083. var cpSupcdid = "";
  1084. model.removenode("root/send/recinfo");
  1085. model.makeValue("root/send/recinfo/pid", cpPid);
  1086. model.makeValue("root/send/recinfo/indd", cpIndd);
  1087. model.makeValue("root/send/recinfo/cretno", cpCretno);
  1088. model.makeValue("root/send/recinfo/checkdate", getCurrentDate());
  1089. //CP 대상 환자여부
  1090. if (submit("TRMNR02903")) {
  1091. var cpCpyn = model.getValue("/root/temp/cpinfo/cpyn");
  1092. var cpCpgno = model.getValue("/root/temp/cpinfo/cpgno");
  1093. var cpRecType = "CP5";
  1094. var cpOrigincd = "";
  1095. if (cpCpyn == "Y" && cpCpgno != 0) {
  1096. //기록여부 확인
  1097. model.makeValue("/root/temp/cpinfo/cdgrupid", cpRecType);
  1098. if (submit("TRMNW01107")) { //간호기록 코드 가지고 오기
  1099. cpOrigincd = model.getValue("/root/main/cpinfo/termcd/cdid");
  1100. cpSupcdid = model.getValue("/root/main/cpinfo/termcd/supcdid");
  1101. if (cpOrigincd == null || cpOrigincd == "") {
  1102. } else {
  1103. model.makeValue("root/send/recinfo/origincd", cpOrigincd);
  1104. if (submit("TRMNR02902")) {
  1105. var recyn = model.getValue("/root/temp/recinfo/recyn");
  1106. if (recyn != "Y") {
  1107. var rtnval = messageBox("CP 대상환자입니다. 해당 CP에 구성되어있는 [퇴원 간호기록]을 진행하시겠습니까?", "Q999");
  1108. if (rtnval == "6") {
  1109. //기록 화면으로 연결
  1110. setParameter("pid", cpPid);
  1111. setParameter("indd", cpIndd);
  1112. setParameter("cretno", cpCretno);
  1113. setParameter("patnm", cpPatnm);
  1114. setParameter("room", cpRoom);
  1115. setParameter("sexage", cpSexage);
  1116. setParameter("orddeptcd", cpOrddeptcd);
  1117. setParameter("medispclid", cpMedispclid);
  1118. setParameter("cdid", cpOrigincd);
  1119. setParameter("supcdid", cpSupcdid);
  1120. modal("SMMNR02900", 1, 0, 0 ,"", "", "");
  1121. }
  1122. }
  1123. }
  1124. }
  1125. }
  1126. }
  1127. }
  1128. }
  1129. function fErPrcplist() {
  1130. var iRow = grd_inppatlist.row;
  1131. model.makeValue("/root/send/pid", model.getValue(dschPath+"["+iRow+"]/pid"));
  1132. model.makeValue("/root/send/indd", model.getValue(dschPath+"["+iRow+"]/indd"));
  1133. model.makeValue("/root/send/cretno", model.getValue(dschPath+"["+iRow+"]/cretno"));
  1134. model.makeValue("/root/send/instcd", model.getValue(dschPath+"["+iRow+"]/instcd"));
  1135. model.makeValue("/root/send/dschdclrdt", model.getValue(dschPath+"["+iRow+"]/dschdclrdt"));
  1136. submit("TRMNW01212");
  1137. /*grd_inglist.rebuildStyle();
  1138. var tRow = grd_inglist.rows;
  1139. for(i= 0 ; i < tRow ; i ++ ){
  1140. if(model.getValue("/root/main/incplist/inginfo["+i+"]/prcpkindcdyn") == "Y"){
  1141. //퇴원약 약 확인
  1142. grd_inglist.cellstyle("background-color", i, 0, i, 21) = "#ccffff";
  1143. }
  1144. }*/
  1145. if (getNodesetCount("/root/main/erprcplist/inginfo") > 0) {
  1146. grp_erprcp.visible = true;
  1147. } else {
  1148. grp_erprcp.visible = false;
  1149. }
  1150. }
  1151. function fPopupMenuInfo(){
  1152. //마우스 오른쪽 버튼 클릭시 이밴트 발생
  1153. if (event.button == 3) {
  1154. if (grd_erprcplist.selectedRows == 1 || (( grd_erprcplist.selectedRow(0) > grd_erprcplist.mouseRow) || ((grd_erprcplist.row + grd_erprcplist.selectedRows -1) < grd_erprcplist.mouseRow ))) {
  1155. for(var i = 1 ; i < grd_erprcplist.rows ; i++){
  1156. model.setValue("/root/main/erprcplist/inginfo["+i+"]/selectyn", "");
  1157. }
  1158. grd_erprcplist.row = grd_erprcplist.mouseRow;
  1159. }
  1160. //선택행 선택 플래그 변경 후 DC팝업창 활성화
  1161. if (grd_erprcplist.isCell(event.target) && grd_erprcplist.mouseRow >= grd_erprcplist.fixedrows) {
  1162. model.setValue("/root/main/erprcplist/inginfo["+grd_erprcplist.row+"]/selectyn", "Y");
  1163. window.setPopupMenu(true, "/root/codedata/popupmenu/grid10/item", "name", "func", true); //퇴원구분 미선택
  1164. } else {
  1165. window.setPopupMenu(false);
  1166. }
  1167. }
  1168. }
  1169. function fSelectGridRowCtrl(pPath){
  1170. //선택row 초기화
  1171. var iRow = "";
  1172. var iRow = "";
  1173. var sRow = "";
  1174. var tRow = "";
  1175. var chkNode1 = "";
  1176. var chkNode2 = "";
  1177. iRow = grd_erprcplist.row;
  1178. sRow = grd_erprcplist.selectedRows;
  1179. eRow = grd_erprcplist.selectedRow(0);
  1180. tRow = grd_erprcplist.rows;
  1181. chkNode1 = "/selectyn";
  1182. chkNode2 = "/prcpkindcdyn";
  1183. if(eRow < "0"){
  1184. return;
  1185. } else {
  1186. if(tRow != "1"){
  1187. // ctrl키 누른 상태에서 그리드 클릭시 선택된 모든 행 상태값 변경
  1188. if(event.ctrlKey == 1){
  1189. if(model.getValue(pPath+"["+iRow+"]"+chkNode1) != "Y" ) {
  1190. model.setValue(pPath+"["+iRow+"]"+chkNode1, "Y");
  1191. } else {
  1192. model.setValue(pPath+"["+iRow+"]"+chkNode1, "");
  1193. }
  1194. }
  1195. // shift키 누른 상태에서 선택행과 마지막 선택행 사이의 그리드 상태값 변경
  1196. else if(event.shiftKey == 1){
  1197. for(i =1 ; i < tRow ; i++){
  1198. model.setValue(pPath+"["+i+"]"+chkNode1, "");
  1199. }
  1200. if(iRow == eRow){
  1201. for(i = iRow ; i < iRow+sRow ; i++) {
  1202. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ) {
  1203. model.setValue(pPath+"["+i+"]"+chkNode1, "Y");
  1204. }
  1205. }
  1206. }else{
  1207. for(i = eRow; i <= iRow ; i ++ ){
  1208. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ) {
  1209. model.setValue(pPath+"["+i+"]"+chkNode1, "Y");
  1210. }
  1211. }
  1212. }
  1213. }
  1214. // 마우스 드래그를 하여 그리드의 로우 선택시 상태값 변경
  1215. else {
  1216. for(i =1 ; i < tRow ; i++){
  1217. model.setValue(pPath+"["+i+"]"+chkNode1, "")
  1218. }
  1219. if((sRow == "1") && (iRow != "0")){
  1220. if(model.getValue(pPath+"["+eRow+"]"+chkNode1) != "Y" ) {
  1221. if(tRow ==1){
  1222. return;
  1223. }else{
  1224. model.setValue(pPath+"["+eRow+"]"+chkNode1, "Y"); ///////에러나는 줄2
  1225. }
  1226. } else {
  1227. model.setValue(pPath+"["+eRow+"]"+chkNode1, "");
  1228. }
  1229. } else {
  1230. if (iRow != "0") {
  1231. if (iRow == eRow){
  1232. for(i = iRow ; i < iRow+sRow ; i++) {
  1233. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ) {
  1234. model.setValue(pPath+"["+i+"]"+chkNode1, "Y");
  1235. }
  1236. }
  1237. } else {
  1238. for(i = eRow; i <= iRow ; i ++ ){
  1239. if(model.getValue(pPath+"["+i+"]"+chkNode1) != "Y" ) {
  1240. model.setValue(pPath+"["+i+"]"+chkNode1, "Y");
  1241. }
  1242. }
  1243. }
  1244. } // if irow end
  1245. }
  1246. }
  1247. }
  1248. }
  1249. }
  1250. function fPrcpDC(){
  1251. //------------------------------------------------------------------------------------------------------
  1252. // 간호 확인 약처방을 의사가 D/C(반납)를 하였을 경우에 투약기록지로 가서 해결하라는 메세지를 보여준다
  1253. // sdm
  1254. //------------------------------------------------------------------------------------------------------
  1255. var prcpddprcpno = ""; //------------(20080917)김보성
  1256. if(messageBox ( "DC 처리를 ", "Q003" ) == "6"){
  1257. //var iRow = grd_patlist.findRow(model.getValue("/root/main/condition/pid"), 1, grd_patlist.colRef("pid"), false, false);
  1258. var sHeaderData = "status▦prcpdd▦prcpno▦prcphistno▦instcd▩";
  1259. var dcPrcpInfo = "";
  1260. var dcMediPrcpInfo = "";
  1261. var dcPrcpCnt = 0;
  1262. var tRow = grd_erprcplist.rows;
  1263. var prcpno = "";
  1264. var dcstatus = "";
  1265. for(i=1 ; i < tRow ; i ++){
  1266. var chkprcp = model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpnm");
  1267. // 그리드에서 선택된 처방 선택
  1268. if(model.getValue("/root/main/erprcplist/inginfo["+i+"]/selectyn") == "Y" ){
  1269. //미수행 처방 선택 ( Actiong 완료, 퇴원약 약국전송 건 제외)
  1270. if(model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpkindcdyn") == "Y" ){
  1271. messageBox(chkprcp + "는 퇴원약 처방입니다.\n퇴원 처방은 간호사가 D/C할 수 없습니다.","E");
  1272. } else{
  1273. if( model.getValue("/root/main/erprcplist/inginfo["+i+"]/execyn") == "N" || model.getValue("/root/main/erprcplist/inginfo["+i+"]/execyn") == "E" ){
  1274. //dcstatus E 이면 의사 후인증을 안타도록 "MEDI", N이면 후인증타도록 "CERT"
  1275. dcstatus = ( model.getValue("/root/main/erprcplist/inginfo["+i+"]/execyn") == "N" ? "CERT" : "MEDI");
  1276. switch( model.getValue("/root/main/erprcplist/inginfo["+i+"]/execyn") ){
  1277. case "N" : //정상처방인것이고 처방 인터페이스를 타면 의사 처방반환요청 상태인 "E"로 변경됨.
  1278. dcPrcpInfo += "C▦"
  1279. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpdd" ) + "▦"
  1280. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpno" ) + "▦"
  1281. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcphistno" ) + "▦"
  1282. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/instcd" ) + "▩";
  1283. case "E" :
  1284. /*의사반환요청들어온 처방이고 투약기록에서 DC최종 정리를 하고 후인증처리대상이 안됨.dcstatus "CERT"인것은 후인증관리에도 조회가 되어야한다.
  1285. 투약기록을 태우기위한 파라미터 정의이므로 case "N" 에는 break가 없는게 정상임. 20100108 김홍점
  1286. */
  1287. prcpno = model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpno");
  1288. dcMediPrcpInfo += dcstatus + "▦"
  1289. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpdd" ) + "▦"
  1290. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpno" ) + "▦"
  1291. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcphistno" ) + "▦"
  1292. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/instcd" ) + "▩";
  1293. dcPrcpCnt++;
  1294. //-----------------(20080926) 김보성
  1295. if (model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpstatcd") >= "000" ) {
  1296. prcpddprcpno += "'"
  1297. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpdd")
  1298. + model.getValue("/root/main/erprcplist/inginfo["+i+"]/prcpno")
  1299. + "',";
  1300. }
  1301. break;
  1302. }
  1303. } else if(model.getValue("/root/main/erprcplist/inginfo["+i+"]/execyn") == "DC") {
  1304. messageBox(chkprcp+"는 반환요청된 처방입니다.","E");
  1305. } else {
  1306. messageBox(chkprcp+"는 이미 시행된 처방입니다.","E");
  1307. }
  1308. }
  1309. }
  1310. }
  1311. model.makeValue("/root/send/cond3" , sHeaderData+dcPrcpInfo );
  1312. model.makeValue("/root/send/cond5" , sHeaderData+dcMediPrcpInfo );
  1313. //저장구분정보(saveFlagInfo)
  1314. model.setValue ( "/root/save/saveflaginfo/savedataflag" , "2" ); //저장자료구분 0:진단 및 처방, 1:진단, 2:처방, 4:임시저장
  1315. model.setValue ( "/root/save/saveflaginfo/saveflag" , "I" ); //저장구분 O:외래, I:입원, E:응급, S:건진
  1316. model.setValue ( "/root/save/saveflaginfo/prcpflag" , "0" ); //처방구분 0:의사처방, 2:간호, 3:지원부서, 5:Admission, 6:CP, 7:항암프로토콜, 8:임시처방
  1317. model.setValue ( "/root/save/saveflaginfo/inptflag" , "3" ); //입력구분 (11:건진처방, 12:LIS장비IF, 13:기타LIS, 14:병리, 15:EMR기록, 16:원무)
  1318. model.setValue ( "/root/save/saveflaginfo/pamflag" , "Y" ); //원무정보 처리구분 (Y/N) -> N일 경우 check하지 않음.
  1319. model.setValue ( "/root/save/saveflaginfo/diagflag" , "Y" ); //진단정보 처리구분 (Y/N) -> N일 경우 check하지 않음. ('Y'이면 진단없이 처방 저장이 안됨)
  1320. model.setValue ( "/root/save/saveflaginfo/prcperrflag" , "Y" ); //처방오류구분(Y/N) -> Y일 경우 의사처방과 동일하게 오류리스트를 반환, N이면 오류를 확인하지 않음
  1321. model.setValue ( "/root/save/saveflaginfo/deptcd" , getUserInfo("dutplcecd") ); //부서코드
  1322. model.setValue ( "/root/save/saveflaginfo/deptnm" , getUserInfo("dutplcenm") ); //부서명
  1323. model.setValue ( "/root/save/saveflaginfo/userid" , getUserInfo("userid") ); //사용자ID
  1324. model.setValue ( "/root/save/saveflaginfo/usernm" , getUserInfo("usernm") ); //사용자명
  1325. model.setValue ( "/root/save/saveflaginfo/signyn" , "N" ); //전자서명여부
  1326. var saveFlagInfoNodeList = model.instances(0).selectNodes( "/root/save/saveflaginfo" );
  1327. model.makeValue ( "/root/send/cond1", getNodeListCSV(saveFlagInfoNodeList));
  1328. //저장등록정보(saveRgstInfo)
  1329. model.setValue ( "/root/save/savergstinfo/pid" , model.getValue("/root/main/paminfo/list/pid") ); // 등록번호(원무Key)
  1330. model.setValue ( "/root/save/savergstinfo/orddd" , "-" ); // 진료일자(원무Key) - 입원일경우는 '-'
  1331. model.setValue ( "/root/save/savergstinfo/indd" , model.getValue("/root/main/paminfo/list/indd") ); // 입원일자(원무Key)
  1332. model.setValue ( "/root/save/savergstinfo/cretno" , model.getValue("/root/main/paminfo/list/cretno") ); // 생성번호(원무Key)
  1333. model.setValue ( "/root/save/savergstinfo/orddeptcd" , model.getValue("/root/main/paminfo/list/orddeptcd") ); // 진료과(원무)
  1334. model.setValue ( "/root/save/savergstinfo/orddrid" , model.getValue("/root/main/paminfo/list/atdoctid") ); // 진료의ID(원무)
  1335. model.setValue ( "/root/save/savergstinfo/instcd" , model.getValue("/root/main/paminfo/list/instcd") ); // 기관코드
  1336. var saveRgstInfo = model.instances(0).selectNodes( "/root/save/savergstinfo");
  1337. model.makeValue("/root/send/cond2", getNodeListCSV(saveRgstInfo));
  1338. // D/C할 처방이 없을 경우 return처리
  1339. if( dcPrcpCnt > 0 ){
  1340. //1. 인증을 위한 자료 추출
  1341. prcpddprcpno = prcpddprcpno.substr(0,prcpddprcpno.length-1);
  1342. fnSignSaveCall("30", prcpddprcpno);
  1343. //----------------(20090923)
  1344. if (getNodesetCount("/root/signinfo/signsave/signdata") > 0 ) {
  1345. //2. 자료에 대해서 인증하기
  1346. if (fnSignSaveWork() == true) {
  1347. //3. 인증자료를 묶음 submit("TXMNP06013")
  1348. var signsave = model.instances(0).selectNodes("/root/signinfo/signsave/signdata");
  1349. model.makeValue("/root/send/cond4", getNodeListCSV(signsave));
  1350. } else {
  1351. return ; //---(20080922)
  1352. }
  1353. }
  1354. //----------------(20090923)
  1355. //-----------------------(20080917)
  1356. if(submit("TXMNE00203") == true ){
  1357. if(getNodesetCount("/root/temp/errlist") > 0){
  1358. var iNode = "/root/srcdata/list/patlist";
  1359. fShowModal("SPMNE00200");
  1360. }
  1361. fErPrcplist();
  1362. //-----------------------(20080917):김보성
  1363. //1. 일자별 인증을 위한 일자 추출
  1364. var signDates = new Array;
  1365. var signDateCnt = 0;
  1366. var signdispdd = "";
  1367. var sPathsignsave = "/root/signinfo/signsave/signdata";
  1368. var rows = getNodesetCount(sPathsignsave);
  1369. if (rows <= 0 ) return;
  1370. for (var i=1;i<= rows ;i++) { //---(0922)
  1371. signdispdd = model.getValue(sPathsignsave + "[" + i + "]/execdd");
  1372. if ( signDates.length == 0) {
  1373. signDateCnt =0;
  1374. signDates[signDateCnt] = "";
  1375. }
  1376. if ( signdayFind(signDates,signdispdd) == true ) { //------(투약일자)
  1377. signDateCnt ++;
  1378. signDates[signDateCnt] = signdispdd;
  1379. }
  1380. }
  1381. //2. 투약기록을 일자별로 XLST를 만들기 위해서
  1382. fnWorkddSign(signDates);
  1383. //-----------------------(20080917)
  1384. }
  1385. }
  1386. }
  1387. }
  1388. //=====================================================================================
  1389. // 아래는 약 D/C 시 투약기록에 반영및 투약기록 일자별 XSLT 생성하기(20080917) 김보성
  1390. //=====================================================================================
  1391. // 투약기록 통합기록을 위한 자료 추출질의문
  1392. // prcpddprcpno으로 n개의 iprc에 대한 exip단위의 정보를 추출한다.
  1393. function fnSignSaveCall(workflag, prcpddprcpno) {
  1394. var sPathSign = "/root/signinfo";
  1395. model.resetInstanceNode(sPathSign + "/reqsigncond");
  1396. var spid = model.getValue("/root/main/paminfo/list/pid"); //등록번호(필수)
  1397. var sinstcd = getUserInfo("dutplceinstcd"); //기관코드(사용X)
  1398. var sindd = model.getValue("/root/main/paminfo/list/indd"); //입원일자(필수)
  1399. var scretno = ""; //생성번호(사용X)
  1400. var sprcpdd = ""; //처방일자(PRN시 필수)
  1401. var sprcpno = ""; //처방번호(확인사항)
  1402. var sworkdd = ""; //투약일(일자그룹일때만 (필수))
  1403. var slistflag = workflag; //작업구분(필수)
  1404. var snursnm = getUserName(); //간호사명추가(필수)
  1405. var shngnm = model.getValue("/root/main/paminfo/list/hngnm"); //환자명추가 (필수)
  1406. var smedrexecdd = ""; //화면에서저장할투약일자(사용X)
  1407. var smedrexectm = ""; //화면에서저장할투약시간(사용X)
  1408. var sprcpddprcpno = prcpddprcpno; //n개의 iprc
  1409. model.setValue(sPathSign + "/reqsigncond/pid", spid ); //desc="등록번호"
  1410. model.setValue(sPathSign + "/reqsigncond/instcd", sinstcd ); //desc="기관코드"
  1411. model.setValue(sPathSign + "/reqsigncond/indd", sindd ); //desc="입원일자"
  1412. model.setValue(sPathSign + "/reqsigncond/cretno", scretno ); //desc="생성번호"
  1413. model.setValue(sPathSign + "/reqsigncond/prcpdd", sprcpdd ); //desc="처방일자"
  1414. model.setValue(sPathSign + "/reqsigncond/prcpno", sprcpno ); //desc="처방번호"
  1415. model.setValue(sPathSign + "/reqsigncond/workdd", sworkdd ); //desc="투약일"
  1416. model.setValue(sPathSign + "/reqsigncond/listflag", slistflag ); //desc="작업구분"
  1417. model.setValue(sPathSign + "/reqsigncond/nursnm", snursnm ); //desc="간호사명추가"
  1418. model.setValue(sPathSign + "/reqsigncond/hngnm" , shngnm ); //desc="환자명추가"
  1419. model.setValue(sPathSign + "/reqsigncond/medrexecdd", smedrexecdd ); //desc="화면에서저장할투약일자"
  1420. model.setValue(sPathSign + "/reqsigncond/medrexectm", smedrexectm ); //desc="화면에서저장할투약시간"
  1421. model.setValue(sPathSign + "/reqsigncond/prcpddprcpno", sprcpddprcpno ); //desc=""
  1422. var sPathSign = "/root/signinfo";
  1423. model.removenode(sPathSign + "/signsave/signdata");
  1424. submit("TRMNR00608");
  1425. }
  1426. /**
  1427. * @group :
  1428. * @ver : 2008.08.31
  1429. * @by : 김보성
  1430. * @---------------------------------------------------
  1431. * @type : function
  1432. * @access : public
  1433. * @desc : 투약기록 관련 인증저장(interface제공한 web에서 사용)(iprc단위 1개 처리용)
  1434. * : 따라서 여러개의 iprc이면 n번 호출해야한다.
  1435. * @param :
  1436. * @return :
  1437. * @---------------------------------------------------
  1438. */
  1439. function fnSignSaveWork() {
  1440. var sSignPath = "/root/signinfo/signsave/signdata";
  1441. var sSignPathCount = getNodesetCount(sSignPath);
  1442. var sPathSignSave = "/root/signinfo/signsave/signdata";
  1443. if ( sSignPathCount <= 0 ) {
  1444. messageBox("자료가 존재하지 않습니다. ","E999");
  1445. return false;
  1446. }
  1447. Sign.certreload = true ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리(20080922)
  1448. model.removenode("/root/send/savedata");
  1449. for(var j = 1; j <= getNodesetCount(sSignPath); j++){
  1450. //alert("loop:"+j);
  1451. sSignRow= j; //전역변수(프로그램내)
  1452. if(Sign.signprocess() == false){//인증저장 데이터 생성fMake_SignData 호출
  1453. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 안뜨도록 처리(20080922)
  1454. return false;
  1455. }
  1456. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 안뜨도록 처리(20080922)
  1457. model.setValue(sPathSignSave + "[" + j + "]/recdd", getCurrentDate()); //실제기록이 이루어진 기록일자
  1458. model.setValue(sPathSignSave + "[" + j + "]/rectm", getCurrentTime()); //실제기록이 이루어진 기록시간
  1459. model.setValue(sPathSignSave + "[" + j + "]/recsaveflag", "Y"); //전자서명인적정보변경여부
  1460. model.setValue(sPathSignSave + "[" + j + "]/signflag", "02"); //서명자료구분(02:간호)
  1461. model.setValue(sPathSignSave + "[" + j + "]/signgenrflag","E"); //외래/입원구분
  1462. model.setValue(sPathSignSave + "[" + j + "]/formcd", "0000002476"); //투약기록 서식번호
  1463. model.setValue(sPathSignSave + "[" + j + "]/signbfcnts", Sign.signedInfos[1]); //인증할 데이터 정보(미기록 노드 제거된 정보)
  1464. model.setValue(sPathSignSave + "[" + j + "]/signaftcnts", Sign.signedInfos[2]); //공인인증 처리후 데이터
  1465. model.setValue(sPathSignSave + "[" + j + "]/signflagyn", "Y"); //비공식적으로 인증되지않도록 제어할수 있는기능
  1466. //--------------------------(20080921)
  1467. //건별인증은 통합기록조회에서 보이지 않고 일자별을 보이기 위해서
  1468. //건별인증은 dispyn ='N'
  1469. //하단의 일자별인 경우만 보임
  1470. model.setValue(sPathSignSave + "[" + j + "]/dispyn", "N");
  1471. //--------------------------(20080921)
  1472. }
  1473. return true;
  1474. }
  1475. //일자별 XSLT 생성작업
  1476. function fnWorkddSign(signDates) {
  1477. //-----------------------------------------------)
  1478. // 투약기록을 일자별로 XLST를 만들기 위해서
  1479. //-----------------------------------------------
  1480. var sPathSign = "/root/signinfo";
  1481. var signDate = "";
  1482. //alert(signDates.length);
  1483. for (var i=0;i<signDates.length;i++) {
  1484. signDate = "" + signDates[i];
  1485. //alert("1:" + signDate);
  1486. if ( signDate != "") {
  1487. model.resetInstanceNode(sPathSign + "/reqsigncond");
  1488. signDate = signDate.replace("-","");
  1489. //alert("2:" + signDate);
  1490. var spid = model.getValue("/root/main/paminfo/list/pid"); //등록번호(필수)
  1491. var sinstcd = getUserInfo("dutplceinstcd"); //기관코드(사용X)
  1492. var sindd = model.getValue("/root/main/paminfo/list/indd"); //입원일자(필수)
  1493. var scretno = model.getValue("/root/main/paminfo/list/cretno"); //생성번호(사용X)
  1494. var sprcpdd = ""; //처방일자(PRN시 필수)
  1495. var sprcpno = ""; //처방번호(확인사항)
  1496. var sworkdd = signDate; //투약일(일자그룹일때만 (필수))
  1497. var slistflag = "90"; //작업구분(필수)
  1498. var snursnm = getUserName(); //간호사명추가(필수)
  1499. var shngnm = model.getValue("/root/main/paminfo/list/hngnm"); //환자명추가 (필수)
  1500. var smedrexecdd = ""; //화면에서저장할투약일자(사용X)
  1501. var smedrexectm = ""; //화면에서저장할투약시간(사용X)
  1502. model.setValue(sPathSign + "/reqsigncond/pid" ,spid ); //desc="등록번호"
  1503. model.setValue(sPathSign + "/reqsigncond/instcd" ,sinstcd ); //desc="기관코드"
  1504. model.setValue(sPathSign + "/reqsigncond/indd" ,sindd ); //desc="입원일자"
  1505. model.setValue(sPathSign + "/reqsigncond/cretno" ,scretno ); //desc="생성번호"
  1506. model.setValue(sPathSign + "/reqsigncond/prcpdd" ,sprcpdd ); //desc="처방일자"
  1507. model.setValue(sPathSign + "/reqsigncond/prcpno" ,sprcpno ); //desc="처방번호"
  1508. model.setValue(sPathSign + "/reqsigncond/workdd" ,sworkdd ); //desc="투약일"
  1509. model.setValue(sPathSign + "/reqsigncond/listflag" ,slistflag ); //desc="작업구분"
  1510. model.setValue(sPathSign + "/reqsigncond/nursnm" ,snursnm ); //desc="간호사명추가"
  1511. model.setValue(sPathSign + "/reqsigncond/hngnm" ,shngnm ); //desc="환자명추가"
  1512. model.setValue(sPathSign + "/reqsigncond/medrexecdd" ,smedrexecdd); //desc="화면에서저장할투약일자"
  1513. model.setValue(sPathSign + "/reqsigncond/medrexectm" ,smedrexectm); //desc="화면에서저장할투약시간"
  1514. var pFlag = "Drug"; //저장구분 (Drug : 투약기록)
  1515. var pNode1 = ""; //조회할 조건 PATH(의미없음)
  1516. var pNode2 = "/root/signinfo/signdruginfo/signdruglist"; //Return 리스트 PATH
  1517. //alert("signDate:" + i + "/" + signDate);
  1518. //임시로 막음(test)
  1519. fCare_SignNode(pFlag, pNode1, pNode2,spid,sindd,scretno,"I"); //-----(20080917)수정
  1520. //fCare_SignNode(pFlag, pNode1, pNode2, pPid, pIndd, pCretno, pIoflag){
  1521. }
  1522. }
  1523. }
  1524. //인증정보 말기
  1525. function fMake_SignData(){
  1526. //alert("fMake_SignData---------시작");
  1527. /*
  1528. <signinfo>
  1529. <signdata>
  1530. <pid>29953</pid>
  1531. <hngnm>T입0820</hngnm>
  1532. <prcpdd>20080821</prcpdd>
  1533. <execdd>20080821</execdd>
  1534. <prcpkindnm/>
  1535. <prcpmixno/>
  1536. <prcpcd>DSSL500</prcpcd>
  1537. <prcpnm>Disal tab. 500mg (Salsalate)</prcpnm>
  1538. <prcpvolnm>1500mg</prcpvolnm>
  1539. <prcpqtynm>3T</prcpqtynm>
  1540. <abbrnm>PO</abbrnm>
  1541. <exectm>130000</exectm>
  1542. <nursnm>김보성</nursnm>
  1543. <execcarestatnm>정상투약</execcarestatnm>
  1544. <carecfactnm> </carecfactnm>
  1545. <orddrnm>김만수</orddrnm>
  1546. </signdata>
  1547. </signinfo>
  1548. */
  1549. var ssigndruglist = "/root/signinfo/signsave/signdata";
  1550. var spid = model.getValue(ssigndruglist + "[" + sSignRow + "]/pid");
  1551. var shngnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/hngnm");
  1552. var sprcpdd = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpdd");
  1553. var sexecdd = model.getValue(ssigndruglist + "[" + sSignRow + "]/execdd");
  1554. /*
  1555. ,CASE WHEN a.careprnexecflag = 'P' THEN 'PRN' ELSE '' END || ' ' ||
  1556. CASE WHEN a.anticncrprtlno <> 0 THEN '항암' ELSE '' END || ' ' ||
  1557. CASE WHEN a.dccountyn = 'Y' AND a.selfdrugflag = 'Y' THEN 'self D/C'
  1558. WHEN a.dccountyn = 'Y' then 'D/C'
  1559. WHEN a.selfdrugflag = 'Y' then 'self'
  1560. END prcpkindnm
  1561. //처방종류명 (다른업무에서 투약기록관련인증정보를 생성시 어려운 항목
  1562. */
  1563. var sprcpkindnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpkindnm");
  1564. var sprcpmixno = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpmixno");
  1565. var sprcpcd = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpcd");
  1566. var sprcpnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpnm");
  1567. var sprcpvolnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpvolnm");
  1568. var sprcpqtynm = model.getValue(ssigndruglist + "[" + sSignRow + "]/prcpqtynm");
  1569. var sabbrnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/abbrnm");
  1570. var sexectm = model.getValue(ssigndruglist + "[" + sSignRow + "]/exectm");
  1571. var snursnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/nursnm");
  1572. var sexeccarestatnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/execcarestatnm");
  1573. var scarecfactnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/carecfactnm");
  1574. var sorddrnm = model.getValue(ssigndruglist + "[" + sSignRow + "]/orddrnm");
  1575. model.resetInstanceNode("/root/send/signinfo/signdata");
  1576. model.makeValue("/root/send/signinfo/signdata/pid", spid );
  1577. model.makeValue("/root/send/signinfo/signdata/hngnm", shngnm );
  1578. model.makeValue("/root/send/signinfo/signdata/prcpdd", sprcpdd ); //처방일자
  1579. if(sexecdd == "00000000"){ //투약일자
  1580. model.makeValue("/root/send/signinfo/signdata/execdd", "");
  1581. }else{
  1582. model.makeValue("/root/send/signinfo/signdata/execdd", sexecdd);
  1583. }
  1584. model.makeValue("/root/send/signinfo/signdata/prcpkindnm", sprcpkindnm );
  1585. model.makeValue("/root/send/signinfo/signdata/prcpmixno", sprcpmixno ); //MIXNO
  1586. model.makeValue("/root/send/signinfo/signdata/prcpcd", sprcpcd ); //처방코드
  1587. model.makeValue("/root/send/signinfo/signdata/prcpnm", sprcpnm ); //처방명
  1588. model.makeValue("/root/send/signinfo/signdata/prcpvolnm", sprcpvolnm ); //용량단위명칭(용량+용량단위명칭)
  1589. model.makeValue("/root/send/signinfo/signdata/prcpqtynm", sprcpqtynm ); //수량단위명칭(수량+수량단위명칭)
  1590. //투여방법약어명(다른업무에서 투약기록관련인증정보를 생성시 어려운 항목)
  1591. model.makeValue("/root/send/signinfo/signdata/abbrnm", sabbrnm );
  1592. if(sexectm == "000000"){ //투약시간
  1593. model.makeValue("/root/send/signinfo/signdata/exectm", "");
  1594. }else{
  1595. model.makeValue("/root/send/signinfo/signdata/exectm", sexectm);
  1596. }
  1597. model.makeValue("/root/send/signinfo/signdata/nursnm", snursnm); //간호사명칭
  1598. if(sexeccarestatnm == "") sexeccarestatnm = "N";
  1599. //미확인,정상투약,투약X-반환가능,투약X-반환불가,퇴원당일남은약
  1600. //(다른업무에서 투약기록관련인증정보를 생성시 정상투약,)
  1601. model.makeValue("/root/send/signinfo/signdata/execcarestatnm", sexeccarestatnm);
  1602. //간호사REMARK CODE에 대한 REMARK 명칭((다른업무에서 투약기록관련인증정보를 생성시 공백)
  1603. model.makeValue("/root/send/signinfo/signdata/carecfactnm", scarecfactnm);
  1604. //진료의명(다른업무에서 투약기록관련인증정보를 생성시 어려운 항목)
  1605. model.makeValue("/root/send/signinfo/signdata/orddrnm", sorddrnm);
  1606. Sign.addnode("/root/send/signinfo/signdata");
  1607. //alert("fMake_SignData---------종료");
  1608. //Sign.signedInfos[1] 는 없음
  1609. //alert("fmake_signdata"+ Sign.signedInfos[1] );
  1610. }
  1611. //일자별 인증정보를 묶을 일자를 찾는다
  1612. //넣어야 할지는 판단한다.
  1613. function signdayFind(signDates,findDate) {
  1614. var sreturn = false;
  1615. if (findDate == "00000000" || findDate == "") {
  1616. } else {
  1617. //alert("signDates.length:"+ signDates.length);
  1618. for (var i=0;i<signDates.length;i++) {
  1619. //alert("비교:" + signDates[i] + "/" + findDate);
  1620. sreturn = true;
  1621. if ( signDates[i] == findDate) {
  1622. sreturn = false;
  1623. break;
  1624. }
  1625. }
  1626. }
  1627. return sreturn;
  1628. }