SMMNP01500.js 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958
  1. /* ---------------------------------------------------------------------
  2. Case Cart MASTER 사항(SMMNP01500.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. : Create By Francis Choi
  6. : 2015.05.02
  7. ---------------------------------------------------------------------- */
  8. var xPathData = "/root/main/MnpmcartData/MnpmcartList" ; //
  9. var xPathInput = "/root/init/WorkData/InputData" ; //
  10. var tColWidth = "74,90,70,80,121,55,291,30,73,0,0,0,0,0,0,0,0,0,0#" // 집도
  11. + "74,90,70,80,121,55,179,33,70,0,0,0,0,0,0,0,0,0,0" ; // 마취
  12. var tWidth = tColWidth.split("#");
  13. /* ------------------------------------------------- */
  14. /* SMMNP01500_Cart Master등록 */
  15. /* On Load 시 Call */
  16. /* ------------------------------------------------- */
  17. /* group : EMR 간호 수술마취 */
  18. /* ver : 2007.05.03 */
  19. /* by : 최학록 */
  20. /* --------------------------------------------------*/
  21. /* type : function */
  22. /* access : public */
  23. /* desc : xforms-ready시 수행한다 */
  24. /* return : */
  25. /* --------------------------------------------------*/
  26. function fFormInit() {
  27. model.removeNodeset("/root/main/diaginfo/diagcdlist");
  28. model.removeNodeset("/root/main/icd10indx/icd10indxcdlist");
  29. model.removeNode("/root/main/copyoplist/diagcdlist");
  30. //var curtDate = getCurrentDate();
  31. //var curtYYMM = curtDate.substr(0, 8);
  32. //model.setValue("/root/init/WorkData/InputData/appdd", curtYYMM);
  33. //화면 open시, ICD9색인탭이 기본
  34. btn_icd10.selected = true;
  35. model.toggle("icd9");
  36. fReqGetIndxList();
  37. model.removenode("/root/send");
  38. model.makeValue("/root/send/flag" , "X" );
  39. model.makeValue("/root/send/searchitem", "XX" );
  40. model.makeValue("/root/send/deptflag" , "011" );
  41. submit("TRMNP01512");
  42. addComboItem("cmb_orddept" , "전 체", "", "above" );
  43. addComboItem("cmb_orddept2" , "전 체", "", "above" );
  44. removeComboItem("cmb_orddept2" , "전 체", "", "above" );
  45. grd_cartlist.explorerbar = "sort";
  46. grd_cartlist.fixedcellcheckbox(0,1) = true;
  47. grd_cartlist.frozencols = grd_cartlist.colRef("opengnm"); // 틀고정
  48. grd_copyoplist.frozencols = grd_copyoplist.colRef("opengnm"); // 틀고정
  49. // 요청번호; 845
  50. // 요청내용: 수술의뢰시 필요한 기준자료 추가 등록
  51. // 세부내용: 수술체위, 수술창상, 수술위치, 마취방법
  52. // 수정날자 2010.05.24
  53. // 수정자 : kskim
  54. zbcfGetCodeList(new Array("M0016",
  55. "M0357",
  56. "M0017",
  57. "M0341"),
  58. new Array("/root/init/M0016",
  59. "/root/init/M0357",
  60. "/root/init/M0017",
  61. "/root/init/M0341"));
  62. model.makeNode("/root/hidden/updatelist");
  63. // 요청번호: 845
  64. // 요청사항: 845기본요청사항에 추가적으로 로그인한 집도과, 집도의 정보 연동
  65. // 수정일: 2010.05.25
  66. // 수정자: 김광성. kskim
  67. var jobkindcd = getUserInfo("jobkindcd");
  68. var jobcd = jobkindcd.substr(0,2);
  69. if( !isNull(jobkindcd) && jobcd == "03"){ // 집도과, 집도의, 수술명이 사용유무 정보가 Y인 것 조회
  70. model.setValue("/root/init/WorkData/cond/rgstdeptcd", getUserInfo("dutplcecd")); // 집도과 정보 셋팅
  71. cmb_orddept.dispatch("xforms-value-changed");
  72. model.setValue("/root/init/WorkData/cond/rgstperf", getUserInfo("userid")); // 집도의 정보 셋팅
  73. model.setValue("/root/init/WorkData/cond/useflag", "Y"); // 수술명 사용이 Y인 것만 조회
  74. button4.dispatch("DOMActivate");
  75. model.setFocus("grd_cartlist");
  76. }
  77. /*zbcfGetCodeList(new Array("M0017","M0246"), new Array("/root/init/M0017list", "/root/init/M0246list"), true);
  78. model.copyNode("/root/main/M0017list", "/root/init/M0017list");
  79. model.copyNode("/root/main/M0246list", "/root/init/M0246list");
  80. addComboItem("cmb_anstkind" , "전 체", "", "above" );
  81. addComboItem("cmb_anstageflag", "전 체", "", "above" );
  82. addComboItem("in_anstageflag", "-", "00", "above" );
  83. cmb_anstkind.disabled = true; //마취방법 비활성화
  84. cmb_anstageflag.disabled = true; //연령대 비활성화
  85. model.removenode("/root/send");
  86. model.makeValue("/root/send/req/conflag", "1");//대분류
  87. submit("TRMNP01504", false);
  88. fDeptCombo("011"); // 집도과
  89. addComboItem("cmb_orddept", "전 체", "", "above" );
  90. grd_cartlist.fixedcellcheckbox(0,1) = true;
  91. model.removenode("/root/send");
  92. model.makeValue("/root/send/reqdata/sortflag", "N");
  93. submit("TRMNP01503");
  94. // model.refresh();*/
  95. }
  96. /* ------------------------------------------------- */
  97. /* group : EMR 간호 수술마취 */
  98. /* ver : 2008.12.18 */
  99. /* by : 김진명 */
  100. /* ------------------------------------------------- */
  101. /* SMMNP01500_Case Cart MASTER */
  102. /* desc : ICD9 INDEX 조회 */
  103. /* --------------------------------------------------*/
  104. function fReqGetIndxList(){
  105. model.removenode("/root/send");
  106. model.makeValue("/root/send/reqdata/indxflag", "9");
  107. submit("TRMNP01502");
  108. }
  109. /* ------------------------------------------------- */
  110. /* group : EMR 간호 수술마취 */
  111. /* ver : 2008.12.18 */
  112. /* by : 김진명 */
  113. /* ------------------------------------------------- */
  114. /* SMMNP01500_Case Cart MASTER */
  115. /* desc : ICD9 용어 조회 */
  116. /* --------------------------------------------------*/
  117. function fReqGetICD9CDList(pFlag){
  118. var indxcd, refopnm, refcond, condflag;
  119. if( trv_icd9indxcdlist.selectedIndex != -1 ) {
  120. var item = trv_icd9indxcdlist.item(trv_icd9indxcdlist.selectedIndex);
  121. if(item.depth == 0){ //상위index를 클릭한 경우, 조회하지 않는다.
  122. return;
  123. }
  124. indxcd = trv_icd9indxcdlist.value;
  125. }
  126. if( pFlag == "2" ) {//Tree 조회시
  127. //트리 선택시 검색어 및 전체 검색 초기화
  128. model.setValue("/root/init/WorkData/cond/refopnm", "");
  129. model.setValue("/root/init/WorkData/cond/refcond", "");
  130. }else if ( pFlag == "1" ) {//검색조건 조회시 전체 검색
  131. model.setValue("/root/init/WorkData/cond/refcond", "ALL");
  132. }
  133. refopnm = model.getValue("/root/init/WorkData/cond/refopnm");
  134. refcond = model.getValue("/root/init/WorkData/cond/refcond");
  135. condflag = fIsHangul(refopnm);
  136. if( indxcd == "" ) { indxcd = "0"; }//인덱스 코드가 없으면 0으로 셋팅 맵핑시 인덱스 코드가 없으면 값이 안넘어감.
  137. if( (indxcd == "0")&&(refopnm == "") ) {
  138. messageBox("수술명 검색 조건을 입력하지 ", "E007");
  139. return;
  140. }
  141. model.removenode("/root/send");
  142. model.makeValue("/root/send/reqdata/icd9indxcd", indxcd);
  143. model.makeValue("/root/send/reqdata/refopnm", refopnm);
  144. model.makeValue("/root/send/reqdata/refcond", refcond);
  145. model.makeValue("/root/send/reqdata/condflag", condflag);
  146. submit("TRMNP01511");
  147. }
  148. /* ------------------------------------------------- */
  149. /* group : EMR 간호 수술마취 */
  150. /* ver : 2008.12.18 */
  151. /* by : 김진명 */
  152. /* ------------------------------------------------- */
  153. /* SMMNP01500_Case Cart MASTER */
  154. /* desc : 한글여부 */
  155. /* --------------------------------------------------*/
  156. function fIsHangul(pData) {
  157. var sBit = pData.charAt(0);
  158. if (escape(sBit).length <= 4) return "E";
  159. return "H";
  160. }
  161. /* ------------------------------------------------- */
  162. /* group : EMR 간호 수술마취 */
  163. /* ver : 2009.01.05 */
  164. /* by : 김진명 */
  165. /* ------------------------------------------------- */
  166. /* SMMNP01500_Case Cart MASTER */
  167. /* desc : 수술명 복사 */
  168. /* --------------------------------------------------*/
  169. function fSelectOpNm(){
  170. var cnt = 0;
  171. model.removenode("/root/main/copyoplist");//수술명복사 그리드 초기화
  172. model.makeNode("/root/main/copyoplist");//수술명복사 인스턴스 생성
  173. for( var iRow = 1; iRow <= grd_cartlist.rows; iRow++ ) {
  174. if( model.getValue("/root/main/diaginfo/diagcdlist[" + iRow + "]/chkflag") == "true" ) {
  175. if( model.getValue("/root/main/diaginfo/diagcdlist[" + iRow + "]/ccrtno") != "" ) {
  176. if( model.getValue("/root/main/diaginfo/diagcdlist[" + iRow + "]/useflag") == "N" ) {
  177. messageBox("미 사용중인 수술명은 선택 ", "E001");
  178. model.removenode("/root/main/copyoplist");//수술명복사 그리드 초기화
  179. model.makeNode("/root/main/copyoplist");//수술명복사 인스턴스 생성
  180. model.refresh();
  181. return;
  182. }
  183. model.duplicate("/root/main/copyoplist", "/root/main/diaginfo/diagcdlist["+ iRow +"]");
  184. cnt++;
  185. }else {
  186. messageBox("미 등록된 수술명은 선택 ", "E001");
  187. model.removenode("/root/main/copyoplist");//수술명복사 그리드 초기화
  188. model.makeNode("/root/main/copyoplist");//수술명복사 인스턴스 생성
  189. model.refresh();
  190. return;
  191. }
  192. }
  193. }
  194. if( cnt < 1 ) {
  195. messageBox("선택하신 수술명이 ", "I004");
  196. return;
  197. }else {
  198. model.refresh();
  199. }
  200. }
  201. /* ------------------------------------------------- */
  202. /* SMMNP01500_Case Cart MASTER */
  203. /* ------------------------------------------------- */
  204. /* group : EMR 간호 수술마취 */
  205. /* ver : 2009.01.05 */
  206. /* by : 김진명 */
  207. /* ------------------------------------------------- */
  208. /* SMMNP01500_Case Cart MASTER */
  209. /* desc :Case Cart MASTER 정보 가져오기 */
  210. /* --------------------------------------------------*/
  211. function fSearchCartList() {
  212. model.removenode("/root/send");
  213. if( model.getValue("/root/init/WorkData/cond/rgstdeptcd") == "" ) {
  214. messageBox("집도과를 선택하지 ", "E007");
  215. model.setFocus("cmb_orddept");
  216. return;
  217. }
  218. model.makeValue("/root/send/reqdata/perfdeptcd", model.getValue("/root/init/WorkData/cond/rgstdeptcd"));
  219. model.makeValue("/root/send/reqdata/perfdrid", model.getValue("/root/init/WorkData/cond/rgstperf"));
  220. model.makeValue("/root/send/reqdata/useflag", model.getValue("/root/init/WorkData/cond/useflag"));
  221. model.makeValue("/root/send/reqdata/cartgubn", "O");
  222. submit("TRMNP01513");
  223. }
  224. /* ------------------------------------------------- */
  225. /* SMMNP01500_Case Cart MASTER */
  226. /* ------------------------------------------------- */
  227. /* group : EMR 간호 수술마취 */
  228. /* ver : 2009.01.05 */
  229. /* by : 김진명 */
  230. /* ------------------------------------------------- */
  231. /* SMMNP01500_Case Cart MASTER */
  232. /* desc :수술명 복사 초기화 */
  233. /* --------------------------------------------------*/
  234. function fClear() {
  235. model.removenode("/root/main/copyoplist");//수술명복사 그리드 초기화
  236. model.removenode("/root/init/DrInfoII/DrLists/drlist");//집도의 콤보리스트 초기화
  237. model.setValue("/root/init/WorkData/cond/copdeptcd", "");//수술명복사 집도과 초기화
  238. model.setValue("/root/init/WorkData/cond/copperf", "");//수술명복사 집도의 초기화
  239. model.setValue("/root/init/WorkData/cond/copgubn", "");//수술명복사 조건 초기화
  240. model.refresh();
  241. }
  242. /*function MnpmcartList_Read() {
  243. model.removenode("/root/send");
  244. model.makeValue("/root/send/orddeptcd" , model.getValue("/root/init/WorkData/cond/rgstdeptcd" )); // 진료과코드
  245. model.makeValue("/root/send/perfid" , model.getValue("/root/init/WorkData/cond/rgstperf" )); // 집도의ID
  246. model.makeValue("/root/send/useflag" , model.getValue("/root/init/WorkData/cond/useflag" )); // 사용여부
  247. model.makeValue("/root/send/cartgubn" , model.getValue("/root/init/WorkData/cond/cartgubn" )); // Cart구분(O:수술,A:마취)
  248. submit("TRMNP01501"); // 수술실의 코드와 명칭을 가져온다.
  249. }*/
  250. /* ------------------------------------------------- */
  251. /* desc : Case Cart MASTER 자료저장하기 */
  252. /* param : pModel - Model */
  253. /* tNode - Target Node */
  254. /* sNode - Source Node */
  255. /* return : */
  256. /* -------------------------------------------------- */
  257. /*function fSave(pFlag){
  258. var tNode = "/root/send/MnpmcartList";
  259. var sCode = model.getValue(xPathInput+ "/ccrtno" );
  260. if ((pFlag == 'D') || (pFlag == 'U') || (pFlag == 'A') || (pFlag == 'S')){
  261. if (sCode == "") {
  262. messageBox("CaseCart 번호를", "C002");
  263. return;
  264. }
  265. }
  266. if (inp_orddeptcd.label == "") { // 집도과코드(마취과)
  267. model.setvalue(xPathInput+ "/orddeptcd","");
  268. alert("집도(마취)과를 선택하십시요");
  269. return;
  270. }
  271. //inp_perfid
  272. if (inp_perfid.label ==""){ // 집도의ID(마취의)
  273. model.setvalue(xPathInput+ "/perfid", "");
  274. alert("집도(마취)의를 선택하십시요");
  275. return;
  276. }
  277. model.removenode("/root/send");
  278. model.makeValue(tNode+"/ccrtno" , model.getvalue(xPathInput+ "/ccrtno" )); // CaseCart 번호 - 일련번호로 생성 "
  279. model.makeValue(tNode+"/cartgubn" , rdo_cartgubn.value ); // Cart구분(O:수술,A:마취) " default="O"
  280. model.makeValue(tNode+"/orddeptcd" , model.getvalue(xPathInput+ "/orddeptcd" )); // 집도과코드(마취과) "
  281. model.makeValue(tNode+"/anstkind" , model.getvalue(xPathInput+ "/anstkind" )); // 마취종류(코드정의서 M0017 참조) " default="00"
  282. model.makeValue(tNode+"/perfid" , model.getvalue(xPathInput+ "/perfid" )); // 집도의ID(마취의) "
  283. model.makeValue(tNode+"/anstageflag" , model.getvalue(xPathInput+ "/anstageflag" )); // 수술마취나이구분(코드 M0246 참조) " default="00"
  284. model.makeValue(tNode+"/opcd" , model.getvalue(xPathInput+ "/opcd" )); // 수술코드 "
  285. model.makeValue(tNode+"/appdd" , model.getvalue(xPathInput+ "/appdd" )); // 적용일자 "
  286. model.makeValue(tNode+"/perfavgoptm" , model.getvalue(xPathInput+ "/perfavgoptm" )); // 집도의별평균수술시간 "
  287. model.makeValue(tNode+"/perfavgdowntm" , model.getvalue(xPathInput+ "/perfavgdowntm" )); // 집도의별평균DownTime "
  288. model.makeValue(tNode+"/useflag" , model.getvalue(xPathInput+ "/useflag" )); // 사용여부 " default="Y"
  289. model.makeValue(tNode+"/endouseyn" , model.getvalue(xPathInput+ "/endouseyn" )); // 내시경사용여부 " default="N"
  290. if (pFlag == 'I') {
  291. model.makeValue(tNode+"/deptinit", model.getValue("/root/main/DeptLists/deptlist["+(inp_orddeptcd.focusIndex+1)+"]/deptengabbr")); // 부서영문약자코드 "
  292. }
  293. if (pFlag == "C") { // 수술명 복사
  294. if (model.getvalue(xPathInput+ "/copydept")=="") { // 집도과코드(마취과)
  295. alert("복사 집도(마취)과를 선택하십시요");
  296. return;
  297. }
  298. if (model.getvalue(xPathInput+ "/copydr" )==""){ // 집도의ID(마취의)
  299. alert("복사 집도(마취)의를 선택하십시요");
  300. return;
  301. }
  302. model.makeValue(tNode+"/deptinit" , model.getValue("/root/main/DeptLists/deptlist["+(cp_deptcd.focusIndex+1)+"]/deptengabbr")); // 부서영문약자코드 "
  303. model.makeValue(tNode+"/orddeptcd" , model.getvalue(xPathInput+ "/copydept" )); // 집도과코드(마취과)
  304. model.makeValue(tNode+"/perfid" , model.getvalue(xPathInput+ "/copydr" )); // 집도의ID(마취의)
  305. model.makeValue(tNode+"/frdeptcd" , model.getvalue(xPathInput+ "/orddeptcd" )); // From 부서코드
  306. model.makeValue(tNode+"/frperfid" , model.getvalue(xPathInput+ "/perfid" )); // From 의사ID
  307. if (rd_copyflag.value == "C") {
  308. if (rd_nameflag.value=="A") { // 수술명 + Cart물품 + 전체
  309. pFlag = "2";
  310. } else { // 수술명 + Cart물품 + 지정수술명
  311. pFlag = "4";
  312. }
  313. } else {
  314. if (rd_nameflag.value=="A") { // 수술명 + 전체
  315. pFlag = "1";
  316. } else { // 수술명 + 지정수술명
  317. pFlag = "3";
  318. }
  319. }
  320. }
  321. //
  322. if ((pFlag == 'I')||(pFlag == 'U')||(pFlag == 'I')||(pFlag == '3')||(pFlag == '4')) {
  323. if (model.getvalue(xPathInput+ "/opcd" )==""){ // 수술명
  324. alert("수술명을 선택하십시요");
  325. return;
  326. }
  327. }
  328. //
  329. model.makeValue(tNode+"/recstat" , pFlag); // I:입력 U:수정 D:삭제,S:사용전환Single,A:사용전환All, A:마취생성",수술명복사:1 수술명,2수술명+Cart물품,3지정수술명,4지정수술명+Cart물품
  330. if (submit("TXMNP01500")){ // 수술간호기록정보,참가자 정보저장
  331. msg = model.getValue("/root/dummy/proclist/procname");
  332. alert(msg);
  333. }
  334. model.resetInstanceNode(xPathInput);
  335. var curtDate = getCurrentDate();
  336. var curtYYMM = curtDate.substr(0, 8);
  337. model.setValue("/root/init/WorkData/InputData/appdd", curtYYMM);//적용일자 현재 날짜로 셋팅
  338. MnpmcartList_Read();
  339. }*/
  340. /* ------------------------------------------------- */
  341. /* group : EMR 간호 수술마취 */
  342. /* ver : 2009.01.05 */
  343. /* by : 김진명 */
  344. /* ------------------------------------------------- */
  345. /* desc : Case Cart MASTER 자료저장하기 */
  346. /* param : */
  347. /* return : */
  348. /* ------------------------------------------------- */
  349. function fOpNmSave(pFlag){
  350. var ccrtno, opcd, useflag, statflag;
  351. var cnt = 0;
  352. var opsavelist = "m▦opcd▦orddeptcd▦perfid▦cartgubn▦useflag▦deptinit▦ccrtno▦opusetm▦opposturecd▦opdirecflag▦anstmthdcd▦opcntmdg"; // 수술체위, 수술창상, 마취방법, 수술위치, 소요시간 정보 추가 2010.05.24 kskim
  353. var perfdeptcd = model.getValue("/root/init/WorkData/cond/rgstdeptcd");
  354. var perfdrid = model.getValue("/root/init/WorkData/cond/rgstperf");
  355. var deptinit = model.getValue("/root/init/ComboLists/deptlist[deptcd='" + perfdeptcd + "']/deptengabbr");
  356. if( perfdeptcd == "" ) {
  357. messageBox("집도과를 선택하지 ", "E007");
  358. model.setFocus("cmb_orddept");
  359. return;
  360. }
  361. if( perfdrid == "" ) {
  362. messageBox("집도의를 선택하지 ", "E007");
  363. model.setFocus("cmb_perf");
  364. return;
  365. }
  366. for(var iRow = 1; iRow < grd_cartlist.rows; iRow++ ) {
  367. if( model.getValue("/root/main/diaginfo/diagcdlist[" + iRow + "]/chkflag") == "true" ) {
  368. ccrtno = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/ccrtno");
  369. opcd = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/opcd");
  370. useflag = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/useflag");
  371. // 요청번호; 845
  372. // 요청내용: 수술의뢰시 필요한 기준자료 추가 등록
  373. // 세부내용: 수술체위, 수술창상, 수술위치, 마취방법
  374. // 수정날자 2010.05.24
  375. // 수정자 : kskim
  376. // 수정 시작 kskim
  377. usehours = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/usehours"); // 소요시간(시)
  378. usemins = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/usemins"); // 소요시간(분)
  379. opposturecd = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/opposturecd"); // 수술체위
  380. opdirecflag = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/opdirecflag"); //수술위치
  381. anstmthdcd = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/anstmthdcd"); //마취방법
  382. opcntmdg = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/opcntmdg"); //수술창상
  383. opusetm = usehours.concat(usemins);
  384. uptstat = model.getValue("/root/main/diaginfo/diagcdlist[" + iRow +"]/uptstat"); //update상태 정보
  385. // 수정 종료 kskim
  386. if( pFlag != "D" ) {
  387. if( useflag == "Y" && uptstat != "U") {
  388. messageBox("이미 사용중인 수술명", "E008");
  389. return;
  390. }
  391. }else {
  392. if( useflag == "N" ) {
  393. messageBox("이미 미사용 수술명", "E008");
  394. return;
  395. }
  396. }
  397. if( ccrtno == "" ) {//등록된 카트가 아니면 신규등록, 등록된 카트이면서 미사용중이면 수정
  398. statflag = "I";
  399. useflag = "Y"
  400. }else {
  401. statflag = "U";
  402. useflag = "Y"
  403. }
  404. if( pFlag == "D" ) {//삭제이면
  405. statflag = "D";
  406. useflag = "N"
  407. }
  408. cnt++
  409. // 소요시간, 수술체위, 수술위치, 마취방법, 수술창상 추가 . kskim. 2010.05.24
  410. opsavelist = opsavelist + "▩" +
  411. statflag + "▦" +
  412. opcd + "▦" +
  413. perfdeptcd + "▦" +
  414. perfdrid + "▦" +
  415. "O" + "▦" +
  416. useflag + "▦" +
  417. deptinit + "▦" +
  418. ccrtno + "▦" +
  419. opusetm + "▦" +
  420. opposturecd + "▦" +
  421. opdirecflag + "▦" +
  422. anstmthdcd + "▦" +
  423. opcntmdg;
  424. }
  425. }
  426. if( cnt > 0 ) {
  427. model.removenode("/root/send");
  428. model.makeValue("/root/send/reqdata/perfdeptcd", perfdeptcd);
  429. model.makeValue("/root/send/reqdata/perfdrid", perfdrid);
  430. model.makeValue("/root/send/reqdata/useflag", model.getValue("/root/init/WorkData/cond/useflag"));
  431. model.makeValue("/root/send/reqdata/cartgubn", "O");
  432. model.makeValue("/root/send/savedata", opsavelist);
  433. submit("TXMNP01503");
  434. }else {
  435. messageBox("선택하신 수술명이 ", "E007");
  436. return;
  437. }
  438. }
  439. /* ------------------------------------------------- */
  440. /* desc : Case Cart MASTER 자료저장하기 */
  441. /* param : pModel - Model */
  442. /* tNode - Target Node */
  443. /* sNode - Source Node */
  444. /* return : */
  445. /* -------------------------------------------------- */
  446. function fRow2setValue(){
  447. var grdID;
  448. if( model.getValue("/root/init/WorkData/cond/cartgubn") == "O" ) {//수술
  449. grdID = grd_cartlist;
  450. } else {
  451. grdID = grd_anstcartlist;
  452. }
  453. if (grdID.rows < 1) {
  454. return;
  455. }
  456. var DrRead = "N";
  457. var sNode = "/root/main/MnpmcartData/MnpmcartList["+grdID.row+"]";
  458. model.setValue(xPathInput + "/ccrtno" , model.getValue(sNode +"/ccrtno" ));
  459. var DeptCode = model.getValue(sNode +"/orddeptcd" );
  460. if (inp_orddeptcd.value != DeptCode) DrRead = "Y";
  461. model.removenode("/root/send");
  462. model.makeValue("/root/send/reqdata/conflag", "2");
  463. model.makeValue("/root/send/reqdata/lrgcd", model.getValue(sNode +"/lrgcd"));
  464. submit("TRMNP01505", false);
  465. model.removenode("/root/send");
  466. model.makeValue("/root/send/reqdata/opgrp1" , model.getValue(sNode +"/lrgcd"));
  467. model.makeValue("/root/send/reqdata/opgrp2" , model.getValue(sNode +"/mdlcd"));
  468. model.makeValue("/root/send/reqdata/sortflag" , "N");
  469. submit("TRMNP01503", false);
  470. model.setValue(xPathInput + "/orddeptcd" , model.getValue(sNode +"/orddeptcd"));
  471. model.setValue(xPathInput + "/perfid" , model.getValue(sNode +"/perfid"));
  472. model.setValue(xPathInput + "/opcd" , model.getValue(sNode +"/opcd"));
  473. model.setValue(xPathInput + "/appdd" , model.getValue(sNode +"/appdd"));
  474. model.setValue(xPathInput + "/perfavgoptm" , model.getValue(sNode +"/perfavgoptm"));
  475. model.setValue(xPathInput + "/perfavgdowntm", model.getValue(sNode +"/perfavgdowntm"));
  476. model.setValue(xPathInput + "/useflag" , model.getValue(sNode +"/useflag"));
  477. model.setValue(xPathInput + "/anstkind" , model.getValue(sNode +"/anstkind"));
  478. model.setValue(xPathInput + "/anstageflag" , model.getValue(sNode +"/anstageflag"));
  479. model.setValue(xPathInput + "/lrgcd" , model.getValue(sNode +"/lrgcd"));
  480. model.setValue(xPathInput + "/mdlcd" , model.getValue(sNode +"/mdlcd"));
  481. if ( DrRead == "Y") fDrCombo(2, DeptCode); // 집도(마취의) 가져오기
  482. grp_input.refresh();
  483. }
  484. /* ------------------------------------------------- */
  485. /* desc : 수술명 복사 */
  486. /* param : */
  487. /* return : */
  488. /* -------------------------------------------------- */
  489. function fOpCopy(){
  490. var copylist = "ccrtno▦opcd▦copyflag▦perfdeptcd▦perfid▦opusetm▦opposturecd▦opdirecflag▦anstmthdcd▦opcntmdg"; // 수술체위, 수술창상, 수술위치, 마취방법, 소요시간 추가 2010.05.24 kskim
  491. var perfdeptcd = model.getValue("/root/init/WorkData/cond/copdeptcd");
  492. var perfid = model.getValue("/root/init/WorkData/cond/copperf");
  493. var copyflag = model.getValue("/root/init/WorkData/cond/copgubn");
  494. if( perfdeptcd == "" ) {
  495. messageBox("복사할 집도과를 ", "C002");
  496. model.setFocus("cmb_orddept2");
  497. return;
  498. }else if( perfid == "" ) {
  499. messageBox("복사할 집도의를 ", "C002");
  500. model.setFocus("cmb_perf2");
  501. return;
  502. }else if( copyflag == "" ) {
  503. messageBox("복사 조건을 ", "C002");
  504. model.setFocus("rd_copyflag");
  505. return;
  506. }
  507. var cnt = 0;
  508. for( var i=0; i < grd_copyoplist.rows; i++ ) {
  509. var chk = model.getValue("/root/main/copyoplist/diagcdlist[" + i + "]/chkflag");
  510. var opcd = model.getValue("/root/main/copyoplist/diagcdlist[" + i + "]/opcd");
  511. var ccrtno = model.getValue("/root/main/copyoplist/diagcdlist[" + i + "]/ccrtno");
  512. // 요청번호; 845
  513. // 요청내용: 수술의뢰시 필요한 기준자료 추가 등록
  514. // 세부내용: 수술체위, 수술창상, 수술위치, 마취방법
  515. // 수정날자 2010.05.24
  516. // 수정자 : kskim
  517. // 수정 시작
  518. var opposturecd = model.getValue("/root/main/copyoplist/diagcdlist[" + i + "]/opposturecd"); // 수숭체위
  519. var opdirecflag = model.getValue("/root/main/copyoplist/diagcdlist[" + i + "]/opdirecflag"); // 수술위치
  520. var anstmthdcd = model.getValue("/root/main/copyoplist/diagcdlist[" + i + "]/anstmthdcd"); // 마취방법
  521. var opcntmdg = model.getValue("/root/main/copyoplist/diagcdlist[" + i + "]/opcntmdg"); // 수술창상
  522. var usehours = model.getValue("/root/main/copyoplist/diagcdlist[" + i + "]/usehours"); // 소요시간(시)
  523. var usemins = model.getValue("/root/main/copyoplist/diagcdlist[" + i + "]/usemins"); // 소요시간(분)
  524. var opusetm = usehours.concat(usemins);
  525. // 소요시간, 수술체위, 수술위치, 마취방법, 수술창상 추가 . kskim. 2010.05.24
  526. if( chk == "true" ) {
  527. copylist = copylist + "▩" +
  528. ccrtno + "▦" +
  529. opcd + "▦" +
  530. copyflag + "▦" +
  531. perfdeptcd + "▦" +
  532. perfid + "▦" +
  533. opusetm + "▦" +
  534. opposturecd + "▦" +
  535. opdirecflag + "▦" +
  536. anstmthdcd + "▦" +
  537. opcntmdg;
  538. cnt++;
  539. }
  540. }
  541. if( cnt > 0 ) {
  542. model.removenode("/root/send");
  543. model.makeValue("/root/send/copylist", copylist);
  544. submit("TXMNP01502", false);
  545. fClear();//수술명 복사 초기화
  546. }else {
  547. messageBox("선택하신 수술명이 ", "I004");
  548. }
  549. }
  550. function fCheckCartCode(pCode){
  551. var sCode = "";
  552. var sNode = "/root/main/MnpmcartData/MnpmcartList";
  553. var sRowCnt = grd_cartlist.rows-grd_cartlist.fixedrows;
  554. for (var i=1;i<=sRowCnt; i++){
  555. sCode = model.getValue(sNode + "["+i+"]/ccrtno");
  556. if (pCode == sCode) {
  557. return true;
  558. }
  559. }
  560. return false;
  561. }
  562. function fOpCodePopup() {
  563. var xpos = event.screenX;
  564. var ypos = event.screenY-300;
  565. open("SPMNP01500", 1, xpos, ypos,"SPMNP01500","/root/init/WorkData/oplist", "/root/Cond/oplist");
  566. var iProperties = getParameter("SendData");
  567. var iSplit_Value = iProperties.split("|");
  568. if (iSplit_Value.length > 0) {
  569. model.setValue(xPathInput + "/opcd" , iSplit_Value[0]); // CODE
  570. model.setValue(xPathInput + "/opkname", iSplit_Value[1]); // NAME
  571. }
  572. }
  573. // --------------------------------------------------
  574. // Switch 속성변경 처리하는 함수
  575. // --------------------------------------------------
  576. function fViewToggle() {
  577. if (sToggle == 0) {
  578. grp_grid.attribute("width" ) = "1195";
  579. lin_grid.attribute("x2" ) = "1195";
  580. grd_cartlist.attribute("width" ) = "1195";
  581. bbt_excel.visible = true;
  582. } else {
  583. bbt_excel.visible = false;
  584. grp_grid.attribute("width" ) = "726";
  585. lin_grid.attribute("x2" ) = "724";
  586. grd_cartlist.attribute("width" ) = "724";
  587. }
  588. grp_grid.refresh();
  589. }
  590. /* --------------------------------------------------*/
  591. /* type : function */
  592. /* access : public */
  593. /* desc : 집도과(마취과) 콤보아이템 가져오기 */
  594. /* param : */
  595. /* return : */
  596. /* --------------------------------------------------*/
  597. function fDeptCombo(pFlag) {
  598. removeComboItem("cmb_orddept" );
  599. model.removenode("/root/send" );
  600. model.makeValue("/root/send/flag" , "X" );
  601. model.makeValue("/root/send/searchitem", "XX" );
  602. model.makeValue("/root/send/deptflag" , pFlag );
  603. submit("TRMNP00102", false);
  604. model.removeNodeset("/root/main/DeptLists/deptlist");
  605. model.copyNode("/root/main/DeptLists", "/root/init/DeptLists");
  606. }
  607. /* --------------------------------------------------*/
  608. /* type : function */
  609. /* access : public */
  610. /* desc : 집도의(마취의) 콤보아이템 가져오기 */
  611. /* param : */
  612. /* return : */
  613. /* --------------------------------------------------*/
  614. function fDrCombo(pCls, pDept) {
  615. model.removenode("/root/send" );
  616. model.makeNode("/root/send" );
  617. model.makeNode("/root/send/reqdata");
  618. model.makeValue("/root/send/reqdata/orddept", pDept);
  619. submit("TRMNP00103");
  620. if (pCls ==1) {//수술명 등록용 집도의 리스트
  621. model.removeNodeset("/root/init/DrInfoI/DrLists/drlist");
  622. model.copyNode("/root/init/DrInfoI/DrLists", "root/init/DrLists");
  623. addComboItem("cmb_perf", "전 체", "", "above" );
  624. cmb_perf.refresh();
  625. }
  626. if (pCls ==2) {//수술명 복사용 집도의 리스트
  627. model.removeNodeset("/root/init/DrInfoII/DrLists/drlist");
  628. model.copyNode("/root/init/DrInfoII/DrLists", "root/init/DrLists");
  629. addComboItem("cmb_perf2", "전 체", "", "above" );
  630. cmb_perf2.refresh();
  631. }
  632. }
  633. /* --------------------------------------------------*/
  634. /* type : function */
  635. /* access : public */
  636. /* desc : 콤보아이템 제거 */
  637. /* param : */
  638. /* return : */
  639. /* --------------------------------------------------*/
  640. function removeComboItem( comboID ) {
  641. var comboObj = document.all.item(comboID);
  642. var comboItemNodeSet = comboObj.choices.itemset.attribute("nodeset");
  643. model.removenode(comboItemNodeSet + "[1]");
  644. model.refresh();
  645. }
  646. // --------------------------------------------------
  647. // 화면 Query 시 처리하는 함수
  648. // --------------------------------------------------
  649. function fCheckCartGubn() {
  650. var sCartGubn = model.getValue("/root/init/WorkData/cond/cartgubn"); // Cart구분 O:수술
  651. model.removeNodeset("/root/main/MnpmcartData/MnpmcartList");
  652. model.setValue("/root/init/WorkData/cond/anstkind" , "");
  653. model.setValue("/root/init/WorkData/cond/anstageflag", "");
  654. model.setValue(xPathInput + "/anstkind" , "");
  655. model.setValue(xPathInput + "/anstageflag", "");
  656. //cmb_anstkind.refresh();
  657. //cmb_anstageflag.refresh();
  658. if (sCartGubn == "O") {
  659. cap_dr.text = "집 도 의";
  660. cap_dept.text = "집 도 과";
  661. cap_in_dr.text = "집 도 의";
  662. cap_in_dept.text = "집 도 과";
  663. cmb_anstkind.disabled = true; //마취방법 비활성화
  664. cmb_anstageflag.disabled = true; //연령대 비활성화
  665. grd_anstcartlist.visible = flase;
  666. grd_cartlist.visible = true;
  667. model.setValue(xPathInput + "/anstopflag" , "");
  668. grp_dr.disabled = true;
  669. cmb_orddept.disabled = false;
  670. //grd_cartlist.colhidden(2) = false;
  671. //grd_cartlist.colhidden(4) = true;
  672. //grd_cartlist.colhidden(5) = true;
  673. model.removeNodeset("/root/init/drlist");
  674. fDeptCombo("011"); // 집도과
  675. addComboItem("cmb_orddept", "전 체", "", "above" );
  676. } else {
  677. cap_dr.text = "마 취 의";
  678. cap_dept.text = "마 취 과";
  679. cap_in_dr.text = "마 취 의";
  680. cap_in_dept.text = "마 취 과";
  681. cmb_anstkind.disabled = false; //마취방법 활성화
  682. cmb_anstageflag.disabled = false; //연령대 활성화
  683. grd_anstcartlist.visible = true;
  684. grd_cartlist.visible = false;
  685. grp_dr.disabled = false;
  686. cmb_orddept.disabled = true;
  687. //grd_cartlist.colhidden(2) = true;
  688. //grd_cartlist.colhidden(4) = false;
  689. //grd_cartlist.colhidden(5) = false;
  690. fDeptCombo("012"); // 마취과
  691. }
  692. fInputDataClear();
  693. var curtDate = getCurrentDate();
  694. var curtYYMM = curtDate.substr(0, 8);
  695. model.setValue("/root/init/WorkData/InputData/appdd", curtYYMM);//적용일자는 현재일로 셋팅
  696. cmb_orddept.selectedIndex = 1;
  697. fDrCombo(1, model.getValue("/root/init/WorkData/cond/orddept"));
  698. model.refresh();
  699. }
  700. //
  701. function fInputDataClear() {
  702. model.setValue(xPathInput + "/ccrtno" ,"" );
  703. model.setValue(xPathInput + "/orddeptcd" ,"" );
  704. model.setValue(xPathInput + "/perfid" ,"" );
  705. model.setValue(xPathInput + "/opcd" ,"" );
  706. model.setValue(xPathInput + "/appdd" ,"" );
  707. model.setValue(xPathInput + "/perfavgoptm" ,"" );
  708. model.setValue(xPathInput + "/perfavgdowntm","" );
  709. model.setValue(xPathInput + "/useflag" ,"Y" );
  710. model.setValue(xPathInput + "/recstat" ,"" );
  711. model.setValue(xPathInput + "/depthngnm" ,"" );
  712. model.setValue(xPathInput + "/usernm" ,"" );
  713. model.setValue(xPathInput + "/opkname" ,"" );
  714. model.setValue(xPathInput + "/anstkind" ,"" );
  715. model.setValue(xPathInput + "/anstageflag" ,"");
  716. model.setValue(xPathInput + "/anstopflag" ,"");
  717. model.setValue(xPathInput + "/copydr" ,"" );
  718. model.setValue(xPathInput + "/copydept" ,"" );
  719. model.setValue(xPathInput + "/nameflag" ,"" );
  720. model.setValue(xPathInput + "/copyflag" ,"" );
  721. grp_input.refresh();
  722. }
  723. // --------------------------------------------------
  724. // Grid 속성변경 처리하는 함수
  725. // --------------------------------------------------
  726. function fSetAttribute(pIdx) {
  727. var sWidth = tWidth[pIdx].split(",");
  728. for (i = 0; i < sWidth.length; i++) {
  729. grd_cartlist.colwidth(i+1) = sWidth[i];
  730. }
  731. }
  732. /* ------------------------------------------------- */
  733. /* SMMNP01500_Case Cart MASTER */
  734. /* */
  735. /* ------------------------------------------------- */
  736. /* group : EMR 간호 수술마취 */
  737. /* ver : 2008.10.14 */
  738. /* by : 김진명 */
  739. /* ------------------------------------------------- */
  740. /* SMMNP01500_Case Cart MASTER */
  741. /* */
  742. /* desc :수술명 사용 전환 */
  743. /* --------------------------------------------------*/
  744. function fConvertOP(useflag) {
  745. model.removenode("/root/send");
  746. var SendData = "ccrtno▦useflag";
  747. var ccrtno, cnt=0;
  748. for( var i = 0; i < grd_cartlist.rows; i++ ) {
  749. if( model.getValue("/root/main/MnpmcartData/MnpmcartList[" + i + "]/chk") == "true" ) {
  750. cnt++
  751. ccrtno = model.getValue("/root/main/MnpmcartData/MnpmcartList[" + i + "]/ccrtno")
  752. SendData = SendData + "▩" + ccrtno + "▦" + useflag;
  753. }
  754. }
  755. if( cnt > 0 ) {
  756. model.makeValue("/root/send/senddata", SendData);
  757. model.makeValue("/root/send/reqdata/orddeptcd" , model.getValue("/root/init/WorkData/cond/orddept" )); // 진료과코드
  758. model.makeValue("/root/send/reqdata/perfid" , model.getValue("/root/init/WorkData/cond/perfdr" )); // 집도의ID
  759. model.makeValue("/root/send/reqdata/useflag" , model.getValue("/root/init/WorkData/cond/useflag" )); // 사용여부
  760. model.makeValue("/root/send/reqdata/cartgubn" , model.getValue("/root/init/WorkData/cond/cartgubn" )); // Cart구분(O:수술,A:마취)
  761. model.makeValue("/root/send/reqdata/anstkind" , model.getValue("/root/init/WorkData/cond/anstkind" )); // 마취종류(코드정의서 M0017 참조)
  762. model.makeValue("/root/send/reqdata/anstageflag", model.getValue("/root/init/WorkData/cond/anstageflag")); // 수술마취나이구분(코드 M0246 참조)
  763. submit("TXMNP01501"); // 수술명 사용 전환
  764. }
  765. }
  766. /**
  767. * @desc : 수술소요 시간(hour)입력 정보 체크 및 수정
  768. * @
  769. * @param : 선택된 Row
  770. * @return :
  771. * @author : 김광성
  772. * @---------------------------------------------------
  773. */
  774. function fCheckUseHours(grdFlag, selRow){
  775. var hours;
  776. if(grdFlag == "original") hours = model.getValue(grd_cartlist.nodeset + "[" + selRow + "]/usehours");
  777. if(grdFlag == "copy") hours = model.getValue(grd_copyoplist.nodeset + "[" + selRow + "]/usehours");
  778. var addZeroHours = "0";
  779. if(isNull(hours) ){
  780. return addZeroHours.concat("0");
  781. }
  782. else if(hours.length < 2){
  783. return addZeroHours.concat(hours);
  784. }
  785. else{
  786. return hours;
  787. }
  788. }
  789. /* ------------------------------------------------- */
  790. /* ------End Of List ------------------------------- */
  791. /* -------------------------------------------------- */