SMMNW01200.xjs 101 KB

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