Common.cs 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863
  1. #region Copyright © 2015 CLIPSOFT Co.,Ltd. All Rights Reserved.
  2. //
  3. // All rights are reserved. Reproduction or transmission in whole or in part,
  4. // in any form or by any means, electronic, mechanical or otherwise, is
  5. // prohibited without the prior written consent of the copyright owner.
  6. //
  7. // Filename:Common.cs
  8. //
  9. #endregion
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Net;
  13. using System.Net.Sockets;
  14. using System.Text;
  15. namespace CLIP.eForm.Consent.UI {
  16. /// <summary>
  17. /// Global Parameter를 생성하기 위한 클래스
  18. /// </summary>
  19. /// <remarks>
  20. /// <p>[설계자]</p>
  21. /// <p> 클립소프트 연구소 홍지철 (jchong@clipsoft.co.kr)</p>
  22. /// <p>[원본 작성자]</p>
  23. /// <p> 클립소프트 연구소 홍지철 (jchong@clipsoft.co.kr)</p>
  24. /// <p>[수정 작성자]</p>
  25. /// <p> 클립소프트 기술부 이인희</p>
  26. /// <p>----------------------------------------------------------------------------------------</p>
  27. /// <p>[HISTORY]</p>
  28. /// <p> 2015-08-06 : 최초작성</p>
  29. /// <p>----------------------------------------------------------------------------------------</p>
  30. /// </remarks>
  31. public class Common {
  32. public static Dictionary<FOSParameter, string> CreateGlobalParamsDictionary(string instcd) {
  33. Dictionary<FOSParameter, string> dic = new Dictionary<FOSParameter, string>();
  34. foreach (string s in Enum.GetNames(typeof(FOSParameter))) {
  35. dic.Add((FOSParameter)Enum.Parse(typeof(FOSParameter), s), string.Empty);
  36. }
  37. // 전자동의서 팝업창에서 연결 할 주소 파라미터를 매핑
  38. //dic[FOSParameter.PopupPath] = instcd == "031" ? "https://ema031.knuh.kr:9091/" : "https://ema032.knuh.kr:8091/";
  39. dic[FOSParameter.Instcd] = instcd;
  40. return dic;
  41. }
  42. public static Boolean isCompressed = false;
  43. public static byte[] Zip(string str) {
  44. var bytes = System.Text.Encoding.UTF8.GetBytes(str);
  45. using (var msi = new System.IO.MemoryStream(bytes))
  46. using (var mso = new System.IO.MemoryStream()) {
  47. using (var gs = new System.IO.Compression.GZipStream(mso, System.IO.Compression.CompressionMode.Compress)) {
  48. CopyTo(msi, gs);
  49. }
  50. return mso.ToArray();
  51. }
  52. }
  53. public static string Unzip(byte[] bytes) {
  54. using (var msi = new System.IO.MemoryStream(bytes))
  55. using (var mso = new System.IO.MemoryStream()) {
  56. using (var gs = new System.IO.Compression.GZipStream(msi, System.IO.Compression.CompressionMode.Decompress)) {
  57. CopyTo(gs, mso);
  58. }
  59. return System.Text.Encoding.UTF8.GetString(mso.ToArray());
  60. }
  61. }
  62. public static void CopyTo(System.IO.Stream src, System.IO.Stream dest) {
  63. byte[] bytes = new byte[4096];
  64. int cnt;
  65. while ((cnt = src.Read(bytes, 0, bytes.Length)) != 0) {
  66. dest.Write(bytes, 0, cnt);
  67. }
  68. }
  69. public static String createParameters(Dictionary<FOSParameter, String> parameterMap) {
  70. StringBuilder sb = new StringBuilder();
  71. if (parameterMap == null) {
  72. return "";
  73. }
  74. foreach (FOSParameter paramKey in parameterMap.Keys) {
  75. sb.AppendFormat("<param key=\"{0}\"><![CDATA[{1}]]></param>", GetFOSName(paramKey, "DCUMC"), parameterMap[paramKey]);
  76. }
  77. return sb.ToString();
  78. }
  79. public static String getNewEptFosString(String formServiceUrl, string baseConsentSvcURL, Dictionary<FOSParameter, String> globalParams, List<String> formIds, List<String> consentMstRids) {
  80. StringBuilder sb = new StringBuilder();
  81. sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  82. sb.Append("<fos version=\"1.0\">");
  83. sb.Append("<global>");
  84. sb.Append(string.Format("<page-template path=\"{0}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", formServiceUrl));
  85. sb.Append("<template-get-parameters>");
  86. sb.Append("<post-param key=\"parameter\"><![CDATA[{}]]></post-param>");
  87. sb.Append("</template-get-parameters>");
  88. sb.Append("<parameters>");
  89. sb.Append("</parameters>");
  90. sb.Append("</page-template>");
  91. sb.Append("</global>");
  92. sb.Append("<form-list>");
  93. // 서식 open 시퀀스
  94. var seq = 1;
  95. var i = 0;
  96. var path = baseConsentSvcURL + "FormSvc.aspx/";
  97. foreach (string formId in formIds) {
  98. // 서식을 불러오기 위한 서식 정보 목록 요소
  99. sb.Append(string.Format("<form name=\"{0}\" open-sequence=\"{1}\" path=\"{2}\" request-encode=\"utf-8\" response-encode=\"utf-8\" compression=\"false\">", "noname", seq++, path));
  100. sb.Append("<parameters>");
  101. sb.Append(createParameters(globalParams));
  102. sb.Append("</parameters>");
  103. sb.Append("<form-get-parameters>");
  104. sb.Append("<post-param key=\"use-repository\"><![CDATA[false]]></post-param>");
  105. // 서식을 불러오기 위한 서비스 파리미터
  106. sb.Append(String.Format("<post-param key=\"ConsentMstRid\"><![CDATA[{0}]]></post-param>", consentMstRids[i++].ToString()));
  107. sb.Append("<post-param key=\"DUMMY\"><![CDATA[DUMMY]]></post-param>");
  108. sb.Append("</form-get-parameters>");
  109. sb.Append("</form>");
  110. }
  111. sb.Append("</form-list>");
  112. sb.Append("</fos>");
  113. return sb.ToString();
  114. }
  115. /// <summary>
  116. /// V2 버전 FOS string 반환
  117. /// </summary>
  118. /// <param name="formServiceUrl">전자동의서 서버 URL</param>
  119. /// <param name="globalParams">글로벌 파라미터 목록</param>
  120. /// <param name="listParams">리스트 파라미터 목록</param>
  121. /// <returns>생성된 fos string</returns>
  122. public static String getNewFosString(String formServiceUrl, Dictionary<FOSParameter, String> globalParams, Dictionary<FOSParameter, string> fosFormParams, List<String> formIds) {
  123. StringBuilder sb = new StringBuilder();
  124. sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  125. sb.Append("<fos version=\"1.0\">");
  126. sb.Append("<global>");
  127. sb.Append(string.Format("<page-template path=\"{0}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", formServiceUrl));
  128. sb.Append("<template-get-parameters>");
  129. sb.Append("<post-param key=\"parameter\"><![CDATA[{}]]></post-param>");
  130. sb.Append("</template-get-parameters>");
  131. sb.Append("</page-template>");
  132. sb.Append("<parameters>");
  133. sb.Append(createParameters(globalParams));
  134. sb.Append("</parameters>");
  135. sb.Append("</global>");
  136. sb.Append("<form-list>");
  137. // 서식 open 시퀀스
  138. var seq = 1;
  139. foreach (string formId in formIds) {
  140. // 서식을 불러오기 위한 서식 정보 목록 요소
  141. sb.Append(string.Format("<form name=\"{0}\" open-sequence=\"{1}\" path=\"{2}\" request-encode=\"utf-8\" response-encode=\"utf-8\" compression=\"false\">", "noname", seq++, formServiceUrl));
  142. // 서식을 불러오기 위한 서비스 파리미터 상위 요소(서비스 호출시 사용)
  143. sb.Append("<form-get-parameters>");
  144. sb.Append("<post-param key=\"parameter\"><![CDATA[{");
  145. // 서식을 불러오기 위한 서비스 파리미터
  146. sb.Append(string.Format("\"formId\":{0}, \"formVersion\":\"{1}\"", formId, "-1"));
  147. sb.Append("}]]></post-param>");
  148. sb.Append("</form-get-parameters>");
  149. // 서식에 사용되는 파라미터 목록 요소
  150. sb.Append("<parameters>");
  151. sb.Append(createParameters(globalParams));
  152. sb.Append("</parameters>");
  153. // 서식에 필요한 첨부 파일 목록 요소
  154. //sb.Append("<attachments>");
  155. //<record-files> //음성 녹음 파일 목록 요소
  156. // <record-file> // 음성 녹음 파일
  157. //</record-files>
  158. //<pen-drawing> // 펜 정보를 불러올 수 있는 정보 목록 요소
  159. // <document/> // 본문(기존 디자인 되어있는 여역)의 펜 정보를 불러올 수 있는 URL 정보를 가지고 있는 요소
  160. // <pen-drawing-get-parameters/> // 본문(기존 디자인 되어있는 영역)의 펜 정보를 조회하기 위한 파라미터 묶음
  161. // <post-param> // 본문(기존 디자인 되어있는 영역)의 펜 정보를 조회하기 위한 파라미터
  162. //</pen-drawing>
  163. //<page-template-list> // 서식에 추가할 페이지 템플릿 리스트
  164. // <page_template> // 서식에 추가할 페이지 템플릿 정보
  165. // <template-get-parameters> // 페이지 템플릿 추가 시 사용되는 파라미터 묶음
  166. // <post-param> // 페이지 템플릿 추가 시 사용되는 파라미터
  167. //sb.Append("</attachments>");
  168. // 서식에서 불로올 데이터 정보
  169. //sb.Append("<form-data>");
  170. //sb.Append("</form-data>");
  171. // 서식에 반영되는 페이지 템플릿 목록을 조회하기 위한 상위 요소
  172. //sb.Append("<page-template>");
  173. //<template-get-parameters> //서식에 반영되는 페이지 템플릿 목록을 조회하기 위한 파라미터 묶음
  174. // <post_param> // 서식에 반영되는 페이지 템플릿 목록을 조회하기 위한 파라미터
  175. //sb.Append("</page-template>");
  176. sb.Append("</form>");
  177. }
  178. sb.Append("</form-list>");
  179. sb.Append("</fos>");
  180. return sb.ToString();
  181. }
  182. /// <summary>
  183. /// param, guid값을 넘겨받아 그를 포함하는 fos를 리턴한다.
  184. /// </summary>
  185. /// <param name="guid"></param>
  186. /// <param name="fosParams"></param>
  187. /// <returns></returns>
  188. public static string GetFosString(List<string> guids, string formServiceUrl, Dictionary<FOSParameter, string> fosGlobalParams, Dictionary<string, Dictionary<FOSParameter, string>> fosFormParams, string pInstCd) {
  189. StringBuilder fos = new StringBuilder();
  190. fos.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  191. fos.Append("<fos version=\"1.0\">");
  192. fos.Append("<global>");
  193. fos.Append(GetParamsString(fosGlobalParams, pInstCd));
  194. fos.Append(string.Format("<page-template path=\"{0}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", formServiceUrl));
  195. fos.Append("<template-get-parameters>");
  196. fos.Append("<post-param key=\"OP\"><![CDATA[PAGE_TEMPLATE]]></post-param>");
  197. fos.Append("<post-param key=\"PD\"><![CDATA[<data>");
  198. fos.Append("<action>GET_LIST</action>");
  199. fos.Append("<params>");
  200. fos.Append("<param name='adaptername'>defaultadapter</param>");
  201. fos.Append("</params>");
  202. fos.Append("</data>]]></post-param>");
  203. fos.Append("</template-get-parameters>");
  204. fos.Append("</page-template>");
  205. fos.Append("</global>");
  206. fos.Append("<form-list>");
  207. int openSeq = 1;
  208. foreach (string guid in guids) {
  209. fos.Append(string.Format("<form name=\"noname\" open-sequence=\"{0}\" path=\"{1}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", openSeq, formServiceUrl));
  210. fos.Append("<parameters>");
  211. if (fosFormParams != null) {
  212. if (fosFormParams.ContainsKey(guid)) {
  213. Dictionary<FOSParameter, string> fosFormParamsByGuid = fosFormParams[guid];
  214. foreach (FOSParameter paramKey in fosFormParamsByGuid.Keys) {
  215. fos.Append(string.Format("<param name='{0}'><![CDATA[{1}]]></param>", GetFOSName(paramKey, pInstCd), fosFormParamsByGuid[paramKey]));
  216. }
  217. }
  218. }
  219. fos.Append("</parameters>");
  220. fos.Append("<form-get-parameters>");
  221. fos.Append("<post-param key=\"OP\"><![CDATA[VIEWER_FORM]]></post-param>");
  222. fos.Append("<post-param key=\"PD\"><![CDATA[<data>");
  223. fos.Append("<action>GET</action>");
  224. fos.Append("<params>");
  225. fos.Append("<param name='adaptername'>defaultadapter</param>");
  226. fos.Append("<param name='type'>guid</param>");
  227. fos.Append(string.Format("<param name='guid'>{0}</param>", guid));
  228. fos.Append("<param name='version'>-1</param>");
  229. fos.Append("</params>");
  230. fos.Append("</data>]]></post-param>");
  231. fos.Append("</form-get-parameters>");
  232. fos.Append("</form>");
  233. openSeq++;
  234. }
  235. fos.Append("</form-list>");
  236. fos.Append(" </fos>");
  237. return fos.ToString();
  238. }
  239. /// <summary>
  240. /// param, guid값을 넘겨받아 그를 포함하는 fos를 리턴한다.
  241. /// </summary>
  242. /// <param name="guid"></param>
  243. /// <param name="fosParams"></param>
  244. /// <returns></returns>
  245. public static string GetMultiFosString(string[] guids, string formServiceUrl, Dictionary<FOSParameter, string> fosGlobalParams, Dictionary<string, Dictionary<FOSParameter, string>> fosFormParams, string pInstCd) {
  246. StringBuilder fos = new StringBuilder();
  247. fos.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  248. fos.Append("<fos version=\"1.0\">");
  249. fos.Append("<global>");
  250. fos.Append("<parameters>");
  251. if (fosGlobalParams != null) { fos.Append(GetParamsString(fosGlobalParams, pInstCd)); }
  252. fos.Append("</parameters>");
  253. fos.Append(string.Format("<page-template path=\"{0}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", formServiceUrl));
  254. fos.Append("<template-get-parameters>");
  255. fos.Append("<post-param key=\"OP\"><![CDATA[PAGE_TEMPLATE]]></post-param>");
  256. fos.Append("<post-param key=\"PD\"><![CDATA[<data>");
  257. fos.Append("<action>GET_LIST</action>");
  258. fos.Append("<params>");
  259. fos.Append("<param name='adaptername'>defaultadapter</param>");
  260. fos.Append("</params>");
  261. fos.Append("</data>]]></post-param>");
  262. fos.Append("</template-get-parameters>");
  263. fos.Append("</page-template>");
  264. fos.Append("</global>");
  265. fos.Append("<form-list>");
  266. int openSeq = 1;
  267. foreach (string guid in guids) {
  268. fos.Append(string.Format("<form name=\"noname\" open-sequence=\"{0}\" path=\"{1}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", openSeq, formServiceUrl));
  269. fos.Append("<parameters>");
  270. if (fosFormParams != null) {
  271. if (fosFormParams.ContainsKey(openSeq.ToString())) {
  272. Dictionary<FOSParameter, string> fosFormParamsByGuid = fosFormParams[openSeq.ToString()];
  273. foreach (FOSParameter paramKey in fosFormParamsByGuid.Keys) {
  274. fos.Append(string.Format("<param key='{0}'><![CDATA[{1}]]></param>", GetFOSName(paramKey, pInstCd), fosFormParamsByGuid[paramKey]));
  275. }
  276. }
  277. }
  278. fos.Append("</parameters>");
  279. fos.Append("<form-get-parameters>");
  280. fos.Append("<post-param key=\"OP\"><![CDATA[VIEWER_FORM]]></post-param>");
  281. fos.Append("<post-param key=\"PD\"><![CDATA[<data>");
  282. fos.Append("<action>GET</action>");
  283. fos.Append("<params>");
  284. fos.Append("<param name='adaptername'>defaultadapter</param>");
  285. fos.Append("<param name='type'>guid</param>");
  286. fos.Append(string.Format("<param name='guid'>{0}</param>", guid));
  287. fos.Append("<param name='version'>-1</param>");
  288. fos.Append("</params>");
  289. fos.Append("</data>]]></post-param>");
  290. fos.Append("</form-get-parameters>");
  291. fos.Append("</form>");
  292. openSeq++;
  293. }
  294. fos.Append("</form-list>");
  295. fos.Append(" </fos>");
  296. return fos.ToString();
  297. }
  298. public static string GetMultiFosString(string[] guids, string formServiceUrl, Dictionary<FOSParameter, string> fosGlobalParams, Dictionary<string, Dictionary<FOSParameter, string>> fosFormParams, string pInstCd, out string ocrtag) {
  299. ocrtag = string.Empty;
  300. StringBuilder fos = new StringBuilder();
  301. fos.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  302. fos.Append("<fos version=\"1.0\">");
  303. fos.Append("<global>");
  304. fos.Append("<parameters>");
  305. if (fosGlobalParams != null) { fos.Append(GetParamsString(fosGlobalParams, pInstCd)); }
  306. fos.Append("</parameters>");
  307. fos.Append(string.Format("<page-template path=\"{0}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", formServiceUrl));
  308. fos.Append("<template-get-parameters>");
  309. fos.Append("<post-param key=\"OP\"><![CDATA[PAGE_TEMPLATE]]></post-param>");
  310. fos.Append("<post-param key=\"PD\"><![CDATA[<data>");
  311. fos.Append("<action>GET_LIST</action>");
  312. fos.Append("<params>");
  313. fos.Append("<param name='adaptername'>defaultadapter</param>");
  314. fos.Append("</params>");
  315. fos.Append("</data>]]></post-param>");
  316. fos.Append("</template-get-parameters>");
  317. fos.Append("</page-template>");
  318. fos.Append("</global>");
  319. fos.Append("<form-list>");
  320. int openSeq = 1;
  321. foreach (string guid in guids) {
  322. fos.Append(string.Format("<form name=\"noname\" open-sequence=\"{0}\" path=\"{1}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", openSeq, formServiceUrl));
  323. fos.Append("<parameters>");
  324. if (fosFormParams != null) {
  325. if (fosFormParams.ContainsKey(openSeq.ToString())) {
  326. Dictionary<FOSParameter, string> fosFormParamsByGuid = fosFormParams[openSeq.ToString()];
  327. foreach (FOSParameter paramKey in fosFormParamsByGuid.Keys) {
  328. fos.Append(string.Format("<param key='{0}'><![CDATA[{1}]]></param>", GetFOSName(paramKey, pInstCd), fosFormParamsByGuid[paramKey]));
  329. if (string.IsNullOrEmpty(ocrtag) && GetFOSName(paramKey, pInstCd).Equals("parCMSGBD_ocr_cd")) {
  330. ocrtag = fosFormParamsByGuid[paramKey];
  331. }
  332. }
  333. }
  334. }
  335. fos.Append("</parameters>");
  336. fos.Append("<form-get-parameters>");
  337. fos.Append("<post-param key=\"OP\"><![CDATA[VIEWER_FORM]]></post-param>");
  338. fos.Append("<post-param key=\"PD\"><![CDATA[<data>");
  339. fos.Append("<action>GET</action>");
  340. fos.Append("<params>");
  341. fos.Append("<param name='adaptername'>defaultadapter</param>");
  342. fos.Append("<param name='type'>guid</param>");
  343. fos.Append(string.Format("<param name='guid'>{0}</param>", guid));
  344. fos.Append("<param name='version'>-1</param>");
  345. fos.Append("</params>");
  346. fos.Append("</data>]]></post-param>");
  347. fos.Append("</form-get-parameters>");
  348. fos.Append("</form>");
  349. openSeq++;
  350. }
  351. fos.Append("</form-list>");
  352. fos.Append(" </fos>");
  353. return fos.ToString();
  354. }
  355. /// <summary>
  356. /// param, guid값을 넘겨받아 그를 포함하는 fos를 리턴한다.
  357. /// </summary>
  358. /// <param name="actionParams"></param>
  359. /// <param name="formServiceUrl"></param>
  360. /// <returns></returns>
  361. public static string GetFosStringForEpt(Dictionary<string, string> actionParams, string formServiceUrl, Dictionary<FOSParameter, string> fosGlobalParams, string pInstCd) {
  362. bool isCompress = Common.isCompressed;
  363. StringBuilder fos = new StringBuilder();
  364. fos.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  365. fos.Append("<fos version=\"1.0\">");
  366. fos.Append("<global>");
  367. fos.Append(GetParamsString(fosGlobalParams, pInstCd));
  368. fos.Append(string.Format("<page-template path=\"{0}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", formServiceUrl));
  369. fos.Append("<template-get-parameters>");
  370. fos.Append("<post-param key=\"OP\"><![CDATA[PAGE_TEMPLATE]]></post-param>");
  371. fos.Append("<post-param key=\"PD\"><![CDATA[<data>");
  372. fos.Append("<action>GET_LIST</action>");
  373. fos.Append("<params>");
  374. fos.Append("<param name='adaptername'>defaultadapter</param>");
  375. fos.Append("</params>");
  376. fos.Append("</data>]]></post-param>");
  377. fos.Append("</template-get-parameters>");
  378. fos.Append("</page-template>");
  379. fos.Append("</global>");
  380. fos.Append("<form-list>");
  381. fos.Append(string.Format("<form name=\"noname\" open-sequence=\"1\" path=\"{0}\" request-encode=\"utf-8\" response-encode=\"utf-8\">", formServiceUrl));
  382. //fos.Append(string.Format("<form name=\"noname\" open-sequence=\"1\" path=\"{0}\" request-encode=\"utf-8\" response-encode=\"utf-8\" {1}>", formServiceUrl, (isCompress) ? "compression =\"true\"" : ""));
  383. fos.Append("<parameters />");
  384. fos.Append("<form-get-parameters>");
  385. fos.Append("<post-param key=\"OP\"><![CDATA[VIEWER_DATA]]></post-param>");
  386. fos.Append("<post-param key=\"PD\"><![CDATA[<data>");
  387. fos.Append("<action>GET_DATA</action>");
  388. fos.Append("<params>");
  389. fos.Append("<param name='adaptername'>defaultadapter</param>");
  390. foreach (string paramKey in actionParams.Keys) {
  391. fos.Append(string.Format("<param name='{0}'>{1}</param>", paramKey, actionParams[paramKey]));
  392. }
  393. fos.Append("</params>");
  394. fos.Append("</data>]]></post-param>");
  395. fos.Append("</form-get-parameters>");
  396. fos.Append("</form>");
  397. fos.Append("</form-list>");
  398. fos.Append("</fos>");
  399. return fos.ToString();
  400. }
  401. public static string GetAllFOSParamString(string pInstCd) {
  402. Dictionary<FOSParameter, string> dic = new Dictionary<FOSParameter, string>();
  403. StringBuilder _sb = new StringBuilder();
  404. foreach (string s in Enum.GetNames(typeof(FOSParameter))) {
  405. _sb.AppendFormat("{0}:{1}{2}", GetFOSName((FOSParameter)Enum.Parse(typeof(FOSParameter), s), "org")
  406. , GetFOSName((FOSParameter)Enum.Parse(typeof(FOSParameter), s), pInstCd)
  407. , ";");
  408. }
  409. return _sb.ToString();
  410. }
  411. private static string GetParamsString(Dictionary<FOSParameter, string> fosParams, string pInstCd) {
  412. StringBuilder parametersOfFos = new StringBuilder();
  413. parametersOfFos.Append("<parameters>");
  414. foreach (FOSParameter paramKey in fosParams.Keys) {
  415. parametersOfFos.AppendFormat("<param key=\"{0}\"><![CDATA[{1}]]></param>", GetFOSName(paramKey, pInstCd), fosParams[paramKey]);
  416. }
  417. parametersOfFos.Append("</parameters>");
  418. return parametersOfFos.ToString();
  419. }
  420. private static string GetFOSName(FOSParameter pName, string pInstCd) {
  421. string _name = "";
  422. switch (pInstCd) {
  423. case "031":
  424. _name = m_FOSParamArr_031[Array.IndexOf(Enum.GetValues(pName.GetType()), pName)];
  425. break;
  426. case "032":
  427. _name = m_FOSParamArr_032[Array.IndexOf(Enum.GetValues(pName.GetType()), pName)];
  428. break;
  429. default:
  430. _name = m_FOSParamArr_org[Array.IndexOf(Enum.GetValues(pName.GetType()), pName)];
  431. break;
  432. }
  433. return _name;
  434. }
  435. private static string[] m_FOSParamArr_031 = { "parCMDCFT_device"
  436. , "parCMDCFT_1PrintIP"
  437. , "parCMDCHD_1PatientNo"
  438. , "parCMDCHD_1SexAge"
  439. , "parCMDCHD_1PatientNm"
  440. , "parCMDCHD_1SocialSecuNo"
  441. , "parNUR_Fast_HospitalroomNo"
  442. , "parCMDCHD_1VisitDt"
  443. , "parCMDCHD_1DepartmentNm"
  444. , "parCMDCFT_1PrintNm"
  445. , "parCMDCBD_PopupV1_SurgeryDepartment"
  446. , "parCMDCBD_PopupV1_SurgeryDoctor"
  447. , "parCMDCBD_PopupV1_DxNm"
  448. , "parCMDCBD_DiseaseBox_bp"
  449. , "parCMDCBD_DiseaseBox_dm"
  450. , "parCMDCBD_DiseaseBox_1CardioVascular"
  451. , "parCMDCBD_DiseaseBox_3Metabolic"
  452. , "parCMDCBD_DiseaseBox_2Respiratory"
  453. , "parCMDCBD_DiseaseBox_9History1"
  454. , "parCMDCBD_DiseaseBox_4UnusualConstitution2"
  455. , "parCMDCBD_DiseaseBox_6Medicine"
  456. , "parCMDCBD_DiseaseBox_8HabitSmoking"
  457. , "parCMDCBD_DiseaseBox_4UnusualConstitution1"
  458. , "parCMDCBD_DiseaseBox_9History2"
  459. , "parCMDCBD_DiseaseBox_7Airway"
  460. , "parCMDCBD_DiseaseBox_5Blood"
  461. , "parCMDCBD_status_etc"
  462. , "parCMDCBD_signdate"
  463. , "parCMDCBD_signtime"
  464. , "parCMDCFT_1PrintDt"
  465. , "parCMDCBD_Doctor_Doctor1Nm"
  466. , "parCMSGBD_ocr_cd"
  467. , "parCMSGBD_INPUTNm"
  468. , "parCMSGBD_INPUTSignature"
  469. , "parCMDCHD_1DepartmentCd"
  470. , "UrlParam"
  471. , "parCMSGBD_PT_address"
  472. , "parCMSGBD_PT_tel"
  473. , "parCMSGBD_Insukind"
  474. , "parCMSGBD_PT_birthday"
  475. , "IO_print_comment"
  476. , "parCMDCBD_PopupV1_OPNm"
  477. , "parCMSGBD_INPUTTelNo"
  478. , "parDEFAULT_DUTINSTCD"
  479. , "parDEFAULT_POPUP_PATH"
  480. , "parCMDCBD_PopupV1_SurgeryCommonDepartment"
  481. , "parCMDCBD_Anst1DrNm"
  482. , "parCMDCBD_Anst1DeptNm"
  483. , "parCMDCBD_Anst1CommonDeptNm"
  484. , "parCMDCBD_Anst2DrNm"
  485. , "parCMDCBD_Anst2DeptNm"
  486. , "parCMDCBD_Anst2CommonDeptNm"
  487. , "parCMDCBD_Anst3DrNm"
  488. , "parCMDCBD_Anst3DeptNm"
  489. , "parCMDCBD_Anst3CommonDeptNm"
  490. , "parCMSGBD_INPUTDeptcd"
  491. , "parCMSGBD_Cretno"
  492. , "parCMSGBD_ExplDrNm"
  493. , "parCMSGBD_ExplDrSignature"
  494. , "parCMSGBD_ExplDrTelNo"
  495. , "parCMDCBD_OpRsrvNo"
  496. , "parCMDCHD_1PatientNmFix"
  497. , "parCMSGBD_PT_birthdayFix"
  498. , "parCMSGBD_PT_telFix"
  499. , "parCMDCBD_SpDrYN"
  500. , "parCMDCBD_ContStartDate"
  501. , "parCMDCBD_ContEndDate"
  502. , "parCMDCBD_RoomCapa"
  503. , "parCMDCBD_ContTelNo"
  504. , "parCMDCBD_ContStaff1Name"
  505. , "parCMDCBD_ContStaff2Name"
  506. , "parCMDCBD_ContStaff3Name"
  507. // 경대병원 태그 추가
  508. , "tag1"
  509. , "tag2"
  510. , "tag3"
  511. , "tag4"
  512. , "tag5"
  513. , "tag6"
  514. , "tag7"
  515. , "tag8"
  516. , "tag9"
  517. , "tag10"
  518. , "parCMDCBD_CardNo"
  519. , "parCMSGBD_ExplDrNm_P"
  520. , "parCMSGBD_ExplDrTelNo_P"
  521. , "parCMSGBD_ExplDrSignature_P"
  522. , "parCMDCHD_1SocialSecuNo_org" };
  523. private static string[] m_FOSParamArr_032 = { "parCMDCFT_device"
  524. , "parCMDCFT_1PrintIP"
  525. , "parCMDCHD_1PatientNo"
  526. , "parCMDCHD_1SexAge"
  527. , "parCMDCHD_1PatientNm"
  528. , "parCMDCHD_1SocialSecuNo"
  529. , "parNUR_Fast_HospitalroomNo"
  530. , "parCMDCHD_1VisitDt"
  531. , "parCMDCHD_1DepartmentNm"
  532. , "parCMDCFT_1PrintNm"
  533. , "parCMDCBD_PopupV1_SurgeryDepartment"
  534. , "parCMDCBD_PopupV1_SurgeryDoctor"
  535. , "parCMDCBD_PopupV1_DxNm"
  536. , "parCMDCBD_DiseaseBox_bp"
  537. , "parCMDCBD_DiseaseBox_dm"
  538. , "parCMDCBD_DiseaseBox_1CardioVascular"
  539. , "parCMDCBD_DiseaseBox_3Metabolic"
  540. , "parCMDCBD_DiseaseBox_2Respiratory"
  541. , "parCMDCBD_DiseaseBox_9History1"
  542. , "parCMDCBD_DiseaseBox_4UnusualConstitution2"
  543. , "parCMDCBD_DiseaseBox_6Medicine"
  544. , "parCMDCBD_DiseaseBox_8HabitSmoking"
  545. , "parCMDCBD_DiseaseBox_4UnusualConstitution1"
  546. , "parCMDCBD_DiseaseBox_9History2"
  547. , "parCMDCBD_DiseaseBox_7Airway"
  548. , "parCMDCBD_DiseaseBox_5Blood"
  549. , "parCMDCBD_status_etc"
  550. , "parCMDCBD_signdate"
  551. , "parCMDCBD_signtime"
  552. , "parCMDCFT_1PrintDt"
  553. , "parCMDCBD_Doctor_Doctor1Nm"
  554. , "parCMSGBD_ocr_cd"
  555. , "parCMSGBD_INPUTNm"
  556. , "parCMSGBD_INPUTSignature"
  557. , "parCMDCHD_1DepartmentCd"
  558. , "UrlParam"
  559. , "parCMSGBD_PT_address"
  560. , "parCMSGBD_PT_tel"
  561. , "parCMSGBD_Insukind"
  562. , "parCMSGBD_PT_birthday"
  563. , "IO_print_comment"
  564. , "parCMDCBD_PopupV1_OPNm"
  565. , "parCMSGBD_INPUTTelNo"
  566. , "parDEFAULT_DUTINSTCD"
  567. , "parDEFAULT_POPUP_PATH"
  568. , "parCMDCBD_PopupV1_SurgeryCommonDepartment"
  569. , "parCMDCBD_Anst1DrNm"
  570. , "parCMDCBD_Anst1DeptNm"
  571. , "parCMDCBD_Anst1CommonDeptNm"
  572. , "parCMDCBD_Anst2DrNm"
  573. , "parCMDCBD_Anst2DeptNm"
  574. , "parCMDCBD_Anst2CommonDeptNm"
  575. , "parCMDCBD_Anst3DrNm"
  576. , "parCMDCBD_Anst3DeptNm"
  577. , "parCMDCBD_Anst3CommonDeptNm"
  578. , "parCMSGBD_INPUTDeptcd"
  579. , "parCMSGBD_Cretno"
  580. , "parCMSGBD_ExplDrNm"
  581. , "parCMSGBD_ExplDrSignature"
  582. , "parCMSGBD_ExplDrTelNo"
  583. , "parCMDCBD_OpRsrvNo"
  584. , "parCMDCHD_1PatientNmFix"
  585. , "parCMSGBD_PT_birthdayFix"
  586. , "parCMSGBD_PT_telFix"
  587. , "parCMDCBD_SpDrYN"
  588. , "parCMDCBD_ContStartDate"
  589. , "parCMDCBD_ContEndDate"
  590. , "parCMDCBD_RoomCapa"
  591. , "parCMDCBD_ContTelNo"
  592. , "parCMDCBD_ContStaff1Name"
  593. , "parCMDCBD_ContStaff2Name"
  594. , "parCMDCBD_ContStaff3Name"
  595. // 경대병원 태그 추가
  596. , "tag1"
  597. , "tag2"
  598. , "tag3"
  599. , "tag4"
  600. , "tag5"
  601. , "tag6"
  602. , "tag7"
  603. , "tag8"
  604. , "tag9"
  605. , "tag10"
  606. , "parCMDCBD_CardNo"
  607. , "parCMSGBD_ExplDrNm_P"
  608. , "parCMSGBD_ExplDrTelNo_P"
  609. , "parCMSGBD_ExplDrSignature_P"
  610. , "parCMDCHD_1SocialSecuNo_org" };
  611. private static string[] m_FOSParamArr_org = { "IO_device" //동작코드(T: 임시 저장, C: 인증 저장, P: 출력, CP: 삭제)
  612. , "PrintIp"
  613. , "IO_Pt_ID"
  614. , "IO_sex_age_y_m"
  615. , "IO_Pt_name"
  616. , "IO_JuminNo"
  617. , "IO_roomNo"
  618. , "IO_ADdate"
  619. , "IO_Dept"
  620. , "IO_formname"
  621. , "IO_OPdept"
  622. , "IO_Opdr"
  623. , "IO_Dx"
  624. , "IO_bp"
  625. , "IO_dm"
  626. , "IO_heart"
  627. , "IO_kidney"
  628. , "IO_respiration"
  629. , "IO_hx"
  630. , "IO_allergy"
  631. , "IO_drug"
  632. , "IO_smoking"
  633. , "IO_idio"
  634. , "IO_nacrotics"
  635. , "IO_airway"
  636. , "IO_hemorrhage"
  637. , "IO_status_etc"
  638. , "IO_signdate"
  639. , "IO_signtime"
  640. , "IO_printtime"
  641. , "IO_maindr"
  642. , "IO_ocr_cd"
  643. , "IO_INPUTNM"
  644. , "IO_SIGNIMG"
  645. , "IO_DeptCd"
  646. , "UrlParam"
  647. , "IO_Pt_address"
  648. , "IO_Pt_tel"
  649. , "IO_Insukind"
  650. , "IO_PT_birthday"
  651. , "IO_print_comment"
  652. , "OperationName"
  653. , "UserTelNo"
  654. , "Instcd"
  655. , "PopupPath"
  656. , "OpCommDeptName"
  657. , "AnstDrName"
  658. , "AnstDeptName1"
  659. , "AnstCommDeptName1"
  660. , "AnstDrName2"
  661. , "AnstDeptName2"
  662. , "AnstCommDeptName2"
  663. , "AnstDrName3"
  664. , "AnstDeptName3"
  665. , "AnstCommDeptName3"
  666. , "UserDeptCd"
  667. , "CretNo"
  668. , "parCMSGBD_ExplDrNm"
  669. , "parCMSGBD_ExplDrSignature"
  670. , "parCMSGBD_ExplDrTelNo"
  671. , "parCMDCBD_OpRsrvNo"
  672. , "PatientNameFix"
  673. , "PatientBirthDayFix"
  674. , "PatientTelNoFix"
  675. , "SpecDoctorYN"
  676. , "ContStartDate"
  677. , "ContEndDate"
  678. , "RoomCapa"
  679. , "ContTelNo"
  680. , "ContStaff1Name"
  681. , "ContStaff2Name"
  682. , "ContStaff3Name"
  683. // 경대병원 태그 추가
  684. , "tag1"
  685. , "tag2"
  686. , "tag3"
  687. , "tag4"
  688. , "tag5"
  689. , "tag6"
  690. , "tag7"
  691. , "tag8"
  692. , "tag9"
  693. , "tag10"
  694. , "CardNo"
  695. , "parCMSGBD_ExplDrNm_P"
  696. , "parCMSGBD_ExplDrTelNo_P"
  697. , "parCMSGBD_ExplDrSignature_P"
  698. , "parCMDCHD_1SocialSecuNo_org" };
  699. }
  700. public enum FOSParameter {
  701. Device,
  702. PrintIp,
  703. PatientCode,
  704. PatientSexAge,
  705. PatientName,
  706. PatientRRN,
  707. RoomNo,
  708. VisitDate,
  709. DeptName,
  710. FormName,
  711. OpDeptName,
  712. OpDoctorName,
  713. DiagName,
  714. BP,
  715. DM,
  716. Heart,
  717. Kidney,
  718. Respiration,
  719. MedicalHistory,
  720. Allergy,
  721. Drug,
  722. Smoking,
  723. Idiosyncrasy,
  724. Nacrotics,
  725. Airway,
  726. Hemorrhage,
  727. EtcStatus,
  728. SignDate,
  729. SignTime,
  730. PrintTime,
  731. MainDoctor,
  732. OCRCode,
  733. UserName,
  734. SignImage,
  735. DeptCode,
  736. ImageUploadPath,
  737. PatientAddress,
  738. PatientTelNo,
  739. Insukind,
  740. PatientBirthDay,
  741. PrintComment,
  742. OperationName,
  743. UserTelNo,
  744. Instcd,
  745. PopupPath,
  746. OpCommDeptName,
  747. AnstDrName1,
  748. AnstDeptName1,
  749. AnstCommDeptName1,
  750. AnstDrName2,
  751. AnstDeptName2,
  752. AnstCommDeptName2,
  753. AnstDrName3,
  754. AnstDeptName3,
  755. AnstCommDeptName3,
  756. UserDeptCd,
  757. CretNo,
  758. ExplDrName, // 설명의사 이름
  759. ExplDrSign, // 설명의사 사인 이미지
  760. ExplDrTelNo, // 설명의사 전화번호
  761. OpRsrvNo, // 수술 예약번호
  762. PatientNameFix,
  763. PatientBirthDayFix,
  764. PatientTelNoFix,
  765. SpecDoctorYN,
  766. ContStartDate,
  767. ContEndDate,
  768. RoomCapa,
  769. ContTelNo,
  770. ContStaff1Name,
  771. ContStaff2Name,
  772. ContStaff3Name,
  773. // 경대병원 태그 추가
  774. tag1,
  775. tag2,
  776. tag3,
  777. tag4,
  778. tag5,
  779. tag6,
  780. tag7,
  781. tag8,
  782. tag9,
  783. tag10,
  784. CardNo,
  785. ExplDrName_P,
  786. ExplDrTelNo_p,
  787. ExplDrSign_p,
  788. PatientRRNOrg
  789. }
  790. }