MMR00302.js 14 KB

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