using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using PTMedicalInsurance.Business;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PTMedicalInsurance.Common;
using PTMedicalInsurance.Helper;
using PTMedicalInsurance.FormSetter;
using PTMedicalInsurance.Variables;
using System.Threading;
namespace PTMedicalInsurance.Forms
{
public partial class MutualAid : Form
{
public DataTable dtSumumt;
public DataTable dtSettlInfo;
public string settlementID;
public string finalSettlementInfo;
private string psnCashPay ="0";
int serialNOofMutualAid = 1;
private MIIrisServices iris = new MIIrisServices();
InvokeHelper invoker = new InvokeHelper();
HisMainBusiness hBus = new HisMainBusiness();
XmlHelper xmler = new XmlHelper();
public JObject joMainSettlInfo;
public string mutualAidPay; //共济金额
public MutualAid(JObject jo)
{
InitializeComponent();
GridViewSetter grdSetter = new GridViewSetter();
grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
tbMainSettlID.Text = settlementID = JsonHelper.getDestValue(jo, "setl_id");
psnCashPay = JsonHelper.getDestValue(jo, "psnCashPay");
tbMainSettlID.Text = settlementID;
joMainSettlInfo = JObject.Parse(JsonHelper.getDestValue(jo, "MainSettlInfo"));
string errMsg;
getSettlInfo(out errMsg);
getSumamtInfo(out errMsg);
}
public MutualAid(string settlId)
{
InitializeComponent();
GridViewSetter grdSetter = new GridViewSetter();
grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
settlementID = settlId;
tbMainSettlID.Text = settlementID;
string errMsg;
getSettlInfo(out errMsg);
getSumamtInfo(out errMsg);
}
public MutualAid()
{
InitializeComponent();
GridViewSetter grdSetter = new GridViewSetter();
grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
}
#region 方法封装
//获取结算汇总信息
[STAThread]
public void ReadCard_MutualAid()
{
string errMsg;
if (hBus.readCard(out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
else
{
string patInfo = xmler.ToJSON(errMsg);
JObject joPatInfo = JObject.Parse(patInfo);
Global.pat.patExtend.prm_auther_certno = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_certno");
Global.pat.patExtend.prm_auther_insu_admdvs = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_insu_admdvs");
Global.pat.patExtend.prm_auther_name = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_name");
Global.pat.patExtend.prm_auther_no = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_no");
}
}
private int getSumamtInfo(out string errMsg)
{
errMsg = "";
try
{
string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE ValidFlag=1 and Hospital_Dr=" + Global.inf.hospitalDr + " AND SettlementID='" + settlementID + "'";
JObject joSql = new JObject();
joSql.Add("sqlStr", sqlStr);
JObject joRtn = iris.QuerySettlementInfo(joSql);
dtSumumt = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
decimal accountPay = 0, cashPay = 0, mutualAidPay = 0;
for (int i = 1; i < dtSettlInfo.Rows.Count; i++)
{
int billType = int.Parse(dtSettlInfo.Rows[i]["BillType"].ToString());
accountPay = accountPay + decimal.Parse(dtSettlInfo.Rows[i]["AccountPaySumamt"].ToString()) * billType;
mutualAidPay = mutualAidPay + decimal.Parse(dtSettlInfo.Rows[i]["AccountMutualAidAmount"].ToString()) * billType;
if (billType == 1)
{ serialNOofMutualAid++; }
else
{
dgvSettlInfo.Rows[i].DefaultCellStyle.ForeColor = Color.Red;
}
}
dgvSettlInfo.Refresh();
dtSumumt.Rows[0]["AccountPaySumamt"] = decimal.Parse(dtSumumt.Rows[0]["AccountPaySumamt"].ToString()) + accountPay;
dtSumumt.Rows[0]["PersonCashPay"] = decimal.Parse(dtSumumt.Rows[0]["PersonCashPay"].ToString()) - accountPay;
dtSumumt.Rows[0]["AccountMutualAidAmount"] = accountPay;
dgvSumamt.DataSource = dtSumumt;
dgvSettlInfo.SelectedIndex = dgvSettlInfo.Rows.Count - 1;
return 0;
}
catch (Exception e)
{
errMsg = e.Message;
return 1;
}
}
//获取多次结算信息
private int getSettlInfo(out string errMsg)
{
errMsg = "";
try
{
string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE ValidFlag=1 and Hospital_Dr=" + Global.inf.hospitalDr + " AND MainSettlementIDOfMutualAid='" + settlementID + "'";
JObject joSql = new JObject();
joSql.Add("sqlStr", sqlStr);
JObject joRtn = iris.QuerySettlementInfo(joSql);
dtSettlInfo = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
dgvSettlInfo.DataSource = dtSettlInfo;
return 0;
}
catch (Exception e)
{
errMsg = e.Message;
return 1;
}
}
//中心共济结算
private int mutualAid(out string output)
{
output = "";
try
{
//弹出共济结算选择框
{
//组织入参
JObject joData = new JObject();
joData.Add("prm_aac001", Global.pat.patExtend.prm_auther_no);//账户共济授权人个人编码
joData.Add("prm_ykc173", "");//门诊诊断信息
joData.Add("prm_yka065", mutualAidPay);//账户共济下账金额
joData.Add("prm_aka130", "110102");//支付类别
joData.Add("prm_yka110", "");//发票号
joData.Add("prm_aae013", "");//备注
joData.Add("prm_aae011", Global.user.ID);//经办人编码
joData.Add("prm_ykc141", Global.user.name);//经办人姓名
joData.Add("prm_ima_mdtrt_id", dtSumumt.Rows[0]["MdtrtID"].ToString());//原主交易就诊 ID
joData.Add("prm_ima_setl_id", dtSumumt.Rows[0]["SettlementID"].ToString());//原主交易结算 ID
joData.Add("prm_ima_certno", dtSumumt.Rows[0]["CertificateNO"].ToString());//原主交易证件号码
joData.Add("prm_ima_med_type", dtSumumt.Rows[0]["MedicalType"].ToString());//原主交易医疗类别
joData.Add("prm_ima_medfee_sumamt", dtSumumt.Rows[0]["Sumamt"].ToString());//原主交易医疗费总额
joData.Add("prm_ima_fund_pay_sumamt", dtSumumt.Rows[0]["FundPaySumamt"].ToString());//原主交易基金支付总额
joData.Add("prm_ima_acct_pay", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());//原主交易个人账户支出
joData.Add("prm_ima_psn_cash_pay", dtSumumt.Rows[0]["PersonCashPay"].ToString());//原 主 交 易 个 人 现 金 支 出
joData.Add("prm_ima_psn_no", dtSumumt.Rows[0]["PersonnelNO"].ToString());//原主交易个人编号
joData.Add("prm_ima_psn_name", dtSumumt.Rows[0]["PatientName"].ToString());//原主交易人员姓名
joData.Add("prm_user_insu_admdvs", dtSumumt.Rows[0]["insuplc_admdvs"].ToString());//原主交易人员参保统筹区
joData.Add("prm_yabtch", Global.pat.patExtend.prm_auther_insu_admdvs);
//调用中心结算
if (invoker.invokeYHCom("48g", joData, out output) != 0)
{
return -1;
}
else
{
string errMsg = "";
invoker.confirmYHCom(out errMsg);
return 0;
}
}
}
catch (Exception e)
{
output = e.Message;
return 1;
}
}
//撤销中心共济结算
private int cancleMutualAid(out string errMsg)
{
errMsg = "";
try
{
int i = dgvSettlInfo.SelectedIndex;
if ((dtSettlInfo.Rows[i]["MutualAidFlag"].ToString() == "") || (dtSettlInfo.Rows[i]["MutualAidFlag"].ToString() == "0"))
{
errMsg = "当前结算无共济支付信息!";
return -1;
}
else if (int.Parse(dtSettlInfo.Rows[i]["MutualAidFlag"].ToString()) == 1)
{
errMsg = "当前结算为主结算,请选择正确的共济支付结算!";
return -1;
}
//组织入参
dynamic joTmp = new JObject();
joTmp.prm_akc190 = dtSettlInfo.Rows[i]["MdtrtID"].ToString();
joTmp.prm_aac001 = dtSettlInfo.Rows[i]["PersonnelNO"].ToString();
joTmp.prm_yka103 = dtSettlInfo.Rows[i]["SettlementID"].ToString();
joTmp.prm_yab003 = dtSettlInfo.Rows[i]["insuplc_admdvs"].ToString();
joTmp.prm_aka130 = "110102";//dtSettlInfo.Rows[i]["MedicalType"].ToString();
joTmp.prm_ykb065 = dtSettlInfo.Rows[i]["InsuranceType"].ToString();
joTmp.prm_aae011 = Global.user.ID;
joTmp.prm_ykc141 = Global.user.name;
joTmp.prm_aae036 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
joTmp.prm_yabtch = dtSettlInfo.Rows[i]["insuplc_admdvs"].ToString();
//将中心返回的结果返回HIS 调用HIS服务进行保存
if (invoker.invokeYHCom("42", joTmp, out errMsg) != 0)
{
return -1;
}
else
{
string err = "";
invoker.confirmYHCom(out err);
dgvSettlInfo.SelectedIndex = dgvSettlInfo.Rows.Count - 1;
return 0;
}
}
catch (Exception e)
{
errMsg = e.Message;
return -1;
}
}
//保存到云医保平台
private int saveMutualAidSettlementToCloudPlatform(string centerReturn, out string errMsg)
{
errMsg = "";
try
{
//返回给云医保平台
JObject joSettlement = JObject.Parse(centerReturn);
JObject joRtnSetlinfo = JObject.Parse(JsonHelper.getDestValue(joSettlement, "output"));
JObject joSetlinfo = new JObject();
joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
joSetlinfo.Add("admID", dtSumumt.Rows[0]["AdmID"].ToString());
joSetlinfo.Add("mdtrt_id", JsonHelper.getDestValue(joRtnSetlinfo, "prm_akc190"));
joSetlinfo.Add("setl_id", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka103"));//
joSetlinfo.Add("psn_no", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac001"));
joSetlinfo.Add("psn_name", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac003"));
//joSetlinfo.Add("mdtrt_cert_type", JsonHelper.getDestValue(joRtnSetlinfo, "mdtrt_cert_type"));
joSetlinfo.Add("certno", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac002"));
joSetlinfo.Add("gend", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac004"));
joSetlinfo.Add("naty", "");
joSetlinfo.Add("brdy", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac006"));
joSetlinfo.Add("age", JsonHelper.getDestValue(joRtnSetlinfo, "prm_akc023"));
//joSetlinfo.Add("insutype", "310"); //中心说默认310
joSetlinfo.Add("insutype", "1"); //张振说默认为1
joSetlinfo.Add("psn_type", JsonHelper.getDestValue(joRtnSetlinfo, "prm_akc021"));
joSetlinfo.Add("cvlserv_flag", "");
joSetlinfo.Add("setl_time", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aae036"));
joSetlinfo.Add("mdtrt_cert_type", JsonHelper.getDestValue(joRtnSetlinfo, "mdtrt_cert_type"));
joSetlinfo.Add("med_type", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aka130"));//支付类别
joSetlinfo.Add("medfee_sumamt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka055"));//总费用
joSetlinfo.Add("fulamt_ownpay_amt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka056"));//全自费金额
joSetlinfo.Add("overlmt_selfpay", "");//超限价自费费用
joSetlinfo.Add("preselfpay_amt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka057"));//先行自付金额
joSetlinfo.Add("inscp_scp_amt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka111"));//符合政策范围金额
joSetlinfo.Add("act_pay_dedc", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka058"));//实际支付起付线
joSetlinfo.Add("hifp_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka248"));//基本医疗保险统筹基金支出
joSetlinfo.Add("pool_prop_selfpay", "0");//基本医疗保险统筹基金支付比例
joSetlinfo.Add("cvlserv_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yke030"));//公务员医疗补助资金支出
joSetlinfo.Add("hifes_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka062"));//企业支付
joSetlinfo.Add("hifmi_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka082"));// 居民大病保险资金支出
joSetlinfo.Add("hifob_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka083"));//职工大额医疗费用补助基金支出
joSetlinfo.Add("maf_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_ake181"));//医疗救助基金支出
joSetlinfo.Add("hosp_part_amt", JsonHelper.getDestValue(joRtnSetlinfo, "hosp_part_amt"));//医院负担金额
joSetlinfo.Add("oth_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_ake173"));//其他支出
joSetlinfo.Add("fund_pay_sumamt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka248"));//基金支付总额
joSetlinfo.Add("psn_part_amt", 0);//个人负担总金额
joSetlinfo.Add("acct_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka065"));//个人账户支出
joSetlinfo.Add("psn_cash_pay", JsonHelper.getDestValue(joRtnSetlinfo, "psn_cash_pay"));//个人现金支出
joSetlinfo.Add("balc", JsonHelper.getDestValue(joRtnSetlinfo, "prm_akc087"));// 余额
joSetlinfo.Add("acct_mulaid_pay", "");//个人账户共济支付金额
joSetlinfo.Add("medins_setl_id", "");//医药机构结算ID
joSetlinfo.Add("clr_optins", JsonHelper.getDestValue(joRtnSetlinfo, "prm_ykb037"));//清算经办机构
joSetlinfo.Add("clr_way", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka054"));//清算方式
joSetlinfo.Add("clr_type", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka316"));//清算类别
joSetlinfo.Add("ValidFlag", 1);
joSetlinfo.Add("BillType", 1);
joSetlinfo.Add("msgid", Global.curEvt.msgid);
joSetlinfo.Add("admType", dtSumumt.Rows[0]["admType"].ToString());
joSetlinfo.Add("billID", dtSumumt.Rows[0]["billID"].ToString());
joSetlinfo.Add("recordID", dtSumumt.Rows[0]["recordID"].ToString());
joSetlinfo.Add("interfaceDr", Global.inf.interfaceDr);
//if (JsonHelper.getDestValue(joRtnSetlinfo, "prm_yab139") != "")
// joSetlinfo.Add("insuplc_admdvs", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yab139"));//参保地存分中心编号
//else
// joSetlinfo.Add("insuplc_admdvs", Global.pat.insuplc_admdvs);
joSetlinfo.Add("insuplc_admdvs", Global.pat.patExtend.prm_auther_insu_admdvs);
joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
joSetlinfo.Add("HospitalizationsDays", dtSumumt.Rows[0]["HospitalizationsDays"].ToString());
joSetlinfo.Add("HospitalizationsTimes", dtSumumt.Rows[0]["HospitalizationsTimes"].ToString());
joSetlinfo.Add("HISAdmTime", dtSumumt.Rows[0]["HISAdmTime"].ToString());
joSetlinfo.Add("HISDischargeTime", dtSumumt.Rows[0]["HISDischargeTime"].ToString());
joSetlinfo.Add("updateUserID", Global.user.ID);
joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSumumt.Rows[0]["SettlementID"].ToString());
serialNOofMutualAid++;
joSetlinfo.Add("MutualAidFlag", 2);
JObject joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09010051", joSetlinfo).ToString(), "插入结算信息");
if (JsonHelper.parseIrisRtnValue(joRtn, out errMsg) != 0)
{
return -1;
}
else
{
return 0;
}
}
catch (Exception e)
{
errMsg = e.Message;
return -1;
}
}
//更新主结算数据
private int updateMainSettlementInfo(out string errMsg)
{
try
{
JObject joTmp = new JObject();
joTmp.Add("updateUserID", Global.user.ID);
joTmp.Add("HospitalDr", Global.inf.hospitalDr);
joTmp.Add("AdmDr", dtSumumt.Rows[0]["AdmID"].ToString());
joTmp.Add("SettlementID", dtSumumt.Rows[0]["SettlementID"].ToString());
joTmp.Add("MdtrtID", dtSumumt.Rows[0]["MdtrtID"].ToString());
joTmp.Add("MainSettlementIDOfMutualAid", dtSumumt.Rows[0]["SettlementID"].ToString());
joTmp.Add("MutualAidFlag", 1);
joTmp.Add("ValidFlag",1);
joTmp.Add("BillType", 1);
JObject joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09010080", joTmp).ToString(), "更新结算表的共济主结算ID和标志");
return JsonHelper.parseIrisRtnValue(joRtn, out errMsg);
}
catch (Exception ex)
{
errMsg = "updateMainSettlementInfo:" + ex.Message;
return -1;
}
}
///
/// 撤销云平台结算信息
///
///
///
private int cancleMutualAidOfCloudPlatform(string centerReturn,out string errMsg)
{
errMsg = "";
try
{
int i = dgvSettlInfo.SelectedIndex;
if (dtSettlInfo.Rows[i]["SettlementID"].ToString() == dtSettlInfo.Rows[i]["MainSettlementIDOfMutualAid"].ToString())
{
errMsg = "检测到选择的是主数据,请重新选择或者联系管理员!";
return -1;
}
dynamic joTmp = new JObject();
Global.pat.adm_Dr =int.Parse(dtSettlInfo.Rows[i]["AdmID"].ToString());
Global.pat.psn_no = dtSettlInfo.Rows[i]["PersonnelNO"].ToString();
Global.pat.mdtrtID = dtSettlInfo.Rows[i]["MdtrtID"].ToString();
Global.pat.settlID = dtSettlInfo.Rows[i]["SettlementID"].ToString();
JObject joCenterRtn = JObject.Parse(centerReturn);
string newSetlId = JsonHelper.getDestValue(joCenterRtn, "output.prm_yka198");
joTmp.newSetlId = newSetlId;
if (iris.cancleSettlement(newSetlId,out errMsg)!= 0)
{
return -1;
}
else
{
return 0;
}
}
catch (Exception e)
{
errMsg = e.Message;
return -1;
}
}
///
/// 获取最终的结算信息,返回给HIS。无论共济多少次,返回给HIS的只有这一条。
///
///
///
private int getFinalSettlementInfo(out string output)
{
output = "";
try
{
JObject joCenterRtn = new JObject();
JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(joCenterRtn, "output.result"));
joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
joSetlinfo.Add("admID", dtSettlInfo.Rows[0]["Adm_Dr"].ToString());
joSetlinfo.Add("ValidFlag", 1);
joSetlinfo.Add("BillType", 1);
joSetlinfo.Add("updateUserID", Global.user.ID);
joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
joSetlinfo.Add("billID", dtSettlInfo.Rows[0]["BillID"].ToString());
joSetlinfo.Add("recordID", dtSettlInfo.Rows[0]["RecordID"].ToString());
joSetlinfo.Add("msgid", Global.curEvt.msgid);
joSetlinfo.Add("interfaceDr", Global.inf.interfaceDr);
joSetlinfo.Add("admType", dtSettlInfo.Rows[0]["admType"].ToString());
joSetlinfo.Add("insuplc_admdvs", Global.pat.insuplc_admdvs);
joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSettlInfo.Rows[0]["SettlementID"].ToString());
joSetlinfo.Add("MutualAidFlag", serialNOofMutualAid);
output = joSetlinfo.ToString();
return 0;
}
catch (Exception e)
{
output = e.Message;
return -1;
}
}
#endregion
private void btMutualAid_Click(object sender, EventArgs e)
{
string errMsg = "";
try
{
if ((dtSumumt == null) || (dtSumumt.Rows.Count == 0))
{
MessageBox.Show("共济结算需要被共济人存在结算信息,目前未查询到任何相关结算信息,请联系管理员!");
return;
}
//读卡 如果账户共济授权人编码为空,则进行读卡,否则直接共济
string patInfo, funNO = "48g";
if (string.IsNullOrEmpty(Global.pat.patExtend.prm_auther_certno))
{
//如果住院的则要查询当前的患者信息记录表
if (dtSumumt.Rows[0]["AdmType"].ToString() == "2")
{
string sqlStr = "SELECT * FROM SQLUser.BS_MIPatCurrentInsuInfo WHERE Interface_Dr =" + Global.inf.interfaceDr
+ " AND AdmID = '" + dtSumumt.Rows[0]["AdmID"].ToString() + "'"
+ " AND MdtrtID = '" + dtSumumt.Rows[0]["MdtrtID"].ToString() + "'";
JObject joSqlStr = new JObject();
joSqlStr.Add("sqlStr", sqlStr);
JObject joCurrentInsuInfo = iris.DynamicQueryPatCurrentInsuInfo(joSqlStr);
if (JsonHelper.parseIrisRtnValue(joCurrentInsuInfo, out errMsg) != 0)
{
Thread thread = new Thread(ReadCard_MutualAid);
thread.SetApartmentState(ApartmentState.STA); //重点
thread.IsBackground = true;
thread.Start();
thread.Join();
}
else
{
Global.pat.patExtend.prm_auther_certno = JsonHelper.getDestValue(joCurrentInsuInfo, "result.rows[0].extField1");
Global.pat.patExtend.prm_auther_insu_admdvs = JsonHelper.getDestValue(joCurrentInsuInfo, "result.rows[0].extField2");
Global.pat.patExtend.prm_auther_name = JsonHelper.getDestValue(joCurrentInsuInfo, "result.rows[0].extField3");
Global.pat.patExtend.prm_auther_no = JsonHelper.getDestValue(joCurrentInsuInfo, "result.rows[0].extField4");
}
}
else
{
Thread thread = new Thread(ReadCard_MutualAid);
thread.SetApartmentState(ApartmentState.STA); //重点
thread.IsBackground = true;
thread.Start();
thread.Join();
}
}
MutualAidChooser frm = new MutualAidChooser(psnCashPay);
if (frm.ShowDialog() == DialogResult.OK)
{
mutualAidPay = frm.mutualAidPay;
}
else
{
MessageBox.Show("收款员取消共济结算!");
return;
}
//中心共济结算
string centerReturn = "";
if (mutualAid(out centerReturn) != 0)
{
MessageBox.Show(centerReturn);
return;
}
//string centerReturn = System.IO.File.ReadAllText(Global.curEvt.path + @"\\CS.TXT");
//将共济结算数据保存到医保平台
if (saveMutualAidSettlementToCloudPlatform(xmler.ToJSON(centerReturn),out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
//更新主结算的信息
if (updateMainSettlementInfo(out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
//刷新结算信息显示
if (getSettlInfo(out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
//刷新汇总信息显示
if (getSumamtInfo(out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
else
{
MessageBox.Show("共济结算成功!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
private void btCancleMutualAid_Click(object sender, EventArgs e)
{
string errMsg = "";
try
{
//撤销中心共济结算
string centerReturn;
if (cancleMutualAid(out centerReturn) != 0)
{
MessageBox.Show(centerReturn);
return;
}
//保存到医保平台
if (cancleMutualAidOfCloudPlatform(xmler.ToJSON(centerReturn), out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
//刷新结算信息显示
if (getSettlInfo(out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
//刷新汇总信息显示
if (getSumamtInfo(out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
else
{
MessageBox.Show("撤销共济成功!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
private void btYes_Click(object sender, EventArgs e)
{
try
{
if (dtSumumt == null)
{
MessageBox.Show("请输入结算ID并点击查询按钮!");
return;
}
else
{
if (dtSumumt.Rows.Count <1)
{
MessageBox.Show("未找到主结算数据!");
return;
}
}
JObject joSetlinfo = new JObject();
joSetlinfo.Add("setl_time", dtSumumt.Rows[0]["SettlementTime"].ToString());
joSetlinfo.Add("cvlserv_pay", dtSumumt.Rows[0]["CivilserviceAllowancePay"].ToString());
joSetlinfo.Add("hifdm_pay", dtSumumt.Rows[0]["HealthInsurancePay"].ToString());
joSetlinfo.Add("cvlserv_flag", dtSumumt.Rows[0]["CivilserviceAllowancePay"].ToString());
joSetlinfo.Add("med_type", dtSumumt.Rows[0]["MedicalType"].ToString());
joSetlinfo.Add("brdy", dtSumumt.Rows[0]["BirthDay"].ToString());
joSetlinfo.Add("naty", dtSumumt.Rows[0]["Nation"].ToString());
joSetlinfo.Add("psn_cash_pay", dtSumumt.Rows[0]["PersonCashPay"].ToString());
joSetlinfo.Add("certno", dtSumumt.Rows[0]["CertificateNO"].ToString());
joSetlinfo.Add("hifmi_pay", dtSumumt.Rows[0]["SeriousIllnessPay"].ToString());
joSetlinfo.Add("psn_no", dtSumumt.Rows[0]["PersonnelNO"].ToString());
joSetlinfo.Add("act_pay_dedc", dtSumumt.Rows[0]["ActualPayDeductible"].ToString());
joSetlinfo.Add("mdtrt_cert_type", dtSumumt.Rows[0]["MdtrtCertType"].ToString());
joSetlinfo.Add("balc", dtSumumt.Rows[0]["Balance"].ToString());
joSetlinfo.Add("medins_setl_id", dtSumumt.Rows[0]["OrganSettlementID"].ToString());
joSetlinfo.Add("psn_cert_type", dtSumumt.Rows[0]["CertificateType"].ToString());
joSetlinfo.Add("acct_mulaid_pay", dtSumumt.Rows[0]["AccountMutualAidAmount"].ToString());
joSetlinfo.Add("clr_way", dtSumumt.Rows[0]["ClearingWay"].ToString());
joSetlinfo.Add("hifob_pay", dtSumumt.Rows[0]["LargeExpensesSupplementPay"].ToString());
joSetlinfo.Add("oth_pay", dtSumumt.Rows[0]["OtherPay"].ToString());
joSetlinfo.Add("medfee_sumamt", dtSumumt.Rows[0]["Sumamt"].ToString());
joSetlinfo.Add("hifes_pay", dtSumumt.Rows[0]["EnterpriseSupplementPay"].ToString());
joSetlinfo.Add("gend", dtSumumt.Rows[0]["Gender"].ToString());
joSetlinfo.Add("mdtrt_id", dtSumumt.Rows[0]["MdtrtID"].ToString());
joSetlinfo.Add("acct_pay", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());
joSetlinfo.Add("fund_pay_sumamt", dtSumumt.Rows[0]["FundPaySumamt"].ToString());
joSetlinfo.Add("fulamt_ownpay_amt", dtSumumt.Rows[0]["OwnPayAmount"].ToString());
joSetlinfo.Add("hosp_part_amt", dtSumumt.Rows[0]["HospitalPartAmount"].ToString());
joSetlinfo.Add("setl_id", dtSumumt.Rows[0]["SettlementID"].ToString());
joSetlinfo.Add("inscp_scp_amt", dtSumumt.Rows[0]["InPolicyRangeAmount"].ToString());
joSetlinfo.Add("insutype", dtSumumt.Rows[0]["InsuranceType"].ToString());
joSetlinfo.Add("maf_pay", dtSumumt.Rows[0]["MedicalAssistPay"].ToString());
joSetlinfo.Add("psn_name", dtSumumt.Rows[0]["PatientName"].ToString());
joSetlinfo.Add("psn_part_amt", dtSumumt.Rows[0]["PersonPaySumamt"].ToString());
joSetlinfo.Add("clr_optins", dtSumumt.Rows[0]["ClearingOrgan"].ToString());
joSetlinfo.Add("pool_prop_selfpay", dtSumumt.Rows[0]["HealthInsuranceRatio"].ToString());
joSetlinfo.Add("psn_type", dtSumumt.Rows[0]["PersonType"].ToString());
joSetlinfo.Add("hifp_pay", dtSumumt.Rows[0]["HealthInsurancePay"].ToString());
joSetlinfo.Add("overlmt_selfpay", dtSumumt.Rows[0]["OverLimitAmount"].ToString());
joSetlinfo.Add("preselfpay_amt", dtSumumt.Rows[0]["PreSelfPayAmount"].ToString());
joSetlinfo.Add("age", dtSumumt.Rows[0]["Age"].ToString());
joSetlinfo.Add("clr_type", dtSumumt.Rows[0]["ClearingType"].ToString());
//
joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
joSetlinfo.Add("admID", dtSumumt.Rows[0]["AdmID"].ToString());
joSetlinfo.Add("ValidFlag", dtSumumt.Rows[0]["ValidFlag"].ToString());
joSetlinfo.Add("BillType", dtSumumt.Rows[0]["BillType"].ToString());
joSetlinfo.Add("updateUserID", Global.user.ID);
joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
joSetlinfo.Add("billID", dtSumumt.Rows[0]["BillID"].ToString());
joSetlinfo.Add("recordID", dtSumumt.Rows[0]["RecordID"].ToString());
joSetlinfo.Add("msgid", dtSumumt.Rows[0]["msgid"].ToString());
joSetlinfo.Add("interfaceDr", dtSumumt.Rows[0]["InterfaceDr"].ToString());
joSetlinfo.Add("admType", dtSumumt.Rows[0]["admType"].ToString());
joSetlinfo.Add("insuplc_admdvs", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());
joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSumumt.Rows[0]["SettlementID"].ToString());
if (joMainSettlInfo != null)
{
joMainSettlInfo["output"]["prm_yka065"] = dtSumumt.Rows[0]["AccountPaySumamt"].ToString();
joMainSettlInfo["output"]["psn_cash_pay"] = dtSumumt.Rows[0]["PersonCashPay"].ToString();
}
finalSettlementInfo = joSetlinfo.ToString();
this.DialogResult = DialogResult.OK;
Global.writeLog("finalSettlementInfo", finalSettlementInfo,"");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btNO_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
}
private void btQuerySettlInfo_Click(object sender, EventArgs e)
{
settlementID = tbMainSettlID.Text;
string errMsg;
if (getSettlInfo(out errMsg) != 0) { MessageBox.Show(errMsg); }
if (getSumamtInfo(out errMsg) != 0) { MessageBox.Show(errMsg); }
}
private void MutualAid_FormClosing(object sender, FormClosingEventArgs e)
{
//DialogResult result = MessageBox.Show("请点击确认完成或者放弃结算按钮!如果点击窗口关闭图标,可能会导致数据错误!确定要继续吗?", "信息", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
//if (result == DialogResult.No)
//{
// e.Cancel = true; //取消关闭操作
//}
//else
//{
// this.Close();
//}
}
}
}