HIRAEF.xjs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  3. * System Name : K-u
  4. * Job Name :
  5. * File Name : HIRAEF.xjs
  6. * Creator : 손병은
  7. * Make Date : 2019-04-11
  8. *
  9. * Description :
  10. *---------------------------------------------------------------------------------------
  11. * Modify Date Modifier Modify Description
  12. *---------------------------------------------------------------------------------------
  13. *
  14. *
  15. *---------------------------------------------------------------------------------------
  16. ****************************************************************************************/
  17. var GUID = "{B377BB36-6EF3-4C24-943B-74D8F3FC7FA5}";
  18. var actDocument = new ActiveX("HIRA.EformEntry.Model.Document");
  19. actDocument.progid = GUID;
  20. /****************************************************************************************
  21. * Argument :
  22. * Description : Document 라이브러리를 생성한다.
  23. ****************************************************************************************/
  24. function eff_createDocLib()
  25. {
  26. var lib;
  27. // 심평원모듈 초기화
  28. try{
  29. lib = actDocument.createObject(GUID);
  30. }catch(e){
  31. sysf_messageBox("심평원 e-Form Agent 를 다운받아 설치 후 이용바랍니다.\n( https://ef.hira.or.kr/efweb/index.do )","E");
  32. trace(e.message);
  33. return ;
  34. }
  35. return lib;
  36. }
  37. /****************************************************************************************
  38. * Argument :
  39. * Description : Document를 최종제출한다.
  40. ****************************************************************************************/
  41. function eff_updateTempDocumentStatus(param, doc_no)
  42. {
  43. //Document 클래스 선언
  44. var doc = eff_createDocLib();
  45. var objMetaDs = eval(param.metaDs);
  46. var objResultDs = eval(param.resultDs);
  47. var ykiho = objMetaDs.getColumn(0, "ykiho");
  48. objResultDs.setColumn(0, "doc_no", doc_no);
  49. //임시 문서 상태변경
  50. var response = doc.updateTmpDocStat(ykiho, doc_no);
  51. if (response.Result == 1)
  52. {
  53. objResultDs.setColumn(0, "result","Y");
  54. objResultDs.setColumn(0, "doc_status","E");
  55. objResultDs.setColumn(0, "doc_no", response.GetDataResult("DOC_NO"));
  56. }
  57. else
  58. {
  59. objResultDs.setColumn(0, "result","N");
  60. objResultDs.setColumn(0, "errmessage",response.ErrorMessage);
  61. objResultDs.setColumn(0, "doc_status","T");
  62. }
  63. objResultDs.setColumn(0, "outjson", response.ToJson());
  64. }
  65. /****************************************************************************************
  66. * Argument :
  67. * Description : 임시Document를 삭제한다.
  68. ****************************************************************************************/
  69. function eff_deleteTempDocument(param, doc_no)
  70. {
  71. //Document 클래스 선언
  72. var doc = eff_createDocLib();
  73. var objMetaDs = eval(param.metaDs);
  74. var objResultDs = eval(param.resultDs);
  75. var ykiho = objMetaDs.getColumn(0, "ykiho");
  76. objResultDs.setColumn(0, "doc_no", doc_no);
  77. //임시 문서 상태변경
  78. var response = doc.deleteTmpDoc(ykiho, doc_no);
  79. if (response.Result == 1)
  80. {
  81. objResultDs.setColumn(0, "result","Y");
  82. objResultDs.setColumn(0, "doc_status","D");
  83. objResultDs.setColumn(0, "doc_no", response.GetDataResult("DOC_NO"));
  84. }
  85. else
  86. {
  87. objResultDs.setColumn(0, "result","N");
  88. objResultDs.setColumn(0, "errmessage",response.ErrorMessage);
  89. objResultDs.setColumn(0, "doc_status","T");
  90. }
  91. objResultDs.setColumn(0, "outjson", response.ToJson());
  92. }
  93. /****************************************************************************************
  94. * Argument :
  95. * Description : Document를 생성한다.
  96. ****************************************************************************************/
  97. function eff_createDocument(param, doc_no)
  98. {
  99. //Document 클래스 선언
  100. var doc = eff_createDocLib();
  101. var objMetaDs = eval(param.metaDs);
  102. var objElementDs = eval(param.elementDs);
  103. var strGridDs = param.gridDs;
  104. var objResultDs = eval(param.resultDs);
  105. for(var i=0; i<objMetaDs.getColCount(); i++){
  106. var colnm = objMetaDs.getColumnInfo(i).name;
  107. var colval = utlf_transNullToEmpty(objMetaDs.getColumn(0, colnm));
  108. doc.Metadata.Add(colnm.toUpperCase(), colval);
  109. //trace('doc.Metadata.Add("'+colnm.toUpperCase()+'", "'+colval+'");');
  110. }
  111. if(!utlf_isNull(doc_no)){
  112. doc.Metadata.Add("DOC_NO", doc_no);
  113. }
  114. for(var i=0; i<objElementDs.getColCount(); i++){
  115. var colnm = objElementDs.getColumnInfo(i).name;
  116. var colval = utlf_transNullToEmpty(objElementDs.getColumn(0, colnm));
  117. doc.Elements.Add(colnm.toUpperCase(), colval);
  118. //trace('doc.Elements.Add("'+colnm.toUpperCase()+'", "'+colval+'");');
  119. }
  120. if(strGridDs != null){
  121. var sInTableDsArr = strGridDs.split(" ");
  122. for(var i=0; i<sInTableDsArr.length; i++){
  123. var arr = sInTableDsArr[i].split(":");
  124. var key = arr[0];
  125. var objTableDs = eval(arr[1]);
  126. // 비어있으면 수행하지 않음
  127. if(objTableDs == undefined) continue;
  128. for(var j=0; j<objTableDs.getColCount(); j++){
  129. doc.Tables.AddColumn(key, objTableDs.getColumnInfo(j).name.toUpperCase());
  130. //trace('doc.Tables.AddColumn("'+key+'", "'+ objTableDs.getColumnInfo(j).name.toUpperCase() +'");');
  131. }
  132. for(var j=0; j<objTableDs.rowcount; j++){
  133. doc.Tables.AddRow(key);
  134. //trace('doc.Tables.AddRow("'+key+'");');
  135. for(var k=0; k<objTableDs.getColCount(); k++){
  136. var colNm = objTableDs.getColumnInfo(k).name;
  137. var colVal = utlf_transNullToEmpty(objTableDs.getColumn(j, colNm));
  138. doc.Tables.SetRowDataByColName(key, j, colNm.toUpperCase(), colVal);
  139. //trace('doc.Tables.SetRowDataByColName("'+key+'", '+j+', "'+colNm.toUpperCase()+'", "'+colVal+'");');
  140. }
  141. }
  142. }
  143. }
  144. //doc.checkDocs();
  145. //서식 추가
  146. doc.addDoc();
  147. //서식 기재형식 점검 및 Json파싱
  148. var jsonResponses = doc.ToJson();
  149. var strRequest = "";
  150. var strResponse = "";
  151. var strResponseJson = "";
  152. if (jsonResponses.Result == 1)
  153. {
  154. for (var i = 0; i < jsonResponses.Count; i++)
  155. {
  156. var jsonResponse = jsonResponses.GetJsonConvertResponse(i);
  157. strRequest = strRequest + jsonResponse.Json + "\r\n";
  158. }
  159. objResultDs.setColumn(0, "result","");
  160. objResultDs.setColumn(0, "injson",strRequest);
  161. //trace("입력:"+strRequest);
  162. }
  163. else
  164. {
  165. if (jsonResponses.Count < 1)
  166. {
  167. strResponse = jsonResponses.ErrorMessage;
  168. }
  169. else
  170. {
  171. for (var i = 0; i < jsonResponses.Count; i++)
  172. {
  173. var jsonResponse = jsonResponses.GetJsonConvertResponse(i);
  174. strResponse = jsonResponse.ErrorMessage;
  175. }
  176. }
  177. objResultDs.setColumn(0, "result","N");
  178. objResultDs.setColumn(0, "errmessage",strResponse);
  179. trace("[생성오류] 아래 기재형식 확인이 필요합니다.\n\n" + strResponse);
  180. return;
  181. }
  182. return doc;
  183. }
  184. /******************************************************************************************************
  185. * Argument : gubun ( E : 서식제출, T : 임시문서제출)
  186. * doc_no ( 문서번호 )
  187. * Result : 결과값. 서식하나씩만 처리하므로 결과값도 한 서식에 대한 결과만 저장됨.
  188. * Description : 전송요청을 처리한다.
  189. ******************************************************************************************************/
  190. function eff_trans(param, gubun, doc_no, doc_status)
  191. {
  192. if(doc_status == "E") return;
  193. var objResultDs = eval(param.resultDs);
  194. objResultDs.clearData();
  195. objResultDs.addRow();
  196. objResultDs.setColumn(0, "doc_status",gubun);
  197. objResultDs.setColumn(0, "doc_no",doc_no);
  198. // 임시저장된 문서 최종제출 시에는 상태변경 전송한다.
  199. if(gubun == "E" && doc_status == "T"){
  200. eff_updateTempDocumentStatus(param, doc_no);
  201. return;
  202. }
  203. // 임시저장된 문서 삭제 시
  204. if(gubun == "D" && doc_status == "T"){
  205. eff_deleteTempDocument(param, doc_no);
  206. return;
  207. }
  208. // document 생성
  209. var doc = eff_createDocument(param, doc_no);
  210. if(doc == null) return;
  211. //createDoc : 문서 제출, createTmpDoc : 임시 문서 제출
  212. var responses = null;
  213. for (var i = 0; i < doc.Metadata.Count; i++)
  214. {
  215. trace("###"+doc.Metadata.GetKeyByIndex(i) + " : " + doc.Metadata.GetValueByIndex(i));
  216. }
  217. if(gubun == "E"){
  218. responses = doc.createDoc();
  219. }else if(gubun == "T"){
  220. if(doc_status == "T" && !utlf_isNull(doc_no)){
  221. responses = doc.updateTmpDoc();
  222. }else{
  223. responses = doc.createTmpDoc();
  224. }
  225. }
  226. var strRequest = "";
  227. var strResponse = "";
  228. var strResponseJson = "";
  229. var strDocNo = "";
  230. if (responses.Result == 1)
  231. {
  232. for (var i = 0; i < responses.Count; i++)
  233. {
  234. var response = responses.GetMasterResponse(i);
  235. strResponse = strResponse + "DOC_NO : " + response.GetDataResult("DOC_NO") + "\r\n"
  236. + "SUPL_DATA_FOM_CD : " + response.GetDataResult("SUPL_DATA_FOM_CD") + "\r\n"
  237. + "RCV_NO : " + response.GetDataResult("RCV_NO") + "\r\n"
  238. + "SP_SNO : " + response.GetDataResult("SP_SNO") + "\r\n"
  239. + "HOSP_RNO : " + response.GetDataResult("HOSP_RNO") + "\r\n"
  240. + "PAT_NM : " + response.GetDataResult("PAT_NM") + "\r\n"
  241. + "INSUP_TP_CD : " + response.GetDataResult("INSUP_TP_CD") + "\r\n"
  242. + "DMD_NO : " + response.GetDataResult("DMD_NO") + "\r\n"
  243. + "DOC_NO : " + response.GetDataResult("DOC_NO") + "\r\n"
  244. ;
  245. strResponseJson = strResponseJson + response.ToJson();
  246. strDocNo = response.GetDataResult("DOC_NO")
  247. }
  248. objResultDs.setColumn(0, "result","Y");
  249. objResultDs.setColumn(0, "outjson",strResponseJson);
  250. objResultDs.setColumn(0, "doc_no",strDocNo);
  251. }
  252. else
  253. {
  254. if (responses.Count < 1)
  255. {
  256. strResponse = strResponse + responses.ErrorMessage;
  257. strResponseJson = strResponseJson + responses.ToJson();
  258. }
  259. else
  260. {
  261. for (var i = 0; i < responses.Count; i++)
  262. {
  263. var response = responses.GetMasterResponse(i);
  264. strResponse = strResponse + response.ErrorMessage;
  265. strResponseJson = strResponseJson + responses.ToJson();
  266. }
  267. }
  268. objResultDs.setColumn(0, "result","N");
  269. objResultDs.setColumn(0, "errmessage",strResponse);
  270. objResultDs.setColumn(0, "outjson",strResponseJson);
  271. trace("[전송오류] 아래 기재형식 확인이 필요합니다.\n\n" + strResponse);
  272. }
  273. trace("출력:"+strResponse);
  274. trace("출력(Json):"+strResponseJson);
  275. }
  276. ]]></Script>