MMOCommon.xjs 79 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************************
  3. * System Name :
  4. * Job Name : EMR
  5. * File Name : MMOCommon.xjs
  6. * Creator : 윤지현
  7. * Make Date : 2014.04.17
  8. *
  9. * Description : 진료 공통 메서드
  10. *--------------------------------------------------------------------------------------------------
  11. * Modify Date Modifier Modify Description
  12. *--------------------------------------------------------------------------------------------------
  13. *
  14. ***************************************************************************************************/
  15. /********************************************************************************************************************/
  16. /************************* 진료파트 공통함수 목록 *********************************************************************/
  17. /********************************************************************************************************************/
  18. //lf_compareNodeVal : 두 Dataset을 비교하여 결과에 따라 true, false를 return한다.
  19. //cbf_getEMRLoadingInfo : 처방 정보 비동기(Ajax) 호출 후 CallBack 함수
  20. //lf_aftGetEMRLoadingInfo : 처방 정보 비동기(Ajax) 호출 후 이벤트 후처리
  21. //lf_getDrJobComboInfo : 로그인시 읽어온 message 중 의사직종코드를 불러옴
  22. //lf_gethardcdArrayList : 하드코드 조회 배열을 이용하여 한번의 Submit 이용하기
  23. //lf_getHardCDList : 조회된 하드코드 리스트를 조회한다.
  24. //lf_getArrayData : 구분자로 분리된 특정자료를 Reading
  25. //lf_getLoadingStatus : 처방화면 Main loading 여부를 세팅
  26. //lf_setLoadingStatus : 처방화면 Main loading 여부를 세팅
  27. //lf_initWndTitle : 화면타이틀을 설정한다
  28. //lf_mmbfGetDeptCodeComboList : 부서 콤보 조회
  29. //lf_mmbfGetSubDeptComboList : 세부과리스트 조회
  30. //lf_mmbfGetUserComboList : EMR사용자콤보 조회
  31. //lf_mmbfGetUserEnvQuestValue : 사용자 환경설정의 값을 조회한다.
  32. //lf_mmofReqGetCnstTypeComboList : 협진분류콤보조회
  33. //lf_reqGetDeptList : 부서리스트 조회
  34. //lf_reqOpRoomList : 수술방 조회
  35. //lf_prcpModal : 팝업위치가 저장되지 않는 팝업 띄우기
  36. //lf_prcpOpenMon : 팝업위치가 저장되지 않는 팝업 모달 띄우기(모니터 번호 선택 가능)
  37. //lf_chkPrcpModi : 환자 변경시 저장하지 않은 처방 여부체크해서 저장여부 Alert
  38. //lf_addDrChk : 가산의 체크
  39. //lf_chngAddDr : 가산의 변경
  40. //lf_getTopPatientinfo : 상단의 dataset 참조 / 복사
  41. //emr_setGrdDragAnDropRowMove : 그리드의 행(row)을 마우스 Drag & Drop으로 원하는 위치(RowPosition)로 이동
  42. //lf_fitSizeGrid : 그리드 size를 데이터 길이와 너비에 맞게 변경시켜준다.
  43. //lf_setGridStatus : 데이터의 상태를 변경한다.(신규, 삭제)
  44. //lf_appendChildPatientInfo : 상단의 인스턴스에서 Dataset 복사
  45. //lf_getBindCellName : 그리드에서 컬럼 인덱스로 바인드된 데이터셋의 컬럼명을 가져온다.
  46. //lf_setDsDefaultValue : 데이터셋에 Default값을 넣어준다.
  47. //lf_reqPatInfo : 환자의 기초정보를 조회한다.(pid, hngnm)
  48. //lf_dateFormat : 날짜의 모양을 바꾼다.
  49. //lf_chkColumnSetData : 그리드 체크값에 따라 컬럼값을 변경한다
  50. //lf_getArrayData : 구분자로 분리된 배열에서 해당 행, 열의 데이터 조회
  51. //lf_makePrcpSrchDs : 처방 조회 시 outds가 없다면 자동 생성한다.
  52. //lf_setCheckboxProperty : 일괄입력 화면들에서 체크 박스 클릭시에 대한 공통 동작 정의
  53. //include "com_commodulexp::SMZFS00501.xjs"
  54. /***************************************************************************************************
  55. * Function : lf_compareNodeVal
  56. * Description : 두 Dataset을 비교하여 결과에 따라 true, false를 return한다.
  57. * Argument : oDescDs [Dataset : 목적노드]
  58. * : oSrcDs [Dataset : 원본노드]
  59. * return type : Boolean[true/false]
  60. * Creator :
  61. ***************************************************************************************************/
  62. function lf_compareNodeVal(oDescDs, oSrcDs)
  63. {
  64. // 컬럼 갯수가 다른 경우 true
  65. if (oDescDs.colcount != oSrcDs.colcount) return true;
  66. for (var i=0 ; i<oDescDs.colcount ; i++) {
  67. var oColInfo = oDescDs.getColumnInfo(i);
  68. var desValue = oDescDs.getColumn(0, oColInfo.name);
  69. var srcValue = oSrcDs.getColumn(0, oColInfo.name);
  70. // 값이 다른 경우 true
  71. if (desValue != srcValue)
  72. return true;
  73. }
  74. return false; // 값이 같은 경우 false
  75. }
  76. /***************************************************************************************************
  77. * Function : cbf_getEMRLoadingInfo
  78. * Description : 처방 정보 비동기(Ajax) 호출 후 CallBack 함수
  79. * Argument : sSvcId
  80. * : nErrorCode
  81. * : sErrorMsg
  82. * return type :
  83. * Creator :
  84. ***************************************************************************************************/
  85. function cbf_getEMRLoadingInfo(sSvcId, nErrorCode, sErrorMsg)
  86. {
  87. /*
  88. lv_sSpeedTestText += "\n" + "속도체크3-1. cbf_getEMRLoadingInfo 시작: " + lf_getCurrentDateString();
  89. if (nErrorCode != 0) return;
  90. var chkStatus, ioflag;
  91. switch (sSvcId) {
  92. case "TRMMO04310" :
  93. ioflag = "O";
  94. break;
  95. case "TRMMO04311" :
  96. ioflag = lgv_ioFlag;
  97. break;
  98. case "TRMMO04312" :
  99. ioflag = "OP";
  100. if(ds_inpatpaminfo.rowcount>0){
  101. ds_etcpatpaminfo.copyData(ds_inpatpaminfo);
  102. }else if(ds_outpatpaminfo.rowcount>0){
  103. ds_etcpatpaminfo.copyData(ds_outpatpaminfo);
  104. }
  105. break;
  106. }
  107. // [TFT] moon 20120522 : 환자 정보에 의한 디폴트 서식 조회 후 화면(서식) open에 따른 후처리
  108. lf_aftGetEMRLoadingInfo(ioflag);
  109. */
  110. }
  111. /***************************************************************************************************
  112. * Function : lf_aftGetEMRLoadingInfo
  113. * Description : 처방 정보 비동기(Ajax) 호출 후 이벤트 후처리
  114. * Argument : ioflag
  115. * return type :
  116. * Creator :
  117. ***************************************************************************************************/
  118. function lf_aftGetEMRLoadingInfo(ioflag)
  119. {
  120. var viewerObj = frmf_getViewer("patientInfo");
  121. viewerObj.lv_sSpeedTestText += "\n" + "속도체크3-2. lf_aftGetEMRLoadingInfo 시작: " + lf_getCurrentDateString();
  122. // [TFT] moon 20120523 : 이전로직 위치 -> fGetEMRLoadingInfo() 함수의 마지막 부분
  123. dsf_createDsRow("ds_initdata", [{col:"loadflag", type:"string", size:256, val:"Y"},
  124. {col:"loaddate", type:"string", size:256, val:utlf_getCurrentDate()},
  125. {col:"loadtime", type:"string", size:256, val:utlf_getCurrentTime()}]);
  126. var oPatientInfo = frmf_getViewer("patientInfo");
  127. if (oPatientInfo.objects["ds_loadinginfo"] == null) {
  128. var oLoadDs = new Dataset();
  129. oPatientInfo.addChild("ds_loadinginfo", oLoadDs);
  130. oLoadDs.name = "ds_loadinginfo";
  131. }
  132. oPatientInfo.ds_loadinginfo.copyData(ds_initdata);
  133. for (var i=0 ; i<arrInitDataDsList.length ; i++) {
  134. var sDsNm = oPatientInfo.dsf_createDs("ds_"+arrInitDataDsList[i]);
  135. oPatientInfo.objects[sDsNm].clearData();
  136. oPatientInfo.objects[sDsNm].copyData(this.objects[sDsNm]);
  137. //trace(oPatientInfo.objects[sDsNm].saveXML());
  138. }
  139. //trace("lf_aftGetEMRLoadingInfo - copyData(viewerObj.root.loadinginfo, root.initdata)");
  140. // // [TFT] moon 20120523 : 이전로직 위치 -> SMMMO04200_외래환자리스트.xrw 더블 클릭 시 fGetEMRLoadingInfo() 호출 후 부분
  141. // if (lf_chkBfPrcpLoad(ioflag) == false ) {
  142. // return;
  143. // }
  144. //
  145. // // 2013-01-16 2013-01-16 오후 10:44:29 강지훈 수정 : 기록의 변경내역이 있는지 체크하여 저장 시킨다.
  146. // if (!fchkRecModi()) {
  147. // return;
  148. // }
  149. //
  150. // // 환자 변경 시 처방변경 내역이 있는지 체크하여 저장한다.
  151. // lf_chkPrcpModi(ioflag);
  152. if (ioflag == "O") lf_selectOutPat();
  153. if (ioflag == "I") lf_selectInPat();
  154. if (ioflag == "E") lf_selectERPat();
  155. if (ioflag == "T") lf_selectOpPat();
  156. }
  157. /***************************************************************************************************
  158. * Function : lf_getDrJobComboInfo
  159. * Description : 로그인시 읽어온 message 중 의사직종코드를 불러옴
  160. * Argument :
  161. * return type : sDrJobcd 에러시 하드코드 목록에서 조회
  162. * Creator :
  163. ***************************************************************************************************/
  164. function lf_getDrJobComboInfo()
  165. {
  166. var oSrcDs = emr_getOrderBaseInfo("drjobcomboinfo"); // 시스템의 하단 프레임 폼
  167. var sDrJobcd = null;
  168. var sDrJobNode = null;
  169. if (oSrcDs != null) {
  170. if (sDrJobNode == null) {
  171. sDrJobcd = lf_getHardCDList("Y", 301, 3);
  172. }
  173. else {
  174. sDrJobcd = sDrJobNode.text;
  175. }
  176. }
  177. else {
  178. sDrJobcd = lf_getHardCDList("Y", 301, 3);
  179. }
  180. return sDrJobcd;
  181. }
  182. /***************************************************************************************************
  183. * Function : lf_gethardcdArrayList
  184. * Description : 하드코드 조회 배열을 이용하여 한번의 Submit 이용하기
  185. * Argument : aHardCdList [Array : 위치할 최하위 인스턴스명 |(구분자) 하드코드 번호]
  186. * : sRsltDsList [Dataset : 하드코드 내용을 담을 대상 데이타셋]
  187. * Ex) dsf_createDs("ds_reqphardcdno", []);
  188. * dsf_createDs("ds_npdeptcd", []);
  189. * dsf_createDs("ds_hardcdno", []);
  190. * dsf_createDs("ds_opdrugresn", []);
  191. *
  192. * lf_gethardcdArrayList(new Array("reqphardcdno|138", "npdeptcd|104", "hardcdno|63", "opdrugresn|76"),
  193. * new Array("ds_reqphardcdno", "ds_npdeptcd", "ds_hardcdno", "ds_opdrugresn"));
  194. * return type :
  195. * Creator :
  196. ***************************************************************************************************/
  197. function lf_gethardcdArrayList(aHardCdList, sRsltDsList)
  198. {
  199. var sRef = dsf_createDs("ds_cond_hardcdlist", [{col:"hardcdno", type:"string", size:256}]);
  200. var oRef = this.objects[sRef];
  201. var sDsList = "";
  202. for (var i=0 ; i<aHardCdList.length ; i++) {
  203. var nAddRow = oRef.addRow();
  204. oRef.setColumn(nAddRow, "hardcdno", aHardCdList[i]);
  205. sDsList += sRsltDsList[i]+"="+sRsltDsList[i]+" ";
  206. }
  207. sDsList = sDsList.replace("=ds_", "=");
  208. var oParam = {};
  209. oParam.id = "TRMMB04107"; // transaction을 구분하기 위한 ID
  210. oParam.service = "prcpbaseapp.EnvInfoMngt"; // service ID
  211. oParam.method = "reqGetHardCdArrayLists"; // method ID
  212. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  213. oParam.outds = sDsList; // transaction을 처리 결과를 받을 Dataset의 ID
  214. tranf_submit(oParam);
  215. // Temp로 사용한 Dataset을 삭제
  216. var oRemoveDs = this.removeChild(sRef);
  217. oRemoveDs = null;
  218. }
  219. function lf_reqHardCodeInfo(oDsRsltRef, hardcd) {
  220. lf_getHardCDList("N", hardcd, null, oDsRsltRef);
  221. }
  222. /***************************************************************************************************
  223. * Function : lf_getHardCDList
  224. * Description : 조회된 하드코드 리스트를 조회한다.
  225. * Argument : sOption [Stirng : Y/값을 리턴한다, N/데이터셋을 반환한다.]
  226. * : sHardCdNo [String : 하드코드 번호]
  227. * : sRtnValue [String : 변환형태 Flag]- sOption이 "Y"일 때만 관련있음.
  228. * : oDsRsltRef [Dataset : 대상 데이타셋]
  229. * return type : option = "N" 일 경우: 데이터셋 복사
  230. "Y" 일 경우: sRtnValue 변환형태플래그 [0:리턴값 반환하지 않음 (하드코드 값이 여러개일 때 선택, 1:hardcdno를 리턴, 2:hardcodenm 을 리턴
  231. 3:hardcd 를 리턴 4:hardcdnm를 리턴, 5:cdseqno를 리턴, 9:hardcd+ "|" + hardcdnm + "|" + cdseqno 형태로 리턴]
  232. * Creator :
  233. * ex) : lf_getHardCDList("N", 60, null, oDsRsltRef);
  234. var rtnHardcd = lf_getHardCDList("Y", 60, 1, null);
  235. ***************************************************************************************************/
  236. function lf_getHardCDList(sOption, sHardCdNo, sRtnValue, oDsRsltRef)
  237. {
  238. var oDsHardCd = emr_getHardcodeTable(sHardCdNo);
  239. var sHardCd;
  240. var sHardCdNm;
  241. var nCdSeqNo;
  242. if (!utlf_isNull(oDsHardCd)) {
  243. if (sOption == "Y") {
  244. try {
  245. var sHardCdNo = oDsHardCd[0].hardcdno;
  246. var sHardCodeNm = oDsHardCd[0].hardcodenm;
  247. sHardCd = oDsHardCd[0].hardcd;
  248. sHardCdNm = oDsHardCd[0].hardcdnm;
  249. nCdSeqNo = oDsHardCd[0].cdseqno;
  250. nHardSpec = oDsHardCd[0].hardspec;
  251. }
  252. catch(e) {
  253. trace("lf_getHardCDList Error : " + e);
  254. }
  255. if (sRtnValue == 1) {
  256. return sHardCdNo;
  257. }
  258. else if (sRtnValue == 2) {
  259. return hardcodenm;
  260. }
  261. else if (sRtnValue == 3) {
  262. return sHardCd;
  263. }
  264. else if (sRtnValue == 4) {
  265. return sHardCdNm;
  266. }
  267. else if (sRtnValue == 5) {
  268. return nCdSeqNo;
  269. }
  270. else if (sRtnValue == 6) {
  271. return nHardSpec;
  272. }
  273. else if (sRtnValue == 9) {
  274. return sHardCd+ "|" + sHardCdNm + "|" + nCdSeqNo;
  275. }
  276. } else {
  277. if (!utlf_isNull(oDsHardCd)) {
  278. try {
  279. if(oDsHardCd[0].realtime == "Y") // 항상 실시간조회 하드코드라면 데이터셋도 매번 초기화 (2018.04.11 smkim)
  280. oDsRsltRef.clearData();
  281. } catch(e) {}
  282. var destListLen = oDsRsltRef.rowcount;
  283. // 한번이라도 복사된 내용이 있으면 다시 안하도록 수정 2011. 01.20 김영학
  284. if(destListLen < 1 ){
  285. // 하드코드 Object 갯수 만큼 loop 작업
  286. for (var i = 0; i < oDsHardCd.length; i++)
  287. {
  288. var nAddRow = oDsRsltRef.addRow();
  289. // Object의 property 갯수 만큼 loop 작업을 하면 Dataset의 컬럼생성 및 Row 값 설정
  290. for (var j in oDsHardCd[i])
  291. {
  292. oDsRsltRef.addColumn(j, "STRING");
  293. oDsRsltRef.setColumn(nAddRow, j, oDsHardCd[i][j]);
  294. }
  295. }
  296. oDsRsltRef.applyChange();
  297. }
  298. }
  299. }
  300. }
  301. }
  302. /***************************************************************************************************
  303. * Function : lf_getArrayData
  304. * Description : 구분자로 분리된 특정자료를 Reading
  305. * Argument : sData [String : split이 포함된 원본데이터]
  306. * : sRow [String : row 위치값]
  307. * : sCol [String : col 위치값]
  308. * : sRowSep [String : row 구분자]
  309. * : sColSep [String : col 구분자]
  310. * return type : arrCol[sCol]
  311. * Creator :
  312. ***************************************************************************************************/
  313. function lf_getArrayData(sData, sRow, sCol, sRowSep, sColSep)
  314. {
  315. var sRowSep_ = (sRowSep == null || sRowSep =="" ? "▩" : sRowSep); // row 구분자
  316. var sColSep_ = (sColSep == null || sColSep =="" ? "▦" : sColSep); // column 구분자
  317. var arrRow = sData.split(sRowSep_);
  318. if (arrRow.length <= sRow) return "";
  319. var arrCol = arrRow[sRow].split(sColSep_);
  320. if (arrCol.length <= sCol) return "";
  321. return arrCol[sCol];
  322. }
  323. /***************************************************************************************************
  324. * Function : lf_getLoadingStatus
  325. * Description : 처방화면 Main loading 여부를 세팅
  326. * : 형식 : 기관명 + 화면명 + 로그인과 + 로그인한 사용자 + 로그인일시
  327. * Argument :
  328. * return type :
  329. * Creator :
  330. ***************************************************************************************************/
  331. function lf_getLoadingStatus()
  332. {
  333. return frmf_getParameter("PRCP_LOADING_STATUS");
  334. }
  335. /***************************************************************************************************
  336. * Function : lf_setLoadingStatus
  337. * Description : 처방화면 Main loading 여부를 세팅
  338. * Argument :
  339. * return type :
  340. * Creator :
  341. ***************************************************************************************************/
  342. function lf_setLoadingStatus(status)
  343. {
  344. var sysMessageobj = frmf_getViewer("sysMessage");
  345. sysMessageobj.frmf_setParameter("PRCP_LOADING_STATUS", status);
  346. }
  347. /***************************************************************************************************
  348. * Function : lf_initWndTitle
  349. * Description : 화면타이틀을 설정한다
  350. * : 형식 : 기관명 + 화면명 + 로그인과 + 로그인한 사용자 + 로그인일시
  351. * Argument :
  352. * return type :
  353. * Creator :
  354. ***************************************************************************************************/
  355. function lf_initWndTitle(grd_prcplist)
  356. {
  357. if (sysf_getGlobalVariable("userinfos") != "") {
  358. //2013-05-21 강지훈 수정 : 화면명이 맨 앞으로 보이고 기관명이 마지막으로 보이게끔 설정
  359. var scrnTitle = form.title + " " ;
  360. scrnTitle += sysf_getUserInfo("dutplcenm") + " ";
  361. scrnTitle += sysf_getUserName() + " ";
  362. scrnTitle += sysf_getTitleLoginDate() + " ";
  363. scrnTitle += sysf_getUserInfo("systeminstnm");
  364. document.title = scrnTitle;
  365. }
  366. if (grd_prcplist != null) {
  367. grd_prcplist.setFormatRowProperty(0, "size", 45);
  368. grd_prcplist.setBandProperty("fixed", "word-wrap") = "word";
  369. }
  370. }
  371. /***************************************************************************************************
  372. * Function : lf_mmbfGetDeptCodeComboList
  373. * Description : 부서 콤보 조회
  374. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  375. * : sOrdDeptFlag [String : 진료과구분]
  376. * : sStnddd [String : 기준일]
  377. * return type : [Dataset : 조회된 부서 리스트]
  378. * Creator :
  379. * Conversion : TF SVN.60233
  380. ***************************************************************************************************/
  381. function lf_mmbfGetDeptCodeComboList(oDsRsltRef, sOrdDeptFlag, sStnddd)
  382. {
  383. var isSearchStnddd = false;
  384. var hasStnddd = (!utlf_isNull(sStnddd) && sStnddd.length == 8);
  385. if (hasStnddd) { // 기준일자를 입력하는경우 DB에서 신규로 조회 하도록 수정. 2014.04.03 엄영만
  386. isSearchStnddd = true;
  387. } else {
  388. // 기준일자가 없는경우 KNUH_20110208, 진료속도개선 수정, TRMMB04101 submit을 안하고
  389. // 로그인시 가져온 데이터를 copy하는것으로 변경, 주희경
  390. var sID = "";
  391. switch (sOrdDeptFlag) {
  392. case "A" : // ALL
  393. case "" :
  394. case null :
  395. sID = "alldeptinfo";
  396. break;
  397. case "C" :
  398. sID = "centdeptinfo";
  399. break;
  400. case "D" : // 퇴원
  401. sID = "dscdeptinfo";
  402. break;
  403. case "W" : // 병동
  404. sID= "warddeptinfo";
  405. break;
  406. case "O" : // 외래
  407. sID = "otptdeptinfo";
  408. break;
  409. case "I" : // 입원
  410. sID = "inptdeptinfo";
  411. break;
  412. case "E" : //시행부서
  413. sID = "dept";
  414. break;
  415. case "T" :
  416. sID = "deptinfoinall";
  417. break;
  418. }
  419. var oSrcDs = emr_getOrderBaseInfo(sID);
  420. if (oSrcDs.rowcount > 0) { // 복사할 원본 데이터가 존재하면 복사
  421. oDsRsltRef.copyData(oSrcDs, true);
  422. } else {
  423. isSearchStnddd = true;
  424. }
  425. }
  426. if(isSearchStnddd) {
  427. // KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  428. // 데이타셋 생성및 로우 생성후 값설정 공통 함수 [/com_commonxp/comm_ds에 정의]
  429. var sRef = dsf_createDsRow("ds_cond_dept", [{col:"orddeptflag", type:"string", size:256, val:""},
  430. {col:"stnddd", type:"string", size:256, val:""}]);
  431. var oRef = this.objects[sRef];
  432. oRef.clearData();
  433. oRef.addRow();
  434. oRef.setColumn(0, "orddeptflag", sOrdDeptFlag);
  435. if (hasStnddd) oRef.setColumn(0, "stnddd", sStnddd); // 기준일
  436. var oParam = {};
  437. oParam.id = "TRMMB04101"; // transaction을 구분하기 위한 ID
  438. oParam.service = "prcpbaseapp.EnvInfoMngt"; // service ID
  439. oParam.method = "reqGetDeptComboList"; // method ID
  440. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  441. oParam.outds = oDsRsltRef.name + "=dept"; // transaction을 처리 결과를 받을 Dataset의 ID
  442. tranf_submit(oParam);
  443. // Temp로 사용한 Dataset을 삭제
  444. var oRemoveDs = this.removeChild(sRef);
  445. oRemoveDs = null;
  446. }
  447. }
  448. /***************************************************************************************************
  449. * Function : lf_mmbfGetSubDeptComboList
  450. * Description : 세부과리스트 조회
  451. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  452. * : sOrdDeptCd [String : 진료과코드]
  453. * return type :
  454. * Creator :
  455. ***************************************************************************************************/
  456. function lf_mmbfGetSubDeptComboList(oDsRsltRef, sOrdDeptCd)
  457. {
  458. var sRef = dsf_createDsRow("ds_cond_deptlist", [{col:"orddeptcd", type:"string", size:256, val:sOrdDeptCd}]);
  459. var oRef = this.objects[sRef];
  460. var oParam = {};
  461. oParam.id = "TRMMB04106"; // transaction을 구분하기 위한 ID
  462. oParam.service = "prcpbaseapp.EnvInfoMngt"; // service ID
  463. oParam.method = "reqGetSubDeptComboList"; // method ID
  464. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  465. oParam.outds = oDsRsltRef.name + "=subdeptlist"; // transaction을 처리 결과를 받을 Dataset의 ID
  466. tranf_submit(oParam);
  467. // Temp로 사용한 Dataset을 삭제
  468. var oRemoveDs = this.removeChild(sRef);
  469. oRemoveDs = null;
  470. }
  471. /***************************************************************************************************
  472. * Function : lf_mmbfGetUserComboList
  473. * Description : EMR사용자콤보 조회
  474. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  475. * : sDeptCd [String : 부서코드]
  476. * : sJobKindCd [String : 직종코드]
  477. * : sSpeCordYN [String : 선택진료여부]
  478. * : sDrFlag [String : 의사구분, 가상사용자 제외]
  479. * : sStandd [String : 조회기준일자]
  480. * : sNmDispFlag [String : 이름뒤에 특진(Y)표시 할것인지 구분]
  481. * : sJobFlag [String : 주치의 담당의 조회기준 (JobKindCD, JobPoscd)]
  482. * : sSpecDrChk [String : 선택진료 의사 모두 조회한다.]
  483. * : sInternFlag [String : 인턴포함여부]
  484. * return type :
  485. * Creator :
  486. * Conversion : TF SVN.60233
  487. ***************************************************************************************************/
  488. function lf_mmbfGetUserComboList(oDsRsltRef, sDeptCd, sJobKindCd, sSpeCordYN, sDrFlag, sStandd, sNmDispFlag, sJobFlag, sSpecDrChk, sInternFlag)
  489. {
  490. var sRef = dsf_createDsRow("ds_cond_usercombo", [{col:"deptcd", type:"string", size:256, val:sDeptCd}, // 부서코드
  491. {col:"jobkindcd", type:"string", size:256, val:sJobKindCd}, // 직종코드(의사:0330)
  492. {col:"specordyn", type:"string", size:256, val:sSpeCordYN}, // 선택진료여부
  493. {col:"drflag", type:"string", size:256, val:sDrFlag}, // 주치의, 담당의 구분(M : 주치의 , A:담당의 )
  494. {col:"standd", type:"string", size:256, val:sStandd}, // 조회기준일자
  495. {col:"jobflag", type:"string", size:256, val:sJobFlag}, // 조회구분 Jobkindcd(K), Jobposcd(P)
  496. {col:"specdrchk", type:"string", size:256, val:sSpecDrChk}, // 진료과조건 제외
  497. {col:"nmdispflag", type:"string", size:256, val:""}]);
  498. var oRef = this.objects[sRef];
  499. if (utlf_isNull(sNmDispFlag))
  500. oRef.setColumn(0, "nmdispflag", "N"); // 이름에 특진여부표시구분
  501. else
  502. oRef.setColumn(0, "nmdispflag", sNmDispFlag); // 이름에 특진여부표시구분
  503. var oParam = {};
  504. oParam.id = "TRMMB04102"; // transaction을 구분하기 위한 ID
  505. oParam.service = "prcpbaseapp.EnvInfoMngt"; // service ID
  506. oParam.method = "reqGetUserComboList"; // method ID
  507. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  508. oParam.outds = oDsRsltRef.name + "=usercombo"; // transaction을 처리 결과를 받을 Dataset의 ID
  509. tranf_submit(oParam);
  510. // Temp로 사용한 Dataset을 삭제
  511. var oRemoveDs = this.removeChild(sRef);
  512. oRemoveDs = null;
  513. }
  514. /***************************************************************************************************
  515. * Function : lf_mmbfGetUserEnvQuestValue
  516. * Description : 사용자 환경설정의 값을 조회한다.
  517. * Argument : sQestCd [String : 질문값]
  518. * return type : [String : 답안값]
  519. * Creator :
  520. ***************************************************************************************************/
  521. function lf_mmbfGetUserEnvQuestValue(sQestCd)
  522. {
  523. var oDsEnvinfo = emr_getOrderBaseInfo("envinfo");
  524. if (oDsEnvinfo != null) {
  525. var anstcnt = oDsEnvinfo.getColumn(oDsEnvinfo.findRow("qestcd", sQestCd), "answcnt");
  526. return anstcnt;
  527. }
  528. else {
  529. var sRef = dsf_createDsRow("ds_cond_reqdata", [{col:"interqestcd", type:"string", size:256, val:sQestCd}]);
  530. var oRef = this.objects[sRef];
  531. var sDsTemp = dsf_createDs("ds_temp");
  532. var oDsTemp = this.objects[sDsTemp];
  533. var answcnt = ""; // 답변번호
  534. var oParam = {};
  535. oParam.id = "TRMMB01104"; // transaction을 구분하기 위한 ID
  536. oParam.service = "prcpbaseapp.EnvInfoMngt"; // service ID
  537. oParam.method = "reqGetInterfaceAnsw"; // method ID
  538. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  539. oParam.outds = sDsTemp + "=interface"; // transaction을 처리 결과를 받을 Dataset의 ID
  540. tranf_submit(oParam);
  541. answcnt = oDsTemp.getColumn(0, "answcnt");
  542. var oRemoveDs = this.removeChild(sDsTemp);
  543. oRemoveDs = null;
  544. oRemoveDs = this.removeChild(sRef);
  545. oRemoveDs = null;
  546. return answcnt;
  547. }
  548. }
  549. /***************************************************************************************************
  550. * Function : lf_mmofReqGetCnstTypeComboList
  551. * Description : 협진분류콤보조회
  552. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  553. * : sOrdDeptCd [String : 진료과코드]
  554. * return type :
  555. * Creator :
  556. ***************************************************************************************************/
  557. function lf_mmofReqGetCnstTypeComboList(oDsRsltRef, sOrdDeptCd)
  558. {
  559. var sRef = dsf_createDsRow("ds_cond_cnsttypecombo", [{col:"orddeptcd", type:"string", size:256, val:sOrdDeptCd}]);
  560. var oRef = this.objects[sRef];
  561. var oParam = {};
  562. oParam.id = "TRMMO03602"; // transaction을 구분하기 위한 ID
  563. oParam.service = "prcpmngtapp.ConcPatMngt"; // service ID
  564. oParam.method = "reqGetCnstTypeComboList"; // method ID
  565. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  566. oParam.outds = oDsRsltRef.name + "=cnsttypecombo"; // transaction을 처리 결과를 받을 Dataset의 ID
  567. tranf_submit(oParam);
  568. var oRemoveDs = this.removeChild(sRef);
  569. oRemoveDs = null;
  570. }
  571. /***************************************************************************************************
  572. * Function : lf_reqGetDeptList
  573. * Description : 부서리스트 조회
  574. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  575. * : sQueryFlag [String : Query구분]
  576. * : sDutPlceInstCd [String : 근무지기관코드]
  577. * : sDutPlceUseYN [String : 근무지사용여부]
  578. * return type :
  579. * Creator :
  580. ***************************************************************************************************/
  581. function lf_reqGetDeptList(oDsRsltRef, sQueryFlag, sDutPlceInstCd, sDutPlceUseYN)
  582. {
  583. var sRef = dsf_createDsRow("ds_cond_deptlist", [{col:"queryflag", type:"string", size:256, val:sQueryFlag},
  584. {col:"dutplceinstcd", type:"string", size:256, val:sDutPlceInstCd},
  585. {col:"dutplceuseyn", type:"string", size:256, val:sDutPlceUseYN}]);
  586. var oParam = {};
  587. oParam.id = "TRMMO04103"; // transaction을 구분하기 위한 ID
  588. oParam.service = "prcpmngtapp.EtcPrcpMngt"; // service ID
  589. oParam.method = "reqGetOrdDeptCD"; // method ID
  590. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  591. oParam.outds = oDsRsltRef.name + "=orddept"; // transaction을 처리 결과를 받을 Dataset의 ID
  592. tranf_submit(oParam);
  593. // Temp로 사용한 Dataset을 삭제
  594. var oRemoveDs = this.removeChild(sRef);
  595. oRemoveDs = null;
  596. }
  597. /***************************************************************************************************
  598. * Function : lf_reqOpRoomList
  599. * Description : 수술방 조회
  600. * Argument : sOpScheDt [String : 수술예약일자]
  601. * : oDsOpRoomList [Dataset : 수술실 명칭 데이터셋]
  602. * : oDsAllOpRoomList [Dataset : 수술방 명칭 데이터셋]
  603. * : sQueryFlag [String : Query구분자 (day : 일자, total : 전체, detl :부서, 의사, 일자)]
  604. * : sPerfDeptCd [String : 집도과]
  605. * : sPerfDrId [String : 집도의]
  606. * return type :
  607. * Creator :
  608. ***************************************************************************************************/
  609. function lf_reqOpRoomList(sOpScheDt, oDsOpRoomList, oDsAllOpRoomList, sQueryFlag, sPerfDeptCd, sPerfDrId)
  610. {
  611. var sRef = dsf_createDsRow("ds_cond_oproomlist", [{col:"opschedd", type:"string", size:256, val:sOpScheDt},
  612. {col:"queryflag", type:"string", size:256, val:sQueryFlag},
  613. {col:"perfdeptcd", type:"string", size:256, val:""},
  614. {col:"perfdrid", type:"string", size:256, val:""}]);
  615. var oRef = this.objects[sRef];
  616. if (sQueryFlag == "detl") {
  617. oRef.setColumn(0, "perfdeptcd", sPerfDeptCd);
  618. oRef.setColumn(0, "perfdrid", sPerfDrId);
  619. }
  620. else if (sQueryFlag == "dept") {
  621. oRef.setColumn(0, "perfdeptcd", sPerfDeptCd);
  622. }
  623. var oParam = {};
  624. oParam.id = "TRMMO05704"; // transaction을 구분하기 위한 ID
  625. oParam.service = "prcpmngtapp.OpMngt"; // service ID
  626. oParam.method = "reqGetOpRoomCombo"; // method ID
  627. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  628. oParam.outds = oDsOpRoomList.name + "=oproomlist " + oDsAllOpRoomList.name + "=alloproomlist"; // transaction을 처리 결과를 받을 Dataset의 ID
  629. tranf_submit(oParam);
  630. // Temp로 사용한 Dataset을 삭제
  631. var oRemoveDs = this.removeChild(sRef);
  632. oRemoveDs = null;
  633. }
  634. /***************************************************************************************************
  635. * Function : lf_prcpModal
  636. * Description : 팝업위치가 저장되지 않는 팝업 띄우기
  637. * Argument : sScreenId [String : 화면ID]
  638. * : objArg [Object : 팝업 변수]
  639. * : argxpt [Number : x좌표]
  640. * : argypt [Number : y좌표]
  641. * : ref
  642. * : resultref
  643. * : userProp
  644. * return type : void
  645. * Creator :
  646. ***************************************************************************************************/
  647. function lf_prcpModal( sScreenId, argxpt, argypt, ref, resultref , userProp)
  648. {
  649. var xpt = ypt = 0;
  650. if (utlf_isNull(argxpt) || utlf_isNull(argypt)) {
  651. argxpt = system.cursorx;
  652. argypt = system.cursory;
  653. } else {
  654. argxpt = system.clientToScreenX(this, 0) + argxpt;
  655. argypt = system.clientToScreenY(this, 0) + argypt;
  656. // argxpt = system.clientToScreenX(this.getOwnerFrame(), 0) + argxpt;
  657. // argypt = system.clientToScreenY(this.getOwnerFrame(), 0) + argypt;
  658. // argxpt = system.clientToScreenX(this.getOwnerFrame(), this.getOwnerFrame().form.position.x) + argxpt;
  659. // argypt = system.clientToScreenY(this.getOwnerFrame(), this.getOwnerFrame().form.position.y) + argypt;
  660. if(argxpt < 0) argxpt = 0;
  661. if(argypt < 0) argypt = 0;
  662. }
  663. var rtnVal = frmf_modal(sScreenId, sScreenId, null, false, null, argxpt, argypt, null, null, null, null, null, "M");
  664. return rtnVal;
  665. }
  666. /***************************************************************************************************
  667. * Function : lf_prcpOpenMon
  668. * Description : 팝업위치가 저장되지 않는 팝업 모달 띄우기(모니터 번호 선택 가능)
  669. * Argument : screenId: 화면 ID
  670. * : argxpt : x좌표
  671. * : argypt : y좌표
  672. * return type : void
  673. * Creator : 윤지현 2013. 07. 18
  674. ***************************************************************************************************/
  675. function lf_prcpOpenMon(screenId, argxpt, argypt, ref, resultref , userProp)
  676. {
  677. var answer = lf_mmbfGetUserEnvQuestValue("104"); // 기본환경설정에서 팝업창 띄울 모니터 번호 불러오기.(5: 해당없음)
  678. var xpt;
  679. var ypt;
  680. var mon;
  681. if (answer == "005") {
  682. xpt = system.clientToScreenX(this.getOwnerFrame(), 0) + parseInt(argxpt);
  683. ypt = system.clientToScreenY(this.getOwnerFrame(), 0) + parseInt(argypt);
  684. }
  685. else {
  686. xpt = argypt;
  687. ypt = argypt;
  688. }
  689. open(screenId, mon, xpt, ypt, screenId, ref, resultref, userProp, false);
  690. }
  691. /***************************************************************************************************
  692. * Function : lf_chkPrcpModi
  693. * Description : 환자 변경시 저장하지 않은 처방 여부체크해서 저장여부 Alert
  694. * Argument :
  695. * return type :
  696. * Creator :
  697. ***************************************************************************************************/
  698. function lf_chkPrcpModi(ioflag)
  699. {
  700. var mainobj = frmf_getMainViewer();
  701. var curPrcpObj = mainobj.frmf_getChildWindow("SMMMO00100");
  702. var curRowIndx = 0;
  703. // 처방창이 열려있을때만
  704. if (curPrcpObj != null) {
  705. // 처방권한 없으면 저장 안타도록
  706. if (!curPrcpObj.btn_prcpsave.disabled) {
  707. if (ioflag == "O" || ioflag == "S") {
  708. curRowIndx = grd_outpatlist.row;
  709. if (curPrcpObj.fPrcpSavePatList()) {
  710. grd_outpatlist.row = curRowIndx;
  711. }
  712. }
  713. else if (ioflag == "I") {
  714. curRowIndx = grd_inpatlist.row;
  715. if (curPrcpObj.fPrcpSavePatList()) {
  716. grd_inpatlist.row = curRowIndx;
  717. }
  718. }
  719. else if (ioflag == "E") {
  720. curRowIndx = grd_erpatlist.row;
  721. if (curPrcpObj.fPrcpSavePatList()) {
  722. grd_erpatlist.row = curRowIndx;
  723. }
  724. }
  725. else if (ioflag == "OP") {
  726. curRowIndx = grd_oppatlist.row;
  727. if (curPrcpObj.fPrcpSavePatList()) {
  728. grd_oppatlist.row = curRowIndx;
  729. }
  730. }
  731. }
  732. }
  733. }
  734. /***************************************************************************************************
  735. * Function : lf_addDrChk
  736. * Description : 가산의 체크
  737. * Argument :
  738. * return type :
  739. * Creator :
  740. ***************************************************************************************************/
  741. function lf_addDrChk(srcNode, indx, msgyn)
  742. {
  743. var addfg = "";
  744. if (indx < 0)
  745. return addfg;
  746. var calcscormastspec = srcNode.getColumn(indx, "calcscormastspec");
  747. if (utlf_isNull(calcscormastspec))
  748. return addfg ;
  749. var calcspecArr = calcscormastspec.split("|");
  750. if (calcspecArr != null && calcspecArr.length > 4) {
  751. if (calcspecArr[4] == "A") addfg = "GS";
  752. else if (calcspecArr[4] == "B") addfg = "ALL"; // CS
  753. else if (calcspecArr[4] == "C") addfg = "CS";
  754. else if (calcspecArr[4] == "D") addfg = "GS";
  755. if (utlf_isNull(addfg)) {
  756. if (calcspecArr[5] == "A") addfg = "GS";
  757. else if (calcspecArr[5] == "B") addfg = "ALL";
  758. else if (calcspecArr[5] == "C") addfg = "CS";
  759. else if (calcspecArr[5] == "D") addfg = "GS";
  760. }
  761. if (utlf_isNull(addfg)) {
  762. if (msgyn == "Y")
  763. sysf_messageBox("가산의 지정이 불가한 처방입니다.", "E");
  764. }
  765. }
  766. return addfg;
  767. }
  768. /***************************************************************************************************
  769. * Function : lf_chngAddDr
  770. * Description : 가산의 변경
  771. * Argument :
  772. * return type :
  773. * Creator :
  774. ***************************************************************************************************/
  775. function lf_chngAddDr(srcNode, indx, addfg, grdObj)
  776. {
  777. frmf_clearParameter("SPMMB08300_flag");
  778. frmf_clearParameter("SPMMB08300_useyn");
  779. frmf_clearParameter("SPMMB08300_userid");
  780. frmf_clearParameter("SPMMB08300_orddeptcd");
  781. frmf_clearParameter("SPMMB08300_userinfo");
  782. frmf_clearParameter("SPMMB08300_specdrid");
  783. var ordtype = ds_patflag.getColumn(0, "/root/patflag/list/prcpgenrflag");
  784. frmf_setParameter("SPMMB08300_orddeptcd", addfg);
  785. frmf_setParameter("SPMMB08300_ioflag", ordtype);
  786. frmf_setParameter("SPMMB08300_flag", "adddr");
  787. frmf_setParameter("SPMMB08300_specdrid", srcNode.getColumn(indx, "specdrid"));
  788. var scrid = frmf_getScreenID();
  789. var xpt = 400;
  790. var ypt = 300;
  791. if (!utlf_isNull(scrid) && scrid.length > 5) {
  792. if (scrid.substring(0,5) == "SPMMO")
  793. ypt = 10 ;
  794. }
  795. var rtnVal = lf_prcpModal("SPMMB08300", objArg);
  796. var useyn = frmf_getParameter("SPMMB08300_useyn");
  797. var userid = frmf_getParameter("SPMMB08300_userid");
  798. if (useyn == "Y") {
  799. srcNode.setColumn(indx, "tempcol30", userid);
  800. return true ;
  801. }
  802. return false ;
  803. }
  804. /***************************************************************************************************
  805. * Function : lf_getTopPatientinfo
  806. * Description : 상단의 dataset 참조 / 복사
  807. * Argument : sOption [Stirng : Y/dataset을 copy한다. , N/refrence를 반환한다.]
  808. : sPatientInfoDsNm [String : 데이터셋]
  809. : sFormDsNm [Dataset : 목적지 데이터셋]
  810. * : sClearFlag [String : 목적지 데이터셋 clear 여부]
  811. * return type :
  812. * Creator :
  813. ***************************************************************************************************/
  814. function lf_getTopPatientinfo(sOption, sPatientInfoDsNm, oFormDs, sClearFlag)
  815. {
  816. var initdataDs = this.objects["ds_init_data"];
  817. if((!utlf_isNull(initdataDs) && initdataDs.getColumn(0, "usge") != "prcp") || utlf_isNull(initdataDs)) {
  818. var nullDsNm = dsf_createDs("ds_null");
  819. var nullDsObj = this.objects[nullDsNm];
  820. return nullDsObj;
  821. }
  822. var oPatientInfoDiv = frmf_getViewer("patientInfo");
  823. var oPatientInfoDs = oPatientInfoDiv.objects[sPatientInfoDsNm];
  824. if(sOption == "Y") {
  825. if (sClearFlag != "N") {
  826. oFormDs.clearData();
  827. }
  828. oFormDs.appendData(oPatientInfoDs, true, true);
  829. } else {
  830. return oPatientInfoDs;
  831. }
  832. }
  833. /***************************************************************************************************
  834. * Function : lf_appendChildPatientInfo
  835. * Description : 상단의 인스턴스에서 Instance 복사
  836. * Argument : sFormDsNm [Dataset : 목적지 데이터셋]
  837. * : sPatientInfoDsNm [String : 데이터셋]
  838. * : sClearFlag [String : 목적지 데이터셋 clear 여부]
  839. * return type :
  840. * Creator :
  841. ***************************************************************************************************/
  842. function lf_appendChildPatientInfo(oFormDs, sPatientInfoDsNm, sClearFlag)
  843. {
  844. var oPatientInfoDiv = frmf_getViewer("patientInfo");
  845. var oPatientInfoDs = oPatientInfoDiv.objects[sPatientInfoDsNm];
  846. if (sClearFlag != "N") {
  847. oFormDs.clearData();
  848. }
  849. oFormDs.appendData(oPatientInfoDs, true, true);
  850. }
  851. /***************************************************************************************************
  852. * Function : emr_setGrdDragAnDropRowMove
  853. * Description : 그리드의 행(row)을 마우스 Drag & Drop으로 원하는 위치(RowPosition)로 이동
  854. * Argument : oGrid [Grid : 설정 할 Grid Object]
  855. * return type : 지정한 행(row)을 원하는 위치(RowPosition)로 이동
  856. * Creator : 2014.03.25 이호성
  857. ***************************************************************************************************/
  858. function emr_setGrdDragAnDropRowMove(oGrid)
  859. {
  860. // 한번 셋팅 된경우 다시 호출 하지 않기 위한 flag user property 추가.
  861. if (oGrid.DragAnDropRow) return;
  862. oGrid.ondrag.addHandler(gridrowmove_ondrag);
  863. oGrid.ondrop.addHandler(gridrowmove_ondrop);
  864. function gridrowmove_ondrag(obj:Grid, e:GridDragEventInfo) {
  865. e.userdata = e.row;
  866. return true;
  867. }
  868. function gridrowmove_ondrop(obj:Grid, e:GridDragEventInfo) {
  869. // Row를 이동하지 않은 경우
  870. if (e.userdata == e.row || e.row < 0 || e.col < 0)
  871. return;
  872. var objDs = eval(obj.binddataset);
  873. objDs.moveRow(e.userdata, e.row);
  874. }
  875. oGrid.DragAnDropRow = true;
  876. }
  877. /***************************************************************************************************
  878. * Function : emr_getHardcodeTable
  879. * Description : 하드코드테이블에서 해당 하드코드에 대한 Object Array 를 반환한다.
  880. * Argument : sHardcdno [String : 하드코드 번호]
  881. * : oSrcDs [Dataset : 리턴 데이타를 받을 데이타셋]
  882. * return type : [Object : 하드코드 테이블]
  883. * Creator :
  884. ***************************************************************************************************/
  885. function emr_getHardcodeTable(sHardcdno, oSrcDs)
  886. {
  887. var oDsHardCd = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getHardcodeTable(sHardcdno);
  888. // var oDsHardCd = lf_getAllBizCodeList([{bizFlag: "M", cdGrpId: sHardcdno, dsNm: oSrcDs, sortField: "", sortMethod: ""}]
  889. // , true // 최소 컬럼 조회여부
  890. // , false // 비동기 여부
  891. // , "cbf_hardCodeTable"); // callBack 함수명
  892. if (utlf_isNull(oSrcDs)) {
  893. return oDsHardCd;
  894. }
  895. else {
  896. // 하드코드 Object 갯수 만큼 loop 작업
  897. for (var i=0 ; i < oDsHardCd.length ; i++)
  898. {
  899. var nAddRow = oSrcDs.addRow();
  900. // Object의 property 갯수 만큼 loop 작업을 하면 Dataset의 컬럼생성 및 Row 값 설정
  901. for (var j in oDsHardCd[i])
  902. {
  903. oSrcDs.addColumn(j, "STRING");
  904. oSrcDs.setColumn(nAddRow, j, oDsHardCd[i][j]);
  905. }
  906. }
  907. }
  908. }
  909. function cbf_hardCodeTable(strSvcID, nErrorCode, strErrorMag)
  910. {
  911. if(nErrorCode != 0) return sysf_messageBox("공통 코드를 조회하는데 ", "E009");
  912. }
  913. /***************************************************************************************************
  914. * Function : lf_fitSizeGrid
  915. * Description : 그리드 size를 데이터 길이와 너비에 맞게 변경시켜준다.
  916. * Argument : objGrid [Object : 변경시킬 그리드]
  917. * return type :
  918. * Creator : 윤지현
  919. ***************************************************************************************************/
  920. function lf_fitSizeGrid(objGrid){
  921. var colFullSize = objGrid.getRealColFullSize();
  922. var rowFUllSize = objGrid.getRealRowFullSize();
  923. rowFUllSize+=1;
  924. objGrid.position.width = colFullSize;
  925. objGrid.position.height = rowFUllSize;
  926. }
  927. /***************************************************************************************************
  928. * Function : lf_setGridStatus
  929. * Description : 데이터의 상태를 변경한다.(신규, 삭제)
  930. * Argument : dataset [String : 그리드에 맵핑된 데이터셋 명칭]
  931. : status [String : 변경시킬 상태(추가 및 신규: "I", 삭제: "D"]
  932. : objGrid [Grid : 그리드] :선택사항 Status가 I<추가> 일때 추가된 row가 에디터형태로 변경시킬 때 사용.
  933. : nCol [Number : 셀의 열 인덱스] :선택사항 Status가 I<추가> 일때 추가된 row 중 에디터형태로 변경시킬 열의 인덱스.
  934. : ex) lf_setGridStatus("ds_test", "I", grd_test, 1)
  935. * return type :
  936. * Creator : 윤지현
  937. ***************************************************************************************************/
  938. function lf_setGridStatus( dataset, status, objGrid, nCol){
  939. var object = this.objects[dataset]
  940. var arrTemp = new Array();
  941. if(status == "I"){
  942. var addRow = "";
  943. addRow = object.addRow();
  944. object.setRowType(addRow, 2);
  945. if(!utlf_isNull(objGrid)){
  946. objGrid.setCellPos(nCol);
  947. objGrid.setFocus();
  948. objGrid.showEditor(true);
  949. }
  950. }else if(status == "D"){
  951. object.updatecontrol = false;
  952. for (var i=0; i<object.rowcount; i++) {
  953. if (!object.getSelect(i)) continue;
  954. if(object.getRowType(i) == 8){
  955. object.setRowType(i, 1);
  956. continue;
  957. }
  958. if(object.getRowType(i) == 2){
  959. //object.deleteRow(i);
  960. arrTemp.push(i);
  961. continue;
  962. }
  963. object.setRowType(i, 8);
  964. }
  965. arrTemp.reverse();
  966. for(var idx in arrTemp){
  967. object.deleteRow(arrTemp[idx]);
  968. }
  969. object.updatecontrol = true;
  970. }
  971. }
  972. /***************************************************************************************************
  973. * Function : lf_getBindCellName
  974. * Description : 그리드에서 컬럼 인덱스로 바인드된 데이터셋의 컬럼명을 가져온다.
  975. * Argument : oTrgtGrid
  976. : nColumnIndx
  977. * return type : String
  978. * Creator : 강지훈
  979. ***************************************************************************************************/
  980. function lf_getBindCellName(oTrgtGrid, nColumnIndx){
  981. var sRtnText = "";
  982. var sTrgtText = oTrgtGrid.getCellProperty("body", nColumnIndx, "text");
  983. if(!utlf_isNull( sTrgtText)){
  984. sRtnText = sTrgtText.replace("bind:", "");
  985. }
  986. return sRtnText;
  987. }
  988. /***************************************************************************************************
  989. * Function : lf_setDsDefaultValue
  990. * Description : 데이터셋에 Default값을 넣어준다.
  991. * Argument : oTrgtGrid
  992. : nColumnIndx
  993. * return type : String
  994. * Creator : 강지훈
  995. ***************************************************************************************************/
  996. function lf_setDsDefaultValue(oTrgtDS, sColumnName, sValue, sColumnType){
  997. if(utlf_isNull(sColumnName)){
  998. sColumnName = "string";
  999. }
  1000. oTrgtDS.addColumn(sColumnName, sColumnName);
  1001. for(var i = 0 ; i < oTrgtDS.rowcount ; i++){
  1002. if(utlf_isNull(oTrgtDS.getColumn(i, sColumnName))){
  1003. oTrgtDS.setColumn(i, sColumnName, sValue);
  1004. }
  1005. }
  1006. }
  1007. /***************************************************************************************************
  1008. * Function : lf_reqPatInfo
  1009. * Description : 환자의 기초정보를 조회한다.(pid, hngnm)
  1010. * Argument : dataset [Dataset: 조회된 내용을 담을 데이터셋]
  1011. : srchflag[String : 등록번호, 환자명 구분 "pid"/"hngnm"]
  1012. : tblflag [String : 테이블구분(환자기본/외래/입원, ptbs/otpt/inpt)]
  1013. : param [String : 등록번호 / 환자명
  1014. : stnddd [String : 외래/입원일자]
  1015. * return type : true/false
  1016. * Creator : 윤지현
  1017. ***************************************************************************************************/
  1018. function lf_reqPatInfo(oDsRsltRef, srchflag, tblflag, param, stnddd){
  1019. var pid = "";
  1020. var hngnm = "";
  1021. var orddd = stnddd;
  1022. var queryFlag = tblflag;
  1023. if(srchflag == "pid"){ //등록번호 검색
  1024. pid = param;
  1025. hngnm = "";
  1026. }else if(srchflag == "hngnm"){
  1027. pid = "";
  1028. hngnm = param;
  1029. }
  1030. var sRef = dsf_createDsRow("ds_req_patInfo", [{col:"pid" , type:"string", size:256, val:pid},
  1031. {col:"hngnm" , type:"string", size:256, val:hngnm},
  1032. {col:"orddd" , type:"string", size:256, val:orddd},
  1033. {col:"queryflag" , type:"string", size:256, val:queryFlag},
  1034. {col:"srchflag" , type:"string", size:256, val:srchflag}]);
  1035. var oRef = this.objects[sRef];
  1036. var oParam = {};
  1037. oParam.id = "TRMMO04105"; // transaction을 구분하기 위한 ID
  1038. oParam.service = "prcpmngtapp.EtcPrcpMngt"; // service ID
  1039. oParam.method = "reqGetPatNM"; // method ID
  1040. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  1041. oParam.outds = oDsRsltRef.name + "=patnm"; // transaction을 처리 결과를 받을 Dataset의 ID
  1042. tranf_submit(oParam);
  1043. //trace(oDsRsltRef.saveXML());
  1044. if(oDsRsltRef.rowcount == 0){ //정보가 없을 때 메세지 출력
  1045. if(srchflag == "pid") sysf_messageBox("등록번호 [" + param + "] 환자를 찾을 수 ", "I004");
  1046. else if(srchflag == "hngnm") sysf_messageBox("환자명 [" + param + "] 환자를 찾을 수 ", "I004");
  1047. return false;
  1048. }
  1049. // Temp로 사용한 Dataset을 삭제
  1050. var oRemoveDs = this.removeChild(sRef);
  1051. oRemoveDs = null;
  1052. return true;
  1053. }
  1054. /***************************************************************************************************
  1055. * Function : lf_dateFormat
  1056. * Description : 날짜에 - 구분자 두기
  1057. * Argument : dd: 모양을 바꿀날짜.
  1058. * return type : String
  1059. * Creator : 강지훈
  1060. ***************************************************************************************************/
  1061. function lf_dateFormat( sDd ) {
  1062. var yyyy = sDd.substring ( 0, 4 );
  1063. var mm = sDd.substring ( 4, 6 );
  1064. var ddd = sDd.substring ( 6, 8 );
  1065. return yyyy + "-" + mm + "-" + ddd;
  1066. }
  1067. /**********************************************************************************
  1068. * Function : lf_columnSetData
  1069. * Description : 그리드 체크박스 값에 따라서 sColid의 값을 변경한다(comm_grd.xjs의 grdf_columnSetData() 함수 변형)
  1070. * argument : Object objDs - dataset
  1071. Number nRowIndex - row Index
  1072. String sColid - 변경할 컬럼명
  1073. String sSrcColid - 체크박스에 바인드된 컬럼명
  1074. String trueVal - 체크 되었을때 입력할 값
  1075. String fasleVal - 체크박스가 체크 해제 되었을대 입력될 값
  1076. * return Type : none
  1077. * 작성자 : 안병모
  1078. **********************************************************************************/
  1079. function lf_chkColumnSetData(objDs, nRowIndex, sColid, sSrcColid, trueVal, falseVal)
  1080. {
  1081. var srcChk = objDs.getColumn(nRowIndex, sSrcColid);
  1082. if(srcChk == 1 || srcChk == trueVal)
  1083. {
  1084. objDs.setColumn(nRowIndex, sColid, trueVal);
  1085. }
  1086. else
  1087. {
  1088. objDs.setColumn(nRowIndex, sColid, falseVal);
  1089. }
  1090. }
  1091. /**********************************************************************************
  1092. * Function : lf_getArrayData
  1093. * Description : 구분자로 분리된 배열에서 해당 행, 열의 데이터 조회
  1094. * argument : pData : 원본데이터
  1095. pRow : 찾고자 하는 위치의 row
  1096. pCol : 찾고자 하는 위치의 column
  1097. pRowSep : Row 구분자
  1098. pColSep : Column 구분자
  1099. * return Type : 해당 row, column의 문자열
  1100. * 작성자 : 안병모
  1101. **********************************************************************************/
  1102. function lf_getArrayData(pData, pRow, pCol, pRowSep, pColSep){
  1103. var rowSep = (pRowSep == null || pRowSep =="" ? "▩" :pRowSep ); // row 구분자
  1104. var colSep = (pColSep == null || pColSep =="" ? "▦" :pColSep ); // column 구분자
  1105. var arrRow = pData.toString().split(rowSep);
  1106. if(arrRow.length <= pRow) return "";
  1107. var arrCol = arrRow[pRow].split(colSep);
  1108. if(arrCol.length <= pCol) return "";
  1109. return arrCol[pCol];
  1110. }
  1111. var sTimestamp = "";
  1112. function lf_getCurrentDateString(){
  1113. var sDate = utlf_getNewDate();
  1114. rtnTime = (( sDate.getHours() > 9 ) ? sDate.getHours() : "0" + sDate.getHours());
  1115. rtnTime = rtnTime.toString() + ":" + (( sDate.getMinutes() > 9 ) ? sDate.getMinutes() : "0" + sDate.getMinutes());
  1116. rtnTime = rtnTime.toString() + ":" + (( sDate.getSeconds() > 9 ) ? sDate.getSeconds() : "0" + sDate.getSeconds());
  1117. rtnTime = rtnTime.toString() + "." + utlf_lPad(sDate.getMilliseconds(), 3, "0");
  1118. if(sTimestamp != "") {
  1119. var term = sDate - sTimestamp;
  1120. rtnTime = rtnTime + "( " + term + " )";
  1121. }
  1122. sTimestamp = sDate;
  1123. return rtnTime ;
  1124. }
  1125. /***************************************************************************************************
  1126. * Function : lf_getDsValue
  1127. * Description : Dataset에값을 가져오는 함수
  1128. * Argument : pDsObj : dataset object
  1129. * pRow : row index
  1130. * pColumnName : 컬럼명
  1131. * return type : String
  1132. * Creator : sklee
  1133. ***************************************************************************************************/
  1134. function lf_getDsValue(pDsObj, pRow, pColumnName)
  1135. {
  1136. return (utlf_isNull(pDsObj) || utlf_isNull(pDsObj.getColumnInfo(pColumnName)) || utlf_isNull(pDsObj.getColumn(pRow, pColumnName))) ? "" : pDsObj.getColumn(pRow, pColumnName);
  1137. }
  1138. /**
  1139. * @-----------------------------------------------------------------------------------
  1140. * @desc : 일일기준과 1회 기준의 용량과 수량을 보여주는 것을 결정하여 결과를 리턴함)
  1141. * @param : option : A: 모두 보여줌
  1142. * B: 1일 기준으로 보여줌
  1143. * C: 1회 기준으로 보여줌
  1144. * D: 병원의 기준값을 리턴함
  1145. * E: 용량중 일일용량만 보여주고 일회 용량은 숨기는 것으로 한다.
  1146. * F: 용량중 일회용량만 보여주고 일일 용량은 숨기는 것으로 한다.
  1147. * G: 수량중 일일 수량만 보여준다. 일회 수량은 Hidden
  1148. * H: 수량중 일회 수량은 보여주고 일회수량은 Hidden
  1149. * grd_obj : 설정할 그리드를 리턴한다.
  1150. * colnm_size : 컬럼 사이즈를 적어준다.
  1151. * comnm_vol1 : 1일 총용량 컬럼
  1152. * colnm_qty1 : 1일 수량 컬럼
  1153. * comnm_vol2 : 1회 총용량 컬럼
  1154. * colnm_qty2 : 1회 수량 컬럼
  1155. * colnm_size_qty : 수량 컬럼 사이즈를 적어준다.
  1156. * @-----------------------------------------------------------------------------------
  1157. */
  1158. function lf_grdBaseColHidn(option, grd_obj, colnm_size, colnm_vol1, colnm_qty1, colnm_vol2, colnm_qty2, colnm_size_qty) {
  1159. var hardcd = lf_getHardCDList("Y", 230, 3, null);
  1160. var sGrd_objnm;
  1161. if (utlf_isNull(option)) {
  1162. option = hardcd;
  1163. }
  1164. if (utlf_isNull(colnm_size)) {
  1165. sColnm_size = 37;
  1166. } else {
  1167. sColnm_size = colnm_size;
  1168. }
  1169. if (utlf_isNull(grd_obj)) {
  1170. sGrd_objnm = "div_all.grd_prcplist";
  1171. } else {
  1172. sGrd_objnm = grd_obj;
  1173. }
  1174. if (utlf_isNull(colnm_vol1)) {
  1175. sColnm_vol1 = "prcpvol";
  1176. } else {
  1177. sColnm_vol1 = colnm_vol1
  1178. }
  1179. if (utlf_isNull(colnm_qty1)) {
  1180. sColnm_qty1 = "prcpqty";
  1181. } else {
  1182. sColnm_qty1 = colnm_qty1
  1183. }
  1184. if (utlf_isNull(colnm_vol2)) {
  1185. sColnm_vol2 = "drprcpetc7";
  1186. } else {
  1187. sColnm_vol2 = colnm_vol2;
  1188. }
  1189. if (utlf_isNull(colnm_qty2)) {
  1190. sColnm_qty2 = "drprcpetc8";
  1191. } else {
  1192. sColnm_qty2 = colnm_qty2;
  1193. }
  1194. if (utlf_isNull(colnm_size_qty)) {
  1195. sColnm_size_qty = sColnm_size;
  1196. } else {
  1197. sColnm_size_qty = colnm_size_qty;
  1198. }
  1199. // 둘다 보여준다.
  1200. if (option =="A") {
  1201. // 그리드명이 있을 경우
  1202. if (utlf_isNull(grd_obj)) {
  1203. var oGrid = eval(sGrd_objnm);
  1204. var col = oGrid.getBindCellIndex("body", sColnm_vol1);
  1205. oGrid.setFormatColProperty(col , "size", sColnm_size);
  1206. col = oGrid.getBindCellIndex("body", sColnm_qty1);
  1207. oGrid.setFormatColProperty(col , "size", sColnm_size_qty);
  1208. col = oGrid.getBindCellIndex("body", sColnm_vol2);
  1209. oGrid.setFormatColProperty(col , "size", sColnm_size);
  1210. col = oGrid.getBindCellIndex("body", sColnm_qty2);
  1211. oGrid.setFormatColProperty(col , "size", sColnm_size_qty);
  1212. }
  1213. // 일일 용량을 기준으로 보여준다.
  1214. } else if (option =="B") {
  1215. var oGrid = eval(sGrd_objnm);
  1216. var col = oGrid.getBindCellIndex("body", sColnm_vol1);
  1217. oGrid.setFormatColProperty(col , "size", sColnm_size);
  1218. col = oGrid.getBindCellIndex("body", sColnm_qty1);
  1219. oGrid.setFormatColProperty(col , "size", sColnm_size_qty);
  1220. col = oGrid.getBindCellIndex("body", sColnm_vol2);
  1221. oGrid.setFormatColProperty(col , "size", 0);
  1222. col = oGrid.getBindCellIndex("body", sColnm_qty2);
  1223. oGrid.setFormatColProperty(col , "size", 0);
  1224. // 일회 용량을 기준으로 보여준다.
  1225. } else if (option =="C") {
  1226. var oGrid = eval(sGrd_objnm);
  1227. var col = oGrid.getBindCellIndex("body", sColnm_vol1);
  1228. oGrid.setFormatColProperty(col , "size", 0);
  1229. col = oGrid.getBindCellIndex("body", sColnm_qty1);
  1230. oGrid.setFormatColProperty(col , "size", 0);
  1231. col = oGrid.getBindCellIndex("body", sColnm_vol2);
  1232. oGrid.setFormatColProperty(col , "size", sColnm_size);
  1233. col = oGrid.getBindCellIndex("body", sColnm_qty2);
  1234. oGrid.setFormatColProperty(col , "size", sColnm_size_qty);
  1235. // 기준값을 리턴한다.
  1236. } else if (option =="D") {
  1237. // 기준값을 가지고 컬럼의 상태를 결정한다.
  1238. return hardcd;
  1239. } else if (option =="E") {
  1240. var oGrid = eval(sGrd_objnm);
  1241. var col = oGrid.getBindCellIndex("body", sColnm_vol1);
  1242. oGrid.setFormatColProperty(col , "size", sColnm_size);
  1243. col = oGrid.getBindCellIndex("body", sColnm_vol2);
  1244. oGrid.setFormatColProperty(col , "size", 0);
  1245. } else if (option =="F") {
  1246. var oGrid = eval(sGrd_objnm);
  1247. var col = oGrid.getBindCellIndex("body", sColnm_vol1);
  1248. oGrid.setFormatColProperty(col , "size", 0);
  1249. col = oGrid.getBindCellIndex("body", sColnm_vol2);
  1250. oGrid.setFormatColProperty(col , "size", sColnm_size);
  1251. } else if (option =="G") {
  1252. var oGrid = eval(sGrd_objnm);
  1253. var col = oGrid.getBindCellIndex("body", sColnm_qty1);
  1254. oGrid.setFormatColProperty(col , "size", sColnm_size_qty);
  1255. col = oGrid.getBindCellIndex("body", sColnm_qty2);
  1256. oGrid.setFormatColProperty(col , "size", 0);
  1257. } else if (option =="H") {
  1258. var oGrid = eval(sGrd_objnm);
  1259. var col = oGrid.getBindCellIndex("body", sColnm_qty1);
  1260. oGrid.setFormatColProperty(col , "size", 0);
  1261. col = oGrid.getBindCellIndex("body", sColnm_qty2);
  1262. oGrid.setFormatColProperty(col , "size", sColnm_size_qty);
  1263. } else {
  1264. var oGrid = eval(sGrd_objnm);
  1265. var col = oGrid.getBindCellIndex("body", sColnm_vol1);
  1266. oGrid.setFormatColProperty(col , "size", sColnm_size);
  1267. col = oGrid.getBindCellIndex("body", sColnm_qty1);
  1268. oGrid.setFormatColProperty(col , "size", sColnm_size_qty);
  1269. col = oGrid.getBindCellIndex("body", sColnm_vol2);
  1270. oGrid.setFormatColProperty(col , "size", 0);
  1271. col = oGrid.getBindCellIndex("body", sColnm_qty2);
  1272. oGrid.setFormatColProperty(col , "size", 0);
  1273. }
  1274. }
  1275. /***************************************************************************************************
  1276. * Function : lf_makePrcpSrchDs
  1277. * Description : 처방 조회 시 outds가 없다면 자동 생성한다.
  1278. (lf_prcpSrchCom, lf_bfPrcpSrchCom의 TRMMO00100, TRMMB00201 에서 사용)
  1279. * Argument :
  1280. * return type :
  1281. * Creator : 김상목
  1282. ***************************************************************************************************/
  1283. function lf_makePrcpSrchDs() {
  1284. if(utlf_isNull(this.objects["ds_prcpsrch_prcplist"])) {
  1285. var arrColInfo = [{col:"status", type:"string", size:256}
  1286. , {col:"prcpstatcd", type:"string", size:256}
  1287. , {col:"prcpclscd", type:"string", size:256}
  1288. , {col:"prcpkindcd", type:"string", size:256}
  1289. , {col:"prcpcd", type:"string", size:256}
  1290. , {col:"prcpnm", type:"string", size:256}
  1291. , {col:"prcpvol", type:"string", size:256}
  1292. , {col:"prcpvolunitnm", type:"string", size:256}
  1293. , {col:"prcpqty", type:"string", size:256}
  1294. , {col:"prcpqtyunitnm", type:"string", size:256}
  1295. , {col:"prcptims", type:"string", size:256}
  1296. , {col:"prcpdayno", type:"string", size:256}
  1297. , {col:"drugmthdspccdnm", type:"string", size:256}
  1298. , {col:"prcpmixno", type:"string", size:256}
  1299. , {col:"payflagcd", type:"string", size:256}
  1300. , {col:"prcpdelivefact", type:"string", size:256}
  1301. , {col:"hosinhosoutflag", type:"string", size:256}
  1302. , {col:"prcpexecdeptcd", type:"string", size:256}
  1303. , {col:"prcphopedd", type:"string", size:256}
  1304. , {col:"choiordflag", type:"string", size:256}
  1305. , {col:"rgstdt", type:"string", size:256}
  1306. , {col:"rgstridnm", type:"string", size:256}
  1307. , {col:"testrsltunit", type:"string", size:256}
  1308. , {col:"testrsltcnts", type:"string", size:256}
  1309. , {col:"prcpgenrflag", type:"string", size:256}
  1310. , {col:"prcphistcd", type:"string", size:256}
  1311. , {col:"tempprcpflag", type:"string", size:256}
  1312. , {col:"prcpsetcd", type:"string", size:256}
  1313. , {col:"prcpvolunitflag", type:"string", size:256}
  1314. , {col:"prcpqtyunitflag", type:"string", size:256}
  1315. , {col:"orgprcpqty", type:"string", size:256}
  1316. , {col:"drugspd", type:"string", size:256}
  1317. , {col:"drugspdunitflag", type:"string", size:256}
  1318. , {col:"powdflag", type:"string", size:256}
  1319. , {col:"prnprcpflag", type:"string", size:256}
  1320. , {col:"prepprcpflag", type:"string", size:256}
  1321. , {col:"selfprcpflag", type:"string", size:256}
  1322. , {col:"selfdrugflag", type:"string", size:256}
  1323. , {col:"drugpackflag", type:"string", size:256}
  1324. , {col:"erprcpflag", type:"string", size:256}
  1325. , {col:"precureprcpflag", type:"string", size:256}
  1326. , {col:"nigtprcpflag", type:"string", size:256}
  1327. , {col:"portprcpflag", type:"string", size:256}
  1328. , {col:"fixprcpflag", type:"string", size:256}
  1329. , {col:"anamneflag", type:"string", size:256}
  1330. , {col:"fastprcpflag", type:"string", size:256}
  1331. , {col:"erreadflag", type:"string", size:256}
  1332. , {col:"prcpdirecflag", type:"string", size:256}
  1333. , {col:"tnsuseflag", type:"string", size:256}
  1334. , {col:"tnsfiltflag", type:"string", size:256}
  1335. , {col:"trnptbftestflag", type:"string", size:256}
  1336. , {col:"offictourhealexamflag", type:"string", size:256}
  1337. , {col:"stemcellflag", type:"string", size:256}
  1338. , {col:"angioflagcd", type:"string", size:256}
  1339. , {col:"opansflagcd", type:"string", size:256}
  1340. , {col:"ansttm", type:"string", size:256}
  1341. , {col:"mealcalrcnts", type:"string", size:256}
  1342. , {col:"mealprotcnts", type:"string", size:256}
  1343. , {col:"mealupdtflag", type:"string", size:256}
  1344. , {col:"hosinprcpresncd", type:"string", size:256}
  1345. , {col:"etcprcpresncd", type:"string", size:256}
  1346. , {col:"drugmthdspccd", type:"string", size:256}
  1347. , {col:"issdeptcd", type:"string", size:256}
  1348. , {col:"prcpauthflag", type:"string", size:256}
  1349. , {col:"prcpinptflag", type:"string", size:256}
  1350. , {col:"prcpsignflag", type:"string", size:256}
  1351. , {col:"rateprcpflag", type:"string", size:256}
  1352. , {col:"prcprefseq", type:"string", size:256}
  1353. , {col:"ordreqlnkno", type:"string", size:256}
  1354. , {col:"testreqlnkno", type:"string", size:256}
  1355. , {col:"prcplnkdd", type:"string", size:256}
  1356. , {col:"prcplnkno", type:"string", size:256}
  1357. , {col:"oprsrvno", type:"string", size:256}
  1358. , {col:"tootfact", type:"string", size:256}
  1359. , {col:"clinccmtcnts", type:"string", size:256}
  1360. , {col:"prcpessninptflag", type:"string", size:256}
  1361. , {col:"grupsnglflag", type:"string", size:256}
  1362. , {col:"drugrateqty", type:"string", size:256}
  1363. , {col:"asttestflag", type:"string", size:256}
  1364. , {col:"clincstdyflag", type:"string", size:256}
  1365. , {col:"prtlno", type:"string", size:256}
  1366. , {col:"clincstdycd", type:"string", size:256}
  1367. , {col:"optermcd", type:"string", size:256}
  1368. , {col:"prcpflag", type:"string", size:256}
  1369. , {col:"hscttempprcpflag", type:"string", size:256}
  1370. , {col:"inclprcpcd", type:"string", size:256}
  1371. , {col:"inclprcpno", type:"string", size:256}
  1372. , {col:"pampkspec", type:"string", size:256}
  1373. , {col:"prcppkspec", type:"string", size:256}
  1374. , {col:"calcscormastspec", type:"string", size:256}
  1375. , {col:"drugmastspec", type:"string", size:256}
  1376. , {col:"rateprcpspec", type:"string", size:256}
  1377. , {col:"matrsetprcpspec", type:"string", size:256}
  1378. , {col:"suppdeptspec", type:"string", size:256}
  1379. , {col:"contprcpspec", type:"string", size:256}
  1380. , {col:"etclnkspec", type:"string", size:256}
  1381. , {col:"srchcondcnts", type:"string", size:256}
  1382. , {col:"orgprcpnm", type:"string", size:256}
  1383. , {col:"chkcol", type:"string", size:256}
  1384. , {col:"hsctdelivepos", type:"string", size:256}
  1385. , {col:"hsctlnkno", type:"string", size:256}
  1386. , {col:"etcprcpflag", type:"string", size:256}
  1387. , {col:"aftcertflag", type:"string", size:256}
  1388. , {col:"aftcertdrid", type:"string", size:256}
  1389. , {col:"prcpvalidd", type:"string", size:256}
  1390. , {col:"spynpy1", type:"string", size:256}
  1391. , {col:"specdrid", type:"string", size:256}
  1392. , {col:"specdrnm", type:"string", size:256}
  1393. , {col:"anticncrprtlno", type:"string", size:256}
  1394. , {col:"anticncrdayno", type:"string", size:256}
  1395. , {col:"druglnkno", type:"string", size:256}
  1396. , {col:"rehbprcpcurefreqflag", type:"string", size:256}
  1397. , {col:"dietprcpgenrflag", type:"string", size:256}
  1398. , {col:"irpayflag", type:"string", size:256}
  1399. , {col:"irflag", type:"string", size:256}
  1400. , {col:"procerdietflag", type:"string", size:256}
  1401. , {col:"diagtestconttestintvlflag", type:"string", size:256}
  1402. , {col:"drugindependpackflag", type:"string", size:256}
  1403. , {col:"diagtestconttestbasetm", type:"string", size:256}
  1404. , {col:"diagtestconttestorgtims", type:"string", size:256}
  1405. , {col:"ermediscmngtresncd", type:"string", size:256}
  1406. , {col:"rehbprcpenddd", type:"string", size:256}
  1407. , {col:"matrallsizespecid", type:"string", size:256}
  1408. , {col:"rehbprcpcurepartcd", type:"string", size:256}
  1409. , {col:"lowdrugresncd", type:"string", size:256}
  1410. , {col:"tfdtlcd", type:"string", size:256}
  1411. , {col:"dnorreqlnkno", type:"string", size:256}
  1412. , {col:"subcretno", type:"string", size:256}
  1413. , {col:"exptmthdfact", type:"string", size:256}
  1414. , {col:"lowdrugresnetcfact", type:"string", size:256}
  1415. , {col:"diagtestconttestcdspec", type:"string", size:256}
  1416. , {col:"drgacptflag", type:"string", size:256}
  1417. , {col:"drprcpetc1", type:"string", size:256}
  1418. , {col:"drprcpetc2", type:"string", size:256}
  1419. , {col:"drprcpetc3", type:"string", size:256}
  1420. , {col:"drprcpetc4", type:"string", size:256}
  1421. , {col:"drprcpetc5", type:"string", size:256}
  1422. , {col:"drprcpetc6", type:"string", size:256}
  1423. , {col:"drprcpetc7", type:"string", size:256}
  1424. , {col:"drprcpetc8", type:"string", size:256}
  1425. , {col:"drprcpetc9", type:"string", size:256}
  1426. , {col:"drprcpetc10", type:"string", size:256}
  1427. , {col:"tempcol1", type:"string", size:256}
  1428. , {col:"tempcol2", type:"string", size:256}
  1429. , {col:"tempcol3", type:"string", size:256}
  1430. , {col:"tempcol4", type:"string", size:256}
  1431. , {col:"tempcol5", type:"string", size:256}
  1432. , {col:"tempcol6", type:"string", size:256}
  1433. , {col:"tempcol7", type:"string", size:256}
  1434. , {col:"tempcol8", type:"string", size:256}
  1435. , {col:"tempcol9", type:"string", size:256}
  1436. , {col:"tempcol10", type:"string", size:256}
  1437. , {col:"tempcol11", type:"string", size:256}
  1438. , {col:"tempcol12", type:"string", size:256}
  1439. , {col:"tempcol13", type:"string", size:256}
  1440. , {col:"tempcol14", type:"string", size:256}
  1441. , {col:"tempcol15", type:"string", size:256}
  1442. , {col:"tempcol16", type:"string", size:256}
  1443. , {col:"tempcol17", type:"string", size:256}
  1444. , {col:"tempcol18", type:"string", size:256}
  1445. , {col:"tempcol19", type:"string", size:256}
  1446. , {col:"tempcol20", type:"string", size:256}
  1447. , {col:"tempcol21", type:"string", size:256}
  1448. , {col:"tempcol22", type:"string", size:256}
  1449. , {col:"tempcol23", type:"string", size:256}
  1450. , {col:"tempcol24", type:"string", size:256}
  1451. , {col:"tempcol25", type:"string", size:256}
  1452. , {col:"rgstdeptcd", type:"string", size:256}
  1453. , {col:"prcpclassnm", type:"string", size:256}
  1454. , {col:"rowkey", type:"string", size:256}
  1455. , {col:"instcd", type:"string", size:256}];
  1456. dsf_createDs("ds_prcpsrch_prcplist", arrColInfo, true);
  1457. ds_prcpsrch_prcplist.oncolumnchanged.addHandler(prcpsrch_prcplist_oncolumnchanged);
  1458. }
  1459. }
  1460. function prcpsrch_prcplist_oncolumnchanged(obj:Dataset, e:DSColChangeEventInfo)
  1461. {
  1462. if(e.columnid == "status")
  1463. obj.setColumn(e.row, e.columnid, (e.newvalue == "I" || e.newvalue == 1) ? "I" : "N");
  1464. };
  1465. /***************************************************************************************************
  1466. * Function : lf_setCheckboxProperty
  1467. * Description : 일괄입력 화면들에서 체크 박스 클릭시에 대한 공통 동작 정의
  1468. * Argument : obj - 체크박스 오브젝트
  1469. oSubComponent - obj 체크박스와 같이 연동 되는 sub 체크박스
  1470. isChangeVal - sub 체크박스의 값도 같이 변경 시킬지 여부(값이 없다면 true)
  1471. * return type :
  1472. * 사용예 : 1) lf_setCheckboxProperty(obj, checkbox10);
  1473. 2) lf_setCheckboxProperty(obj, combo1, false);
  1474. * Creator : 김상목
  1475. ***************************************************************************************************/
  1476. function lf_setCheckboxProperty(obj:CheckBox, oSubComponent, isChangeVal) {
  1477. if ( obj.value == "Y" ) {
  1478. obj.style.font = "Dotum,9,bold";
  1479. oSubComponent.enable = true;
  1480. } else {
  1481. obj.style.font = "Dotum,9";
  1482. oSubComponent.enable = false;
  1483. }
  1484. if(utlf_isNull(isChangeVal)) isChangeVal = true;
  1485. if(isChangeVal) oSubComponent.value = obj.value;
  1486. }
  1487. /************************************************************************************************
  1488. * 함수명 : lf_mmbfOpenEmrWnd
  1489. * 설명 : EMR 에서 제공하는 각종 기록지, 처방화면등을 타업무에서 사용시 구분하기 위한 진입점 함수로 아래 화면을 통해 여러가지 화면으로 분기될 수 있다.
  1490. * EMR진료 기록지 조정
  1491. * modal로 화면에 숨겨진 팝업을 띄운다. 여러화면 동시에 open되어, submit간의 충돌을 방지한다.
  1492. * argument : String scrnid - 파라미터로 보낼 화면 ID
  1493. * return Type : true
  1494. * 작성자 : tobesoft
  1495. ************************************************************************************************/
  1496. function lf_mmbfOpenEmrWnd(scrnid){
  1497. frmf_setParameter("SPMMB08400_scrnid", scrnid);
  1498. // modal("SPMMB08400", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  1499. var sStyle = "title=false,status=false"
  1500. frmf_modal("SPMMB08400", "SPMMB08400", null, null, 1, 0, 0, 0, 0, sStyle, null, null, "P")
  1501. return true;
  1502. }
  1503. /***************************************************************************************************
  1504. * Function : lf_onInitOrdListPopup
  1505. * Description : 1. 진료대상자리스트에서 열린 팝업 init event에서 실행 - lf_getEMRLoadingInfo_Top 호출
  1506. 2. 화면open -> 상단에서 필요한 정보 조회(commodulexp:SMZUM00100:lf_getEMRLoadingInfo_Top) -> 화면 로딩 시작
  1507. 3. 처방, 마취기록, CP, 진료기록 화면에서 사용
  1508. * Argument :
  1509. * return type : 없음
  1510. * Creator :
  1511. ***************************************************************************************************/
  1512. var lgv_bChkDoInitOrdListPopup = false; //lf_onInitOrdListPopup() 함수가 실행되었는가의 여부를 판단(true: 실행됨, false: 실행되지 않음)
  1513. function lf_onInitOrdListPopup(){
  1514. utlf_addLog("***** lf_onInitOrdListPopup *****");
  1515. //진료대상자 리스트를 통해 Open되었을경우만 상단을 다시 조회 함.
  1516. var sScrnId = this.getOwnerFrame().plgv_scrnId;
  1517. utlf_addLog(" sScrnId : " + sScrnId );
  1518. if(utlf_isNull(sScrnId)){ //메인화면에 띄울 경우에는 파라미터를 받기 위해 frmf_getMainFormParam() 함수를 사용한다.
  1519. var oParam = this.frmf_getMainFormParam();
  1520. utlf_addLog(" oParam : " + oParam );
  1521. if(!utlf_isNull(oParam)){
  1522. sScrnId = oParam.plgv_scrnId;
  1523. utlf_addLog(" sScrnId : " + sScrnId );
  1524. this.getOwnerFrame().plgv_scrnId = sScrnId; // 로드된 상태에서 재조회시 사용
  1525. }
  1526. }
  1527. utlf_addLog("sScrnId : " + sScrnId + " || sysf_getObjType(this) : " + sysf_getObjType(this) + " || this.name : " + this.name);
  1528. if(sysf_getObjType(this)=="Form" || this.name == "div_work"){ //폼의 형태이거나 메인에 포함되어 뜰 경우(단, 진료대상자에서 처방화면을 호출하였을 때)
  1529. if(!utlf_isNull(sScrnId) && sScrnId == "SMMMO04100"){
  1530. //상단정보 조회[MMOCommon.xjs]
  1531. var viewerObj = frmf_getViewer("patientInfo");
  1532. viewerObj.lf_getEMRLoadingInfo_Top("init");
  1533. lgv_bChkDoInitOrdListPopup = true;
  1534. }
  1535. }
  1536. }
  1537. /***************************************************************************************************
  1538. * Function : lf_onLoadOrdListPopup
  1539. * Description : 1. 진료대상자리스트에서 열리지 않은 팝업이나 화면 onLoad event에서 실행 - lf_initPageByBroadcast 호출
  1540. 2. 화면open -> 상단정보 조회 -> 화면 로딩 시작(lf_initPageByBroadcast)
  1541. 3. 처방, 마취기록, CP, 진료기록 화면에서 사용
  1542. * Argument :
  1543. * return type : 없음
  1544. * Creator :
  1545. ***************************************************************************************************/
  1546. function lf_onLoadOrdListPopup(){
  1547. utlf_addLog("lgv_bChkDoInitOrdListPopup : " + lgv_bChkDoInitOrdListPopup);
  1548. //상단조회(lf_onInitOrdListPopup) 함수가 실행되지 않았을 때만 실행한다.
  1549. if(!lgv_bChkDoInitOrdListPopup){
  1550. lf_initPageByBroadcast("init");
  1551. lgv_bChkDoInitOrdListPopup = false;
  1552. }
  1553. }]]></Script>