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;
namespace PTMedicalInsurance.Forms
{
public partial class MutualAid : Form
{
public DataTable dtSumumt;
public DataTable dtSettlInfo;
public string settlementID;
public string finalSettlementInfo;
int numbersOfMutualAid = 1;
InsuServices iris = new InsuServices();
InvokeHelper center = new InvokeHelper();
HisMainBusiness hBus = new HisMainBusiness();
MIIrisServices mIS = new MIIrisServices();
public string mutualAidPay; //共济金额
//1.声明自适应类实例
AutoResizeForm asc = new AutoResizeForm();
public MutualAid(string settlId,string BusiType)
{
InitializeComponent();
GridViewSetter grdSetter = new GridViewSetter();
grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
grdSetter.SetHeaderTextOfDgvMutualAidQueryInfo(dgv_MutualAidQuery);
settlementID = settlId;
string errMsg;
getSettlInfo(out errMsg);
getSumamtInfo(out errMsg);
tbMainSettlID.Text = settlId;
Global.pat.AccountMutualAidPay = false; //先初始化一下 只有确认完成的时候 才把状态改为true
//门诊结算
if (BusiType == "M5")
{
btCancleMutualAid.Visible = false;
btMutualAid.Visible = true;
btYes.Visible = true;
}
//门诊撤销结算
if (BusiType == "M5C")
{
btCancleMutualAid.Visible = true;
btMutualAid.Visible = false;
btYes.Visible = true;
}
grdSetter.DatagridviewColumnWidthAdaptation(dgvSettlInfo);
grdSetter.DatagridviewColumnWidthAdaptation(dgvSumamt);
grdSetter.DatagridviewColumnWidthAdaptation(dgv_MutualAidQuery);
asc.controllInitializeSize(this);
asc.controlAutoSize(this);
}
public MutualAid()
{
InitializeComponent();
GridViewSetter grdSetter = new GridViewSetter();
grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
grdSetter.SetHeaderTextOfDgvMutualAidQueryInfo(dgv_MutualAidQuery);
grdSetter.DatagridviewColumnWidthAdaptation(dgvSettlInfo);
grdSetter.DatagridviewColumnWidthAdaptation(dgvSumamt);
grdSetter.DatagridviewColumnWidthAdaptation(dgv_MutualAidQuery);
//this.WindowState = FormWindowState.Minimized;
asc.controllInitializeSize(this);
asc.controlAutoSize(this);
tb_AccountMutualAidPay.SelectedIndex = 2;
}
#region 方法封装
//获取结算汇总信息
private int getSumamtInfo(out string errMsg)
{
errMsg = "";
try
{
string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr + " AND SettlementID='" + settlementID + "'";
JObject joRtn = iris.querySettlementInfo(sqlStr);
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) { numbersOfMutualAid++; }
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 Hospital_Dr=" + Global.inf.hospitalDr
+ " AND MainSettlementIDOfMutualAid='" + settlementID + "'";
JObject joRtn = iris.querySettlementInfo(sqlStr);
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(string patInfo, out string output)
{
output = "";
string mPsnNO, mdtrtCertType, mdtrtCertNO, mInsutype,mName,mCertNo,mCertType;
//dynamic joExpContent = new JObject();
try
{
Global.writeLog("账户代支授权人1101返回值",patInfo,"");
//JObject jo1101 = JObject.Parse(patInfo);
//JObject joBaseInfo = JObject.FromObject(jo1101["output"]["baseinfo"]);
//JObject joSelectedInsuInfo = JObject.FromObject(jo1101["selectedInsuInfo"]);
//JObject joselectedIdInfo = JObject.FromObject(jo1101["selectedIdInfo"]);
//mName = joBaseInfo["psn_name"].ToString();
//mCertNo = joBaseInfo["certno"].ToString();
////mdtrtCertType = joSelectedInsuInfo["mdtrt_cert_type"].ToString();
////mdtrtCertNO = joSelectedInsuInfo["mdtrt_cert_no"].ToString();
//mInsutype = joSelectedInsuInfo["insutype"].ToString();
//Global.pat.certNO_GJSQR = mCertNo;
//Global.pat.name_GJSQR = mName;
//Global.pat.insuType_GJSQR = mInsutype;
mdtrtCertType = Global.pat.mdtrtcertType_GJSQR;
mdtrtCertNO = Global.pat.mdtrtcertNO_GJSQR;
//MessageBox.Show(Global.pat.certNO_GJSQR+"|"+ Global.pat.name_GJSQR+"|"+ Global.pat.certNO_SYR+"|"+ Global.pat.name_SYR+"|"+ Global.pat.insuType_GJSQR+"|"
//+ mutualAidPay+"|"+ Global.inf.hospitalNO+"|"+ Global.pat.mdtrtcertType_GJSQR+"|"+ Global.pat.mdtrtcertNO_GJSQR);
//组织入参
JObject joData2596 = new JObject();
joData2596.Add("autherCertno", Global.pat.certNO_GJSQR); //授权人证件号码
joData2596.Add("autherName", Global.pat.name_GJSQR); //授权人姓名
joData2596.Add("userCertno", Global.pat.certNO_SYR); //使用人证件号码
joData2596.Add("acctUserName", Global.pat.name_SYR); //使用人姓名
joData2596.Add("insutype", Global.pat.insuType_GJSQR); //险种
joData2596.Add("acctPay", Global.pat.mutualAidPay); //代支金额
joData2596.Add("fixmedinsCode", Global.inf.hospitalNO); //医疗服务机构编号
joData2596.Add("mdtrt_cert_type", mdtrtCertType); //就诊凭证类型
joData2596.Add("mdtrt_cert_no", mdtrtCertNO); //就诊凭证编号
JObject joInPut2596 = new JObject();
joInPut2596.Add("acctMulaidBind", joData2596);
//调用中心结算
JObject joRtn2596 = center.invokeCenterServiceOfMutualAid("2596", JsonHelper.setCenterInpar_MutualMid("2596", joInPut2596));
//保存中心返回的结果
if (JsonHelper.parseCenterReturnJson(joRtn2596, out output) != 0)
{
return -1;
}
else
{
output = joRtn2596.ToString();
return 0;
}
return 0;
}
catch (Exception e)
{
output = e.Message;
return 1;
}
}
//撤销中心共济结算
private int cancleMutualAid(out string errMsg)
{
errMsg = "";
try
{
int i = dgvSettlInfo.SelectedIndex;
mIS.getInterface(dtSettlInfo.Rows[i]["InterfaceDr"].ToString());
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;
}
//南宁基线版
if (dtSettlInfo.Rows[i]["InterfaceDr"].ToString() == "7")
{
Global.inf.mutualAidCenterURL = @"http://10.98.34.114/mbs-hiIntf-nanning/web/api/fsi/callService";
Global.inf.mutualAidHospitalAreaCode = "450100";
}
//广西基线版
if (dtSettlInfo.Rows[i]["InterfaceDr"].ToString() == "11")
{
Global.inf.mutualAidCenterURL = @"http://10.98.34.113/mbs-hiIntf-qubenji/web/api/fsi/callService";
Global.inf.mutualAidHospitalAreaCode = "459900";
}
Global.inf.hospitalNO = "H45010302052";
Global.inf.hospitalName = "南宁普瑞眼科医院";
Global.inf.mutualAidPatientAreaCode = dtSettlInfo.Rows[i]["insuplc_admdvs"].ToString();
Global.inf.mutualAidHospitalAreaCode = Global.inf.mutualAidPatientAreaCode;
Global.pat.insuplc_admdvs_GJSQR = Global.inf.mutualAidPatientAreaCode;
//组织入参
JObject joData2597 = new JObject();
joData2597.Add("mdtrtId", dtSettlInfo.Rows[i]["MdtrtID"].ToString());
joData2597.Add("setlId", dtSettlInfo.Rows[i]["SettlementID"].ToString());
joData2597.Add("fixmedinsCode", Global.inf.hospitalNO);
JObject joInPut2597 = new JObject();
joInPut2597.Add("acctMulaidBind", joData2597);
//MessageBox.Show(joData2597.ToString());
JObject joRtn2597 = center.invokeCenterServiceOfMutualAid("2597", JsonHelper.setCenterInpar_MutualMid("2597", joInPut2597));
//将中心返回的结果返回HIS 调用HIS服务进行保存
if (JsonHelper.parseCenterReturnJson(joRtn2597, out errMsg) != 0)
{
return -1;
}
else
{
errMsg = joRtn2597.ToString();
dgvSettlInfo.SelectedIndex = dgvSettlInfo.Rows.Count - 1;
return 0;
}
}
catch (Exception e)
{
errMsg = e.Message;
return -1;
}
}
//保存到云医保平台
private int saveMutualAidSettlementToCloudPlatform(string patInfo,string centerReturn,out string errMsg)
{
errMsg = "";
try
{
//返回给云医保平台
JObject joCenterRtn = JObject.Parse(centerReturn);
//JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(joCenterRtn, "output"));
JObject joSetlinfo = new JObject();
JObject joPatInfo = JObject.Parse(patInfo);
//以下节点中心不返回,传给后台保存的值为空,手工置为0
if (Global.pat.cvlserv_flag_GJSQR == "是")
Global.pat.cvlserv_flag_GJSQR = "1";
else
Global.pat.cvlserv_flag_GJSQR = "0";
joSetlinfo.Add("setl_id", JsonHelper.getDestValue(joCenterRtn, "output.setlId")); //结算Id
joSetlinfo.Add("mdtrt_id", JsonHelper.getDestValue(joCenterRtn, "output.mdtrtId")); //就诊Id
joSetlinfo.Add("psn_no", Global.pat.psn_no_GJSQR); //授权人医保编号
joSetlinfo.Add("psn_name", Global.pat.name_GJSQR); //授权人姓名
joSetlinfo.Add("psn_cert_type", Global.pat.psn_cert_type_GJSQR); //授权人证件类型
joSetlinfo.Add("certno", Global.pat.certNO_GJSQR); //授权人证件号码
joSetlinfo.Add("gend", Global.pat.gend_GJSQR); //授权人性别
joSetlinfo.Add("naty", Global.pat.naty_GJSQR); //授权人民族
joSetlinfo.Add("brdy", Global.pat.brdy_GJSQR); //授权人生日
joSetlinfo.Add("age", Global.pat.age_GJSQR); //授权人年龄
joSetlinfo.Add("insutype", Global.pat.insuType_GJSQR); //授权人险种类型
//joSetlinfo.Add("insutype", JsonHelper.getDestValue(joCenterRtn, "output.insuType")); //险种
joSetlinfo.Add("psn_type", Global.pat.psn_type_GJSQR); //授权人人员类别
joSetlinfo.Add("cvlserv_flag", Global.pat.cvlserv_flag_GJSQR); //授权人是否公务员
joSetlinfo.Add("setl_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
joSetlinfo.Add("mdtrt_cert_type", Global.pat.mdtrtcertType_GJSQR);
joSetlinfo.Add("med_type", "110102");
joSetlinfo.Add("medfee_sumamt", JsonHelper.getDestValue(joCenterRtn, "output.medfeeSumamt")); //医保总费用
joSetlinfo.Add("fulamt_ownpay_amt", 0);
joSetlinfo.Add("overlmt_selfpay", 0);
joSetlinfo.Add("preselfpay_amt", 0);
joSetlinfo.Add("inscp_scp_amt", 0);
joSetlinfo.Add("act_pay_dedc", 0); //起付线
joSetlinfo.Add("hifp_pay", 0);
joSetlinfo.Add("pool_prop_selfpay", 0);
joSetlinfo.Add("cvlserv_pay", 0);
joSetlinfo.Add("hifes_pay", 0);
joSetlinfo.Add("hifmi_pay", 0);
joSetlinfo.Add("hifob_pay", 0);
joSetlinfo.Add("hifdm_pay", 0);
joSetlinfo.Add("maf_pay", 0);
joSetlinfo.Add("oth_pay", 0);
joSetlinfo.Add("fund_pay_sumamt", JsonHelper.getDestValue(joCenterRtn, "output.fundPaySumamt")); //基金支付金额
joSetlinfo.Add("psn_part_amt", 0);
joSetlinfo.Add("acct_pay", JsonHelper.getDestValue(joCenterRtn, "output.acctPay")); //个人账户支出金额
joSetlinfo.Add("psn_cash_pay", 0);
joSetlinfo.Add("hosp_part_amt", 0);
joSetlinfo.Add("balc", JsonHelper.getDestValue(joCenterRtn, "output.balance")); //授权人支出后账户余额
joSetlinfo.Add("acct_mulaid_pay", 0);
joSetlinfo.Add("medins_setl_id", Global.curEvt.msgid);
joSetlinfo.Add("clr_optins", JsonHelper.getDestValue(joCenterRtn, "output.clrOptions")); //清算经办机构
joSetlinfo.Add("clr_way", "1"); //清算方式
joSetlinfo.Add("clr_type", JsonHelper.getDestValue(joCenterRtn, "output.clrType")); //清算类别
joSetlinfo.Add("exp_content", JsonHelper.getDestValue(joCenterRtn, "output")); //
joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
joSetlinfo.Add("admID", dtSettlInfo.Rows[0]["AdmID"].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.mutualAidInterfaceDr);
joSetlinfo.Add("admType", dtSettlInfo.Rows[0]["admType"].ToString());
joSetlinfo.Add("insuplc_admdvs", Global.pat.insuplc_admdvs_GJSQR ); //JsonHelper.getDestValue(joPatInfo, "selectedInsuInfo.insuplc_admdvs")
joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSettlInfo.Rows[0]["SettlementID"].ToString());
numbersOfMutualAid++;
joSetlinfo.Add("MutualAidFlag", numbersOfMutualAid);
dynamic joTmp = new JObject();
joTmp.code = "09010051";
JArray jaTmp = new JArray();
jaTmp.Add(joSetlinfo);
joTmp.Add("params", jaTmp);
JObject joRtn = center.invokeInsuService(joTmp.ToString(), "插入结算信息");
if (JsonHelper.parseIrisRtnValue(joRtn, out errMsg) != 0)
{
return -1;
}
/*
JObject joSetlDetail = new JObject();
joSetlDetail.Add("HospitalDr", Global.inf.hospitalDr);
joSetlDetail.Add("InterfaceDr", Global.inf.interfaceDr);
joSetlDetail.Add("MdtrtID", JsonHelper.getDestValue(joCenterRtn, "output.mdtrtId"));
joSetlDetail.Add("SettlementID", JsonHelper.getDestValue(joSetlinfo, "setl_id"));
joSetlDetail.Add("AdmID", dtSettlInfo.Rows[0]["AdmID"].ToString());
joSetlDetail.Add("updateUserID", Global.user.ID);
JArray jaSetlDetail = JArray.Parse(JsonHelper.getDestValue(joCenterRtn, "output.setldetail"));
joSetlDetail.Add("setldetail", jaSetlDetail);
joTmp = new JObject();
joTmp.code = "09010056";
jaTmp = new JArray();
jaTmp.Add(joSetlDetail);
joTmp.Add("params", jaTmp);
JObject joInsertSetlDetail = center.invokeInsuService(joTmp.ToString(), "插入结算明细信息");
if (JsonHelper.parseIrisRtnValue(joInsertSetlDetail, out errMsg) != 0)
{
MessageBox.Show("插入结算明细信息:" + errMsg);
}*/
return 0;
}
catch (Exception e)
{
errMsg = e.Message;
return -1;
}
}
///
/// 撤销云平台结算信息
///
///
///
private int cancleMutualAidOfCloudPlatform(string centerReturn,out string errMsg)
{
errMsg = "";
try
{
int i = dgvSettlInfo.SelectedIndex;
dynamic joTmp = new JObject();
joTmp.admID = dtSettlInfo.Rows[i]["AdmID"].ToString();
joTmp.PersonalNO = dtSettlInfo.Rows[i]["PersonnelNO"].ToString();
joTmp.mdtrt_id = dtSettlInfo.Rows[i]["MdtrtID"].ToString();
joTmp.setl_id = dtSettlInfo.Rows[i]["SettlementID"].ToString();
JObject joCenterRtn = JObject.Parse(centerReturn);
joTmp.newSetlId = JsonHelper.getDestValue(joCenterRtn, "output.setlId");
JObject joIrisRtn = iris.cancleSettlement(joTmp);
if (JsonHelper.parseIrisRtnValue(joIrisRtn, 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", numbersOfMutualAid);
output = joSetlinfo.ToString();
return 0;
}
catch (Exception e)
{
output = e.Message;
return -1;
}
}
#endregion
private void btMutualAid_Click(object sender, EventArgs e)
{
string errMsg, patInfo, outParam;
try
{
if (dtSumumt.Rows.Count == 0)
{
MessageBox.Show("请先查询结算信息!");
return;
}
#region【此处的读卡在弹框前会触发读取授权人的参保信息】
if (Global.pat.patInfo_mutualAidPay == "")
{
Global.Set.psnCashPay = dgvSettlInfo.Rows[dgvSettlInfo.CurrentRow.Index].Cells["PersonCashPay"].Value.ToString();
#region【选择接口目录】
MutualAidChooser frm = new MutualAidChooser();
if (frm.ShowDialog() == DialogResult.OK)
{
mutualAidPay = frm.mutualAidPay;
int i = frm.cbxInterface.SelectedIndex;
DataTable dtInteface = (DataTable)frm.cbxInterface.DataSource;
Global.inf.mutualAidCenterURL = dtInteface.Rows[i]["CenterURL"].ToString();
Global.inf.mutualAidHospitalAreaCode = dtInteface.Rows[i]["AreaCode"].ToString();
Global.inf.mutualAidInterfaceDr = int.Parse(dtInteface.Rows[i]["ID"].ToString());
}
else
{
//MessageBox.Show("收费员取消账户代支结算!");
return;
}
#endregion
//选中的账户授权人的接口类型与使用人不一致的情况下,调用签到信息
if (Global.inf.mutualAidInterfaceDr != Global.inf.interfaceDr)
{
if (mIS.isSigned_MutualAid(ref Global.curEvt.signno) != true)
{
//先签到
CenterBusiness cBus = new CenterBusiness();
JObject jo9001Rtn = new JObject();
cBus.signIn_MutualAid(out jo9001Rtn);
}
}
#region【读卡-医保账户代支授权人】
//打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
if (hBus.MutualAidReadCard(out outParam) != 0)
{
MessageBox.Show(JsonHelper.setExceptionJson(-100, "医保账户代支读卡失败!", outParam).ToString());
return;
}
else
{
//展示患者信息界面
Global.pat.patInfo_mutualAidPay = outParam;
if (hBus.MutualAidShowPatInfo(outParam, out Global.pat.patInfo_mutualAidPay) != 0)
{
MessageBox.Show("医保账户代支读卡成功,展示患者信息界面失败:" + Global.pat.patInfo_mutualAidPay);
return;
}
}
#endregion
}
#endregion
//医保代支结算-2596
string centerReturn;
if (mutualAid(Global.pat.patInfo_mutualAidPay, out centerReturn) != 0)
{
MessageBox.Show(centerReturn);
return;
}
//保存到医保平台
if (saveMutualAidSettlementToCloudPlatform(Global.pat.patInfo_mutualAidPay, centerReturn,out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
//更新医保结算表主结算记录 账户共济标志和主结算ID
if (mIS.updateSettlement(dtSettlInfo.Rows[0]["SettlementID"].ToString(), 1, out errMsg) != 0)
{
MessageBox.Show(JsonHelper.setExceptionJson(-1, "更新云医保平台账户共济主结算信息失败", errMsg).ToString());
//return;
}
//刷新结算信息显示
if (getSettlInfo(out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
//刷新汇总信息显示
if (getSumamtInfo(out errMsg) != 0)
{
MessageBox.Show(errMsg);
return;
}
else
{
Global.pat.AccountMutualAidPay = true;
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(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
{
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());
finalSettlementInfo = joSetlinfo.ToString();
Global.pat.patInfo_mutualAidPay = "";
this.DialogResult = DialogResult.OK;
Global.writeLog("finalSettlementInfo", finalSettlementInfo,"");
Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btNO_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
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 btnExit_Click(object sender, EventArgs e)
{
Close();
}
private void btnInputDemo_Click(object sender, EventArgs e)
{
rtbInparam.Text = @"{""acctMulaidBind"":{""mdtrtId"":"""",""setlId"":"""",""fixmedinsCode"":""H45010302052""}}";
JObject joTmp = JObject.Parse(rtbInparam.Text);
rtbInparam.Text = joTmp.ToString();
}
private void btnRectification_Click(object sender, EventArgs e)
{
string errorMsg = "";
#region【选择接口目录】
MutualAidChooser frm = new MutualAidChooser();
if (frm.ShowDialog() == DialogResult.OK)
{
mutualAidPay = frm.mutualAidPay;
int i = frm.cbxInterface.SelectedIndex;
DataTable dtInteface = (DataTable)frm.cbxInterface.DataSource;
Global.inf.mutualAidCenterURL = dtInteface.Rows[i]["CenterURL"].ToString();
Global.inf.mutualAidHospitalAreaCode = dtInteface.Rows[i]["AreaCode"].ToString();
Global.inf.mutualAidInterfaceDr = int.Parse(dtInteface.Rows[i]["ID"].ToString());
}
else
{
MessageBox.Show("收费员取消账户代支结算!");
return;
}
#endregion
JObject joRtn = new JObject();
Global.pat.insuplc_admdvs_GJSQR = tbCBD_Hand.Text;
if ((tbCBD_Hand.Text == "") || (tbCBD_Hand.Text == "") || (tbCBD_Hand.Text == ""))
{
MessageBox.Show("入参不能为空!");
return;
}
joRtn = center.invokeCenterServiceOfMutualAid("2599", JsonHelper.setCenterInpar_MutualMid("2599", JObject.Parse(rtbInparam.Text)));
if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
{
MessageBox.Show("医保账户代支结算冲正失败:" + errorMsg);
}
else
{
rtbOutparam.Text = joRtn.ToString();
}
}
private void btnQuery_Click(object sender, EventArgs e)
{
if (tb_CertNO_SYR.Text == "")
{
MessageBox.Show("使用人身份证号不能为空!");
return;
}
#region【1101获取身份信息】
if (tb_UserNO.Text == "")
{
string errorMsg, patInfo;
JObject joData1101 = new JObject();
joData1101.Add("mdtrt_cert_type", "02"); //就诊凭证类型
joData1101.Add("mdtrt_cert_no", tb_CertNO_SYR.Text); //就诊凭证编码
joData1101.Add("card_sn", ""); //卡识别码
joData1101.Add("begntime", "");
joData1101.Add("psn_cert_type", "01"); //证件类别
joData1101.Add("certno", tb_CertNO_SYR.Text); //证件号码
joData1101.Add("psn_name", ""); //姓名
JObject joInput1101 = new JObject();
joInput1101.Add("data", joData1101);
string inPutParam = JsonHelper.setCenterInpar("1101", joInput1101);
JObject joRtn1101 = center.invokeCenterService("1101", inPutParam);
if (JsonHelper.parseCenterRtnValue(joRtn1101, out errorMsg) != 0)
{
MessageBox.Show("1101获取参保人信息失败:" + errorMsg);
return;
}
else
{
string outParam = joRtn1101.ToString();
Global.pat.psn_no = JsonHelper.getDestValue(JObject.Parse(outParam), "output.baseinfo.psn_no"); //人员编号
tb_UserNO.Text = Global.pat.psn_no;
//展示患者信息界面
if (hBus.showPatInfo(outParam, out patInfo) != 0)
{
MessageBox.Show("展示患者参保信息界面失败:" + patInfo);
return;
}
}
}
#endregion
if (tb_UserNO.Text == "")
{
MessageBox.Show("使用人医保编号不能为空!");
return;
}
string error;
dynamic joData = new JObject();
joData.auther_no = ""; //授权人医保编码
joData.user_no = tb_UserNO.Text; //使用人医保编码
joData.begndate = dt_ST.Value.ToString("yyyy-MM-dd");
joData.enddate = dt_ET.Value.ToString("yyyy-MM-dd");
joData.auther_certno = ""; //授权人证件号码
joData.user_certno = tb_CertNO_SYR.Text; //使用人证件号码
JObject joData2589 = new JObject();
joData2589.Add("data", joData);
//上传给中心
string inPutParam2589 = JsonHelper.setCenterInpar("2589", joData2589.ToString());
rtb_InParam.Text = inPutParam2589;
InvokeHelper invoker = new InvokeHelper();
JObject joRtn = invoker.invokeCenterService("2589", inPutParam2589);
if (JsonHelper.parseCenterReturnJson(joRtn, out error) != 0)
{
MessageBox.Show("【2589】个账共济查询失败:" + error);
return;
}
else
{
DataTable dt = (DataTable)joRtn["output"].ToObject(typeof(DataTable)); //["result"]
dgv_MutualAidQuery.DataSource = dt;
if (dt.Rows.Count == 0)
{
MessageBox.Show("【2589】个账共济查询失败:医保返回当前使用人无账户代支绑定信息!");
return;
}
}
}
private void btnReadCard_Click(object sender, EventArgs e)
{
#region【读卡-医保账户代支授权人】
string patInfo,outParam;
//打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
if (hBus.MutualAidReadCard(out outParam) != 0)
{
MessageBox.Show(JsonHelper.setExceptionJson(-100, "医保账户代支读卡失败!", outParam).ToString());
return;
}
else
{
//展示患者信息界面
if (hBus.MutualAidShowPatInfo(outParam, out patInfo) != 0)
{
MessageBox.Show("医保账户代支读卡成功,展示患者信息界面失败:" + patInfo);
return;
}
}
#endregion
tb_UserNO.Text = Global.pat.psn_no_GJSQR;
}
private void MutualAid_Load(object sender, EventArgs e)
{
dt_ST.Text = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
dt_ET.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
}
}
}