MutualAid.cs 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  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. using System.Threading;
  18. namespace PTMedicalInsurance.Forms
  19. {
  20. public partial class MutualAid : Form
  21. {
  22. public DataTable dtSumumt;
  23. public DataTable dtSettlInfo;
  24. public string settlementID;
  25. public string finalSettlementInfo;
  26. private string psnCashPay ="0";
  27. int serialNOofMutualAid = 1;
  28. private MIIrisServices iris = new MIIrisServices();
  29. InvokeHelper invoker = new InvokeHelper();
  30. HisMainBusiness hBus = new HisMainBusiness();
  31. XmlHelper xmler = new XmlHelper();
  32. public JObject joMainSettlInfo;
  33. public string mutualAidPay; //共济金额
  34. public MutualAid(JObject jo)
  35. {
  36. InitializeComponent();
  37. GridViewSetter grdSetter = new GridViewSetter();
  38. grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
  39. grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
  40. tbMainSettlID.Text = settlementID = JsonHelper.getDestValue(jo, "setl_id");
  41. psnCashPay = JsonHelper.getDestValue(jo, "psnCashPay");
  42. tbMainSettlID.Text = settlementID;
  43. joMainSettlInfo = JObject.Parse(JsonHelper.getDestValue(jo, "MainSettlInfo"));
  44. string errMsg;
  45. getSettlInfo(out errMsg);
  46. getSumamtInfo(out errMsg);
  47. }
  48. public MutualAid(string settlId)
  49. {
  50. InitializeComponent();
  51. GridViewSetter grdSetter = new GridViewSetter();
  52. grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
  53. grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
  54. settlementID = settlId;
  55. tbMainSettlID.Text = settlementID;
  56. string errMsg;
  57. getSettlInfo(out errMsg);
  58. getSumamtInfo(out errMsg);
  59. }
  60. public MutualAid()
  61. {
  62. InitializeComponent();
  63. GridViewSetter grdSetter = new GridViewSetter();
  64. grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
  65. grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
  66. }
  67. #region 方法封装
  68. //获取结算汇总信息
  69. [STAThread]
  70. public void ReadCard_MutualAid()
  71. {
  72. string errMsg;
  73. if (hBus.readCard(out errMsg) != 0)
  74. {
  75. MessageBox.Show(errMsg);
  76. return;
  77. }
  78. else
  79. {
  80. string patInfo = xmler.ToJSON(errMsg);
  81. JObject joPatInfo = JObject.Parse(patInfo);
  82. Global.pat.patExtend.prm_auther_certno = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_certno");
  83. Global.pat.patExtend.prm_auther_insu_admdvs = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_insu_admdvs");
  84. Global.pat.patExtend.prm_auther_name = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_name");
  85. Global.pat.patExtend.prm_auther_no = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_no");
  86. }
  87. }
  88. private int getSumamtInfo(out string errMsg)
  89. {
  90. errMsg = "";
  91. try
  92. {
  93. string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE ValidFlag=1 and Hospital_Dr=" + Global.inf.hospitalDr + " AND SettlementID='" + settlementID + "'";
  94. JObject joSql = new JObject();
  95. joSql.Add("sqlStr", sqlStr);
  96. JObject joRtn = iris.QuerySettlementInfo(joSql);
  97. dtSumumt = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
  98. decimal accountPay = 0, cashPay = 0, mutualAidPay = 0;
  99. for (int i = 1; i < dtSettlInfo.Rows.Count; i++)
  100. {
  101. int billType = int.Parse(dtSettlInfo.Rows[i]["BillType"].ToString());
  102. accountPay = accountPay + decimal.Parse(dtSettlInfo.Rows[i]["AccountPaySumamt"].ToString()) * billType;
  103. mutualAidPay = mutualAidPay + decimal.Parse(dtSettlInfo.Rows[i]["AccountMutualAidAmount"].ToString()) * billType;
  104. if (billType == 1)
  105. { serialNOofMutualAid++; }
  106. else
  107. {
  108. dgvSettlInfo.Rows[i].DefaultCellStyle.ForeColor = Color.Red;
  109. }
  110. }
  111. dgvSettlInfo.Refresh();
  112. dtSumumt.Rows[0]["AccountPaySumamt"] = decimal.Parse(dtSumumt.Rows[0]["AccountPaySumamt"].ToString()) + accountPay;
  113. dtSumumt.Rows[0]["PersonCashPay"] = decimal.Parse(dtSumumt.Rows[0]["PersonCashPay"].ToString()) - accountPay;
  114. dtSumumt.Rows[0]["AccountMutualAidAmount"] = accountPay;
  115. dgvSumamt.DataSource = dtSumumt;
  116. dgvSettlInfo.SelectedIndex = dgvSettlInfo.Rows.Count - 1;
  117. return 0;
  118. }
  119. catch (Exception e)
  120. {
  121. errMsg = e.Message;
  122. return 1;
  123. }
  124. }
  125. //获取多次结算信息
  126. private int getSettlInfo(out string errMsg)
  127. {
  128. errMsg = "";
  129. try
  130. {
  131. string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE ValidFlag=1 and Hospital_Dr=" + Global.inf.hospitalDr + " AND MainSettlementIDOfMutualAid='" + settlementID + "'";
  132. JObject joSql = new JObject();
  133. joSql.Add("sqlStr", sqlStr);
  134. JObject joRtn = iris.QuerySettlementInfo(joSql);
  135. dtSettlInfo = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
  136. dgvSettlInfo.DataSource = dtSettlInfo;
  137. return 0;
  138. }
  139. catch (Exception e)
  140. {
  141. errMsg = e.Message;
  142. return 1;
  143. }
  144. }
  145. //中心共济结算
  146. private int mutualAid(out string output)
  147. {
  148. output = "";
  149. try
  150. {
  151. //弹出共济结算选择框
  152. {
  153. //组织入参
  154. JObject joData = new JObject();
  155. joData.Add("prm_aac001", Global.pat.patExtend.prm_auther_no);//账户共济授权人个人编码
  156. joData.Add("prm_ykc173", "");//门诊诊断信息
  157. joData.Add("prm_yka065", mutualAidPay);//账户共济下账金额
  158. joData.Add("prm_aka130", "110102");//支付类别
  159. joData.Add("prm_yka110", "");//发票号
  160. joData.Add("prm_aae013", "");//备注
  161. joData.Add("prm_aae011", Global.user.ID);//经办人编码
  162. joData.Add("prm_ykc141", Global.user.name);//经办人姓名
  163. joData.Add("prm_ima_mdtrt_id", dtSumumt.Rows[0]["MdtrtID"].ToString());//原主交易就诊 ID
  164. joData.Add("prm_ima_setl_id", dtSumumt.Rows[0]["SettlementID"].ToString());//原主交易结算 ID
  165. joData.Add("prm_ima_certno", dtSumumt.Rows[0]["CertificateNO"].ToString());//原主交易证件号码
  166. joData.Add("prm_ima_med_type", dtSumumt.Rows[0]["MedicalType"].ToString());//原主交易医疗类别
  167. joData.Add("prm_ima_medfee_sumamt", dtSumumt.Rows[0]["Sumamt"].ToString());//原主交易医疗费总额
  168. joData.Add("prm_ima_fund_pay_sumamt", dtSumumt.Rows[0]["FundPaySumamt"].ToString());//原主交易基金支付总额
  169. joData.Add("prm_ima_acct_pay", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());//原主交易个人账户支出
  170. joData.Add("prm_ima_psn_cash_pay", dtSumumt.Rows[0]["PersonCashPay"].ToString());//原 主 交 易 个 人 现 金 支 出
  171. joData.Add("prm_ima_psn_no", dtSumumt.Rows[0]["PersonnelNO"].ToString());//原主交易个人编号
  172. joData.Add("prm_ima_psn_name", dtSumumt.Rows[0]["PatientName"].ToString());//原主交易人员姓名
  173. joData.Add("prm_user_insu_admdvs", dtSumumt.Rows[0]["insuplc_admdvs"].ToString());//原主交易人员参保统筹区
  174. joData.Add("prm_yabtch", Global.pat.patExtend.prm_auther_insu_admdvs);
  175. //调用中心结算
  176. if (invoker.invokeYHCom("48g", joData, out output) != 0)
  177. {
  178. return -1;
  179. }
  180. else
  181. {
  182. string errMsg = "";
  183. invoker.confirmYHCom(out errMsg);
  184. return 0;
  185. }
  186. }
  187. }
  188. catch (Exception e)
  189. {
  190. output = e.Message;
  191. return 1;
  192. }
  193. }
  194. //撤销中心共济结算
  195. private int cancleMutualAid(out string errMsg)
  196. {
  197. errMsg = "";
  198. try
  199. {
  200. int i = dgvSettlInfo.SelectedIndex;
  201. if ((dtSettlInfo.Rows[i]["MutualAidFlag"].ToString() == "") || (dtSettlInfo.Rows[i]["MutualAidFlag"].ToString() == "0"))
  202. {
  203. errMsg = "当前结算无共济支付信息!";
  204. return -1;
  205. }
  206. else if (int.Parse(dtSettlInfo.Rows[i]["MutualAidFlag"].ToString()) == 1)
  207. {
  208. errMsg = "当前结算为主结算,请选择正确的共济支付结算!";
  209. return -1;
  210. }
  211. //组织入参
  212. dynamic joTmp = new JObject();
  213. joTmp.prm_akc190 = dtSettlInfo.Rows[i]["MdtrtID"].ToString();
  214. joTmp.prm_aac001 = dtSettlInfo.Rows[i]["PersonnelNO"].ToString();
  215. joTmp.prm_yka103 = dtSettlInfo.Rows[i]["SettlementID"].ToString();
  216. joTmp.prm_yab003 = dtSettlInfo.Rows[i]["insuplc_admdvs"].ToString();
  217. joTmp.prm_aka130 = "110102";//dtSettlInfo.Rows[i]["MedicalType"].ToString();
  218. joTmp.prm_ykb065 = dtSettlInfo.Rows[i]["InsuranceType"].ToString();
  219. joTmp.prm_aae011 = Global.user.ID;
  220. joTmp.prm_ykc141 = Global.user.name;
  221. joTmp.prm_aae036 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  222. joTmp.prm_yabtch = dtSettlInfo.Rows[i]["insuplc_admdvs"].ToString();
  223. //将中心返回的结果返回HIS 调用HIS服务进行保存
  224. if (invoker.invokeYHCom("42", joTmp, out errMsg) != 0)
  225. {
  226. return -1;
  227. }
  228. else
  229. {
  230. string err = "";
  231. invoker.confirmYHCom(out err);
  232. dgvSettlInfo.SelectedIndex = dgvSettlInfo.Rows.Count - 1;
  233. return 0;
  234. }
  235. }
  236. catch (Exception e)
  237. {
  238. errMsg = e.Message;
  239. return -1;
  240. }
  241. }
  242. //保存到云医保平台
  243. private int saveMutualAidSettlementToCloudPlatform(string centerReturn, out string errMsg)
  244. {
  245. errMsg = "";
  246. try
  247. {
  248. //返回给云医保平台
  249. JObject joSettlement = JObject.Parse(centerReturn);
  250. JObject joRtnSetlinfo = JObject.Parse(JsonHelper.getDestValue(joSettlement, "output"));
  251. JObject joSetlinfo = new JObject();
  252. joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
  253. joSetlinfo.Add("admID", dtSumumt.Rows[0]["AdmID"].ToString());
  254. joSetlinfo.Add("mdtrt_id", JsonHelper.getDestValue(joRtnSetlinfo, "prm_akc190"));
  255. joSetlinfo.Add("setl_id", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka103"));//
  256. joSetlinfo.Add("psn_no", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac001"));
  257. joSetlinfo.Add("psn_name", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac003"));
  258. //joSetlinfo.Add("mdtrt_cert_type", JsonHelper.getDestValue(joRtnSetlinfo, "mdtrt_cert_type"));
  259. joSetlinfo.Add("certno", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac002"));
  260. joSetlinfo.Add("gend", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac004"));
  261. joSetlinfo.Add("naty", "");
  262. joSetlinfo.Add("brdy", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aac006"));
  263. joSetlinfo.Add("age", JsonHelper.getDestValue(joRtnSetlinfo, "prm_akc023"));
  264. //joSetlinfo.Add("insutype", "310"); //中心说默认310
  265. joSetlinfo.Add("insutype", "1"); //张振说默认为1
  266. joSetlinfo.Add("psn_type", JsonHelper.getDestValue(joRtnSetlinfo, "prm_akc021"));
  267. joSetlinfo.Add("cvlserv_flag", "");
  268. joSetlinfo.Add("setl_time", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aae036"));
  269. joSetlinfo.Add("mdtrt_cert_type", JsonHelper.getDestValue(joRtnSetlinfo, "mdtrt_cert_type"));
  270. joSetlinfo.Add("med_type", JsonHelper.getDestValue(joRtnSetlinfo, "prm_aka130"));//支付类别
  271. joSetlinfo.Add("medfee_sumamt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka055"));//总费用
  272. joSetlinfo.Add("fulamt_ownpay_amt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka056"));//全自费金额
  273. joSetlinfo.Add("overlmt_selfpay", "");//超限价自费费用
  274. joSetlinfo.Add("preselfpay_amt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka057"));//先行自付金额
  275. joSetlinfo.Add("inscp_scp_amt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka111"));//符合政策范围金额
  276. joSetlinfo.Add("act_pay_dedc", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka058"));//实际支付起付线
  277. joSetlinfo.Add("hifp_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka248"));//基本医疗保险统筹基金支出
  278. joSetlinfo.Add("pool_prop_selfpay", "0");//基本医疗保险统筹基金支付比例
  279. joSetlinfo.Add("cvlserv_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yke030"));//公务员医疗补助资金支出
  280. joSetlinfo.Add("hifes_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka062"));//企业支付
  281. joSetlinfo.Add("hifmi_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka082"));// 居民大病保险资金支出
  282. joSetlinfo.Add("hifob_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka083"));//职工大额医疗费用补助基金支出
  283. joSetlinfo.Add("maf_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_ake181"));//医疗救助基金支出
  284. joSetlinfo.Add("hosp_part_amt", JsonHelper.getDestValue(joRtnSetlinfo, "hosp_part_amt"));//医院负担金额
  285. joSetlinfo.Add("oth_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_ake173"));//其他支出
  286. joSetlinfo.Add("fund_pay_sumamt", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka248"));//基金支付总额
  287. joSetlinfo.Add("psn_part_amt", 0);//个人负担总金额
  288. joSetlinfo.Add("acct_pay", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka065"));//个人账户支出
  289. joSetlinfo.Add("psn_cash_pay", JsonHelper.getDestValue(joRtnSetlinfo, "psn_cash_pay"));//个人现金支出
  290. joSetlinfo.Add("balc", JsonHelper.getDestValue(joRtnSetlinfo, "prm_akc087"));// 余额
  291. joSetlinfo.Add("acct_mulaid_pay", "");//个人账户共济支付金额
  292. joSetlinfo.Add("medins_setl_id", "");//医药机构结算ID
  293. joSetlinfo.Add("clr_optins", JsonHelper.getDestValue(joRtnSetlinfo, "prm_ykb037"));//清算经办机构
  294. joSetlinfo.Add("clr_way", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka054"));//清算方式
  295. joSetlinfo.Add("clr_type", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yka316"));//清算类别
  296. joSetlinfo.Add("ValidFlag", 1);
  297. joSetlinfo.Add("BillType", 1);
  298. joSetlinfo.Add("msgid", Global.curEvt.msgid);
  299. joSetlinfo.Add("admType", dtSumumt.Rows[0]["admType"].ToString());
  300. joSetlinfo.Add("billID", dtSumumt.Rows[0]["billID"].ToString());
  301. joSetlinfo.Add("recordID", dtSumumt.Rows[0]["recordID"].ToString());
  302. joSetlinfo.Add("interfaceDr", Global.inf.interfaceDr);
  303. //if (JsonHelper.getDestValue(joRtnSetlinfo, "prm_yab139") != "")
  304. // joSetlinfo.Add("insuplc_admdvs", JsonHelper.getDestValue(joRtnSetlinfo, "prm_yab139"));//参保地存分中心编号
  305. //else
  306. // joSetlinfo.Add("insuplc_admdvs", Global.pat.insuplc_admdvs);
  307. joSetlinfo.Add("insuplc_admdvs", Global.pat.patExtend.prm_auther_insu_admdvs);
  308. joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  309. joSetlinfo.Add("HospitalizationsDays", dtSumumt.Rows[0]["HospitalizationsDays"].ToString());
  310. joSetlinfo.Add("HospitalizationsTimes", dtSumumt.Rows[0]["HospitalizationsTimes"].ToString());
  311. joSetlinfo.Add("HISAdmTime", dtSumumt.Rows[0]["HISAdmTime"].ToString());
  312. joSetlinfo.Add("HISDischargeTime", dtSumumt.Rows[0]["HISDischargeTime"].ToString());
  313. joSetlinfo.Add("updateUserID", Global.user.ID);
  314. joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSumumt.Rows[0]["SettlementID"].ToString());
  315. serialNOofMutualAid++;
  316. joSetlinfo.Add("MutualAidFlag", 2);
  317. JObject joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09010051", joSetlinfo).ToString(), "插入结算信息");
  318. if (JsonHelper.parseIrisRtnValue(joRtn, out errMsg) != 0)
  319. {
  320. return -1;
  321. }
  322. else
  323. {
  324. return 0;
  325. }
  326. }
  327. catch (Exception e)
  328. {
  329. errMsg = e.Message;
  330. return -1;
  331. }
  332. }
  333. //更新主结算数据
  334. private int updateMainSettlementInfo(out string errMsg)
  335. {
  336. try
  337. {
  338. JObject joTmp = new JObject();
  339. joTmp.Add("updateUserID", Global.user.ID);
  340. joTmp.Add("HospitalDr", Global.inf.hospitalDr);
  341. joTmp.Add("AdmDr", dtSumumt.Rows[0]["AdmID"].ToString());
  342. joTmp.Add("SettlementID", dtSumumt.Rows[0]["SettlementID"].ToString());
  343. joTmp.Add("MdtrtID", dtSumumt.Rows[0]["MdtrtID"].ToString());
  344. joTmp.Add("MainSettlementIDOfMutualAid", dtSumumt.Rows[0]["SettlementID"].ToString());
  345. joTmp.Add("MutualAidFlag", 1);
  346. joTmp.Add("ValidFlag",1);
  347. joTmp.Add("BillType", 1);
  348. JObject joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09010080", joTmp).ToString(), "更新结算表的共济主结算ID和标志");
  349. return JsonHelper.parseIrisRtnValue(joRtn, out errMsg);
  350. }
  351. catch (Exception ex)
  352. {
  353. errMsg = "updateMainSettlementInfo:" + ex.Message;
  354. return -1;
  355. }
  356. }
  357. /// <summary>
  358. /// 撤销云平台结算信息
  359. /// </summary>
  360. /// <param name="errMsg"></param>
  361. /// <returns></returns>
  362. private int cancleMutualAidOfCloudPlatform(string centerReturn,out string errMsg)
  363. {
  364. errMsg = "";
  365. try
  366. {
  367. int i = dgvSettlInfo.SelectedIndex;
  368. if (dtSettlInfo.Rows[i]["SettlementID"].ToString() == dtSettlInfo.Rows[i]["MainSettlementIDOfMutualAid"].ToString())
  369. {
  370. errMsg = "检测到选择的是主数据,请重新选择或者联系管理员!";
  371. return -1;
  372. }
  373. dynamic joTmp = new JObject();
  374. Global.pat.adm_Dr =int.Parse(dtSettlInfo.Rows[i]["AdmID"].ToString());
  375. Global.pat.psn_no = dtSettlInfo.Rows[i]["PersonnelNO"].ToString();
  376. Global.pat.mdtrtID = dtSettlInfo.Rows[i]["MdtrtID"].ToString();
  377. Global.pat.settlID = dtSettlInfo.Rows[i]["SettlementID"].ToString();
  378. JObject joCenterRtn = JObject.Parse(centerReturn);
  379. string newSetlId = JsonHelper.getDestValue(joCenterRtn, "output.prm_yka198");
  380. joTmp.newSetlId = newSetlId;
  381. if (iris.cancleSettlement(newSetlId,out errMsg)!= 0)
  382. {
  383. return -1;
  384. }
  385. else
  386. {
  387. return 0;
  388. }
  389. }
  390. catch (Exception e)
  391. {
  392. errMsg = e.Message;
  393. return -1;
  394. }
  395. }
  396. /// <summary>
  397. /// 获取最终的结算信息,返回给HIS。无论共济多少次,返回给HIS的只有这一条。
  398. /// </summary>
  399. /// <param name="output"></param>
  400. /// <returns></returns>
  401. private int getFinalSettlementInfo(out string output)
  402. {
  403. output = "";
  404. try
  405. {
  406. JObject joCenterRtn = new JObject();
  407. JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(joCenterRtn, "output.result"));
  408. joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
  409. joSetlinfo.Add("admID", dtSettlInfo.Rows[0]["Adm_Dr"].ToString());
  410. joSetlinfo.Add("ValidFlag", 1);
  411. joSetlinfo.Add("BillType", 1);
  412. joSetlinfo.Add("updateUserID", Global.user.ID);
  413. joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  414. joSetlinfo.Add("billID", dtSettlInfo.Rows[0]["BillID"].ToString());
  415. joSetlinfo.Add("recordID", dtSettlInfo.Rows[0]["RecordID"].ToString());
  416. joSetlinfo.Add("msgid", Global.curEvt.msgid);
  417. joSetlinfo.Add("interfaceDr", Global.inf.interfaceDr);
  418. joSetlinfo.Add("admType", dtSettlInfo.Rows[0]["admType"].ToString());
  419. joSetlinfo.Add("insuplc_admdvs", Global.pat.insuplc_admdvs);
  420. joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSettlInfo.Rows[0]["SettlementID"].ToString());
  421. joSetlinfo.Add("MutualAidFlag", serialNOofMutualAid);
  422. output = joSetlinfo.ToString();
  423. return 0;
  424. }
  425. catch (Exception e)
  426. {
  427. output = e.Message;
  428. return -1;
  429. }
  430. }
  431. #endregion
  432. private void btMutualAid_Click(object sender, EventArgs e)
  433. {
  434. string errMsg = "";
  435. try
  436. {
  437. if ((dtSumumt == null) || (dtSumumt.Rows.Count == 0))
  438. {
  439. MessageBox.Show("共济结算需要被共济人存在结算信息,目前未查询到任何相关结算信息,请联系管理员!");
  440. return;
  441. }
  442. //读卡 如果账户共济授权人编码为空,则进行读卡,否则直接共济
  443. string patInfo, funNO = "48g";
  444. if (string.IsNullOrEmpty(Global.pat.patExtend.prm_auther_certno))
  445. {
  446. //如果住院的则要查询当前的患者信息记录表
  447. if (dtSumumt.Rows[0]["AdmType"].ToString() == "2")
  448. {
  449. string sqlStr = "SELECT * FROM SQLUser.BS_MIPatCurrentInsuInfo WHERE Interface_Dr =" + Global.inf.interfaceDr
  450. + " AND AdmID = '" + dtSumumt.Rows[0]["AdmID"].ToString() + "'"
  451. + " AND MdtrtID = '" + dtSumumt.Rows[0]["MdtrtID"].ToString() + "'";
  452. JObject joSqlStr = new JObject();
  453. joSqlStr.Add("sqlStr", sqlStr);
  454. JObject joCurrentInsuInfo = iris.DynamicQueryPatCurrentInsuInfo(joSqlStr);
  455. if (JsonHelper.parseIrisRtnValue(joCurrentInsuInfo, out errMsg) != 0)
  456. {
  457. Thread thread = new Thread(ReadCard_MutualAid);
  458. thread.SetApartmentState(ApartmentState.STA); //重点
  459. thread.IsBackground = true;
  460. thread.Start();
  461. thread.Join();
  462. }
  463. else
  464. {
  465. Global.pat.patExtend.prm_auther_certno = JsonHelper.getDestValue(joCurrentInsuInfo, "result.rows[0].extField1");
  466. Global.pat.patExtend.prm_auther_insu_admdvs = JsonHelper.getDestValue(joCurrentInsuInfo, "result.rows[0].extField2");
  467. Global.pat.patExtend.prm_auther_name = JsonHelper.getDestValue(joCurrentInsuInfo, "result.rows[0].extField3");
  468. Global.pat.patExtend.prm_auther_no = JsonHelper.getDestValue(joCurrentInsuInfo, "result.rows[0].extField4");
  469. }
  470. }
  471. else
  472. {
  473. Thread thread = new Thread(ReadCard_MutualAid);
  474. thread.SetApartmentState(ApartmentState.STA); //重点
  475. thread.IsBackground = true;
  476. thread.Start();
  477. thread.Join();
  478. }
  479. }
  480. MutualAidChooser frm = new MutualAidChooser(psnCashPay);
  481. if (frm.ShowDialog() == DialogResult.OK)
  482. {
  483. mutualAidPay = frm.mutualAidPay;
  484. }
  485. else
  486. {
  487. MessageBox.Show("收款员取消共济结算!");
  488. return;
  489. }
  490. //中心共济结算
  491. string centerReturn = "";
  492. if (mutualAid(out centerReturn) != 0)
  493. {
  494. MessageBox.Show(centerReturn);
  495. return;
  496. }
  497. //string centerReturn = System.IO.File.ReadAllText(Global.curEvt.path + @"\\CS.TXT");
  498. //将共济结算数据保存到医保平台
  499. if (saveMutualAidSettlementToCloudPlatform(xmler.ToJSON(centerReturn),out errMsg) != 0)
  500. {
  501. MessageBox.Show(errMsg);
  502. return;
  503. }
  504. //更新主结算的信息
  505. if (updateMainSettlementInfo(out errMsg) != 0)
  506. {
  507. MessageBox.Show(errMsg);
  508. return;
  509. }
  510. //刷新结算信息显示
  511. if (getSettlInfo(out errMsg) != 0)
  512. {
  513. MessageBox.Show(errMsg);
  514. return;
  515. }
  516. //刷新汇总信息显示
  517. if (getSumamtInfo(out errMsg) != 0)
  518. {
  519. MessageBox.Show(errMsg);
  520. return;
  521. }
  522. else
  523. {
  524. MessageBox.Show("共济结算成功!");
  525. }
  526. }
  527. catch (Exception ex)
  528. {
  529. MessageBox.Show(ex.Message);
  530. return;
  531. }
  532. }
  533. private void btCancleMutualAid_Click(object sender, EventArgs e)
  534. {
  535. string errMsg = "";
  536. try
  537. {
  538. //撤销中心共济结算
  539. string centerReturn;
  540. if (cancleMutualAid(out centerReturn) != 0)
  541. {
  542. MessageBox.Show(centerReturn);
  543. return;
  544. }
  545. //保存到医保平台
  546. if (cancleMutualAidOfCloudPlatform(xmler.ToJSON(centerReturn), out errMsg) != 0)
  547. {
  548. MessageBox.Show(errMsg);
  549. return;
  550. }
  551. //刷新结算信息显示
  552. if (getSettlInfo(out errMsg) != 0)
  553. {
  554. MessageBox.Show(errMsg);
  555. return;
  556. }
  557. //刷新汇总信息显示
  558. if (getSumamtInfo(out errMsg) != 0)
  559. {
  560. MessageBox.Show(errMsg);
  561. return;
  562. }
  563. else
  564. {
  565. MessageBox.Show("撤销共济成功!");
  566. }
  567. }
  568. catch (Exception ex)
  569. {
  570. MessageBox.Show(ex.Message);
  571. return;
  572. }
  573. }
  574. private void btYes_Click(object sender, EventArgs e)
  575. {
  576. try
  577. {
  578. if (dtSumumt == null)
  579. {
  580. MessageBox.Show("请输入结算ID并点击查询按钮!");
  581. return;
  582. }
  583. else
  584. {
  585. if (dtSumumt.Rows.Count <1)
  586. {
  587. MessageBox.Show("未找到主结算数据!");
  588. return;
  589. }
  590. }
  591. JObject joSetlinfo = new JObject();
  592. joSetlinfo.Add("setl_time", dtSumumt.Rows[0]["SettlementTime"].ToString());
  593. joSetlinfo.Add("cvlserv_pay", dtSumumt.Rows[0]["CivilserviceAllowancePay"].ToString());
  594. joSetlinfo.Add("hifdm_pay", dtSumumt.Rows[0]["HealthInsurancePay"].ToString());
  595. joSetlinfo.Add("cvlserv_flag", dtSumumt.Rows[0]["CivilserviceAllowancePay"].ToString());
  596. joSetlinfo.Add("med_type", dtSumumt.Rows[0]["MedicalType"].ToString());
  597. joSetlinfo.Add("brdy", dtSumumt.Rows[0]["BirthDay"].ToString());
  598. joSetlinfo.Add("naty", dtSumumt.Rows[0]["Nation"].ToString());
  599. joSetlinfo.Add("psn_cash_pay", dtSumumt.Rows[0]["PersonCashPay"].ToString());
  600. joSetlinfo.Add("certno", dtSumumt.Rows[0]["CertificateNO"].ToString());
  601. joSetlinfo.Add("hifmi_pay", dtSumumt.Rows[0]["SeriousIllnessPay"].ToString());
  602. joSetlinfo.Add("psn_no", dtSumumt.Rows[0]["PersonnelNO"].ToString());
  603. joSetlinfo.Add("act_pay_dedc", dtSumumt.Rows[0]["ActualPayDeductible"].ToString());
  604. joSetlinfo.Add("mdtrt_cert_type", dtSumumt.Rows[0]["MdtrtCertType"].ToString());
  605. joSetlinfo.Add("balc", dtSumumt.Rows[0]["Balance"].ToString());
  606. joSetlinfo.Add("medins_setl_id", dtSumumt.Rows[0]["OrganSettlementID"].ToString());
  607. joSetlinfo.Add("psn_cert_type", dtSumumt.Rows[0]["CertificateType"].ToString());
  608. joSetlinfo.Add("acct_mulaid_pay", dtSumumt.Rows[0]["AccountMutualAidAmount"].ToString());
  609. joSetlinfo.Add("clr_way", dtSumumt.Rows[0]["ClearingWay"].ToString());
  610. joSetlinfo.Add("hifob_pay", dtSumumt.Rows[0]["LargeExpensesSupplementPay"].ToString());
  611. joSetlinfo.Add("oth_pay", dtSumumt.Rows[0]["OtherPay"].ToString());
  612. joSetlinfo.Add("medfee_sumamt", dtSumumt.Rows[0]["Sumamt"].ToString());
  613. joSetlinfo.Add("hifes_pay", dtSumumt.Rows[0]["EnterpriseSupplementPay"].ToString());
  614. joSetlinfo.Add("gend", dtSumumt.Rows[0]["Gender"].ToString());
  615. joSetlinfo.Add("mdtrt_id", dtSumumt.Rows[0]["MdtrtID"].ToString());
  616. joSetlinfo.Add("acct_pay", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());
  617. joSetlinfo.Add("fund_pay_sumamt", dtSumumt.Rows[0]["FundPaySumamt"].ToString());
  618. joSetlinfo.Add("fulamt_ownpay_amt", dtSumumt.Rows[0]["OwnPayAmount"].ToString());
  619. joSetlinfo.Add("hosp_part_amt", dtSumumt.Rows[0]["HospitalPartAmount"].ToString());
  620. joSetlinfo.Add("setl_id", dtSumumt.Rows[0]["SettlementID"].ToString());
  621. joSetlinfo.Add("inscp_scp_amt", dtSumumt.Rows[0]["InPolicyRangeAmount"].ToString());
  622. joSetlinfo.Add("insutype", dtSumumt.Rows[0]["InsuranceType"].ToString());
  623. joSetlinfo.Add("maf_pay", dtSumumt.Rows[0]["MedicalAssistPay"].ToString());
  624. joSetlinfo.Add("psn_name", dtSumumt.Rows[0]["PatientName"].ToString());
  625. joSetlinfo.Add("psn_part_amt", dtSumumt.Rows[0]["PersonPaySumamt"].ToString());
  626. joSetlinfo.Add("clr_optins", dtSumumt.Rows[0]["ClearingOrgan"].ToString());
  627. joSetlinfo.Add("pool_prop_selfpay", dtSumumt.Rows[0]["HealthInsuranceRatio"].ToString());
  628. joSetlinfo.Add("psn_type", dtSumumt.Rows[0]["PersonType"].ToString());
  629. joSetlinfo.Add("hifp_pay", dtSumumt.Rows[0]["HealthInsurancePay"].ToString());
  630. joSetlinfo.Add("overlmt_selfpay", dtSumumt.Rows[0]["OverLimitAmount"].ToString());
  631. joSetlinfo.Add("preselfpay_amt", dtSumumt.Rows[0]["PreSelfPayAmount"].ToString());
  632. joSetlinfo.Add("age", dtSumumt.Rows[0]["Age"].ToString());
  633. joSetlinfo.Add("clr_type", dtSumumt.Rows[0]["ClearingType"].ToString());
  634. //
  635. joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
  636. joSetlinfo.Add("admID", dtSumumt.Rows[0]["AdmID"].ToString());
  637. joSetlinfo.Add("ValidFlag", dtSumumt.Rows[0]["ValidFlag"].ToString());
  638. joSetlinfo.Add("BillType", dtSumumt.Rows[0]["BillType"].ToString());
  639. joSetlinfo.Add("updateUserID", Global.user.ID);
  640. joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  641. joSetlinfo.Add("billID", dtSumumt.Rows[0]["BillID"].ToString());
  642. joSetlinfo.Add("recordID", dtSumumt.Rows[0]["RecordID"].ToString());
  643. joSetlinfo.Add("msgid", dtSumumt.Rows[0]["msgid"].ToString());
  644. joSetlinfo.Add("interfaceDr", dtSumumt.Rows[0]["InterfaceDr"].ToString());
  645. joSetlinfo.Add("admType", dtSumumt.Rows[0]["admType"].ToString());
  646. joSetlinfo.Add("insuplc_admdvs", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());
  647. joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSumumt.Rows[0]["SettlementID"].ToString());
  648. if (joMainSettlInfo != null)
  649. {
  650. joMainSettlInfo["output"]["prm_yka065"] = dtSumumt.Rows[0]["AccountPaySumamt"].ToString();
  651. joMainSettlInfo["output"]["psn_cash_pay"] = dtSumumt.Rows[0]["PersonCashPay"].ToString();
  652. }
  653. finalSettlementInfo = joSetlinfo.ToString();
  654. this.DialogResult = DialogResult.OK;
  655. Global.writeLog("finalSettlementInfo", finalSettlementInfo,"");
  656. }
  657. catch (Exception ex)
  658. {
  659. MessageBox.Show(ex.Message);
  660. }
  661. }
  662. private void btNO_Click(object sender, EventArgs e)
  663. {
  664. this.DialogResult = DialogResult.Cancel;
  665. }
  666. private void btQuerySettlInfo_Click(object sender, EventArgs e)
  667. {
  668. settlementID = tbMainSettlID.Text;
  669. string errMsg;
  670. if (getSettlInfo(out errMsg) != 0) { MessageBox.Show(errMsg); }
  671. if (getSumamtInfo(out errMsg) != 0) { MessageBox.Show(errMsg); }
  672. }
  673. private void MutualAid_FormClosing(object sender, FormClosingEventArgs e)
  674. {
  675. //DialogResult result = MessageBox.Show("请点击确认完成或者放弃结算按钮!如果点击窗口关闭图标,可能会导致数据错误!确定要继续吗?", "信息", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
  676. //if (result == DialogResult.No)
  677. //{
  678. // e.Cancel = true; //取消关闭操作
  679. //}
  680. //else
  681. //{
  682. // this.Close();
  683. //}
  684. }
  685. }
  686. }