SMMMO04500.xjs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  4. 수술환자리스트 ( SMMMO04500_수술환자리스트.xfdl - JScript )
  5. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  6. */
  7. var arErrorCode = new HashArray();
  8. /**
  9. * @desc : 화면 초기화
  10. * @
  11. * @param :
  12. * @return :
  13. * @author : 오지훈
  14. * @---------------------------------------------------
  15. */
  16. function fInitialize_SMMMO04500(){
  17. ds_cond.setColumn(0, "opcnfmdd", utlf_getCurrentDate());
  18. lf_gethardcdArrayList(new Array(
  19. "hardcd|445"
  20. ),
  21. new Array(
  22. "ds_hardcd"
  23. )
  24. );
  25. appf_getCodeList([{dsNm: "ds_M0014", cdGrpId: "M0014"}
  26. , {dsNm: "ds_M0015", cdGrpId: "M0015"}
  27. , {dsNm: "ds_M0017", cdGrpId: "M0017"}
  28. , {dsNm: "ds_M0623", cdGrpId: "M0623"}
  29. , {dsNm: "ds_M0808", cdGrpId: "M0808", sortField: "cdnm"}], true);
  30. lf_getHardCDList("N", 18, 0, ds_hardcdno); //마취통증의학과 부서코드 조회
  31. //2016.10.11 [수술탭] Popup Menu 서식코드(Formcd)
  32. lf_getHardCDList("N", 9969, null, ds_pmenu_formcd);
  33. // 2017.01.03 외상환자 전용 수술방 제어
  34. lf_getHardCDList("N", 9973, null, ds_init_hardcd9973);
  35. lf_reqOpRoomList(ds_cond.getColumn(0, "opcnfmdd"), ds_oproomlist, ds_alloproomlist, "total");
  36. var nRow = ds_oproomlist.insertRow(0);
  37. ds_oproomlist.setColumn(nRow, "oproomcd", "0000"); //수술방명 조회
  38. ds_oproomlist.setColumn(nRow, "oproomnm", "방없음"); //수술방콤보 Item '방없음'추가
  39. ds_oproomlist2.copyData(ds_oproomlist);
  40. frmf_addComboItem("Div00.cmb_oproomcd"); //조회조건 수술방콤보 Item '전체'추가
  41. Div00.cmb_oproomcd.index = 0; //수술방 콤보는 default '전체'설정
  42. var dutplcecd = sysf_getUserInfo("dutplcecd");
  43. var perfdrid = "-";
  44. var reopenflag = parent.parent.ds_reopen.getColumn(0, "reopenflag"); //진료대상자 리스트 open여부
  45. if(reopenflag == "Y"){ //수술환자리스트 다시 열린 경우, 진료대상자 main에 ordtab의 condlist를 복사, condlist는 닫힐때 진료대상자의 정보를 저장함
  46. try {
  47. ds_cond.copyData(parent.parent.ds_reopen_condlist);
  48. dutplcecd = ds_cond.getColumn(0, "perfdeptcd");
  49. perfdrid = ds_cond.getColumn(0, "perfdrid");
  50. } catch(E) {
  51. }
  52. parent.parent.ds_reopen.setColumn(0, "reopenflag", "N");
  53. }
  54. var jobposcd = sysf_getUserInfo("jobposcd");
  55. if (jobposcd == "1775" || jobposcd == "1800") {
  56. perfdrid = "-"; //의사
  57. } else {
  58. perfdrid = sysf_getUserInfo("userid"); //의사
  59. }
  60. setDeptCodeList(dutplcecd);
  61. setUserList(dutplcecd, perfdrid);
  62. reqOrderInfoOfCol(ds_reqdata1, ds_gridseq, "SMMMO04500", grd_oppatlist); //수술환자리스트 컬럼 조회 및 설정
  63. if(Div00.cmb_orddept.value == ""){Div00.cmb_orddept.index = 1;}
  64. if(Div00.cmb_orddrid.value == ""){Div00.cmb_orddrid.index = 1;}
  65. fReqOPPatList();
  66. // 20190408 김현석, 마취 전 평가서 출력은 칠곡만..
  67. if(sysf_getUserInfo("dutplceinstcd") == "032") {
  68. btn_anst_print.visible =true;
  69. }
  70. else{
  71. btn_anst_print.visible =false;
  72. }
  73. // 공통코드를 가져온다.
  74. dsf_createDs("ds_send");
  75. dsf_createDs("ds_codelist");
  76. var pCdrupid = "'012'"; // 마취통증의학과 부서코드
  77. var pFromDate = utlf_getCurrentDate(); //조회기준일자
  78. // 간호 하드코드 가져오기.
  79. fGetNursHardCdInfo(pCdrupid, pFromDate);
  80. var anstdeptcd = utlf_transNullToEmpty(ds_codelist.getColumn(0, "cdid"));
  81. // 김현석, 소속부서가 마취통증의학과인 경우에만 마취통증의학과 전달사항 저장 가능
  82. if (sysf_getUserInfo("dutplcecd") == anstdeptcd) // "2090000000")
  83. {
  84. divAnstDeliveFact.btnSave.visible = true;
  85. }
  86. else
  87. {
  88. divAnstDeliveFact.btnSave.visible = false;
  89. }
  90. }
  91. function setDeptCodeList(sDeptcd, sOrddd){
  92. lf_mmbfGetDeptCodeComboList(ds_orddept, "D", sOrddd); //부서콤보 조회
  93. frmf_addComboItem("Div00.cmb_orddept"); //부서콤보 Item '전체'추가
  94. if(!utlf_isNull(sDeptcd)) {
  95. Div00.cmb_orddept.value = sDeptcd; //진료과
  96. }
  97. }
  98. function setUserList(sOrddeptcd, sPerfdrid, sOrddd){
  99. lf_mmbfGetUserComboList(ds_userlist, sOrddeptcd, "0330", "", "M", sOrddd, "", "P"); //이전 수술환자리스트 화면의 진료과의 의사콤보 조회
  100. frmf_addComboItem("Div00.cmb_orddrid"); //의사콤보 전체항목 추가
  101. if(utlf_isNull(sPerfdrid)){
  102. Div00.cmb_orddrid.index = 1;
  103. Div00.cmb_orddrid.updateToDataset();
  104. }else{
  105. Div00.cmb_orddrid.value = sPerfdrid; //의사
  106. }
  107. }
  108. /**
  109. * @desc : 수술환자 선택
  110. * @
  111. * @param :
  112. * @return :
  113. * @author : 오지훈
  114. * @---------------------------------------------------
  115. */
  116. function fSelectOpPat(){
  117. var currow = ds_grd_oppatlist.rowposition;
  118. if(currow < 0){
  119. return;
  120. }
  121. var dutplcecd = sysf_getUserInfo("dutplcecd"); //사용자부서
  122. var instcd = sysf_getUserInfo("dutplceinstcd");
  123. var opstatcd = ds_grd_oppatlist.getColumn(currow, "opstatcd");
  124. var painlessflag = ds_grd_oppatlist.getColumn(currow, "painlessflag"); // 무통마취여부가 N일 경우는 수술마취 확정상태에 따라 Blocking : 2009.02.05 :김영학 (박유미선배 요청)
  125. var pid = ds_grd_oppatlist.getColumn(currow, "pid");
  126. var hngnm = ds_grd_oppatlist.getColumn(currow, "hngnm");
  127. var opcnfmdd = ds_grd_oppatlist.getColumn(currow, "opcnfmdd");
  128. var perfdeptcd = ds_grd_oppatlist.getColumn(currow, "perfdeptcd");
  129. var perfdrid = ds_grd_oppatlist.getColumn(currow, "perfdrid");
  130. var ioflag = ds_grd_oppatlist.getColumn(currow, "ioflag");
  131. var srchdd = ds_cond.getColumn(0, "opcnfmdd");
  132. if(utlf_isNull(perfdeptcd)) perfdeptcd = ds_cond.getColumn(0, "perfdeptcd");
  133. if(utlf_isNull(ioflag)) ioflag = "T";
  134. if(painlessflag == "N") {
  135. if(opstatcd == "00" || opstatcd == "10"){
  136. sysf_messageBox("선택된 환자는 수술확정이 되지", "E007");
  137. return;
  138. }
  139. }
  140. if( sysf_getGlobalVariable("able_sel_patlist", "M") == "N" ) { // 환자 선택 가능 여부 체크 2012.09.03 엄영만
  141. sysf_messageBox("현재 로그인한 '"+ sysf_getUserInfo("dutplcenm") +"' 부서는 기록저장 및 처방발행이 불가능한 부서 입니다.\n\n다시 로그인 후 진행 하십시오.","E");
  142. return false;
  143. }
  144. //2016.05.09 마취전평가 및 협진서 미작성 시 마취기록지 사용못하도록 제한
  145. if((sysf_getUserInfo("dutplcecd") == "2090000000" || sysf_getUserInfo("dutplcecd") == "2090300000")
  146. && parent.parent.SMMMO04100_getDSMainCond("ordrecflag") != "Y"){ //사용자부서가 마취통증의학과, 통증클리닉인 경우
  147. // 2017.01.03 외상환자 전용 수술방 제어
  148. var trpatyn = ds_grd_oppatlist.getColumnInfo("trpatyn") == null ? "Y" : ds_grd_oppatlist.getColumn(currow, "trpatyn");
  149. var nTarRow = ds_init_hardcd9973.findRow("hardcd", ds_grd_oppatlist.getColumn(currow, "oproomnm"));
  150. if( trpatyn != "Y" && nTarRow > -1 ){
  151. var setDate = utlf_transNullToEmpty(ds_init_hardcd9973.getColumn(nTarRow, "hardcdnm")).split("|")[0];
  152. if( !utlf_isNull(setDate) && setDate.length == 8 && setDate <= opcnfmdd ){
  153. sysf_messageBox("선택된 환자 수술방은 외상환자 수술방입니다. 수술방 변경 후 진행하십시오.", "E");
  154. //return false;
  155. }
  156. }
  157. if( lf_TRMMR03714() == false ){
  158. var rtn = sysf_messageBox("선택된 환자는 마취전평가 및 협진서 작성이 되지않았습니다. 기록 작성 후 진행하십시오.", "E");
  159. return false;
  160. /*
  161. if( rtn == 6 ){
  162. if( lf_OpAssemRec() == false ){
  163. return false;
  164. }
  165. }else{
  166. return false;
  167. }
  168. */
  169. }else if(lf_getHardCDList("Y", 9970, 3, null) == "Y" && lf_OpAssemRecExist("STEP4") == false){ //2016.10.11 [수술탭] 마취유도직전평가서 제어여부
  170. var rtn = sysf_messageBox("선택된 환자는 마취유도직전평가서 작성이 되지않았습니다. 기록 작성 후 진행하십시오.", "E");
  171. return false;
  172. }
  173. }
  174. //20150717 *
  175. ds_reqdata.clearData();
  176. ds_reqdata.addRow();
  177. ds_reqdata.setColumn(0, "ioflag" , "T"); //수술환자 ioflag는 T로 설정, 실제로 T는 없으나, 로직처리를 위해 임시로, 실제 ioflag는 patflag
  178. ds_reqdata.setColumn(0, "pid" , pid);
  179. ds_reqdata.setColumn(0, "orddd" , opcnfmdd);
  180. ds_reqdata.setColumn(0, "orddeptcd", perfdeptcd);
  181. ds_reqdata.setColumn(0, "orddrid" , perfdrid);
  182. ds_reqdata.setColumn(0, "patflag" , ioflag); //실제 ioflag는 patflag로 설정
  183. ds_reqdata.setColumn(0, "instcd" , instcd); //기관코드
  184. ds_reqdata.setColumn(0, "srchdd" , srchdd); //기준일자
  185. var oParam = {};
  186. oParam.id = "TRMMO04503";
  187. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  188. oParam.method = "reqGetPamKeyInfo";
  189. oParam.inds = "req=" + "ds_reqdata";
  190. oParam.outds = "ds_pamkeyinfo=pamkeyinfo";
  191. oParam.async = false;
  192. oParam.callback = "cf_TRMMO04503"; //수술환자의 원무키 조회
  193. tranf_submit(oParam);
  194. if(arErrorCode.pop("TRMMO04503") >= 0){
  195. var cnt = ds_pamkeyinfo.rowcount;
  196. if(cnt > 1){
  197. sysf_messageBox("환자의 원무 접수정보가 2건이상 존재 합니다.\n\n처방및 기록을 저장하실 원무 접수 정보를 선택", "I007");
  198. var objArg = new Object();
  199. var ds_param = new Dataset();
  200. ds_param.copyData(ds_pamkeyinfo);
  201. objArg.arg_ds_pamkeyinfo = ds_param;
  202. frmf_modal("SPMMO18300", "SPMMO18300", objArg, "", "", "", "", "", "", "", "", "", "M");
  203. var cretno = frmf_getParameter("SPMMO18300_cretno");
  204. if(cretno == "0") {
  205. sysf_messageBox("환자의 원무 접수정보가 선택 되지", "E007");
  206. return;
  207. } else {
  208. ds_pamkeyinfo.setColumn(0, "cretno", cretno);
  209. }
  210. }
  211. } else {
  212. sysf_messageBox("선택된 환자는 원무 접수 정보가", "E014");
  213. return;
  214. }
  215. //20150717 */
  216. //처방, CP화면에 modal 또는 modaless가 뜬 경우, 환자 선택 불가
  217. if(fChkScrnDisable()==false){
  218. return;
  219. }
  220. //CP환자 여부 확인
  221. if(fChkCPPatValid(currow)==false){
  222. return;
  223. }
  224. // 진료기록에 수정된 사항이 있을 경우 저장할 것인지 묻는 함수 호출 : 2009. 07. 27 김영학
  225. var mainobj = frmf_getMainViewer();
  226. var mainscrnid = mainobj.frmf_getScreenID(); //메인화면의 기록지 ID
  227. if(mainscrnid == "SMMMR00100"){
  228. var prvIntRecPamInfRtn = mainobj.fPrevInitRecPamInfo();
  229. if(prvIntRecPamInfRtn == false){
  230. return;
  231. }// 기록지에 필수 입력사항을 입력하지 않았을 때 그냥 넘어가 버리는 오류 수정 20100305 LYJ
  232. }
  233. //20150717
  234. /*
  235. //기록&처방화면 로딩
  236. this.parent.parent.lf_loadRecAndPrcpWnd();
  237. */
  238. //20150717 /*
  239. // 상단정보 설정
  240. if(!fReqOpPatPamInfo(currow)) { return; }
  241. // 진료기록, 처방화면 연동
  242. var recflag = parent.parent.SMMMO04100_getDSMainCond("recflag");
  243. parent.parent.fOpenPrcpMainWnd(recflag);
  244. }
  245. function cf_TRMMO04503(sSvcId, nErrorCode, sErrorMsg) {
  246. arErrorCode.push(sSvcId, nErrorCode);
  247. }
  248. /**
  249. * @desc : 수술환자 기본정보설정
  250. * @
  251. * @param :
  252. * @return :
  253. * @author : 오지훈
  254. * @---------------------------------------------------
  255. */
  256. function fReqOpPatPamInfo(iRow){
  257. var ioflag = "T" // 수술일 경우 ioflag:T
  258. var pid = ds_grd_oppatlist.getColumn(iRow, "pid");
  259. var opcnfmdd = ds_grd_oppatlist.getColumn(iRow, "opcnfmdd");
  260. var cretno = ds_pamkeyinfo.getColumn(0, "cretno");
  261. var instcd = ds_grd_oppatlist.getColumn(iRow, "instcd");
  262. var perfdeptcd = ds_grd_oppatlist.getColumn(iRow, "perfdeptcd");
  263. var perfdrid = ds_grd_oppatlist.getColumn(iRow, "perfdrid");
  264. var patflag = ds_grd_oppatlist.getColumn(iRow, "ioflag");
  265. var procflag = "F"; // 최초조회:F , 재조회:R
  266. var cnstopflag = ds_grd_oppatlist.getColumn(iRow, "cnstopflag");
  267. var oprsrvno = ds_grd_oppatlist.getColumn(iRow, "oprsrvno");
  268. var mainoprsrvno = ds_grd_oppatlist.getColumn(iRow, "mainoprsrvno");
  269. /* // 협진수술일때 부수술일 경우 주수술의 기록지가 뜨는 로직 삽입 : 2008. 08.27 (박유미 요청)
  270. if (cnstopflag == "Y") {
  271. if (mainoprsrvno != "-") {
  272. oprsrvno = mainoprsrvno;
  273. }
  274. }
  275. */
  276. var ophistno = ds_grd_oppatlist.getColumn(iRow, "ophistno");
  277. var srchdd = ds_cond.getColumn(0, "opcnfmdd"); //조회일자
  278. var param = ioflag + "▦" +
  279. pid + "▦" +
  280. opcnfmdd + "▦" +
  281. cretno + "▦" +
  282. instcd + "▦" +
  283. perfdeptcd + "▦" +
  284. perfdrid + "▦" +
  285. patflag + "▦" +
  286. procflag + "▦" +
  287. oprsrvno + "▦" +
  288. ophistno + "▦" +
  289. srchdd;
  290. return appf_initPatientInfo(param);
  291. }
  292. /**
  293. * @desc : 수술환자리스트 조회
  294. * @
  295. * @param :
  296. * @return :
  297. * @author : 오지훈
  298. * @---------------------------------------------------
  299. */
  300. function fReqOPPatList() {
  301. parent.parent.ds_cond_oppatlist.copyData(ds_cond);
  302. //마취통증의학과와 조회진료과가 동일한 경우는 전체 조회 처리
  303. //서버로직으로의 처리는 속도영향이 있음으로 web에서 처리
  304. //2008. 07. 29. 오지훈
  305. ds_reqOpPat.copyData(ds_cond);
  306. var anstpaindeptcd = ds_hardcdno.getColumn(0, "hardcd");
  307. if(anstpaindeptcd == ds_cond.getColumn(0, "perfdeptcd")){
  308. ds_reqOpPat.setColumn(0, "perfdeptcd", "-"); //집도과 전체설정
  309. ds_reqOpPat.setColumn(0, "perfdrid" , "-"); //집도의 전체설정
  310. }
  311. var compsrefcnts = ds_gridseq.getColumn(0, "compsrefcnts");
  312. var compssizecnts = ds_gridseq.getColumn(0, "compssizecnts");
  313. if(utlf_isNull(compsrefcnts)) compsrefcnts = "";
  314. if(utlf_isNull(compssizecnts)) compssizecnts = "";
  315. ds_reqOpPat.addColumn("compsrefcnts", "string", 1024);
  316. ds_reqOpPat.addColumn("compssizecnts", "string", 1024);
  317. ds_reqOpPat.setColumn(0, "compsrefcnts", compsrefcnts);
  318. ds_reqOpPat.setColumn(0, "compssizecnts", compssizecnts);
  319. var oParam = {};
  320. oParam.id = "TRMMO04501";
  321. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  322. oParam.method = "reqGetOPPatList";
  323. oParam.inds = "req=" + "ds_reqOpPat";
  324. oParam.outds = "ds_grd_oppatlist=oppatlist ds_op_count=opanstcount";
  325. oParam.async = true;
  326. oParam.callback = "cf_TRMMO04501";
  327. tranf_submit(oParam);
  328. }
  329. function cf_TRMMO04501(sSvcId, nErrorCode, sErrorMsg) {
  330. if(nErrorCode > -1)
  331. ds_totcnt.setColumn(0, "totcnt", ds_grd_oppatlist.rowcount);
  332. var orderby = ds_cond.getColumn(0, "orderby");
  333. var sortcol = ds_cond.getColumn(0, "sortcol");
  334. if(!utlf_isNull(orderby) && !utlf_isNull(sortcol))
  335. ds_grd_oppatlist.keystring.current = "S:" + orderby + sortcol;
  336. if(ds_op_count.rowcount > 0){
  337. var sOpCount = "전체 : " + ds_op_count.getColumn(0, "total") + ", " +
  338. "확정 : " + ds_op_count.getColumn(0, "confirm") + " " +
  339. "(전신 : " + ds_op_count.getColumn(0, "anst1") + ", " +
  340. "부위 : " + ds_op_count.getColumn(0, "anst2") + ", " +
  341. "국소 : " + ds_op_count.getColumn(0, "anst3") + "), " +
  342. "의뢰 : " + ds_op_count.getColumn(0, "request");
  343. Static_opcount.text = sOpCount;
  344. }
  345. }
  346. /**
  347. * @desc : 그리드 data 엑셀화일로 저장
  348. * @
  349. * @param :
  350. * @return :
  351. * @author : 오지훈
  352. * @---------------------------------------------------
  353. */
  354. function fSaveGridToExcel(){
  355. grdf_exportExcel(grd_oppatlist, "수술환자리스트", "수술");
  356. }
  357. /**
  358. * @desc : (수술)관심환자등록창 호출
  359. * @
  360. * @param :
  361. * @return :
  362. * @author : 오지훈
  363. * @---------------------------------------------------
  364. */
  365. function fCallWndConcPatRgst(){
  366. var currow = ds_grd_oppatlist.rowposition;
  367. var pid = ds_grd_oppatlist.getColumn(currow, "pid");
  368. var hngnm = ds_grd_oppatlist.getColumn(currow, "hngnm");
  369. var indd = ds_grd_oppatlist.getColumn(currow, "opcnfmdd");
  370. var cretno = ""
  371. var seqno = ""
  372. var instcd = ds_grd_oppatlist.getColumn(currow, "instcd");
  373. var param = "I" + "▩" + pid + "▩" + hngnm + "▩" + indd + "▩" + cretno + "▩" + seqno + "▩" + instcd;
  374. frmf_setParameter("param", param);
  375. frmf_open("SPMMO08200", "SPMMO08200", null, null, null, null, null, null, null, null, null, null, "M");
  376. //frmf_modal("SPMMO08200", "SPMMO08200", null, null, null, null, null, null, null, null, null, null, "M");
  377. //fReqOPPatList();
  378. }
  379. /**
  380. * @desc : (수술)주의요망환자창 호출
  381. * @
  382. * @param :
  383. * @return :
  384. * @author : 엄영만
  385. * @---------------------------------------------------
  386. */
  387. function fCallWndWarnPat(){
  388. var nCurRow = ds_grd_oppatlist.rowposition;
  389. var sPid = ds_grd_oppatlist.setColumn(nCurRow, "pid");
  390. var sHngnm = ds_grd_oppatlist.setColumn(nCurRow, "hngnm");
  391. frmf_setParameter("SMMMO19100_warncd" , sPid);
  392. frmf_setParameter("SMMMO19100_warnnm" , sHngnm);
  393. frmf_modal("SMMMO19100", "SMMMO19100", null, null, null, null, null, null, null, null, null, null, "M");
  394. frmf_clearParameter("SMMMO19100_warncd");
  395. frmf_clearParameter("SMMMO19100_warnnm");
  396. }
  397. /**
  398. * @desc : 수술부위확인 점검표 창 호출
  399. * @
  400. * @param : oprsrvno
  401. * @return :
  402. * @author : 손성훈
  403. * @---------------------------------------------------
  404. */
  405. function fOpchk(){
  406. /* 수술부위 확인점검표 칠곡 적용.2012.05.24_손성훈
  407. var dutplceinstcd = getUserInfo("dutplceinstcd");
  408. if (dutplceinstcd == "032"){
  409. //messagebox("준비중 입니다","I");
  410. return;
  411. }
  412. */
  413. var currow = ds_grd_oppatlist.rowposition;
  414. var oprsrvno = ds_grd_oppatlist.getColumn(currow, "oprsrvno");
  415. frmf_setParameter("SMMNP00208_PARM_OPRSRVNO", oprsrvno);
  416. //setParameter("SMMNP00208_PARM_PID", model.getValue("/root/init/HideData/pid"));
  417. frmf_modal("SMMNP00208", "SMMNP00208", null, null, null, null, null, null, null, null, null, null, "M");
  418. }
  419. /**
  420. * @desc : 수술환자 CP적용여부 확인
  421. * @
  422. * @param :
  423. * @return :
  424. * @author : 오지훈
  425. * @---------------------------------------------------
  426. */
  427. function fChkCPPatValid(currow){
  428. var pid = ds_pamkeyinfo.getColumn(0, "pid");
  429. var orddd = ds_pamkeyinfo.getColumn(0, "orddd");
  430. var cretno= ds_pamkeyinfo.getColumn(0, "cretno");
  431. var ioflag= ds_pamkeyinfo.getColumn(0, "ioflag");
  432. var hngnm = "";//ds_pamkeyinfo.getColumn(0, "hngnm");
  433. ds_reqPatValid.clearData();
  434. ds_reqPatValid.addRow();
  435. ds_reqPatValid.setColumn(0, "pid" , pid);
  436. ds_reqPatValid.setColumn(0, "orddd" , orddd);
  437. ds_reqPatValid.setColumn(0, "cretno" , cretno);
  438. ds_reqPatValid.setColumn(0, "hngnm" , hngnm); //추가(2008.08.25)
  439. ds_reqPatValid.setColumn(0, "prcpgenrflag", ioflag);
  440. ds_reqPatValid.setColumn(0, "srchtabflag" , "D"); //대상자리스트탭(I/D):조회결과orddd,cretno는 외래이력의 수전정보임
  441. var oParam = {};
  442. oParam.id = "TRMMO04303";
  443. oParam.service = "prcpbaseapp.CpMngt";
  444. oParam.method = "reqGePattValidity";
  445. oParam.inds = "req=" + "ds_reqPatValid";
  446. oParam.outds = "ds_rsltgetdata=getdata";
  447. oParam.async = false;
  448. oParam.callback = "cf_TRMMO04303"; //수술환자의 CP적용 여부 확인
  449. tranf_submit(oParam);
  450. if(arErrorCode.pop("TRMMO04303") >= 0){
  451. if(ds_rsltgetdata.rowcount < 1){ //cp적용환자 tbl에 유효한 데이터가 없는 경우
  452. parent.parent.SMMMO04100_setDSRoot("cpflag", "N"); //처방open
  453. return true;
  454. } else { //CP적용환자 tbl에 유효한 데이터가 있는 경우
  455. dsf_setDefaultVal(ds_rsltgetdata, "appyn:Y");
  456. var appstat = ds_rsltgetdata.getColumn(0, "appstat");
  457. var cpgnm = ds_rsltgetdata.getColumn(0, "cpgnm");
  458. var cpgappno = ds_rsltgetdata.getColumn(0, "cpgappno");
  459. var msgcnts = ds_rsltgetdata.getColumn(0, "msgcnts");
  460. var msgflag = ds_rsltgetdata.getColumn(0, "msgflag");
  461. var prtlflagcd = ds_rsltgetdata.getColumn(0, "prtlflagcd"); //01:CP,02:CPG
  462. if(appstat == 52){
  463. //case52: 입원장 CP
  464. var rtnval = sysf_messageBox(msgcnts, msgflag);
  465. if(rtnval == 6){
  466. parent.parent.SMMMO04100_setDSRoot("cpflag", "X"); // CP Main open
  467. return true;
  468. } else {
  469. parent.parent.SMMMO04100_setDSRoot("cpflag", "N");
  470. // if(fUpdtCPPatAppStatVal(41) != false && !utlf_isNull(ds_grd_oppatlist.getColumn(currow, "cpyn"))){ //41 : CP 취소
  471. // ds_grd_oppatlist.setColumn(currow, "cpyn", "N");
  472. // return;
  473. // } else {
  474. return false;
  475. // }
  476. }
  477. } else {
  478. if( prtlflagcd == "02" && utlf_isNull(appstat) && msgflag == "P" ){ //모니터링구분:대상자탐색 Case. CPG & 호출flag:Popup(appyn:평가용여부)
  479. //CPG적용대상자 알림 팝업 호출 (2009.05.04)
  480. frmf_setParameter("SMMMO041_hngnm" , hngnm);
  481. frmf_setParameter("SMMMO041_pid" , pid);
  482. frmf_setParameter("SMMMO041_cretno" , cretno);
  483. frmf_setParameter("SMMMO041_orddd" , orddd);
  484. frmf_setParameter("SMMMO041_ordtype" , ioflag);
  485. frmf_setParameter("SMMMO041_orddeptcd" , perfdeptcd);
  486. frmf_setParameter("SMMMO041_slipnm" , msgcnts); //cpgno▦cpghistseq▦cpgnm▦slipno▦slipnm▦valusgeyn▦valunm▦guidedocucnts
  487. frmf_setParameter("SMMMO041_cpgmntrflag", appstat); //null, SPMMP03200화면에서 cpgmntrflag(M or S)으로 따짐
  488. frmf_setParameter("SMMMO041_cpgappno" , cpgappno); //적용중인 CP가 존재하면 값이 있음
  489. frmf_setParameter("SMMMO041_cpgnm" , cpgnm); //적용중인 CP가 존재하면 값이 있음
  490. frmf_modal("SPMMP03200", "SPMMP03200", null, null, null, null, null, null, null, null, null, null, "P"); //CP대상자 알람 팝업
  491. // if( cpgappno > 0 && cpgappno != frmf_getParameter("SPMMP032_cpgappno") && !utlf_isNull(ds_grd_oppatlist.getColumn(currow, "cpyn"))){ //진행중인 CP가 있는데 팝업에서 Drop한 경우 CP여부 N으로..
  492. // ds_grd_oppatlist.setColumn(currow, "cpyn", "N");
  493. // }
  494. if( !utlf_isNull(frmf_getParameter("SPMMP032_cpgappno")) && frmf_getParameter("SPMMP032_cpgappno") > 0 ){
  495. parent.parent.SMMMO04100_setDSRoot("cpflag", "Y"); //CPG적용한 경우, MGPS 호출
  496. } else {
  497. parent.parent.SMMMO04100_setDSRoot("cpflag", "N"); //미적용 시 처방 화면 호출
  498. }
  499. frmf_clearParameter("SPMMP032_cpgappno");
  500. frmf_clearParameter("SMMMO041_hngnm");
  501. frmf_clearParameter("SMMMO041_pid");
  502. frmf_clearParameter("SMMMO041_cretno");
  503. frmf_clearParameter("SMMMO041_orddd");
  504. frmf_clearParameter("SMMMO041_ordtype");
  505. frmf_clearParameter("SMMMO041_orddeptcd");
  506. frmf_clearParameter("SMMMO041_slipnm");
  507. frmf_clearParameter("SMMMO041_cpgmntrflag");
  508. frmf_clearParameter("SMMMO041_cpgappno");
  509. frmf_clearParameter("SMMMO041_cpgnm");
  510. return true;
  511. } else {
  512. //case 12 : D0 ~ D1 CP
  513. //그외 case : (10 : 진행중...)
  514. if( !utlf_isNull(msgcnts) && !utlf_isNull(msgflag) ){
  515. //12: D0 처방일과 == 입원일 -> Drop 유도
  516. //그외: 오늘날짜 > CP퇴원예정일 -> Drop 유도
  517. sysf_messageBox(msgcnts, msgflag);
  518. frmf_setParameter("SMMMO043_cpgappno", cpgappno); //drop 팝업에서 인식할 수 있는 param
  519. frmf_setParameter("SMMMO043_drop" , "N"); //drop 팝업에서 인식할 수 있는 param
  520. frmf_modal("SPMMP02300", "SPMMP02300", null, null, null, null, null, null, null, null, null, null, "M"); //Drop 팝업 호출
  521. parent.parent.SMMMO04100_setDSRoot("cpflag", "N");
  522. if( frmf_getParameter("SMMMO043_drop") == "Y" ){
  523. //ds_grd_erpatlist.setColumn(currow, "cpyn", "N");
  524. }else{
  525. return false;
  526. }
  527. frmf_clearParameter("SMMMO043_cpgappno");
  528. frmf_clearParameter("SMMMO043_drop");
  529. return true;
  530. }
  531. parent.parent.SMMMO04100_setDSRoot("cpflag", "Y");
  532. return true;
  533. }
  534. }
  535. }
  536. }
  537. }
  538. function cf_TRMMO04303(sSvcId, nErrorCode, sErrorMsg) {
  539. arErrorCode.push(sSvcId, nErrorCode);
  540. }
  541. function fPrtPatList() {
  542. if(utlf_isNull(ds_cond.getColumnInfo("orddeptnm"))) ds_cond.addColumn("orddeptnm", "string");
  543. if(utlf_isNull(ds_cond.getColumnInfo("orddrnm"))) ds_cond.addColumn("orddrnm", "string");
  544. if(utlf_isNull(ds_cond.getColumnInfo("oproom"))) ds_cond.addColumn("oproom", "string");
  545. ds_cond.setColumn(0, "orddeptnm", Div00.cmb_orddept.text);
  546. ds_cond.setColumn(0, "orddrnm", Div00.cmb_orddept.text);
  547. ds_cond.setColumn(0, "oproom", Div00.cmb_oproomcd.text);
  548. //20190122 이돈희 : 수술 카운트 출력에 추가
  549. ds_cond.addColumn("totalcount", "string", 1024);
  550. ds_cond.addColumn("requestcount", "string", 1024);
  551. ds_cond.addColumn("confirmcount", "string", 1024);
  552. ds_cond.addColumn("anst1count", "string", 1024);
  553. ds_cond.addColumn("anst2count", "string", 1024);
  554. ds_cond.addColumn("anst3count", "string", 1024);
  555. ds_cond.setColumn(0, "totalcount", ds_op_count.getColumn(0, "total"));
  556. ds_cond.setColumn(0, "requestcount", ds_op_count.getColumn(0, "request"));
  557. ds_cond.setColumn(0, "confirmcount", ds_op_count.getColumn(0, "confirm"));
  558. ds_cond.setColumn(0, "anst1count", ds_op_count.getColumn(0, "anst1"));
  559. ds_cond.setColumn(0, "anst2count", ds_op_count.getColumn(0, "anst2"));
  560. ds_cond.setColumn(0, "anst3count", ds_op_count.getColumn(0, "anst3"));
  561. var objDOM = rptf_createDOM(); // DOM 객체 설정
  562. rptf_setNodeListToDOM(objDOM, "/root/main/oppatinfo/oppatlist", ds_grd_oppatlist); // 데이터셋 1
  563. rptf_setNodeListToDOM(objDOM, "/root/main/cond", ds_cond); // 데이터셋 2
  564. //sysf_trace(objDOM.documentElement.source); // XML 내용출력
  565. var objParam = new Object();
  566. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  567. var option = "open=1;save=1;directprint=0;print=1;zoom=0";
  568. rptf_exeReportPreview30(["RPMMO04105"],[objParam], option);
  569. }
  570. /**
  571. * @desc : 안전사고 보고
  572. * @param :
  573. * @return :
  574. * @author : 엄영만
  575. * @---------------------------------------------------
  576. */
  577. function fPatQi(){
  578. var currow = ds_grd_oppatlist.rowposition
  579. var pid = ds_grd_oppatlist.getColumn(currow, "pid");
  580. var orddd = "";
  581. var cretno = "";
  582. var ordtype = "";
  583. var oprsrvno = ds_grd_oppatlist.getColumn(currow, "oprsrvno");
  584. frmf_setParameter("SMMQR00100_PARAM2", pid + "▦" + orddd + "▦" + cretno + "▦" + ordtype+"▦" + oprsrvno);
  585. frmf_modal("SMMQR00100", "SMMQR00100", null, null, null, null, null, null, null, null, null, null, "M");
  586. }
  587. function fSelectOpPat_pamkeyinfo(){
  588. var currow = ds_grd_oppatlist.rowposition;
  589. if(currow < 0){
  590. return;
  591. }
  592. var dutplcecd = sysf_getUserInfo("dutplcecd"); //사용자부서
  593. var instcd = sysf_getUserInfo("dutplceinstcd");
  594. var opstatcd = ds_grd_oppatlist.getColumn(currow, "opstatcd");
  595. var painlessflag = ds_grd_oppatlist.getColumn(currow, "painlessflag"); // 무통마취여부가 N일 경우는 수술마취 확정상태에 따라 Blocking : 2009.02.05 :김영학 (박유미선배 요청)
  596. var pid = ds_grd_oppatlist.getColumn(currow, "pid");
  597. var hngnm = ds_grd_oppatlist.getColumn(currow, "hngnm");
  598. var opcnfmdd = ds_grd_oppatlist.getColumn(currow, "opcnfmdd");
  599. var perfdeptcd = ds_grd_oppatlist.getColumn(currow, "perfdeptcd");
  600. var perfdrid = ds_grd_oppatlist.getColumn(currow, "perfdrid");
  601. var ioflag = ds_grd_oppatlist.getColumn(currow, "ioflag");
  602. var srchdd = ds_cond.getColumn(0, "opcnfmdd");
  603. if(utlf_isNull(perfdeptcd)) perfdeptcd = ds_cond.getColumn(0, "perfdeptcd");
  604. if(utlf_isNull(ioflag)) ioflag = "T";
  605. ds_reqdata.clearData();
  606. ds_reqdata.addRow();
  607. ds_reqdata.setColumn(0, "ioflag" , "T"); //수술환자 ioflag는 T로 설정, 실제로 T는 없으나, 로직처리를 위해 임시로, 실제 ioflag는 patflag
  608. ds_reqdata.setColumn(0, "pid" , pid);
  609. ds_reqdata.setColumn(0, "orddd" , opcnfmdd);
  610. ds_reqdata.setColumn(0, "orddeptcd", perfdeptcd);
  611. ds_reqdata.setColumn(0, "orddrid" , perfdrid);
  612. ds_reqdata.setColumn(0, "patflag" , ioflag); //실제 ioflag는 patflag로 설정
  613. ds_reqdata.setColumn(0, "instcd" , instcd); //기관코드
  614. ds_reqdata.setColumn(0, "srchdd" , srchdd); //기준일자
  615. var oParam = {};
  616. oParam.id = "TRMMO04503";
  617. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  618. oParam.method = "reqGetPamKeyInfo";
  619. oParam.inds = "req=" + "ds_reqdata";
  620. oParam.outds = "ds_pamkeyinfo=pamkeyinfo";
  621. oParam.async = false;
  622. oParam.callback = "cf_TRMMO04503"; //수술환자의 원무키 조회
  623. tranf_submit(oParam);
  624. if(arErrorCode.pop("TRMMO04503") >= 0){
  625. var cnt = ds_pamkeyinfo.rowcount;
  626. if(cnt > 1){
  627. sysf_messageBox("환자의 원무 접수정보가 2건이상 존재 합니다.\n\n처방및 기록을 저장하실 원무 접수 정보를 선택", "I007");
  628. var objArg = new Object();
  629. var ds_param = new Dataset();
  630. ds_param.copyData(ds_pamkeyinfo);
  631. objArg.arg_ds_pamkeyinfo = ds_param;
  632. frmf_modal("SPMMO18300", "SPMMO18300", objArg, "", "", "", "", "", "", "", "", "", "M");
  633. var cretno = frmf_getParameter("SPMMO18300_cretno");
  634. if(cretno == "0") {
  635. sysf_messageBox("환자의 원무 접수정보가 선택 되지", "E007");
  636. return;
  637. } else {
  638. ds_pamkeyinfo.setColumn(0, "cretno", cretno);
  639. }
  640. }
  641. } else {
  642. sysf_messageBox("선택된 환자는 원무 접수 정보가", "E014");
  643. return;
  644. }
  645. }
  646. /**
  647. * @desc : 환자라벨출력
  648. * @param :
  649. * @return :
  650. * @author : 엄영만
  651. * @---------------------------------------------------
  652. */
  653. function fPrintPatLabel(){
  654. var currow = ds_grd_oppatlist.rowposition;
  655. var pid = ds_grd_oppatlist.getColumn(currow, "pid");
  656. var patnm = ds_grd_oppatlist.getColumn(currow, "hngnm");
  657. var sexage = ds_grd_oppatlist.getColumn(currow, "sa");
  658. frmf_setParameter("SMMMB00100_scrnid" , "SMMMO04100");
  659. frmf_setParameter("SMMMB00100_pid" , pid);
  660. frmf_setParameter("SMMMB00100_patnm" , patnm);
  661. frmf_setParameter("SMMMB00100_sexage" , sexage);
  662. frmf_modal("SMMMB00100", "SMMMB00100", null, null, null, null, null, null, null, null, null, null, "M");
  663. }
  664. function fSendSmsOpPat(){
  665. fSendSmsPatList(grd_oppatlist, ds_grd_oppatlist);
  666. }
  667. //20190409 이돈희 : 수술환자 탭에 환자분류 추가
  668. function lf_AnstClassify(){
  669. var iRow = ds_grd_oppatlist.rowposition;
  670. var oprsrvno = ds_grd_oppatlist.getColumn(iRow, "oprsrvno");
  671. var ophistno = ds_grd_oppatlist.getColumn(iRow, "ophistno");
  672. var anstclassify1 = ds_grd_oppatlist.getColumn(iRow, "anstclassify1");
  673. var anstclassify2 = ds_grd_oppatlist.getColumn(iRow, "anstclassify2");
  674. frmf_setParameter("SPMMI00600_oprsrvno" , oprsrvno);
  675. frmf_setParameter("SPMMI00600_ophistno" , ophistno);
  676. if(!utlf_isNull(anstclassify1)){
  677. frmf_setParameter("SPMMI00600_anstclassify1" , anstclassify1);
  678. }
  679. if(!utlf_isNull(anstclassify2)){
  680. frmf_setParameter("SPMMI00600_anstclassify2" , anstclassify2);
  681. }
  682. frmf_modal("SPMMI00600", "SPMMI00600", null, null, null, null, null, null, null, null, null, null, "M");
  683. frmf_clearParameter("SPMMI00600_oprsrvno");
  684. frmf_clearParameter("SPMMI00600_ophistno");
  685. frmf_clearParameter("SPMMI00600_anstclassify1");
  686. frmf_clearParameter("SPMMI00600_anstclassify2");
  687. }
  688. ]]></Script>