MutualAid.cs 34 KB

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