InsuServices.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using PTMedicalInsurance.Helper;
  7. using PTMedicalInsurance.Common;
  8. using Newtonsoft.Json.Linq;
  9. using PTMedicalInsurance.Variables;
  10. using System.Windows.Forms;
  11. using System.Reflection;
  12. using FastReport.Utils;
  13. namespace PTMedicalInsurance.Business
  14. {
  15. class InsuServices
  16. {
  17. /// <summary>
  18. /// 根据HisType获取当前目录最大版本号
  19. /// </summary>
  20. /// <param name="directoryType"></param>
  21. /// <returns></returns>
  22. public JObject getDirectoryMaxVersionNO(int directoryType)
  23. {
  24. try
  25. {
  26. dynamic joParam = new JObject();
  27. joParam.HospitalDr = Global.inf.hospitalDr;
  28. joParam.InterfaceDr = Global.inf.interfaceDr;
  29. joParam.HisType = directoryType + 1;
  30. JObject joInparam = JsonHelper.setIrisInpar("09010037", joParam);
  31. InvokeHelper invoker = new InvokeHelper();
  32. JObject joRtn = invoker.invokeInsuService(joInparam.ToString(), "获取当前目录最大版本号");
  33. return joRtn;
  34. }
  35. catch (Exception ex)
  36. {
  37. return JsonHelper.setExceptionJson(-1, "获取版本号异常:", ex.Message);
  38. }
  39. }
  40. /// <summary>
  41. /// 通过分页的方式查询医保目录
  42. /// </summary>
  43. /// <param name="currentPage"></param>
  44. /// <param name="pageSize"></param>
  45. /// <param name="irisCode"></param>
  46. /// <param name="directoryType"></param>
  47. public JObject getDirectoryByPagination(int currentPage, int pageSize, string serviceCode, int directoryType, string directoryCode, string directoryName, int directoryDr)
  48. {
  49. try
  50. {
  51. InvokeHelper invoker = new InvokeHelper();
  52. dynamic joInput = new JObject();
  53. joInput.code = serviceCode;
  54. dynamic joTmp = new JObject();
  55. JArray jaParmas = new JArray();
  56. joTmp.HospitalDr = Global.inf.hospitalDr;
  57. joTmp.InterfaceDr = directoryDr;
  58. joTmp.Code = directoryCode;
  59. joTmp.Name = directoryName;
  60. jaParmas.Add(joTmp);
  61. joInput.Add("params", JArray.FromObject(jaParmas));
  62. JArray jaPagination = new JArray();
  63. joTmp = new JObject();
  64. joTmp.pageSize = pageSize;
  65. joTmp.currentPage = currentPage;
  66. joTmp.sortColumn = "";
  67. joTmp.sortOrder = "";
  68. joTmp.hisType = directoryType;
  69. jaPagination.Add(joTmp);
  70. joInput.Add("pagination", JArray.FromObject(jaPagination));
  71. return invoker.invokeInsuService(joInput.ToString(), "通过分页的方式查询医保目录");
  72. }
  73. catch (Exception ex)
  74. {
  75. return JsonHelper.setExceptionJson(-1, "通过分页的方式查询医保目录异常", ex.Message);
  76. }
  77. }
  78. /// <summary>
  79. /// 获取接口信息
  80. /// </summary>
  81. /// <returns></returns>
  82. public JObject getInterface()
  83. {
  84. dynamic joParam = new JObject();
  85. joParam.HospitalDr = Global.inf.hospitalDr;
  86. joParam.InterfaceID = "";
  87. JObject joInparam = JsonHelper.setIrisInpar("09010003", joParam);
  88. InvokeHelper invoker = new InvokeHelper();
  89. return invoker.invokeInsuService(joInparam.ToString(), "获取接口信息");
  90. }
  91. /// <summary>
  92. /// 获取指定接口信息
  93. /// </summary>
  94. /// <param name="inparam"></param>
  95. /// <returns></returns>
  96. public JObject getspecifiedInterface(int HospDr,int InterfaceDr)
  97. {
  98. JObject joRtn = new JObject();
  99. JObject joInparam = new JObject();
  100. string errorMsg = "";
  101. try
  102. {
  103. InvokeHelper invoke = new InvokeHelper();
  104. dynamic joParam = new JObject();
  105. joParam.HospitalDr = HospDr;
  106. joParam.InterfaceDr = InterfaceDr;
  107. joInparam = JsonHelper.setIrisInpar("09010003", joParam);
  108. JObject joOutparam = invoke.invokeInsuService(joInparam.ToString(), "获取指定接口信息");
  109. if (JsonHelper.parseIrisRtnValue(joOutparam, out errorMsg) != 0)
  110. {
  111. return joOutparam;
  112. }
  113. JArray jaParams = new JArray();
  114. jaParams = JArray.FromObject(joOutparam["result"]["data"]);
  115. JToken _token = jaParams[0];
  116. if (_token is null)
  117. {
  118. joRtn = JsonHelper.setExceptionJson(-100, "获取接口信息失败!", "返回值为空");
  119. }
  120. if (_token.Type == JTokenType.String)
  121. {
  122. joRtn = JsonHelper.setExceptionJson(-100, "获取接口信息失败!返回值为字符串", _token.ToString());
  123. }
  124. else //if (_token.Type == JTokenType.Object)
  125. {
  126. JObject joResult = JObject.FromObject(_token);
  127. joRtn.Add("errorCode", 0);
  128. joRtn.Add("errorMessage", "");
  129. joRtn.Add("result", joResult);
  130. }
  131. return joRtn;
  132. }
  133. catch (Exception ex)
  134. {
  135. joRtn = JsonHelper.setExceptionJson(-100, "获取接口信息异常!", ex.Message);
  136. Global.writeLog(joRtn.ToString());
  137. return joRtn;
  138. }
  139. }
  140. /// <summary>
  141. /// 获取指定字典信息
  142. /// </summary>
  143. /// <returns></returns>
  144. public JObject getSpecDictionary(string interfaceDr, string dicType)
  145. {
  146. string sqlStr = " select '' Code,'' Name,'' PinyinSearchCode union all ";
  147. sqlStr = sqlStr + " SELECT B.Code,B.Descripts AS Name,'' PinyinSearchCode FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr WHERE A.Interface_Dr= " + interfaceDr + " And A.InsuCode = '" + dicType + "' ";
  148. JObject joSqlstr = new JObject();
  149. joSqlstr.Add("sqlStr", sqlStr);
  150. JArray jaParam = new JArray();
  151. jaParam.Add(joSqlstr);
  152. JObject joSettlQuery = new JObject();
  153. joSettlQuery.Add("params", jaParam);
  154. joSettlQuery.Add("code", "09010063");
  155. InvokeHelper invoker = new InvokeHelper();
  156. return invoker.invokeInsuService(joSettlQuery.ToString(), "查询指定字典信息");
  157. }
  158. /// 获取指定字典编码值信息
  159. public JObject getSpecDictionaryValue(string interfaceDr, string dicType, string code)
  160. {
  161. string sqlStr = " select '' Code,'' Name,'' PinyinSearchCode union all ";
  162. sqlStr = sqlStr + " SELECT B.Code,B.Descripts AS Name,'' PinyinSearchCode FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr " +
  163. "WHERE A.Interface_Dr= " + interfaceDr + " And A.InsuCode = '" + dicType + "' and B.Code='"+ code+"'";
  164. JObject joSqlstr = new JObject();
  165. joSqlstr.Add("sqlStr", sqlStr);
  166. JArray jaParam = new JArray();
  167. jaParam.Add(joSqlstr);
  168. JObject joSettlQuery = new JObject();
  169. joSettlQuery.Add("params", jaParam);
  170. joSettlQuery.Add("code", "09010063");
  171. InvokeHelper invoker = new InvokeHelper();
  172. return invoker.invokeInsuService(joSettlQuery.ToString(), "查询指定字典信息");
  173. }
  174. /// 获取频次字典值转换--合肥门慢
  175. public string getFrquDictionaryValue(string interfaceDr, string code,out int exist)
  176. {
  177. string outpam = "";
  178. string sqlStr = " select '' Code,'' Name,'' PinyinSearchCode union all ";
  179. sqlStr = sqlStr + " SELECT B.Code,B.Descripts ,'' PinyinSearchCode FROM HB_Dictionary A INNER JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr INNER JOIN HB_DictionaryContrastDetail C ON C.Dictionary_Dr = A.ID AND C.DictionaryData_Dr = B.ID " +
  180. "WHERE A.Interface_Dr= " + interfaceDr + " And A.InsuDesc = '频次' and B.Code='" + code + "'";
  181. JObject joSqlstr = new JObject();
  182. joSqlstr.Add("sqlStr", sqlStr);
  183. JArray jaParam = new JArray();
  184. jaParam.Add(joSqlstr);
  185. JObject joSettlQuery = new JObject();
  186. joSettlQuery.Add("params", jaParam);
  187. joSettlQuery.Add("code", "09010063");
  188. InvokeHelper invoker = new InvokeHelper();
  189. JObject OutIDInfo= invoker.invokeInsuService(joSettlQuery.ToString(), "转换药品医嘱频次信息");
  190. JArray joDic = JArray.Parse(JsonHelper.getDestValue(OutIDInfo, "result.data"));
  191. if (joDic.Count > 1)
  192. {
  193. outpam = joDic[1]["code"].ToString();
  194. exist = 1;
  195. }
  196. else
  197. {
  198. outpam = code;
  199. exist = 0;
  200. }
  201. return outpam;
  202. }
  203. /// <summary>
  204. /// 保存登记信息到云医保平台
  205. /// </summary>
  206. /// <param name="joRegisterInfo"></param>
  207. /// <returns></returns>
  208. public JObject saveRegisterInfo(JObject joRegisterInfo, JObject joHisAdmInfo)
  209. {
  210. JObject joTmp = new JObject();
  211. joTmp.Add("HospitalDr", Global.inf.hospitalDr);
  212. joTmp.Add("InterfaceDr", Global.inf.interfaceDr);
  213. joTmp.Add("AdmID", JsonHelper.getDestValue(joHisAdmInfo, "admdr"));
  214. joTmp.Add("PatientName", JsonHelper.getDestValue(joHisAdmInfo, "patname"));
  215. joTmp.Add("PersonalNO", JsonHelper.getDestValue(joRegisterInfo, "psn_no"));
  216. joTmp.Add("InsuRegID", JsonHelper.getDestValue(joHisAdmInfo, "insu_reg_id"));
  217. //joTmp.Add("InsuRegID", "510100CD000096568181");
  218. joTmp.Add("RegDate", JsonHelper.getDestValue(joRegisterInfo, "begntime"));
  219. joTmp.Add("InsuType", JsonHelper.getDestValue(joRegisterInfo, "insutype"));
  220. joTmp.Add("CertificateType", JsonHelper.getDestValue(joRegisterInfo, "mdtrt_cert_type"));
  221. joTmp.Add("CertificateNO", JsonHelper.getDestValue(joRegisterInfo, "mdtrt_cert_no"));
  222. joTmp.Add("MedicalType", JsonHelper.getDestValue(joRegisterInfo, "med_type"));
  223. joTmp.Add("AttendDoctorNO", JsonHelper.getDestValue(joRegisterInfo, "atddr_no"));
  224. joTmp.Add("ChiefPhyDocName", JsonHelper.getDestValue(joRegisterInfo, "chfpdr_name"));
  225. joTmp.Add("AdmitDiagDesc", JsonHelper.getDestValue(joRegisterInfo, "adm_diag_dscr"));
  226. joTmp.Add("AdmitDepartmentCode", JsonHelper.getDestValue(joRegisterInfo, "adm_dept_codg"));
  227. joTmp.Add("AdmitDepartmentName", JsonHelper.getDestValue(joRegisterInfo, "adm_dept_name"));
  228. joTmp.Add("AdmBed", JsonHelper.getDestValue(joRegisterInfo, "adm_bed"));
  229. joTmp.Add("MainDiagCode", JsonHelper.getDestValue(joRegisterInfo, "dscg_maindiag_code"));
  230. joTmp.Add("MainDiagName", JsonHelper.getDestValue(joRegisterInfo, "dscg_maindiag_name"));
  231. joTmp.Add("MainConditionDdesc", JsonHelper.getDestValue(joRegisterInfo, "main_cond_dscr"));
  232. joTmp.Add("DiseasecCode", JsonHelper.getDestValue(joRegisterInfo, "dise_codg"));
  233. joTmp.Add("DiseasecName", JsonHelper.getDestValue(joRegisterInfo, "dise_name"));
  234. joTmp.Add("OperationCode", JsonHelper.getDestValue(joRegisterInfo, "oprn_oprt_code"));
  235. joTmp.Add("OperationName", JsonHelper.getDestValue(joRegisterInfo, "oprn_oprt_name"));
  236. joTmp.Add("DiseasecTypeCode", JsonHelper.getDestValue(joRegisterInfo, "dise_type_code"));
  237. joTmp.Add("InsuranceAreaCode", Global.pat.insuplc_admdvs);
  238. joTmp.Add("TreatmentAreaCode", Global.pat.mdtrtarea_admvs);
  239. joTmp.Add("RegState", JsonHelper.getDestValue(joHisAdmInfo, "regstate"));
  240. joTmp.Add("ValidFlag", JsonHelper.getDestValue(joHisAdmInfo, "validflag"));
  241. joTmp.Add("Type", JsonHelper.getDestValue(joHisAdmInfo, "type"));
  242. joTmp.Add("updateUserID", JsonHelper.getDestValue(joHisAdmInfo, "updateUserID"));
  243. joTmp.Add("msgid", JsonHelper.getDestValue(joHisAdmInfo, "msgid"));
  244. joTmp.Add("OccurTime", JsonHelper.getDestValue(joRegisterInfo, "OccurTime"));
  245. InvokeHelper invoker = new InvokeHelper();
  246. string serviceCode = "09010044", serviceName = "新增登记信息";
  247. string inpar = JsonHelper.setIrisInpar(serviceCode, joTmp).ToString();
  248. return invoker.invokeInsuService(inpar, serviceName);
  249. }
  250. /// <summary>
  251. /// 撤销登记(云医保平台)
  252. /// </summary>
  253. /// <param name="joRegisterInfo"></param>
  254. /// <returns></returns>
  255. public JObject cancleRegisterInfo(JObject joRegisterInfo)
  256. {
  257. JObject joTmp = new JObject();
  258. joTmp.Add("HospitalDr", Global.inf.hospitalDr);
  259. joTmp.Add("InterfaceDr", Global.inf.interfaceDr);
  260. joTmp.Add("AdmID", JsonHelper.getDestValue(joRegisterInfo, "admID"));
  261. joTmp.Add("PersonalNO", JsonHelper.getDestValue(joRegisterInfo, "PersonalNO"));
  262. joTmp.Add("InsuRegID", JsonHelper.getDestValue(joRegisterInfo, "InsuRegID"));
  263. joTmp.Add("CancleRegDate", JsonHelper.getDestValue(joRegisterInfo, "CancleRegDate"));
  264. joTmp.Add("Type", JsonHelper.getDestValue(joRegisterInfo, "Type"));
  265. joTmp.Add("ValidFlag", -1);
  266. joTmp.Add("updateUserID", Global.user.ID);
  267. InvokeHelper invoker = new InvokeHelper();
  268. string serviceCode = "09010044", serviceName = "取消登记信息";
  269. string inpar = JsonHelper.setIrisInpar(serviceCode, joTmp).ToString();
  270. return invoker.invokeInsuService(inpar, serviceName);
  271. }
  272. /// <summary>
  273. /// 撤销结算(云医保平台)
  274. /// </summary>
  275. /// <param name="joRegisterInfo"></param>
  276. /// <returns></returns>
  277. public JObject cancleSettlement(JObject joRegisterInfo)
  278. {
  279. JObject joTmp = new JObject();
  280. joTmp.Add("HospitalDr", Global.inf.hospitalDr);
  281. joTmp.Add("InterfaceDr", Global.inf.interfaceDr);
  282. joTmp.Add("admID", JsonHelper.getDestValue(joRegisterInfo, "admID"));
  283. joTmp.Add("mdtrt_id", JsonHelper.getDestValue(joRegisterInfo, "mdtrt_id"));
  284. joTmp.Add("setl_id", JsonHelper.getDestValue(joRegisterInfo, "setl_id"));
  285. joTmp.Add("updateUserID", Global.user.ID);
  286. joTmp.Add("msgid", Global.curEvt.msgid);
  287. InvokeHelper invoker = new InvokeHelper();
  288. string serviceCode = "09010052", serviceName = "取消结算信息";
  289. string inpar = JsonHelper.setIrisInpar(serviceCode, joTmp).ToString();
  290. return invoker.invokeInsuService(inpar, serviceName);
  291. }
  292. /// <summary>
  293. /// 调用云HIS 服务
  294. /// </summary>
  295. /// <param name="joRegisterInfo"></param>
  296. /// <param name="jaSession"></param>
  297. /// <returns></returns>
  298. public JObject sendRegisterInfoToHis(JObject joRegisterInfo, JArray jaSession)
  299. {
  300. InvokeHelper invoker = new InvokeHelper();
  301. string serviceCode = "05110002", serviceName = "将登记信息返回给HIS";
  302. string inpar = JsonHelper.setIrisInpar(serviceCode, joRegisterInfo).ToString();
  303. return invoker.invokeHISService(inpar, serviceName);
  304. }
  305. }
  306. }