SettlementBilllist.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. using Newtonsoft.Json.Linq;
  2. using PTMedicalInsurance.Common;
  3. using PTMedicalInsurance.FormSetter;
  4. using PTMedicalInsurance.Helper;
  5. using PTMedicalInsurance.Variables;
  6. using System;
  7. using System.Data;
  8. using System.Windows.Forms;
  9. using System.Diagnostics;
  10. namespace PTMedicalInsurance.Forms
  11. {
  12. public partial class SettlementBillPrint : Form
  13. {
  14. private int hospitalDr;
  15. private int interfaceDr;
  16. private string hospitalNO;
  17. private string interfaceNO;
  18. private string hospitalName;
  19. private string hospitalAreaCode;
  20. private InvokeHelper invoker = new InvokeHelper();
  21. public SettlementBillPrint()
  22. {
  23. InitializeComponent();
  24. hospitalDr = Global.inf.hospitalDr;
  25. hospitalNO = Global.inf.hospitalNO;
  26. hospitalName = Global.inf.hospitalName;
  27. hospitalAreaCode = Global.inf.areaCode;
  28. interfaceDr = Global.inf.interfaceDr;
  29. }
  30. public SettlementBillPrint(JObject joParam)
  31. {
  32. InitializeComponent();
  33. hospitalDr = Global.inf.hospitalDr;
  34. hospitalNO = Global.inf.hospitalNO;
  35. hospitalName = Global.inf.hospitalName;
  36. hospitalAreaCode = Global.inf.areaCode;
  37. if (joParam == null) return;
  38. string setl_id = JsonHelper.getDestValue(joParam, "setl_id");
  39. Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joParam, "insuplc_admdvs");
  40. if (setl_id == "")
  41. {
  42. MessageBox.Show("根据传入的结算编号为查询到相关信息,请手动输入查询!");
  43. return;
  44. }
  45. string sqlStr = "SELECT * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr;
  46. sqlStr = sqlStr + " and SettlementID='" + setl_id + "'";
  47. JObject joSqlstr = new JObject();
  48. joSqlstr.Add("sqlStr", sqlStr);
  49. JArray jaParam = new JArray();
  50. jaParam.Add(joSqlstr);
  51. JObject joSettlQuery = new JObject();
  52. joSettlQuery.Add("params", jaParam);
  53. joSettlQuery.Add("code", "09010059");
  54. InvokeHelper invoker = new InvokeHelper();
  55. JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
  56. DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  57. dgvSettlRecord.DataSource = dt;
  58. }
  59. private void SettlementBillPrint_Load(object sender, EventArgs e)
  60. {
  61. dpST.Text = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
  62. dpED.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
  63. ComboxSetter cbxSetter = new ComboxSetter();
  64. cbxSetter.setCbxInterfaceDataSource(cbxInterface);
  65. GridViewSetter grdSetter = new GridViewSetter();
  66. grdSetter.SetHeaderTextOfSettlList(dgvSettlRecord);
  67. rbgAdmType.SelectedIndex = 0;
  68. rbgBillType.SelectedIndex = 1;
  69. //cbxInterface.SelectedValueChanged += new EventHandler(cbxInterface_SelectedValueChanged);
  70. }
  71. private void cbxInterface_SelectedValueChanged(object sender, EventArgs e)
  72. {
  73. DataTable dt = (DataTable)cbxInterface.DataSource;
  74. int i = cbxInterface.SelectedIndex;
  75. if (i >= 0)
  76. {
  77. //赋值
  78. hospitalNO = dt.Rows[i]["HospitalNO"].ToString();
  79. //MessageBox.Show(dt.Rows[i]["HospitalDr"].ToString());
  80. //MessageBox.Show(dt.Rows[i]["HospitalDr"].ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
  81. hospitalDr = int.Parse(dt.Rows[i]["HospitalDr"].ToString());
  82. interfaceNO = dt.Rows[i]["InterfaceNO"].ToString();
  83. interfaceDr = int.Parse(dt.Rows[i]["ID"].ToString());
  84. hospitalAreaCode = dt.Rows[i]["AreaCode"].ToString();
  85. //Global.inf.centerURL = dt.Rows[i]["CenterURL"].ToString();
  86. //Global.inf.businessDllName = dt.Rows[i]["DLLName"].ToString();
  87. //Global.inf.patientAreaCode = dt.Rows[i]["AreaCode"].ToString();
  88. }
  89. }
  90. private void btnClose_Click(object sender, EventArgs e)
  91. {
  92. Close();
  93. }
  94. private void btnQuery_Click(object sender, EventArgs e)
  95. {
  96. string sqlStr = " SELECT * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + hospitalDr;
  97. sqlStr = sqlStr + " and OccurTime>'" + dpST.Text + "'";
  98. sqlStr = sqlStr + " and OccurTime<'" + dpED.Text + "'";
  99. if (tbName.Text != "")
  100. {
  101. sqlStr = sqlStr + " and PatientName='" + tbName.Text + "'";
  102. }
  103. if (tbPatSettlID.Text != "")
  104. {
  105. sqlStr = sqlStr + " and SettlementID='" + tbPatSettlID.Text + "'";
  106. }
  107. if (tbHisNO.Text != "")
  108. {
  109. sqlStr = sqlStr + " and Adm_Dr='" + tbHisNO.Text + "'";
  110. }
  111. if (cbxInterface.Text != "")
  112. {
  113. sqlStr = sqlStr + " and Interface_Dr=" + Global.inf.interfaceDr + "";
  114. }
  115. if (rbgAdmType.SelectedIndex == 1)
  116. {
  117. sqlStr = sqlStr + " and AdmType=2";
  118. }
  119. if (rbgAdmType.SelectedIndex == 2)
  120. {
  121. sqlStr = sqlStr + " and AdmType=1";
  122. }
  123. if (rbgBillType.SelectedIndex == 1)
  124. {
  125. sqlStr = sqlStr + " and BillType=1 and ValidFlag=1 ";
  126. }
  127. if (rbgBillType.SelectedIndex == 2)
  128. {
  129. sqlStr = sqlStr + " and BillType=-1 and ValidFlag=0 ";
  130. }
  131. JObject joSqlstr = new JObject();
  132. joSqlstr.Add("sqlStr", sqlStr);
  133. JArray jaParam = new JArray();
  134. jaParam.Add(joSqlstr);
  135. JObject joSettlQuery = new JObject();
  136. joSettlQuery.Add("params", jaParam);
  137. joSettlQuery.Add("code", "09010059");
  138. JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
  139. DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  140. dgvSettlRecord.DataSource = dt;
  141. }
  142. public void btnPrint_Click(object sender, EventArgs e)
  143. {
  144. string errorMsg, outParam, FunNo = "", FunDesc = "";
  145. if (dgvSettlRecord.RowCount <= 0)
  146. {
  147. MessageBox.Show("请先查询结算数据!");
  148. return;
  149. }
  150. try
  151. {
  152. int i = dgvSettlRecord.CurrentRow.Index;
  153. DataTable dt = (DataTable)dgvSettlRecord.DataSource;
  154. string AdmType = dt.Rows[i]["admType"].ToString();
  155. string SettlementID = dt.Rows[i]["SettlementID"].ToString();
  156. string PatientName = dt.Rows[i]["PatientName"].ToString();
  157. string PersonnelNO = dt.Rows[i]["PersonnelNO"].ToString();
  158. Global.pat.insuplc_admdvs = dt.Rows[i]["insuplc_admdvs"].ToString();
  159. if (AdmType == "1")
  160. {
  161. FunNo = "5601_A"; //人员门诊支付结算打印
  162. FunDesc = "人员门诊支付结算打印";
  163. }
  164. else if (AdmType == "2")
  165. {
  166. FunNo = "5602_A"; //人员住院支付结算打印
  167. FunDesc = "人员住院支付结算打印";
  168. }
  169. JObject joData = new JObject();
  170. joData.Add("mdtrt_cert_type", "");
  171. joData.Add("mdtrt_cert_no", "");
  172. joData.Add("card_sn", "");
  173. joData.Add("psn_cert_type", "");
  174. joData.Add("certno", "");
  175. joData.Add("psn_name", PatientName);
  176. joData.Add("setl_id", SettlementID);
  177. joData.Add("begndate", "");
  178. joData.Add("enddate", "");
  179. joData.Add("name", PatientName);
  180. joData.Add("psn_no", PersonnelNO);
  181. JObject joInput = new JObject();
  182. joInput.Add("data", joData);
  183. JObject joRtn = invoker.invokeCenterService(FunNo, JsonHelper.setCenterInpar(FunNo, joInput));
  184. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  185. {
  186. outParam = JsonHelper.setExceptionJson(-1, FunDesc + "失败!", errorMsg).ToString();
  187. return;
  188. }
  189. else
  190. {
  191. //MessageBox.Show("结算单下载成功!存放路径:" + errorMsg);
  192. //打开pdf文件(激活默认打开pdf的浏览器)
  193. Process.Start(errorMsg);
  194. }
  195. }
  196. catch (Exception ex)
  197. {
  198. MessageBox.Show(ex.Message);
  199. return;
  200. }
  201. }
  202. /// <summary>
  203. /// 【5204】费用明细查询更新医保费用上传记录表
  204. /// </summary>
  205. /// <returns></returns>
  206. public JObject UpdateMedInsuUploadData(string AdmID, string psnNo, string MdtrtID, string SettlementID)
  207. {
  208. string errorMsg, outParam;
  209. if (AdmID == "")
  210. {
  211. return JObject.Parse(JsonHelper.setExceptionJson(-1, "", "AdmID不能为空!").ToString());
  212. }
  213. if (psnNo == "")
  214. {
  215. return JObject.Parse(JsonHelper.setExceptionJson(-1, "", "psnNo不能为空!").ToString());
  216. }
  217. if (MdtrtID == "")
  218. {
  219. return JObject.Parse(JsonHelper.setExceptionJson(-1, "", "MdtrtID不能为空!").ToString());
  220. }
  221. if (SettlementID == "")
  222. {
  223. return JObject.Parse(JsonHelper.setExceptionJson(-1, "", "settlementID不能为空!").ToString());
  224. }
  225. if (Global.inf.hospitalDr.ToString() == "")
  226. {
  227. return JObject.Parse(JsonHelper.setExceptionJson(-1, "", "hospitalDr不能为空!").ToString());
  228. }
  229. try
  230. {
  231. #region【5204】费用明细查询
  232. JObject joData = new JObject();
  233. joData.Add("psn_no", psnNo);
  234. joData.Add("setl_id", SettlementID);
  235. joData.Add("mdtrt_id", MdtrtID);
  236. JObject joInput = new JObject();
  237. joInput.Add("data", joData);
  238. JObject joRtn5204 = invoker.invokeCenterService("5204", JsonHelper.setCenterInpar("5204", joInput));
  239. if (JsonHelper.parseCenterRtnValue(joRtn5204, out errorMsg) != 0)
  240. {
  241. outParam = JsonHelper.setExceptionJson(-1, "【5204】费用明细查询失败!", errorMsg).ToString();
  242. return JObject.Parse(outParam);
  243. }
  244. #endregion
  245. JArray jaRtn5204 = JArray.Parse(JsonHelper.getDestValue(joRtn5204, "output"));
  246. if (jaRtn5204.Count <= 0)
  247. {
  248. return JObject.Parse(JsonHelper.setExceptionJson(-1, "", "【5204】医保费用明细查询返回结果为空!").ToString());
  249. }
  250. dynamic joTmp = new JObject();
  251. joTmp.code = "09010090";
  252. JArray jaParams = jaRtn5204;
  253. joTmp.Add("params", jaParams);
  254. joTmp.HospitalDr = Global.inf.hospitalDr;
  255. joTmp.InterfaceDr = Global.inf.interfaceDr; //如果是通用目录就更新通用目录
  256. joTmp.admID = AdmID;
  257. joTmp.mdtrt_id = MdtrtID;
  258. joTmp.psn_no = psnNo;
  259. joTmp.updateUserID = Global.user.ID;
  260. JObject joRtn = invoker.invokeInsuService(joTmp.ToString(), "更新医保费用上传明细表");
  261. if (JsonHelper.parseIrisRtnValue(joRtn, out errorMsg) != 0)
  262. {
  263. outParam = JsonHelper.setExceptionJson(-1, "更新医保费用上传明细表失败!", errorMsg).ToString();
  264. return JObject.Parse(outParam);
  265. }
  266. else
  267. {
  268. return joRtn;
  269. }
  270. }
  271. catch (Exception ex)
  272. {
  273. JObject joRtnEx = new JObject();
  274. joRtnEx.Add("errorCode", -1);
  275. joRtnEx.Add("errorMessage", ex.Message);
  276. return joRtnEx;
  277. }
  278. }
  279. private JObject getPatCheckList()
  280. {
  281. try
  282. {
  283. int i = dgvSettlRecord.CurrentRow.Index;
  284. DataTable dt = (DataTable)dgvSettlRecord.DataSource;
  285. JObject joSettel = new JObject();
  286. joSettel.Add("HospitalDr", Global.inf.hospitalDr);
  287. joSettel.Add("interfaceDr", Global.inf.interfaceDr);
  288. joSettel.Add("admID", dt.Rows[i]["AdmID"].ToString());
  289. joSettel.Add("SettlementID", dt.Rows[i]["SettlementID"].ToString());
  290. joSettel.Add("ValidFlag", dt.Rows[i]["ValidFlag"].ToString());
  291. JObject joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09010066", joSettel).ToString(), "获取结算单信息");
  292. return joRtn;
  293. }
  294. catch (Exception ex)
  295. {
  296. JObject joRtn = new JObject();
  297. joRtn.Add("errorCode", -1);
  298. joRtn.Add("errorMessage", ex.Message);
  299. return joRtn;
  300. }
  301. }
  302. private void btn_UpdateMedInsuFee_Click(object sender, EventArgs e)
  303. {
  304. string errorMsg;
  305. if (dgvSettlRecord.RowCount <= 0)
  306. {
  307. MessageBox.Show("请先查询结算数据!");
  308. return;
  309. }
  310. int i = dgvSettlRecord.CurrentRow.Index;
  311. DataTable dt = (DataTable)dgvSettlRecord.DataSource;
  312. string AdmID = dt.Rows[i]["AdmID"].ToString();
  313. string SettlementID = dt.Rows[i]["SettlementID"].ToString();
  314. string MdtrtID = dt.Rows[i]["MdtrtID"].ToString();
  315. string PsnNo = dt.Rows[i]["PersonnelNO"].ToString();
  316. #region【5204】1.医保费用明细查询 2.更新医保平台费用上传明细表
  317. JObject joRtnFee = UpdateMedInsuUploadData(AdmID, PsnNo, MdtrtID, SettlementID);
  318. if (JsonHelper.parseIrisRtnValue(joRtnFee, out errorMsg) != 0)
  319. {
  320. MessageBox.Show("更新医保费用明细表失败:" + errorMsg);
  321. return;
  322. }
  323. else
  324. {
  325. MessageBox.Show("更新医保费用明细表成功");
  326. }
  327. #endregion
  328. }
  329. private void dgvSettlRecord_CellClick(object sender, DataGridViewCellEventArgs e)
  330. {
  331. if (dgvSettlRecord.DataSource == null)
  332. return;
  333. if (dgvSettlRecord.Rows[dgvSettlRecord.CurrentRow.Index].Cells["CommercialRenFlag"].Value.ToString() == "1")
  334. btnPrintComRe.Enabled = true;
  335. else
  336. btnPrintComRe.Enabled = false;
  337. }
  338. private void btnPrintComRe_Click(object sender, EventArgs e)
  339. {
  340. string errorMsg, outParam, FunNo = "", FunDesc = "";
  341. if (dgvSettlRecord.RowCount <= 0)
  342. {
  343. MessageBox.Show("请先查询结算数据!");
  344. return;
  345. }
  346. if (dgvSettlRecord.Rows[dgvSettlRecord.CurrentRow.Index].Cells["CommercialRenFlag"].Value.ToString() != "1")
  347. {
  348. MessageBox.Show("该笔医保结算记录不含商保支付,无需打印!");
  349. return;
  350. }
  351. try
  352. {
  353. int i = dgvSettlRecord.CurrentRow.Index;
  354. DataTable dt = (DataTable)dgvSettlRecord.DataSource;
  355. string AdmType = dt.Rows[i]["admType"].ToString();
  356. string SettlementID = dt.Rows[i]["SettlementID"].ToString();
  357. string PatientName = dt.Rows[i]["PatientName"].ToString();
  358. string PersonnelNO = dt.Rows[i]["PersonnelNO"].ToString();
  359. if (AdmType == "1")
  360. {
  361. FunNo = "5601_B"; //人员门诊支付结算打印
  362. FunDesc = "人员门诊支付结算打印";
  363. }
  364. else if (AdmType == "2")
  365. {
  366. FunNo = "5602_B"; //人员住院支付结算打印
  367. FunDesc = "人员住院支付结算打印";
  368. }
  369. JObject joData = new JObject();
  370. joData.Add("mdtrt_cert_type", "");
  371. joData.Add("mdtrt_cert_no", "");
  372. joData.Add("card_sn", "");
  373. joData.Add("psn_cert_type", "");
  374. joData.Add("certno", "");
  375. joData.Add("psn_name", PatientName);
  376. joData.Add("setl_id", SettlementID);
  377. joData.Add("begndate", "");
  378. joData.Add("enddate", "");
  379. joData.Add("name", PatientName);
  380. joData.Add("psn_no", PersonnelNO);
  381. JObject joInput = new JObject();
  382. joInput.Add("data", joData);
  383. JObject joRtn = invoker.invokeCenterService(FunNo, JsonHelper.setCenterInpar(FunNo, joInput));
  384. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  385. {
  386. outParam = JsonHelper.setExceptionJson(-1, FunDesc + "失败!", errorMsg).ToString();
  387. return;
  388. }
  389. }
  390. catch (Exception ex)
  391. {
  392. MessageBox.Show(ex.Message);
  393. return;
  394. }
  395. }
  396. }
  397. }