PatientService_zhgj.cs 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. using Newtonsoft.Json.Linq;
  2. using PTMedicalInsurance.Common;
  3. using PTMedicalInsurance.Entity;
  4. using PTMedicalInsurance.Entity.Local;
  5. using PTMedicalInsurance.Forms;
  6. using PTMedicalInsurance.Helper;
  7. using PTMedicalInsurance.Variables;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows.Forms;
  14. namespace PTMedicalInsurance.Business
  15. {
  16. class PatientService_zhgj
  17. {
  18. protected HisMainBusiness hBus = new HisMainBusiness();
  19. protected InvokeHelper invoker = new InvokeHelper();
  20. public int readCard(out string outParam)
  21. {
  22. outParam = "";
  23. ChooseCard cc = new ChooseCard();
  24. try
  25. {
  26. if (cc.ShowDialog() == DialogResult.OK)
  27. {
  28. Global.businessType = "";
  29. Utils.GetInsuCode();
  30. //电子凭证
  31. if (cc.cardType == "01")
  32. {
  33. Global.pat.mdtrtcertType = "01";
  34. Global.businessType = cc.businessType;
  35. return trade1161(out outParam);
  36. }
  37. //身份证
  38. if (cc.cardType == "02")
  39. {
  40. outParam = "账户共济结算业务获取账户授权人信息必须使用电子凭证或社保卡!";
  41. return -1;
  42. }
  43. //社保卡
  44. if (cc.cardType == "03")
  45. {
  46. Global.pat.mdtrtcertType = "03";
  47. return trade1161(out outParam);
  48. }
  49. }
  50. else
  51. {
  52. outParam = JsonHelper.setExceptionJson(-1, "账户共济读卡", "取消读卡").ToString();
  53. return -1;
  54. }
  55. return 0;
  56. }
  57. catch (Exception ex)
  58. {
  59. outParam = "异常:" + ex.Message;
  60. return -1;
  61. }
  62. }
  63. public int trade1161(out string outParam)
  64. {
  65. outParam = "";
  66. string errorMsg = "";
  67. JObject joInput = new JObject();
  68. joInput.Add("begntime", Utils.GetDateTimeNow());
  69. joInput.Add("insuplcAdmdvs", Global.pat.card.SearchAdmCode); //异地就医时传入,本地就医可不传,不传默认为本地就医
  70. joInput.Add("CertNo", ""); //身份证号
  71. joInput.Add("PatientName", ""); //姓名
  72. JObject joRtn = new JObject();
  73. joRtn = invoker.invokeCenterService(TradeEnum.ReadCardInfo, joInput);
  74. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  75. {
  76. outParam = "读卡失败:" + errorMsg;
  77. return -1;
  78. }
  79. else
  80. {
  81. parsePatient(joRtn);
  82. outParam = joRtn.ToString();
  83. }
  84. return 0;
  85. }
  86. public void parsePatient(JObject joRtn)
  87. {
  88. // 基线版
  89. PersonCardInfo info = JsonHelper.getOutput<PersonCardInfo>(joRtn);
  90. Global.pat.card.NO = info.cardInfo.cardno;
  91. Global.pat.card.SN = info.cardInfo.card_sn;
  92. Global.pat.card.Cardtoken = info.cardInfo.ecToken;
  93. Global.pat.ecToken = info.cardInfo.ecToken;
  94. //Global.writeLog("病人信息:"+joRtn.ToString());
  95. if (info.insuInfo != null && info.insuInfo.Length > 0)
  96. {
  97. //参保地
  98. Global.pat.insuplc_admdvs = info.insuInfo[0].insuplc_admdvs;
  99. Global.pat.insuplc_name = info.insuInfo[0].insuplc_name;
  100. Global.pat.medType = info.insuInfo[0].med_type ?? "C";
  101. }
  102. //证件号
  103. Global.pat.certNO = info.baseInfo.certno;
  104. // 人员证件类型
  105. Global.pat.certType = info.baseInfo.psn_cert_type;
  106. // 就诊类型
  107. if (string.IsNullOrEmpty(Global.pat.mdtrtcertType))
  108. {
  109. Global.pat.mdtrtcertType = "03";
  110. }
  111. // 就诊凭证号
  112. if (!string.IsNullOrEmpty(Global.pat.card.NO))
  113. {
  114. Global.pat.mdtrtcertNO = Global.pat.card.NO;
  115. }
  116. if (string.IsNullOrEmpty(Global.pat.mdtrtcertNO))
  117. {
  118. Global.pat.mdtrtcertNO = Global.pat.certNO;
  119. }
  120. Global.pat.payOrdId = info.platformOrderNo;
  121. //医保账户共济相关
  122. Global.pat_zhgj.sptddh = info.cardInfo.sptddh; //平台订单号
  123. Global.pat_zhgj.gjzhxm = info.cardInfo.gjzhxm; //共济账户姓名
  124. Global.pat_zhgj.gjsfzhm = info.cardInfo.gjsfzhm; //共济人身份证号码
  125. Global.pat_zhgj.gjcbdbm = info.cardInfo.gjcbdbm; //共济人参保地编码
  126. Global.pat_zhgj.gjzhye = info.cardInfo.gjzhye; //共济账户余额
  127. Global.pat_zhgj.bz = info.cardInfo.bz; //备注 2020年7月17日,参保人XX绑定XXX(配偶)
  128. }
  129. /// <summary>
  130. /// 读卡并展示病人信息
  131. /// </summary>
  132. /// <param name="outParam"></param>
  133. /// <returns></returns>
  134. public string readPatientInfo(out string outParam)
  135. {
  136. string patInfo = string.Empty;
  137. //打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
  138. if (readCard(out outParam) != 0)
  139. {
  140. return JsonHelper.setExceptionJson(-100, "读卡失败!", outParam).ToString();
  141. }
  142. else
  143. {
  144. if ((string.IsNullOrEmpty(Global.pat_zhgj.sptddh)) || (string.IsNullOrEmpty(Global.pat_zhgj.gjzhxm)))
  145. {
  146. return JsonHelper.setExceptionJson(-100, "医保账户共济授权人信息查询失败", "查询返回【sptddh平台订单号为空】/查询返回【gjzhxm 共济账户姓名为空!】").ToString();
  147. }
  148. patInfo = outParam;
  149. Global.pat_zhgj.patInfo_mutualAidPay = patInfo;
  150. convertPatientInfo(patInfo, out outParam);
  151. }
  152. #region 展示患者信息
  153. //患者信息赋值给全局变量
  154. string errMsg = "";
  155. if (hBus.setGlobalPatAfaterShowPatInfo(outParam, out errMsg) != 0)
  156. {
  157. return JsonHelper.setExceptionJson(-1, "setGlobalPatAfaterShowPatInfo", errMsg).ToString();
  158. }
  159. //校验HIS姓名与医保姓名是否一致
  160. if (hBus.checkName(Global.pat.name, out errMsg) != 0)
  161. {
  162. return JsonHelper.setExceptionJson(-1, "校验HIS与医保姓名是否一致", errMsg).ToString();
  163. }
  164. #endregion
  165. return "0";
  166. }
  167. public void convertPatientInfo(string patInfo, out string outparam)
  168. {
  169. outparam = "";
  170. JObject joOutparam = JObject.Parse(patInfo);
  171. JObject joOutput = JObject.Parse(JsonHelper.getDestValue(joOutparam, "output"));
  172. // 日期处理
  173. JObject joBaseInfo = JObject.Parse(JsonHelper.getDestValue(joOutput, "baseinfo"));
  174. JArray joInsuInfo = JArray.Parse(JsonHelper.getDestValue(joOutput, "insuinfo"));
  175. joOutput["baseinfo"] = joBaseInfo;
  176. joOutput["insuinfo"] = joInsuInfo;
  177. joOutparam["output"] = joOutput;
  178. if (joOutput["idetinfo"] == null)
  179. {
  180. joOutput["idetinfo"] = new JArray();
  181. }
  182. //编码转换
  183. JArray jaConvertCode = new JArray();
  184. JObject joConvertCodeParam = new JObject();
  185. joConvertCodeParam.Add("hospitalDr", Global.inf.hospitalDr);
  186. joConvertCodeParam.Add("interfaceDr", Global.inf.interfaceDr);
  187. joConvertCodeParam.Add("output", joOutput);
  188. jaConvertCode.Add(joConvertCodeParam);
  189. JObject joConvertCode = new JObject();
  190. joConvertCode.Add("code", "09010054");
  191. joConvertCode.Add("params", jaConvertCode);
  192. InvokeHelper invoker = new InvokeHelper();
  193. JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "患者信息编码转换");
  194. // insuinfo保持转换之前的
  195. JArray jaInsuInfo = JArray.Parse(JsonHelper.getDestValue(joOutput, "insuinfo"));
  196. JArray jaIdInfo = JArray.Parse(JsonHelper.getDestValue(joConvertCodeRtn, "idetinfo"));
  197. JObject jaBaseInfo = JObject.Parse(JsonHelper.getDestValue(joConvertCodeRtn, "baseinfo"));
  198. joOutput["baseinfo"] = jaBaseInfo;
  199. JObject joSelectedInsuInfo = (JObject)jaInsuInfo[0];
  200. joSelectedInsuInfo.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  201. joSelectedInsuInfo.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  202. if (joOutparam["selectedInsuInfo"] != null)
  203. {
  204. joOutparam["selectedInsuInfo"] = joSelectedInsuInfo;
  205. }
  206. else
  207. {
  208. joOutparam.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", joSelectedInsuInfo));
  209. }
  210. if (joOutparam["selectedIdInfo"] != null)
  211. {
  212. joOutparam["selectedIdInfo"] = joSelectedInsuInfo;
  213. }
  214. else
  215. {
  216. joOutparam.Property("output").AddBeforeSelf(new JProperty("selectedIdInfo", joSelectedInsuInfo));
  217. }
  218. outparam = joOutparam.ToString();
  219. }
  220. }
  221. }