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
}
}