OPPreSettlementProcess.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using Newtonsoft.Json.Linq;
  2. using PTMedicalInsurance.Helper;
  3. using PTMedicalInsurance.Variables;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace PTMedicalInsurance.Business
  10. {
  11. class OPPreSettlementProcess : AbstractProcess
  12. {
  13. public string OperationType { set; get; }
  14. /// <summary>
  15. /// 返回预结算结果
  16. /// </summary>
  17. /// <param name="joReg">基本信息含挂号、就诊、诊断、结算等入参</param>
  18. /// <returns></returns>
  19. public override CallResult Process(JObject joReg)
  20. {
  21. //调用IRIS获取医保各项金额
  22. if (mIS.getSumFee(out outParam) != 0)
  23. {
  24. return Error(-1, "获取医保费用各项汇总金额");
  25. }
  26. JObject joSumFee = JObject.Parse(outParam);
  27. JObject joSettlement = JObject.Parse(JsonHelper.getDestValue(joReg, "settlement"));
  28. //修改joSettlement的就诊ID ,总金额等
  29. joSettlement["mdtrt_id"] = Global.pat.mdtrtID;
  30. joSettlement["medfee_sumamt"] = JsonHelper.getDestValue(joSumFee, "data.Sumamt");
  31. joSettlement["register_flag"] = "0"; //挂号标志
  32. if ("RegisterOP".Equals(OperationType))
  33. {
  34. // 门诊挂号(医疗类别/统筹类别)
  35. joSettlement["med_type"] = "6";
  36. joSettlement["register_flag"] = "1";
  37. }
  38. // 个性化(济南),费用不单独上传
  39. joSettlement["patient"] = joReg;
  40. joSettlement.Add("psn_name", Global.pat.name);
  41. joSettlement.Add("gend", ("1".Equals(Global.pat.gend)?"男":"女"));
  42. joSettlement.Add("cardno", Global.pat.card.NO);
  43. joSettlement["admNo"] = Global.pat.adm_Dr; // 病历号
  44. var ret = hBus.getFeeDetail();
  45. if (ret.code < 0)
  46. {
  47. return Error(ret.code,ret.data.ToString());
  48. }
  49. JArray jaFeeDetail = (JArray)ret.data;
  50. joSettlement["feeDetail"] = jaFeeDetail;
  51. //预结算
  52. JObject jo2206Data = new JObject();
  53. jo2206Data.Add("data", joSettlement);
  54. JObject jo2206Rtn = invoker.invokeCenterService(TradeEnum.OutpatientPreSettlement, jo2206Data);
  55. if (JsonHelper.parseCenterRtnValue(jo2206Rtn, out outParam) != 0)
  56. {
  57. return Exception(-1, "出院预结算", outParam);
  58. }
  59. //返回给HIS进行预结算判断
  60. JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(jo2206Rtn, "output.setlinfo"));
  61. if (hIS.preSettlement(joSettlement, joSetlinfo, out outParam) != 0)
  62. {
  63. return Exception(-1, "返回结算信息给HIS", outParam);
  64. }
  65. //编码转换
  66. if (mIS.convertSettlementWithInsuCode(jo2206Rtn, out outParam) != 0)
  67. {
  68. return Exception(-1, "结算信息转换", outParam);
  69. }
  70. string errMsg = "";
  71. //判断勾稽关系是否平
  72. if (hIS.sumInsuRtnSettlInfo(JObject.Parse(JsonHelper.getDestValue(jo2206Rtn, "output.setlinfo")), out joSumFee, out errMsg) != 0)
  73. {
  74. return Exception(-1, "勾稽关系不符合标准,请联系管理员!",errMsg);
  75. }
  76. //展示结算信息
  77. JObject joConverted = JObject.Parse(outParam);
  78. if (hBus.showSettlementForm(joConverted, out outParam) != 0)
  79. {
  80. return Exception(-1, "结算信息展示", outParam);
  81. }
  82. // 如果没有返回值,则返回入参
  83. if (string.IsNullOrEmpty(outParam))
  84. {
  85. outParam = joSettlement.ToString();
  86. }
  87. return Success();
  88. }
  89. }
  90. }