using MedicalInsurance.Forms; 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; using System.Windows.Forms; namespace PTMedicalInsurance.Business { class OPSettlementProcess : AbstractProcess { public override CallResult Process(JObject joSettlement) { JObject joData = new JObject(); joData.Add("data", joSettlement); JObject joRtn = invoker.invokeCenterService(TradeEnum.OutpatientSettlement, joData); if (JsonHelper.parseCenterRtnValue(joRtn, out outParam) != 0) { return Error(-1, "结算失败"); } else { Global.pat.admType = 1; Global.pat.ExpContent = ""; //门诊不需要保存 外伤标志等相关扩展参数 //返回给云医保平台结算信息 if (mIS.saveSettlement(joRtn, out outParam) != 0) { return Error(-1, "结算成功,但云医保平台保存失败"); } //返回给云医保平台结算明细信息 if (mIS.saveSettlementDetail(joRtn, out outParam) != 0) { return Error(-1, "云医保平台保存结算明细失败"); } //返回给HIS //JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(joRtn, "output.setlinfo")); JObject joSetlinfo = MutualAidPay(JsonHelper.getDestValue(joRtn, "output.setlinfo")); if (hIS.returnOutpatSettlementInfo(joSettlement, joSetlinfo, out outParam) != 0) { return Error(-1, "返回结算信息给HIS"); } else { JObject joHisServieRtn = JObject.Parse(outParam); hBus.returnToFrontEndAfterSettlement(joRtn, joHisServieRtn, out outParam); //return JsonHelper.setIrisReturnValue(0, "结算成功", JObject.Parse(outParam)); return IrisReturn("结算成功", JObject.Parse(outParam)); } } } <<<<<<< HEAD ======= /// /// 根据是否需要使用共济支付重新计算结算数据 /// /// /// private JObject MutualAidPay(string setlInfo) { JObject joRtn = JObject.Parse(setlInfo); if (Global.pat.mutualAidFlag) { try { decimal psnCashPay = decimal.Parse(JsonHelper.getDestValue(joRtn, "psn_cash_pay")); if (psnCashPay == 0) { MessageBox.Show("该患者自付金额为0,不需要进行共济支付!"); } else { //开启自付界面,因涉及到多次自付 MutualAid frmMA = new MutualAid(joRtn); if (frmMA.dtSettlInfo.Rows.Count != 0) { frmMA.WindowState = FormWindowState.Maximized; if (frmMA.ShowDialog() == DialogResult.OK) { joRtn = JObject.Parse(frmMA.finalSettlementInfo); } else { MessageBox.Show("开启共济支付失败,原因为收款员取消共济支付!"); } } else { MessageBox.Show("开启共济支付失败,原因为未检测到有效的被共济人的医保结算数据!"); } } } catch (Exception ex) { MessageBox.Show("共济支付失败:" + ex.Message); } } return joRtn; } >>>>>>> remotes/origin/ChengDu_Base } }