SMMNR14000.xjs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. (SMMNR14000.xrw - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. - Desc : 병동활동기록에서 사용하는 스크립트
  7. */
  8. var xWardPatInfoPath = "/root/main/wardpatinfo/wardpatlist"; // 환자리스트 xPath
  9. var xBedsoreGridPath = ds_main_actvinfo_actvlist; // 병동활동기록 리스트 xPath
  10. var xClsListBKPath = "/root/hidden/main/actvinfo/actvlist"; // 그리드 hidden xPath
  11. var xPamInfoPath = '/root/main/paminfo'
  12. var xGrupcdmax = "";
  13. /////////////////조회관련 함수 시작////////////////////
  14. //통합기록조회
  15. var ViewFunc = "sign"; //sign : 기록인증용, view : view인증용
  16. //화면을 초기화한다. 화면로딩이 끝난 시점에 호출된다.
  17. function finit(pFlag){
  18. var instcd = sysf_getUserInfo("dutplceinstcd");
  19. var standard_yn = "orduseyn";
  20. var ord_deptflag = 'W';
  21. var rslt_ref = "ds_init_dept_dept";
  22. var sort_field = "depthngnm";
  23. var sort_method = "asc";
  24. var dt = utlf_getCurrentDate();
  25. group5.rdo_indsch.value = "1";
  26. ds_main_paminfo_list.clearData();
  27. ds_codelist.clearData();
  28. ds_codelist_R01.clearData();
  29. var paminfo = sysf_getGlobalVariable("paminfo");
  30. var pid = "";
  31. var wardcd = "";
  32. var indschacptstat = "";
  33. if( utlf_transNullToEmpty(paminfo).length > 0 ){
  34. dsf_setCSVToDs("ds_main_paminfo_list", paminfo); //환자정보내리기
  35. if( utlf_isNull(ds_main_paminfo_list.getColumnInfo("sectioncd")) ){
  36. ds_main_paminfo_list.addColumn("sectioncd", "string");
  37. }
  38. if( utlf_isNull(ds_main_paminfo_list.getColumnInfo("ordtype")) ){
  39. ds_main_paminfo_list.addColumn("ordtype", "string");
  40. }
  41. pid = ds_main_paminfo_list.getColumn(0, "pid");
  42. wardcd = ds_main_paminfo_list.getColumn(0, "wardcd");
  43. indschacptstat = ds_main_paminfo_list.getColumn(0, "indschacptstat");
  44. }
  45. fGetNursHardCdInfo("'002','R01'", dt); // '002' 응급의료센터 여부 조회
  46. appf_getDeptCodeList(instcd, standard_yn, ord_deptflag, sort_field, sort_method, dt, "", "", rslt_ref); //ds_codelist
  47. ds_codelist.filter("cdgrupid=='R01'");
  48. ds_codelist_R01.copyData(ds_codelist, true);
  49. ds_codelist.filter("");
  50. ds_main_cond.setColumn(0, "wardcd", sysf_getUserInfo("dutplcecd"));
  51. if( pFlag != "Search" ){
  52. ds_main_cond.setColumn(0, "actvdd", dt);
  53. }
  54. if( !utlf_isNull(wardcd) ){
  55. ds_main_cond.setColumn(0, "wardcd", wardcd);
  56. }else{
  57. ds_main_cond.setColumn(0, "wardcd", sysf_getUserInfo("dutplcecd"));
  58. }
  59. fGetZoneList(); //CareCom.js 응급실구역정보조회
  60. fnZoneDisp();
  61. fSettingnurid();
  62. fSetInDsch(indschacptstat);
  63. if( indschacptstat == "A" || ds_main_cond.getColumn(0, "indsch") == "1" ){
  64. fGetWardPatList();
  65. }else{
  66. fGetPidWardInfo(pid);
  67. }
  68. if( !utlf_isNull(pid) ){
  69. if( ds_main_paminfo_list.getColumn(0, "ioflag") != "E" && ds_main_paminfo_list.getColumn(0, "careinrmdd") == "-" ){
  70. sysf_messageBox("아직 입실확인하지 않은 환자입니다.", "I");
  71. //return;
  72. }
  73. ds_main_wardpatinfo_wardpatlist.rowposition = ds_main_wardpatinfo_wardpatlist.findRow("pid", pid);
  74. //선택환자정보조회
  75. fSearch();
  76. }
  77. }
  78. // 내환자 셋팅정보 조회
  79. function fSettingnurid(){
  80. ds_send_reqdata.setColumn(0, "wardcd", ds_main_cond.getColumn(0, "wardcd") );
  81. var oParam = {};
  82. oParam.id = "TRMNW10910";
  83. oParam.service = "wardcareapp.WardCareMngt";
  84. oParam.method = "reqGetSettingRnList";
  85. oParam.inds = "req=ds_send_reqdata";
  86. oParam.outds = "ds_init_settinginfo_settingrn=settingrn";
  87. oParam.async = false;
  88. oParam.callback = "cf_TRMNW10910";
  89. tranf_submit(oParam);
  90. if( arErrorCode.pop("TRMNW10910") > -1 ){
  91. //settingnurid = model.getValue("/root/init/settinginfo/settingrn[settingrnid='" + getUserInfo("userid") +"']/settingrnid");
  92. ds_main_cond.setColumn(0, "settingrnid", "");
  93. }
  94. }
  95. function cf_TRMNW10910(sSvcId, nErrorCode, sErrorMsg) {
  96. arErrorCode.push(sSvcId, nErrorCode);
  97. if( ds_init_settinginfo_settingrn.rowcount > 0 && ds_init_settinginfo_settingrn.getColumn(0, "settingrnnm") == "-" ){
  98. ds_init_settinginfo_settingrn.setColumn(0, "settingrnid", "");
  99. }
  100. }
  101. // 응급실 구역 보여주기
  102. function fnZoneDisp() {
  103. //응급의료센터(2280200000)인 경우
  104. //내환자정보대신에 구역정보가 보임)
  105. if( !utlf_isNull(ds_codelist.lookupExpr("cdgrupid=='002' && cdid=='"+group5.grp_sea.cmb_ward.value+"'", "cdid")) ){
  106. group5.cap_Zone.visible = true;
  107. group5.cmb_Zone.visible = true;
  108. group5.grp_sea.cap_settingrn.position.left = 330;
  109. group5.grp_sea.cap_settingrn.position.width = 60;
  110. group5.grp_sea.cap_settingrn.position.top = 10;
  111. group5.grp_sea.cmb_settingrn.position.left = 390;
  112. group5.grp_sea.cmb_settingrn.position.width = 75;
  113. group5.grp_sea.cmb_settingrn.position.top = 10;
  114. group5.grp_sea.caption17.position.left = 495;
  115. group5.grp_sea.caption17.position.width = 97;
  116. group5.grp_sea.caption17.position.top = 10;
  117. group5.grp_sea.ipt_actvdd.position.left = 595;
  118. group5.grp_sea.ipt_actvdd.position.width = 88;
  119. group5.grp_sea.ipt_actvdd.position.top = 10;
  120. var zonecd = ds_main_paminfo_list.getColumn(0, "sectioncd");
  121. if( !utlf_isNull(zonecd) && zonecd != "-" ){
  122. group5.cmb_Zone.value = ds_main_paminfo_list.getColumn(0, "sectioncd");
  123. } else {
  124. group5.cmb_Zone.value = "-";
  125. }
  126. } else {
  127. group5.cap_Zone.visible = false;
  128. group5.cmb_Zone.visible = false;
  129. group5.cmb_Zone.value = "-";
  130. group5.grp_sea.cap_settingrn.position.left = 190;
  131. group5.grp_sea.cap_settingrn.position.width = 60;
  132. group5.grp_sea.cap_settingrn.position.top = 10;
  133. group5.grp_sea.cmb_settingrn.position.left = 250;
  134. group5.grp_sea.cmb_settingrn.position.width = 75;
  135. group5.grp_sea.cmb_settingrn.position.top = 10;
  136. group5.grp_sea.caption17.position.left = 355;
  137. group5.grp_sea.caption17.position.width = 97;
  138. group5.grp_sea.caption17.position.top = 10;
  139. group5.grp_sea.ipt_actvdd.position.left = 455;
  140. group5.grp_sea.ipt_actvdd.position.width = 88;
  141. group5.grp_sea.ipt_actvdd.position.top = 10;
  142. }
  143. }
  144. // 환자 리스트 조회
  145. function fGetWardPatList(){
  146. ds_main_cond.setColumn(0, "pid", "");
  147. ds_main_actvinfo_actvlist.clearData();
  148. ds_send_reqdata.copyRow(0, ds_main_cond, 0);
  149. if( !utlf_isNull(ds_codelist.lookupExpr("cdgrupid=='002' && cdid=='"+group5.grp_sea.cmb_ward.value+"'", "cdid")) ){
  150. ds_send_reqdata.setColumn(0, "emcflag", "Y");
  151. }
  152. var oParam = {};
  153. oParam.id = "TRMNR14000";
  154. oParam.service = "carerecapp.NursingRecord";
  155. oParam.method = "reqGetActvWardPatInfo";
  156. oParam.inds = "reqdata=ds_send_reqdata";
  157. oParam.outds = "ds_main_wardpatinfo_wardpatlist=wardpatlist";
  158. oParam.async = false;
  159. //oParam.callback = "cf_TRMNR14000";
  160. tranf_submit(oParam);
  161. ds_main_wardpatinfo_wardpatlist.updateColID("medispclid", "orddrid");
  162. ds_main_wardpatinfo_wardpatlist.rowposition = -1;
  163. }
  164. // 조회버튼 클릭시
  165. function fSearch(){
  166. ds_main_paminfo_list.clearData();
  167. var paminfo = sysf_getGlobalVariable("paminfo");
  168. if( utlf_transNullToEmpty(paminfo).length > 0 ){
  169. dsf_setCSVToDs("ds_main_paminfo_list", paminfo); //환자정보내리기
  170. }
  171. if( utlf_isNull(ds_main_paminfo_list.getColumnInfo("sectioncd")) ){
  172. ds_main_paminfo_list.addColumn("sectioncd", "string");
  173. }
  174. if( utlf_isNull(ds_main_paminfo_list.getColumnInfo("ordtype")) ){
  175. ds_main_paminfo_list.addColumn("ordtype", "string");
  176. }
  177. // 활동기록 리스트 조회
  178. fSearchRecInfo();
  179. return true;
  180. }
  181. // 병동활동기록 리스트 조회
  182. function fSearchRecInfo() {
  183. ds_main_actvinfo_actvlist.clearData();
  184. ds_main_cond.setColumn(0, "pid", ds_main_paminfo_list.getColumn(0, "pid"));
  185. ds_send_reqdata.setColumn(0, "pid", ds_main_paminfo_list.getColumn(0, "pid"));
  186. ds_send_reqdata.setColumn(0, "indd", ds_main_paminfo_list.getColumn(0, "indd"));
  187. ds_send_reqdata.setColumn(0, "cretno", ds_main_paminfo_list.getColumn(0, "cretno"));
  188. ds_send_reqdata.setColumn(0, "actvdd", ds_main_cond.getColumn(0, "actvdd"));
  189. var oParam = {};
  190. oParam.id = "TRMNR14001";
  191. oParam.service = "carerecapp.NursingRecord";
  192. oParam.method = "reqGetActvList";
  193. oParam.inds = "reqdata=ds_send_reqdata";
  194. oParam.outds = "ds_main_actvinfo_actvlist=actvlist";
  195. oParam.async = false;
  196. //oParam.callback = "cf_TRMNR14001";
  197. tranf_submit(oParam);
  198. ds_main_actvinfo_actvlist.rowposition = -1;
  199. ds_main_actvinfo_actvlist.enableevent = false;
  200. ds_main_actvinfo_actvlist.updatecontrol = false;
  201. for( var i=0 ; i<ds_main_actvinfo_actvlist.rowcount ; i++ ){
  202. if( ds_main_actvinfo_actvlist.getColumn(i, "sel") == "true" ){
  203. ds_main_actvinfo_actvlist.setColumn(i, "sel", "1");
  204. }else{
  205. ds_main_actvinfo_actvlist.setColumn(i, "sel", "0");
  206. }
  207. }
  208. ds_main_actvinfo_actvlist.updatecontrol = true;
  209. ds_main_actvinfo_actvlist.enableevent = true;
  210. }
  211. /////////////////데이터 저장/삭제 함수 시작////////////
  212. // 병동활동기록을 저장하기전에 유효성을 체크한다.
  213. function fIsValid(){
  214. //그리드 저장데이터 존재여부 체크(default rows = 2)
  215. if( group5.grd_actvlist.rowcount < 1 ){
  216. sysf_messageBox("저장할 내역이","I004");
  217. return false;
  218. }
  219. var sflag = '';
  220. var cnts = 0;
  221. for( var i=0 ; i<group5.grd_actvlist.rowcount ; i++ ){
  222. if( ds_main_actvinfo_actvlist.getRowType(i) != 1 ){
  223. cnts ++;
  224. }
  225. }
  226. if( cnts < 1 ){
  227. sysf_messageBox("신규등록/수정사항이","I004");
  228. return false;
  229. }
  230. for( var i=0 ; i<group5.grd_actvlist.rowcount ; i++ ){
  231. //병동활동 입력여부 체크
  232. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "actvcd"))
  233. || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "actvcd")).length <= 0 ) {
  234. sysf_messageBox("병동활동은","I003");
  235. return false;
  236. }
  237. //병동활동시간 입력여부 체크
  238. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "actvtm"))
  239. || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "actvtm")).trim().length <= 0 ) {
  240. sysf_messageBox("병동활동시간은","I003");
  241. return false;
  242. }else if( utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "actvtm")).trim().length != 4 ){
  243. sysf_messageBox("활동시간을 정확히 입력하세요.(네자리)", "I");
  244. return;
  245. }
  246. //병동활동 기록시간 입력여부 체크
  247. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "rectm"))
  248. || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "rectm")).trim().length <= 0 ) {
  249. sysf_messageBox("병동활동 기록시간은","I003");
  250. return false;
  251. }else if( utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "rectm")).trim().length != 4){
  252. sysf_messageBox("병동활동 기록시간을 정확히 입력하세요.(네자리)", "I");
  253. return;
  254. }
  255. }
  256. return true;
  257. }
  258. var SIGN_ROW = 0;//for돌때 해당 그리드만 인증데이터로 만들어주기 위해 global variable로 선언
  259. //인증저장
  260. function fSignSave(){
  261. if( fIsValid() ){
  262. var pid = ds_main_cond.getColumn(0, "pid");
  263. var indd = ds_main_paminfo_list.getColumn(0, "indd");
  264. var cretno = ds_main_paminfo_list.getColumn(0, "cretno");
  265. var orddeptcd = ds_main_paminfo_list.getColumn(0, "orddeptcd");
  266. var orddrid = ds_main_paminfo_list.getColumn(0, "medispclid");
  267. var ordtype = ds_main_paminfo_list.getColumn(0, "ordtype");
  268. var signno = '';
  269. // 저장 데이터 세팅
  270. ds_send_savedata_actvinfo.clearData();
  271. for( var i=0 ; i<ds_main_actvinfo_actvlist.rowcount ; i++ ){
  272. var nRow = ds_send_savedata_actvinfo.addRow();
  273. ds_send_savedata_actvinfo.copyRow(nRow, ds_main_actvinfo_actvlist, i);
  274. if( ds_send_savedata_actvinfo.getColumn(nRow, "sel") == "1" ){
  275. ds_send_savedata_actvinfo.setColumn(nRow, "sel", "true");
  276. }else{
  277. ds_send_savedata_actvinfo.setColumn(nRow, "sel", "false");
  278. }
  279. }
  280. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  281. ds_send_savedata_signlist.clearData();
  282. //for를 돌면서 각 병동활동기록정보의 노드를 복사 한다.
  283. for( var i=0 ; i<group5.grd_actvlist.rowcount ; i++ ){
  284. SIGN_ROW = i;
  285. signno = xBedsoreGridPath.getColumn(i, "signno");
  286. // 인증 로직 호출
  287. ViewFunc = "sign";
  288. if( Sign.signprocess() == true ){
  289. for( var j=0 ; j<=SIGN_ROW ; j++ ){
  290. ds_send_savedata_signlist.addRow();
  291. }
  292. ds_send_savedata_signlist.setColumn(SIGN_ROW, "pid", pid); // 등록번호
  293. ds_send_savedata_signlist.setColumn(SIGN_ROW, "certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  294. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  295. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signno", signno); // 서명번호
  296. ds_send_savedata_signlist.setColumn(SIGN_ROW, "cretno" , cretno); // 생성번호
  297. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recdd", ds_main_cond.getColumn(0, "actvdd")); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  298. ds_send_savedata_signlist.setColumn(SIGN_ROW, "rectm", utlf_getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  299. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  300. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  301. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  302. ds_send_savedata_signlist.setColumn(SIGN_ROW, "formcd", "1400015148"); // 각 기록지별 서식코드(1400015148 병동활동기록)
  303. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddeptcd", orddeptcd); // 진료부서코드
  304. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddrid" , orddrid); // 진료의사ID
  305. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  306. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  307. ds_send_savedata_signlist.setColumn(SIGN_ROW, "screenid" , frmf_getScreenID());
  308. ds_send_savedata_signlist.setColumn(SIGN_ROW, "dispyn", "N"); // 인증저장용 data(view용 인증데이터는 따로 생성함)
  309. } else {
  310. return ;
  311. }
  312. }
  313. dsf_createDsRow("ds_tempuserInfo", [{col: "uiUserId", val:sysf_getUserId() }]);
  314. var oParam = {};
  315. oParam.id = "TXMNR14000";
  316. oParam.service = "carerecapp.NursingRecord";
  317. oParam.method = "reqInsActvRec";
  318. oParam.inds = "actvinfo=ds_send_savedata_actvinfo signlist=ds_send_savedata_signlist tempUserInfo=ds_tempuserInfo";
  319. oParam.outds = "ds_temp_actvinfo=actvinfo";
  320. oParam.async = false;
  321. oParam.callback = "cf_TXMNR14000";
  322. tranf_submit(oParam);
  323. if( arErrorCode.pop("TXMNR14000") > -1 ){
  324. ds_hidden_main_actvinfo_actvlist.copyData(ds_main_actvinfo_actvlist);
  325. fMakeViewData(); //통합기록view용 데이터생성
  326. }
  327. }
  328. }
  329. function cf_TXMNR14000(sSvcId, nErrorCode, sErrorMsg) {
  330. arErrorCode.push(sSvcId, nErrorCode);
  331. }
  332. // 인증데이터 만들기.
  333. function fMake_SignData(){
  334. if( ViewFunc == "sign" ){
  335. ds_sign_actvinfo_actvlist.clearData();
  336. ds_sign_actvinfo_actvlist.addRow();
  337. ds_sign_actvinfo_actvlist.copyRow(0, ds_main_actvinfo_actvlist, SIGN_ROW);
  338. var arrSignPath = new Array();
  339. arrSignPath[0] = "/cond";
  340. arrSignPath[1] = "/actvlist";
  341. var arrSignDs = new Array();
  342. arrSignDs[0] = ds_main_cond.saveXML();
  343. arrSignDs[1] = ds_sign_actvinfo_actvlist.saveXML();
  344. Sign.addnodeset(arrSignPath, arrSignDs);
  345. }else if( ViewFunc == "view" ){
  346. var arrSignPath = new Array();
  347. arrSignPath[0] = "/cond";
  348. var arrSignDs = new Array();
  349. arrSignDs[0] = ds_main_cond.saveXML();
  350. Sign.addnodeset(arrSignPath, arrSignDs);
  351. var arrSignPath = new Array();
  352. arrSignPath[0] = "/viewactvgrup/";
  353. arrSignPath[1] = "/viewactvgrup/actvlist";
  354. var arrSignDs = new Array();
  355. arrSignDs[0] = null;
  356. arrSignDs[1] = ds_viewinfo_viewactvgrup_actvlist.saveXML();
  357. Sign.addnodeset(arrSignPath, arrSignDs);
  358. }
  359. }
  360. // 병동활동기록 삭제
  361. function fDel(){
  362. //삭제할 항목이 선택되었는지 여부를 체크
  363. var delFlag = false; //체크박스 체크여부
  364. var sel = ''; //체크박스(true/false)
  365. var stat = ''; //그리드상태(i/u/d)
  366. /*
  367. var retMsg = messageBox('선택하신 병동활동기록을', 'Q001');
  368. if(retMsg != "6") {
  369. return "false";
  370. }
  371. */
  372. var pid = ds_main_cond.getColumn(0, "pid");
  373. var indd = ds_main_paminfo_list.getColumn(0, "indd");
  374. var cretno = ds_main_paminfo_list.getColumn(0, "cretno");
  375. var orddeptcd = ds_main_paminfo_list.getColumn(0, "orddeptcd");
  376. var orddrid = ds_main_paminfo_list.getColumn(0, "medispclid");
  377. var ordtype = ds_main_paminfo_list.getColumn(0, "ordtype");
  378. var signno = '';
  379. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  380. ds_send_savedata_signlist.clearData();
  381. ds_send_savedata_actvinfo.clearData();
  382. for( var i=0 ; i<group5.grd_actvlist.rowcount ; i++ ){
  383. sel = xBedsoreGridPath.getColumn(i, "sel");
  384. stat = xBedsoreGridPath.getColumn(i, "stat");
  385. //flag = xBedsoreGridPath.getColumn(i, "flag");
  386. SIGN_ROW = i ;
  387. if( sel == '1' ){
  388. delFlag = true;
  389. if( stat == 'i' ){
  390. //체크한 항목이 행추가 (stat:i)상태인 경우 그리드에서 바로 삭제
  391. xBedsoreGridPath.deleteRow(i);
  392. }else{
  393. //상태값을 'd'로 변경
  394. xBedsoreGridPath.setColumn(i, "stat", 'd');
  395. var nRow = ds_send_savedata_actvinfo.addRow();
  396. ds_send_savedata_actvinfo.copyRow(nRow, xBedsoreGridPath, i);
  397. if( ds_send_savedata_actvinfo.getColumn(nRow, "sel") == "1" ){
  398. ds_send_savedata_actvinfo.setColumn(nRow, "sel", "true");
  399. }else{
  400. ds_send_savedata_actvinfo.setColumn(nRow, "sel", "false");
  401. }
  402. signno = xBedsoreGridPath.getColumn(i, "signno");
  403. // 인증 로직 호출
  404. ViewFunc = "sign";
  405. if( Sign.signprocess() == true ){
  406. for( var j=0 ; j<=SIGN_ROW ; j++ ){
  407. ds_send_savedata_signlist.addRow();
  408. }
  409. ds_send_savedata_signlist.setColumn(SIGN_ROW, "pid", pid); // 등록번호
  410. ds_send_savedata_signlist.setColumn(SIGN_ROW, "certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  411. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  412. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signno", signno); // 서명번호
  413. ds_send_savedata_signlist.setColumn(SIGN_ROW, "cretno" , cretno); // 생성번호
  414. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recdd", ds_main_cond.getColumn(0, "actvdd")); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  415. ds_send_savedata_signlist.setColumn(SIGN_ROW, "rectm", utlf_getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  416. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  417. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  418. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  419. ds_send_savedata_signlist.setColumn(SIGN_ROW, "formcd", "1400015148"); // 각 기록지별 서식코드(1400015148 병동기록)
  420. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddeptcd", orddeptcd); // 진료부서코드
  421. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddrid" , orddrid); // 진료의사ID
  422. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  423. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  424. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  425. ds_send_savedata_signlist.setColumn(SIGN_ROW, "screenid", frmf_getScreenID());
  426. ds_send_savedata_signlist.setColumn(SIGN_ROW, "dispyn", "N"); //인증저장용 data(view용 인증데이터는 따로 생성함)
  427. } else {
  428. return ;
  429. }
  430. }
  431. }
  432. }
  433. //선택한 항목이 없을때
  434. if( !delFlag ){
  435. sysf_messageBox('삭제할 항목을', 'C002');
  436. return;
  437. }
  438. ds_send_savedata.setColumn(0, "pid", ds_main_cond.getColumn(0, "pid"));
  439. dsf_createDsRow("ds_tempuserInfo", [{col: "uiUserId", val:sysf_getUserId() }]);
  440. var oParam = {};
  441. oParam.id = "TXMNR14000";
  442. oParam.service = "carerecapp.NursingRecord";
  443. oParam.method = "reqInsActvRec";
  444. oParam.inds = "actvinfo=ds_send_savedata_actvinfo signlist=ds_send_savedata_signlist tempUserInfo=ds_tempuserInfo";
  445. oParam.outds = "ds_temp_actvinfo=actvinfo";
  446. oParam.async = false;
  447. oParam.callback = "cf_TXMNR14000";
  448. tranf_submit(oParam);
  449. if( arErrorCode.pop("TXMNR14000") > -1 ){
  450. ds_hidden_main_actvinfo_actvlist.copyData(ds_main_actvinfo_actvlist);
  451. fMakeViewData(); //통합기록view용 데이터생성
  452. }
  453. }
  454. function cf_TXMNR14000(sSvcId, nErrorCode, sErrorMsg) {
  455. arErrorCode.push(sSvcId, nErrorCode);
  456. }
  457. /////////////////데이터 저장/삭제 함수 종료////////////
  458. // 병동활동 추가
  459. function fAddActv(){
  460. if( ds_main_cond.getColumn(0, "indsch") == "1" ){
  461. if( utlf_isNull(ds_main_cond.getColumn(0, "pid")) ){
  462. sysf_messageBox('환자를 선택하여 주십시오', 'I');
  463. return;
  464. }
  465. }else{
  466. if( utlf_isNull(ds_main_cond.getColumn(0, "patientnm")) ){
  467. sysf_messageBox('환자를 선택하여 주십시오', 'I');
  468. return;
  469. }
  470. }
  471. var iRows = group5.grd_actvlist.rowcount;
  472. var iRow = group5.grd_actvlist.currentrow;
  473. ds_main_actvinfo_actvlist.addRow();
  474. var instcd = ds_main_paminfo_list.getColumn(0, "instcd");
  475. var pid = ds_main_paminfo_list.getColumn(0, "pid");
  476. var indd = ds_main_paminfo_list.getColumn(0, "indd");
  477. var cretno = ds_main_paminfo_list.getColumn(0, "cretno");
  478. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "stat", "i");
  479. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "instcd", instcd);
  480. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "pid", pid);
  481. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "indd", indd);
  482. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "cretno", cretno);
  483. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "actvdd", ds_main_cond.getColumn(0, "actvdd"));
  484. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "actvtm", utlf_getCurrentDateTime().substring(9,13));
  485. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "recdd", utlf_getCurrentDate());
  486. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "rectm", utlf_getCurrentDateTime().substring(9,13));
  487. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "recrnm", sysf_getUserName());
  488. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "recrid", sysf_getUserId());
  489. //expr로 처리
  490. // grd_actvlist.isReadOnly(grd_actvlist.row,grd_actvlist.colRef("actvdd")) = false;
  491. // grd_actvlist.isReadOnly(grd_actvlist.row,grd_actvlist.colRef("recdd")) = false;
  492. }
  493. // 통합기록조회용 인증데이터 생성
  494. function fMakeViewData(){
  495. var pid = ds_main_cond.getColumn(0, "pid");
  496. var indd = ds_main_paminfo_list.getColumn(0, "indd");
  497. var cretno = ds_main_paminfo_list.getColumn(0, "cretno");
  498. var orddeptcd = ds_main_paminfo_list.getColumn(0, "orddeptcd");
  499. var orddrid = ds_main_paminfo_list.getColumn(0, "medispclid");
  500. var ordtype = ds_main_paminfo_list.getColumn(0, "ordtype");
  501. var signno = '';
  502. //조회조건값 세팅
  503. ds_send.setColumn(0, "pid", pid); //등록번호
  504. ds_send.setColumn(0, "indd", indd);
  505. ds_send.setColumn(0, "cretno", cretno);
  506. ds_send.setColumn(0, "actvdd", ds_main_cond.getColumn(0, "actvdd")); //기준일자(발생일자)
  507. ds_send.setColumn(0, "actvtm", ds_main_cond.getColumn(0, "actvtm")); //기준시간(발생시간)
  508. //병동활동기록 조회
  509. ds_main_actvinfo_actvlist.clearData();
  510. var oParam = {};
  511. oParam.id = "TRMNR14002";
  512. oParam.service = "carerecapp.NursingRecord";
  513. oParam.method = "reqGetActvList";
  514. oParam.inds = "reqdata=ds_send";
  515. oParam.outds = "ds_viewinfo_viewactvgrup_actvlist=actvlist";
  516. oParam.async = false;
  517. oParam.callback = "cf_TRMNR14002";
  518. tranf_submit(oParam);
  519. if( arErrorCode.pop("TRMNR14002") > -1 ){
  520. var actvcnt = ds_viewinfo_viewactvgrup_actvlist.rowcount;
  521. // 인증 로직 호출
  522. ViewFunc = "view";
  523. if( Sign.signprocess() == true ){
  524. ds_send_savedata.setColumn(0, "pid", pid); // 등록번호
  525. ds_send_savedata.setColumn(0, "certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  526. ds_send_savedata.setColumn(0, "orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  527. ds_send_savedata.setColumn(0, "signno", signno); // 서명번호
  528. ds_send_savedata.setColumn(0, "cretno" , cretno); // 생성번호
  529. ds_send_savedata.setColumn(0, "recdd", ds_main_cond.getColumn(0, "actvdd")); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  530. ds_send_savedata.setColumn(0, "rectm", utlf_getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  531. ds_send_savedata.setColumn(0, "recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  532. ds_send_savedata.setColumn(0, "signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  533. ds_send_savedata.setColumn(0, "signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  534. ds_send_savedata.setColumn(0, "formcd", "1400015148"); // 각 기록지별 서식코드(1400015148 병동활동기록)
  535. ds_send_savedata.setColumn(0, "orddeptcd", orddeptcd); // 진료부서코드
  536. ds_send_savedata.setColumn(0, "orddrid" , orddrid); // 진료의사ID
  537. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  538. ds_send_savedata.setColumn(0, "signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  539. ds_send_savedata.setColumn(0, "signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  540. ds_send_savedata.setColumn(0, "screenid" , frmf_getScreenID());
  541. ds_send_savedata.setColumn(0, "dispyn", "Y"); //인증저장용 data(view용 인증데이터는 따로 생성함)
  542. ds_send_savedata.setColumn(0, "actvcnt", actvcnt); //조회된 활동기록리스트 있는지 여부
  543. } else {
  544. return ;
  545. }
  546. dsf_createDsRow("ds_tempuserInfo", [{col: "uiUserId", val:sysf_getUserId() }]);
  547. var oParam = {};
  548. oParam.id = "TXMNR14001";
  549. oParam.service = "carerecapp.NursingRecord";
  550. oParam.method = "reqExeSaveViewDataActv";
  551. oParam.inds = "signinfo=ds_send_savedata tempUserInfo=ds_tempuserInfo";
  552. oParam.outds = "";
  553. oParam.async = false;
  554. oParam.callback = "cf_TXMNR14001";
  555. tranf_submit(oParam);
  556. if( arErrorCode.pop("TXMNR14001") > -1 ){
  557. finit("Search");
  558. }
  559. }
  560. }
  561. function cf_TRMNR14002(sSvcId, nErrorCode, sErrorMsg) {
  562. arErrorCode.push(sSvcId, nErrorCode);
  563. }
  564. function cf_TXMNR14001(sSvcId, nErrorCode, sErrorMsg) {
  565. arErrorCode.push(sSvcId, nErrorCode);
  566. }
  567. // 재원/퇴원 구분
  568. function fSetInDsch(Pram){
  569. if( Pram == "D" || Pram == "T" ){
  570. ds_main_cond.setColumn(0, "indsch", "2");
  571. ds_main_cond.setColumn(0, "actvdd", ds_main_paminfo_list.getColumn(0, "indd"));
  572. }else{
  573. ds_main_cond.setColumn(0, "indsch", "1");
  574. }
  575. fSetInDschHidden();
  576. }
  577. // 재원/퇴원 구분
  578. function fSetInDschHidden(){
  579. var indsch = ds_main_cond.getColumn(0, "indsch");
  580. if( indsch == "1" ){
  581. group5.grp_sea.ctn_pid.visible = false;
  582. group5.grp_sea.cmb_patientnm.visible = false;
  583. group5.grp_sea.ipt_pid.visible = false;
  584. group5.grp_sea.ctn_ward.visible = true;
  585. group5.grp_sea.cmb_ward.visible = true;
  586. group5.grp_sea.cap_settingrn.visible = true;
  587. group5.grp_sea.cmb_settingrn.visible = true;
  588. group5.grp_sea.line1.visible = true;
  589. group5.grp_sea.button1.visible = true;
  590. fnZoneDisp();
  591. }else if( indsch == "2" ){
  592. group5.grp_sea.ctn_pid.visible = true;
  593. group5.grp_sea.cmb_patientnm.visible = true;
  594. group5.grp_sea.ipt_pid.visible = true;
  595. group5.grp_sea.ctn_ward.visible = false;
  596. group5.grp_sea.cmb_ward.visible = false;
  597. group5.grp_sea.cap_settingrn.visible = false;
  598. group5.grp_sea.cmb_settingrn.visible = false;
  599. group5.cap_Zone.visible = false;
  600. group5.cmb_Zone.visible = false;
  601. group5.grp_sea.line1.visible = false;
  602. group5.grp_sea.button1.visible = false;
  603. }
  604. }
  605. function fGetPidWardInfo(pid){
  606. if( !utlf_isNull(pid) ){
  607. ds_main_patinfo_patinfolist.clearData();
  608. ds_send.setColumn(0, "pid", pid);
  609. var oParam = {};
  610. oParam.id = "TRMNW04707";
  611. oParam.service = "wardcareapp.WardCareRec";
  612. oParam.method = "reqGetPatWardInfo";
  613. oParam.inds = "req=ds_send";
  614. oParam.outds = "ds_main_patinfo_patinfolist=patinfolist";
  615. oParam.async = false;
  616. oParam.callback = "cf_TRMNW04707";
  617. tranf_submit(oParam);
  618. if( arErrorCode.pop("TRMNW04707") < 0 ){
  619. sysf_messageBox('환자정보 조회를', 'E009');
  620. return;
  621. }else{
  622. ds_main_cond.setColumn(0, "patientnm", ds_main_patinfo_patinfolist.getColumn(0, "pid"));
  623. ds_main_cond.setColumn(0, "pid", ds_main_patinfo_patinfolist.getColumn(0, "pid"));
  624. }
  625. }
  626. }
  627. function cf_TRMNW04707(sSvcId, nErrorCode, sErrorMsg) {
  628. arErrorCode.push(sSvcId, nErrorCode);
  629. }
  630. ]]></Script>