SMMMO05700.js 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 수술예약장부등록 ( SMMMO05700_수술예약장부등록.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var sOPSCHERECINFO_PATH = "/root/main/opscherecinfo/opscherecinfo";
  7. var sOPSCHERECLIST_PATH = "/root/main/opschereclist/opschereclist";
  8. var sPATORDINFOLIST_PATH= "/root/patordinfo/patordinfolist";
  9. var gButtonID = "";
  10. //2012/06/26 Start
  11. // 수술 예방적 항생제 관련
  12. var nodecnt ="";
  13. //2012/06/26 End
  14. /**
  15. * @desc : 수술 예약 장부 등록 화면 초기화
  16. * @
  17. * @param :
  18. * @return :
  19. * @author : 오지훈
  20. * @---------------------------------------------------
  21. */
  22. function fInitialize_SMMMO05700(){
  23. model.removeNodeset(sOPSCHERECLIST_PATH);
  24. fClkBtnInit();
  25. //강남성모는 외래 disable
  26. //2008.08.25 LWS 수술예약정부에서는 외래 활성화
  27. //if(getUserInfo("dutplceinstcd") == "012") rdo_out.disabled = true;
  28. //login 집도의, 집도과 mapping
  29. if( !isNull(getUserInfo("dutplcecd"))) model.setValue("/root/main/opscherecinfo/opscherecinfo/perfdeptcd", getUserInfo("dutplcecd"));
  30. if( !isNull(getUserId())) model.setValue("/root/main/opscherecinfo/opscherecinfo/perfdrid", getUserId());
  31. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept", "O");
  32. addComboInstance("/root/init/orddept", "deptcd^depthngnm", "-^전체", "dept"); //부서콤보 전체항목 추가
  33. mmbfGetDeptCodeComboList("/root/send/reqdata", "/root/init/orddept2", "O");
  34. var deptcd = model.getValue("/root/init/orddept/dept[deptcd = '" + getUserInfo("dutplcecd") + "']");
  35. if(deptcd == ""){
  36. model.setValue("/root/main/cond/orddeptcd", "-");
  37. }
  38. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", getUserInfo("dutplcecd"), "0330");
  39. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist2", getUserInfo("dutplcecd"), "0330");
  40. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist3", getUserInfo("dutplcecd"), "0330");
  41. addComboInstance("/root/init/userlist2", "userid^usernm", "-^전체", "usercombo"); //부서콤보 전체항목 추가
  42. addComboInstance("/root/init/userlist3", "userid^usernm", "^전체", "usercombo"); //부서콤보 전체항목 추가
  43. model.setValue("/root/main/cond/perfdrid", "-");
  44. model.setValue("/root/main/cond/scheperfdrid", "");
  45. zbcfGetCodeList(new Array("M0014", "M0017", "M0020"), new Array("/root/init/M0014", "/root/init/M0017", "/root/init/M0020"));
  46. reqOpRoomList(getCurrentDate(), "/root/init/oproomlist" , "total"); //수술실 조회
  47. reqOpRoomList(getCurrentDate(), "/root/init/oproomlist2", "total"); //수술실 조회 (일별 가능한 수술실 조회가 아닌 수술실 전체 조회)
  48. addComboInstance("/root/init/oproomlist2", "oproomcd^oproomnm", "-^전체", "oproomlist"); //수술실콤보 전체항목 추가
  49. mmbfGetHardCodeInfoNm("/root/send/reqdata", "/root/init/oppatflag", 84); //수술환자구분
  50. fChkPatTopInfoParam();
  51. model.setValue("/root/main/cond/fromdd", getCurrentDate());//시작일자
  52. var todd = (getCurrentDate().toDate()).getAddDate(3);
  53. todd = todd.getDateFormat();
  54. model.setValue("/root/main/cond/todd" , todd); //종료일자
  55. model.setValue("/root/main/cond/oproomcd" , "-"); //수술실
  56. model.setValue("/root/main/cond/perfdeptcd", getUserInfo("dutplcecd"));
  57. model.setValue("/root/main/cond/year" , getCurrentDate().substr(0, 4)); //year
  58. model.setValue("/root/main/cond/month", getCurrentDate().substr(4, 2)); //month
  59. gButtonID = "btn_".concat(model.getValue("/root/main/cond/month")); //select된 button의 color를 변경해 준다.
  60. var btnobj = document.controls.item(gButtonID);
  61. btnobj.attribute("class") = "btn5_letter2";
  62. grd_calendar.dataheight = 58;
  63. fReqOpScheRecCalendar();
  64. //2012/06/25 Start
  65. //수술 예방적 항생제 관련
  66. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/temp/opcd", 5606);
  67. nodecnt = instance1.selectNodes("/root/temp/opcd/hardcd");
  68. //2012/06/25 End
  69. //fReqDiagList();
  70. reqOrderInfoOfCol("SMMMO05700", "grd_opschelist");
  71. }
  72. /**
  73. * @desc : 수술 예약 장부 등록값 초기화
  74. * @
  75. * @param :
  76. * @return :
  77. * @author : 오지훈
  78. * @---------------------------------------------------
  79. */
  80. function fClkBtnInit(){
  81. model.resetInstanceNode(sOPSCHERECINFO_PATH);
  82. model.setValue(sOPSCHERECINFO_PATH + "/opschedd", getCurrentDate());
  83. model.setValue(sOPSCHERECINFO_PATH + "/status" , "i");
  84. ipt_opcd.attribute("editable") = "true";
  85. ipt_opnm.attribute("editable") = "true";
  86. ipt_diagcd.attribute("editable") = "true";
  87. ipt_diagnm.attribute("editable") = "true";
  88. model.refresh();
  89. }
  90. /**
  91. * @desc : 수술명 검색 팝업 open
  92. * @
  93. * @param : pFlag 처리구분 (code : 코드검색, term : 수술명)
  94. * @return :
  95. * @author : 오지훈
  96. * @---------------------------------------------------
  97. */
  98. function fOpenOpSearch(pFlag){
  99. if(pFlag == "code"){
  100. var param = "1▦" +
  101. "1▦E▦" +
  102. getCurrentDate() + "▦" +
  103. model.getValue(sOPSCHERECINFO_PATH + "/dispopcd");
  104. setParameter("SPMMO05200_param", param);
  105. }else if(pFlag == "term"){
  106. var opnm = model.getValue("/root/main/opscherecinfo/opscherecinfo/opnm");
  107. var param = "2▦4▦" +
  108. fIsHangul(opnm) + "▦" +
  109. getCurrentDate() + "▦" +
  110. opnm;
  111. setParameter("SPMMO05200_param", param);
  112. }
  113. modal("SPMMO05200");
  114. var useyn = getParameter("SPMMO05200_rtn_useyn");
  115. if(useyn == "Y"){
  116. setParameter("SPMMO05200_rtn_useyn", "N");
  117. var rtnparam = getParameter("SPMMO05200_rtn_param");
  118. rtnparam = rtnparam.split("▩");
  119. var tmpstr = rtnparam[0];
  120. tmpstr = tmpstr.split("▦");
  121. model.setValue(sOPSCHERECINFO_PATH + "/dispopcd" , tmpstr[0]);
  122. model.setValue(sOPSCHERECINFO_PATH + "/opcd" , tmpstr[1]);
  123. model.setValue(sOPSCHERECINFO_PATH + "/opnm" , tmpstr[2]);
  124. ipt_opcd.attribute("editable") = "false";
  125. ipt_opnm.attribute("editable") = "false";
  126. model.setFocus("ipt_diagcd");
  127. model.refresh();
  128. }else{
  129. model.setValue(sOPSCHERECINFO_PATH + "/dispopcd", "");
  130. model.setValue(sOPSCHERECINFO_PATH + "/opcd" , "");
  131. model.setValue(sOPSCHERECINFO_PATH + "/opnm" , "");
  132. model.refresh();
  133. }
  134. }
  135. /**
  136. * @desc : 진단명 검색 팝업 open
  137. * @
  138. * @param : pFlag 처리구분 (code : 코드검색, term : 수술명)
  139. * @return :
  140. * @author : 오지훈
  141. * @---------------------------------------------------
  142. */
  143. function fOpenDiagSearch(pFlag){
  144. if(pFlag == "code"){
  145. setParameter("SPMMO00800_cond1", 1);
  146. setParameter("SPMMO00800_cond2", 1);
  147. setParameter("SPMMO00800_cond3", "E");
  148. setParameter("SPMMO00800_cond4", getCurrentDate());
  149. setParameter("SPMMO00800_cond5", model.getValue(sOPSCHERECINFO_PATH + "/dispdiagcd"));
  150. }else if(pFlag =="term"){
  151. var diagnm = model.getValue(sOPSCHERECINFO_PATH + "/diagnm");
  152. setParameter("SPMMO00800_cond1", 2);
  153. setParameter("SPMMO00800_cond2", 4);
  154. setParameter("SPMMO00800_cond3", fIsHangul(diagnm));
  155. setParameter("SPMMO00800_cond4", getCurrentDate());
  156. setParameter("SPMMO00800_cond5", diagnm);
  157. }
  158. modal("SPMMO00800");
  159. var useyn = getParameter("SPMMO00800_rtn_useyn");
  160. if(useyn == "Y"){
  161. setParameter("SPMMO00800_rtn_useyn", "N");
  162. var rtnparam = getParameter("SPMMO00800_rtn");
  163. rtnparam = rtnparam.split("▩");
  164. var tmpstr = rtnparam[1];
  165. tmpstr = tmpstr.split("▦");
  166. model.setValue(sOPSCHERECINFO_PATH + "/dispdiagcd", tmpstr[1]);
  167. model.setValue(sOPSCHERECINFO_PATH + "/diagcd" , tmpstr[9]);
  168. model.setValue(sOPSCHERECINFO_PATH + "/diagnm" , tmpstr[2]);
  169. ipt_diagcd.attribute("editable") = "false";
  170. ipt_diagnm.attribute("editable") = "false";
  171. model.setFocus("ipt_opregstremfact");
  172. model.refresh();
  173. }else{
  174. model.setValue(sOPSCHERECINFO_PATH + "/dispdiagcd", "");
  175. model.setValue(sOPSCHERECINFO_PATH + "/diagcd" , "");
  176. model.setValue(sOPSCHERECINFO_PATH + "/diagnm" , "");
  177. model.refresh();
  178. }
  179. }
  180. /**
  181. * @desc : 수술예약 리스트 그리드 클릭
  182. * @
  183. * @param :
  184. * @return :
  185. * @author : 오지훈
  186. * @---------------------------------------------------
  187. */
  188. function fClkGrdOpScheList(){
  189. if(grd_opschelist.isCell(event.target) && grd_opschelist.row >= grd_opschelist.fixedRows){
  190. var orddeptcd = model.getValue(sOPSCHERECLIST_PATH + "[" + grd_opschelist.row + "]/perfdeptcd");
  191. //zsufGetUserInfoCombo(orddeptcd, "/root/init/userlist", "_D"); //의사 콤보조회
  192. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", orddeptcd, "0330");
  193. model.copyNode(sOPSCHERECINFO_PATH, sOPSCHERECLIST_PATH + "[" + grd_opschelist.row + "]");
  194. model.copyNode("/root/cmpopschelist", sOPSCHERECLIST_PATH + "[" + grd_opschelist.row + "]");
  195. model.setValue("/root/cmpopschelist/status", "u");
  196. model.setValue(sOPSCHERECINFO_PATH + "/status", "u");
  197. }
  198. if(ipt_opcd.value != null) {
  199. ipt_opcd.attribute("editable") = "false";
  200. ipt_opnm.attribute("editable") = "false";
  201. }
  202. if(ipt_diagcd.value != null) {
  203. ipt_diagcd.attribute("editable") = "false";
  204. ipt_diagnm.attribute("editable") = "false";
  205. }
  206. model.refresh();
  207. }
  208. /**
  209. * @desc : 수술예약장부 달력정보 조회
  210. * @
  211. * @param :
  212. * @return :
  213. * @author : 오지훈
  214. * @---------------------------------------------------
  215. */
  216. function fReqOpScheRecCalendar(){
  217. model.removeNodeset("/root/send/reqdata");
  218. model.makeValue("/root/send/reqdata/year" , model.getValue("/root/main/cond/year"));
  219. model.makeValue("/root/send/reqdata/month" , model.getValue("/root/main/cond/month"));
  220. model.makeValue("/root/send/reqdata/perfdeptcd" , model.getValue("/root/main/cond/perfdeptcd"));
  221. model.makeValue("/root/send/reqdata/perfdrid" , model.getValue("/root/main/cond/scheperfdrid"));
  222. var rtnval = submit("TRMMO05702");
  223. if(rtnval == true){
  224. fMakeCalendar();
  225. }
  226. }
  227. /**
  228. * @desc : 달력값 설정
  229. * @
  230. * @param :
  231. * @return :
  232. * @author : 오지훈
  233. * @---------------------------------------------------
  234. */
  235. function fMakeCalendar(){
  236. model.removeNodeset("/root/main/week/week");
  237. model.refresh();
  238. grd_calendar.addRow(false, true);
  239. var row = 0;
  240. var col = 0;
  241. var patsum = 0;
  242. var totcnt = getNodeSetCnt("/root/main/opschecal/opschecal");
  243. for(var i = 1; i <= totcnt ; i++){
  244. row = model.getValue("/root/main/opschecal/opschecal[" + i + "]/week");
  245. col = model.getValue("/root/main/opschecal/opschecal[" + i + "]/day") - 1;
  246. patsum = model.getValue("/root/main/opschecal/opschecal[" + i + "]/patsum");
  247. dutflag = model.getValue("/root/main/opschecal/opschecal[" + i + "]/dutflag");
  248. if(dutflag == 4){ //토
  249. grd_calendar.cellstyle("color", row, col) = "#0000FF";
  250. }else if(dutflag == 8){ //일
  251. grd_calendar.cellstyle("color", row, col) = "#FF0000";
  252. }else{ //휴일
  253. grd_calendar.cellstyle("color", row, col) = "#000000";
  254. }
  255. grd_calendar.valueMatrix(row, col) = i + "\n(" + patsum + ")";
  256. if(col == 6){
  257. grd_calendar.addRow(false, true);
  258. }
  259. }
  260. grd_calendar.rebuild();
  261. }
  262. /**
  263. * @desc : 달력 선택시 수술예약 리스트 조회
  264. * @
  265. * @param :
  266. * @return :
  267. * @author : 오지훈
  268. * @---------------------------------------------------
  269. */
  270. function fSelectCalendar(){
  271. if(grd_calendar.isCell(event.target) && grd_calendar.row >= grd_calendar.fixedRows){
  272. var week = grd_calendar.row;
  273. var day = grd_calendar.col + 1;
  274. var basedd = model.getValue("/root/main/opschecal/opschecal[week = '" + week + "' and day = '" + day + "']/basedd");
  275. model.setValue("/root/main/opscherecinfo/opscherecinfo/opschedd", basedd);
  276. model.setValue("/root/main/cond/queryflag", "cal");
  277. model.setValue("/root/main/cond/basedd" , basedd);
  278. model.copyNode("/root/send/reqdata", "/root/main/cond");
  279. model.setValue("/root/send/reqdata/perfdrid", model.getValue("/root/main/cond/scheperfdrid"));
  280. var rtnval = submit("TRMMO05701");
  281. if(rtnval == true){
  282. fSetOpTimeToHourMin();
  283. }
  284. }
  285. var openflag = model.getValue("/root/main/cond/openflag"); //수술실일정 보기가 check된 경우 수술실일정 열기
  286. if(openflag == "Y"){
  287. var param = "r" + "▦" + //status : r조회 전용화면
  288. "" + "▦" + //oproomcd
  289. "" + "▦" + //opregstno
  290. "" + "▦" + //opregsthistno
  291. "" + "▦" + //pid
  292. basedd + "▦" + //opschedd
  293. model.getValue("/root/main/cond/perfdeptcd") + "▦" + //perfdeptcd
  294. "" + "▦" + //opfromtmcd
  295. "" + "▦" + //opendtmcd
  296. "opsche" + "▦" + //queryflag
  297. ""; //perfdrid
  298. setParameter("SPMMO08800_param", param);
  299. modal("SPMMO08800");
  300. }
  301. }
  302. /**
  303. * @desc : 조회버튼 클릭시, 조회조건으로 검색
  304. * @
  305. * @param :
  306. * @return :
  307. * @author : 오지훈
  308. * @---------------------------------------------------
  309. */
  310. function fClkBtnReq(){
  311. model.setValue("/root/main/cond/queryflag", "");
  312. model.copyNode("/root/send/reqdata", "/root/main/cond");
  313. var rtnval = submit("TRMMO05701");
  314. if(rtnval == true){
  315. fSetOpTimeToHourMin();
  316. }
  317. }
  318. /**
  319. * @desc : 수술예약시간 설정
  320. * @
  321. * @param :
  322. * @return :
  323. * @author : 오지훈
  324. * @---------------------------------------------------
  325. */
  326. function fOpenSetOpScheTime(){
  327. var param = model.getValue(sOPSCHERECINFO_PATH + "/status") + "▦" +
  328. model.getValue(sOPSCHERECINFO_PATH + "/oproomcd") + "▦" +
  329. model.getValue(sOPSCHERECINFO_PATH + "/opregstno") + "▦" +
  330. model.getValue(sOPSCHERECINFO_PATH + "/opregsthistno")+ "▦" +
  331. model.getValue(sOPSCHERECINFO_PATH + "/pid") + "▦" +
  332. model.getValue(sOPSCHERECINFO_PATH + "/opschedd") + "▦" +
  333. model.getValue(sOPSCHERECINFO_PATH + "/perfdeptcd") + "▦" +
  334. model.getValue(sOPSCHERECINFO_PATH + "/opfromtmcd") + "▦" +
  335. model.getValue(sOPSCHERECINFO_PATH + "/opendtmcd") + "▦" +
  336. //"opsche" + "▦" +
  337. "oprsrv" + "▦" + //마취과에서 등록해 놓은 방으로 보기를 요청(2008.03.18)
  338. model.getValue(sOPSCHERECINFO_PATH + "/perfdrid");
  339. setParameter("SPMMO08800_param", param);
  340. modal("SPMMO08800");
  341. var rtnuseyn = getParameter("SPMMO08800_rtn_useyn");
  342. if(rtnuseyn == "Y"){
  343. setParameter("SPMMO08800_rtn_useyn", "N");
  344. var rtnparam = getParameter("SPMMO08800_rtn_param");
  345. rtnparam = rtnparam.split("▦");
  346. if(rtnparam[1] != "" || rtnparam[2] != ""){
  347. var difftime = getTimeInterval(rtnparam[1], rtnparam[2]);
  348. model.setValue(sOPSCHERECINFO_PATH + "/oproomcd" , rtnparam[0]);
  349. model.setValue(sOPSCHERECINFO_PATH + "/opfromtmcd", rtnparam[1]);
  350. model.setValue(sOPSCHERECINFO_PATH + "/opendtmcd" , rtnparam[2]);
  351. model.setValue(sOPSCHERECINFO_PATH + "/opusetm" , fTransSecToHourMin(difftime));
  352. clearParameter("SPMMO08800_rtn_param");
  353. }else{
  354. // 마취의뢰 화면으로 연동될때 문제 - 정규로 의뢰했을때 수술방은 선택됐는데 수술시간이 비어버림
  355. model.setValue(sOPSCHERECINFO_PATH + "/oproomcd" , rtnparam[0]);
  356. }
  357. }
  358. model.refresh();
  359. }
  360. /**
  361. * @desc : 초를 시분초로 전환
  362. * @
  363. * @param :
  364. * @return :
  365. * @author : 오지훈
  366. * @---------------------------------------------------
  367. */
  368. function fTransSecToHourMin(sec){
  369. var hr = 3600;
  370. var min = 60;
  371. hour = parseInt(sec/hr);
  372. min = parseInt(sec%hr/min);
  373. var rtnstr = hour + "h " + min + "m ";
  374. return rtnstr;
  375. }
  376. /**
  377. * @desc : 수술시간 시분초로 변경
  378. * @
  379. * @param :
  380. * @return :
  381. * @author : 오지훈
  382. * @---------------------------------------------------
  383. */
  384. function fSetOpTimeToHourMin(){
  385. for(var i = 1; i < grd_opschelist.rows; i++){
  386. var opfromtmcd = model.getValue(sOPSCHERECLIST_PATH + "[" + i + "]/opfromtmcd");
  387. var opendtmcd = model.getValue(sOPSCHERECLIST_PATH + "[" + i + "]/opendtmcd");
  388. if(opfromtmcd == "" || opendtmcd == ""){
  389. var difftime = 0;
  390. }else{
  391. var difftime = getTimeInterval(opfromtmcd, opendtmcd);
  392. }
  393. model.setValue(sOPSCHERECLIST_PATH + "[" + i + "]/opusetm", fTransSecToHourMin(difftime));
  394. }
  395. grd_opschelist.refresh();
  396. }
  397. /**
  398. * @desc : parameter 점검 및 상단정보 조회
  399. * @
  400. * @param :
  401. * @return :
  402. * @author : 오지훈
  403. * @---------------------------------------------------
  404. */
  405. function fChkPatTopInfoParam(){
  406. if(checkOpener()){
  407. var param = opener.javascript.getParameter("SMMMO05700_param");
  408. if(param.length > 0){ //parameter정보가 있는 경우
  409. param = param.split("▦");
  410. var pid = param[0];
  411. var hngnm = param[1];
  412. var sex = param[2];
  413. var age = param[3];
  414. var orddd = param[6];
  415. var orddeptcd = param[7];
  416. var ioflag = param[8];
  417. }else{ //parameter정보가 없는 경우, 상단정보 검사
  418. var paminfo = getGlobalVariable("paminfo");
  419. var patflag = getGlobalVariable("patflag");
  420. if(paminfo.length > 0){ //상단정보가 있는 경우
  421. model.removeNodeset("/root/paminfo/list");
  422. model.removeNodeset("/root/patflag/list");
  423. setCSVToNode("/root/paminfo", paminfo);
  424. setCSVToNode("/root/patflag", patflag);
  425. var ioflag = model.getValue("/root/patflag/list/prcpgenrflag");
  426. if(ioflag == "I"){
  427. var orddd = model.getValue("/root/paminfo/list/indd");
  428. }else{
  429. var orddd = model.getValue("/root/paminfo/list/orddd");
  430. }
  431. var pid = model.getValue("/root/paminfo/list/pid");
  432. var hngnm = model.getValue("/root/paminfo/list/hngnm");
  433. var sex = model.getValue("/root/paminfo/list/sex");
  434. var age = model.getValue("/root/paminfo/list/age");
  435. var orddeptcd = model.getValue("/root/paminfo/list/orddeptcd");
  436. var insukind = model.getValue("/root/paminfo/list/insukind");
  437. var suppkind = model.getValue("/root/paminfo/list/suppkind");
  438. }else{ //상단정보가 없는 경우
  439. return;
  440. }
  441. }
  442. model.setValue(sOPSCHERECINFO_PATH + "/pid" , pid);
  443. model.setValue(sOPSCHERECINFO_PATH + "/hngnm" , hngnm);
  444. model.setValue(sOPSCHERECINFO_PATH + "/sex" , sex);
  445. model.setValue(sOPSCHERECINFO_PATH + "/age" , age);
  446. model.setValue(sOPSCHERECINFO_PATH + "/insukind" , insukind);
  447. model.setValue(sOPSCHERECINFO_PATH + "/suppkind" , suppkind);
  448. }
  449. fReqPatCurrentDiagList(pid, orddd, orddeptcd, ioflag); //현재 환자 진단 조회
  450. model.refresh();
  451. }
  452. /**
  453. * @desc : 저장버튼 클릭
  454. * @
  455. * @param :
  456. * @return :
  457. * @author : 오지훈
  458. * @---------------------------------------------------
  459. */
  460. function fClkBtnSave(){
  461. var status = model.getValue(sOPSCHERECINFO_PATH + "/status");
  462. if(status == "u"){
  463. if(!compareNodeVal("/root/cmpopschelist", sOPSCHERECINFO_PATH)){
  464. messageBox("변경된 사항이", "I004");
  465. return;
  466. }
  467. }
  468. if(fChkValidOpScheInfo()== true){ //저장유효성 검사
  469. //2012/06/26 Start
  470. //수술 예방적 항생제 관련
  471. var dispopcd=model.getValue("/root/main/opscherecinfo/opscherecinfo/dispopcd");
  472. var t_pname = model.getValue("/root/main/opscherecinfo/opscherecinfo/hngnm");
  473. var t_opnm = model.getValue("/root/main/opscherecinfo/opscherecinfo/opnm");
  474. if(model.getValue("/root/main/opscherecinfo/opscherecinfo/age")>17){
  475. for(var i=1; i<=parseInt(nodecnt.length); i++){
  476. var cdseqno=model.getValue("/root/temp/opcd/hardcd["+ i +"]/cdseqno");
  477. var trgtcd=model.getValue("/root/temp/opcd/hardcd["+ i +"]/hardcd");
  478. if(cdseqno==dispopcd.length && dispopcd==trgtcd.substr(0,3)){
  479. messageBox("("+t_pname+")"+" 환자는 " +"("+t_opnm+")" + " 수술로 수술예방적 항생제 적정성 평가 대상입니다.\n" +
  480. "1,2세대 세파계 항생제를 단독으로 투여하시면 평가를 잘 받을 수 있습니다.", "I");
  481. break;
  482. }else if(cdseqno==dispopcd.length && dispopcd==trgtcd.substr(0,4)){
  483. messageBox("("+t_pname+")"+" 환자는 " +"("+t_opnm+")" + " 수술로 수술예방적 항생제 적정성 평가 대상입니다.\n" +
  484. "1,2세대 세파계 항생제를 단독으로 투여하시면 평가를 잘 받을 수 있습니다.", "I");
  485. break;
  486. }
  487. }
  488. }
  489. //2012/06/26 End
  490. model.copyNode("/root/send/savedata", "/root/main/opscherecinfo/opscherecinfo");
  491. var rtnval = submit("TXMMO05701");
  492. if(rtnval == true){
  493. fSetOpTimeToHourMin();
  494. var pid = model.getValue("/root/main/opscherecinfo/opscherecinfo/pid");
  495. model.copyNode(sOPSCHERECINFO_PATH, sOPSCHERECLIST_PATH + "[pid= '" + pid + "']");
  496. model.setValue(sOPSCHERECINFO_PATH + "/status", "u");
  497. model.refresh();
  498. fReqOpScheRecCalendar();
  499. }
  500. }
  501. }
  502. /**
  503. * @desc : 환자 현재 진단 조회 (진단구분코드:M)
  504. * @
  505. * @param :
  506. * @return :
  507. * @author : 오지훈
  508. * @---------------------------------------------------
  509. */
  510. function fReqPatCurrentDiagList(pid, orddd, orddeptcd, ioflag){
  511. model.removeNodeset("/root/send/reqdata");
  512. model.makeValue("/root/send/reqdata/pid" , pid);
  513. model.makeValue("/root/send/reqdata/orddd" , orddd);
  514. model.makeValue("/root/send/reqdata/orddeptcd" , orddeptcd);
  515. model.makeValue("/root/send/reqdata/ioflag" , ioflag);
  516. model.makeValue("/root/send/reqdata/diagkindcdflag", "M");
  517. if(submit("TRMMO00114")==true){
  518. }
  519. model.refresh();
  520. }
  521. /**
  522. * @desc : 환자 수진정보 조회
  523. * @
  524. * @param :
  525. * @return :
  526. * @author : 오지훈
  527. * @---------------------------------------------------
  528. */
  529. function fReqPatOrdInfo(){
  530. var pid = model.getValue(sOPSCHERECINFO_PATH + "/pid");
  531. if(pid == ""){
  532. messageBox("환자의 등록번호를", "C001");
  533. return;
  534. }
  535. model.removeNodeset("/root/send/reqdata");
  536. model.makeValue("/root/send/reqdata/cond1", "1"); //1은 등록번호, 2는 환자명
  537. model.makeValue("/root/send/reqdata/cond2", pid); //등록번호
  538. model.makeValue("/root/send/reqdata/cond3", getUserInfo("dutplceinstcd"));
  539. model.makeValue("/root/send/reqdata/cond4", "N"); //원무키 기준여부
  540. model.makeValue("/root/send/reqdata/cond5", "N"); //당일기준 조회여부
  541. model.makeValue("/root/send/reqdata/cond6", "-"); //외래,입원테이블 기준
  542. if(submit("TRMMO00200")==true){
  543. /*var nodecnt = getNodeSetCnt(sPATORDINFOLIST_PATH)
  544. if(nodecnt > 1){
  545. var xpt = window.screenleft + 50;
  546. var ypt = window.screenTop + 80;
  547. var coord = getRelativeCoordinate(xpt, ypt);
  548. var mon = coord[0];
  549. xpt = coord[1];
  550. ypt = coord[2];
  551. modal("SPMMO09100", mon, xpt, ypt, "patordinfo", "/root/patordinfo", "/root/patordinfo", "", false );
  552. param = getParameter("SPMMO09100_rtn_param");
  553. if(param.length > 0){
  554. model.removeNodeset(sPATORDINFOLIST_PATH);
  555. setCSVToNode("/root/patordinfo", param, "patordinfolist");
  556. }
  557. }
  558. var ioflag = model.getValue(sPATORDINFOLIST_PATH + "/ioflag");
  559. var pid = model.getValue(sPATORDINFOLIST_PATH + "/pid");
  560. var orddd = model.getValue(sPATORDINFOLIST_PATH + "/orddd");
  561. var cretno = model.getValue(sPATORDINFOLIST_PATH + "/cretno");
  562. var instcd = model.getValue(sPATORDINFOLIST_PATH + "/instcd");
  563. var srchdd = model.getValue(sPATORDINFOLIST_PATH + "/orddd");*/
  564. // 2008.11.18 로그인 의사 진료과의 최근 수진 이력을 선택한 상태
  565. sortNodeList("/root/patordinfo/patordinfolist", "orddd", "desc");
  566. var patlist = model.instance1.selectNodes("/root/patordinfo/patordinfolist[orddeptcd = " + getUserInfo("dutplcecd") + "and orddd <="+ getCurrentDate() +"]");
  567. if(patlist.length > 0) {
  568. var ioflag = patlist.item(0).selectSingleNode("ioflag").text;
  569. var pid = patlist.item(0).selectSingleNode("pid").text;
  570. var orddd = patlist.item(0).selectSingleNode("orddd").text;
  571. var cretno = patlist.item(0).selectSingleNode("cretno").text;
  572. var instcd = patlist.item(0).selectSingleNode("instcd").text;
  573. }else{
  574. var cretno = "";
  575. }
  576. // (e)
  577. model.removeNodeset("/root/send/reqdata");
  578. model.makeValue("/root/send/reqdata/pid", pid);
  579. model.makeValue("/root/send/reqdata/orddd", orddd);
  580. model.makeValue("/root/send/reqdata/cretno", cretno);
  581. // 2008.10.31 등록번호 검색으로 의뢰시 상단 UP 조건 icdr.fromdd
  582. if(submit("TRMMO00210")) {
  583. var srchdd = model.getValue("/root/main/topinfo/topinfo/fromdd");
  584. }
  585. // (e)
  586. if(ioflag == "I" || ioflag == "D"){
  587. var param = "I" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + srchdd;
  588. } else if(ioflag == "E") {
  589. var param = "E" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + srchdd;
  590. }else{
  591. var param = "O" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd;
  592. }
  593. setParameter("condparam", param);
  594. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  595. var useyn = getParameter("SPMMO08900_rtn_useyn");
  596. if(useyn == "Y"){
  597. setParameter("SPMMO08900_rtn_useyn", "");
  598. fChkPatTopInfoParam();
  599. }else{
  600. return;
  601. }
  602. }
  603. }
  604. /**
  605. * @desc : 수술예약장부 저장시 무결성 검사
  606. * @
  607. * @param :
  608. * @return :
  609. * @author : 오지훈
  610. * @---------------------------------------------------
  611. */
  612. function fChkValidOpScheInfo(){
  613. var pid = model.getValue(sOPSCHERECINFO_PATH + "/pid");
  614. var perfdeptcd = model.getValue(sOPSCHERECINFO_PATH + "/perfdeptcd");
  615. var perfdrid = model.getValue(sOPSCHERECINFO_PATH + "/perfdrid");
  616. var oproomcd = model.getValue(sOPSCHERECINFO_PATH + "/oproomcd");
  617. var opcd = model.getValue(sOPSCHERECINFO_PATH + "/opcd");
  618. var diagcd = model.getValue(sOPSCHERECINFO_PATH + "/diagcd");
  619. var opfromtmcd = model.getValue(sOPSCHERECINFO_PATH + "/opfromtmcd");
  620. var opendtmcd = model.getValue(sOPSCHERECINFO_PATH + "/opendtmcd");
  621. var oppatflagcd= model.getValue(sOPSCHERECINFO_PATH + "/oppatflagcd");
  622. if(pid == ""){
  623. messageBox("환자의 등록번호를", "C001");
  624. return false;
  625. }
  626. if(perfdeptcd == ""){
  627. messageBox("집도부서를", "C001");
  628. return false;
  629. }
  630. if(perfdrid == ""){
  631. messageBox("집도의를", "C001");
  632. return false;
  633. }
  634. /*
  635. if(opcd == ""){
  636. messageBox("수술코드를", "C001");
  637. return false;
  638. }
  639. */
  640. if(diagcd == ""){
  641. messageBox("진단코드를", "C001");
  642. return false;
  643. }
  644. if(oppatflagcd == ""){
  645. messageBox("수술환자구분을", "C002");
  646. return false;
  647. }
  648. /*
  649. if(opfromtmcd == "" || opendtmcd == ""){
  650. messageBox("수술예약시간을", "C002");
  651. return false;
  652. }*/
  653. return true;
  654. }
  655. /**
  656. * @desc : 환자의 진단 조회
  657. * @
  658. * @param :
  659. * @return :
  660. * @author : 오지훈
  661. * @---------------------------------------------------
  662. */
  663. function fReqDiagList(){
  664. var paminfocsv = getGlobalVariable("paminfo");
  665. var patflagcsv = getGlobalVariable("patflag");
  666. model.setValue("/root/main/cond/orddeptcd" , getUserInfo("dutplcecd")); //진료과
  667. model.setValue("/root/main/cond/perfdrid" , getUserInfo("userid")); //의사
  668. model.refresh();
  669. if(paminfocsv.length > 1){
  670. model.removeNodeSet ( "/root/paminfo/list"); //상단화면 정보 초기화
  671. setCSVToNode ("/root/paminfo", paminfocsv);
  672. }else{
  673. return;
  674. }
  675. if(patflagcsv.length > 1){
  676. model.removeNodeSet ( "/root/patflag/list"); //환자구분 정보 초기화
  677. setCSVToNode ("/root/patflag", patflagcsv);
  678. }else{
  679. return;
  680. }
  681. var ioflag = model.getValue("/root/patflag/list/prcpgenrflag");
  682. var pid = model.getValue("/root/paminfo/list/pid");
  683. var orddeptcd = model.getValue("/root/paminfo/list/orddeptcd");
  684. if(ioflag == "O" || ioflag == "S"){
  685. var orddd = model.getValue("/root/paminfo/list/orddd");
  686. }else{
  687. var orddd = model.getValue("/root/paminfo/list/indd");
  688. }
  689. model.removeNodeset("/root/send/reqdata");
  690. model.makeValue("/root/send/reqdata/pid" , pid);
  691. model.makeValue("/root/send/reqdata/orddeptcd", orddeptcd);
  692. model.makeValue("/root/send/reqdata/orddd" , orddd);
  693. model.makeValue("/root/send/reqdata/ioflag" , ioflag);
  694. if(submit("TRMMO00114")==true){
  695. var diagcd = model.getValue("/root/main/diaginfo/diagcdlist[1]/diagcd");
  696. var dispdiagcd = model.getValue("/root/main/diaginfo/diagcdlist[1]/icd10cd");
  697. var diagengnm = model.getValue("/root/main/diaginfo/diagcdlist[1]/diagengnm");
  698. model.setValue(sOPSCHERECINFO_PATH + "/diagcd" , diagcd);
  699. model.setValue(sOPSCHERECINFO_PATH + "/dispdiagcd", dispdiagcd);
  700. model.setValue(sOPSCHERECINFO_PATH + "/diagnm" , diagengnm);
  701. model.refresh();
  702. }
  703. model.refresh();
  704. fOpenDiagLnkOpList(); //환자의 진단연계수술 조회
  705. }
  706. /**
  707. * @desc : 환자의 진단연계수술 조회
  708. * @
  709. * @param :
  710. * @return :
  711. * @author : 오지훈
  712. * @---------------------------------------------------
  713. */
  714. function fOpenDiagLnkOpList(){
  715. var diagcd = model.getValue(sOPSCHERECINFO_PATH + "/diagcd");
  716. clearParameter("SPMMO04000_dispopcd");
  717. clearParameter("SPMMO04000_orgopcd");
  718. clearParameter("SPMMO04000_opengnm");
  719. if(diagcd != ""){
  720. setParameter("SPMMO04000_userid" , getUserInfo("userid"));
  721. setParameter("SPMMO04000_orddeptcd", getUserInfo("dutplcecd"));
  722. setParameter("SPMMO04000_diagcd" , diagcd);
  723. modal("SPMMO04000");
  724. var useyn = getParameter("SPMMO04000_useyn");
  725. if(useyn == "Y"){
  726. var dispopcd = getParameter("SPMMO04000_dispopcd");
  727. var opcd = getParameter("SPMMO04000_orgopcd");
  728. var opengnm = getParameter("SPMMO04000_opengnm");
  729. model.setValue(sOPSCHERECINFO_PATH + "/dispopcd", dispopcd);
  730. model.setValue(sOPSCHERECINFO_PATH + "/opcd" , opcd);
  731. model.setValue(sOPSCHERECINFO_PATH + "/opnm" , opengnm);
  732. model.refresh();
  733. }
  734. setParameter("SPMMO04000_useryn", "");
  735. }
  736. }
  737. /**
  738. * @desc : 환자진료정보 list 조회
  739. * @
  740. * @param :
  741. * @return :
  742. * @author : 박유미
  743. * @---------------------------------------------------
  744. */
  745. function fOpenPatInfo(){
  746. var pid = model.getValue(sOPSCHERECINFO_PATH + "/pid");
  747. if(pid == ""){
  748. messageBox("환자의 등록번호를", "C001");
  749. return;
  750. }
  751. model.removeNodeset("/root/send/reqdata");
  752. model.makeValue("/root/send/reqdata/cond1", "1"); //1은 등록번호, 2는 환자명
  753. model.makeValue("/root/send/reqdata/cond2", pid); //등록번호
  754. model.makeValue("/root/send/reqdata/cond3", getUserInfo("dutplceinstcd"));
  755. model.makeValue("/root/send/reqdata/cond4", "N"); //원무키 기준여부
  756. model.makeValue("/root/send/reqdata/cond5", "N"); //당일기준 조회여부
  757. model.makeValue("/root/send/reqdata/cond6", "-"); //외래,입원테이블 기준
  758. if(submit("TRMMO00200")==true){
  759. var nodecnt = getNodeSetCnt(sPATORDINFOLIST_PATH)
  760. if(nodecnt > 1){
  761. var xpt = window.screenleft + 50;
  762. var ypt = window.screenTop + 80;
  763. var coord = getRelativeCoordinate(xpt, ypt);
  764. var mon = coord[0];
  765. xpt = coord[1];
  766. ypt = coord[2];
  767. modal("SPMMO09100", mon, xpt, ypt, "patordinfo", "/root/patordinfo", "/root/patordinfo", "", false );
  768. param = getParameter("SPMMO09100_rtn_param");
  769. if(param.length > 0){
  770. model.removeNodeset(sPATORDINFOLIST_PATH);
  771. setCSVToNode("/root/patordinfo", param, "patordinfolist");
  772. }
  773. }
  774. var ioflag = model.getValue(sPATORDINFOLIST_PATH + "/ioflag");
  775. var pid = model.getValue(sPATORDINFOLIST_PATH + "/pid");
  776. var orddd = model.getValue(sPATORDINFOLIST_PATH + "/orddd");
  777. var cretno = model.getValue(sPATORDINFOLIST_PATH + "/cretno");
  778. var instcd = model.getValue(sPATORDINFOLIST_PATH + "/instcd");
  779. var srchdd = model.getValue(sPATORDINFOLIST_PATH + "/orddd");
  780. model.removeNodeset("/root/send/reqdata");
  781. model.makeValue("/root/send/reqdata/pid", pid);
  782. model.makeValue("/root/send/reqdata/orddd", orddd);
  783. model.makeValue("/root/send/reqdata/cretno", cretno);
  784. // 2008.10.31 등록번호 검색으로 의뢰시 상단 UP 조건 icdr.fromdd
  785. if(submit("TRMMO00210")) {
  786. var srchdd = model.getValue("/root/main/topinfo/topinfo/fromdd");
  787. }
  788. // (e)
  789. if(ioflag == "I" || ioflag == "D"){
  790. var param = "I" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + srchdd;
  791. } else if(ioflag == "E") {
  792. var param = "E" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + srchdd;
  793. }else{
  794. var param = "O" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd;
  795. }
  796. setParameter("condparam", param);
  797. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  798. var useyn = getParameter("SPMMO08900_rtn_useyn");
  799. if(useyn == "Y"){
  800. setParameter("SPMMO08900_rtn_useyn", "");
  801. fChkPatTopInfoParam();
  802. }else{
  803. return;
  804. }
  805. }
  806. }
  807. function fChoJinRecSrch(){
  808. var signno = 0;
  809. var ckcnt = 0;
  810. var formcd = "";
  811. var signstr = "";
  812. model.removeNode("/root/send/chojindata");
  813. model.makeNode("/root/send/chojindata");
  814. model.makeValue("/root/send/chojindata/instcd" , getUserInfo("dutplceinstcd") );
  815. model.makeValue("/root/send/chojindata/pid" , model.getValue("/root/main/opschereclist/opschereclist[" + grd_opschelist.row + "]/pid") );
  816. model.makeValue("/root/send/chojindata/perfdeptcd" , model.getValue("/root/main/opschereclist/opschereclist[" + grd_opschelist.row + "]/perfdeptcd") );
  817. if( submit("TRMMO05707") ){
  818. var nodecnt = getNodesetCount("/root/main/chojin/chojinlist");
  819. for (var k = 1; k <= nodecnt; k++){
  820. signno = model.getValue("/root/main/chojin/chojinlist[" + k + "]/signno");
  821. formcd = model.getValue("/root/main/chojin/chojinlist[" + k + "]/formcd");
  822. signstr += "E▦";
  823. signstr += signno+"▦";
  824. signstr += formcd+"▩";
  825. }
  826. }
  827. if ( signstr != "" ) {
  828. setParameter("SPMRI02400_prtyn" , "N");
  829. setParameter("SPMRI02400_prtrecinfo", signstr);
  830. var xpt = 50;
  831. var ypt = 50;
  832. aezfTopMost("SPMRI02400",2,xpt,ypt,"SPMRI02400");
  833. }else {
  834. alert("출력할 서식 디자인이 존재하지 않습니다.");
  835. return;
  836. }
  837. }