IPPreSettlementProcess.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using Newtonsoft.Json.Linq;
  2. using PTMedicalInsurance.Common;
  3. using PTMedicalInsurance.Helper;
  4. using PTMedicalInsurance.Variables;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. namespace PTMedicalInsurance.Business
  12. {
  13. class IPPreSettlementProcess : AbstractProcess
  14. {
  15. public IPPreSettlementProcess() {
  16. }
  17. public override CallResult Process(JObject input)
  18. {
  19. //JObject joSettlement = new JObject();
  20. string errMsg;
  21. outParam = "";
  22. string outPar = "";
  23. #region 调用IRIS获取医保各项金额
  24. if (mIS.getSumFee(out outPar) != 0)
  25. {
  26. return Exception(-1, "获取医保费用各项汇总金额", outPar);
  27. }
  28. JObject joSumFee = JObject.Parse(outPar);
  29. if ((JsonHelper.getDestValue(joSumFee, "data.Sumamt") == "") || (JsonHelper.getDestValue(joSumFee, "data.Sumamt") == "0"))
  30. {
  31. return Exception(-1, "结算提示", "请先右击选择【医保费用上传】!");
  32. }
  33. int type = 1; //住院预结算
  34. if (mIS.queryRegisterInfo(type, out outParam) != 0)
  35. {
  36. return Exception(-1, "查询患者云平台登记信息", outParam);
  37. }
  38. JObject joReg = JObject.Parse(outParam);
  39. Global.pat.medType = JsonHelper.getDestValue(joReg, "data.MedicalType");
  40. Global.pat.insuType = JsonHelper.getDestValue(joReg, "data.InsuType");
  41. Global.pat.mdtrtcertType = JsonHelper.getDestValue(joReg, "data.CertificateType");
  42. Global.pat.mdtrtcertNO = JsonHelper.getDestValue(joReg, "data.CertificateNO");
  43. Global.pat.certNO = Global.pat.mdtrtcertNO;
  44. Global.pat.psn_no = JsonHelper.getDestValue(joReg, "data.PersonalNO");
  45. Global.pat.certType = JsonHelper.getDestValue(joReg, "data.CertificateType");
  46. Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joReg, "data.InsuranceAreaCode");
  47. Global.pat.psn_type = Global.pat.insuType; //后面再改
  48. Global.pat.ExpContent = JsonHelper.getDestValue(joReg, "data.ExpContent");
  49. if ((Global.pat.RYorCY == "2"))
  50. {
  51. Global.pat.DiseasecCode = JsonHelper.getDestValue(joReg, "data.DiseasecCode");
  52. Global.pat.DiseasecName = JsonHelper.getDestValue(joReg, "data.DiseasecName");
  53. }
  54. #endregion
  55. #region 出院登记界面展示
  56. //调用服务获取诊断信息
  57. string diagnoses;
  58. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  59. {
  60. return Exception(-1, "getPatDiagnoses", diagnoses);
  61. }
  62. JObject joDiagnoses = JObject.Parse(diagnoses);
  63. //展示出院登记界面,选择结算方式等
  64. if (hBus.showDischargeRegisterForm(TradeEnum.InpatientPreSettlement, joSumFee, joDiagnoses, out outParam) != 0)
  65. {
  66. return Exception(-1, "展示出院预结算界面", outParam);
  67. }
  68. JObject joRtn = JObject.Parse(outParam);
  69. #endregion
  70. #region 光明变态需求,每次结算前必须调用入院登记更新。因为预住院患者的医保登记时间跟实际住院时间不符
  71. JObject jo2403Inpar = JObject.Parse(JsonHelper.getDestValue(joRtn, "RegInfo"));
  72. JObject jo2403Rtn = invoker.invokeCenterService(TradeEnum.InpatientInfoChange, jo2403Inpar);
  73. if (JsonHelper.parseCenterRtnValue(jo2403Rtn, out errMsg) != 0)
  74. {
  75. return Exception(-1, "入院信息变更失败", errMsg);
  76. }
  77. #endregion
  78. #region 事中分析
  79. if (Global.curEvt.ext.isOpenAnalysis)
  80. {
  81. if (hBus.InProcessAnalysis("9",out errMsg) != 0)
  82. {
  83. //return Exception(-1, "InProcessAnalysis", errMsg);
  84. MessageBox.Show(errMsg);
  85. }
  86. }
  87. #endregion
  88. #region 出院登记
  89. JObject jo2402Inpar = JObject.Parse(JsonHelper.getDestValue(joRtn, "DischargeRegister"));
  90. JObject jo2402Rtn = invoker.invokeCenterService(TradeEnum.InpatientExit, jo2402Inpar);
  91. if (JsonHelper.parseCenterRtnValue(jo2402Rtn, out errMsg) != 0)
  92. {
  93. return Exception(-1, "出院登记失败", errMsg);
  94. }
  95. #endregion
  96. #region 预结算
  97. JObject jo2303Inpar = JObject.Parse(JsonHelper.getDestValue(joRtn, "Settlement"));
  98. JObject jo2303Data = new JObject();
  99. jo2303Data.Add("data", jo2303Inpar);
  100. JObject jo2303Rtn = invoker.invokeCenterService(TradeEnum.InpatientPreSettlement, jo2303Data);
  101. if (JsonHelper.parseCenterRtnValue(jo2303Rtn, out outParam) != 0)
  102. {
  103. return Exception(-1, "出院预结算", outParam);
  104. }
  105. //预结算结果传给HIS进行HIS判断
  106. //返回给HIS
  107. JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(jo2303Rtn, "output.setlinfo"));
  108. JObject joParam = new JObject();
  109. joParam.Add("admID", Global.pat.adm_Dr);
  110. joParam.Add("recordID", Global.pat.recordID);
  111. joParam.Add("billID", Global.pat.billID);
  112. if (hIS.preSettlementInfo(joParam, joSetlinfo, out outParam) != 0)
  113. {
  114. return Exception(-1, "出院预结算", outParam);
  115. }
  116. //编码转换
  117. if (mIS.convertSettlementWithInsuCode(jo2303Rtn, out outParam) != 0)
  118. {
  119. return Exception(-1, "结算信息转换", outParam);
  120. }
  121. //展示结算信息
  122. JObject joConverted = JObject.Parse(outParam);
  123. #region 济南扩展
  124. #endregion
  125. if (hBus.showSettlementForm(joConverted, out outParam) != 0)
  126. {
  127. //取消结算?
  128. new IPSettlementCancelProcess().Process(input);
  129. return Exception(-1, "结算信息展示", outParam);
  130. }
  131. //joSettlement = (JObject)joRtn.DeepClone();
  132. outParam = joRtn.ToString();
  133. #endregion
  134. return Success();
  135. }
  136. }
  137. }