SMMMR01003.xjs 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/**
  3. * SMMMR01003.js
  4. * SMMMR01003_BriefOpNoteJCI.xrw
  5. * -> 신규작성시 수술간호에서 수술정보를 조회해옴(asis는 기존의 brief기록정보를 로딩했음)
  6. */
  7. var arrItemCds = new Array(
  8. "0000515001"//수술일자
  9. , "0000980001"//집도의
  10. , "0000341001"//보조의
  11. , "0007983001"//수술전진단명
  12. , "0000521001"//수술후진단명
  13. , "0000509001"//수술명
  14. , "0000248001"
  15. // , "0000248.0015528"//마취종류(주) //0000248.0015528
  16. // , "0000248.0008458"//마취종류(부) //0000248.0008458
  17. , "0000512001"//OP Findings & Procedure
  18. , "0022906001"//출혈정도
  19. , "0008331001"//조직검사
  20. , "0000323001"//배액
  21. , "0036148001"//특이사항
  22. , "0001115001"//특이사항
  23. );
  24. //부분서식의 부모아이템 배열
  25. var gItemCds = new Array(
  26. "0007983001"//수술전진단명
  27. , "0000521001"//수술후진단명
  28. , "0000509001"//수술명
  29. , "0000512001"//OP Findings & Procedure
  30. , "0022906001"//출혈정도
  31. );
  32. var gItemCdsTextArea = new Array(
  33. "0000512001"//OP Findings & Procedure
  34. , "0022906001"//출혈정도
  35. );
  36. var gItemCdsXRWArea = new Array(
  37. "0007983001"//수술전진단명
  38. , "0000521001"//수술후진단명
  39. , "0000509001"//수술명
  40. , "0022906001"//출혈정도
  41. );
  42. //부분서식의 개수만큼 일단 '0'으로 채운다.
  43. var gPageIdx = new Array(0, 0);
  44. var iSurg = grup_base.ipt_surg.degnitemlevlcd;
  45. var iMcdnm = grup_base.ipt_mcdnm.degnitemlevlcd;
  46. var iScdnm = grup_base.ipt_scdnm.degnitemlevlcd;
  47. var operation = sysf_getGlobalVariable("operation").split("▩")[1];
  48. var pageInfo = new PAGEINFO();
  49. var oprsrvno = ""; //수술예약번호
  50. var perfdeptcd = ""; //집도과
  51. if(!utlf_isNull(operation)){
  52. oprsrvno = operation.split("▦")[0];
  53. perfdeptcd = operation.split("▦")[10];
  54. }
  55. /**
  56. * @desc : 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시를 위한 버튼목록
  57. * @id :
  58. * @authur : 안치원
  59. * @history : 2009.09.09 신규 안치원 ACW_090909A
  60. */
  61. var gExtnBtnIds = new Array(
  62. "btn_imge_0000512001" //OP Findings & Procedure 이미지버튼
  63. , "btn_etcrec_0000512001" //OP Findings & Procedure 추가기록버튼
  64. );
  65. var lodedYn = false;
  66. /****************************************************************************************
  67. * Function : fClearComnFormData
  68. * Description : 서식 데이터 Clear, 인터페이스 입력값 조회 입력
  69. ****************************************************************************************/
  70. function fClearComnFormData()
  71. {
  72. if (!utlf_isNull(gMaxSectionID))
  73. {
  74. frmf_inputEnterKey( "ComnFormObj.lbl_"+gMaxSectionID, "onclick", new ClickEventInfo);
  75. }
  76. sysf_trace("lodedYn : " + lodedYn );
  77. if( lodedYn == true )
  78. //ClearComnFormData(gItemCds);
  79. fInitialize();
  80. if (parent.fGetFormRec("status") == "C")
  81. {
  82. }
  83. //포커스 처리
  84. SetDefFocusIVW(gItemCdsTextArea);
  85. }
  86. /****************************************************************************************
  87. * Function : fLoadData
  88. * Description : 기록데이터 조회
  89. ****************************************************************************************/
  90. function fLoadData()
  91. {
  92. fInitialize();
  93. lf_setRecData(arrItemCds);
  94. var sStatus = fGetFormRec("status");
  95. lf_setBasicInfo(sStatus);
  96. // //Program 서식 데이터 조회반영
  97. // InitPgmFormData();
  98. // this.recRef2 = "/root/hidden/recinfo"
  99. // //부분서식 데이터 조회 반영
  100. // InitUnitFormData(gItemCds);
  101. }
  102. /****************************************************************************************
  103. * Function : fInitialize
  104. * Description : 화면 초기화
  105. ****************************************************************************************/
  106. function fInitialize()
  107. {
  108. gTermViewTopPos = 27;
  109. gTermViewHei = 307;//152
  110. gTermViewItems = gItemCdsXRWArea;
  111. }
  112. /****************************************************************************************
  113. * Function : fPatientHist
  114. * Description : 수술이력 팝업
  115. ****************************************************************************************/
  116. function fPatientHist()
  117. {
  118. frmf_modal("SMMMO02500", "SMMMO02500", null, null, null, null, null, null, null, null, null, null, "M");
  119. }
  120. /****************************************************************************************
  121. * Function : fSetRecItemValue
  122. * Description : 기록 인스턴스 연결
  123. ****************************************************************************************/
  124. function fSetRecItemValue(reciteminfo)
  125. {
  126. return SetCommMediFormValue(gItemCds, reciteminfo);
  127. }
  128. /****************************************************************************************
  129. * Function : fSetSizeFormDiag
  130. * Description : 수술전 진단명 사이즈 조절
  131. ****************************************************************************************/
  132. function fSetSizeFormDiag()
  133. {
  134. grup_base.ivw_0007983001.fInitPage(false, parseInt(grup_base.ivw_0007983001.position.height), parseInt(grup_base.ivw_0007983001.position.width), "ivw_0007983001", "수술전 진단명(Free text)");
  135. }
  136. /****************************************************************************************
  137. * Function : fSetSizeFormDiag1
  138. * Description : 수술후 진단명 사이즈 조절
  139. ****************************************************************************************/
  140. function fSetSizeFormDiag1()
  141. {
  142. grup_base.ivw_0000521001.fInitPage(false, parseInt(grup_base.ivw_0000521001.position.height), parseInt(grup_base.ivw_0000521001.position.width), "ivw_0000521001", "수술후 진단명(Free text)");
  143. }
  144. /****************************************************************************************
  145. * Function : fSetSizeFormOpr
  146. * Description : 서식 수술명 사이즈 조절
  147. ****************************************************************************************/
  148. function fSetSizeFormOpr()
  149. {
  150. grup_base.ivw_0000509001.fInitPage(false, parseInt(grup_base.ivw_0000509001.position.height), parseInt(grup_base.ivw_0000509001.position.width), "ivw_0000509001");
  151. }
  152. /*****************************************************************************
  153. 튜닝
  154. ******************************************************************************/
  155. var gLoadFormCnts = 0;
  156. /****************************************************************************************
  157. * Function : fFormReady
  158. * Description : 화면 로딩후 초기화 작업 수행
  159. ****************************************************************************************/
  160. function fFormReady()
  161. {
  162. this.ComnFormObj = this.grup_base;
  163. dsf_createDsRow("ds_temp_mainrecitem",
  164. [{col:"formxrw", val:""}]);
  165. // 공통서식의 초기 recitem 정보. 기록 데이터 조합시 사용
  166. ds_temp_mainrecitem.assign(ds_data_recitem);
  167. lf_setSectionSize(gItemCds, "grup_base.tar_0000512001", "grup_base.tar_0022906001", 294);
  168. //20080702 박종훈 추가
  169. fInitialize();
  170. InitBtnImge(gItemCdsTextArea);
  171. InitBtnEtcRec(gItemCdsTextArea);
  172. // InitBtnComn(gItemCdsTextArea);
  173. // dispOnLoadComplete(COMN_FORM);
  174. // lf_checkUnitForm(gItemCds); // 부분서식 로딩
  175. lf_AllLoadUnitFormExpand(gItemCds); // 전체 로드
  176. lf_setRecData(gItemCds);
  177. if (parent.fGetFormRec("status") == "C")
  178. {
  179. //20091211 dhkim 추가(수술과정 캡션 visible/hidden처리)
  180. if( lodedYn == true )
  181. fViewOPfindingsCaption_SMMMR01001("0000512001");
  182. else
  183. this.setTimer(1003, 500);
  184. }
  185. }
  186. /****************************************************************************************
  187. * Function : fLoadUnitForm
  188. * Description : 부분서식 로딩
  189. ****************************************************************************************/
  190. function fLoadUnitForm()
  191. {
  192. initSection(gItemCds);
  193. }
  194. var diagcnt = 0;
  195. /****************************************************************************************
  196. * Function : fOnLoadComplete
  197. * Description : 부분서식 로딩후 후처리
  198. ****************************************************************************************/
  199. function fOnLoadComplete()
  200. {
  201. var rtn = false;
  202. var curLoadFormCd = frmf_getParameter("loadformcd");
  203. frmf_setParameter("loadformcd", "");
  204. var nFindRow = ds_data_unitformmast.findRowExpr("formcd=='" + curLoadFormCd + "' && loaded != 'true'");
  205. var fstLevlItemCd = ds_data_unitformmast.getColumn(nFindRow, "orgsupdegnitemcd");
  206. var ivwObj = ComnFormObj.components["ivw_" + fstLevlItemCd];
  207. var unitformload = ds_data_unitformmast.getColumn(nFindRow, "loaded");
  208. if(!utlf_isNull(ivwObj) && unitformload != "true")
  209. {
  210. //setFstLevlItemCd(ivwObj, curLoadFormCd);
  211. var nRow = ds_data_unitformmast.findRow("formcd", curLoadFormCd);
  212. ds_data_unitformmast.setColumn(nRow, "loaded", "true");
  213. }
  214. //수술전진단명 부분서식 로딩후 처리
  215. if(fstLevlItemCd == '0007983001')
  216. {
  217. fSetSizeFormDiag();
  218. }
  219. //수술후진단명 부분서식 로딩후 처리
  220. if(fstLevlItemCd == '0000521001')
  221. {
  222. fSetSizeFormDiag1();
  223. }
  224. //수술명 부분서식 로딩후 처리
  225. if(fstLevlItemCd == '0000509001')
  226. {
  227. fSetSizeFormOpr();
  228. if (parent.fGetFormRec("status") == "C")
  229. {
  230. fClearComnFormData();
  231. }
  232. }
  233. gLoadFormCnts++;
  234. utlf_addLog("@@@@@ gItemCds.length : " + gItemCds.length + " gLoadFormCnts : " + gLoadFormCnts );
  235. if(gItemCds.length == gLoadFormCnts)
  236. {
  237. //fSetOprInfo();
  238. dispOnLoadComplete(UNIT_FORM);
  239. //서식 로딩 후 포커스 처리(2008-11-18 박종훈)
  240. SetDefFocusIVW(gItemCdsTextArea);
  241. //2010.01.11 dhkim - 마지막로딩후 수술일자 disable처리
  242. //ComnFormObj.ipt_surg.enable = false;
  243. }
  244. }
  245. /****************************************************************************************
  246. * Function : fGetDefData
  247. * Description : 동일 서식이 떠있을 경우 내부 인스턴스 로딩 후 디폴트 조회내용 조회
  248. ****************************************************************************************/
  249. function fGetDefData()
  250. {
  251. fSetSizeFormOpr();
  252. operation = sysf_getGlobalVariable("operation").split("▩")[1];
  253. if(!utlf_isNull(operation)){
  254. oprsrvno = operation.split("▦")[0];
  255. perfdeptcd = operation.split("▦")[10];
  256. }
  257. dispOnLoadComplete(UNIT_FORM);
  258. }
  259. /****************************************************************************************
  260. * Function : fRadioYN
  261. * Description : 라디오버튼 선택에 따른 reccnts셋팅
  262. ****************************************************************************************/
  263. function fRadioYN(obj:Radio, e:ItemChangeEventInfo)
  264. {
  265. var sDegnitemlevlcd = obj.degnitemlevlcd;
  266. var nFindRow = ds_data_recitem.findRow("degnitemlevlcd", sDegnitemlevlcd);
  267. if(nFindRow == -1)
  268. {
  269. nFindRow = ds_data_recitem.addRow();
  270. var insRow = ds_temp_mainrecitem.findRow("degnitemlevlcd", sDegnitemlevlcd);
  271. ds_data_recitem.copyRow(nFindRow, ds_temp_mainrecitem, insRow);
  272. }
  273. var sRectermnm = parent.ds_data_vallist.getColumn(parent.ds_data_vallist.findRow("valcd", e.postvalue), "valitemnm");
  274. if( utlf_isNull(sRectermnm) ) sRectermnm = e.posttext;
  275. ds_data_recitem.setColumn(nFindRow, "rectermcd", e.postvalue);
  276. ds_data_recitem.setColumn(nFindRow, "rectermnm", sRectermnm);
  277. }
  278. /**
  279. * @desc : 수술예약번호를 통한 진단명, 마취종류 조회
  280. * @
  281. * @param :
  282. * @return :
  283. * @---------------------------------------------------
  284. */
  285. function fGetdiagFormOprsrvno(oprsrvno, iMcdnm, iMcdnm, iScdnm, iScdnm)
  286. {
  287. if(oprsrvno != ""){
  288. model.removeNodeset("/root/main/diaginfo/diagcdlist");
  289. model.removenode("/root/send");
  290. model.makeValue("/root/send/oprsrvno", oprsrvno);
  291. //model.makeValue("/root/send/oprsrvno", "2007000009");
  292. submit("TRMRF04001", false);
  293. var anstmthdcd = model.getValue("/root/main/diaginfo/anstlist/anstmthdcd");
  294. var mcdnm = model.getValue("/root/main/diaginfo/anstlist/mcdnm");
  295. var anstmthdcdsub = model.getValue("/root/main/diaginfo/anstlist/anstmthdcdsub");
  296. var scdnm = model.getValue("/root/main/diaginfo/anstlist/scdnm");
  297. var pageInfo = new PAGEINFO();
  298. var iptMObj = document.controls("ipt_mcdnm");
  299. var iptSObj = document.controls("ipt_scdnm");
  300. if (anstmthdcd != "" && mcdnm != "")
  301. {
  302. //주마취
  303. model.setValue("/root/main/recinfo/recitem[degnitemlevlcd='" + iMcdnm + "']/rectermcd", anstmthdcd);
  304. model.setValue("/root/main/recinfo/recitem[degnitemlevlcd='" + iMcdnm + "']/rectermnm", mcdnm);
  305. iptMObj.attribute("ref") = pageInfo.recItemRef + "[degnitemlevlcd='" + iMcdnm + "']/rectermnm";
  306. }
  307. else
  308. {
  309. iptMObj.attribute("ref") = pageInfo.recItemRef + "[degnitemlevlcd='" + iMcdnm + "']/reccnts";
  310. }
  311. if (anstmthdcdsub != "" && scdnm != "")
  312. {
  313. //부마취
  314. model.setValue("/root/main/recinfo/recitem[degnitemlevlcd='" + iScdnm + "']/rectermcd", anstmthdcdsub);
  315. model.setValue("/root/main/recinfo/recitem[degnitemlevlcd='" + iScdnm + "']/rectermnm", scdnm);
  316. iptSObj.attribute("ref") = pageInfo.recItemRef + "[degnitemlevlcd='" + iScdnm + "']/rectermnm";
  317. }
  318. else
  319. {
  320. iptSObj.attribute("ref") = pageInfo.recItemRef + "[degnitemlevlcd='" + iScdnm + "']/reccnts";
  321. }
  322. copyNodeset("/root/main/diaginfo/diagcdlist", "/root/main/diaginfo/diagcdlist", "replace", ivw_0007983001.model, model);
  323. copyNodeset("/root/main/diaginfo/diagcdlist", "/root/main/diaginfo/diagcdlist", "replace", ivw_0000521001.model, model);
  324. model.refresh();
  325. ivw_0007983001.window.javascript.fSetDiagNmInstance();
  326. ivw_0000521001.window.javascript.fSetDiagNmInstance();
  327. return true;
  328. }else{
  329. messageBox("수술예약이 되지 않은 환자이거나 수술탭에서 선택하지 않은", "I005");
  330. grup_base.disabled = true;
  331. fBtnDisEnable(true);
  332. return false;
  333. }
  334. }
  335. /****************************************************************************************
  336. * Function : fBtnDisEnable
  337. * Description : 저장버튼 Disable
  338. ****************************************************************************************/
  339. function fBtnDisEnable(flag)
  340. {
  341. if(flag)
  342. {
  343. parent.fDisalbeSave(flag);
  344. }
  345. else
  346. {
  347. parent.fDisalbeSave(flag);
  348. }
  349. }
  350. /**
  351. * @desc : 수술명, 집도의 조회
  352. * @
  353. * @param :
  354. * @return :
  355. * @---------------------------------------------------
  356. */
  357. function fSrchOprPerfDrlist(oprsrvno, cOdt1)
  358. {
  359. model.removeNodeset("/root/tmpop/selectoplist");
  360. model.removeNodeset("/root/main/paminfo/list");
  361. var node = getGlobalVariable("paminfo");
  362. if(node != "" && node != null){
  363. setCSVToNode("/root/main/paminfo", node);
  364. model.removenode("/root/send");
  365. model.makeValue("/root/send/pid", model.getValue("/root/main/paminfo/list/pid"));
  366. model.makeValue("/root/send/cretno", model.getValue("/root/main/paminfo/list/cretno"));
  367. if (model.getValue("/root/main/paminfo/list/ioflag") == "O")
  368. {
  369. model.makeValue("/root/send/orddd", model.getValue("/root/main/paminfo/list/orddd"));
  370. }
  371. else
  372. {
  373. model.makeValue("/root/send/orddd", model.getValue("/root/main/paminfo/list/indd"));
  374. }
  375. model.makeValue("/root/send/oprsrvno", oprsrvno);
  376. model.makeValue("/root/send/srchmode", "dr");
  377. //model.removeNodeset("/root/main/recinfo/recitem[degnitemno = '1']");
  378. // alert("TRMRF04301서브밋전 oprsrvno:" + oprsrvno);
  379. if (submit("TRMRF04301"))
  380. {
  381. copyNodeset("/root/tmpop/selectoplist", "/root/tmpop/selectoplist", "replace", ivw_0000509001.model, model);
  382. ivw_0000509001.window.javascript.fAfterSrch();
  383. }
  384. //조회해온 수술일자, 수술시간으로 iviewer 상단 진료일자 변경
  385. if (submit("TRMRF04302"))
  386. {
  387. var perfdrnm = model.getValue("/root/tmp/perfdr/perfdrnm");
  388. var opfromdt = model.getValue("/root/tmp/perfdr/opfromdt");
  389. var sOpDrList = model.instances(0).selectNodes("/root/main/infstrec/recitem[fstlevlitemcd='0000341001']");
  390. var opstdd = opfromdt.substring(0, 8);
  391. var opsttm = opfromdt.substring(8, 12);
  392. //2010.02.03 dhkim - 수술기록 없을때 현재일자세팅하지 않음
  393. /*
  394. if (opstdd == "" || opstdd.length < 8)
  395. {
  396. opstdd = getCurrentDate();
  397. }
  398. */
  399. if (opsttm == "" || opsttm.length < 4)
  400. {
  401. opsttm = getCurrentTime().substr(0, 4);
  402. }
  403. //var transopdd = opstdd.substr(0, 4) + "-" + opstdd.substr(4, 2) + "-" + opstdd.substr(6, 2)
  404. //2010.02.03 dhkim - 수술기록 있을때만 일자세팅
  405. if(opstdd != "" && opstdd.length == 8){
  406. parent.window.javascript.fSetFormRec("formrecdd" , opstdd);
  407. parent.window.javascript.fSetFormRec("formrechm" , opsttm);
  408. parent.ipt_formrecdd.refresh();
  409. parent.ipt_formrectm.refresh();
  410. }
  411. opstdd = parent.window.javascript.fGetFormRec("formrecdd");
  412. model.setValue("/root/main/recinfo/recitem[degnitemlevlcd='" + iSurg + "']/reccnts", opstdd); //수술일
  413. model.setValue(pageInfo.recItemRef + "[degnitemlevlcd=0000980]/reccnts", perfdrnm); //집도의
  414. }
  415. /*
  416. //dhkim
  417. //보조의 조회해 text에 이름세팅
  418. model.removenode("/root/send");
  419. parent.window.javascript.fSetFormRec("oprsrvno", oprsrvno);
  420. model.makeValue("/root/send/reqinfstrec/pid", parent.window.javascript.fGetPamInfo("pid"));
  421. model.makeValue("/root/send/reqinfstrec/orddd", parent.window.javascript.fGetPamInfo("indd"));
  422. model.makeValue("/root/send/reqinfstrec/cretno", parent.window.javascript.fGetPamInfo("cretno"));
  423. model.makeValue("/root/send/reqinfstrec/oprsrvno", oprsrvno);
  424. if(submit('TRMMR01003')){
  425. //보조의
  426. var sOpDrList = model.instances(0).selectNodes("/root/main/infstrec/recitem[fstlevlitemcd='0000341001']");
  427. var sOpdegnitemlevlcd = "";
  428. var sOprectermcd = "";
  429. var sOprectermnm = "";
  430. var sOpreccnts = "";
  431. var sOpdegnitemnm = "";
  432. var sOpdegnitemkind = "";
  433. var sOprecrslt = "";
  434. for(var i = 0; i < sOpDrList.length; i++)
  435. {
  436. sOpdegnitemlevlcd = sOpDrList.item(i).selectSingleNode("degnitemlevlcd").text;
  437. sOprectermcd = sOpDrList.item(i).selectSingleNode("rectermcd").text;
  438. sOprectermnm = sOpDrList.item(i).selectSingleNode("rectermnm").text;
  439. sOpreccnts = sOpDrList.item(i).selectSingleNode("reccnts").text;
  440. sOpdegnitemnm = sOpDrList.item(i).selectSingleNode("degnitemnm").text;
  441. sOpdegnitemkind = sOpDrList.item(i).selectSingleNode("degnitemkind").text;
  442. if (sOprectermnm != "" && sOprecrslt == "")
  443. {
  444. sOprecrslt += sOprectermnm;
  445. }
  446. else if(sOprectermnm != "")
  447. {
  448. sOprecrslt += ", " + sOprectermnm;
  449. }
  450. else if(sOpreccnts != "")
  451. {
  452. sOprecrslt += ", " + sOpreccnts;
  453. }
  454. }
  455. //보조의
  456. model.setValue(pageInfo.recItemRef + "[degnitemlevlcd=0000980]/reccnts", perfdrnm);
  457. model.setValue(pageInfo.recItemRef + "[degnitemlevlcd=0000341]/reccnts", sOprecrslt);//보조의
  458. }
  459. */
  460. model.refresh();
  461. }
  462. }
  463. /****************************************************************************************
  464. * Function : fViewOPfindingsCaption_SMMMR01001
  465. * Description : OP Findings & Procedure에 데이터가 없을때 캡션을 보여준다.
  466. ****************************************************************************************/
  467. function fViewOPfindingsCaption_SMMMR01001(itemcd){
  468. if(itemcd == '0000512001'){//OP Findings & Procedure
  469. var tarid = ComnFormObj.components["tar_" + itemcd];
  470. var ivwid = ComnFormObj.components["ivw_" + itemcd];
  471. var capid = ComnFormObj.components["cap_" + itemcd];
  472. var tarVal = "";
  473. if(!utlf_isNull(ivwid) && !utlf_isNull(ivwid.url) && lodedYn == true){
  474. //tarVal = ivwid.ds_data_recitem.lookup("fstlevlitemcd", itemcd, "reccnts");
  475. tarVal = ivwid.ds_data_itemvalue.getColumn(0, "MTX_1");
  476. }
  477. if(utlf_isNull(tarVal)){
  478. capid.visible = true;
  479. tarid.visible = false;
  480. ivwid.visible = false;
  481. capid.bringToFront();
  482. }else{
  483. capid.visible = false;
  484. if( !utlf_isNull(ivwid) && !utlf_isNull(ivwid.url) ){
  485. tarid.visible = false;
  486. ivwid.visible = true;
  487. ivwid.bringToFront();
  488. }else{
  489. tarid.visible = true;
  490. ivwid.visible = false;
  491. tarid.bringToFront();
  492. }
  493. }
  494. }
  495. }
  496. /****************************************************************************************
  497. * Function : initFormAtLast_MMR01100I
  498. * Description : MMR01100.js에서 서식load를 완료한 후에 호출한다.
  499. ****************************************************************************************/
  500. function initFormAtLast_MMR01100I() {
  501. var formcd = parent.fGetFormMast("formcd");
  502. // XP 주석처리
  503. //fInitAnstTypeCtrl_MMR01001();//2010.01.18 dhkim - 콤보바인딩 후 연동데이터 세팅하도록 순서변경
  504. //신규서식로딩의 경우 && 진단 grid에 데이터 없을때만 Brief Op Note 연동
  505. // var nodesetCnt = getNodesetCnt(ivw_0007983001.model, ivw_0007983001.grd_diaglist.nodeset); //진단
  506. // if (nodesetCnt == 0 && parent.window.javascript.fGetFormRec("status") == "C") {
  507. if (parent.fGetFormRec("status") == "C") {
  508. var operation = sysf_getGlobalVariable("operation").split("▩")[1];
  509. var oprsrvno = "";
  510. if(!utlf_isNull(operation)){
  511. oprsrvno = operation.split("▦")[0];
  512. }
  513. //수술예약번호 체크
  514. if(utlf_isNull(oprsrvno))
  515. {
  516. sysf_messageBox("수술예약이 되지 않은", "I005");
  517. grup_base.enable = false;
  518. parent.initButtonLayer_MMR01100("no_auth");
  519. } else {
  520. parent.fSetFormRec("oprsrvno", oprsrvno);
  521. grup_base.enable = true;
  522. parent.initButtonLayer_MMR01100("staff_auth_n");
  523. }
  524. fGetRecIfData_MMR01001("opr;opdiag;opnm");
  525. } else {
  526. grup_base.enable = true;
  527. parent.initButtonLayer_MMR01100("staff_auth_n");
  528. lf_setBasicInfo("U");
  529. }
  530. }
  531. /****************************************************************************************
  532. * Function : fGetRecIfData_MMR01001
  533. * Description : Brief OP Note의 Data를 설정한다.
  534. ****************************************************************************************/
  535. function fGetRecIfData_MMR01001(infoflag) {
  536. if (utlf_isNull(parent.fGetFormRec("oprsrvno"))) {
  537. return;
  538. }
  539. ds_send_extninfo.clearData();
  540. var nRow = ds_send_extninfo.addRow();
  541. ds_send_extninfo.setColumn(nRow, "infoflag", infoflag);
  542. ds_send_extninfo.setColumn(nRow, "pid", parent.fGetFormRec("pid"));
  543. ds_send_extninfo.setColumn(nRow, "oprsrvno", parent.fGetFormRec("oprsrvno"));
  544. dsf_setDefaultVal(ds_send_extninfo, "dschdd:99991231");
  545. var oParam = {};
  546. oParam.id = "TRMMR01302";
  547. oParam.service = "medirecapp.RecIf";
  548. oParam.method = "reqGetFormRecExtnInfo";
  549. oParam.inds = "req=ds_send_extninfo";
  550. oParam.outds = "ds_main_extninfo_resultinfo=resultinfo ds_main_extninfo_staffauthinfo=staffauthinfo ds_main_extninfo_oprinfo=oprinfo "
  551. + "ds_main_extninfo_oplistinfo=oplistinfo ds_main_extninfo_recitem=recitem ds_main_extninfo_drlistinfo=drlistinfo "
  552. + "ds_data_diagcdlist=diagcdlist ds_main_extninfo_selectoplist=selectoplist ds_main_extninfo_dscinoutinfo=dscinoutinfo "
  553. + "ds_main_extninfo_rectextinfo=rectextinfo ds_main_extninfo_anstdrlistinfo=anstdrlistinfo ds_main_extninfo_oproomlistinfo=oproomlistinfo "
  554. + "ds_main_extninfo_recseqinfo=recseqinfo ds_main_extninfo_etcinfo=etcinfo";
  555. oParam.async = false;
  556. oParam.callback = "cf_TRMMR01302";
  557. tranf_submit(oParam);
  558. if(arErrorCode.pop("TRMMR01302") > -1)
  559. {
  560. var nRow = ds_main_extninfo_resultinfo.rowposition;
  561. var execInfoFlag = ds_main_extninfo_resultinfo.getColumn(nRow, "infoflag");
  562. if (execInfoFlag.indexOf("opr;") > -1) {
  563. //수술정보 설정
  564. //수술일자,진료일자
  565. var degnitemlevlcd = "";
  566. var nOprRow = ds_main_extninfo_oprinfo.rowposition;
  567. var opcnfmdd = ds_main_extninfo_oprinfo.getColumn(nOprRow, "opcnfmdd");
  568. var opcnfmhm = ds_main_extninfo_oprinfo.getColumn(nOprRow, "opcnfmhm");
  569. var nFindRow = ds_data_recitem.findRow("degnitemlevlcd", "0000515");
  570. ds_data_recitem.setColumn(nFindRow, "reccnts", opcnfmdd);
  571. grup_base.ipt_surg.value = opcnfmdd;
  572. //2010.01.11 dhkim - 진료일자,진료시간 세팅
  573. parent.fSetFormRec("formrecdd", opcnfmdd);
  574. parent.fSetFormRec("formrechm", opcnfmhm);
  575. //집도의 설정
  576. var drNames = fMakeDrNames_MMR01001(new Array("perfdrnm", "perfdrnm2", "perfdrnm3"));
  577. nFindRow = ds_data_recitem.findRow("degnitemlevlcd", "0000980");
  578. ds_data_recitem.setColumn(nFindRow, "reccnts", drNames);
  579. grup_base.ipt_odt1.value = drNames;
  580. //보조의 설정
  581. drNames = fMakeDrNames_MMR01001(new Array("assdrnm", "assdrnm2", "assdrnm3", "assdrnm4"));
  582. nFindRow = ds_data_recitem.findRow("degnitemlevlcd", "0000341");
  583. ds_data_recitem.setColumn(nFindRow, "reccnts", drNames);
  584. grup_base.ipt_sdt1.value = drNames;
  585. //2010.01.18 dhkim - 주마취, 부마취를 무조건 rectermcd, rectermnm과 연동하도록 변경
  586. //주마취 설정
  587. var anstmthdcd = ds_main_extninfo_oprinfo.getColumn(nOprRow, "anstmthdcd");
  588. var anstmthdnm = ds_main_extninfo_oprinfo.getColumn(nOprRow, "anstmthdnm");
  589. if(!utlf_isNull(anstmthdcd)){
  590. anstmthdcd = "-";
  591. }
  592. grup_base.ipt_mcdnm.value = anstmthdnm;
  593. degnitemlevlcd = grup_base.ipt_mcdnm.degnitemlevlcd;
  594. nFindRow = ds_data_recitem.findRow("degnitemlevlcd", degnitemlevlcd); //0000248.0015528
  595. ds_data_recitem.setColumn(nFindRow, "rectermcd", anstmthdcd);
  596. ds_data_recitem.setColumn(nFindRow, "rectermnm", anstmthdnm);
  597. //부마취 설정
  598. var anstmthdcdsub = ds_main_extninfo_oprinfo.getColumn(nOprRow, "anstmthdcdsub");
  599. var anstmthdcdsubnm = ds_main_extninfo_oprinfo.getColumn(nOprRow, "anstmthdcdsubnm");
  600. if(!utlf_isNull(anstmthdcdsub)){
  601. anstmthdcdsub = "-";
  602. }
  603. grup_base.ipt_scdnm.value = anstmthdcdsubnm;
  604. degnitemlevlcd = grup_base.ipt_scdnm.degnitemlevlcd;
  605. nFindRow = ds_data_recitem.findRow("degnitemlevlcd", degnitemlevlcd); //0000248.0008458
  606. ds_data_recitem.setColumn(nFindRow, "rectermcd", anstmthdcdsub);
  607. ds_data_recitem.setColumn(nFindRow, "rectermnm", anstmthdcdsubnm);
  608. }
  609. if (execInfoFlag.indexOf("opdiag;") > -1 && lodedYn == true) {
  610. //수술진단 설정
  611. // copyNodeset("/root/main/diaginfo/diagcdlist", "/root/main/extninfo/diagcdlist", "replace", ivw_0007983001.model, model);
  612. // copyNodeset("/root/main/diaginfo/diagcdlist", "/root/main/extninfo/diagcdlist", "replace", ivw_0000521001.model, model);
  613. grup_base.ivw_0007983001.fSetDiagNmInstance();
  614. grup_base.ivw_0000521001.fSetDiagNmInstance();
  615. }
  616. if (execInfoFlag.indexOf("opnm;") > -1 && lodedYn == true) {
  617. //수술명설정
  618. if( !grup_base.ivw_0000509001.isValidObject("ds_tmpop_selectoplist") )
  619. grup_base.ivw_0000509001.dsf_createDs("ds_tmpop_selectoplist");
  620. grup_base.ivw_0000509001.ds_tmpop_selectoplist.copyData(ds_main_extninfo_selectoplist);
  621. grup_base.ivw_0000509001.fAfterSrch();
  622. }
  623. if( lodedYn == true )
  624. fViewOPfindingsCaption_SMMMR01001('0000512001');
  625. else
  626. this.setTimer(1003, 500);
  627. //fViewOPfindingsCaption_SMMMR01001('0022906001');
  628. var sStatus = fGetFormRec("status");
  629. lf_setBasicInfo(sStatus); //수술 정보 기록데이터 세팅
  630. }
  631. lodedYn = true; // 로드 시점 처리
  632. }
  633. function cf_TRMMR01302(sSvcId, nErrorCode, sErrorMsg) {
  634. arErrorCode.push(sSvcId, nErrorCode);
  635. if(nErrorCode < 0) return;
  636. dsf_setDefaultVal(ds_main_extninfo_recitem, "recitemno:'',degnitemno:'',supdegnitemno:''");
  637. dsf_setTypeFormat(ds_main_extninfo_recitem, "recitemno:INT^degnitemno:INT^supdegnitemno:INT");
  638. }
  639. /****************************************************************************************
  640. * Function : fMakeDrNames_MMR01001
  641. * Description : Arr 에 대한 값을 리턴
  642. ****************************************************************************************/
  643. function fMakeDrNames_MMR01001(arr) {
  644. var buf = "";
  645. for (var i=0; i<arr.length; i++) {
  646. var nm = ds_main_extninfo_oprinfo.getColumn(0, arr[i]);
  647. if (utlf_isNull(nm)) {
  648. break;
  649. } else {
  650. buf += nm;
  651. if (i<arr.length-1 && !utlf_isNull(ds_main_extninfo_oprinfo.getColumn(0, arr[i+1]))) {
  652. buf += ", ";
  653. }
  654. }
  655. }
  656. return buf;
  657. }
  658. /* jw.choe 주석처리
  659. function fInitAnstTypeCtrl_MMR01001() {
  660. //2010.01.18 dhkim - 마취바인딩 무조건 rectermcd, rectermnm으로 변경
  661. var anstmthdcd = "";
  662. var mcdnm = "";
  663. var anstmthdcdsub = "";
  664. var scdnm = "";
  665. //주마취
  666. var node = model.instance1.selectSingleNode(gPageInfo.recItemRef2+"[degnitemlevlcd='0000248.0015528']");
  667. if (node != null) {
  668. anstmthdcd = node.getXPathString("rectermcd");
  669. mcdnm = node.getXPathString("rectermnm");
  670. }
  671. //부마취
  672. node = model.instance1.selectSingleNode(gPageInfo.recItemRef2+"[degnitemlevlcd='0000248.0008458']");
  673. if (node != null) {
  674. anstmthdcdsub = node.getXPathString("rectermcd");
  675. scdnm = node.getXPathString("rectermnm");
  676. }
  677. var pageInfo = new PAGEINFO();
  678. var iptMObj = document.controls("ipt_mcdnm");
  679. var iptSObj = document.controls("ipt_scdnm");
  680. if(anstmthdcd == null || anstmthdcd == ""){
  681. anstmthdcd = "-";
  682. }
  683. if(anstmthdcdsub == null || anstmthdcdsub == ""){
  684. anstmthdcdsub = "-";
  685. }
  686. //주마취
  687. model.setValue("/root/main/recinfo/recitem[degnitemlevlcd='" + iMcdnm + "']/rectermcd", anstmthdcd);
  688. model.setValue("/root/main/recinfo/recitem[degnitemlevlcd='" + iMcdnm + "']/rectermnm", mcdnm);
  689. iptMObj.attribute("ref") = pageInfo.recItemRef + "[degnitemlevlcd='" + iMcdnm + "']/rectermnm";
  690. //부마취
  691. model.setValue("/root/main/recinfo/recitem[degnitemlevlcd='" + iScdnm + "']/rectermcd", anstmthdcdsub);
  692. model.setValue("/root/main/recinfo/recitem[degnitemlevlcd='" + iScdnm + "']/rectermnm", scdnm);
  693. iptSObj.attribute("ref") = pageInfo.recItemRef + "[degnitemlevlcd='" + iScdnm + "']/rectermnm";
  694. iptMObj.refresh();
  695. iptSObj.refresh();
  696. }
  697. */
  698. /****************************************************************************************
  699. * Function : fChkPreSave
  700. * Description : 저장전 체크 로직
  701. ****************************************************************************************/
  702. function fChkPreSave()
  703. {
  704. var nFindRow = "";
  705. // [요청번호:20161230015] 수술관련 기록인증 제어여부(일반의사)
  706. if( lf_getHardCDList("Y", 9976, 3 , null) == "Y" ){
  707. var arrOdSd = ["ipt_odt1", "ipt_sdt1"];
  708. var objItem = null;
  709. for(var i=0; i<arrOdSd.length; i++){
  710. objItem = grup_base.components[arrOdSd[i]];
  711. if(!utlf_isNull(objItem)){
  712. var degnitemlevlcd = objItem.degnitemlevlcd;
  713. nFindRow = ds_data_recitem.findRow("degnitemlevlcd", degnitemlevlcd);
  714. var drNames = ds_data_recitem.getColumn(nFindRow, "reccnts");
  715. if( !utlf_isNull(drNames) && drNames.indexOf("일반의사") > -1){
  716. sysf_messageBox("집도의/보조의는 [일반의사]가 불가능합니다.", "E");
  717. return false;
  718. }
  719. }
  720. }
  721. }
  722. //2010.01.18 dhkim 마취종류 주, 부 필수체크
  723. //(degnitemkind='STX'이나 데이터는 rectermcd, rectermnm에 들어가므로 EMRCommon.js에서 필수체크할수 없음)
  724. //주마취
  725. nFindRow = ds_data_recitem.findRow("degnitemlevlcd", grup_base.ipt_mcdnm.degnitemlevlcd); //iMcdnm
  726. var anstmthdcd = ds_data_recitem.getColumn(nFindRow, "rectermcd");
  727. var anstmthdnm = ds_data_recitem.getColumn(nFindRow, "rectermnm");
  728. //default값세팅
  729. if(utlf_isNull(anstmthdcd)){
  730. anstmthdcd = "-";
  731. ds_data_recitem.setColumn(nFindRow, "rectermcd", anstmthdcd);
  732. }
  733. if(utlf_isNull(anstmthdnm)){
  734. sysf_messageBox("마취종류(주)는 필수 입력입니다.", "E");
  735. return false;
  736. }
  737. //부마취
  738. nFindRow = ds_data_recitem.findRow("degnitemlevlcd", grup_base.ipt_scdnm.degnitemlevlcd); //iScdnm
  739. var anstmthdcdsub = ds_data_recitem.getColumn(nFindRow, "rectermcd");
  740. var anstmthdcdsubnm = ds_data_recitem.getColumn(nFindRow, "rectermnm");
  741. //default값세팅
  742. if(utlf_isNull(anstmthdcdsub)){
  743. anstmthdcdsub = "-";
  744. ds_data_recitem.setColumn(nFindRow, "rectermcd", anstmthdcdsub);
  745. }
  746. if(utlf_isNull(anstmthdcdsubnm)){
  747. sysf_messageBox("마취종류(부)는 필수 입력입니다.", "E");
  748. return false;
  749. }
  750. //특이사항 여부 관련 체크
  751. if (grup_base.radio3.value == "0001347001" && !utlf_isNull(grup_base.textarea10.value)) {
  752. sysf_messageBox("특이사항 여부가 [N] 으로 체크되었지만 특이사항이 입력되었습니다","E");
  753. return false;
  754. }
  755. if (grup_base.radio3.value == "0001965001" && utlf_isNull(grup_base.textarea10.value)) {
  756. sysf_messageBox("특이사항 여부가 [Y] 으로 체크되었지만 특이사항이 없습니다","E");
  757. return false;
  758. }
  759. var pageInfo = new PAGEINFO();
  760. //수술전진단명
  761. nFindRow = ds_data_formdegn.findRow("degnitemcd", "0007983001");
  762. var itemNm = ds_data_formdegn.getColumn(nFindRow, "itemnm");
  763. var rtnVal = grup_base.ivw_0007983001.fChkGrdPreSave(true, itemNm);
  764. if(rtnVal == false){
  765. return rtnVal;
  766. }else{
  767. //수술후진단명
  768. nFindRow = ds_data_formdegn.findRow("degnitemcd", "0000521001");
  769. itemNm = ds_data_formdegn.getColumn(nFindRow, "itemnm");
  770. return grup_base.ivw_0000521001.fChkGrdPreSave(true, itemNm);
  771. }
  772. }
  773. /****************************************************************************************
  774. * Function : getSubmitID_MMR01300I
  775. * Description : MMR01300.js에서 submit직전에 submitID를 설정하기 위해서 호출한다.
  776. ****************************************************************************************/
  777. function getSubmitID_MMR01300I() {
  778. parent.fSetFormRec("xsltflag", "JCI");//통합기록조회용 JCI구분자추가
  779. return TX_SUBMIT_EXTN_FORM;
  780. }
  781. ]]></Script>