SMMMO04300.xjs 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  4. 입원환자리스트 ( SMMMO04300_입원환자리스트.xfdl - JScript )
  5. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  6. */
  7. var arErrorCode = new HashArray();
  8. /**
  9. * @desc : 화면 초기화
  10. * @
  11. * @param :
  12. * @return :
  13. * @author : 오지훈
  14. * @---------------------------------------------------
  15. */
  16. function fInitialize_SMMMO04300(){
  17. ds_cond.setColumn(0, "indd", utlf_getCurrentDate());
  18. //의료협력 컬럼 추가 (성가 제외) 091019 kimsj
  19. // 하드코드 테이블 한번에 조회하도록 프로그램 수정
  20. lf_gethardcdArrayList(new Array(
  21. "reqphardcdno|138" , // 진료대상자 의료협력 컬럼 사용여부
  22. "npdeptcd|104", // 정신과 과 코드 조회
  23. "hardcdno|63", // 응급의학과
  24. "opdrugresn|76", // 수술예방적 항생제 사유 입력 부서코드 조회
  25. "jobhardcdno|65", // 주치의 코드(jobposcd)
  26. "hardcd|445"
  27. ),
  28. new Array(
  29. "ds_reqphardcdno",
  30. "ds_npdeptcd",
  31. "ds_hardcdno",
  32. "ds_opdrugresn",
  33. "ds_jobhardcdno",
  34. "ds_hardcd"
  35. )
  36. );
  37. /*
  38. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/init/reqphardcdno", 138); //진료대상자 의료협력 컬럼 사용여부
  39. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/init/npdeptcd", 104); //정신과 과 코드 조회
  40. */
  41. if (ds_reqphardcdno.getColumn(0, "hardcd") == "N") {
  42. grid.setFormatColProperty(grid.getBindCellIndex("body", "refer"), "size", 0);
  43. grid.setFormatColProperty(grid.getBindCellIndex("body", "replstat"), "size", 0);
  44. }
  45. appf_getCodeList([{dsNm: "ds_P0008", cdGrpId: "P0008"}
  46. , {dsNm: "ds_M0525", cdGrpId: "M0525"}
  47. , {dsNm: "ds_M0623", cdGrpId: "M0623"}], true);
  48. /*
  49. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/init/hardcdno", 63); //응급의학과 부서코드 조회
  50. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/init/opdrugresn", 76); //수술예방적 항생제 사유 입력 부서코드 조회
  51. */
  52. var dutplcecd = sysf_getUserInfo("dutplcecd");
  53. var medispclid = "-";
  54. var atdoctid = "-";
  55. var reopenflag = parent.parent.ds_reopen.getColumn(0, "reopenflag"); //진료대상자 리스트 open여부
  56. if(reopenflag != "Y"){ //다시 열린 경우가 아니면, 기본 조회 조건 설정
  57. var jobposcd = ds_jobhardcdno.lookup("hardcd", sysf_getUserInfo("jobkindcd"), "hardcd");
  58. if (!utlf_isNull(jobposcd)) {
  59. medispclid = sysf_getUserId(); //담당교수
  60. }
  61. } else { //다시 열린 경우, main에 ordtab의 condlist(화면이 닫힐때 설정된 정보)를 그대로 재설정
  62. try {
  63. ds_cond.copyData(parent.parent.ds_reopen_condlist);
  64. dutplcecd = ds_cond.getColumn(0, "orddeptcd");
  65. medispclid = ds_cond.getColumn(0, "medispclid");
  66. atdoctid = ds_cond.getColumn(0, "atdoctid");
  67. } catch(E) {
  68. }
  69. parent.parent.ds_reopen.setColumn(0, "reopenflag", "N");
  70. }
  71. setDeptCodeList(dutplcecd);
  72. setUserList(dutplcecd, medispclid, atdoctid);
  73. reqOrderInfoOfCol(ds_reqdata1, ds_gridseq, "SMMMO04300", grd_inpatlist); //입원환자리스트 컬럼 조회 및 설정
  74. if(Div00.cmb_orddept.value == ""){Div00.cmb_orddept.index = 1;} //선택된 진료과가 없는 경우 default로 첫번째 설정
  75. if(Div00.cmb_medispclid.value == ""){Div00.cmb_medispclid.index = 1;} //선택된 담당교수가 없는 경우 default로 첫번째 설정
  76. var orddeptcd = ds_cond.getColumn(0, "orddeptcd");
  77. var medispclid = ds_cond.getColumn(0, "medispclid");
  78. var atdoctid = ds_cond.getColumn(0, "atdoctid");
  79. var wardcd = ds_cond.getColumn(0, "wardcd");
  80. setRadiationMsg(orddeptcd);
  81. setSubDeptCodeList(orddeptcd);
  82. if (orddeptcd == "-" && medispclid == "-" && atdoctid == "-" && wardcd == "-" ) {
  83. sysf_messageBox("조회조건 전부가 전체가 될수는", "I004");
  84. } else {
  85. fReqInPatList();
  86. }
  87. }
  88. function setDeptCodeList(sDeptcd, sOrddd){
  89. lf_mmbfGetDeptCodeComboList(ds_orddept, "D", sOrddd); //부서코드 콤보
  90. lf_mmbfGetDeptCodeComboList(ds_orddept2, "W", sOrddd); //병동코드 콤보
  91. frmf_addComboItem("Div00.cmb_orddept"); //부서콤보 Item '전체'추가
  92. frmf_addComboItem("Div00.cmb_wardcd"); //병동콤보 전체항목 추가
  93. if(!utlf_isNull(sDeptcd)) {
  94. Div00.cmb_orddept.value = sDeptcd; //진료과
  95. Div00.cmb_wardcd.value = "-"; //병동콤보
  96. }
  97. }
  98. function setUserList(sOrddeptcd, sMedispclid, sAtdoctid, sOrddd){
  99. lf_mmbfGetUserComboList(ds_userlist, sOrddeptcd, "0330", "", "M", sOrddd, "", "P");
  100. lf_mmbfGetUserComboList(ds_userlist2, sOrddeptcd, "0330", "", "A", sOrddd, "", "P");
  101. frmf_addComboItem("Div00.cmb_medispclid"); //의사콤보 전체항목 추가
  102. frmf_addComboItem("Div00.cmb_atdoctid"); //의사콤보 전체항목 추가
  103. Div00.cmb_medispclid.value = sMedispclid; //담당교수
  104. Div00.cmb_atdoctid.value = sAtdoctid; //전공의
  105. }
  106. function setSubDeptCodeList(sOrddeptcd) {
  107. lf_mmbfGetSubDeptComboList(ds_subdeptinfo, sOrddeptcd);
  108. frmf_addComboItem("Div00.cmb_subdept"); //세부과 전체항목 추가
  109. ds_cond.setColumn(0, "subdeptcd", "-");
  110. }
  111. function setRadiationMsg(sOrddeptcd) {
  112. var rtorddeptcd = ds_hardcdno.getColumn(0, "hardcd");
  113. if (sOrddeptcd == rtorddeptcd) { // 진료과가 방사선종양학과 일 경우 stt_radiation이 보여짐
  114. stt_radiation.visible = true;
  115. } else {
  116. stt_radiation.visible = false;
  117. }
  118. }
  119. /**
  120. * @desc : (입원)관심환자등록창 호출
  121. * @
  122. * @param :
  123. * @return :
  124. * @author : 오지훈
  125. * @---------------------------------------------------
  126. */
  127. function fCallWndConcPatRgst(){
  128. var iRow = ds_inpatlist.rowposition;
  129. var pid = ds_inpatlist.getColumn(iRow, "pid");
  130. var hngnm = ds_inpatlist.getColumn(iRow, "hngnm");
  131. var indd = ds_inpatlist.getColumn(iRow, "indd");
  132. var cretno = ds_inpatlist.getColumn(iRow, "cretno");
  133. var seqno = ds_inpatlist.getColumn(iRow, "seqno");
  134. var instcd = ds_inpatlist.getColumn(iRow, "instcd");
  135. var param = "I" + "▩" + pid + "▩" + hngnm + "▩" + indd + "▩" + cretno + "▩" + seqno + "▩" + instcd;
  136. frmf_setParameter("param", param);
  137. frmf_modal("SPMMO08200", "SPMMO08200", null, null, null, null, null, null, null, null, null, null, "M");
  138. fReqInPatList();
  139. }
  140. /**
  141. * @desc : (입원)주의요망환자창 호출
  142. * @
  143. * @param :
  144. * @return :
  145. * @author : 엄영만
  146. * @---------------------------------------------------
  147. */
  148. function fCallWndWarnPat(){
  149. var nCurRow = ds_inpatlist.rowposition;
  150. var sPid = ds_inpatlist.getColumn(nCurRow, "pid");
  151. var sHngnm = ds_inpatlist.getColumn(nCurRow, "hngnm");
  152. frmf_setParameter("SMMMO19100_warncd" , sPid);
  153. frmf_setParameter("SMMMO19100_warnnm" , sHngnm);
  154. frmf_modal("SMMMO19100", "SMMMO19100", null, null, null, null, null, null, null, null, null, null, "M");
  155. frmf_clearParameter("SMMMO19100_warncd");
  156. frmf_clearParameter("SMMMO19100_warnnm");
  157. }
  158. /**
  159. * @desc : 입원환자 환자 기본정보설정
  160. * @
  161. * @param :
  162. * @return :
  163. * @author : 오지훈
  164. * @---------------------------------------------------
  165. */
  166. function fReqInPatPamInfo(){
  167. var iRow = ds_inpatlist.rowposition;
  168. var pid = ds_inpatlist.getColumn(iRow, "pid");
  169. var indd = ds_inpatlist.getColumn(iRow, "indd");
  170. var cretno = ds_inpatlist.getColumn(iRow, "cretno");
  171. var instcd = ds_inpatlist.getColumn(iRow, "instcd");
  172. var srchdd = ds_cond.getColumn(0, "indd"); //조회일자
  173. var param = "I" + "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd + "▦" + srchdd;
  174. return appf_initPatientInfo(param);
  175. }
  176. /**
  177. * @desc : 내 환자 적용/해제
  178. * @
  179. * @param :
  180. * @event : 팝업창 내 환자 적용 EVENT
  181. * @return :
  182. * @author : 오지훈
  183. * @---------------------------------------------------
  184. */
  185. function fRgstCnclMyPat(){
  186. var mypatinfo = "";
  187. var totrow = ds_inpatlist.rowcount;
  188. for(var currow = 0; currow < totrow; currow++){
  189. if(ds_inpatlist.getSelect(currow)){
  190. var pid = ds_inpatlist.getColumn(currow, "pid");
  191. var indd = ds_inpatlist.getColumn(currow, "indd");
  192. var cretno = ds_inpatlist.getColumn(currow, "cretno");
  193. var seqno = ds_inpatlist.getColumn(currow, "seqno");
  194. var deptcd = ds_inpatlist.getColumn(currow, "orddeptcd");
  195. var tmpstr = "▦" + pid + "▦" + indd + "▦" + cretno + "▦" + seqno + "▦" + deptcd + "▩" ;
  196. mypatinfo += tmpstr;
  197. }
  198. }
  199. frmf_setParameter("apntflag", "mypat"); //화면 적용 구분을 내 환자 적용
  200. frmf_setParameter("mypatinfo", mypatinfo);
  201. frmf_modal("SPMMO10700", "SPMMO10700", null, null, null, null, null, null, null, null, null, null, "P");
  202. fReqInPatList();
  203. }
  204. /**
  205. * @desc : 협진관리 화면 open
  206. * @
  207. * @param :
  208. * @return :
  209. * @author : 오지훈
  210. * @---------------------------------------------------
  211. */
  212. function fOpenCnstPat(){
  213. var currow = ds_inpatlist.rowposition;
  214. if(currow < 0){
  215. return;
  216. }
  217. var pid = ds_inpatlist.getColumn(currow, "pid");
  218. var hngnm = ds_inpatlist.getColumn(currow, "hngnm");
  219. var sa = ds_inpatlist.getColumn(currow, "sa");
  220. var orddeptcd = ds_inpatlist.getColumn(currow, "orddeptcd");
  221. var medispclid = ds_inpatlist.getColumn(currow, "medispclid");
  222. var medispclnm = ds_inpatlist.getColumn(currow, "medispclnm");
  223. var indd = ds_inpatlist.getColumn(currow, "indd");
  224. var roomcd = ds_inpatlist.getColumn(currow, "roomcd");
  225. var cretno = ds_inpatlist.getColumn(currow, "cretno");
  226. var patinfo = hngnm + "▦" + sa + "▦" + orddeptcd + "▦" + medispclid + "▦" + cretno + "▦" + medispclnm;
  227. frmf_setParameter("SPMMO03600_pid" , pid);
  228. frmf_setParameter("SPMMO03600_orddd" , indd);
  229. frmf_setParameter("SPMMO03600_roomcd" , roomcd);
  230. frmf_setParameter("SPMMO03600_patinfo", patinfo);
  231. frmf_setParameter("SPMMO03600_ioflag" , "I");
  232. frmf_modal("SPMMO03600", "SPMMO03600", null, null, null, null, null, null, null, null, null, null, "M");
  233. fReqInPatList();
  234. }
  235. /**
  236. * @desc : 간호 TPR 조회
  237. * @
  238. * @param :
  239. * @return :
  240. * @author :박유진 20091102
  241. * @---------------------------------------------------
  242. */
  243. function fCallCareTPRInfo(){
  244. var currow = ds_inpatlist.rowposition;
  245. var pid = ds_inpatlist.getColumn(currow, "pid");
  246. var indd = ds_inpatlist.getColumn(currow, "indd");
  247. var cretno = ds_inpatlist.getColumn(currow, "cretno");
  248. var instcd = sysf_getUserInfo("dutplceinstcd");
  249. frmf_setParameter("SMMNR00900_Param", "pid▦indd▦cretno▦instcd▦gbn▩" + pid + "▦" + indd + "▦" + cretno + "▦" + instcd +"▦dr▩");
  250. var curNurTprObj = frmf_findPopup("SMMNR00900"); //활성화된 간호 TPR 화면 object loading
  251. if(!utlf_isNull(curNurTprObj)){ //간호 TPR 화면 refresh
  252. curNurTprObj.fInitViewer();
  253. curNurTprObj.fInitialize("init");
  254. } else {
  255. frmf_open("SMMNR00900", "SMMNR00900", null, null, null, null, null, null, null, null, null, null, "M");
  256. }
  257. }
  258. /**
  259. * @desc : 그리드 data 엑셀화일로 저장
  260. * @
  261. * @param :
  262. * @return :
  263. * @author : 오지훈
  264. * @---------------------------------------------------
  265. */
  266. function fSaveGridToExcel(){
  267. grdf_exportExcel(grd_inpatlist, "입원환자리스트", "입원");
  268. }
  269. /**
  270. * @desc : 입원환자 리스트 조회
  271. * @
  272. * @param :
  273. * @event : 조회버튼 EVENT
  274. * @return :
  275. * @author : 오지훈
  276. * @---------------------------------------------------
  277. */
  278. function fReqInPatList(){
  279. parent.parent.ds_cond_inpatlist.copyData(ds_cond);
  280. ds_cond.setColumn(0, "srchdd", ds_cond.getColumn(0, "indd"));
  281. ds_reqInPat.copyData(ds_cond);
  282. var compsrefcnts = ds_gridseq.getColumn(0, "compsrefcnts");
  283. var compssizecnts = ds_gridseq.getColumn(0, "compssizecnts");
  284. if(utlf_isNull(compsrefcnts)) compsrefcnts = "";
  285. if(utlf_isNull(compssizecnts)) compssizecnts = "";
  286. ds_reqInPat.addColumn("compsrefcnts", "string", 1024);
  287. ds_reqInPat.addColumn("compssizecnts", "string", 1024);
  288. ds_reqInPat.setColumn(0, "compsrefcnts", compsrefcnts);
  289. ds_reqInPat.setColumn(0, "compssizecnts", compssizecnts);
  290. var oParam = {};
  291. oParam.id = "TRMMO04301";
  292. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  293. oParam.method = "reqGetInPatList";
  294. oParam.inds = "req=" + "ds_reqInPat";
  295. oParam.outds = "ds_inpatlist=inpatlist";
  296. oParam.async = true;
  297. oParam.callback = "cf_TRMMO04301";
  298. tranf_submit(oParam);
  299. }
  300. function cf_TRMMO04301(sSvcId, nErrorCode, sErrorMsg) {
  301. var orderby = ds_cond.getColumn(0, "orderby");
  302. var sortcol = ds_cond.getColumn(0, "sortcol");
  303. if(sortcol != "" && orderby != "")
  304. ds_inpatlist.keystring.current = "S:" + orderby + sortcol;
  305. ds_cond.setColumn(0, "totcnt", ds_inpatlist.rowcount);
  306. }
  307. /**
  308. * @desc : 환자 선택 후, 환자 정보 조회 및 기록지 화면 연동
  309. * @
  310. * @param :
  311. * @return :
  312. * @author : 오지훈
  313. * @---------------------------------------------------
  314. */
  315. function fSelectInPat(){
  316. var currow = ds_inpatlist.rowposition;
  317. if(currow < 0){
  318. return;
  319. }
  320. //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가
  321. if(fChkScrnDisable() == false){
  322. return;
  323. }
  324. var pid = ds_inpatlist.getColumn(currow, "pid");
  325. var orddd = ds_inpatlist.getColumn(currow, "indd");
  326. var cretno = ds_inpatlist.getColumn(currow, "cretno");
  327. var ordtype = ds_inpatlist.getColumn(currow, "ordtype");
  328. var orddeptcd = ds_inpatlist.getColumn(currow, "orddeptcd");
  329. frmf_setParameter("SPMMO016000_resnflag" , "P"); // 진료대상자에서 수술시 예방적 항생제를 띄울경우
  330. frmf_setParameter("SPMMO021100_resnflag" , "001"); // 진료대상자에서 정신과 차등수가제도 도입과 관련된 특정내역 팝업을 띄울경우
  331. frmf_setParameter("SPMMO016000_pid" , pid);
  332. frmf_setParameter("SPMMO016000_orddd" , orddd);
  333. frmf_setParameter("SPMMO016000_cretno" , cretno);
  334. frmf_setParameter("SPMMO016000_ordtype" , ordtype);
  335. frmf_setParameter("SPMMO016000_orddeptcd" , orddeptcd);
  336. var hngnm = ds_inpatlist.getColumn(currow, "hngnm");
  337. var reqptype = lf_getDsValue(ds_inpatlist, currow, "reqptype");
  338. var stnddd = ds_cond.getColumn(0, "indd");
  339. if( sysf_getGlobalVariable("able_sel_patlist", "M") == "N" ) { // 환자 선택 가능 여부 체크 2012.09.03 엄영만
  340. sysf_messageBox("현재 로그인한 '"+ sysf_getUserInfo("dutplcenm") +"' 부서는 기록저장 및 처방발행이 불가능한 부서 입니다.\n\n다시 로그인 후 진행 하십시오.","E");
  341. return false;
  342. }
  343. //환자수술 여부 및 수술처방 확인, 수술처방이 없는 경우 처방화면을 blocking
  344. if(fChkPatOpPrcp(pid, stnddd, cretno)==false){
  345. var opcnfmdd = ds_opprcpinfo.getColumn(0, "opcnfmdd");
  346. //opcnfmdd = opcnfmdd.substring(0, 4) + "-" + opcnfmdd.substring(4, 6) + "-" + opcnfmdd.substring(6, 8);
  347. //messageBox("[" + hngnm + "]환자의 [" + opcnfmdd + "]일자 수술 처방을 수술탭에서", "C001");
  348. sysf_messageBox("수술 처방을 수술탭에서", "C001");
  349. }
  350. fChkPatDSCBook(pid, orddd, orddeptcd);
  351. var opstatcd = ds_opprcpinfo.getColumn(0, "opstatcd");
  352. if (opstatcd =="10") {
  353. sysf_messageBox("수술마취의뢰 내역에 환자 구분이 DSC로 되어 있습니다. \n\n 재원중인 경우 DSC 로 수술마취 확정이 불가합니다.\n\n 수술마취의뢰 정보를 확인하시기 바랍니다.", "");
  354. } else if (opstatcd =="20") {
  355. sysf_messageBox("수술마취의뢰 내역에 환자 구분이 DSC로 되어 있습니다. \n\n 수술 여부에 따라 변경 또는 취소 의뢰를 해야 합니다. \n\n 수술마취의뢰 정보를 확인하시기 바랍니다.", "");
  356. }
  357. //CP환자 여부 확인
  358. if(fChkCPPatValid(currow)==false){
  359. return;
  360. }
  361. // 진료기록에 수정된 사항이 있을 경우 저장할 것인지 묻는 함수 호출 : 2009. 07. 27 김영학
  362. var mainobj = frmf_getMainViewer();
  363. var mainscrnid = mainobj.frmf_getScreenID(); //메인화면의 기록지 ID
  364. if(mainscrnid == "SMMMR00100"){
  365. var prvIntRecPamInfRtn = mainobj.fPrevInitRecPamInfo();
  366. if(prvIntRecPamInfRtn == false){
  367. return;
  368. }// 기록지에 필수 입력사항을 입력하지 않았을 때 그냥 넘어가 버리는 오류 수정 20100305 LYJ
  369. }
  370. //상단정보 설정 및 진료기록 처방화면 연동
  371. //var mainObj = getViewer("sysMessage");
  372. if(fReqInPatPamInfo()==true){
  373. if (fChkOpDrugResn() == false) {
  374. return;
  375. }
  376. if (fChkNpDiffCalcScorResn() == false) {
  377. return;
  378. }
  379. parent.parent.frmf_setParameter("SMMMO04100_reqptype", reqptype);
  380. var cpflag = parent.parent.SMMMO04100_getDSRoot("cpflag");
  381. var ordrecflag = parent.parent.SMMMO04100_getDSMainCond("ordrecflag");
  382. var recflag = parent.parent.SMMMO04100_getDSMainCond("recflag");
  383. var chngflag = parent.parent.SMMMO04100_getDSMainCond("chngflag");
  384. if (recflag == "Y") {
  385. var curEmrRecObj = frmf_findPopup("SMMRI00400"); //활성화된 통합기록 조회 화면 object loading
  386. var curExamRsltObj = frmf_findPopup("SMAER00800"); //활성화된 검사결과 화면 object loading
  387. var curNurTprObj = frmf_findPopup("SMMNR00900"); //활성화된 간호 TPR 화면 object loading
  388. var curNurBSEMRObj = frmf_findPopup("SMMNR02500"); //활성화된 간호 TPR 화면 object loading
  389. var curGrphObj = frmf_findPopup("SPMRF05200"); //활성화된 그래프 서식 화면 object loading
  390. var curCunsultObj = frmf_findPopup("SMMMR05000"); //활성화된 Consult 화면 object loading
  391. var curExamRsltNewObj = frmf_findPopup("SMMMI00100"); //활성화된 검사결과 화면 object loading
  392. var curCpObj = mainobj.frmf_findPopup("SMMMP00800"); //활성화된 CP Main 화면 object loading
  393. var curPrcpObj = mainobj.frmf_findPopup("SMMMO00100"); //활성화된 처방Main 화면 object loading
  394. var curCpSrchObj = mainobj.frmf_findPopup("SPMMP01200"); //활성화된 CP 검색 화면 object loading
  395. if(!utlf_isNull(curEmrRecObj)){ //통합기록 조회화면 refresh;
  396. frmf_setParameter("SMMRI00400_param_pid" , parent.parent.SMMMO04100_getPid());
  397. frmf_setParameter("SMMRI00400_param_chosflag", "");//model.getValue("/root/main/paminfo/list/ordtype")); 어디에 있는 노드지?
  398. curEmrRecObj.fInitalize();
  399. frmf_setFocusPop("SMMRI00400");
  400. }
  401. if(!utlf_isNull(curExamRsltObj)){ //검사결과 화면 refresh;
  402. curExamRsltObj.ds_singdata.setColumn(0, "srchpid", pid );
  403. curExamRsltObj.btn_srch.onclick.fireEvent(curExamRsltObj.btn_srch, new ClickEventInfo);
  404. }
  405. if(!utlf_isNull(curNurTprObj)){ //간호 TPR 화면 refresh : 2008-11-28 : 김영학 ;
  406. curNurTprObj.fInitialize("init");
  407. }
  408. if(!utlf_isNull(curNurBSEMRObj)){ //혈당간호기록 refresh : 2008-12-24 : 김영학 ;
  409. curNurBSEMRObj.fInitialize("init");
  410. }
  411. if(!utlf_isNull(curGrphObj)){ //그래프 서식 refresh : 2009-01-02 : 박민규 SW 요청 : 김영학 ;
  412. curGrphObj.fInitialize();
  413. }
  414. if(!utlf_isNull(curCunsultObj)){
  415. curCunsultObj.fInitalize();
  416. }
  417. if(!utlf_isNull(curExamRsltNewObj)){
  418. curExamRsltNewObj.ds_singdata.setColumn(0, "srchpid", pid );
  419. curExamRsltNewObj.btn_srch.onclick.fireEvent(curExamRsltNewObj.btn_srch, new ClickEventInfo);
  420. }
  421. if(!utlf_isNull(curPrcpObj)) { //활성화된 처방Main 화면이 있는 경우 close
  422. curPrcpObj.fPrcpWndClose();
  423. }
  424. if(!utlf_isNull(curCpObj)){ //활성화된 CP Main화면이 있는 경우 close
  425. curCpObj.fCloseGPS();
  426. }
  427. if(!utlf_isNull(curCpSrchObj)){ //활성화된 CP검색화면이 있는 경우 close
  428. curCpSrchObj.fCpSrchWndClose();
  429. }
  430. frmf_clearParameter("SMMMO04100_ANSWCNT");
  431. parent.parent.fChngEMRScrn();// 진료기록 Open
  432. } else {
  433. parent.parent.fOpenPrcpMainWnd();
  434. }
  435. }
  436. }
  437. /**
  438. * @desc : 전공의 등록
  439. * @
  440. * @param :
  441. * @event : 팝업창 내 환자 적용 EVENT
  442. * @return :
  443. * @author : 오지훈
  444. * @---------------------------------------------------
  445. */
  446. function fRgstCnclAtDoct(){
  447. var mypatinfo = "";
  448. var deptcd = ds_cond.getColumn(0, "orddeptcd");
  449. var userdeptcd = sysf_getUserInfo("dutplcecd");
  450. if (deptcd != userdeptcd) {
  451. sysf_messageBox("환자의 진료과가 다르면 담당의 적용을 할 수 없습니다.", "I");
  452. return;
  453. }
  454. var totrow = ds_inpatlist.rowcount;
  455. for(var currow = 0; currow < totrow ; currow++){
  456. if(ds_inpatlist.getSelect(currow)){
  457. var pid = ds_inpatlist.getColumn(currow, "pid");
  458. var indd = ds_inpatlist.getColumn(currow, "indd");
  459. var cretno = ds_inpatlist.getColumn(currow, "cretno");
  460. var seqno = ds_inpatlist.getColumn(currow, "seqno");
  461. var orddeptcd = ds_inpatlist.getColumn(currow, "orddeptcd");
  462. var tmpstr = "▦" + pid +
  463. "▦" + indd +
  464. "▦" + cretno +
  465. "▦" + seqno +
  466. "▦" + orddeptcd +
  467. "▩";
  468. mypatinfo += tmpstr;
  469. }
  470. }
  471. frmf_setParameter("apntflag" , "atdoct"); //화면 적용 구분을 전공의 등록으로 적용
  472. frmf_setParameter("mypatinfo", mypatinfo);
  473. frmf_modal("SPMMO16200", "SPMMO16200", null, null, null, null, null, null, null, null, null, null, "P");
  474. fReqInPatList();
  475. }
  476. /**
  477. * @desc : CP환자 여부 검사
  478. * @
  479. * @param :
  480. * @return :
  481. * @author : 오지훈
  482. * @---------------------------------------------------
  483. */
  484. function fChkCPPatValid(currow){
  485. var pid = ds_inpatlist.getColumn(currow, "pid");
  486. var orddd = ds_inpatlist.getColumn(currow, "indd");
  487. var cretno = ds_inpatlist.getColumn(currow, "cretno");
  488. var cpyn = ds_inpatlist.getColumn(currow, "cpyn");
  489. var hngnm = ds_inpatlist.getColumn(currow, "hngnm");
  490. var orddeptcd = ds_inpatlist.getColumn(currow, "orddeptcd");
  491. var ordtype = ds_inpatlist.getColumn(currow, "ordtype");
  492. if(utlf_isNull(orddeptcd)) orddeptcd = ds_cond.getColumn(0, "orddeptcd");
  493. if(utlf_isNull(ordtype)) ordtype = "I";
  494. ds_reqdata4.clearData();
  495. ds_reqdata4.addRow();
  496. ds_reqdata4.setColumn(0, "pid" , pid);
  497. ds_reqdata4.setColumn(0, "orddd" , orddd);
  498. ds_reqdata4.setColumn(0, "cretno" , cretno);
  499. ds_reqdata4.setColumn(0, "hngnm" , hngnm); //추가(2008.08.25)
  500. ds_reqdata4.setColumn(0, "prcpgenrflag", ordtype);
  501. ds_reqdata4.setColumn(0, "srchtabflag" , "I"); //대상자리스트탭(I/D):조회결과orddd,cretno는 외래이력의 수전정보임
  502. var oParam = {};
  503. oParam.id = "TRMMO04303";
  504. oParam.service = "prcpbaseapp.CpMngt";
  505. oParam.method = "reqGePattValidity";
  506. oParam.inds = "req=" + "ds_reqdata4";
  507. oParam.outds = "ds_rsltgetdata" + "=getdata";
  508. oParam.async = false;
  509. oParam.callback = "cf_TRMMO04303";
  510. tranf_submit(oParam);
  511. if(arErrorCode.pop("TRMMO04303") >= 0){
  512. if(ds_rsltgetdata.rowcount < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우
  513. parent.parent.SMMMO04100_setDSRoot("cpflag", "N");
  514. return true;
  515. } else { //CP적용환자 tbl에 유효한 데이터가 있는 경우
  516. dsf_setDefaultVal(ds_rsltgetdata, "appyn:Y");
  517. var appstat = ds_rsltgetdata.getColumn(0, "appstat");
  518. var cpgnm = ds_rsltgetdata.getColumn(0, "cpgnm");
  519. var cpgappno = ds_rsltgetdata.getColumn(0, "cpgappno");
  520. var msgcnts = ds_rsltgetdata.getColumn(0, "msgcnts");
  521. var msgflag = ds_rsltgetdata.getColumn(0, "msgflag");
  522. var prtlflagcd = ds_rsltgetdata.getColumn(0, "prtlflagcd"); //01:CP,02:CPG
  523. if(appstat == 52){ //case52: 입원장 CP
  524. var rtnval = sysf_messageBox(msgcnts, msgflag);
  525. if(rtnval == 6){
  526. parent.parent.SMMMO04100_setDSRoot("cpflag", "X"); // CP Main open
  527. return true;
  528. } else {
  529. parent.parent.SMMMO04100_setDSRoot("cpflag", "N");
  530. if(fUpdtCPPatAppStatVal(41) != false && !utlf_isNull(ds_inpatlist.getColumn(currow, "cpyn"))){ //41 : CP 취소
  531. ds_inpatlist.setColumn(currow, "cpyn", "N");
  532. return;
  533. }else{
  534. return false;
  535. }
  536. }
  537. }else{
  538. if( prtlflagcd == "02" && utlf_isNull(appstat) && msgflag == "P" ){ //모니터링구분:대상자탐색 Case. CPG & 호출flag:Popup(appyn:평가용여부)
  539. //CPG적용대상자 알림 팝업 호출 (2009.05.04)
  540. frmf_setParameter("SMMMO041_hngnm" , hngnm);
  541. frmf_setParameter("SMMMO041_pid" , pid);
  542. frmf_setParameter("SMMMO041_cretno" , cretno);
  543. frmf_setParameter("SMMMO041_orddd" , orddd);
  544. frmf_setParameter("SMMMO041_ordtype" , ordtype);
  545. frmf_setParameter("SMMMO041_orddeptcd" , orddeptcd);
  546. frmf_setParameter("SMMMO041_slipnm" , ds_rsltgetdata.getColumn(0, "msgcnts")); //cpgno▦cpghistseq▦cpgnm▦slipno▦slipnm▦valusgeyn▦valunm▦guidedocucnts
  547. frmf_setParameter("SMMMO041_cpgmntrflag", appstat); //null, SPMMP03200화면에서 cpgmntrflag(M or S)으로 따짐
  548. frmf_setParameter("SMMMO041_cpgappno" , cpgappno); //적용중인 CP가 존재하면 값이 있음
  549. frmf_setParameter("SMMMO041_cpgnm" , cpgnm); //적용중인 CP가 존재하면 값이 있음
  550. frmf_modal("SPMMP03200", "SPMMP03200", null, null, null, null, null, null, null, null, null, null, "P"); //CP대상자 알람 팝업
  551. if( cpgappno > 0 && cpgappno != frmf_getParameter("SPMMP032_cpgappno") && !utlf_isNull(ds_inpatlist.getColumn(currow, "cpyn"))){ //진행중인 CP가 있는데 팝업에서 Drop한 경우 CP여부 N으로..
  552. ds_inpatlist.setColumn(currow, "cpyn", "N");
  553. }
  554. if( !utlf_isNull(frmf_getParameter("SPMMP032_cpgappno")) && frmf_getParameter("SPMMP032_cpgappno") > 0 ){
  555. parent.parent.SMMMO04100_setDSRoot("cpflag", "Y"); //CPG적용한 경우, MGPS 호출
  556. }else{
  557. parent.parent.SMMMO04100_setDSRoot("cpflag", "N"); //미적용 시 처방 화면 호출
  558. }
  559. frmf_clearParameter("SPMMP032_cpgappno");
  560. frmf_clearParameter("SMMMO041_hngnm");
  561. frmf_clearParameter("SMMMO041_pid");
  562. frmf_clearParameter("SMMMO041_cretno");
  563. frmf_clearParameter("SMMMO041_orddd");
  564. frmf_clearParameter("SMMMO041_ordtype");
  565. frmf_clearParameter("SMMMO041_orddeptcd");
  566. frmf_clearParameter("SMMMO041_slipnm");
  567. frmf_clearParameter("SMMMO041_cpgmntrflag");
  568. frmf_clearParameter("SMMMO041_cpgappno");
  569. frmf_clearParameter("SMMMO041_cpgnm");
  570. return true;
  571. } else{
  572. //case 12 : D0 ~ D1 CP
  573. //그외 case : (10 : 진행중...)
  574. if( !utlf_isNull(msgcnts) && !utlf_isNull(msgflag) ){
  575. //12: D0 처방일과 == 입원일 -> Drop 유도
  576. //그외: 오늘날짜 > CP퇴원예정일 -> Drop 유도
  577. sysf_messageBox(msgcnts, msgflag);
  578. frmf_setParameter("SMMMO043_cpgappno", cpgappno); //drop 팝업에서 인식할 수 있는 param
  579. frmf_setParameter("SMMMO043_drop" , "N"); //drop 팝업에서 인식할 수 있는 param
  580. frmf_modal("SPMMP02300", "SPMMP02300", null, null, null, null, null, null, null, null, null, null, "M"); //Drop 팝업 호출
  581. parent.parent.SMMMO04100_setDSRoot("cpflag", "N");
  582. if( frmf_getParameter("SMMMO043_drop") == "Y" ){
  583. ds_inpatlist.setColumn(currow, "cpyn", "N");
  584. }else{
  585. return false;
  586. }
  587. frmf_clearParameter("SMMMO043_cpgappno");
  588. frmf_clearParameter("SMMMO043_drop");
  589. return true;
  590. }
  591. parent.parent.SMMMO04100_setDSRoot("cpflag", "Y");
  592. return true;
  593. }
  594. }
  595. }
  596. } //end submit
  597. }
  598. function cf_TRMMO04303(sSvcId, nErrorCode, sErrorMsg) {
  599. arErrorCode.push(sSvcId, nErrorCode);
  600. }
  601. /**
  602. * @desc : 미수행처방관리 화면 Open
  603. * @
  604. * @param :
  605. * @return :
  606. * @author : 오지훈
  607. * @---------------------------------------------------
  608. */
  609. function fOpenInFinPrcp(){
  610. var currow = ds_inpatlist.rowposition;
  611. if(currow < 0){
  612. return;
  613. }
  614. var pid = ds_inpatlist.getColumn(currow, "pid");
  615. var orddeptcd = ds_inpatlist.getColumn(currow, "orddeptcd");
  616. var medispclid= ds_inpatlist.getColumn(currow, "medispclid");
  617. frmf_setParameter("SMMMO02800_pid" , pid);
  618. frmf_setParameter("SMMMO02800_ioflag" , "I");
  619. frmf_setParameter("SMMMO02800_orddeptcd", orddeptcd);
  620. frmf_setParameter("SMMMO02800_orddrid" , medispclid);
  621. frmf_open("SMMMO02800", "SMMMO02800", null, null, null, null, null, null, null, null, null, null, "M");
  622. }
  623. /**
  624. * @desc : 입원환자리스트 색상설정
  625. * : 내환자적용 환자는 color instance에 ffffff이외의 값이 들어옴
  626. * @param :
  627. * @return :
  628. * @author : 오지훈
  629. * @---------------------------------------------------
  630. */
  631. function fChngGrdCellColor(color){
  632. if(color == undefined || color == "" || color == "ffffff")
  633. color = "default";
  634. else
  635. color = "#" + color;
  636. return color;
  637. }
  638. /**
  639. * @desc : 수술시 예방적 항생제 평가관련 사유를 입력
  640. * @param :
  641. * @return :
  642. * @author : 김영학
  643. * @---------------------------------------------------
  644. */
  645. function fChkOpDrugResn() {
  646. var currow = ds_inpatlist.rowposition;
  647. var orddeptcd = ds_inpatlist.getColumn(currow, "orddeptcd");
  648. var ordtype = ds_inpatlist.getColumn(currow, "ordtype");
  649. var hardcd = ds_opdrugresn.lookup("hardcd", orddeptcd, "hardcd");
  650. var cdseqno = ds_opdrugresn.lookup("hardcd", orddeptcd, "cdseqno");
  651. frmf_setParameter("SPMMO016000_seqno" , cdseqno);
  652. if (!utlf_isNull(hardcd)) {
  653. var resnyn = appf_getPatientInfoDetail("resnyn");
  654. if(ordtype =="I" && utlf_isNull(resnyn)) {
  655. frmf_modal("SPMMO16000", "SPMMO16000", null, false, 1, 510, 427, null, null, "min=true,max=true,resize=true", null, null, "M");
  656. }
  657. }
  658. /*
  659. if (orddeptcd =="2040000000" || orddeptcd =="2050000000" || orddeptcd =="2100000000" || orddeptcd =="2070000000") {
  660. var resnyn = getPatientInfoDetail("resnyn");
  661. if(ordtype =="I") {
  662. if (resnyn == "") {
  663. modal("SPMMO16000", "", "510px", "427px", "SPMMO16000", "", "", "sysmenu:hidden; min:visible; max:visible; icon:visible", false);
  664. }
  665. }
  666. }
  667. */
  668. return true;
  669. }
  670. /**
  671. * @desc : 입원환자 선택시 입원일이후 DSC 수술의뢰 또는 확정이 되어 있는 경우 경고를 띄워줌
  672. * @param :
  673. * @return :
  674. * @author : 김영학
  675. * @---------------------------------------------------
  676. */
  677. function fChkPatDSCBook(pid, orddd, orddeptcd){
  678. ds_reqdata3.clearData();
  679. ds_reqdata3.addRow();
  680. ds_reqdata3.getColumn(0, "pid" , pid);
  681. ds_reqdata3.getColumn(0, "orddd" , orddd);
  682. ds_reqdata3.getColumn(0, "orddeptcd" , orddeptcd);
  683. var oParam = {};
  684. oParam.id = "TRMMO04309";
  685. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  686. oParam.method = "reqGetChkPatDSCBook";
  687. oParam.inds = "req=" + "ds_reqdata3";
  688. oParam.outds = "ds_opprcpinfo" + "=opprcpinfo";
  689. oParam.async = false;
  690. tranf_submit(oParam);
  691. }
  692. function fPrtPatList() {
  693. if(utlf_isNull(ds_cond.getColumnInfo("orddeptnm"))) ds_cond.addColumn("orddeptnm", "string");
  694. if(utlf_isNull(ds_cond.getColumnInfo("medispclnm"))) ds_cond.addColumn("medispclnm", "string");
  695. if(utlf_isNull(ds_cond.getColumnInfo("atdocnm"))) ds_cond.addColumn("atdocnm", "string");
  696. ds_cond.setColumn(0, "orddeptnm", Div00.cmb_orddept.text);
  697. ds_cond.setColumn(0, "medispclnm", Div00.cmb_medispclid.text);
  698. ds_cond.setColumn(0, "atdocnm", Div00.cmb_atdoctid.text);
  699. var objDOM = rptf_createDOM(); // DOM 객체 설정
  700. rptf_setNodeListToDOM(objDOM, "/root/main/outpatinfo/outpatlist", ds_inpatlist); // 데이터셋 1
  701. rptf_setNodeListToDOM(objDOM, "/root/main/cond", ds_cond); // 데이터셋 2
  702. //sysf_trace(objDOM.documentElement.source); // XML 내용출력
  703. var objParam = new Object();
  704. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  705. var option = "open=1;save=1;directprint=0;print=1;zoom=0;callback=cbf_rpt_onFinishPrintXML";
  706. rptf_exeReportPreview30(["RPMMO04103"],[objParam], option);
  707. }
  708. /**
  709. * @desc : 정신과 의료급여 환자 환자수진별 입/퇴원 유형 입력 - 정신과 의료급여환자 차등수가제 관련 추가. 요청번호 :
  710. * @param :
  711. * @return :
  712. * @author : 김영학
  713. * @---------------------------------------------------
  714. */
  715. function fChkNpDiffCalcScorResn() {
  716. var currow = ds_inpatlist.rowposition;
  717. var orddeptcd = ds_inpatlist.getColumn(currow, "orddeptcd");
  718. var ordtype = ds_inpatlist.getColumn(currow, "ordtype");
  719. var insukind = ds_inpatlist.getColumn(currow, "insukind");
  720. var patdeptcd = ds_npdeptcd.lookup("hardcd", orddeptcd, "hardcd");
  721. var userdeptcd = ds_npdeptcd.lookup("hardcd", sysf_getUserInfo("dutplcecd"), "hardcd");
  722. //alert(ordtype + "=====" + getPatientInfoDetail("npresnyn") + "=====" + insukind + "=====" + patdeptcd + "=====" + userdeptcd)
  723. if (!utlf_isNull(patdeptcd) && !utlf_isNull(userdeptcd)) {
  724. var resnyn = appf_getPatientInfoDetail("npresnyn");
  725. if(ordtype == "I" && resnyn == "000" && (insukind == "21" || insukind == "22")) {
  726. frmf_setParameter ( "SPMMO21100_title1" , "입원유형입력"); //정신과 의료급여 환자
  727. frmf_setParameter ( "SPMMO21100_title2" , "정신과 차등수가제도 특정내역"); //정신과 의료급여 환자
  728. frmf_setParameter ( "SPMMO21100_resnflag" , "001"); //입원유형사유입력
  729. frmf_setParameter ( "SPMMO21100_hardcdno" , "174"); //입원유형사유 HARDCODE 번호
  730. frmf_setParameter ( "SPMMO21100_pid" , ds_inpatlist.getColumn(currow, "pid"));
  731. frmf_setParameter ( "SPMMO21100_orddd" , ds_inpatlist.getColumn(currow, "indd"));
  732. frmf_setParameter ( "SPMMO21100_cretno" , ds_inpatlist.getColumn(currow, "cretno"));
  733. frmf_setParameter ( "SPMMO21100_orddeptcd" , orddeptcd);
  734. frmf_setParameter ( "SPMMO21100_ordtype" , ordtype);
  735. frmf_modal("SPMMO21100", "SPMMO21100", null, false, 1, 510, 427, null, null, "min=true,max=true,resize=true", null, null, "M");
  736. }
  737. }
  738. return true;
  739. }
  740. /**
  741. * @desc : 안전사고 보고
  742. * @param :
  743. * @return :
  744. * @author : 엄영만
  745. * @---------------------------------------------------
  746. */
  747. function fPatQi(){
  748. var currow = ds_inpatlist.rowposition;
  749. var pid = ds_inpatlist.getColumn(currow, "pid");
  750. var orddd = ds_inpatlist.getColumn(currow, "indd");
  751. var cretno = ds_inpatlist.getColumn(currow, "cretno");
  752. var ordtype = "I";
  753. var oprsrvno = "";
  754. frmf_setParameter("SMMQR00100_PARAM2", pid + "▦" + orddd + "▦" + cretno + "▦" + ordtype+"▦" + oprsrvno);
  755. frmf_modal("SMMQR00100", "SMMQR00100", null, null, null, null, null, null, null, null, null, null, "M");
  756. }]]></Script>