MutualAid.cs 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using PTMedicalInsurance.Business;
  11. using Newtonsoft.Json;
  12. using Newtonsoft.Json.Linq;
  13. using PTMedicalInsurance.Common;
  14. using PTMedicalInsurance.Helper;
  15. using PTMedicalInsurance.FormSetter;
  16. using PTMedicalInsurance.Variables;
  17. namespace PTMedicalInsurance.Forms
  18. {
  19. public partial class MutualAid : Form
  20. {
  21. public DataTable dtSumumt;
  22. public DataTable dtSettlInfo;
  23. public string settlementID;
  24. public string finalSettlementInfo;
  25. int numbersOfMutualAid = 1;
  26. InsuServices iris = new InsuServices();
  27. InvokeHelper center = new InvokeHelper();
  28. HisMainBusiness hBus = new HisMainBusiness();
  29. MIIrisServices mIS = new MIIrisServices();
  30. public string mutualAidPay; //共济金额
  31. //1.声明自适应类实例
  32. AutoResizeForm asc = new AutoResizeForm();
  33. public MutualAid(string settlId,string BusiType)
  34. {
  35. InitializeComponent();
  36. GridViewSetter grdSetter = new GridViewSetter();
  37. grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
  38. grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
  39. grdSetter.SetHeaderTextOfDgvMutualAidQueryInfo(dgv_MutualAidQuery);
  40. settlementID = settlId;
  41. string errMsg;
  42. getSettlInfo(out errMsg);
  43. getSumamtInfo(out errMsg);
  44. tbMainSettlID.Text = settlId;
  45. Global.pat.AccountMutualAidPay = false; //先初始化一下 只有确认完成的时候 才把状态改为true
  46. //门诊结算
  47. if (BusiType == "M5")
  48. {
  49. btCancleMutualAid.Visible = false;
  50. btMutualAid.Visible = true;
  51. btYes.Visible = true;
  52. }
  53. //门诊撤销结算
  54. if (BusiType == "M5C")
  55. {
  56. btCancleMutualAid.Visible = true;
  57. btMutualAid.Visible = false;
  58. btYes.Visible = true;
  59. }
  60. grdSetter.DatagridviewColumnWidthAdaptation(dgvSettlInfo);
  61. grdSetter.DatagridviewColumnWidthAdaptation(dgvSumamt);
  62. grdSetter.DatagridviewColumnWidthAdaptation(dgv_MutualAidQuery);
  63. asc.controllInitializeSize(this);
  64. asc.controlAutoSize(this);
  65. }
  66. public MutualAid()
  67. {
  68. InitializeComponent();
  69. GridViewSetter grdSetter = new GridViewSetter();
  70. grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
  71. grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
  72. grdSetter.SetHeaderTextOfDgvMutualAidQueryInfo(dgv_MutualAidQuery);
  73. grdSetter.DatagridviewColumnWidthAdaptation(dgvSettlInfo);
  74. grdSetter.DatagridviewColumnWidthAdaptation(dgvSumamt);
  75. grdSetter.DatagridviewColumnWidthAdaptation(dgv_MutualAidQuery);
  76. //this.WindowState = FormWindowState.Minimized;
  77. asc.controllInitializeSize(this);
  78. asc.controlAutoSize(this);
  79. tb_AccountMutualAidPay.SelectedIndex = 2;
  80. }
  81. #region 方法封装
  82. //获取结算汇总信息
  83. private int getSumamtInfo(out string errMsg)
  84. {
  85. errMsg = "";
  86. try
  87. {
  88. string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr + " AND SettlementID='" + settlementID + "'";
  89. JObject joRtn = iris.querySettlementInfo(sqlStr);
  90. dtSumumt = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
  91. decimal accountPay=0, cashPay=0, mutualAidPay = 0;
  92. for (int i = 1; i < dtSettlInfo.Rows.Count; i++)
  93. {
  94. int billType = int.Parse(dtSettlInfo.Rows[i]["BillType"].ToString());
  95. accountPay = accountPay + decimal.Parse(dtSettlInfo.Rows[i]["AccountPaySumamt"].ToString()) * billType;
  96. mutualAidPay = mutualAidPay + decimal.Parse(dtSettlInfo.Rows[i]["AccountMutualAidAmount"].ToString()) * billType;
  97. if (billType == 1) { numbersOfMutualAid++; }
  98. else { dgvSettlInfo.Rows[i].DefaultCellStyle.ForeColor = Color.Red; }
  99. }
  100. dgvSettlInfo.Refresh();
  101. dtSumumt.Rows[0]["AccountPaySumamt"] = decimal.Parse(dtSumumt.Rows[0]["AccountPaySumamt"].ToString()) + accountPay;
  102. dtSumumt.Rows[0]["PersonCashPay"] = decimal.Parse(dtSumumt.Rows[0]["PersonCashPay"].ToString()) - accountPay;
  103. dtSumumt.Rows[0]["AccountMutualAidAmount"] = accountPay;
  104. dgvSumamt.DataSource = dtSumumt;
  105. dgvSettlInfo.SelectedIndex = dgvSettlInfo.Rows.Count - 1;
  106. return 0;
  107. }
  108. catch (Exception e)
  109. {
  110. errMsg = e.Message;
  111. return 1;
  112. }
  113. }
  114. //获取多次结算信息
  115. private int getSettlInfo(out string errMsg)
  116. {
  117. errMsg = "";
  118. try
  119. {
  120. string sqlStr = "SELECT * FROM BS_MedInsuSettlement "
  121. + " WHERE Hospital_Dr=" + Global.inf.hospitalDr
  122. + " AND MainSettlementIDOfMutualAid='" + settlementID + "'";
  123. JObject joRtn = iris.querySettlementInfo(sqlStr);
  124. dtSettlInfo = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
  125. dgvSettlInfo.DataSource = dtSettlInfo;
  126. return 0;
  127. }
  128. catch (Exception e)
  129. {
  130. errMsg = e.Message;
  131. return 1;
  132. }
  133. }
  134. //中心共济结算
  135. private int mutualAid(string patInfo, out string output)
  136. {
  137. output = "";
  138. string mPsnNO, mdtrtCertType, mdtrtCertNO, mInsutype,mName,mCertNo,mCertType;
  139. //dynamic joExpContent = new JObject();
  140. try
  141. {
  142. Global.writeLog("账户代支授权人1101返回值",patInfo,"");
  143. //JObject jo1101 = JObject.Parse(patInfo);
  144. //JObject joBaseInfo = JObject.FromObject(jo1101["output"]["baseinfo"]);
  145. //JObject joSelectedInsuInfo = JObject.FromObject(jo1101["selectedInsuInfo"]);
  146. //JObject joselectedIdInfo = JObject.FromObject(jo1101["selectedIdInfo"]);
  147. //mName = joBaseInfo["psn_name"].ToString();
  148. //mCertNo = joBaseInfo["certno"].ToString();
  149. ////mdtrtCertType = joSelectedInsuInfo["mdtrt_cert_type"].ToString();
  150. ////mdtrtCertNO = joSelectedInsuInfo["mdtrt_cert_no"].ToString();
  151. //mInsutype = joSelectedInsuInfo["insutype"].ToString();
  152. //Global.pat.certNO_GJSQR = mCertNo;
  153. //Global.pat.name_GJSQR = mName;
  154. //Global.pat.insuType_GJSQR = mInsutype;
  155. mdtrtCertType = Global.pat.mdtrtcertType_GJSQR;
  156. mdtrtCertNO = Global.pat.mdtrtcertNO_GJSQR;
  157. //MessageBox.Show(Global.pat.certNO_GJSQR+"|"+ Global.pat.name_GJSQR+"|"+ Global.pat.certNO_SYR+"|"+ Global.pat.name_SYR+"|"+ Global.pat.insuType_GJSQR+"|"
  158. //+ mutualAidPay+"|"+ Global.inf.hospitalNO+"|"+ Global.pat.mdtrtcertType_GJSQR+"|"+ Global.pat.mdtrtcertNO_GJSQR);
  159. //组织入参
  160. JObject joData2596 = new JObject();
  161. joData2596.Add("autherCertno", Global.pat.certNO_GJSQR); //授权人证件号码
  162. joData2596.Add("autherName", Global.pat.name_GJSQR); //授权人姓名
  163. joData2596.Add("userCertno", Global.pat.certNO_SYR); //使用人证件号码
  164. joData2596.Add("acctUserName", Global.pat.name_SYR); //使用人姓名
  165. joData2596.Add("insutype", Global.pat.insuType_GJSQR); //险种
  166. joData2596.Add("acctPay", Global.pat.mutualAidPay); //代支金额
  167. joData2596.Add("fixmedinsCode", Global.inf.hospitalNO); //医疗服务机构编号
  168. joData2596.Add("mdtrt_cert_type", mdtrtCertType); //就诊凭证类型
  169. joData2596.Add("mdtrt_cert_no", mdtrtCertNO); //就诊凭证编号
  170. JObject joInPut2596 = new JObject();
  171. joInPut2596.Add("acctMulaidBind", joData2596);
  172. //调用中心结算
  173. JObject joRtn2596 = center.invokeCenterServiceOfMutualAid("2596", JsonHelper.setCenterInpar_MutualMid("2596", joInPut2596));
  174. //保存中心返回的结果
  175. if (JsonHelper.parseCenterReturnJson(joRtn2596, out output) != 0)
  176. {
  177. return -1;
  178. }
  179. else
  180. {
  181. output = joRtn2596.ToString();
  182. return 0;
  183. }
  184. return 0;
  185. }
  186. catch (Exception e)
  187. {
  188. output = e.Message;
  189. return 1;
  190. }
  191. }
  192. //撤销中心共济结算
  193. private int cancleMutualAid(out string errMsg)
  194. {
  195. errMsg = "";
  196. try
  197. {
  198. int i = dgvSettlInfo.SelectedIndex;
  199. mIS.getInterface(dtSettlInfo.Rows[i]["InterfaceDr"].ToString());
  200. if ((dtSettlInfo.Rows[i]["MutualAidFlag"].ToString() == "") || (dtSettlInfo.Rows[i]["MutualAidFlag"].ToString() == "0"))
  201. {
  202. errMsg = "当前结算无医保账户代支结算信息!";
  203. return -1;
  204. }
  205. else if (int.Parse(dtSettlInfo.Rows[i]["MutualAidFlag"].ToString()) == 1)
  206. {
  207. errMsg = "当前结算为主结算,请选择正确的医保账户代支结算!";
  208. return -1;
  209. }
  210. //南宁基线版
  211. if (dtSettlInfo.Rows[i]["InterfaceDr"].ToString() == "7")
  212. {
  213. Global.inf.mutualAidCenterURL = @"http://10.98.34.114/mbs-hiIntf-nanning/web/api/fsi/callService";
  214. Global.inf.mutualAidHospitalAreaCode = "450100";
  215. }
  216. //广西基线版
  217. if (dtSettlInfo.Rows[i]["InterfaceDr"].ToString() == "11")
  218. {
  219. Global.inf.mutualAidCenterURL = @"http://10.98.34.113/mbs-hiIntf-qubenji/web/api/fsi/callService";
  220. Global.inf.mutualAidHospitalAreaCode = "459900";
  221. }
  222. Global.inf.hospitalNO = "H45010302052";
  223. Global.inf.hospitalName = "南宁普瑞眼科医院";
  224. Global.inf.mutualAidPatientAreaCode = dtSettlInfo.Rows[i]["insuplc_admdvs"].ToString();
  225. Global.inf.mutualAidHospitalAreaCode = Global.inf.mutualAidPatientAreaCode;
  226. Global.pat.insuplc_admdvs_GJSQR = Global.inf.mutualAidPatientAreaCode;
  227. //组织入参
  228. JObject joData2597 = new JObject();
  229. joData2597.Add("mdtrtId", dtSettlInfo.Rows[i]["MdtrtID"].ToString());
  230. joData2597.Add("setlId", dtSettlInfo.Rows[i]["SettlementID"].ToString());
  231. joData2597.Add("fixmedinsCode", Global.inf.hospitalNO);
  232. JObject joInPut2597 = new JObject();
  233. joInPut2597.Add("acctMulaidBind", joData2597);
  234. //MessageBox.Show(joData2597.ToString());
  235. JObject joRtn2597 = center.invokeCenterServiceOfMutualAid("2597", JsonHelper.setCenterInpar_MutualMid("2597", joInPut2597));
  236. //将中心返回的结果返回HIS 调用HIS服务进行保存
  237. if (JsonHelper.parseCenterReturnJson(joRtn2597, out errMsg) != 0)
  238. {
  239. return -1;
  240. }
  241. else
  242. {
  243. errMsg = joRtn2597.ToString();
  244. dgvSettlInfo.SelectedIndex = dgvSettlInfo.Rows.Count - 1;
  245. return 0;
  246. }
  247. }
  248. catch (Exception e)
  249. {
  250. errMsg = e.Message;
  251. return -1;
  252. }
  253. }
  254. //保存到云医保平台
  255. private int saveMutualAidSettlementToCloudPlatform(string patInfo,string centerReturn,out string errMsg)
  256. {
  257. errMsg = "";
  258. try
  259. {
  260. //返回给云医保平台
  261. JObject joCenterRtn = JObject.Parse(centerReturn);
  262. //JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(joCenterRtn, "output"));
  263. JObject joSetlinfo = new JObject();
  264. JObject joPatInfo = JObject.Parse(patInfo);
  265. //以下节点中心不返回,传给后台保存的值为空,手工置为0
  266. if (Global.pat.cvlserv_flag_GJSQR == "是")
  267. Global.pat.cvlserv_flag_GJSQR = "1";
  268. else
  269. Global.pat.cvlserv_flag_GJSQR = "0";
  270. joSetlinfo.Add("setl_id", JsonHelper.getDestValue(joCenterRtn, "output.setlId")); //结算Id
  271. joSetlinfo.Add("mdtrt_id", JsonHelper.getDestValue(joCenterRtn, "output.mdtrtId")); //就诊Id
  272. joSetlinfo.Add("psn_no", Global.pat.psn_no_GJSQR); //授权人医保编号
  273. joSetlinfo.Add("psn_name", Global.pat.name_GJSQR); //授权人姓名
  274. joSetlinfo.Add("psn_cert_type", Global.pat.psn_cert_type_GJSQR); //授权人证件类型
  275. joSetlinfo.Add("certno", Global.pat.certNO_GJSQR); //授权人证件号码
  276. joSetlinfo.Add("gend", Global.pat.gend_GJSQR); //授权人性别
  277. joSetlinfo.Add("naty", Global.pat.naty_GJSQR); //授权人民族
  278. joSetlinfo.Add("brdy", Global.pat.brdy_GJSQR); //授权人生日
  279. joSetlinfo.Add("age", Global.pat.age_GJSQR); //授权人年龄
  280. joSetlinfo.Add("insutype", Global.pat.insuType_GJSQR); //授权人险种类型
  281. //joSetlinfo.Add("insutype", JsonHelper.getDestValue(joCenterRtn, "output.insuType")); //险种
  282. joSetlinfo.Add("psn_type", Global.pat.psn_type_GJSQR); //授权人人员类别
  283. joSetlinfo.Add("cvlserv_flag", Global.pat.cvlserv_flag_GJSQR); //授权人是否公务员
  284. joSetlinfo.Add("setl_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  285. joSetlinfo.Add("mdtrt_cert_type", Global.pat.mdtrtcertType_GJSQR);
  286. joSetlinfo.Add("med_type", "110102");
  287. joSetlinfo.Add("medfee_sumamt", JsonHelper.getDestValue(joCenterRtn, "output.medfeeSumamt")); //医保总费用
  288. joSetlinfo.Add("fulamt_ownpay_amt", 0);
  289. joSetlinfo.Add("overlmt_selfpay", 0);
  290. joSetlinfo.Add("preselfpay_amt", 0);
  291. joSetlinfo.Add("inscp_scp_amt", 0);
  292. joSetlinfo.Add("act_pay_dedc", 0); //起付线
  293. joSetlinfo.Add("hifp_pay", 0);
  294. joSetlinfo.Add("pool_prop_selfpay", 0);
  295. joSetlinfo.Add("cvlserv_pay", 0);
  296. joSetlinfo.Add("hifes_pay", 0);
  297. joSetlinfo.Add("hifmi_pay", 0);
  298. joSetlinfo.Add("hifob_pay", 0);
  299. joSetlinfo.Add("hifdm_pay", 0);
  300. joSetlinfo.Add("maf_pay", 0);
  301. joSetlinfo.Add("oth_pay", 0);
  302. joSetlinfo.Add("fund_pay_sumamt", JsonHelper.getDestValue(joCenterRtn, "output.fundPaySumamt")); //基金支付金额
  303. joSetlinfo.Add("psn_part_amt", 0);
  304. joSetlinfo.Add("acct_pay", JsonHelper.getDestValue(joCenterRtn, "output.acctPay")); //个人账户支出金额
  305. joSetlinfo.Add("psn_cash_pay", 0);
  306. joSetlinfo.Add("hosp_part_amt", 0);
  307. joSetlinfo.Add("balc", JsonHelper.getDestValue(joCenterRtn, "output.balance")); //授权人支出后账户余额
  308. joSetlinfo.Add("acct_mulaid_pay", 0);
  309. joSetlinfo.Add("medins_setl_id", Global.curEvt.msgid);
  310. joSetlinfo.Add("clr_optins", JsonHelper.getDestValue(joCenterRtn, "output.clrOptions")); //清算经办机构
  311. joSetlinfo.Add("clr_way", "1"); //清算方式
  312. joSetlinfo.Add("clr_type", JsonHelper.getDestValue(joCenterRtn, "output.clrType")); //清算类别
  313. joSetlinfo.Add("exp_content", JsonHelper.getDestValue(joCenterRtn, "output")); //
  314. joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
  315. joSetlinfo.Add("admID", dtSettlInfo.Rows[0]["AdmID"].ToString());
  316. joSetlinfo.Add("ValidFlag", 1);
  317. joSetlinfo.Add("BillType", 1);
  318. joSetlinfo.Add("updateUserID", Global.user.ID);
  319. joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  320. joSetlinfo.Add("billID", dtSettlInfo.Rows[0]["BillID"].ToString());
  321. joSetlinfo.Add("recordID", dtSettlInfo.Rows[0]["RecordID"].ToString());
  322. joSetlinfo.Add("msgid", Global.curEvt.msgid);
  323. joSetlinfo.Add("interfaceDr", Global.inf.mutualAidInterfaceDr);
  324. joSetlinfo.Add("admType", dtSettlInfo.Rows[0]["admType"].ToString());
  325. joSetlinfo.Add("insuplc_admdvs", Global.pat.insuplc_admdvs_GJSQR ); //JsonHelper.getDestValue(joPatInfo, "selectedInsuInfo.insuplc_admdvs")
  326. joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSettlInfo.Rows[0]["SettlementID"].ToString());
  327. numbersOfMutualAid++;
  328. joSetlinfo.Add("MutualAidFlag", numbersOfMutualAid);
  329. dynamic joTmp = new JObject();
  330. joTmp.code = "09010051";
  331. JArray jaTmp = new JArray();
  332. jaTmp.Add(joSetlinfo);
  333. joTmp.Add("params", jaTmp);
  334. JObject joRtn = center.invokeInsuService(joTmp.ToString(), "插入结算信息");
  335. if (JsonHelper.parseIrisRtnValue(joRtn, out errMsg) != 0)
  336. {
  337. return -1;
  338. }
  339. /*
  340. JObject joSetlDetail = new JObject();
  341. joSetlDetail.Add("HospitalDr", Global.inf.hospitalDr);
  342. joSetlDetail.Add("InterfaceDr", Global.inf.interfaceDr);
  343. joSetlDetail.Add("MdtrtID", JsonHelper.getDestValue(joCenterRtn, "output.mdtrtId"));
  344. joSetlDetail.Add("SettlementID", JsonHelper.getDestValue(joSetlinfo, "setl_id"));
  345. joSetlDetail.Add("AdmID", dtSettlInfo.Rows[0]["AdmID"].ToString());
  346. joSetlDetail.Add("updateUserID", Global.user.ID);
  347. JArray jaSetlDetail = JArray.Parse(JsonHelper.getDestValue(joCenterRtn, "output.setldetail"));
  348. joSetlDetail.Add("setldetail", jaSetlDetail);
  349. joTmp = new JObject();
  350. joTmp.code = "09010056";
  351. jaTmp = new JArray();
  352. jaTmp.Add(joSetlDetail);
  353. joTmp.Add("params", jaTmp);
  354. JObject joInsertSetlDetail = center.invokeInsuService(joTmp.ToString(), "插入结算明细信息");
  355. if (JsonHelper.parseIrisRtnValue(joInsertSetlDetail, out errMsg) != 0)
  356. {
  357. MessageBox.Show("插入结算明细信息:" + errMsg);
  358. }*/
  359. return 0;
  360. }
  361. catch (Exception e)
  362. {
  363. errMsg = e.Message;
  364. return -1;
  365. }
  366. }
  367. /// <summary>
  368. /// 撤销云平台结算信息
  369. /// </summary>
  370. /// <param name="errMsg"></param>
  371. /// <returns></returns>
  372. private int cancleMutualAidOfCloudPlatform(string centerReturn,out string errMsg)
  373. {
  374. errMsg = "";
  375. try
  376. {
  377. int i = dgvSettlInfo.SelectedIndex;
  378. dynamic joTmp = new JObject();
  379. joTmp.admID = dtSettlInfo.Rows[i]["AdmID"].ToString();
  380. joTmp.PersonalNO = dtSettlInfo.Rows[i]["PersonnelNO"].ToString();
  381. joTmp.mdtrt_id = dtSettlInfo.Rows[i]["MdtrtID"].ToString();
  382. joTmp.setl_id = dtSettlInfo.Rows[i]["SettlementID"].ToString();
  383. JObject joCenterRtn = JObject.Parse(centerReturn);
  384. joTmp.newSetlId = JsonHelper.getDestValue(joCenterRtn, "output.setlId");
  385. JObject joIrisRtn = iris.cancleSettlement(joTmp);
  386. if (JsonHelper.parseIrisRtnValue(joIrisRtn, out errMsg) != 0)
  387. {
  388. return -1;
  389. }
  390. else
  391. {
  392. return 0;
  393. }
  394. }
  395. catch (Exception e)
  396. {
  397. errMsg = e.Message;
  398. return -1;
  399. }
  400. }
  401. /// <summary>
  402. /// 获取最终的结算信息,返回给HIS。无论共济多少次,返回给HIS的只有这一条。
  403. /// </summary>
  404. /// <param name="output"></param>
  405. /// <returns></returns>
  406. private int getFinalSettlementInfo(out string output)
  407. {
  408. output = "";
  409. try
  410. {
  411. JObject joCenterRtn = new JObject();
  412. JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(joCenterRtn, "output.result"));
  413. joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
  414. joSetlinfo.Add("admID", dtSettlInfo.Rows[0]["Adm_Dr"].ToString());
  415. joSetlinfo.Add("ValidFlag", 1);
  416. joSetlinfo.Add("BillType", 1);
  417. joSetlinfo.Add("updateUserID", Global.user.ID);
  418. joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  419. joSetlinfo.Add("billID", dtSettlInfo.Rows[0]["BillID"].ToString());
  420. joSetlinfo.Add("recordID", dtSettlInfo.Rows[0]["RecordID"].ToString());
  421. joSetlinfo.Add("msgid", Global.curEvt.msgid);
  422. joSetlinfo.Add("interfaceDr", Global.inf.interfaceDr);
  423. joSetlinfo.Add("admType", dtSettlInfo.Rows[0]["admType"].ToString());
  424. joSetlinfo.Add("insuplc_admdvs", Global.pat.insuplc_admdvs);
  425. joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSettlInfo.Rows[0]["SettlementID"].ToString());
  426. joSetlinfo.Add("MutualAidFlag", numbersOfMutualAid);
  427. output = joSetlinfo.ToString();
  428. return 0;
  429. }
  430. catch (Exception e)
  431. {
  432. output = e.Message;
  433. return -1;
  434. }
  435. }
  436. #endregion
  437. private void btMutualAid_Click(object sender, EventArgs e)
  438. {
  439. string errMsg, patInfo, outParam;
  440. try
  441. {
  442. if (dtSumumt.Rows.Count == 0)
  443. {
  444. MessageBox.Show("请先查询结算信息!");
  445. return;
  446. }
  447. #region【此处的读卡在弹框前会触发读取授权人的参保信息】
  448. if (Global.pat.patInfo_mutualAidPay == "")
  449. {
  450. Global.Set.psnCashPay = dgvSettlInfo.Rows[dgvSettlInfo.CurrentRow.Index].Cells["PersonCashPay"].Value.ToString();
  451. #region【选择接口目录】
  452. MutualAidChooser frm = new MutualAidChooser();
  453. if (frm.ShowDialog() == DialogResult.OK)
  454. {
  455. mutualAidPay = frm.mutualAidPay;
  456. int i = frm.cbxInterface.SelectedIndex;
  457. DataTable dtInteface = (DataTable)frm.cbxInterface.DataSource;
  458. Global.inf.mutualAidCenterURL = dtInteface.Rows[i]["CenterURL"].ToString();
  459. Global.inf.mutualAidHospitalAreaCode = dtInteface.Rows[i]["AreaCode"].ToString();
  460. Global.inf.mutualAidInterfaceDr = int.Parse(dtInteface.Rows[i]["ID"].ToString());
  461. }
  462. else
  463. {
  464. //MessageBox.Show("收费员取消账户代支结算!");
  465. return;
  466. }
  467. #endregion
  468. //选中的账户授权人的接口类型与使用人不一致的情况下,调用签到信息
  469. if (Global.inf.mutualAidInterfaceDr != Global.inf.interfaceDr)
  470. {
  471. if (mIS.isSigned_MutualAid(ref Global.curEvt.signno) != true)
  472. {
  473. //先签到
  474. CenterBusiness cBus = new CenterBusiness();
  475. JObject jo9001Rtn = new JObject();
  476. cBus.signIn_MutualAid(out jo9001Rtn);
  477. }
  478. }
  479. #region【读卡-医保账户代支授权人】
  480. //打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
  481. if (hBus.MutualAidReadCard(out outParam) != 0)
  482. {
  483. MessageBox.Show(JsonHelper.setExceptionJson(-100, "医保账户代支读卡失败!", outParam).ToString());
  484. return;
  485. }
  486. else
  487. {
  488. //展示患者信息界面
  489. Global.pat.patInfo_mutualAidPay = outParam;
  490. if (hBus.MutualAidShowPatInfo(outParam, out Global.pat.patInfo_mutualAidPay) != 0)
  491. {
  492. MessageBox.Show("医保账户代支读卡成功,展示患者信息界面失败:" + Global.pat.patInfo_mutualAidPay);
  493. return;
  494. }
  495. }
  496. #endregion
  497. }
  498. #endregion
  499. //医保代支结算-2596
  500. string centerReturn;
  501. if (mutualAid(Global.pat.patInfo_mutualAidPay, out centerReturn) != 0)
  502. {
  503. MessageBox.Show(centerReturn);
  504. return;
  505. }
  506. //保存到医保平台
  507. if (saveMutualAidSettlementToCloudPlatform(Global.pat.patInfo_mutualAidPay, centerReturn,out errMsg) != 0)
  508. {
  509. MessageBox.Show(errMsg);
  510. return;
  511. }
  512. //更新医保结算表主结算记录 账户共济标志和主结算ID
  513. if (mIS.updateSettlement(dtSettlInfo.Rows[0]["SettlementID"].ToString(), 1, out errMsg) != 0)
  514. {
  515. MessageBox.Show(JsonHelper.setExceptionJson(-1, "更新云医保平台账户共济主结算信息失败", errMsg).ToString());
  516. //return;
  517. }
  518. //刷新结算信息显示
  519. if (getSettlInfo(out errMsg) != 0)
  520. {
  521. MessageBox.Show(errMsg);
  522. return;
  523. }
  524. //刷新汇总信息显示
  525. if (getSumamtInfo(out errMsg) != 0)
  526. {
  527. MessageBox.Show(errMsg);
  528. return;
  529. }
  530. else
  531. {
  532. Global.pat.AccountMutualAidPay = true;
  533. MessageBox.Show("医保账户代支结算成功!");
  534. }
  535. }
  536. catch (Exception ex)
  537. {
  538. MessageBox.Show(ex.Message);
  539. return;
  540. }
  541. }
  542. private void btCancleMutualAid_Click(object sender, EventArgs e)
  543. {
  544. string errMsg = "";
  545. try
  546. {
  547. //撤销中心共济结算
  548. string centerReturn;
  549. if (cancleMutualAid(out centerReturn) != 0)
  550. {
  551. MessageBox.Show(centerReturn);
  552. return;
  553. }
  554. //保存到医保平台
  555. if (cancleMutualAidOfCloudPlatform(centerReturn, out errMsg) != 0)
  556. {
  557. MessageBox.Show(errMsg);
  558. return;
  559. }
  560. //刷新结算信息显示
  561. if (getSettlInfo(out errMsg) != 0)
  562. {
  563. MessageBox.Show(errMsg);
  564. return;
  565. }
  566. //刷新汇总信息显示
  567. if (getSumamtInfo(out errMsg) != 0)
  568. {
  569. MessageBox.Show(errMsg);
  570. return;
  571. }
  572. else
  573. {
  574. MessageBox.Show("撤销医保账户代支结算成功!");
  575. }
  576. }
  577. catch (Exception ex)
  578. {
  579. MessageBox.Show(ex.Message);
  580. return;
  581. }
  582. }
  583. private void btYes_Click(object sender, EventArgs e)
  584. {
  585. try
  586. {
  587. JObject joSetlinfo = new JObject();
  588. joSetlinfo.Add("setl_time", dtSumumt.Rows[0]["SettlementTime"].ToString());
  589. joSetlinfo.Add("cvlserv_pay", dtSumumt.Rows[0]["CivilserviceAllowancePay"].ToString());
  590. joSetlinfo.Add("hifdm_pay", dtSumumt.Rows[0]["HealthInsurancePay"].ToString());
  591. joSetlinfo.Add("cvlserv_flag", dtSumumt.Rows[0]["CivilserviceAllowancePay"].ToString());
  592. joSetlinfo.Add("med_type", dtSumumt.Rows[0]["MedicalType"].ToString());
  593. joSetlinfo.Add("brdy", dtSumumt.Rows[0]["BirthDay"].ToString());
  594. joSetlinfo.Add("naty", dtSumumt.Rows[0]["Nation"].ToString());
  595. joSetlinfo.Add("psn_cash_pay", dtSumumt.Rows[0]["PersonCashPay"].ToString());
  596. joSetlinfo.Add("certno", dtSumumt.Rows[0]["CertificateNO"].ToString());
  597. joSetlinfo.Add("hifmi_pay", dtSumumt.Rows[0]["SeriousIllnessPay"].ToString());
  598. joSetlinfo.Add("psn_no", dtSumumt.Rows[0]["PersonnelNO"].ToString());
  599. joSetlinfo.Add("act_pay_dedc", dtSumumt.Rows[0]["ActualPayDeductible"].ToString());
  600. joSetlinfo.Add("mdtrt_cert_type", dtSumumt.Rows[0]["MdtrtCertType"].ToString());
  601. joSetlinfo.Add("balc", dtSumumt.Rows[0]["Balance"].ToString());
  602. joSetlinfo.Add("medins_setl_id", dtSumumt.Rows[0]["OrganSettlementID"].ToString());
  603. joSetlinfo.Add("psn_cert_type", dtSumumt.Rows[0]["CertificateType"].ToString());
  604. joSetlinfo.Add("acct_mulaid_pay", dtSumumt.Rows[0]["AccountMutualAidAmount"].ToString());
  605. joSetlinfo.Add("clr_way", dtSumumt.Rows[0]["ClearingWay"].ToString());
  606. joSetlinfo.Add("hifob_pay", dtSumumt.Rows[0]["LargeExpensesSupplementPay"].ToString());
  607. joSetlinfo.Add("oth_pay", dtSumumt.Rows[0]["OtherPay"].ToString());
  608. joSetlinfo.Add("medfee_sumamt", dtSumumt.Rows[0]["Sumamt"].ToString());
  609. joSetlinfo.Add("hifes_pay", dtSumumt.Rows[0]["EnterpriseSupplementPay"].ToString());
  610. joSetlinfo.Add("gend", dtSumumt.Rows[0]["Gender"].ToString());
  611. joSetlinfo.Add("mdtrt_id", dtSumumt.Rows[0]["MdtrtID"].ToString());
  612. joSetlinfo.Add("acct_pay", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());
  613. joSetlinfo.Add("fund_pay_sumamt", dtSumumt.Rows[0]["FundPaySumamt"].ToString());
  614. joSetlinfo.Add("fulamt_ownpay_amt", dtSumumt.Rows[0]["OwnPayAmount"].ToString());
  615. joSetlinfo.Add("hosp_part_amt", dtSumumt.Rows[0]["HospitalPartAmount"].ToString());
  616. joSetlinfo.Add("setl_id", dtSumumt.Rows[0]["SettlementID"].ToString());
  617. joSetlinfo.Add("inscp_scp_amt", dtSumumt.Rows[0]["InPolicyRangeAmount"].ToString());
  618. joSetlinfo.Add("insutype", dtSumumt.Rows[0]["InsuranceType"].ToString());
  619. joSetlinfo.Add("maf_pay", dtSumumt.Rows[0]["MedicalAssistPay"].ToString());
  620. joSetlinfo.Add("psn_name", dtSumumt.Rows[0]["PatientName"].ToString());
  621. joSetlinfo.Add("psn_part_amt", dtSumumt.Rows[0]["PersonPaySumamt"].ToString());
  622. joSetlinfo.Add("clr_optins", dtSumumt.Rows[0]["ClearingOrgan"].ToString());
  623. joSetlinfo.Add("pool_prop_selfpay", dtSumumt.Rows[0]["HealthInsuranceRatio"].ToString());
  624. joSetlinfo.Add("psn_type", dtSumumt.Rows[0]["PersonType"].ToString());
  625. joSetlinfo.Add("hifp_pay", dtSumumt.Rows[0]["HealthInsurancePay"].ToString());
  626. joSetlinfo.Add("overlmt_selfpay", dtSumumt.Rows[0]["OverLimitAmount"].ToString());
  627. joSetlinfo.Add("preselfpay_amt", dtSumumt.Rows[0]["PreSelfPayAmount"].ToString());
  628. joSetlinfo.Add("age", dtSumumt.Rows[0]["Age"].ToString());
  629. joSetlinfo.Add("clr_type", dtSumumt.Rows[0]["ClearingType"].ToString());
  630. //
  631. joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
  632. joSetlinfo.Add("admID", dtSumumt.Rows[0]["AdmID"].ToString());
  633. joSetlinfo.Add("ValidFlag", dtSumumt.Rows[0]["ValidFlag"].ToString());
  634. joSetlinfo.Add("BillType", dtSumumt.Rows[0]["BillType"].ToString());
  635. joSetlinfo.Add("updateUserID", Global.user.ID);
  636. joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  637. joSetlinfo.Add("billID", dtSumumt.Rows[0]["BillID"].ToString());
  638. joSetlinfo.Add("recordID", dtSumumt.Rows[0]["RecordID"].ToString());
  639. joSetlinfo.Add("msgid", dtSumumt.Rows[0]["msgid"].ToString());
  640. joSetlinfo.Add("interfaceDr", dtSumumt.Rows[0]["InterfaceDr"].ToString());
  641. joSetlinfo.Add("admType", dtSumumt.Rows[0]["admType"].ToString());
  642. joSetlinfo.Add("insuplc_admdvs", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());
  643. joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSumumt.Rows[0]["SettlementID"].ToString());
  644. finalSettlementInfo = joSetlinfo.ToString();
  645. Global.pat.patInfo_mutualAidPay = "";
  646. this.DialogResult = DialogResult.OK;
  647. Global.writeLog("finalSettlementInfo", finalSettlementInfo,"");
  648. Close();
  649. }
  650. catch (Exception ex)
  651. {
  652. MessageBox.Show(ex.Message);
  653. }
  654. }
  655. private void btNO_Click(object sender, EventArgs e)
  656. {
  657. this.DialogResult = DialogResult.Cancel;
  658. this.Close();
  659. }
  660. private void btQuerySettlInfo_Click(object sender, EventArgs e)
  661. {
  662. settlementID = tbMainSettlID.Text;
  663. string errMsg;
  664. if (getSettlInfo(out errMsg) != 0) { MessageBox.Show(errMsg); }
  665. if (getSumamtInfo(out errMsg) != 0) { MessageBox.Show(errMsg); }
  666. }
  667. private void btnExit_Click(object sender, EventArgs e)
  668. {
  669. Close();
  670. }
  671. private void btnInputDemo_Click(object sender, EventArgs e)
  672. {
  673. rtbInparam.Text = @"{""acctMulaidBind"":{""mdtrtId"":"""",""setlId"":"""",""fixmedinsCode"":""H45010302052""}}";
  674. JObject joTmp = JObject.Parse(rtbInparam.Text);
  675. rtbInparam.Text = joTmp.ToString();
  676. }
  677. private void btnRectification_Click(object sender, EventArgs e)
  678. {
  679. string errorMsg = "";
  680. #region【选择接口目录】
  681. MutualAidChooser frm = new MutualAidChooser();
  682. if (frm.ShowDialog() == DialogResult.OK)
  683. {
  684. mutualAidPay = frm.mutualAidPay;
  685. int i = frm.cbxInterface.SelectedIndex;
  686. DataTable dtInteface = (DataTable)frm.cbxInterface.DataSource;
  687. Global.inf.mutualAidCenterURL = dtInteface.Rows[i]["CenterURL"].ToString();
  688. Global.inf.mutualAidHospitalAreaCode = dtInteface.Rows[i]["AreaCode"].ToString();
  689. Global.inf.mutualAidInterfaceDr = int.Parse(dtInteface.Rows[i]["ID"].ToString());
  690. }
  691. else
  692. {
  693. MessageBox.Show("收费员取消账户代支结算!");
  694. return;
  695. }
  696. #endregion
  697. JObject joRtn = new JObject();
  698. Global.pat.insuplc_admdvs_GJSQR = tbCBD_Hand.Text;
  699. if ((tbCBD_Hand.Text == "") || (tbCBD_Hand.Text == "") || (tbCBD_Hand.Text == ""))
  700. {
  701. MessageBox.Show("入参不能为空!");
  702. return;
  703. }
  704. joRtn = center.invokeCenterServiceOfMutualAid("2599", JsonHelper.setCenterInpar_MutualMid("2599", JObject.Parse(rtbInparam.Text)));
  705. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  706. {
  707. MessageBox.Show("医保账户代支结算冲正失败:" + errorMsg);
  708. }
  709. else
  710. {
  711. rtbOutparam.Text = joRtn.ToString();
  712. }
  713. }
  714. private void btnQuery_Click(object sender, EventArgs e)
  715. {
  716. if (tb_CertNO_SYR.Text == "")
  717. {
  718. MessageBox.Show("使用人身份证号不能为空!");
  719. return;
  720. }
  721. #region【1101获取身份信息】
  722. if (tb_UserNO.Text == "")
  723. {
  724. string errorMsg, patInfo;
  725. JObject joData1101 = new JObject();
  726. joData1101.Add("mdtrt_cert_type", "02"); //就诊凭证类型
  727. joData1101.Add("mdtrt_cert_no", tb_CertNO_SYR.Text); //就诊凭证编码
  728. joData1101.Add("card_sn", ""); //卡识别码
  729. joData1101.Add("begntime", "");
  730. joData1101.Add("psn_cert_type", "01"); //证件类别
  731. joData1101.Add("certno", tb_CertNO_SYR.Text); //证件号码
  732. joData1101.Add("psn_name", ""); //姓名
  733. JObject joInput1101 = new JObject();
  734. joInput1101.Add("data", joData1101);
  735. string inPutParam = JsonHelper.setCenterInpar("1101", joInput1101);
  736. JObject joRtn1101 = center.invokeCenterService("1101", inPutParam);
  737. if (JsonHelper.parseCenterRtnValue(joRtn1101, out errorMsg) != 0)
  738. {
  739. MessageBox.Show("1101获取参保人信息失败:" + errorMsg);
  740. return;
  741. }
  742. else
  743. {
  744. string outParam = joRtn1101.ToString();
  745. Global.pat.psn_no = JsonHelper.getDestValue(JObject.Parse(outParam), "output.baseinfo.psn_no"); //人员编号
  746. tb_UserNO.Text = Global.pat.psn_no;
  747. //展示患者信息界面
  748. if (hBus.showPatInfo(outParam, out patInfo) != 0)
  749. {
  750. MessageBox.Show("展示患者参保信息界面失败:" + patInfo);
  751. return;
  752. }
  753. }
  754. }
  755. #endregion
  756. if (tb_UserNO.Text == "")
  757. {
  758. MessageBox.Show("使用人医保编号不能为空!");
  759. return;
  760. }
  761. string error;
  762. dynamic joData = new JObject();
  763. joData.auther_no = ""; //授权人医保编码
  764. joData.user_no = tb_UserNO.Text; //使用人医保编码
  765. joData.begndate = dt_ST.Value.ToString("yyyy-MM-dd");
  766. joData.enddate = dt_ET.Value.ToString("yyyy-MM-dd");
  767. joData.auther_certno = ""; //授权人证件号码
  768. joData.user_certno = tb_CertNO_SYR.Text; //使用人证件号码
  769. JObject joData2589 = new JObject();
  770. joData2589.Add("data", joData);
  771. //上传给中心
  772. string inPutParam2589 = JsonHelper.setCenterInpar("2589", joData2589.ToString());
  773. rtb_InParam.Text = inPutParam2589;
  774. InvokeHelper invoker = new InvokeHelper();
  775. JObject joRtn = invoker.invokeCenterService("2589", inPutParam2589);
  776. if (JsonHelper.parseCenterReturnJson(joRtn, out error) != 0)
  777. {
  778. MessageBox.Show("【2589】个账共济查询失败:" + error);
  779. return;
  780. }
  781. else
  782. {
  783. DataTable dt = (DataTable)joRtn["output"].ToObject(typeof(DataTable)); //["result"]
  784. dgv_MutualAidQuery.DataSource = dt;
  785. if (dt.Rows.Count == 0)
  786. {
  787. MessageBox.Show("【2589】个账共济查询失败:医保返回当前使用人无账户代支绑定信息!");
  788. return;
  789. }
  790. }
  791. }
  792. private void btnReadCard_Click(object sender, EventArgs e)
  793. {
  794. #region【读卡-医保账户代支授权人】
  795. string patInfo,outParam;
  796. //打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
  797. if (hBus.MutualAidReadCard(out outParam) != 0)
  798. {
  799. MessageBox.Show(JsonHelper.setExceptionJson(-100, "医保账户代支读卡失败!", outParam).ToString());
  800. return;
  801. }
  802. else
  803. {
  804. //展示患者信息界面
  805. if (hBus.MutualAidShowPatInfo(outParam, out patInfo) != 0)
  806. {
  807. MessageBox.Show("医保账户代支读卡成功,展示患者信息界面失败:" + patInfo);
  808. return;
  809. }
  810. }
  811. #endregion
  812. tb_UserNO.Text = Global.pat.psn_no_GJSQR;
  813. }
  814. private void MutualAid_Load(object sender, EventArgs e)
  815. {
  816. dt_ST.Text = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
  817. dt_ET.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
  818. }
  819. }
  820. }