MedInsuQuery.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.IO;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. using PTMedicalInsurance.Common;
  13. using PTMedicalInsurance.Helper;
  14. using PTMedicalInsurance.FormSetter;
  15. using PTMedicalInsurance.Business;
  16. using PTMedicalInsurance.Variables;
  17. namespace PTMedicalInsurance.Forms
  18. {
  19. public partial class MedInsuQuery : Form
  20. {
  21. InvokeHelper invoker = new InvokeHelper();
  22. DataTable dtExport;
  23. //1.声明自适应类实例
  24. AutoResizeForm asc = new AutoResizeForm();
  25. public MedInsuQuery()
  26. {
  27. InitializeComponent();
  28. asc.controllInitializeSize(this);
  29. asc.controlAutoSize(this);
  30. }
  31. private void btnClose_Click(object sender, EventArgs e)
  32. {
  33. Close();
  34. }
  35. private DataTable GetDBLKComboxTable(string sqlStr)
  36. {
  37. InvokeHelper invoker = new InvokeHelper();
  38. dynamic joInparm = new JObject();
  39. dynamic joTmp = new JObject();
  40. joTmp.sqlStr = sqlStr;
  41. JArray jaParams = new JArray();
  42. jaParams.Add(joTmp);
  43. joInparm.Add("params", JArray.FromObject(jaParams));
  44. joInparm.code = "09010014";
  45. string inParam = joInparm.ToString();
  46. JObject joRtn = invoker.invokeInsuService(inParam, "获取下拉框消息");
  47. //dynamic jsonRtn = JsonConvert.DeserializeObject(strRtn);
  48. DataTable dt = (DataTable)joRtn["result"].ToObject(typeof(DataTable));
  49. //dt.Columns[0].ColumnName = "编码";
  50. //dt.Columns[1].ColumnName = "名称";
  51. //dt.Columns[2].ColumnName = "拼音查找码";
  52. return dt;
  53. }
  54. private void GetCheckBoxGroupItem(string sqlStr,CheckedListBox checkedListBox1)
  55. {
  56. DataTable DT = GetDBLKComboxTable(sqlStr);
  57. checkedListBox1.Items.Clear();
  58. for (int i = 0; i < DT.Rows.Count; i++)
  59. {
  60. string Code = DT.Rows[i]["Code"].ToString();
  61. string Name = DT.Rows[i]["Name"].ToString();
  62. string Str = Code + "-" + Name;
  63. checkedListBox1.Items.Add(Str);
  64. }
  65. }
  66. private void MedInsuQuery_Load(object sender, EventArgs e)
  67. {
  68. dpST.Text = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
  69. dpED.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
  70. edt_SetlNY.Text = DateTime.Now.ToString("yyyyMM");
  71. rbg_exit_type.SelectedIndex = 1;
  72. // dgvSettlRecord.AutoGenerateColumns = false;
  73. GridViewSetter grdSetter = new GridViewSetter();
  74. grdSetter.SetHeaderTextOfMedInsuHosPerInfo(dgvSettlRecord);
  75. grdSetter.SetHeaderTextOfSettlList(dgv_SettleRecord);
  76. grdSetter.SetHeaderTextOfSettlList(dgv_Settle3602);
  77. }
  78. private void btnQuery_Click(object sender, EventArgs e)
  79. {
  80. btnPrint.Enabled = false;
  81. string sCZYXM = Global.user.name;
  82. string SqlHeard = " Adm_Dr,MdtrtID,Name as PatientName,Age,PsnCertNO,Gend,PsnType,EmpName,AdmInDepName,insuplcAdmdvs,sZYZT AS sZTSM, "
  83. + " AdmBed,RegDate,MainDiagName,AttendDoctorNO,ChiefPhyDocName,'"+ sCZYXM+ "' as OpertName,'' as InHospNo,''Address ";
  84. string SqlStrMain = " SELECT a.*,b.*,a.PatientName AS Name,a.PsnType AS PsnTypeCode,'在院' sZYZT FROM BS_MIPatCurrentInsuInfo a LEFT JOIN BS_MedInsuRegisterInfo b "
  85. + " ON a.MdtrtID=b.InsuRegID AND a.Interface_Dr=b.Interface_Dr AND a.Hospital_Dr=b.Hospital_Dr "
  86. + " WHERE b.Type=1 AND b.ValidFlag=1 AND b.Hospital_Dr= " + Global.inf.hospitalDr + " AND b.Interface_Dr= " + Global.inf.interfaceDr
  87. + " AND b.InsuRegID NOT IN (SELECT MdtrtID FROM BS_MedInsuSettlement WHERE MdtrtID=b.InsuRegID AND BillType=1 AND ValidFlag=1 AND AdmType=2) "
  88. + " AND b.RegDate<='" + dpED.Text + "' AND b.RegDate>'" + dpST.Text + "' " //
  89. + " UNION ALL "
  90. + " SELECT a.*,b.*,a.PatientName AS Name,a.PsnType AS PsnTypeCode,'已结算' AS sZYZT "
  91. + " FROM BS_MIPatCurrentInsuInfo a LEFT JOIN BS_MedInsuRegisterInfo b "
  92. + " ON a.MdtrtID=b.InsuRegID AND a.Interface_Dr=b.Interface_Dr AND a.Hospital_Dr=b.Hospital_Dr "
  93. + " LEFT JOIN BS_MedInsuSettlement c ON a.MdtrtID=b.InsuRegID AND b.InsuRegID=c.MdtrtID AND a.Interface_Dr=b.Interface_Dr AND b.Interface_Dr=c.Interface_Dr "
  94. + " WHERE b.Type=1 AND b.ValidFlag=1 AND c.BillType=1 AND b.Hospital_Dr= " + Global.inf.hospitalDr + " AND b.Interface_Dr= " + Global.inf.interfaceDr
  95. + " AND c.AdmType=2 AND c.SettlementDateTime<='" + dpED.Text + "' AND c.SettlementDateTime>'" + dpST.Text + "' "; //
  96. string sqlStr = " SELECT "+ SqlHeard + " FROM ("+ SqlStrMain +") M ";
  97. //MessageBox.Show(sqlStr);
  98. JObject joSqlstr = new JObject();
  99. joSqlstr.Add("sqlStr", sqlStr);
  100. joSqlstr.Add("Type", "MedInsuHosPInfo");
  101. joSqlstr.Add("hospID", Global.inf.hisHospitalDr);
  102. JArray jaParam = new JArray();
  103. jaParam.Add(joSqlstr);
  104. JObject joSettlQuery = new JObject();
  105. joSettlQuery.Add("params", jaParam);
  106. joSettlQuery.Add("code", "09010059");
  107. InvokeHelper invoker = new InvokeHelper();
  108. JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
  109. //MessageBox.Show(joRtn.ToString());
  110. if (joRtn["result"]["data"].ToString() == "[]")
  111. {
  112. MessageBox.Show("查询结果为空!");
  113. return;
  114. }
  115. DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  116. dgvSettlRecord.DataSource = dt;
  117. if (dt.Rows.Count != 0)
  118. {
  119. btnPrint.Enabled = true;
  120. dtExport = dt;
  121. //从HIS获取患者的床号(分床前医保登记的病人床号没有写入医保平台登记表)
  122. for (int i = 0; i < dt.Rows.Count; i++)
  123. {
  124. string BedNo, BedDocName, InHospNo, Address;
  125. JObject joTmp = new JObject();
  126. joTmp.Add("admID", dt.Rows[i]["Adm_Dr"].ToString());
  127. JObject joRtn2 = invoker.invokeHISService(JsonHelper.setIrisInpar("05110014", joTmp).ToString(), "获取患者就诊信息");
  128. if (JsonHelper.parseIrisRtnValue(joRtn2, out string errMsg) == 0)
  129. {
  130. BedNo = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.adm_bed");
  131. BedDocName = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.chfpdr_name");
  132. InHospNo = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.medrcdno");
  133. Address = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.Address");
  134. dt.Rows[i]["AdmBed"] = BedNo;
  135. dt.Rows[i]["AttendDoctorNO"] = BedDocName;
  136. dt.Rows[i]["InHospNo"] = InHospNo;
  137. dt.Rows[i]["Address"] = Address;
  138. }
  139. else
  140. {
  141. if (errMsg.IndexOf("请重新登录") > 0)
  142. {
  143. MessageBox.Show("获取患者信息失败,请重新登录系统!");
  144. break;
  145. }
  146. }
  147. }
  148. }
  149. }
  150. private void btnPrint_Click(object sender, EventArgs e)
  151. {
  152. string LSH = DateTime.Now.ToString("yyyy-MM-dd"); //DateTime.Now.ToString("MMddHHmmssffff");
  153. string sFliePathName = @"C:\Users\Administrator\Desktop\" + LSH + "医保在院患者登记或结算信息.xls";
  154. string ReturnFileName = ExportToExcel.DataTabletoExcel(dtExport, sFliePathName);
  155. if (ReturnFileName != "")
  156. {
  157. MessageBox.Show("导出成功,文件保存路径:【" + ReturnFileName + "】");
  158. System.Diagnostics.Process.Start(ReturnFileName); //打开excel文件
  159. }
  160. else
  161. {
  162. MessageBox.Show("导出失败!");
  163. }
  164. }
  165. private void btnMedQuery_Click(object sender, EventArgs e)
  166. {
  167. string errorMsg;
  168. string sBussiesID = "3605";
  169. DataTable dt;
  170. JObject joData = new JObject();
  171. JObject joInput = new JObject();
  172. joData.Add("setl_ym", edt_SetlNY.Text);
  173. joData.Add("page_num", edt_Page.Text);
  174. joData.Add("page_size", edt_PageCount.Text);
  175. joData.Add("setl_id", edt_SetID.Text);
  176. joInput.Add("data", joData);
  177. JObject joRtn = invoker.invokeCenterService(sBussiesID, JsonHelper.setCenterInpar(sBussiesID, joInput));
  178. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  179. {
  180. MessageBox.Show(" 查询失败:" + errorMsg);
  181. return;
  182. }
  183. else
  184. {
  185. dt = (DataTable)joRtn["output"]["data"].ToObject(typeof(DataTable));
  186. dgv_MainData.DataSource = dt;
  187. if (dt.Rows.Count > 0)
  188. {
  189. btnImport.Enabled = true;
  190. dtExport = dt;
  191. }
  192. }
  193. }
  194. private void btnImport_Click(object sender, EventArgs e)
  195. {
  196. string sBussiesID = "【3605】DRG分组结果查询";
  197. string LSH = DateTime.Now.ToString("yyyyMMdd"); //DateTime.Now.ToString("MMddHHmmssffff");
  198. string sFliePathName = @"C:\Users\Administrator\Desktop\" + LSH + sBussiesID + "信息.xls";
  199. string ReturnFileName = ExportToExcel.DataTabletoExcel(dtExport, sFliePathName);
  200. if (ReturnFileName != "")
  201. {
  202. MessageBox.Show("导出成功,文件保存路径:【" + ReturnFileName + "】");
  203. System.Diagnostics.Process.Start(ReturnFileName); //打开excel文件
  204. }
  205. else
  206. {
  207. MessageBox.Show("导出失败!");
  208. }
  209. }
  210. private void btnQuerySet_Click(object sender, EventArgs e)
  211. {
  212. string sqlStr = " SELECT * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr;
  213. sqlStr = sqlStr + " and OccurTime>'" + dpt_ST.Text + "'";
  214. sqlStr = sqlStr + " and OccurTime<'" + dpt_ET.Text + "'";
  215. sqlStr = sqlStr + " and Interface_Dr=" + Global.inf.interfaceDr + "";
  216. if (tbName.Text != "")
  217. {
  218. sqlStr = sqlStr + " and PatientName='" + tbName.Text + "'";
  219. }
  220. if (tbPatSettlID.Text != "")
  221. {
  222. sqlStr = sqlStr + " and SettlementID='" + tbPatSettlID.Text + "'";
  223. }
  224. if (tbHisNO.Text != "")
  225. {
  226. sqlStr = sqlStr + " and Adm_Dr='" + tbHisNO.Text + "'";
  227. }
  228. if (rbgAdmType.SelectedIndex == 1)
  229. {
  230. sqlStr = sqlStr + " and AdmType=2";
  231. }
  232. if (rbgAdmType.SelectedIndex == 2)
  233. {
  234. sqlStr = sqlStr + " and AdmType=1";
  235. }
  236. if (rbgBillType.SelectedIndex == 1)
  237. {
  238. sqlStr = sqlStr + " and BillType=1 and ValidFlag=1 ";
  239. }
  240. if (rbgBillType.SelectedIndex == 2)
  241. {
  242. sqlStr = sqlStr + " and BillType=-1 and ValidFlag=0 ";
  243. }
  244. JObject joSqlstr = new JObject();
  245. joSqlstr.Add("sqlStr", sqlStr);
  246. JArray jaParam = new JArray();
  247. jaParam.Add(joSqlstr);
  248. JObject joSettlQuery = new JObject();
  249. joSettlQuery.Add("params", jaParam);
  250. joSettlQuery.Add("code", "09010059");
  251. JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
  252. DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  253. dgv_SettleRecord.DataSource = dt;
  254. }
  255. private void btn3601_Click(object sender, EventArgs e)
  256. {
  257. string errMsg;
  258. if (dgv_SettleRecord.DataSource == null)
  259. {
  260. MessageBox.Show("请先查询HIS医保结算信息");
  261. return;
  262. }
  263. if (dgv_SettleRecord.Rows[dgv_SettleRecord.CurrentRow.Index].Cells["SettlementID"].Value.ToString() == "")
  264. {
  265. MessageBox.Show("请先查询HIS医保结算信息");
  266. return;
  267. }
  268. string settleID= dgv_SettleRecord.Rows[dgv_SettleRecord.CurrentRow.Index].Cells["SettlementID"].Value.ToString();
  269. string psnNo = dgv_SettleRecord.Rows[dgv_SettleRecord.CurrentRow.Index].Cells["PersonnelNO"].Value.ToString();
  270. try
  271. {
  272. dynamic joTmp = new JObject();
  273. joTmp.appy_exit_type = "";
  274. joTmp.setl_id = settleID;
  275. joTmp.psn_no = psnNo;
  276. joTmp.vali_flag = "";
  277. joTmp.fixmedins_code = "H45010302052";
  278. JObject joData = new JObject();
  279. joData.Add("data", joTmp);
  280. JObject joRtn = invoker.invokeCenterService("3601", JsonHelper.setCenterInpar("3601", joData).ToString());
  281. if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
  282. {
  283. MessageBox.Show("【3601】DRG申请退出列表查询失败:" + errMsg);
  284. return;
  285. }
  286. else
  287. {
  288. DataTable dt = (DataTable)joRtn["output"]["data"].ToObject(typeof(DataTable));
  289. dgv_3601.DataSource = dt;
  290. }
  291. }
  292. catch (Exception ex)
  293. {
  294. MessageBox.Show("【3601】DRG申请退出列表查询异常:" + ex.Message);
  295. return;
  296. }
  297. }
  298. private void btnExit_Click(object sender, EventArgs e)
  299. {
  300. Close();
  301. }
  302. private void btn_Query3602_Click(object sender, EventArgs e)
  303. {
  304. string sqlStr = " SELECT top 50 * FROM BS_MedInsuSettlement WHERE Hospital_Dr=" + Global.inf.hospitalDr;
  305. sqlStr = sqlStr + " and OccurTime>'" + dpt_Begin.Text + "'";
  306. sqlStr = sqlStr + " and OccurTime<'" + dpt_End.Text + "'";
  307. sqlStr = sqlStr + " and Interface_Dr=" + Global.inf.interfaceDr + "";
  308. if (tb_Name.Text != "")
  309. {
  310. sqlStr = sqlStr + " and PatientName='" + tb_Name.Text + "'";
  311. }
  312. if (tb_SeltID.Text != "")
  313. {
  314. sqlStr = sqlStr + " and SettlementID='" + tb_SeltID.Text + "'";
  315. }
  316. if (tb_CardNo.Text != "")
  317. {
  318. sqlStr = sqlStr + " and Adm_Dr='" + tb_CardNo.Text + "'";
  319. }
  320. if (rbg_AdmType.SelectedIndex == 1)
  321. {
  322. sqlStr = sqlStr + " and AdmType=2";
  323. }
  324. if (rbg_AdmType.SelectedIndex == 2)
  325. {
  326. sqlStr = sqlStr + " and AdmType=1";
  327. }
  328. if (rbg_BillType.SelectedIndex == 1)
  329. {
  330. sqlStr = sqlStr + " and BillType=1 and ValidFlag=1 ";
  331. }
  332. if (rbg_BillType.SelectedIndex == 2)
  333. {
  334. sqlStr = sqlStr + " and BillType=-1 and ValidFlag=0 ";
  335. }
  336. JObject joSqlstr = new JObject();
  337. joSqlstr.Add("sqlStr", sqlStr);
  338. JArray jaParam = new JArray();
  339. jaParam.Add(joSqlstr);
  340. JObject joSettlQuery = new JObject();
  341. joSettlQuery.Add("params", jaParam);
  342. joSettlQuery.Add("code", "09010059");
  343. JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
  344. DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  345. dgv_Settle3602.DataSource = dt;
  346. }
  347. private void btn_3602_Click(object sender, EventArgs e)
  348. {
  349. string errMsg;
  350. if (dgv_Settle3602.DataSource == null)
  351. {
  352. MessageBox.Show("请先查询HIS医保结算信息");
  353. return;
  354. }
  355. if (dgv_Settle3602.Rows[dgv_Settle3602.CurrentRow.Index].Cells["SettlementID"].Value.ToString() == "")
  356. {
  357. MessageBox.Show("请先查询HIS医保结算信息");
  358. return;
  359. }
  360. string ExitType = rbg_exit_type.SelectedIndex.ToString();
  361. try
  362. {
  363. dynamic joTmp = new JObject();
  364. joTmp.exit_rea = tb_exit_rea.Text;
  365. joTmp.fund_cap = tb_fund_cap.Text;
  366. joTmp.drg_admdvs = tb_drg_name.Text;
  367. joTmp.setl_id = tb_setl_id.Text;
  368. joTmp.psn_no = tb_psn_no.Text;
  369. joTmp.psn_name = tb_psn_name.Text;
  370. joTmp.psn_cert_type = "01";
  371. joTmp.certno = "";
  372. joTmp.insutype = dgv_Settle3602.Rows[dgv_Settle3602.CurrentRow.Index].Cells["InsuranceType"].Value.ToString(); ;
  373. joTmp.fixmedins_code = Global.inf.hospitalNO;
  374. joTmp.fixmedins_name = Global.inf.hospitalName;
  375. joTmp.adm_time = "";
  376. joTmp.dscg_time = "";
  377. joTmp.appy_exit_type = rbg_exit_type.SelectedIndex.ToString();
  378. joTmp.medcasno = "";
  379. joTmp.rx_drord_no = tb_rx_drord_no.Text;
  380. joTmp.drg_codg = "";
  381. joTmp.drg_name = "";
  382. joTmp.pay_std_amt = "";
  383. joTmp.setl_listsn = "";
  384. joTmp.mdtrt_id = "";
  385. joTmp.exit_fund_payamt = "";
  386. joTmp.drg_fund_payamt = "";
  387. joTmp.exit_type = rbg_exit_type.SelectedIndex.ToString();
  388. JObject joData = new JObject();
  389. joData.Add("data", joTmp);
  390. JObject joRtn = invoker.invokeCenterService("3602", JsonHelper.setCenterInpar("3602", joData).ToString());
  391. if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
  392. {
  393. MessageBox.Show("【3602】DRG申请退出保存失败:" + errMsg);
  394. return;
  395. }
  396. else
  397. {
  398. MessageBox.Show(joRtn.ToString());
  399. }
  400. }
  401. catch (Exception ex)
  402. {
  403. MessageBox.Show("【3602】DRG申请退出保存异常:" + ex.Message);
  404. return;
  405. }
  406. }
  407. private void dgv_Settle3602_CellClick(object sender, DataGridViewCellEventArgs e)
  408. {
  409. if (dgv_Settle3602.DataSource == null)
  410. {
  411. return;
  412. }
  413. if (dgv_Settle3602.Rows[dgv_Settle3602.CurrentRow.Index].Cells["SettlementID"].Value.ToString() == "")
  414. {
  415. return;
  416. }
  417. tb_setl_id.Text = dgv_Settle3602.Rows[dgv_Settle3602.CurrentRow.Index].Cells["SettlementID"].Value.ToString();
  418. tb_psn_no.Text = dgv_Settle3602.Rows[dgv_Settle3602.CurrentRow.Index].Cells["PersonnelNO"].Value.ToString();
  419. tb_psn_name.Text= dgv_Settle3602.Rows[dgv_Settle3602.CurrentRow.Index].Cells["PersonnelNO"].Value.ToString();
  420. }
  421. }
  422. }