SMMNW15200.js 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482
  1. /*
  2. (SMMNW15200.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/veininfo/veinlist" // 정맥염 리스트 xPath
  9. var xClsListBKPath = "/root/hidden/main/veininfo/veinlist"; // 그리드 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. var paminfo = getGlobalVariable("paminfo");
  27. var pid = "";
  28. var wardcd = "";
  29. var indschacptstat = "";
  30. if(paminfo.length > 0) {
  31. model.makeNode("/root/main/paminfo");
  32. setCSVToNode("/root/main/paminfo", paminfo); //환자정보내리기
  33. pid = model.getValue("/root/main/paminfo/list/pid");
  34. wardcd = model.getValue("/root/main/paminfo/list/wardcd");
  35. indschacptstat = model.getValue("/root/main/paminfo/list//indschacptstat");
  36. }
  37. submit("TRMNW11001"); //발생장소(원내) 부서 코드 조회
  38. fGetNursHardCdInfo("'002'", 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. model.setValue("/root/main/cond/genrdd", dt);
  42. if(wardcd != ""){
  43. model.setValue("/root/main/cond/wardcd", wardcd);
  44. }else{
  45. model.setValue("/root/main/cond/wardcd", getUserInfo("dutplcecd"));
  46. }
  47. model.makeNode("/root/send/reqdata");
  48. model.copyNode("/root/send/reqdata", "/root/main/cond");
  49. submit("TRMNW15206"); //단계콤보 조회
  50. if(pFlag != "saveflag"){
  51. fGetZoneList(); //CareCom.js 응급실구역정보조회
  52. fnZoneDisp();
  53. fSettingnurid();
  54. }
  55. fSetInDsch(indschacptstat);
  56. if(indschacptstat == "" || indschacptstat == "A"){
  57. fGetWardPatList();
  58. }else{
  59. fGetPidWardInfo(pid);
  60. }
  61. if (pid != "") {
  62. if(model.getValue("/root/main/paminfo/list/ioflag") != "E" && model.getValue("/root/main/paminfo/list/careinrmdd") == "-"){
  63. messageBox("아직 입실확인하지 않은 환자입니다.", "I");
  64. //return;
  65. }
  66. grd_wardpatlist.row = grd_wardpatlist.findRow(pid, 1, grd_wardpatlist.colRef("pid"));
  67. grd_wardpatlist.topRow = grd_wardpatlist.findRow(pid, 1, grd_wardpatlist.colRef("pid"))-1;
  68. //선택환자정보조회
  69. fSearch();
  70. }
  71. }
  72. // 내환자 셋팅정보 조회
  73. function fSettingnurid(){
  74. model.makeValue("/root/send/reqdata/wardcd", model.getValue("/root/main/cond/wardcd") );
  75. if(submit("TRMNW10910") == true){
  76. //settingnurid = model.getValue("/root/init/settinginfo/settingrn[settingrnid='" + getUserInfo("userid") +"']/settingrnid");
  77. model.setValue(cmb_settingrn.attribute("ref"), "");
  78. }
  79. cmb_settingrn.refresh();
  80. }
  81. // 응급실 구역 보여주기
  82. function fnZoneDisp() {
  83. //응급의료센터(2280200000)인 경우
  84. //내환자정보대신에 구역정보가 보임)
  85. if ( !isNull(model.getValue("/root/codeinfo/codeinfo/codelist[cdgrupid ='002' and cdid ='"+cmb_ward.value+"']/cdid")) ) {
  86. //cap_settingrn.visible = false;
  87. //cmb_settingrn.visible = false;
  88. cap_Zone.visible = true;
  89. cmb_Zone.visible = true;
  90. cap_settingrn.attribute("left") = 330;
  91. cap_settingrn.attribute("top") = 10;
  92. cmb_settingrn.attribute("left") = 410;
  93. cmb_settingrn.attribute("top") = 10;
  94. caption17.attribute("left") = 490;
  95. caption17.attribute("top") = 10;
  96. ipt_genrdd.attribute("left") = 585;
  97. ipt_genrdd.attribute("top") = 10;
  98. var zonecd = model.getValue("/root/main/paminfo/list/sectioncd");
  99. if( !isNull(zonecd) && zonecd != "-" ){
  100. cmb_Zone.value = model.getValue("/root/main/paminfo/list/sectioncd");
  101. } else {
  102. cmb_Zone.value = "-";
  103. }
  104. } else {
  105. //cap_settingrn.visible = true;
  106. //cmb_settingrn.visible = true;
  107. cap_Zone.visible = false;
  108. cmb_Zone.visible = false;
  109. cmb_Zone.value = "-";
  110. cap_settingrn.attribute("left") = 190;
  111. cap_settingrn.attribute("top") = 10;
  112. cmb_settingrn.attribute("left") = 270;
  113. cmb_settingrn.attribute("top") = 10;
  114. caption17.attribute("left") = 350;
  115. caption17.attribute("top") = 10;
  116. ipt_genrdd.attribute("left") = 445;
  117. ipt_genrdd.attribute("top") = 10;
  118. }
  119. }
  120. // 환자 리스트 조회
  121. function fGetWardPatList(){
  122. model.setValue('/root/main/cond/pid','');
  123. model.removenode('/root/main/veininfo');
  124. model.copyNode("/root/send/reqdata", "/root/main/cond");
  125. if(model.getValue("/root/main/cond/wardcd") == model.getValue("/root/codeinfo/codeinfo/codelist/cdid")){
  126. model.makeValue("/root/send/reqdata/emcflag", "Y");
  127. }
  128. if(submit("TRMNW15202")== true){
  129. for (var i=1;i<=getNodesetCount(xWardPatInfoPath);i++) {
  130. var pVeifCnte = model.getValue(xWardPatInfoPath + '[' + i + ']/veifcnt');
  131. if(pVeifCnte > 0 ){
  132. grd_wardpatlist.rowStyle(i,"data", "color") = "#0000ff";
  133. grd_wardpatlist.rowStyle(i,"data", "font-weight") = "bold";
  134. }else{
  135. grd_wardpatlist.rowStyle(i,"data", "color") = "#000000";
  136. grd_wardpatlist.rowStyle(i,"data", "font-weight") = "normal";
  137. }
  138. }
  139. grd_wardpatlist.refresh();
  140. }
  141. grd_veinlist.refresh();
  142. }
  143. // 조회버튼 클릭시
  144. function fSearch(){
  145. var condparam = "";
  146. if(model.getValue("/root/main/cond/indsch") == "1"){
  147. // 상단정보 올림
  148. condparam = model.getValue("/root/main/wardpatinfo/wardpatlist["+grd_wardpatlist.row+"]/ordtype")
  149. + "▦" + model.getValue("/root/main/wardpatinfo/wardpatlist["+grd_wardpatlist.row+"]/pid")
  150. + "▦" + model.getValue("/root/main/wardpatinfo/wardpatlist["+grd_wardpatlist.row+"]/indd")
  151. + "▦" + model.getValue("/root/main/wardpatinfo/wardpatlist["+grd_wardpatlist.row+"]/cretno")
  152. + "▦" + model.getValue("/root/main/wardpatinfo/wardpatlist["+grd_wardpatlist.row+"]/instcd")
  153. + "▦" + model.getValue("/root/cond/genrdd");
  154. setParameter("condparam", condparam);
  155. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  156. }
  157. model.removenode("/root/main/paminfo");
  158. var paminfo = getGlobalVariable("paminfo");
  159. if(paminfo.length > 0) {
  160. model.makeNode("/root/main/paminfo");
  161. setCSVToNode("/root/main/paminfo", paminfo); //환자정보내리기
  162. }
  163. // 정맥염관찰기록 리스트 조회
  164. fSearchRecInfo();
  165. return true;
  166. }
  167. // 정맥염관찰기록 리스트 조회
  168. function fSearchRecInfo() {
  169. model.removeNodeset('/root/main/veininfo');
  170. model.setValue("/root/main/cond/pid", model.getValue("/root/main/paminfo/list/pid"));
  171. model.makeValue("/root/send/reqdata/pid", model.getValue("/root/main/paminfo/list/pid"));
  172. model.makeValue("/root/send/reqdata/indd", model.getValue("/root/main/paminfo/list/indd"));
  173. model.makeValue("/root/send/reqdata/cretno", model.getValue("/root/main/paminfo/list/cretno"));
  174. model.makeValue("/root/send/reqdata/genrdd", model.getValue("/root/main/cond/genrdd"));
  175. model.makeValue("/root/send/reqdata/stdradio", model.getValue("/root/main/cond/stdradio"));
  176. if(submit('TRMNW15203')){
  177. model.copyNode("/root/hidden/main/veininfo", "/root/main/veininfo");
  178. var pGrd = grd_veinlist;
  179. var pGrdCnt = getNodesetCount("/root/main/veininfo/veinlist");
  180. if (pGrdCnt <= 0 ) return;
  181. var pGrupcd = "";
  182. var pGenrdd = "";
  183. var pGenrtm = "";
  184. var pGenrplce = "";
  185. var pCause = "";
  186. var pGrupcdnext = "";
  187. var pGenrddnext = "";
  188. var pGenrtmnext = "";
  189. var pGenrplcenext = "";
  190. var pCausenext = "";
  191. for (t = pGrd.fixedRows; t<pGrd.rows; t++) {
  192. xGrupcdmax = model.getValue("/root/main/veininfo/veinlist[" + t + "]/grupcdmax");
  193. pGrupcd = model.getValue("/root/main/veininfo/veinlist[" + t + "]/grupcd");
  194. pGenrdd = model.getValue("/root/main/veininfo/veinlist[" + t + "]/genrdd");
  195. pGenrtm = model.getValue("/root/main/veininfo/veinlist[" + t + "]/genrtm");
  196. pGenrplce = model.getValue("/root/main/veininfo/veinlist[" + t + "]/genrplce");
  197. pCause = model.getValue("/root/main/veininfo/veinlist[" + t + "]/cause");
  198. pGrupcdnext = model.getValue("/root/main/veininfo/veinlist[" + (t+1) + "]/grupcd");
  199. pGenrddnext = model.getValue("/root/main/veininfo/veinlist[" + (t+1) + "]/genrdd");
  200. pGenrtmnext = model.getValue("/root/main/veininfo/veinlist[" + (t+1) + "]/genrtm");
  201. pGenrplcenext = model.getValue("/root/main/veininfo/veinlist[" + (t+1) + "]/genrplce");
  202. pCausenext = model.getValue("/root/main/veininfo/veinlist[" + (t+1) + "]/cause");
  203. if ((pGrupcd == pGrupcdnext) && (pGenrdd == pGenrddnext) && (pGenrtm == pGenrtmnext) && (pGenrplce == pGenrplcenext) && (pCause == pCausenext)) {
  204. pGrd.rowStyle(t, "all", "border-bottom-color") = "#c0c0c0";
  205. pGrd.rowStyle(t, "all", "border-top-width") = "1";
  206. } else {
  207. if(t !=0){
  208. pGrd.rowStyle(t, "all", "border-bottom-color") = "#ff0000";
  209. pGrd.rowStyle(t, "all", "border-top-width") = "1";
  210. }
  211. }
  212. }
  213. pGrd.refresh();
  214. }
  215. }
  216. // 조회후 정맥염발생부위, 발생일자가 같으면 Merge한다.
  217. function fMergeGenrAreaDD(){
  218. grd_veinlist.mergeCol(grd_veinlist.colRef("veifpartnm")) = false;
  219. grd_veinlist.mergeCol(grd_veinlist.colRef("genrdd")) = true;
  220. grd_veinlist.mergeCol(grd_veinlist.colRef("genrtm")) = true;
  221. grd_veinlist.mergeCol(grd_veinlist.colRef("genrplce")) = true;
  222. grd_veinlist.mergeCol(grd_veinlist.colRef("genrplcewardcd")) = false;
  223. grd_veinlist.mergeCol(grd_veinlist.colRef("cause")) = true;
  224. grd_veinlist.mergeCol(grd_veinlist.colRef("flag")) = true;
  225. grd_veinlist.mergeCol(grd_veinlist.colRef("sel")) = false;
  226. grd_veinlist.mergeCol(grd_veinlist.colRef("recdd")) = false;
  227. grd_veinlist.mergeCol(grd_veinlist.colRef("rectm")) = false;
  228. grd_veinlist.mergeCol(grd_veinlist.colRef("stage")) = false;
  229. grd_veinlist.mergeCol(grd_veinlist.colRef("recrnm")) = false;
  230. grd_veinlist.mergeCol(grd_veinlist.colRef("recrid")) = false;
  231. grd_veinlist.mergeCol(grd_veinlist.colRef("genrplceid")) = false;
  232. grd_veinlist.mergeCol(grd_veinlist.colRef("causeid")) = false;
  233. grd_veinlist.mergeCol(grd_veinlist.colRef("pid")) = false;
  234. grd_veinlist.mergeCol(grd_veinlist.colRef("grupcd")) = false;
  235. grd_veinlist.mergeCol(grd_veinlist.colRef("instcd")) = false;
  236. grd_veinlist.mergeCol(grd_veinlist.colRef("stageid")) = false;
  237. grd_veinlist.mergeCol(grd_veinlist.colRef("veifrecseq")) = false;
  238. grd_veinlist.mergeCol(grd_veinlist.colRef("intervention")) = false;
  239. }
  240. /////////////////조회관련 함수 종료////////////////////
  241. /////////////////팝업오픈 관련 함수 시작///////////////
  242. // 정맥염발생부위 팝업호출
  243. function fPopupBedSoreImg(iRow){
  244. var iCol = grd_veinlist.col;
  245. var veifrecseq = model.getValue(xBedsoreGridPath+"["+ iRow +"]/veifrecseq");
  246. //팝업창에 부위 값이 있으면 기존값 셋팅
  247. //이미저장되어있으면 수정하지 못하도록 확인버튼을 막아주는 flag를 set한다.
  248. if(grd_veinlist.textmatrix(iRow,2) != ""){
  249. setParameter("partall", grd_veinlist.textmatrix(iRow,3));
  250. if(veifrecseq > 0){
  251. setParameter('editable', 'f');
  252. }
  253. }else{
  254. setParameter('editable', 't');
  255. }
  256. var flag = model.getValue(xBedsoreGridPath+'['+(iRow)+']/flag'); //구분
  257. var genrdd = model.getValue(xBedsoreGridPath+'['+(iRow)+']/genrdd'); //발생일자
  258. var stat = model.getValue(xBedsoreGridPath+'['+(iRow)+']/stat');
  259. //정맥염기준자료 (발생장소, 원인, 단계)저장되어 있던 그리드의 값을 팝업에 세팅
  260. fSetPopupData(iRow, "genrplce");// (발생장소)
  261. fSetPopupData(iRow, "cause"); // (원인)
  262. fSetPopupData(iRow, "stage"); // (단계)
  263. fSetPopupData(iRow, "intervention"); // (중재)
  264. setParameter("flag", flag);
  265. setParameter("genrdd", genrdd);
  266. setParameter("stat", stat);
  267. // 환자 기록부분 선택 팝업
  268. modal("SPMNW15400",1); //이미지호출
  269. //팝업에서 아무것도 선택하지 않고 close를 눌렀을때..
  270. if( getParameter("returnnull") == "close" ){
  271. return ;
  272. } else {
  273. //정맥염발생부위 값을 grid에 set
  274. var retStr = getParameter('retStr');
  275. model.setValue(xBedsoreGridPath + '[' + iRow + ']/veifpartnm', retStr);
  276. //그리드 상태값 변경
  277. var stat = model.getValue(xBedsoreGridPath+"["+grd_veinlist.row+"]/stat");
  278. if(stat != "i") {
  279. model.setValue(xBedsoreGridPath+"["+grd_veinlist.row+"]/stat","u");
  280. }
  281. //팝업에서 가져온 return parameter를 그리드에 세팅
  282. var retClosParam = getParameter("returnnull");
  283. fGetPopupData(iRow, "genrplce", retClosParam); //발생장소
  284. fGetPopupData(iRow, "cause", retClosParam); //원인
  285. fGetPopupData(iRow, "stage", retClosParam); //단계
  286. fGetPopupData(iRow, "intervention", retClosParam); //중재
  287. //parameters clear
  288. model.removenode(getParameterPath());
  289. var genrplceid = model.getValue(xBedsoreGridPath+'['+(iRow)+']/genrplceid');
  290. if(genrplceid == "1"){
  291. if(model.getValue(xBedsoreGridPath+'['+ iRow +']/genrplcewardcd')==""){
  292. model.setValue(xBedsoreGridPath+'['+ iRow +']/genrplcewardcd', getUserInfo("dutplcecd"));
  293. }
  294. }else{
  295. model.setValue(xBedsoreGridPath+'['+ iRow +']/genrplcewardcd',"");
  296. }
  297. /*
  298. else {
  299. //정맥염발생부위의 추가시 해당 부위에 대해
  300. //동일한 발생부위+발생일자+발생시간+원인의 '종료'가 없으면
  301. //그 부위를 추가할수 없도록 메세지 리턴
  302. if(grd_veinlist.rows > 3){
  303. var returnArr = fIsExistEndData(grd_veinlist.row, true);
  304. if(returnArr[3] != null && !returnArr[3]){
  305. messageBox('선택하신 발생부위는 이미 등록되어 있으며, 종료된 사정이 아니므로 재등록 하실 수 ', 'I004');
  306. model.setValue(xBedsoreGridPath + '[' + iRow + ']/veifpartnm', '');
  307. model.refresh();
  308. return ;
  309. }
  310. }
  311. }
  312. */
  313. }
  314. }
  315. // 정맥염기준자료 팝업 호출
  316. function fPopupBedSoreData(iRow){
  317. var curCol = grd_veinlist.col;
  318. var flag = model.getValue(xBedsoreGridPath+'['+(iRow)+']/flag'); //구분
  319. var genrdd = model.getValue(xBedsoreGridPath+'['+(iRow)+']/genrdd'); //발생일자
  320. var stat = model.getValue(xBedsoreGridPath+'['+(iRow)+']/stat');
  321. //정맥염기준자료 (발생장소, 원인, 단계)저장되어 있던 그리드의 값을 팝업에 세팅
  322. fSetPopupData(iRow, "genrplce");// (발생장소)
  323. fSetPopupData(iRow, "cause"); // (원인)
  324. fSetPopupData(iRow, "stage"); // (단계)
  325. fSetPopupData(iRow, "intervention"); // (중재)
  326. setParameter("flag", flag);
  327. setParameter("genrdd", genrdd);
  328. setParameter("stat", stat);
  329. modal("SPMNW15300",1); //기준자료호출
  330. //팝업에서 가져온 return parameter를 그리드에 세팅
  331. var retClosParam = getParameter("returnnull");
  332. fGetPopupData(iRow, "genrplce", retClosParam); //발생장소
  333. fGetPopupData(iRow, "cause", retClosParam); //원인
  334. fGetPopupData(iRow, "stage", retClosParam); //단계
  335. fGetPopupData(iRow, "intervention", retClosParam); //중재
  336. //parameters clear
  337. model.removenode(getParameterPath());
  338. var genrplceid = model.getValue(xBedsoreGridPath+'['+(iRow)+']/genrplceid');
  339. if(genrplceid == "1"){
  340. if(model.getValue(xBedsoreGridPath+'['+ iRow +']/genrplcewardcd')==""){
  341. model.setValue(xBedsoreGridPath+'['+ iRow +']/genrplcewardcd', getUserInfo("dutplcecd"));
  342. }
  343. }else{
  344. model.setValue(xBedsoreGridPath+'['+ iRow +']/genrplcewardcd',"");
  345. }
  346. }
  347. /////////////////팝업오픈 관련 함수 종료///////////////
  348. /////////////////팝업데이터 세팅 함수 시작/////////////
  349. // 정맥염기준자료저장되어 있던 그리드의 값을 팝업에 세팅
  350. function fSetPopupData(iRow, str) {
  351. var cd;
  352. var nm = '';
  353. cd = model.getValue(xBedsoreGridPath+'['+(iRow)+']/' + str + 'id');//기존저장되어있던 코드값
  354. nm = model.getValue(xBedsoreGridPath+'['+(iRow)+']/' + str);//기존저장되어있던 명칭값
  355. if(cd != '') {
  356. setParameter(str + "cdnm", "");
  357. setParameter(str + "cd", "");
  358. setParameter(str + "cdid", cd);
  359. //기타가 선택되어진 상태일때 freetext를 파라메터로 set한다.
  360. if(nm.indexOf('기타') > -1){
  361. var etcStr = nm.split(')')[0].split('(')[1];
  362. setParameter(str + 'EtcExist', true);
  363. setParameter(str + 'EtcStr', etcStr);
  364. }
  365. }
  366. }
  367. // 팝업의 선택결과를 그리드에 세팅
  368. function fGetPopupData(iRow, str, retClosParam) {
  369. var retCDParam = '';
  370. var retNMParam = '';
  371. var oldCDParam
  372. if(retClosParam != "close"){
  373. if(model.getValue(xBedsoreGridPath +"[" + (iRow) + "]/stat") != "i") {
  374. model.setValue(xBedsoreGridPath +"[" + (iRow) + "]/stat","u");
  375. }
  376. retNMParam = getParameter(str + "cdnm");
  377. retCDParam = getParameter(str +"cd");
  378. } else {
  379. return ;
  380. }
  381. model.setValue(xBedsoreGridPath+'['+iRow+']/' + str, retNMParam);
  382. model.setValue(xBedsoreGridPath+'['+iRow+']/' + str + 'id', retCDParam) ;
  383. clearParameter(str + "cdnm");
  384. clearParameter(str + "cd");
  385. clearParameter(str + "cdid");
  386. clearParameter(str + "Str");
  387. clearParameter(str + "etcExist");
  388. clearParameter(str + "etcStr");
  389. }
  390. /////////////////팝업데이터 세팅 함수 종료/////////////
  391. /////////////////데이터 저장/삭제 함수 시작////////////
  392. // 정맥염관찰기록 저장하기전에 유효성을 체크한다.
  393. function fIsValid(){
  394. //그리드 저장데이터 존재여부 체크(default rows = 2)
  395. if(grd_veinlist.rows < 2){
  396. messageBox("저장할 내역이","I004");
  397. return false;
  398. }
  399. var sflag = '';
  400. var cnts = 0;
  401. for(i = grd_veinlist.fixedRows; i < grd_veinlist.rows; i++) {
  402. if(grd_veinlist.rowStatus(i) != "0") {
  403. cnts ++;
  404. }
  405. }
  406. if ( cnts < 1 ) {
  407. messageBox("신규등록/수정사항이","I004");
  408. return false;
  409. }
  410. for(var i = 1 ; i < grd_veinlist.rows; i++ ){
  411. //정맥염발생부위 입력여부 체크
  412. if( model.getValue(xBedsoreGridPath + "[" + i + "]/veifpartnm") == ""
  413. || model.getValue(xBedsoreGridPath + "[" + i + "]/veifpartnm").length <= 0 ) {
  414. messageBox("정맥염발생부위는","I003");
  415. return false;
  416. }
  417. //정맥염발생장소 입력여부 체크
  418. if( model.getValue(xBedsoreGridPath + "[" + i + "]/genrplce") == ""
  419. || model.getValue(xBedsoreGridPath + "[" + i + "]/genrplce").length <= 0 ) {
  420. messageBox("정맥염발생장소는","I003");
  421. return false;
  422. //정맥염발생장소가 원내인경우 발생장소(원내) 입력여부 체크
  423. }else if(model.getValue(xBedsoreGridPath + "[" + i + "]/genrplceid") == "1" && model.getValue(xBedsoreGridPath + "[" + i + "]/genrplcewardcd") == "" ){
  424. messageBox("정맥염발생장소가 원내인 항목은 발생장소(원내)를 입력하십시오.","I");
  425. return false;
  426. }
  427. //정맥염발생원인 입력여부 체크
  428. if( model.getValue(xBedsoreGridPath + "[" + i + "]/cause") == ""
  429. || model.getValue(xBedsoreGridPath + "[" + i + "]/cause").length <= 0 ) {
  430. messageBox("정맥염발생원인은","I003");
  431. return false;
  432. }
  433. //정맥염발생단계 입력여부 체크
  434. if( model.getValue(xBedsoreGridPath + "[" + i + "]/stage") == ""
  435. || model.getValue(xBedsoreGridPath + "[" + i + "]/stage").length <= 0 ) {
  436. messageBox("정맥염발생단계는","I003");
  437. return false;
  438. }
  439. }
  440. return true;
  441. }
  442. var SIGN_ROW = 0;//for돌때 해당 그리드만 인증데이터로 만들어주기 위해 global variable로 선언
  443. //인증저장
  444. function fSignSave(){
  445. if(fIsValid()){
  446. var pid = model.getValue("/root/main/cond/pid");
  447. var indd = model.getValue("/root/main/paminfo/list/indd");
  448. var cretno = model.getValue("/root/main/paminfo/list/cretno");
  449. var orddeptcd = model.getValue("/root/main/paminfo/list/orddeptcd");
  450. var orddrid = model.getValue("/root/main/paminfo/list/medispclid");
  451. var ordtype = model.getValue("/root/main/paminfo/list/ordtype");
  452. var signno = '';
  453. // 저장 데이터 세팅
  454. model.removenode("/root/send/savedata");
  455. var iRows = grd_veinlist.rows;
  456. for(var i=1;i<iRows;i++) {
  457. if(model.getValue("/root/main/veininfo/veinlist["+i+"]/veifpartnm").substring(0,4) == "Ant."){
  458. model.setValue("/root/main/veininfo/veinlist["+i+"]/veifpartnm", "(anterior)"+model.getValue("/root/main/veininfo/veinlist["+i+"]/veifpartnm").substring(4))
  459. }
  460. }
  461. model.makeValue("/root/send/savedata/veininfo", grd_veinlist.getupdatedataAll('i'));
  462. model.refresh();
  463. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  464. //for를 돌면서 각 정맥염관찰기록정보의 노드를 복사 한다.
  465. for(var i = 1; i < grd_veinlist.rows; i++){
  466. SIGN_ROW = i;
  467. signno = model.getValue(xBedsoreGridPath + '[' + i + ']/signno');
  468. // 인증 로직 호출
  469. ViewFunc = "sign";
  470. if(Sign.signprocess() == true){
  471. //alert(Sign.signedInfos[1]);
  472. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/pid", pid); // 등록번호
  473. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  474. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  475. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signno", signno); // 서명번호
  476. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/cretno" , cretno); // 생성번호
  477. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/recdd", getCurrentDate()); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  478. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/rectm", getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  479. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  480. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  481. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  482. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/formcd", "1300014127"); // 각 기록지별 서식코드(1300014127 정맥염관찰기록)
  483. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddeptcd", orddeptcd); // 진료부서코드
  484. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddrid" , orddrid); // 진료의사ID
  485. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  486. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  487. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/screenid" , getScreenID());
  488. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/dispyn", "N"); // 인증저장용 data(view용 인증데이터는 따로 생성함)
  489. } else {
  490. return ;
  491. }
  492. }
  493. if(submit("TXMNW15200")){
  494. model.copyNode("/root/hidden/main/veininfo", "/root/main/veininfo");
  495. fMakeViewData(); //통합기록view용 데이터생성
  496. }
  497. }
  498. }
  499. // 인증데이터 만들기.
  500. function fMake_SignData(){
  501. if (ViewFunc == "sign"){
  502. // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
  503. Sign.addnode("/root/main/cond");
  504. Sign.addnode("/root/main/veininfo/veinlist[" + SIGN_ROW + "]");
  505. var xDeltGrupPath = Sign.XPATH_SIGNINFO + "/veinlist[" + SIGN_ROW + "]";
  506. var flag;
  507. var stage;
  508. //구분
  509. flag = model.getValue(xDeltGrupPath + "/flag");
  510. if(flag != "") {
  511. model.setValue(xDeltGrupPath + "/flag", grd_veinlist.labelMatrix(SIGN_ROW, grd_veinlist.colRef("flag")));
  512. }
  513. //단계
  514. stage = model.getValue(xDeltGrupPath + "/stage");
  515. if(stage != "") {
  516. model.setValue(xDeltGrupPath + "/stage", grd_veinlist.labelMatrix(SIGN_ROW, grd_veinlist.colRef("stage")));
  517. }
  518. //발생장소(원내)
  519. genrplcewardcd = model.getValue(xDeltGrupPath + "/genrplcewardcd");
  520. if(genrplcewardcd != "") {
  521. model.makeValue(xDeltGrupPath + "/genrplcewardnm", grd_veinlist.labelMatrix(SIGN_ROW, grd_veinlist.colRef("genrplcewardcd")));
  522. }
  523. }else if (ViewFunc == "view"){
  524. // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
  525. Sign.addnode("/root/main/cond");
  526. Sign.addnode("/root/viewinfo/viewveingrup");;
  527. var xViewDeltGrupPath = Sign.XPATH_SIGNINFO + "/viewveingrup";
  528. var flag;
  529. var stage;
  530. var bf_pid = "";
  531. var bf_grupcd = "";
  532. var bf_veifrecseq = "";
  533. var bf_instcd = "";
  534. var af_pid = "";
  535. var af_grupcd = "";
  536. var af_veifrecseq = "";
  537. var af_instcd = "";
  538. for(var i = 1 ; i <= getNodesetCount(xViewDeltGrupPath + "/veinlist"); i++) {
  539. af_pid = model.getValue(xViewDeltGrupPath + "/veinlist[" + i + "]/pid");
  540. af_grupcd = model.getValue(xViewDeltGrupPath + "/veinlist[" + i + "]/grupcd");
  541. af_veifrecseq = model.getValue(xViewDeltGrupPath + "/veinlist[" + i + "]/veifrecseq");
  542. af_instcd = model.getValue(xViewDeltGrupPath + "/veinlist[" + i + "]/instcd");
  543. //구분
  544. flag = model.getValue(xViewDeltGrupPath + "/veinlist[" + i + "]/flag");
  545. if(flag != "") {
  546. if(flag == "00"){
  547. model.setValue(xViewDeltGrupPath + "/veinlist[" + i + "]/flag", "등록");
  548. }else if(flag == "01"){
  549. model.setValue(xViewDeltGrupPath + "/veinlist[" + i + "]/flag", "사정");
  550. }else if(flag == "99"){
  551. model.setValue(xViewDeltGrupPath + "/veinlist[" + i + "]/flag", "종료");
  552. }
  553. }
  554. //단계
  555. stage = model.getValue(xViewDeltGrupPath + "/veinlist[" + i + "]/stage");
  556. bf_pid = af_pid;
  557. bf_grupcd = af_grupcd;
  558. bf_veifrecseq= af_veifrecseq;
  559. bf_instcd = af_instcd;
  560. }
  561. }
  562. }
  563. // 정맥염관찰기록 삭제
  564. function fDel(){
  565. //삭제할 항목이 선택되었는지 여부를 체크
  566. var delFlag = false; //체크박스 체크여부
  567. var sel = ''; //체크박스(true/false)
  568. var stat = ''; //그리드상태(i/u/d)
  569. var flag = ''; //등록구분 (등록/사정/종료)
  570. var returnArr, isEnd, isAss, isStage;
  571. var checkStr; //체크값 (발생부위 + 발생일자 + 발생시간 + 원인)
  572. var isSvrDel = false; //db에 저장된 데이터 삭제시
  573. var retMsg = messageBox('선택하신 정맥염관찰기록을', 'Q001');
  574. if(retMsg != "6") {
  575. return "false";
  576. }
  577. var pid = model.getValue("/root/main/cond/pid");
  578. var indd = model.getValue("/root/main/paminfo/list/indd");
  579. var cretno = model.getValue("/root/main/paminfo/list/cretno");
  580. var orddeptcd = model.getValue("/root/main/paminfo/list/orddeptcd");
  581. var orddrid = model.getValue("/root/main/paminfo/list/medispclid");
  582. var ordtype = model.getValue("/root/main/paminfo/list/ordtype");
  583. var signno = '';
  584. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  585. for(var i = 1; i < grd_veinlist.rows; i++){
  586. sel = model.getValue(xBedsoreGridPath + "[" + i + "]/sel");
  587. stat = model.getValue(xBedsoreGridPath + "[" + i + "]/stat");
  588. flag = model.getValue(xBedsoreGridPath + "[" + i + "]/flag");
  589. SIGN_ROW = i ;
  590. if(sel == 'true'){
  591. delFlag = true;
  592. if(stat == 'i'){
  593. //체크한 항목이 행추가 (stat:i)상태인 경우 그리드에서 바로 삭제
  594. grd_veinlist.deleteRow(i);
  595. }else{
  596. isSvrDel = true;
  597. //종료가 존재하는지 여부를 배열로 리턴
  598. returnArr = fIsExistEndData(i);
  599. isAss = returnArr[2];
  600. isEnd = returnArr[3];
  601. checkStr = i + '¿' + returnArr[6] + returnArr[7] + returnArr[8] + returnArr[9];
  602. if(isEnd){
  603. //체크한 항목의 해당 부위에 종료가 있으면 삭제할수 없다는 메세지 출력후 리턴
  604. var veifpartnm = returnArr[6];
  605. var gendt = returnArr[7].substring(0, 4) + '-' + returnArr[7].substring(4, 6) + '-'
  606. + returnArr[7].substring(6) + ' ' + returnArr[8].substring(0, 2) + ':' + returnArr[8].substring(2);
  607. messageBox('선택하신 발생부위 "' + veifpartnm + '"발생일시"' + gendt + '" 는 이미 종료기록이 있으므로 삭제하실 수', 'I004');
  608. //update상태로 변경된 row를 원상태로 변경
  609. grd_veinlist.removeStatus(i, 'update');
  610. model.setValue(xBedsoreGridPath + "[" + i + "]/sel", 'false');
  611. model.setValue(xBedsoreGridPath + "[" + i + "]/stat", '-');
  612. model.refresh();
  613. return;
  614. }
  615. //등록 삭제시 해당부위에 사정기록있으면 등록~사정 모두삭제한다는 메세지 출력
  616. else if(flag == '00' && isAss){
  617. //선택한 체크박스가 등록상태이고, 해당 발생부위에 사정기록이 존재할때
  618. //사정기록까지 삭제하겠냐는 메세지 호출해 확인 누르면 해당 그룹 모두 체크 취소누르면 선택 해제
  619. if(messageBox('선택하신 정맥염부위 "'+returnArr[6]+'"를 삭제하시면 사정기록도 함께 삭제됩니다.', 'Q001') == 6){
  620. fCheckSamePart(checkStr);
  621. }else{
  622. return "false";
  623. }
  624. }
  625. else{
  626. //상태값을 'd'로 변경
  627. model.setValue(xBedsoreGridPath + "[" + i + "]/stat", 'd');
  628. grd_veinlist.addStatus(i, 'delete');
  629. signno = model.getValue(xBedsoreGridPath + '[' + i + ']/signno');
  630. // 인증 로직 호출
  631. ViewFunc = "sign";
  632. if(Sign.signprocess() == true){
  633. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/pid", pid); // 등록번호
  634. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  635. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  636. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signno", signno); // 서명번호
  637. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/cretno" , cretno); // 생성번호
  638. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/recdd", getCurrentDate()); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  639. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/rectm", getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  640. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  641. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  642. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  643. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/formcd", "1300014127"); // 각 기록지별 서식코드(1300014127 정맥염관찰기록)
  644. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddeptcd", orddeptcd); // 진료부서코드
  645. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/orddrid" , orddrid); // 진료의사ID
  646. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  647. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  648. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  649. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/screenid", getScreenID());
  650. model.makeValue("/root/send/savedata/signlist[" +SIGN_ROW+ "]/dispyn", "N"); //인증저장용 data(view용 인증데이터는 따로 생성함)
  651. } else {
  652. return ;
  653. }
  654. }
  655. }
  656. }
  657. }
  658. //선택한 항목이 없을때
  659. if(!delFlag){
  660. messageBox('삭제할 항목을', 'C002');
  661. return;
  662. }
  663. //삭제 서브미션 호출
  664. model.removenode("/root/send/savedata");
  665. model.makeValue("/root/send/savedata/veininfo", grd_veinlist.getupdatedata('delete'));
  666. model.makeValue("/root/send/savedata/pid", model.getValue("/root/main/cond/pid"));
  667. if(submit("TXMNW15200")){
  668. model.copyNode("/root/hidden/main/veininfo", "/root/main/veininfo");
  669. fMakeViewData(); //통합기록view용 데이터생성
  670. }
  671. }
  672. /////////////////데이터 저장/삭제 함수 종료////////////
  673. //선택한 발생부위에 해당되는 모든 그룹을 체크(true)로 변경
  674. function fCheckSamePart(checkStr){
  675. var _chkArr = checkStr.split('¿');
  676. var sRow = _chkArr[0];
  677. var chkStr = _chkArr[1];
  678. var _chkStr = '';
  679. for(var i = sRow; i < grd_veinlist.rows; i++){
  680. _chkStr = model.getValue(xBedsoreGridPath+ '[' + i + ']/veifpartnm');
  681. _chkStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/genrdd');
  682. _chkStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/genrtm');
  683. _chkStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/cause');
  684. if(chkStr == _chkStr){
  685. model.setValue(xBedsoreGridPath + "[" + i + "]/stat", 'd');
  686. model.setValue(xBedsoreGridPath + "[" + i + "]/sel", 'true');
  687. grd_veinlist.addStatus(i, 'delete');
  688. }
  689. }
  690. model.refresh();
  691. }
  692. //체크 해제하면 update상태를 select상태로 변경한다.
  693. function fChangeStatus(selRow){
  694. var isChk = model.getValue(xBedsoreGridPath + "[" + (selRow) + "]/sel");
  695. if(isChk == 'false'){
  696. if(grd_veinlist.rowstatus(selRow+1) == "1" || grd_veinlist.rowstatus(selRow+1) == "3") {
  697. }else{
  698. model.setValue(xBedsoreGridPath + "[" + (selRow) + "]/stat", '-');
  699. grd_veinlist.removeStatus(selRow, 'update');
  700. }
  701. }
  702. }
  703. // 정맥염발생부위추가
  704. function fAddGenArea(){
  705. if(model.getValue("/root/main/cond/indsch") == "1"){
  706. if(model.getValue("/root/main/cond/pid") == ''){
  707. messageBox('환자를 선택하여 주십시오', 'I');
  708. return;
  709. }
  710. }else{
  711. if(model.getValue("/root/main/cond/patientnm") == ''){
  712. messageBox('환자를 선택하여 주십시오', 'I');
  713. return;
  714. }
  715. }
  716. var iRows = grd_veinlist.rows;
  717. var iRow = grd_veinlist.row;
  718. grd_veinlist.addRow();
  719. grd_veinlist.colDisabled(grd_veinlist.colRef("flag"))=true;
  720. if(iRows < 2){
  721. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/grupcd","00000001");
  722. } else if(iRows > 1){
  723. // grupcd만드는 부분
  724. var sRowCnt = grd_veinlist.rows-grd_veinlist.fixedrows;
  725. // grupcd 현재 화면의 최대값 가져오기 시작
  726. var retVal = "" ;
  727. for(var i=1; i<= sRowCnt; i++){
  728. if(xGrupcdmax) {
  729. saveyn = 1 ;
  730. }
  731. retVal = parseInt(xGrupcdmax);
  732. }
  733. retVal = retVal + 1 ;
  734. retVal = String(retVal) ;
  735. retVal = fLpad(retVal,8,0);// grupcd 8자리 나머지는 0 으로 매꿈
  736. xGrupcdmax = retVal;
  737. //grupcd 현재 화면의 최대값 가져오기 끝
  738. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/grupcd",retVal);
  739. }
  740. var instcd = model.getValue("/root/main/paminfo/list/instcd");
  741. var pid = model.getValue("/root/main/paminfo/list/pid");
  742. var indd = model.getValue("/root/main/paminfo/list/indd");
  743. var cretno = model.getValue("/root/main/paminfo/list/cretno");
  744. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/stat", "i");
  745. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/instcd", instcd);
  746. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/pid", pid);
  747. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/indd", indd);
  748. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/cretno", cretno);
  749. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/genrdd", getCurrentDate());
  750. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/genrtm", getCurrentDateTime().substring(9,13));
  751. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/flag", "00");
  752. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/recdd", getCurrentDate());
  753. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/rectm", getCurrentDateTime().substring(9,13));
  754. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/recrnm", getUserName());
  755. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/recrid", getUserId());
  756. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/genrplce", "원내");
  757. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/genrplceid", "1");
  758. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/genrplcewardcd", getUserInfo("dutplcecd"));
  759. grd_veinlist.isReadOnly(grd_veinlist.row,grd_veinlist.colRef("genrdd")) = false;
  760. grd_veinlist.isReadOnly(grd_veinlist.row,grd_veinlist.colRef("recdd")) = false;
  761. model.refresh();
  762. }
  763. // 왼쪽 자리수 채우기, Left 빈자리 만큼 padStr 을 붙인다.
  764. function fLpad(src, len, padStr){
  765. var retStr = "";
  766. var padCnt = Number(len) - String(src).length;
  767. for(var i=0;i<padCnt;i++)
  768. retStr += String(padStr);
  769. return retStr+src;
  770. }
  771. // 그리드내의 mousedown 이벤트 발생시 호출
  772. function fMouseDownGridRow(){
  773. var iVeinListRow = grd_veinlist.row;
  774. // right Button Click
  775. if(event.button == 3){
  776. //데이터 행이 존재할때
  777. if(grd_veinlist.rows > grd_veinlist.fixedrows && grd_veinlist.isCell(event.target) && grd_veinlist.mouseRow >= grd_veinlist.fixedrows){
  778. window.setPopupMenu(true, "/root/hidden/veingrup_sameinflevl_popmenu/menu", "name", "func", false);
  779. }else{
  780. window.setPopupMenu(false);
  781. }
  782. }
  783. }
  784. // 정맥염 관찰기록 내역 그리드의 xforms-value-changed이벤트 발생시 호출된다.
  785. function fChangedGridCol(){
  786. var sDetlGrupRow = (grd_veinlist.row);
  787. var sDetlGrupBKRow=0;
  788. var iRow = grd_veinlist.row;
  789. var iCol = grd_veinlist.col;
  790. var stat = model.getValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/stat");
  791. //데이터 변경시 그리드 상태값(stat)을 u상태로 변경한다.
  792. if(stat == "-"){
  793. //그리드의 stat update를 위한 비교할 hidden nodelist의 idx찾기
  794. var veifrecseq = model.getValue(xBedsoreGridPath+"["+sDetlGrupRow+"]/veifrecseq");
  795. for(var i=1; i<= getNodesetCount(xClsListBKPath); i++){
  796. if(model.getValue(xClsListBKPath+"["+i+"]/veifrecseq") == veifrecseq){
  797. sDetlGrupBKRow = i;
  798. break;
  799. }
  800. }
  801. //체크박스 선택 아닐때 조회해서 hidden에 담아둔 nodelist와 변경된 그리드의 nodelist의 stat를 비교하여 수정상태로 바꿔준다.
  802. if(iCol != grd_veinlist.colRef("sel")){// 선택시 stat 값 변경 않기
  803. var preUpdatedStr = instance1.selectSingleNode(xClsListBKPath+"["+sDetlGrupBKRow+"]").xml;
  804. var updatedStr = instance1.selectSingleNode(xBedsoreGridPath+"["+sDetlGrupRow+"]").xml;
  805. if(updatedStr != preUpdatedStr){
  806. model.setValue(xBedsoreGridPath+"["+(grd_veinlist.row)+"]/stat","u");
  807. }
  808. }
  809. }
  810. }
  811. // 정맥염 관찰기록 그리드에서 우측마우스 클릭시 팝업을 띄워준다.
  812. function fAddSameLevlItemEnd(){
  813. fAddSameLevlItem(true);
  814. return ;
  815. }
  816. // 마우스 우측 클릭시 발생구분에 따라 그리드 행 추가 (true이면 오른쪽 메뉴에서 종료를 선택한 상태, false이면 사정을 선택한 상태)
  817. function fAddSameLevlItem(selEndMenu){//오른쪽 메뉴에서 사정또는 종료 선택시
  818. var msgStr = '사정기록';
  819. if(selEndMenu){
  820. msgStr = '종료기록';
  821. }
  822. //종료또는 사정기록 존재여부를 리턴받는다.
  823. var returnArr = fIsExistEndData(grd_veinlist.row);
  824. var compareStr = returnArr[0];
  825. var compRow = returnArr[1];
  826. var isAss = returnArr[2];
  827. var isEnd = returnArr[3];
  828. var stage = returnArr[15];
  829. //종료기록이 있으면 입력할수 없다는 메세지 출력후 리턴
  830. if(isEnd){
  831. messageBox('선택하신 부위는 이미 종료된 기록이 있으므로 다시 '+ msgStr +' 하실 수', 'I004');
  832. return;
  833. }
  834. //종료메뉴 선택시 사정기록이 없으면 메세지 출력후 리턴
  835. if(selEndMenu && !isAss){
  836. messageBox('선택하신 부위는 사정기록이 없으므로 ' + msgStr + ' 하실 수', 'I004');
  837. return;
  838. }
  839. //해당 발생부위 가장 하위의 그리드에 insertRow을 하기 위해 발생부위 가장 하위row index를 찾는다.
  840. var addLastRow = 0;
  841. var _compareStr;
  842. for(var i = compRow; i < grd_veinlist.rows; i++){
  843. _compareStr = model.getValue(xBedsoreGridPath+ '[' + i + ']/veifpartnm');
  844. _compareStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/genrdd');
  845. _compareStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/genrtm');
  846. _compareStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/cause');
  847. if(compareStr != _compareStr){
  848. addLastRow = i+1;
  849. break;
  850. }
  851. }
  852. //발생부위가 등록/사정만 있으면 해당 발생부위 하위에 사정 추가
  853. //구분을 사정으로, 해당부위의 발생일자,발생시간, 원인을 선택한 데이터와 동일하게 추가.
  854. if(addLastRow == 0){
  855. addLastRow = grd_veinlist.rows;
  856. grd_veinlist.addRow();
  857. grd_veinlist.colDisabled(grd_veinlist.colRef("flag"))=true;
  858. }else{
  859. addLastRow = grd_veinlist.rows;
  860. grd_veinlist.addRow();
  861. grd_veinlist.colDisabled(grd_veinlist.colRef("flag"))=true;
  862. }
  863. //그리드에 발생부위, 일자, 시간, 원인, 기록일시 set한다.
  864. fSetInsertValue(addLastRow, selEndMenu, returnArr);
  865. model.refresh();
  866. }
  867. //종료또는 사정기록 존재여부 체크
  868. function fIsExistEndData(selRow, updatePartChk){
  869. //발생부위에 대해 종료된 사정인 경우 메세지 출력
  870. var compareStr, _compareStr, _flag;//비교값 str
  871. var compRow = 0;
  872. var isAss ; //사정기록 존재여부
  873. var isEnd ; //종료기록 존재여부
  874. var returnArr = new Array(10);
  875. //var isStage ; //1~4단계 기록 존재여부
  876. //선택한 발생부위 비교값
  877. var pid = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/pid');
  878. var grupcd = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/grupcd');
  879. var veifpartnm = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/veifpartnm');//발생부위
  880. var genrdd = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/genrdd'); //발생일자
  881. var genrtm = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/genrtm'); //발생시간
  882. var cause = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/cause'); //원인
  883. var causeid = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/causeid'); //원인
  884. var genrplce = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/genrplce'); //발생장소
  885. var genrplceid = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/genrplceid'); //발생장소
  886. var stage = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/stage'); //단계
  887. var stageid = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/stageid'); //단계
  888. var genrplcewardcd = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/genrplcewardcd'); //발생장소(원내부서)
  889. var instcd = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/instcd');
  890. var indd = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/indd');
  891. var cretno = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/cretno');
  892. var intervention = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/intervention'); //중재
  893. var interventionid = model.getValue(xBedsoreGridPath+ '[' + (selRow) + ']/interventionid'); //중재
  894. //정맥염발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  895. if(updatePartChk){
  896. compareStr = veifpartnm;
  897. }else{
  898. compareStr = veifpartnm + genrdd + genrtm + cause;
  899. }
  900. var veifrecseq = 0;
  901. //선택한 compareStr과 그리드내의 모든 _compareStr을 비교한다.
  902. for(var i = 1; i < grd_veinlist.rows; i++){
  903. if(selRow != i){
  904. _compareStr = model.getValue(xBedsoreGridPath+ '[' + i + ']/veifpartnm');
  905. //정맥염발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  906. if(!updatePartChk){
  907. _compareStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/genrdd');
  908. _compareStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/genrtm');
  909. _compareStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/cause');
  910. }
  911. }
  912. if(compareStr == _compareStr){
  913. compRow = i;
  914. _flag = model.getValue(xBedsoreGridPath+ '[' + i + ']/flag');
  915. if(_flag == '99'){//등록구분이 종료(99)
  916. isEnd = true;
  917. veifrecseq = model.getValue(xBedsoreGridPath+ '[' + i + ']/veifrecseq');
  918. break;
  919. }else if(_flag == '01'){//등록구분이 사정(01)
  920. isAss = true;
  921. veifrecseq = model.getValue(xBedsoreGridPath+ '[' + i + ']/veifrecseq');
  922. }else{
  923. isEnd = false;
  924. isAss = false;
  925. }
  926. }
  927. }
  928. //선택한 compareStr과 그리드내의 모든 _compareStr을 비교한다.
  929. for(var i = 1; i < grd_veinlist.rows; i++){
  930. if(selRow != i){
  931. _compareStr = model.getValue(xBedsoreGridPath+ '[' + i + ']/veifpartnm');
  932. //정맥염발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  933. if(!updatePartChk){
  934. _compareStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/genrdd');
  935. _compareStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/genrtm');
  936. _compareStr += model.getValue(xBedsoreGridPath+ '[' + i + ']/cause');
  937. }
  938. }
  939. }
  940. //배열을 리턴한다.
  941. returnArr[0] = compareStr;
  942. returnArr[1] = compRow;
  943. returnArr[2] = isAss;
  944. returnArr[3] = isEnd;
  945. returnArr[4] = pid;
  946. returnArr[5] = grupcd;
  947. returnArr[6] = veifpartnm;
  948. returnArr[7] = genrdd;
  949. returnArr[8] = genrtm;
  950. returnArr[9] = cause;
  951. returnArr[10] = causeid;
  952. returnArr[11] = veifrecseq;
  953. returnArr[12] = genrplce;
  954. returnArr[13] = genrplceid;
  955. returnArr[14] = stage;
  956. returnArr[15] = stageid;
  957. returnArr[16] = genrplcewardcd;
  958. returnArr[17] = instcd;
  959. returnArr[18] = indd;
  960. returnArr[19] = cretno;
  961. returnArr[20] = intervention;
  962. returnArr[21] = interventionid;
  963. return returnArr;
  964. }
  965. // 행 추가시 그리드에 값 셋팅
  966. function fSetInsertValue(addLastRow, selEndMenu, returnArr){
  967. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/stat', 'i');
  968. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/pid', returnArr[4]);
  969. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/grupcd', returnArr[5]);
  970. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/veifpartnm', returnArr[6]);
  971. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/genrdd', returnArr[7]);
  972. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/genrtm', returnArr[8]);
  973. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/cause', returnArr[9]);
  974. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/causeid', returnArr[10]);
  975. model.setValue(xBedsoreGridPath+ "[" + (addLastRow) + "]/recdd", getCurrentDate());
  976. model.setValue(xBedsoreGridPath+ "[" + (addLastRow) + "]/rectm", getCurrentDateTime().substring(9,13));
  977. model.setValue(xBedsoreGridPath+ "[" + (addLastRow) + "]/recrnm", getUserName());
  978. model.setValue(xBedsoreGridPath+ "[" + (addLastRow) + "]/recrid", getUserId());
  979. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/genrplce', returnArr[12]);
  980. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/genrplceid', returnArr[13]);
  981. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/stage', "");
  982. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/stageid', "");
  983. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/genrplcewardcd', returnArr[16]);
  984. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/instcd', returnArr[17]);
  985. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/indd', returnArr[18]);
  986. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/cretno', returnArr[19]);
  987. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/intervention', "");
  988. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/interventionid', "");
  989. if(!selEndMenu){
  990. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/flag', '01');//사정
  991. }else{
  992. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/flag', '99');//종료
  993. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/stageid', '12');//종료시 단계값
  994. model.setValue(xBedsoreGridPath+ '[' + (addLastRow) + ']/stage', model.getValue("/root/hidden/codelist/getVOStage[cd='12']/cdnm"));//종료시 단계값
  995. }
  996. grd_veinlist.isReadOnly(addLastRow,grd_veinlist.colRef("genrdd")) = true;
  997. //grd_veinlist.isReadOnly(addLastRow,grd_veinlist.colRef("recdd")) = true;
  998. grd_veinlist.isReadOnly(addLastRow,grd_veinlist.colRef("genrplcewardcd")) = true;
  999. }
  1000. // 통합기록조회용 인증데이터 생성
  1001. function fMakeViewData(){
  1002. var pid = model.getValue("/root/main/cond/pid");
  1003. var indd = model.getValue("/root/main/paminfo/list/indd");
  1004. var cretno = model.getValue("/root/main/paminfo/list/cretno");
  1005. var orddeptcd = model.getValue("/root/main/paminfo/list/orddeptcd");
  1006. var orddrid = model.getValue("/root/main/paminfo/list/medispclid");
  1007. var ordtype = model.getValue("/root/main/paminfo/list/ordtype");
  1008. var signno = '';
  1009. //조회조건값 세팅
  1010. model.removenode("/root/send");
  1011. model.makeValue("/root/send/pid", pid); //등록번호
  1012. model.makeValue("/root/send/indd", indd);
  1013. model.makeValue("/root/send/cretno", cretno);
  1014. model.makeValue("/root/send/genrdd", model.getValue("/root/main/cond/genrdd")); //기준일자(발생일자)
  1015. model.makeValue("/root/send/genrtm", model.getValue("/root/main/cond/genrtm")); //기준시간(발생시간)
  1016. model.makeValue("/root/send/stdradio", '0'); //조회조건의라디오(전체/종료전(전체)/종료전(최근입력만))
  1017. //정맥염관찰기록 조회
  1018. model.removenode('/root/main/veininfo');
  1019. if(submit('TRMNW15205')){
  1020. // 인증 로직 호출
  1021. ViewFunc = "view";
  1022. if (Sign.signprocess() == true){
  1023. model.makeValue("/root/send/savedata/pid", pid); // 등록번호
  1024. model.makeValue("/root/send/savedata/certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  1025. model.makeValue("/root/send/savedata/orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  1026. model.makeValue("/root/send/savedata/signno", signno); // 서명번호
  1027. model.makeValue("/root/send/savedata/cretno" , cretno); // 생성번호
  1028. model.makeValue("/root/send/savedata/recdd", model.getValue("/root/viewinfo/viewveingrup/veinlist/signrecddmax")); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  1029. model.makeValue("/root/send/savedata/rectm", getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  1030. model.makeValue("/root/send/savedata/recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  1031. model.makeValue("/root/send/savedata/signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  1032. model.makeValue("/root/send/savedata/signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  1033. model.makeValue("/root/send/savedata/formcd", "1300014127"); // 각 기록지별 서식코드(1300014127 정맥염관찰기록)
  1034. model.makeValue("/root/send/savedata/orddeptcd", orddeptcd); // 진료부서코드
  1035. model.makeValue("/root/send/savedata/orddrid" , orddrid); // 진료의사ID
  1036. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  1037. model.makeValue("/root/send/savedata/signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  1038. model.makeValue("/root/send/savedata/signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  1039. model.makeValue("/root/send/savedata/screenid" , getScreenID());
  1040. model.makeValue("/root/send/savedata/dispyn", "Y"); //인증저장용 data(view용 인증데이터는 따로 생성함)
  1041. } else {
  1042. return ;
  1043. }
  1044. if(submit("TXMNW04713")){
  1045. finit("saveflag");
  1046. }
  1047. }
  1048. }
  1049. // 재원/퇴원 구분
  1050. function fSetInDsch(Pram){
  1051. if(Pram == "D" || Pram == "T" ){
  1052. model.makeValue(rdo_indsch.attribute("ref"), "2" );
  1053. }else{
  1054. model.makeValue(rdo_indsch.attribute("ref"), "1" );
  1055. }
  1056. rdo_indsch.refresh();
  1057. fSetInDschHidden();
  1058. }
  1059. // 재원/퇴원 구분
  1060. function fSetInDschHidden(){
  1061. var indsch = model.getValue("/root/main/cond/indsch");
  1062. if(indsch == "1"){
  1063. ctn_pid.visible = false;
  1064. cmb_patientnm.visible = false;
  1065. ipt_pid.visible = false;
  1066. ctn_ward.visible = true;
  1067. cmb_ward.visible = true;
  1068. cap_settingrn.visible = true;
  1069. cmb_settingrn.visible = true;
  1070. line1.visible = true;
  1071. button1.visible = true;
  1072. fnZoneDisp();
  1073. }else if(indsch == "2"){
  1074. ctn_pid.visible = true;
  1075. cmb_patientnm.visible = true;
  1076. ipt_pid.visible = true;
  1077. ctn_ward.visible = false;
  1078. cmb_ward.visible = false;
  1079. cap_settingrn.visible = false;
  1080. cmb_settingrn.visible = false;
  1081. cap_Zone.visible = false;
  1082. cmb_Zone.visible = false;
  1083. line1.visible = false;
  1084. button1.visible = false;
  1085. }
  1086. }
  1087. function fGetPidWardInfo(pid){
  1088. if(pid != null && pid != ''){
  1089. model.removenode('/root/send');
  1090. model.removenode('/root/main/patinfo');
  1091. model.makeValue('/root/send/pid', pid);
  1092. if(!submit('TRMNW04707', "false")){
  1093. messageBox('환자정보 조회를', 'E009');
  1094. return;
  1095. }else{
  1096. model.setValue('/root/main/cond/patientnm',model.getValue('/root/main/patinfo/patinfolist/pid'));
  1097. model.setValue('/root/main/cond/pid',model.getValue('/root/main/patinfo/patinfolist/pid'));
  1098. cmb_patientnm.refresh();
  1099. ipt_pid.refresh();
  1100. }
  1101. }
  1102. }