MMR00302.xjs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/**
  3. * MMR00302.js
  4. * SMMMR00302_외래경과JCI.xrw
  5. * 이윤주 수정
  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"//Careplan
  31. );
  32. var gItemCdsTextArea = new Array(
  33. "0000969001"//통증
  34. , "0008224001"//S&O
  35. , "0001129001"//A
  36. , "0000080001"//Careplan
  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. * Function : fFormReady
  59. * Description : 화면 로드시 초기화 작업을 수행
  60. *******************************************************************/
  61. function fFormReady()
  62. {
  63. this.ComnFormObj = this.grup_base;
  64. dsf_createDsRow("ds_temp_mainrecitem",
  65. [{col:"formxrw", val:""}]);
  66. // 공통서식의 초기 recitem 정보. 기록 데이터 조합시 사용
  67. ds_temp_mainrecitem.assign(ds_data_recitem);
  68. //섹션사이즈초기화
  69. lf_setSectionSize(gItemCds, "grup_base.tar_0000969001", "grup_base.tar_0000080001");
  70. // lf_checkUnitForm(gItemCds); // 부분서식 로딩
  71. lf_AllLoadUnitFormExpand(gItemCds); // 전체 로딩
  72. //기본 첫번째 부분서식을 로딩해서 보여준다.
  73. //dispOnLoadComplete(COMN_FORM);//COMN_FORM : 1
  74. //기존 Careplan hidden
  75. CarePlanInvisible();
  76. // MMRcommon.xjs
  77. lf_setRecData(gItemCds);
  78. }
  79. /**
  80. * @desc : 기록데이터 조회
  81. * @id :
  82. * @event : xforms-ready
  83. * @return : void
  84. * @authur : 박종훈
  85. */
  86. function fLoadData()
  87. {
  88. lf_setRecData(gItemCds);
  89. /*
  90. InitPgmFormData();
  91. InitUnitFormData(gItemCds);
  92. */
  93. }
  94. /**
  95. * @desc : 부분서식 불러오기
  96. * @id :
  97. * @event : onloadcomplete
  98. * @return : void
  99. * @authur : 박종훈
  100. */
  101. function fLoadUnitForm()
  102. {
  103. initSection(gItemCds);
  104. }
  105. /**
  106. * @desc : 부분서식이 로딩 완료 되었을때 발생하는 이벤트
  107. * @id :
  108. * @event : xforms-ready
  109. * @return : void
  110. * @authur : 박종훈
  111. */
  112. function fOnLoadComplete()
  113. {
  114. var curLoadFormCd = this.frmf_getParameter("loadformcd");
  115. var objExt = new ExtCommon();
  116. var arrUnitformmast = objExt.findRows(ds_data_unitformmast, "formcd", curLoadFormCd);
  117. var fstLevlItemCd = "";
  118. for (var i=0; i<arrUnitformmast.length; i++) {
  119. var unitformload = ds_data_unitformmast.getColumn(arrUnitformmast[i], "loaded");
  120. if (unitformload != "true") {
  121. fstLevlItemCd = ds_data_unitformmast.getColumn(arrUnitformmast[i], "orgsupdegnitemcd");
  122. var ivwObj = ComnFormObj.components["ivw_" + fstLevlItemCd];
  123. if(!utlf_isNull(ivwObj))
  124. {
  125. var idx = ds_data_unitformmast.findRow("orgsupdegnitemcd", fstLevlItemCd );
  126. ds_data_unitformmast.setColumn(idx, "loaded", "true");
  127. // setFstLevlItemCdOnUnitForm(ivwObj, unitformmastDs.getColumn(i, "orgsupdegnitemno"));//부분서식의 아이템에 부분서식 상위코드를 세팅
  128. break;
  129. }
  130. }
  131. }
  132. if (fstLevlItemCd == "0022826001") {//care plan
  133. fSetSizeFormCC(fstLevlItemCd);
  134. }
  135. gLoadFormCnts++;
  136. utlf_addLog("@@@@@ gItemCds.length : " + gItemCds.length + " gLoadFormCnts : " + gLoadFormCnts );
  137. if(gItemCds.length == gLoadFormCnts)
  138. {
  139. dispOnLoadComplete(UNIT_FORM);
  140. //서식 로딩 후 포커스 처리
  141. if (parent.fGetFormRec("status") == "C")
  142. {
  143. SetDefFocusMTX(gItemCds);
  144. }
  145. }
  146. }
  147. /**
  148. * @group :
  149. * @ver : 2008.11.28
  150. * @by : jonghun
  151. * @---------------------------------------------------
  152. * @type : function
  153. * @access : private
  154. * @desc : 동일 서식이 떠있을 경우 내부 인스턴스 로딩 후 디폴트 조회내용 조회
  155. * @param :
  156. * @return :
  157. * @---------------------------------------------------
  158. */
  159. function fGetDefData()
  160. {
  161. utlf_addLog("***** fGetDefData() MMR00302 ****");
  162. dispOnLoadComplete(UNIT_FORM);
  163. if (parent.fGetFormRec("status") == "C")
  164. {
  165. SetDefFocusMTX(gItemCds);
  166. }
  167. }
  168. /**
  169. * @desc : 서식 주호소 화면 로딩 후 사이즈 조절
  170. * care plan 화면 로딩 후 사이즈 조절
  171. * 퇴원계획화면 로딩 후 사이즈 조절
  172. * @id :
  173. * @event : xforms-ready
  174. * @return : void
  175. * @authur : dhkim
  176. */
  177. function fSetSizeFormCC(gItemCd_MMR00301)
  178. {
  179. //Care Plan 화면 로딩
  180. if(gItemCd_MMR00301 == "0022826001")//care plan 상용구 hidden
  181. grup_base.ivw_0022826001.fInitPage(true, parseInt(grup_base.ivw_0022826001.position.height), parseInt(grup_base.ivw_0022826001.position.width));
  182. }
  183. /**
  184. * @group :
  185. * @ver : 2009.12.04
  186. * @by : dhkim
  187. * @---------------------------------------------------
  188. * @type : function
  189. * @access : private
  190. * @desc : 부분서식 로딩
  191. * (0022826001) Care Plan
  192. * @param : gItemCds
  193. * @return :
  194. * @---------------------------------------------------
  195. */
  196. function loadUnitForm_MMR00301(itemCds){
  197. var pageInfo = new PAGEINFO();
  198. copyNodeset("/root/main", "/root/main", "replace", model, parent.model);
  199. model.removeNodeset("/root/main/recinfo");
  200. makeRefByDegnitemno();
  201. for (var i = 0; i < itemCds.length; i++)
  202. {
  203. var formdegnseq = model.getValue(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+itemCds[i]+"']/formdegnseq");
  204. var unitformcd = model.getValue(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+itemCds[i]+"']/formcd");
  205. var ivwObj = document.controls("ivw_" + itemCds[i]);
  206. var tarObj = document.controls("tar_" + itemCds[i]);
  207. if(itemCds[i] == "0022826001") //care plan
  208. {
  209. ivwObj.visible = true;
  210. tarObj.visible = false;
  211. var unitformprogflag = model.getValue(pageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+itemCds[i]+"']/formprogflag");
  212. ivwObj.attribute("supdegnitemcd") = itemCds[i];
  213. ivwObj.attribute("unitformcd") = unitformcd;
  214. model.addLog(unitformcd + " Loading 시작 : " + getCurrentTime());
  215. loadUnitForm(ivwObj, itemCds[i]);
  216. model.addLog(unitformcd + " Loading 끝 : " + getCurrentTime());
  217. }
  218. }
  219. }
  220. /**
  221. * @desc : care plan ivw 확대
  222. * @
  223. * @param :
  224. * @return :
  225. * @authur : dhkim
  226. */
  227. function expandSection_MMR00301(obj){
  228. var ctrlID = obj.name;
  229. var itemcd = ctrlID.replace("lbl_", "");
  230. var bFold = itemcd == gMaxSectionID ? true : false;
  231. var ctrl = null;
  232. var unitformcd = "";
  233. var itemCds = gItemCds;
  234. for (var i = 0; i < itemCds.length; i++)
  235. {
  236. var secCtrl = ComnFormObj.components["lbl_" + itemCds[i]];
  237. var nFindRow = ds_data_unitformmast.findRow("orgsupdegnitemcd", itemCds[i]);
  238. var formdegnseq = ds_data_unitformmast.getColumn(nFindRow, "formdegnseq");
  239. unitformcd = ds_data_unitformmast.getColumn(nFindRow, "formcd");
  240. if(utlf_isNull(formdegnseq))
  241. ctrl = ComnFormObj.components["tar_" + itemCds[i]];
  242. else
  243. ctrl = ComnFormObj.components["ivw_" + itemCds[i]];
  244. //2010.01.14 dhkim ivw 축소/확장
  245. if(itemcd == itemCds[i]){
  246. if(bFold){
  247. ctrl.position.height = gMaxSectionHei;
  248. if (unitformcd == "0900006875")//care plan 상용구 hidden
  249. {
  250. ctrl.fInitPage(true, parseInt(gMaxSectionHei), parseInt(ctrl.position.width));
  251. }else{
  252. ctrl.fInitPage(false, parseInt(gMaxSectionHei), parseInt(ctrl.position.width));
  253. }
  254. }else{
  255. ctrl.position.height = ctrl.position.orgheight;
  256. if (unitformcd == "0900006875")//care plan 상용구 hidden
  257. {
  258. ctrl.fInitPage(true, parseInt(secCtrl.orgheight), parseInt(ctrl.position.width));
  259. }else{
  260. ctrl.fInitPage(false, parseInt(secCtrl.orgheight), parseInt(ctrl.position.width));
  261. }
  262. }
  263. }
  264. }
  265. }
  266. /**
  267. * @desc : 서식 데이터 Clear
  268. * @id :
  269. * @event : xforms-ready
  270. * @return : void
  271. * @authur : 박종훈
  272. */
  273. function fClearComnFormData()
  274. {
  275. utlf_addLog("***** fClearComnFormData() MMR00302 *****");
  276. if (!utlf_isNull(gMaxSectionID))
  277. {
  278. var MaxObj = this.components["lbl_" + gMaxSectionID];
  279. var MaxObjNm = "lbl_" + gMaxSectionID;
  280. var e = new ClickEventInfo;
  281. frmf_inputEnterKey(MaxObjNm, "onclick", e);
  282. //MaxObj.dispatch("onclick");
  283. }
  284. ClearComnFormData(gItemCds);
  285. lf_clearData();
  286. //포커스 처리
  287. SetDefFocusMTX(gItemCds);
  288. }
  289. /**
  290. * @desc : 기록 인스턴스 연결
  291. * @id :
  292. * @event : xforms-ready
  293. * @return : void
  294. * @authur : 박종훈
  295. */
  296. function fSetRecItemValue(reciteminfo)
  297. {
  298. return SetCommMediFormValue(gItemCds, reciteminfo);
  299. }
  300. /*******************************************************************
  301. * Function : getSubmitID_MMR01300I
  302. * Description : MMR01300.js에서 submit직전에 submitID를 설정하기 위해서 호출한다.
  303. *******************************************************************/
  304. function getSubmitID_MMR01300I() {
  305. parent.fSetFormRec("addexecflag", "careplan");
  306. //2010.02.23 dhkim - 통합기록조회용 JCI구분자추가(fSetXsltFlag없애고 getSubmitID_MMR01300I로 이동)
  307. parent.fSetFormRec("xsltflag", "JCI2");
  308. return TX_SUBMIT_EXTN_FORM;
  309. }
  310. /*******************************************************************
  311. * Function : initFormAtLast_MMR01100I
  312. * Description : MMR01100.js에서 서식load를 완료한 후에 호출한다.
  313. *******************************************************************/
  314. function initFormAtLast_MMR01100I() {
  315. utlf_addLog("***** initFormAtLast_MMR01100I MMR00302 *****");
  316. //2010.01.15 dhkim - 섹션종류가 부분서식인 섹션에 붙어있는 버튼 hidden 처리
  317. //섹션별 버튼초기화
  318. InitBtnImge(gItemCds);
  319. InitBtnFmy(gItemCds);
  320. // InitBtnComn(gItemCds);
  321. InitBtnDiag("0001129001", "Y");
  322. InitBtnPrcp("0000080001", "Y");
  323. InitBtnEtcRec(gItemCds);
  324. //grup_base.ivw_0022826001.fAddrow();
  325. //2010.01.21, hkjoo
  326. // initCmbExtnList(gItemCds);
  327. }
  328. //0000969
  329. /*******************************************************************
  330. * Function : fChkPreSave
  331. * Description : 저장전 필수입력내역을 체크한다.
  332. * History : - (care plan)
  333. * - (통증)추가 2010.01.18
  334. *******************************************************************/
  335. function fChkPreSave(){
  336. utlf_addLog("***** fChkPreSave() MMR00302 저장전 서식 필수입력내역 체크 *****");
  337. //2010.01.15 안치원 - 통증기록 필수입력 체크
  338. if (utlf_isNull(grup_base.ivw_0000969001.url) == false) {
  339. // debugger;
  340. var isValid = true;
  341. var degnitemnm = null;
  342. var itemval_vas = new ITEMVAL();
  343. //통증
  344. var degnitemlevlcd = "0000969";
  345. var itemval_pain = grup_base.ivw_0000969001.getFormItemValue(degnitemlevlcd);
  346. if (itemval_pain.rectermcd == "0002277001") {
  347. //무
  348. //통증점수 제거
  349. itemval_vas.rectermcd = "INI";
  350. ivw_0000969001.setFormItemValue("0001099", itemval_vas);
  351. } else if (itemval_pain.rectermcd == "0003770001") {
  352. //유
  353. //통l증 점수
  354. degnitemlevlcd = "0001099";
  355. itemval_vas = grup_base.ivw_0000969001.getFormItemValue(degnitemlevlcd);
  356. if (utlf_isNull(itemval_vas.rectermcd)) {
  357. degnitemnm = "통증 점수"
  358. isValid = false;
  359. } else if (parseInt(itemval_vas.rectermnm) >= 4) {
  360. //통증점수 4이상일때 필수입력
  361. //부위
  362. degnitemlevlcd = "0000360";
  363. isValid = ! fIsNullValue_MMR00301(degnitemlevlcd, "cnts");
  364. //양상
  365. if (isValid) {
  366. degnitemlevlcd = "0001952";
  367. //var cnt = getNodesetCnt(ivw_0000969001.window.model, "/root/main/recinfo/recitem[degnitemlevlcd = '"+degnitemlevlcd+"' and rectermcd != '']");
  368. var cnt = grup_base.ivw_0000969001.ds_data_recitem.getCaseCount("degnitemlevlcd == '"+degnitemlevlcd+"' && !utlf_isNull(rectermcd");
  369. if (cnt == 0) {
  370. isValid = false;
  371. }
  372. }
  373. //기간
  374. if (isValid) {
  375. degnitemlevlcd = "0000951";
  376. isValid = ! fIsNullValue_MMR00301(degnitemlevlcd, "cnts");
  377. }
  378. //빈도
  379. if (isValid) {
  380. degnitemlevlcd = "0000393";
  381. isValid = ! fIsNullValue_MMR00301(degnitemlevlcd, "cd");
  382. }
  383. }
  384. } else if (itemval_pain.rectermcd == "0022237001") {
  385. //확인불가
  386. degnitemlevlcd = "0000969";
  387. itemval_vas = grup_base.ivw_0000969001.getFormItemValue(degnitemlevlcd);
  388. if (utlf_isNull(itemval_vas.reccnts)) {
  389. degnitemnm = "확인불가의 상세내역"
  390. isValid = false;
  391. }
  392. } else {
  393. isValid = false;
  394. }
  395. if (isValid == false) {
  396. if (utlf_isNull(degnitemnm)) {
  397. var node = grup_base.ivw_0000969001.ds_data_recitem.lookup("degnitemlevlcd", degnitemlevlcd, "degnitemnm");
  398. degnitemnm = node;
  399. }
  400. sysf_messageBox("필수 입력항목(통증-" + degnitemnm + ")이 입력되지", "E007");
  401. return isValid;
  402. }
  403. }
  404. //care plan
  405. var itemNm = ds_data_formdegn.lookup("degnitemcd", "0022826001", "itemnm"); //pageInfo.formdegnRef
  406. utlf_addLog("@@@@@ itemNm : " + itemNm + " *****");
  407. var rtnVal = grup_base.ivw_0022826001.fChkGrdPreSave(itemNm);
  408. if(rtnVal == false){
  409. return rtnVal;
  410. }
  411. }
  412. /*******************************************************************
  413. * Function : fIsNullValue_MMR00301
  414. * Description : 통증기록 validation 체크 추가
  415. *******************************************************************/
  416. function fIsNullValue_MMR00301(degnitemlevlcd, field) {
  417. var itemval_vas = grup_base.ivw_0000969001.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. /*******************************************************************
  427. * Function : fOpenTestTemplate
  428. * Description : 외래경과 검사결과 화면 호출
  429. *******************************************************************/
  430. function fOpenTestTemplate(degnitemlevlcd, degnitemcd){
  431. frmf_setParameter("SPMMR09001_degnitemlevlcd",degnitemlevlcd);
  432. frmf_setParameter("SPMMR09001_degnitemcd",degnitemcd);
  433. //modal("SPMMR09001");
  434. frmf_modal("SPMMR09001", "SPMMR09001", null, null, null, null, null, null, null, null, null, null, "M");
  435. }
  436. /*******************************************************************
  437. * Function : CarePlanInvisible
  438. * Description : 기존 CarePlan invisible 20140116 이윤주
  439. *******************************************************************/
  440. function CarePlanInvisible() {
  441. grup_base.ivw_0022826001.visible = false;
  442. }]]></Script>