MutualAid.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752
  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 Newtonsoft.Json;
  11. using Newtonsoft.Json.Linq;
  12. using PTMedicalInsurance;
  13. using PTMedicalInsurance.Business;
  14. using PTMedicalInsurance.Common;
  15. using PTMedicalInsurance.Forms;
  16. using PTMedicalInsurance.FormSetter;
  17. using PTMedicalInsurance.Helper;
  18. using PTMedicalInsurance.Variables;
  19. namespace MedicalInsurance.Forms
  20. {
  21. public partial class MutualAid : Form
  22. {
  23. public DataTable dtSumumt;
  24. public DataTable dtSettlInfo;
  25. public string settlementID;
  26. public string finalSettlementInfo;
  27. int numbersOfMutualAid = 1;
  28. private MIIrisServices iris = new MIIrisServices();
  29. InvokeHelper invoker = new InvokeHelper();
  30. public string relation; //亲属关系
  31. public string set_flag; //结算标志 预结正结标志
  32. public string mutualAidPay; //共济金额
  33. public MutualAid(JObject jo)
  34. {
  35. InitializeComponent();
  36. GridViewSetter grdSetter = new GridViewSetter();
  37. grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
  38. grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
  39. settlementID = JsonHelper.getDestValue(jo, "setl_id") ;
  40. string errMsg;
  41. getSettlInfo(out errMsg);
  42. getSumamtInfo(out errMsg);
  43. }
  44. public MutualAid(string settlId)
  45. {
  46. InitializeComponent();
  47. GridViewSetter grdSetter = new GridViewSetter();
  48. grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
  49. grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
  50. settlementID =settlId;
  51. string errMsg;
  52. getSettlInfo(out errMsg);
  53. getSumamtInfo(out errMsg);
  54. }
  55. public MutualAid()
  56. {
  57. InitializeComponent();
  58. GridViewSetter grdSetter = new GridViewSetter();
  59. grdSetter.SetHeaderTextOfDgvMutualAidSettleInfo(dgvSettlInfo);
  60. grdSetter.SetHeaderTextOfDgvMutualAidSumamtInfo(dgvSumamt);
  61. }
  62. #region 方法封装
  63. //获取结算汇总信息
  64. private int getSumamtInfo(out string errMsg)
  65. {
  66. errMsg = "";
  67. try
  68. {
  69. string sqlStr = "SELECT * FROM MedInsu_Tables.Settlement WHERE Hosp_Dr=" + Global.inf.hospitalDr + " AND SettlementID='" + settlementID + "'";
  70. JObject joSqlStr = new JObject();
  71. joSqlStr.Add("sqlStr", sqlStr);
  72. JObject joRtn = iris.QuerySettlementInfo(joSqlStr);
  73. dtSumumt = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
  74. decimal accountPay=0, cashPay=0, mutualAidPay = 0;
  75. for (int i = 1; i < dtSettlInfo.Rows.Count; i++)
  76. {
  77. int billType = int.Parse(dtSettlInfo.Rows[i]["BillType"].ToString());
  78. accountPay = accountPay + decimal.Parse(dtSettlInfo.Rows[i]["AccountPaySumamt"].ToString()) * billType;
  79. mutualAidPay = mutualAidPay + decimal.Parse(dtSettlInfo.Rows[i]["AccountMutualAidAmount"].ToString()) * billType;
  80. if (billType==1)
  81. { numbersOfMutualAid++; }
  82. else
  83. {
  84. dgvSettlInfo.Rows[i].DefaultCellStyle.ForeColor = Color.Red;
  85. }
  86. }
  87. dgvSettlInfo.Refresh();
  88. dtSumumt.Rows[0]["AccountPaySumamt"] = decimal.Parse(dtSumumt.Rows[0]["AccountPaySumamt"].ToString()) + accountPay;
  89. dtSumumt.Rows[0]["PersonCashPay"] = decimal.Parse(dtSumumt.Rows[0]["PersonCashPay"].ToString()) - accountPay;
  90. dtSumumt.Rows[0]["AccountMutualAidAmount"] = accountPay;
  91. dgvSumamt.DataSource = dtSumumt;
  92. dgvSettlInfo.SelectedIndex = dgvSettlInfo.Rows.Count - 1;
  93. return 0;
  94. }
  95. catch (Exception e)
  96. {
  97. errMsg = e.Message;
  98. return 1;
  99. }
  100. }
  101. //获取多次结算信息
  102. private int getSettlInfo(out string errMsg)
  103. {
  104. errMsg = "";
  105. try
  106. {
  107. string sqlStr = "SELECT * FROM MedInsu_Tables.Settlement WHERE Hosp_Dr=" + Global.inf.hospitalDr + " AND MainSettlementIDOfMutualAid='" + settlementID + "'";
  108. JObject joSqlStr = new JObject();
  109. joSqlStr.Add("sqlStr", sqlStr);
  110. JObject joRtn = iris.QuerySettlementInfo(joSqlStr);
  111. dtSettlInfo = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
  112. dgvSettlInfo.DataSource = dtSettlInfo;
  113. return 0;
  114. }
  115. catch (Exception e)
  116. {
  117. errMsg = e.Message;
  118. return 1;
  119. }
  120. }
  121. //中心共济结算
  122. private int mutualAid(string patInfo, out string output)
  123. {
  124. output = "";
  125. string mPsnNO,mCertType, mCertNO, mInsutype;
  126. dynamic joExpContent = new JObject();
  127. try
  128. {
  129. JObject jo1101 = JObject.Parse(patInfo);
  130. JObject joBaseInfo = JObject.FromObject(jo1101["output"]["baseinfo"]);
  131. JObject joSelectedInsuInfo = JObject.FromObject(jo1101["selectedInsuInfo"]);
  132. JObject joComInfo = JObject.FromObject(jo1101["comInfo"]);
  133. mPsnNO = joBaseInfo["psn_no"].ToString();
  134. mCertType = joComInfo["mdtrt_cert_type"].ToString();
  135. mCertNO = joComInfo["mdtrt_cert_no"].ToString();
  136. mInsutype = joSelectedInsuInfo["insutype_old"].ToString();
  137. Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joSelectedInsuInfo, "insuplc_admdvs");
  138. joExpContent.card_token = Global.pat.card.Cardtoken;
  139. //弹出共济结算选择框
  140. {
  141. //组织入参
  142. JObject joData = new JObject();
  143. joData.Add("psn_no", mPsnNO); //人员编号
  144. joData.Add("mdtrt_cert_type", mCertType); //就诊凭证类型
  145. joData.Add("mdtrt_cert_no",mCertNO); //就诊凭证编号
  146. joData.Add("insutype", mInsutype); //险种
  147. joData.Add("acct_mulaid_pay", mutualAidPay); //个人账户共济支付金额
  148. joData.Add("ima_mdtrt_id", dtSettlInfo.Rows[0]["MdtrtID"].ToString()); //原主交易就诊ID
  149. joData.Add("ima_setl_id", dtSettlInfo.Rows[0]["SettlementID"].ToString()); //原主交易结算ID
  150. joData.Add("ima_certno", dtSettlInfo.Rows[0]["CertificateNO"].ToString()); //原主交易证件号码
  151. joData.Add("ima_med_type", dtSettlInfo.Rows[0]["MedicalType"].ToString()); //原主交易医疗类别
  152. joData.Add("ima_medfee_sumamt", dtSettlInfo.Rows[0]["Sumamt"].ToString()); //原主交易医疗费总额
  153. joData.Add("ima_fund_pay_sumamt", dtSettlInfo.Rows[0]["FundPaySumamt"].ToString()); //原主交易基金支付总额
  154. joData.Add("ima_acct_pay", dtSettlInfo.Rows[0]["AccountPaySumamt"].ToString()); //原主交易个人账户支出
  155. joData.Add("ima_psn_cash_pay", dtSettlInfo.Rows[0]["PersonCashPay"].ToString()); //原主交易个人现金支出
  156. joData.Add("ima_psn_no", dtSettlInfo.Rows[0]["PersonnelNO"].ToString()); //原主交易个人编号
  157. joData.Add("ima_psn_name", dtSettlInfo.Rows[0]["PatientName"].ToString()); //原主交易人员姓名
  158. joData.Add("relation", relation); //亲属关系
  159. joData.Add("set_flag", set_flag); //结算标志
  160. joData.Add("expContent", joExpContent); //字段扩展
  161. JObject joInput = new JObject();
  162. joInput.Add("data",joData);
  163. //调用中心结算
  164. JObject joRtn = invoker.invokeCenterService(TradeEnum.MutualAidPay, joInput);
  165. //保存中心返回的结果
  166. if (JsonHelper.parseCenterReturnJson(joRtn, out output) != 0)
  167. {
  168. return -1;
  169. }
  170. else
  171. {
  172. output = joRtn.ToString();
  173. return 0;
  174. }
  175. }
  176. return 0;
  177. }
  178. catch (Exception e)
  179. {
  180. output = e.Message;
  181. return 1;
  182. }
  183. }
  184. //撤销中心共济结算
  185. private int cancleMutualAid(out string errMsg)
  186. {
  187. errMsg = "";
  188. try
  189. {
  190. int i = dgvSettlInfo.SelectedIndex;
  191. if ((dtSettlInfo.Rows[i]["MutualAidFlag"].ToString() == "") || (dtSettlInfo.Rows[i]["MutualAidFlag"].ToString() == "0"))
  192. {
  193. errMsg = "当前结算无共济支付信息!";
  194. return -1;
  195. }
  196. else if (int.Parse(dtSettlInfo.Rows[i]["MutualAidFlag"].ToString()) == 1)
  197. {
  198. errMsg = "当前结算为主结算,请选择正确的共济支付结算!";
  199. return -1;
  200. }
  201. if (dtSettlInfo.Rows[i]["InterfaceDr"].ToString() == "1")
  202. {
  203. Global.curEvt.URL = @"http://10.109.103.59:8080/mss/web/api/fsi/callService";
  204. Global.inf.areaCode = "519900";
  205. }
  206. if (dtSettlInfo.Rows[i]["InterfaceDr"].ToString() == "5")
  207. {
  208. Global.curEvt.URL = @"http://10.109.103.61:8080/mss/web/api/fsi/callService";
  209. Global.inf.areaCode = "510106";
  210. }
  211. Global.pat.insuplc_admdvs = dtSettlInfo.Rows[i]["insuplc_admdvs"].ToString();
  212. //组织入参
  213. dynamic joTmp = new JObject();
  214. joTmp.mdtrt_id = dtSettlInfo.Rows[i]["MdtrtID"].ToString();
  215. joTmp.psn_no = dtSettlInfo.Rows[i]["PersonnelNO"].ToString();
  216. joTmp.setl_id = dtSettlInfo.Rows[i]["SettlementID"].ToString();
  217. joTmp.expContent = "";
  218. JObject joData = new JObject();
  219. joData.Add("data", joTmp);
  220. JObject joRtn = invoker.invokeCenterService(TradeEnum.MutualAidCancel, joData);
  221. //将中心返回的结果返回HIS 调用HIS服务进行保存
  222. if (JsonHelper.parseCenterReturnJson(joRtn, out errMsg) != 0)
  223. {
  224. return -1;
  225. }
  226. else
  227. {
  228. errMsg = joRtn.ToString();
  229. dgvSettlInfo.SelectedIndex = dgvSettlInfo.Rows.Count - 1;
  230. return 0;
  231. }
  232. }
  233. catch (Exception e)
  234. {
  235. errMsg = e.Message;
  236. return -1;
  237. }
  238. }
  239. //保存到云医保平台
  240. private int saveMutualAidSettlementToCloudPlatform(string patInfo,string centerReturn,out string errMsg)
  241. {
  242. errMsg = "";
  243. try
  244. {
  245. //返回给云医保平台
  246. JObject joCenterRtn = JObject.Parse(centerReturn);
  247. JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(joCenterRtn, "output.result"));
  248. JObject joPatInfo= JObject.Parse(patInfo);
  249. //以下节点中心不返回,传给后台保存的值为空,手工置为0
  250. joSetlinfo.Add("cvlserv_pay", 0);
  251. joSetlinfo.Add("hifdm_pay", 0);
  252. joSetlinfo.Add("hifmi_pay", 0);
  253. joSetlinfo.Add("act_pay_dedc", 0);
  254. joSetlinfo.Add("acct_mulaid_pay", 0);
  255. joSetlinfo.Add("oth_pay", 0);
  256. joSetlinfo.Add("hifes_pay", 0);
  257. joSetlinfo.Add("fund_pay_sumamt", 0);
  258. joSetlinfo.Add("fulamt_ownpay_amt", 0);
  259. joSetlinfo.Add("hosp_part_amt", 0);
  260. joSetlinfo.Add("inscp_scp_amt", 0);
  261. joSetlinfo.Add("maf_pay", 0);
  262. joSetlinfo.Add("psn_part_amt", 0);
  263. joSetlinfo.Add("pool_prop_selfpay", 0);
  264. joSetlinfo.Add("hifp_pay", 0);
  265. joSetlinfo.Add("overlmt_selfpay", 0);
  266. joSetlinfo.Add("preselfpay_amt", 0);
  267. //
  268. joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
  269. joSetlinfo.Add("admID", dtSettlInfo.Rows[0]["AdmID"].ToString());
  270. joSetlinfo.Add("ValidFlag", 1);
  271. joSetlinfo.Add("BillType", 1);
  272. joSetlinfo.Add("updateUserID", Global.user.ID);
  273. joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  274. joSetlinfo.Add("billID", dtSettlInfo.Rows[0]["BillID"].ToString());
  275. joSetlinfo.Add("recordID", dtSettlInfo.Rows[0]["RecordID"].ToString());
  276. joSetlinfo.Add("msgid", Global.curEvt.msgid);
  277. joSetlinfo.Add("interfaceDr", Global.inf.interfaceDr);
  278. joSetlinfo.Add("admType", dtSettlInfo.Rows[0]["admType"].ToString());
  279. joSetlinfo.Add("insuplc_admdvs",JsonHelper.getDestValue(joPatInfo, "selectedInsuInfo.insuplc_admdvs"));
  280. joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSettlInfo.Rows[0]["SettlementID"].ToString());
  281. numbersOfMutualAid++;
  282. joSetlinfo.Add("MutualAidFlag", numbersOfMutualAid);
  283. dynamic joTmp = new JObject();
  284. joTmp.code = "09010051";
  285. JArray jaTmp = new JArray();
  286. jaTmp.Add(joSetlinfo);
  287. joTmp.Add("params", jaTmp);
  288. JObject joRtn = invoker.invokeInsuService(joTmp.ToString(), "插入结算信息");
  289. if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
  290. {
  291. return -1;
  292. }
  293. JObject joSetlDetail = new JObject();
  294. joSetlDetail.Add("HospitalDr", Global.inf.hospitalDr);
  295. joSetlDetail.Add("InterfaceDr", Global.inf.interfaceDr);
  296. joSetlDetail.Add("MdtrtID", JsonHelper.getDestValue(joCenterRtn, "output.result.mdtrt_id"));
  297. joSetlDetail.Add("SettlementID", JsonHelper.getDestValue(joSetlinfo, "setl_id"));
  298. joSetlDetail.Add("AdmID", dtSettlInfo.Rows[0]["AdmID"].ToString());
  299. joSetlDetail.Add("updateUserID", Global.user.ID);
  300. JArray jaSetlDetail = JArray.Parse(JsonHelper.getDestValue(joCenterRtn, "output.setldetail"));
  301. joSetlDetail.Add("setldetail", jaSetlDetail);
  302. joTmp = new JObject();
  303. joTmp.code = "09010056";
  304. jaTmp = new JArray();
  305. jaTmp.Add(joSetlDetail);
  306. joTmp.Add("params", jaTmp);
  307. JObject joInsertSetlDetail = invoker.invokeInsuService(joTmp.ToString(), "插入结算明细信息");
  308. if (JsonHelper.parseCenterRtnValue(joInsertSetlDetail, out errMsg) != 0)
  309. {
  310. MessageBox.Show("插入结算明细信息:" + errMsg);
  311. }
  312. return 0;
  313. }
  314. catch (Exception e)
  315. {
  316. errMsg = e.Message;
  317. return -1;
  318. }
  319. }
  320. /// <summary>
  321. /// 撤销云平台结算信息
  322. /// </summary>
  323. /// <param name="errMsg"></param>
  324. /// <returns></returns>
  325. private int cancleMutualAidOfCloudPlatform(string centerReturn,out string errMsg)
  326. {
  327. errMsg = "";
  328. try
  329. {
  330. int i = dgvSettlInfo.SelectedIndex;
  331. dynamic joTmp = new JObject();
  332. Global.pat.adm_Dr = int.Parse(dtSettlInfo.Rows[i]["AdmID"].ToString());
  333. joTmp.PersonalNO = dtSettlInfo.Rows[i]["PersonnelNO"].ToString();
  334. Global.pat.mdtrtID = dtSettlInfo.Rows[i]["MdtrtID"].ToString();
  335. Global.pat.settlID = dtSettlInfo.Rows[i]["SettlementID"].ToString();
  336. JObject joCenterRtn = JObject.Parse(centerReturn);
  337. string newSetlId = JsonHelper.getDestValue(joCenterRtn,"output.result.setl_id");
  338. int ret = iris.cancleSettlement(newSetlId,out errMsg);
  339. if (ret != 0)
  340. {
  341. return -1;
  342. }
  343. else
  344. {
  345. return 0;
  346. }
  347. }
  348. catch (Exception e)
  349. {
  350. errMsg = e.Message;
  351. return -1;
  352. }
  353. }
  354. /// <summary>
  355. /// 获取最终的结算信息,返回给HIS。无论共济多少次,返回给HIS的只有这一条。
  356. /// </summary>
  357. /// <param name="output"></param>
  358. /// <returns></returns>
  359. private int getFinalSettlementInfo(out string output)
  360. {
  361. output = "";
  362. try
  363. {
  364. JObject joCenterRtn = new JObject();
  365. JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(joCenterRtn, "output.result"));
  366. joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
  367. joSetlinfo.Add("admID", dtSettlInfo.Rows[0]["Adm_Dr"].ToString());
  368. joSetlinfo.Add("ValidFlag", 1);
  369. joSetlinfo.Add("BillType", 1);
  370. joSetlinfo.Add("updateUserID", Global.user.ID);
  371. joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  372. joSetlinfo.Add("billID", dtSettlInfo.Rows[0]["BillID"].ToString());
  373. joSetlinfo.Add("recordID", dtSettlInfo.Rows[0]["RecordID"].ToString());
  374. joSetlinfo.Add("msgid", Global.curEvt.msgid);
  375. joSetlinfo.Add("interfaceDr", Global.inf.interfaceDr);
  376. joSetlinfo.Add("admType", dtSettlInfo.Rows[0]["admType"].ToString());
  377. joSetlinfo.Add("insuplc_admdvs", Global.pat.insuplc_admdvs);
  378. joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSettlInfo.Rows[0]["SettlementID"].ToString());
  379. joSetlinfo.Add("MutualAidFlag", numbersOfMutualAid);
  380. output = joSetlinfo.ToString();
  381. return 0;
  382. }
  383. catch (Exception e)
  384. {
  385. output = e.Message;
  386. return -1;
  387. }
  388. }
  389. #endregion
  390. private void btMutualAid_Click(object sender, EventArgs e)
  391. {
  392. string errMsg = "";
  393. try
  394. {
  395. //读卡
  396. string patInfo,funNO="S2101";
  397. //if (dtSettlInfo.Rows[0]["admType"].ToString() == "2")
  398. //{
  399. // funNO = "1101";
  400. //}
  401. MutualAidChooser frm = new MutualAidChooser();
  402. if (frm.ShowDialog() == DialogResult.OK)
  403. {
  404. mutualAidPay = frm.mutualAidPay;
  405. relation = frm.relation;
  406. set_flag = frm.set_flag;
  407. int i = frm.cbxInterface.SelectedIndex;
  408. DataTable dtInteface = (DataTable)frm.cbxInterface.DataSource;
  409. if (i != 2)
  410. {
  411. Global.pat.insuplc_admdvs = "";
  412. }
  413. else
  414. {
  415. Global.pat.insuplc_admdvs = "519900";
  416. }
  417. Global.curEvt.URL = dtInteface.Rows[i]["CenterURL"].ToString();
  418. Global.inf.areaCode = dtInteface.Rows[i]["AreaCode"].ToString();
  419. Global.inf.interfaceDr = int.Parse(dtInteface.Rows[i]["ID"].ToString());
  420. }
  421. else
  422. {
  423. MessageBox.Show("收款员取消共济结算!");
  424. return;
  425. }
  426. if (MutualAidReadCard(funNO, out patInfo, Global.curEvt.URL) != 0)
  427. {
  428. MessageBox.Show(patInfo);
  429. return;
  430. }
  431. //中心共济结算
  432. string centerReturn;
  433. if (mutualAid(patInfo, out centerReturn) != 0)
  434. {
  435. MessageBox.Show(centerReturn);
  436. return;
  437. }
  438. //保存到医保平台
  439. if (saveMutualAidSettlementToCloudPlatform(patInfo,centerReturn,out errMsg) != 0)
  440. {
  441. MessageBox.Show(errMsg);
  442. return;
  443. }
  444. //刷新结算信息显示
  445. if (getSettlInfo(out errMsg) != 0)
  446. {
  447. MessageBox.Show(errMsg);
  448. return;
  449. }
  450. //刷新汇总信息显示
  451. if (getSumamtInfo(out errMsg) != 0)
  452. {
  453. MessageBox.Show(errMsg);
  454. return;
  455. }
  456. else
  457. {
  458. MessageBox.Show("共济结算成功!");
  459. }
  460. }
  461. catch (Exception ex)
  462. {
  463. MessageBox.Show(ex.Message);
  464. return;
  465. }
  466. }
  467. /// <summary>
  468. /// 共济读卡
  469. /// </summary>
  470. /// <returns></returns>
  471. public int MutualAidReadCard(string funNO, out string outParam, string centerUrl)
  472. {
  473. outParam = "";
  474. JObject joSignRtn = new JObject();
  475. CallResult ret = new SignInProcess().Process(joSignRtn);
  476. if (!ret.Success)
  477. {
  478. Global.writeLog(joSignRtn.ToString());
  479. outParam = ret.Data;
  480. return -1;
  481. }
  482. else
  483. {
  484. Global.writeLog(joSignRtn.ToString());
  485. }
  486. try
  487. {
  488. YinHaiSafeCtrl safeCtrl = new YinHaiSafeCtrl();
  489. if (safeCtrl.Prepare(TradeEnum.PatientInfo.GetCode(), out outParam) != 0)
  490. {
  491. outParam = JsonHelper.setExceptionJson(-1,"调用安全控件", outParam).ToString();
  492. return -1;
  493. }
  494. JObject jodata = JObject.Parse(outParam);
  495. dynamic joInput_1101 = new JObject();
  496. dynamic joTmp = new JObject();
  497. joTmp.mdtrt_cert_type = jodata["mdtrt_cert_type"].ToString();
  498. joTmp.mdtrt_cert_no = jodata["mdtrt_cert_no"].ToString();
  499. joTmp.card_sn = jodata["card_sn"].ToString();
  500. joTmp.begntime = "";
  501. joTmp.psn_cert_type = jodata["psn_cert_type"].ToString();
  502. joTmp.certno = jodata["certno"].ToString();
  503. joTmp.psn_name = jodata["psn_name"].ToString();
  504. dynamic joExpContent = new JObject();
  505. joExpContent.card_token = jodata["card_token"].ToString();
  506. joTmp.Add("expContent", JObject.FromObject(joExpContent));
  507. joInput_1101.Add("data", JObject.FromObject(joTmp));
  508. JObject joCenterServiceRtn = invoker.invokeCenterService(TradeEnum.PatientInfo, joInput_1101);
  509. if (joCenterServiceRtn["infcode"].ToString() != "0")
  510. {
  511. outParam = "调用1101失败! ";
  512. return -1;
  513. }
  514. else
  515. {
  516. string output = joCenterServiceRtn["output"].ToString();
  517. //展示信息界面
  518. JObject joOutput = JObject.Parse(output);
  519. //编码转换
  520. JArray jaConvertCode = new JArray();
  521. JObject joConvertCodeParam = new JObject();
  522. joConvertCodeParam.Add("hospitalDr", Global.inf.hospitalDr);
  523. joConvertCodeParam.Add("interfaceDr", Global.inf.interfaceDr);
  524. joConvertCodeParam.Add("output", joOutput);
  525. jaConvertCode.Add(joConvertCodeParam);
  526. JObject joConvertCode = new JObject();
  527. joConvertCode.Add("code", "09010054");
  528. joConvertCode.Add("params", jaConvertCode);
  529. InvokeHelper invoker = new InvokeHelper();
  530. JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "患者信息编码转换");
  531. PatientInsuInfo frmPatientInfo = new PatientInsuInfo(joConvertCodeRtn);
  532. //相关信息转换到登记面板
  533. if (frmPatientInfo.ShowDialog() == DialogResult.OK)
  534. {
  535. joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo));
  536. joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("comInfo", jodata));
  537. }
  538. else
  539. {
  540. outParam = JsonHelper.setExceptionJson(-1, "读卡", "收款员取消读卡").ToString();
  541. return -1;
  542. }
  543. }
  544. outParam = joCenterServiceRtn.ToString();
  545. Global.writeLog("MutualAidReadCard", "", outParam);
  546. return 0;
  547. }
  548. catch (Exception ex)
  549. {
  550. outParam = "异常:" + ex.Message;
  551. return -1;
  552. }
  553. }
  554. private void btCancleMutualAid_Click(object sender, EventArgs e)
  555. {
  556. string errMsg = "";
  557. try
  558. {
  559. //撤销中心共济结算
  560. string centerReturn;
  561. if (cancleMutualAid(out centerReturn) != 0)
  562. {
  563. MessageBox.Show(centerReturn);
  564. return;
  565. }
  566. //保存到医保平台
  567. if (cancleMutualAidOfCloudPlatform(centerReturn, out errMsg) != 0)
  568. {
  569. MessageBox.Show(errMsg);
  570. return;
  571. }
  572. //刷新结算信息显示
  573. if (getSettlInfo(out errMsg) != 0)
  574. {
  575. MessageBox.Show(errMsg);
  576. return;
  577. }
  578. //刷新汇总信息显示
  579. if (getSumamtInfo(out errMsg) != 0)
  580. {
  581. MessageBox.Show(errMsg);
  582. return;
  583. }
  584. else
  585. {
  586. MessageBox.Show("撤销共济成功!");
  587. }
  588. }
  589. catch (Exception ex)
  590. {
  591. MessageBox.Show(ex.Message);
  592. return;
  593. }
  594. }
  595. private void btYes_Click(object sender, EventArgs e)
  596. {
  597. try
  598. {
  599. JObject joSetlinfo = new JObject();
  600. joSetlinfo.Add("setl_time", dtSumumt.Rows[0]["SettlementTime"].ToString());
  601. joSetlinfo.Add("cvlserv_pay", dtSumumt.Rows[0]["CivilserviceAllowancePay"].ToString());
  602. joSetlinfo.Add("hifdm_pay", dtSumumt.Rows[0]["HealthInsurancePay"].ToString());
  603. joSetlinfo.Add("cvlserv_flag", dtSumumt.Rows[0]["CivilserviceAllowancePay"].ToString());
  604. joSetlinfo.Add("med_type", dtSumumt.Rows[0]["MedicalType"].ToString());
  605. joSetlinfo.Add("brdy", dtSumumt.Rows[0]["BirthDay"].ToString());
  606. joSetlinfo.Add("naty", dtSumumt.Rows[0]["Nation"].ToString());
  607. joSetlinfo.Add("psn_cash_pay", dtSumumt.Rows[0]["PersonCashPay"].ToString());
  608. joSetlinfo.Add("certno", dtSumumt.Rows[0]["CertificateNO"].ToString());
  609. joSetlinfo.Add("hifmi_pay", dtSumumt.Rows[0]["SeriousIllnessPay"].ToString());
  610. joSetlinfo.Add("psn_no", dtSumumt.Rows[0]["PersonnelNO"].ToString());
  611. joSetlinfo.Add("act_pay_dedc", dtSumumt.Rows[0]["ActualPayDeductible"].ToString());
  612. joSetlinfo.Add("mdtrt_cert_type", dtSumumt.Rows[0]["MdtrtCertType"].ToString());
  613. joSetlinfo.Add("balc", dtSumumt.Rows[0]["Balance"].ToString());
  614. joSetlinfo.Add("medins_setl_id", dtSumumt.Rows[0]["OrganSettlementID"].ToString());
  615. joSetlinfo.Add("psn_cert_type", dtSumumt.Rows[0]["CertificateType"].ToString());
  616. joSetlinfo.Add("acct_mulaid_pay", dtSumumt.Rows[0]["AccountMutualAidAmount"].ToString());
  617. joSetlinfo.Add("clr_way", dtSumumt.Rows[0]["ClearingWay"].ToString());
  618. joSetlinfo.Add("hifob_pay", dtSumumt.Rows[0]["LargeExpensesSupplementPay"].ToString());
  619. joSetlinfo.Add("oth_pay", dtSumumt.Rows[0]["OtherPay"].ToString());
  620. joSetlinfo.Add("medfee_sumamt", dtSumumt.Rows[0]["Sumamt"].ToString());
  621. joSetlinfo.Add("hifes_pay", dtSumumt.Rows[0]["EnterpriseSupplementPay"].ToString());
  622. joSetlinfo.Add("gend", dtSumumt.Rows[0]["Gender"].ToString());
  623. joSetlinfo.Add("mdtrt_id", dtSumumt.Rows[0]["MdtrtID"].ToString());
  624. joSetlinfo.Add("acct_pay", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());
  625. joSetlinfo.Add("fund_pay_sumamt", dtSumumt.Rows[0]["FundPaySumamt"].ToString());
  626. joSetlinfo.Add("fulamt_ownpay_amt", dtSumumt.Rows[0]["OwnPayAmount"].ToString());
  627. joSetlinfo.Add("hosp_part_amt", dtSumumt.Rows[0]["HospitalPartAmount"].ToString());
  628. joSetlinfo.Add("setl_id", dtSumumt.Rows[0]["SettlementID"].ToString());
  629. joSetlinfo.Add("inscp_scp_amt", dtSumumt.Rows[0]["InPolicyRangeAmount"].ToString());
  630. joSetlinfo.Add("insutype", dtSumumt.Rows[0]["InsuranceType"].ToString());
  631. joSetlinfo.Add("maf_pay", dtSumumt.Rows[0]["MedicalAssistPay"].ToString());
  632. joSetlinfo.Add("psn_name", dtSumumt.Rows[0]["PatientName"].ToString());
  633. joSetlinfo.Add("psn_part_amt", dtSumumt.Rows[0]["PersonPaySumamt"].ToString());
  634. joSetlinfo.Add("clr_optins", dtSumumt.Rows[0]["ClearingOrgan"].ToString());
  635. joSetlinfo.Add("pool_prop_selfpay", dtSumumt.Rows[0]["HealthInsuranceRatio"].ToString());
  636. joSetlinfo.Add("psn_type", dtSumumt.Rows[0]["PersonType"].ToString());
  637. joSetlinfo.Add("hifp_pay", dtSumumt.Rows[0]["HealthInsurancePay"].ToString());
  638. joSetlinfo.Add("overlmt_selfpay", dtSumumt.Rows[0]["OverLimitAmount"].ToString());
  639. joSetlinfo.Add("preselfpay_amt", dtSumumt.Rows[0]["PreSelfPayAmount"].ToString());
  640. joSetlinfo.Add("age", dtSumumt.Rows[0]["Age"].ToString());
  641. joSetlinfo.Add("clr_type", dtSumumt.Rows[0]["ClearingType"].ToString());
  642. //
  643. joSetlinfo.Add("HospitalDr", Global.inf.hospitalDr);
  644. joSetlinfo.Add("admID", dtSumumt.Rows[0]["AdmID"].ToString());
  645. joSetlinfo.Add("ValidFlag", dtSumumt.Rows[0]["ValidFlag"].ToString());
  646. joSetlinfo.Add("BillType", dtSumumt.Rows[0]["BillType"].ToString());
  647. joSetlinfo.Add("updateUserID", Global.user.ID);
  648. joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  649. joSetlinfo.Add("billID", dtSumumt.Rows[0]["BillID"].ToString());
  650. joSetlinfo.Add("recordID", dtSumumt.Rows[0]["RecordID"].ToString());
  651. joSetlinfo.Add("msgid", dtSumumt.Rows[0]["msgid"].ToString());
  652. joSetlinfo.Add("interfaceDr", dtSumumt.Rows[0]["InterfaceDr"].ToString());
  653. joSetlinfo.Add("admType", dtSumumt.Rows[0]["admType"].ToString());
  654. joSetlinfo.Add("insuplc_admdvs", dtSumumt.Rows[0]["AccountPaySumamt"].ToString());
  655. joSetlinfo.Add("MainSettlementIDOfMutualAid", dtSumumt.Rows[0]["SettlementID"].ToString());
  656. finalSettlementInfo = joSetlinfo.ToString();
  657. this.DialogResult = DialogResult.OK;
  658. Global.writeLog("finalSettlementInfo", finalSettlementInfo,"");
  659. Close();
  660. }
  661. catch (Exception ex)
  662. {
  663. MessageBox.Show(ex.Message);
  664. }
  665. }
  666. private void btNO_Click(object sender, EventArgs e)
  667. {
  668. this.DialogResult = DialogResult.Cancel;
  669. this.Close();
  670. }
  671. private void btQuerySettlInfo_Click(object sender, EventArgs e)
  672. {
  673. settlementID = tbMainSettlID.Text;
  674. string errMsg;
  675. if (getSettlInfo(out errMsg) != 0) { MessageBox.Show(errMsg); }
  676. if (getSumamtInfo(out errMsg) != 0) { MessageBox.Show(errMsg); }
  677. }
  678. }
  679. }