MMR00301.xjs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[
  3. /**
  4. * MMR00301.js
  5. * SMMMR00301_외래경과JCI.xrw
  6. */
  7. /**
  8. * @desc : [item코드목록]
  9. * "0000969001"//통증
  10. * "0008224001"//S&O
  11. * "0001129001"//A
  12. * "0000080001"//P
  13. * "0022826001"//Careplan
  14. * [버튼목록]
  15. * "btn_imge_0008224001" //S&O 이미지버튼
  16. * "btn_fmy_0008224001" //S&O 가계도버튼
  17. * "btn_etcrec_0008224001" //S&O 추가기록버튼
  18. * "btn_diag_0001129001" //A 진단버튼
  19. * "btn_imge_0001129001" //A 이미지버튼
  20. * "btn_etcrec_0001129001" //A 추가기록버튼
  21. * "btn_prcp_0000080001" //P 처방버튼
  22. * "btn_imge_0000080001" //P 이미지버튼
  23. * "btn_etcrec_0000080001" //P 추가기록버튼
  24. */
  25. var gItemCds = new Array(
  26. "0022826001"//Careplan
  27. , "0000969001"//통증
  28. , "0008224001"//S&O
  29. , "0001129001"//A
  30. , "0000080001"//P
  31. );
  32. var gItemCdsTextArea = new Array(
  33. "0000969001"//통증
  34. , "0008224001"//S&O
  35. , "0001129001"//A
  36. , "0000080001"//P
  37. , "0022826001"//Careplan
  38. );
  39. /**
  40. * @desc : 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시를 위한 버튼목록
  41. * @id :
  42. * @authur : 안치원
  43. * @history : 2009.09.09 신규 안치원 ACW_090909A
  44. */
  45. var gExtnBtnIds = new Array(
  46. "btn_imge_0008224001" //S&O 이미지버튼
  47. , "btn_fmy_0008224001" //S&O 가계도버튼
  48. , "btn_etcrec_0008224001" //S&O 추가기록버튼
  49. , "btn_diag_0001129001" //A 진단버튼
  50. , "btn_imge_0001129001" //A 이미지버튼
  51. , "btn_etcrec_0001129001" //A 추가기록버튼
  52. , "btn_prcp_0000080001" //P 처방버튼
  53. , "btn_imge_0000080001" //P 이미지버튼
  54. , "btn_etcrec_0000080001" //P 추가기록버튼
  55. );
  56. var gLoadFormCnts = 0;
  57. /**
  58. * @group :
  59. * @ver : 2008.06.13
  60. * @by : snoweye
  61. * @---------------------------------------------------
  62. * @type : function
  63. * @access : private
  64. * @desc : 화면 로드시 초기화 작업을 수행
  65. * @param :
  66. * @return :
  67. * @---------------------------------------------------
  68. */
  69. function fFormReady()
  70. {
  71. //섹션사이즈초기화
  72. setSectionSize(gItemCds, 0, 683);
  73. //기본 첫번째 부분서식을 로딩해서 보여준다.
  74. dispOnLoadComplete(COMN_FORM);//COMN_FORM : 1
  75. //폼레디 완료 후 MMRCommon.js의 initSection()에서 로딩되지 않은 부분서식 로딩한다.
  76. //loadUnitForm_MMR00301(gItemCds);
  77. }
  78. /**
  79. * @desc : 기록데이터 조회
  80. * @id :
  81. * @event : xforms-ready
  82. * @return : void
  83. * @authur : 박종훈
  84. */
  85. function fLoadData()
  86. {
  87. InitPgmFormData();
  88. InitUnitFormData(gItemCds);
  89. }
  90. /**
  91. * @desc : 부분서식 불러오기
  92. * @id :
  93. * @event : onloadcomplete
  94. * @return : void
  95. * @authur : 박종훈
  96. */
  97. function fLoadUnitForm()
  98. {
  99. initSection(gItemCds);
  100. }
  101. /**
  102. * @desc : 부분서식이 로딩 완료 되었을때 발생하는 이벤트
  103. * @id :
  104. * @event : xforms-ready
  105. * @return : void
  106. * @authur : 박종훈
  107. */
  108. function fOnLoadComplete()
  109. {
  110. sysf_trace_emr("***** fOnLoadComplete() MMR00301 ******");
  111. var curLoadFormCd = frmf_getParameter("loadformcd");
  112. sysf_trace_emr(" curLoadFormCd : " + curLoadFormCd );
  113. var unitformmastDs = this.objects[gPageInfo.forminfoRef + "_unitformmast"];
  114. var filterStr = "formcd=='" + curLoadFormCd + "'";
  115. var nodeCnt = unitformmastDs.getCaseCount(filterStr);
  116. if( nodeCnt > 0 ){
  117. dsf_createDs("tmp_unitformmastDs");
  118. unitformmastDs.filter(filterStr);
  119. tmp_unitformmastDs.copyData(unitformmastDs, true);
  120. unitformmastDs.filter("");
  121. }
  122. var fstLevlItemCd = "";
  123. for (var i=0; i<nodeCnt; i++) {
  124. var unitformload = tmp_unitformmastDs.getColumn(i, "loaded");
  125. sysf_trace_emr(" unitformload : " + unitformload );
  126. if (unitformload != "true") {
  127. fstLevlItemCd = tmp_unitformmastDs.getColumn(i, "orgsupdegnitemcd");
  128. sysf_trace_emr(" fstLevlItemCd : " + fstLevlItemCd );
  129. var ivwObj = this.components["ivw_" + fstLevlItemCd];
  130. if(!utlf_isNull(ivwObj))
  131. {
  132. var idx = unitformmastDs.findRow("orgsupdegnitemcd", fstLevlItemCd );
  133. unitformmastDs.setColumn(idx, "loaded", "true");
  134. setFstLevlItemCdOnUnitForm(ivwObj, unitformmastDs.getColumn(i, "orgsupdegnitemno"));//부분서식의 아이템에 부분서식 상위코드를 세팅
  135. break;
  136. }
  137. }
  138. }
  139. if (fstLevlItemCd == "0022826001") {//care plan
  140. fSetSizeFormCC(fstLevlItemCd);
  141. }
  142. gLoadFormCnts++;
  143. if(gItemCds.length == gLoadFormCnts)
  144. {
  145. dispOnLoadComplete(UNIT_FORM);
  146. //서식 로딩 후 포커스 처리
  147. if (parent.fGetFormRec("status") == "C")
  148. {
  149. SetDefFocusMTX(gItemCds);
  150. }
  151. }
  152. }
  153. /**
  154. * @group :
  155. * @ver : 2008.11.28
  156. * @by : jonghun
  157. * @---------------------------------------------------
  158. * @type : function
  159. * @access : private
  160. * @desc : 동일 서식이 떠있을 경우 내부 인스턴스 로딩 후 디폴트 조회내용 조회
  161. * @param :
  162. * @return :
  163. * @---------------------------------------------------
  164. */
  165. function fGetDefData()
  166. {
  167. dispOnLoadComplete(UNIT_FORM);
  168. if (parent.fGetFormRec("status") == "C")
  169. {
  170. SetDefFocusMTX(gItemCds);
  171. }
  172. }
  173. /**
  174. * @desc : 서식 주호소 화면 로딩 후 사이즈 조절
  175. * care plan 화면 로딩 후 사이즈 조절
  176. * 퇴원계획화면 로딩 후 사이즈 조절
  177. * @id :
  178. * @event : xforms-ready
  179. * @return : void
  180. * @authur : dhkim
  181. */
  182. function fSetSizeFormCC(gItemCd_MMR00301)
  183. {
  184. //Care Plan 화면 로딩
  185. if(gItemCd_MMR00301 == "0022826001")//care plan 상용구 hidden
  186. ivw_0022826001.fInitPage(true, parseInt(ivw_0022826001.position.height), parseInt(ivw_0022826001.position.width));
  187. }
  188. /**
  189. * @group :
  190. * @ver : 2009.12.04
  191. * @by : dhkim
  192. * @---------------------------------------------------
  193. * @type : function
  194. * @access : private
  195. * @desc : 부분서식 로딩
  196. * (0022826001) Care Plan
  197. * @param : gItemCds
  198. * @return :
  199. * @---------------------------------------------------
  200. */
  201. function loadUnitForm_MMR00301(itemCds){
  202. var pageInfo = new PAGEINFO();
  203. copyNodeset("/root/main", "/root/main", "replace", model, parent.model);
  204. model.removeNodeset("/root/main/recinfo");
  205. makeRefByDegnitemno();
  206. for (var i = 0; i < itemCds.length; i++)
  207. {
  208. var formdegnseq = model.getValue(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+itemCds[i]+"']/formdegnseq");
  209. var unitformcd = model.getValue(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+itemCds[i]+"']/formcd");
  210. var ivwObj = document.controls("ivw_" + itemCds[i]);
  211. var tarObj = document.controls("tar_" + itemCds[i]);
  212. if(itemCds[i] == "0022826001") //care plan
  213. {
  214. ivwObj.visible = true;
  215. tarObj.visible = false;
  216. var unitformprogflag = model.getValue(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+itemCds[i]+"']/formprogflag");
  217. ivwObj.attribute("supdegnitemcd") = itemCds[i];
  218. ivwObj.attribute("unitformcd") = unitformcd;
  219. model.addLog(unitformcd + " Loading 시작 : " + getCurrentTime());
  220. loadUnitForm(ivwObj, itemCds[i]);
  221. model.addLog(unitformcd + " Loading 끝 : " + getCurrentTime());
  222. }
  223. }
  224. }
  225. /**
  226. * @desc : care plan ivw 확대
  227. * @
  228. * @param :
  229. * @return :
  230. * @authur : dhkim
  231. */
  232. function expandSection_MMR00301(){
  233. var ctrlID = event.target;
  234. var itemcd = ctrlID.replace("lbl_", "");
  235. var bFold = itemcd == gMaxSectionID ? true : false;
  236. var ctrl = null;
  237. var unitformcd = "";
  238. var itemCds = gItemCds;
  239. for (var i = 0; i < itemCds.length; i++)
  240. {
  241. var secCtrl = document.controls("lbl_" + itemCds[i]);
  242. var formdegnseq = model.getValue(gPageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+itemCds[i]+"']/formdegnseq");
  243. unitformcd = model.getValue(gPageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+itemCds[i]+"']/formcd");
  244. if(formdegnseq == "")
  245. ctrl = document.controls("tar_" + itemCds[i]);
  246. else
  247. ctrl = document.controls("ivw_" + itemCds[i]);
  248. //2010.01.14 dhkim ivw 축소/확장
  249. if(itemcd == itemCds[i]){
  250. if(bFold){
  251. ctrl.attribute("height") = gMaxSectionHei;
  252. if (unitformcd == "0900006875")//care plan 상용구 hidden
  253. {
  254. ctrl.window.javascript.fInitPage(true, parseInt(gMaxSectionHei), parseInt(ctrl.attribute("width")));
  255. }else{
  256. ctrl.window.javascript.fInitPage(false, parseInt(gMaxSectionHei), parseInt(ctrl.attribute("width")));
  257. }
  258. }else{
  259. ctrl.attribute("height") = ctrl.attribute("orgheight");
  260. if (unitformcd == "0900006875")//care plan 상용구 hidden
  261. {
  262. ctrl.window.javascript.fInitPage(true, parseInt(ctrl.attribute("orgheight")), parseInt(ctrl.attribute("width")));
  263. }else{
  264. ctrl.window.javascript.fInitPage(false, parseInt(ctrl.attribute("orgheight")), parseInt(ctrl.attribute("width")));
  265. }
  266. }
  267. }
  268. }
  269. }
  270. /**
  271. * @desc : 서식 데이터 Clear
  272. * @id :
  273. * @event : xforms-ready
  274. * @return : void
  275. * @authur : 박종훈
  276. */
  277. function fClearComnFormData()
  278. {
  279. sysf_trace_emr("***** fClearComnFormData() MMR00301 *****");
  280. if (!utlf_isNull(gMaxSectionID))
  281. {
  282. var MaxObj = this.components["lbl_" + gMaxSectionID];
  283. frmf_inputEnterKey("lbl_" + gMaxSectionID, "onclick", new ClickEventInfo);
  284. //MaxObj.dispatch("onclick");
  285. }
  286. ClearComnFormData(gItemCds);
  287. clearData();
  288. //포커스 처리
  289. SetDefFocusMTX(gItemCds);
  290. }
  291. /**
  292. * @desc : 기록 인스턴스 연결
  293. * @id :
  294. * @event : xforms-ready
  295. * @return : void
  296. * @authur : 박종훈
  297. */
  298. function fSetRecItemValue(reciteminfo)
  299. {
  300. return SetCommMediFormValue(gItemCds, reciteminfo);
  301. }
  302. /**
  303. * 20091230 dhkim MMR00401.js의 펑션 copy 추가
  304. * MMR01300.js에서 submit직전에 submitID를 설정하기 위해서 호출한다.
  305. * @return
  306. */
  307. function getSubmitID_MMR01300I() {
  308. parent.fSetFormRec("addexecflag", "careplan");
  309. //2010.02.23 dhkim - 통합기록조회용 JCI구분자추가(fSetXsltFlag없애고 getSubmitID_MMR01300I로 이동)
  310. parent.fSetFormRec("xsltflag", "JCI");
  311. return TX_SUBMIT_EXTN_FORM;
  312. }
  313. /**
  314. * 20091230 dhkim MMR00401.js의 펑션 copy후 modify 추가
  315. * MMR01100.js에서 서식load를 완료한 후에 호출한다.
  316. * @return
  317. */
  318. function initFormAtLast_MMR01100I() {
  319. //2010.01.15 dhkim - 섹션종류가 부분서식인 섹션에 붙어있는 버튼 hidden 처리
  320. //섹션별 버튼초기화
  321. InitBtnImge(gItemCds);
  322. InitBtnFmy(gItemCds);
  323. InitBtnComn(gItemCds);
  324. InitBtnDiag("0001129001", "Y");
  325. InitBtnPrcp("0000080001", "Y");
  326. InitBtnEtcRec(gItemCds);
  327. ivw_0022826001.fAddrow();
  328. //2010.01.21, hkjoo
  329. initCmbExtnList(gItemCds);
  330. }
  331. /**
  332. * @ver : 2010.01.06 dhkim
  333. * @desc : 저장전 필수입력내역을 체크한다.
  334. * - (care plan)
  335. * - (통증)추가 2010.01.18
  336. */
  337. function fChkPreSave(){
  338. //2010.01.15 안치원 - 통증기록 필수입력 체크
  339. if (isNull(ivw_0000969001.src) == false) {
  340. // debugger;
  341. var isValid = true;
  342. var degnitemnm = null;
  343. var itemval_vas = new ITEMVAL();
  344. //통증
  345. var degnitemlevlcd = "0000969.0000969";
  346. var itemval_pain = ivw_0000969001.window.javascript.getFormItemValue(degnitemlevlcd);
  347. if (itemval_pain.rectermcd == "0002277001") {
  348. //무
  349. //통증점수 제거
  350. ivw_0000969001.window.javascript.setFormItemValue("0000969.0001099", itemval_vas);
  351. } else if (itemval_pain.rectermcd == "0003770001") {
  352. //유
  353. //통증 점수
  354. degnitemlevlcd = "0000969.0001099";
  355. itemval_vas = ivw_0000969001.window.javascript.getFormItemValue(degnitemlevlcd);
  356. if (itemval_vas.rectermcd == "") {
  357. degnitemnm = "통증 점수"
  358. isValid = false;
  359. } else if (parseInt(itemval_vas.rectermnm) >= 4) {
  360. //통증점수 4이상일때 필수입력
  361. //부위
  362. degnitemlevlcd = "0000969.0000360";
  363. isValid = ! fIsNullValue_MMR00301(degnitemlevlcd, "cnts");
  364. //양상
  365. if (isValid) {
  366. degnitemlevlcd = "0000969.0001952";
  367. var cnt = getNodesetCnt(ivw_0000969001.window.model, "/root/main/recinfo/recitem[degnitemlevlcd = '"+degnitemlevlcd+"' and rectermcd != '']");
  368. if (cnt == 0) {
  369. isValid = false;
  370. }
  371. }
  372. //기간
  373. if (isValid) {
  374. degnitemlevlcd = "0000969.0000951";
  375. isValid = ! fIsNullValue_MMR00301(degnitemlevlcd, "cnts");
  376. }
  377. //빈도
  378. if (isValid) {
  379. degnitemlevlcd = "0000969.0000393";
  380. isValid = ! fIsNullValue_MMR00301(degnitemlevlcd, "cd");
  381. }
  382. }
  383. } else if (itemval_pain.rectermcd == "0022237001") {
  384. //확인불가
  385. degnitemlevlcd = "0000969.0000969";
  386. itemval_vas = ivw_0000969001.window.javascript.getFormItemValue(degnitemlevlcd);
  387. if (itemval_vas.reccnts == "") {
  388. degnitemnm = "확인불가의 상세내역"
  389. isValid = false;
  390. }
  391. //통증점수 제거
  392. //ivw_0000969001.window.javascript.setFormItemValue("0000969.0001099", itemval_vas);
  393. } else {
  394. isValid = false;
  395. }
  396. if (isValid == false) {
  397. if (degnitemnm == null) {
  398. var node = ivw_0000969001.window.model.instance1.selectSingleNode("/root/main/recinfo/recitem[degnitemlevlcd = '"+degnitemlevlcd+"']/degnitemnm");
  399. degnitemnm = node.text;
  400. }
  401. messageBox("필수 입력항목(통증-" + degnitemnm + ")이 입력되지", "E007");
  402. return isValid;
  403. }
  404. }
  405. //care plan
  406. var pageInfo = new PAGEINFO();
  407. var itemNm = model.instances(0).selectSingleNode(pageInfo.formdegnRef + "[degnitemcd = '0022826001']").getXPathString("itemnm");
  408. var rtnVal = ivw_0022826001.window.javascript.fChkGrdPreSave(itemNm);
  409. if(rtnVal == false){
  410. return rtnVal;
  411. }
  412. }
  413. /**
  414. * 2010.01.18 dhkim 통증기록 validation 체크 추가
  415. */
  416. function fIsNullValue_MMR00301(degnitemlevlcd, field) {
  417. var itemval_vas = ivw_0000969001.window.javascript.getFormItemValue(degnitemlevlcd);
  418. var val = "";
  419. if (field == "cd") {
  420. val = itemval_vas.rectermcd;
  421. } else if (field == "cnts") {
  422. val = itemval_vas.reccnts;
  423. }
  424. return isNull(val);
  425. }
  426. function fOpenTestTemplate(degnitemlevlcd, degnitemcd){
  427. setParameter("SPMMR09001_degnitemlevlcd",degnitemlevlcd);
  428. setParameter("SPMMR09001_degnitemcd",degnitemcd);
  429. modal("SPMMR09001");
  430. }]]></Script>