using Newtonsoft.Json.Linq; using PTMedicalInsurance.Common; using PTMedicalInsurance.Helper; using PTMedicalInsurance.Variables; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PTMedicalInsurance.Business { class IPSettlementProcess : AbstractProcess { public IPSettlementProcess() { } public IPSettlementProcess(JObject orginal) { this.OrginalInput = orginal; } public override CallResult Process(JObject input) { string errMsg = ""; #region 正式出院结算 JObject joSettlement = joSettlement = JObject.Parse(JsonHelper.getDestValue(input, "Settlement")); YinHaiSafeCtrl safeCtrl = new YinHaiSafeCtrl(); if (safeCtrl.Prepare(TradeEnum.InpatientSettlement.GetCode(), out errMsg) != 0) { return Exception("调用安全控件", errMsg); } //电子凭证存在二次校验且验证码为动态,必须使用最新码 joSettlement["mdtrt_cert_no"] = Global.pat.mdtrtcertNO; //基线版扩展 JObject joDataExp = (JObject)joSettlement["exp_content"] ?? new JObject(); joDataExp.Add("card_token", Global.pat.card.Cardtoken); joSettlement["exp_content"] = joDataExp; joSettlement.Add("data", joSettlement); JObject jo2304Rtn = invoker.invokeCenterService(TradeEnum.InpatientSettlement, joSettlement); if (JsonHelper.parseCenterRtnValue(jo2304Rtn, out errMsg) != 0) { //取消出院 new InpatientExitCancelProcess().Process(input); return Exception(-1, "结算失败", errMsg); } else { JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(jo2304Rtn, "output.setlinfo")); Global.pat.admType = 2; //返回给云医保平台结算信息 if (mIS.saveSettlement(jo2304Rtn, out errMsg) != 0) { return Exception(-1, "结算成功,但云医保平台保存失败", errMsg); } //返回给云医保平台结算明细信息 if (mIS.saveSettlementDetail(jo2304Rtn, out errMsg) != 0) { return Exception(-1, "云医保平台保存结算明细失败", errMsg); } // 住院共济支付 JObject joSetlinfoAid = MutualAidPay(JsonHelper.toJsonString(joSetlinfo)); //返回给HIS if (hIS.returnInpatSettlementInfo(OrginalInput, joSetlinfoAid, out outParam) != 0) { return Exception(-1, "返回结算信息给HIS", outParam); } else { //返回给前端 JObject joHisServieRtn = JObject.Parse(outParam); hBus.returnToFrontEndAfterSettlement(jo2304Rtn, joHisServieRtn, out outParam); return IrisReturn("结算成功", JObject.Parse(outParam)); } } #endregion } } }