SMMNR14000.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632
  1. /*
  2. (SMMNR14000.xrw - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. - Desc : 병동활동기록에서 사용하는 스크립트
  6. */
  7. var xWardPatInfoPath = "/root/main/wardpatinfo/wardpatlist"; // 환자리스트 xPath
  8. var xBedsoreGridPath = "/root/main/actvinfo/actvlist" // 병동활동기록 리스트 xPath
  9. var xClsListBKPath = "/root/hidden/main/actvinfo/actvlist"; // 그리드 hidden xPath
  10. var xPamInfoPath = '/root/main/paminfo'
  11. var xGrupcdmax = "";
  12. /////////////////조회관련 함수 시작////////////////////
  13. //통합기록조회
  14. var ViewFunc = "sign"; //sign : 기록인증용, view : view인증용
  15. //화면을 초기화한다. 화면로딩이 끝난 시점에 호출된다.
  16. function finit(pFlag){
  17. var instcd = getUserInfo("dutplceinstcd");
  18. var standard_yn = "orduseyn";
  19. var ord_deptflag = 'W';
  20. var rslt_ref = "/root/init/dept";
  21. var sort_field = "depthngnm";
  22. var sort_method = "asc";
  23. var dt = getCurrentDate();
  24. model.makeValue(rdo_indsch.attribute("ref"), "1" );
  25. model.removenode("/root/main/paminfo");
  26. model.removenode("/root/init/codeinfo");
  27. var paminfo = getGlobalVariable("paminfo");
  28. var pid = "";
  29. var wardcd = "";
  30. var indschacptstat = "";
  31. if(paminfo.length > 0) {
  32. model.makeNode("/root/main/paminfo");
  33. setCSVToNode("/root/main/paminfo", paminfo); //환자정보내리기
  34. pid = model.getValue("/root/main/paminfo/list/pid");
  35. wardcd = model.getValue("/root/main/paminfo/list/wardcd");
  36. indschacptstat = model.getValue("/root/main/paminfo/list/indschacptstat");
  37. }
  38. fGetNursHardCdInfo("'002','R01'", dt); // '002' 응급의료센터 여부 조회
  39. zbcfGetDeptCodeList(instcd, standard_yn, ord_deptflag, rslt_ref, sort_field, sort_method, dt);
  40. model.setValue(cmb_ward.attribute("ref"), getUserInfo("dutplcecd"));
  41. if(pFlag != "Search"){
  42. model.setValue("/root/main/cond/actvdd", dt);
  43. }
  44. if(wardcd != ""){
  45. model.setValue("/root/main/cond/wardcd", wardcd);
  46. }else{
  47. model.setValue("/root/main/cond/wardcd", getUserInfo("dutplcecd"));
  48. }
  49. fGetZoneList(); //CareCom.js 응급실구역정보조회
  50. fnZoneDisp();
  51. fSettingnurid();
  52. fSetInDsch(indschacptstat);
  53. if(indschacptstat == "A" || model.getValue("/root/main/cond/indsch") == "1"){
  54. fGetWardPatList();
  55. }else{
  56. fGetPidWardInfo(pid);
  57. }
  58. if(pid != "") {
  59. if(model.getValue("/root/main/paminfo/list/ioflag") != "E" && model.getValue("/root/main/paminfo/list/careinrmdd") == "-"){
  60. messageBox("아직 입실확인하지 않은 환자입니다.", "I");
  61. //return;
  62. }
  63. grd_wardpatlist.row = grd_wardpatlist.findRow(pid, 1, grd_wardpatlist.colRef("pid"));
  64. grd_wardpatlist.topRow = grd_wardpatlist.findRow(pid, 1, grd_wardpatlist.colRef("pid"))-1;
  65. //선택환자정보조회
  66. fSearch();
  67. }
  68. }
  69. // 내환자 셋팅정보 조회
  70. function fSettingnurid(){
  71. model.makeValue("/root/send/reqdata/wardcd", model.getValue("/root/main/cond/wardcd") );
  72. if(submit("TRMNW10910") == true){
  73. //settingnurid = model.getValue("/root/init/settinginfo/settingrn[settingrnid='" + getUserInfo("userid") +"']/settingrnid");
  74. model.setValue(cmb_settingrn.attribute("ref"), "");
  75. }
  76. cmb_settingrn.refresh();
  77. }
  78. // 응급실 구역 보여주기
  79. function fnZoneDisp() {
  80. //응급의료센터(2280200000)인 경우
  81. //내환자정보대신에 구역정보가 보임)
  82. if ( !isNull(model.getValue("/root/init/codeinfo/codelist[cdgrupid ='002' and cdid ='"+cmb_ward.value+"']/cdid")) ) {
  83. cap_Zone.visible = true;
  84. cmb_Zone.visible = true;
  85. cap_settingrn.attribute("left") = 330;
  86. cap_settingrn.attribute("top") = 10;
  87. cmb_settingrn.attribute("left") = 410;
  88. cmb_settingrn.attribute("top") = 10;
  89. caption17.attribute("left") = 495;
  90. caption17.attribute("top") = 10;
  91. ipt_actvdd.attribute("left") = 615;
  92. ipt_actvdd.attribute("top") = 10;
  93. var zonecd = model.getValue("/root/main/paminfo/list/sectioncd");
  94. if( !isNull(zonecd) && zonecd != "-" ){
  95. cmb_Zone.value = model.getValue("/root/main/paminfo/list/sectioncd");
  96. } else {
  97. cmb_Zone.value = "-";
  98. }
  99. } else {
  100. cap_Zone.visible = false;
  101. cmb_Zone.visible = false;
  102. cmb_Zone.value = "-";
  103. cap_settingrn.attribute("left") = 190;
  104. cap_settingrn.attribute("top") = 10;
  105. cmb_settingrn.attribute("left") = 270;
  106. cmb_settingrn.attribute("top") = 10;
  107. caption17.attribute("left") = 355;
  108. caption17.attribute("top") = 10;
  109. ipt_actvdd.attribute("left") = 475;
  110. ipt_actvdd.attribute("top") = 10;
  111. }
  112. }
  113. // 환자 리스트 조회
  114. function fGetWardPatList(){
  115. model.setValue('/root/main/cond/pid','');
  116. model.removenode('/root/main/actvinfo');
  117. model.copyNode("/root/send/reqdata", "/root/main/cond");
  118. if ( !isNull(model.getValue("/root/init/codeinfo/codelist[cdgrupid ='002' and cdid ='"+cmb_ward.value+"']/cdid"))) {
  119. model.makeValue("/root/send/reqdata/emcflag", "Y");
  120. }
  121. if(submit("TRMNR14000")== true){
  122. grd_wardpatlist.refresh();
  123. }
  124. grd_actvlist.refresh();
  125. }
  126. // 조회버튼 클릭시
  127. function fSearch(){
  128. model.removenode("/root/main/paminfo");
  129. var paminfo = getGlobalVariable("paminfo");
  130. if(paminfo.length > 0) {
  131. model.makeNode("/root/main/paminfo");
  132. setCSVToNode("/root/main/paminfo", paminfo); //환자정보내리기
  133. }
  134. // 활동기록 리스트 조회
  135. fSearchRecInfo();
  136. return true;
  137. }
  138. // 병동활동기록 리스트 조회
  139. function fSearchRecInfo() {
  140. model.removeNodeset('/root/main/actvinfo');
  141. model.setValue("/root/main/cond/pid", model.getValue("/root/main/paminfo/list/pid"));
  142. model.makeValue("/root/send/reqdata/pid", model.getValue("/root/main/paminfo/list/pid"));
  143. model.makeValue("/root/send/reqdata/indd", model.getValue("/root/main/paminfo/list/indd"));
  144. model.makeValue("/root/send/reqdata/cretno", model.getValue("/root/main/paminfo/list/cretno"));
  145. model.makeValue("/root/send/reqdata/actvdd", model.getValue("/root/main/cond/actvdd"));
  146. submit('TRMNR14001');
  147. }
  148. /////////////////데이터 저장/삭제 함수 시작////////////
  149. // 병동활동기록을 저장하기전에 유효성을 체크한다.
  150. function fIsValid(){
  151. //그리드 저장데이터 존재여부 체크(default rows = 2)
  152. if(grd_actvlist.rows < 2){
  153. messageBox("저장할 내역이","I004");
  154. return false;
  155. }
  156. var sflag = '';
  157. var cnts = 0;
  158. for(i = grd_actvlist.fixedRows; i < grd_actvlist.rows; i++) {
  159. if(grd_actvlist.rowStatus(i) != "0") {
  160. cnts ++;
  161. }
  162. }
  163. if ( cnts < 1 ) {
  164. messageBox("신규등록/수정사항이","I004");
  165. return false;
  166. }
  167. for(var i = 1 ; i < grd_actvlist.rows; i++ ){
  168. //병동활동 입력여부 체크
  169. if( model.getValue(xBedsoreGridPath + "[" + i + "]/actvcd") == ""
  170. || model.getValue(xBedsoreGridPath + "[" + i + "]/actvcd").length <= 0 ) {
  171. messageBox("병동활동은","I003");
  172. return false;
  173. }
  174. //병동활동시간 입력여부 체크
  175. if( model.getValue(xBedsoreGridPath + "[" + i + "]/actvtm") == ""
  176. || model.getValue(xBedsoreGridPath + "[" + i + "]/actvtm").length <= 0 ) {
  177. messageBox("병동활동시간은","I003");
  178. return false;
  179. }else if(model.getValue(xBedsoreGridPath + "[" + i + "]/actvtm").length != 4){
  180. messageBox("활동시간을 정확히 입력하세요.(네자리)", "I");
  181. return;
  182. }
  183. //병동활동 기록시간 입력여부 체크
  184. if( model.getValue(xBedsoreGridPath + "[" + i + "]/rectm") == ""
  185. || model.getValue(xBedsoreGridPath + "[" + i + "]/rectm").length <= 0 ) {
  186. messageBox("병동활동 기록시간은","I003");
  187. return false;
  188. }else if(model.getValue(xBedsoreGridPath + "[" + i + "]/rectm").length != 4){
  189. messageBox("병동활동 기록시간을 정확히 입력하세요.(네자리)", "I");
  190. return;
  191. }
  192. }
  193. return true;
  194. }
  195. var SIGN_ROW = 0;//for돌때 해당 그리드만 인증데이터로 만들어주기 위해 global variable로 선언
  196. //인증저장
  197. function fSignSave(){
  198. if(fIsValid()){
  199. var pid = model.getValue("/root/main/cond/pid");
  200. var indd = model.getValue("/root/main/paminfo/list/indd");
  201. var cretno = model.getValue("/root/main/paminfo/list/cretno");
  202. var orddeptcd = model.getValue("/root/main/paminfo/list/orddeptcd");
  203. var orddrid = model.getValue("/root/main/paminfo/list/medispclid");
  204. var ordtype = model.getValue("/root/main/paminfo/list/ordtype");
  205. var signno = '';
  206. // 저장 데이터 세팅
  207. model.removenode("/root/send/savedata");
  208. model.makeValue("/root/send/savedata/actvinfo", grd_actvlist.getupdatedataAll('i'));
  209. model.refresh();
  210. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  211. //for를 돌면서 각 병동활동기록정보의 노드를 복사 한다.
  212. for(var i = 1; i < grd_actvlist.rows; i++){
  213. SIGN_ROW = i;
  214. signno = model.getValue(xBedsoreGridPath + '[' + i + ']/signno');
  215. // 인증 로직 호출
  216. ViewFunc = "sign";
  217. if(Sign.signprocess() == true){
  218. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/pid", pid); // 등록번호
  219. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  220. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  221. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signno", signno); // 서명번호
  222. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/cretno" , cretno); // 생성번호
  223. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/recdd", model.getValue("/root/main/cond/actvdd")); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  224. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/rectm", getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  225. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  226. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  227. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  228. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/formcd", "1400015148"); // 각 기록지별 서식코드(1400015148 병동활동기록)
  229. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddeptcd", orddeptcd); // 진료부서코드
  230. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddrid" , orddrid); // 진료의사ID
  231. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  232. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  233. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/screenid" , getScreenID());
  234. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/dispyn", "N"); // 인증저장용 data(view용 인증데이터는 따로 생성함)
  235. } else {
  236. return ;
  237. }
  238. }
  239. if(submit("TXMNR14000")){
  240. model.copyNode("/root/hidden/main/actvinfo", "/root/main/actvinfo");
  241. fMakeViewData(); //통합기록view용 데이터생성
  242. }
  243. }
  244. }
  245. // 인증데이터 만들기.
  246. function fMake_SignData(){
  247. if (ViewFunc == "sign"){
  248. Sign.addnode("/root/main/cond");
  249. Sign.addnode("/root/main/actvinfo/actvlist[" + SIGN_ROW + "]");
  250. }else if (ViewFunc == "view"){
  251. Sign.addnode("/root/main/cond");
  252. Sign.addnode("/root/viewinfo/viewactvgrup");;
  253. }
  254. }
  255. // 병동활동기록 삭제
  256. function fDel(){
  257. //삭제할 항목이 선택되었는지 여부를 체크
  258. var delFlag = false; //체크박스 체크여부
  259. var sel = ''; //체크박스(true/false)
  260. var stat = ''; //그리드상태(i/u/d)
  261. /*
  262. var retMsg = messageBox('선택하신 병동활동기록을', 'Q001');
  263. if(retMsg != "6") {
  264. return "false";
  265. }
  266. */
  267. var pid = model.getValue("/root/main/cond/pid");
  268. var indd = model.getValue("/root/main/paminfo/list/indd");
  269. var cretno = model.getValue("/root/main/paminfo/list/cretno");
  270. var orddeptcd = model.getValue("/root/main/paminfo/list/orddeptcd");
  271. var orddrid = model.getValue("/root/main/paminfo/list/medispclid");
  272. var ordtype = model.getValue("/root/main/paminfo/list/ordtype");
  273. var signno = '';
  274. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  275. for(var i = 1; i < grd_actvlist.rows; i++){
  276. sel = model.getValue(xBedsoreGridPath + "[" + i + "]/sel");
  277. stat = model.getValue(xBedsoreGridPath + "[" + i + "]/stat");
  278. flag = model.getValue(xBedsoreGridPath + "[" + i + "]/flag");
  279. SIGN_ROW = i ;
  280. if(sel == 'true'){
  281. delFlag = true;
  282. if(stat == 'i'){
  283. //체크한 항목이 행추가 (stat:i)상태인 경우 그리드에서 바로 삭제
  284. grd_actvlist.deleteRow(i);
  285. }else{
  286. //상태값을 'd'로 변경
  287. model.setValue(xBedsoreGridPath + "[" + i + "]/stat", 'd');
  288. grd_actvlist.addStatus(i, 'delete');
  289. signno = model.getValue(xBedsoreGridPath + '[' + i + ']/signno');
  290. // 인증 로직 호출
  291. ViewFunc = "sign";
  292. if(Sign.signprocess() == true){
  293. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/pid", pid); // 등록번호
  294. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  295. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  296. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signno", signno); // 서명번호
  297. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/cretno" , cretno); // 생성번호
  298. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/recdd", model.getValue("/root/main/cond/actvdd")); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  299. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/rectm", getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  300. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  301. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  302. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  303. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/formcd", "1400015148"); // 각 기록지별 서식코드(1400015148 병동기록)
  304. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddeptcd", orddeptcd); // 진료부서코드
  305. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddrid" , orddrid); // 진료의사ID
  306. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  307. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  308. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  309. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/screenid", getScreenID());
  310. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/dispyn", "N"); //인증저장용 data(view용 인증데이터는 따로 생성함)
  311. } else {
  312. return ;
  313. }
  314. }
  315. }
  316. }
  317. //선택한 항목이 없을때
  318. if(!delFlag){
  319. messageBox('삭제할 항목을', 'C002');
  320. return;
  321. }
  322. //삭제 서브미션 호출
  323. model.removenode("/root/send/savedata");
  324. model.makeValue("/root/send/savedata/actvinfo", grd_actvlist.getupdatedata('delete'));
  325. model.makeValue("/root/send/savedata/pid", model.getValue("/root/main/cond/pid"));
  326. if(submit("TXMNR14000")){
  327. model.copyNode("/root/hidden/main/actvinfo", "/root/main/actvinfo");
  328. fMakeViewData(); //통합기록view용 데이터생성
  329. }
  330. }
  331. /////////////////데이터 저장/삭제 함수 종료////////////
  332. // 병동활동 추가
  333. function fAddActv(){
  334. if(model.getValue("/root/main/cond/indsch") == "1"){
  335. if(model.getValue("/root/main/cond/pid") == ''){
  336. messageBox('환자를 선택하여 주십시오', 'I');
  337. return;
  338. }
  339. }else{
  340. if(model.getValue("/root/main/cond/patientnm") == ''){
  341. messageBox('환자를 선택하여 주십시오', 'I');
  342. return;
  343. }
  344. }
  345. var iRows = grd_actvlist.rows;
  346. var iRow = grd_actvlist.row;
  347. grd_actvlist.addRow();
  348. var instcd = model.getValue("/root/main/paminfo/list/instcd");
  349. var pid = model.getValue("/root/main/paminfo/list/pid");
  350. var indd = model.getValue("/root/main/paminfo/list/indd");
  351. var cretno = model.getValue("/root/main/paminfo/list/cretno");
  352. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/stat", "i");
  353. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/instcd", instcd);
  354. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/pid", pid);
  355. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/indd", indd);
  356. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/cretno", cretno);
  357. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/actvdd", model.getValue("/root/main/cond/actvdd"));
  358. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/actvtm", getCurrentDateTime().substring(9,13));
  359. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/recdd", getCurrentDate());
  360. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/rectm", getCurrentDateTime().substring(9,13));
  361. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/recrnm", getUserName());
  362. model.setValue(xBedsoreGridPath+"["+(grd_actvlist.row)+"]/recrid", getUserId());
  363. grd_actvlist.isReadOnly(grd_actvlist.row,grd_actvlist.colRef("actvdd")) = false;
  364. grd_actvlist.isReadOnly(grd_actvlist.row,grd_actvlist.colRef("recdd")) = false;
  365. model.refresh();
  366. }
  367. // 통합기록조회용 인증데이터 생성
  368. function fMakeViewData(){
  369. var pid = model.getValue("/root/main/cond/pid");
  370. var indd = model.getValue("/root/main/paminfo/list/indd");
  371. var cretno = model.getValue("/root/main/paminfo/list/cretno");
  372. var orddeptcd = model.getValue("/root/main/paminfo/list/orddeptcd");
  373. var orddrid = model.getValue("/root/main/paminfo/list/medispclid");
  374. var ordtype = model.getValue("/root/main/paminfo/list/ordtype");
  375. var signno = '';
  376. //조회조건값 세팅
  377. model.removenode("/root/send");
  378. model.makeValue("/root/send/pid", pid); //등록번호
  379. model.makeValue("/root/send/indd", indd);
  380. model.makeValue("/root/send/cretno", cretno);
  381. model.makeValue("/root/send/actvdd", model.getValue("/root/main/cond/actvdd")); //기준일자(발생일자)
  382. model.makeValue("/root/send/actvtm", model.getValue("/root/main/cond/actvtm")); //기준시간(발생시간)
  383. //병동활동기록 조회
  384. model.removenode('/root/main/actvinfo');
  385. if(submit('TRMNR14002')){
  386. var actvcnt = getNodesetCount("/root/viewinfo/viewactvgrup/actvlist");
  387. // 인증 로직 호출
  388. ViewFunc = "view";
  389. if (Sign.signprocess() == true){
  390. model.makeValue("/root/send/savedata/pid", pid); // 등록번호
  391. model.makeValue("/root/send/savedata/certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  392. model.makeValue("/root/send/savedata/orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  393. model.makeValue("/root/send/savedata/signno", signno); // 서명번호
  394. model.makeValue("/root/send/savedata/cretno" , cretno); // 생성번호
  395. model.makeValue("/root/send/savedata/recdd", model.getValue("/root/main/cond/actvdd")); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  396. model.makeValue("/root/send/savedata/rectm", getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  397. model.makeValue("/root/send/savedata/recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  398. model.makeValue("/root/send/savedata/signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  399. model.makeValue("/root/send/savedata/signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  400. model.makeValue("/root/send/savedata/formcd", "1400015148"); // 각 기록지별 서식코드(1400015148 병동활동기록)
  401. model.makeValue("/root/send/savedata/orddeptcd", orddeptcd); // 진료부서코드
  402. model.makeValue("/root/send/savedata/orddrid" , orddrid); // 진료의사ID
  403. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  404. model.makeValue("/root/send/savedata/signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  405. model.makeValue("/root/send/savedata/signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  406. model.makeValue("/root/send/savedata/screenid" , getScreenID());
  407. model.makeValue("/root/send/savedata/dispyn", "Y"); //인증저장용 data(view용 인증데이터는 따로 생성함)
  408. model.makeValue("/root/send/savedata/actvcnt", actvcnt); //조회된 활동기록리스트 있는지 여부
  409. } else {
  410. return ;
  411. }
  412. if(submit("TXMNR14001")){
  413. finit("Search");
  414. }
  415. }
  416. }
  417. // 재원/퇴원 구분
  418. function fSetInDsch(Pram){
  419. if(Pram == "D" || Pram == "T" ){
  420. model.makeValue(rdo_indsch.attribute("ref"), "2" );
  421. model.setValue("/root/main/cond/actvdd", model.getValue("/root/main/paminfo/list/indd"));
  422. }else{
  423. model.makeValue(rdo_indsch.attribute("ref"), "1" );
  424. }
  425. model.refresh();
  426. fSetInDschHidden();
  427. }
  428. // 재원/퇴원 구분
  429. function fSetInDschHidden(){
  430. var indsch = model.getValue("/root/main/cond/indsch");
  431. if(indsch == "1"){
  432. ctn_pid.visible = false;
  433. cmb_patientnm.visible = false;
  434. ipt_pid.visible = false;
  435. ctn_ward.visible = true;
  436. cmb_ward.visible = true;
  437. cap_settingrn.visible = true;
  438. cmb_settingrn.visible = true;
  439. line1.visible = true;
  440. button1.visible = true;
  441. fnZoneDisp();
  442. }else if(indsch == "2"){
  443. ctn_pid.visible = true;
  444. cmb_patientnm.visible = true;
  445. ipt_pid.visible = true;
  446. ctn_ward.visible = false;
  447. cmb_ward.visible = false;
  448. cap_settingrn.visible = false;
  449. cmb_settingrn.visible = false;
  450. cap_Zone.visible = false;
  451. cmb_Zone.visible = false;
  452. line1.visible = false;
  453. button1.visible = false;
  454. }
  455. }
  456. function fGetPidWardInfo(pid){
  457. if(pid != null && pid != ''){
  458. model.removenode('/root/send');
  459. model.removenode('/root/main/patinfo');
  460. model.makeValue('/root/send/pid', pid);
  461. if(!submit('TRMNW04707', "false")){
  462. messageBox('환자정보 조회를', 'E009');
  463. return;
  464. }else{
  465. model.setValue('/root/main/cond/patientnm',model.getValue('/root/main/patinfo/patinfolist/pid'));
  466. model.setValue('/root/main/cond/pid',model.getValue('/root/main/patinfo/patinfolist/pid'));
  467. cmb_patientnm.refresh();
  468. ipt_pid.refresh();
  469. }
  470. }
  471. }