MedInsuQuery.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. using System.Threading;
  18. //using FastReport.DevComponents.DotNetBar.Controls;
  19. namespace PTMedicalInsurance.Forms
  20. {
  21. public partial class MedInsuQuery : Form
  22. {
  23. DataTable dtExport;
  24. //1.声明自适应类实例
  25. AutoResizeForm asc = new AutoResizeForm();
  26. public MedInsuQuery()
  27. {
  28. InitializeComponent();
  29. asc.controllInitializeSize(this);
  30. asc.controlAutoSize(this);
  31. }
  32. private void btnClose_Click(object sender, EventArgs e)
  33. {
  34. Close();
  35. }
  36. private void MedInsuQuery_Load(object sender, EventArgs e)
  37. {
  38. dpST.Text = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
  39. dpED.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
  40. // dgvSettlRecord.AutoGenerateColumns = false;
  41. GridViewSetter grdSetter = new GridViewSetter();
  42. grdSetter.SetHeaderTextOfMedInsuHosPerInfo(dgvSettlRecord);
  43. }
  44. private void btnQuery_Click(object sender, EventArgs e)
  45. {
  46. string errMsg;
  47. btnPrint.Enabled = false;
  48. string sCZYXM = Global.user.name;
  49. string SqlHeard = " Adm_Dr,MdtrtID,Name as PatientName,Age,PsnCertNO,Gend,PsnType,EmpName,AdmInDepName,insuplcAdmdvs,sZYZT AS sZTSM, "
  50. + " AdmBed,RegDate,MainDiagName,AttendDoctorNO,ChiefPhyDocName,'"+ sCZYXM+ "' as OpertName,'' as InHospNo,''Address ";
  51. string SqlStrMain = " SELECT a.*,b.*,a.PatientName AS Name,a.PsnType AS PsnTypeCode,'在院' sZYZT FROM BS_MIPatCurrentInsuInfo a LEFT JOIN BS_MedInsuRegisterInfo b "
  52. + " ON a.MdtrtID=b.InsuRegID AND a.Interface_Dr=b.Interface_Dr " //AND a.Hospital_Dr=b.Hospital_Dr
  53. + " WHERE b.Type=1 AND b.ValidFlag=1 AND b.Hospital_Dr= " + Global.inf.hospitalDr + " AND b.Interface_Dr= " + Global.inf.interfaceDr
  54. + " AND b.InsuRegID NOT IN (SELECT MdtrtID FROM BS_MedInsuSettlement WHERE MdtrtID=b.InsuRegID AND BillType=1 AND ValidFlag=1 AND AdmType=2) "
  55. + " AND b.RegDate<='" + dpED.Text + "' AND b.RegDate>'" + dpST.Text + "' " //
  56. + " UNION ALL "
  57. + " SELECT a.*,b.*,a.PatientName AS Name,a.PsnType AS PsnTypeCode,'已结算' AS sZYZT "
  58. + " FROM BS_MIPatCurrentInsuInfo a LEFT JOIN BS_MedInsuRegisterInfo b "
  59. + " ON a.MdtrtID=b.InsuRegID AND a.Interface_Dr=b.Interface_Dr " //AND a.Hospital_Dr=b.Hospital_Dr
  60. + " LEFT JOIN BS_MedInsuSettlement c ON b.InsuRegID=c.MdtrtID AND b.Interface_Dr=c.Interface_Dr " //AND a.MdtrtID=b.InsuRegID AND a.Interface_Dr=b.Interface_Dr
  61. + " 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
  62. + " AND c.AdmType=2 AND c.SettlementDateTime<='" + dpED.Text + "' AND c.SettlementDateTime>'" + dpST.Text + "' "; //
  63. string sqlStr = " SELECT "+ SqlHeard + " FROM ("+ SqlStrMain +") M ";
  64. //MessageBox.Show(sqlStr);
  65. JObject joSqlstr = new JObject();
  66. joSqlstr.Add("sqlStr", sqlStr);
  67. joSqlstr.Add("Type", "MedInsuHosPInfo");
  68. joSqlstr.Add("hospID", Global.inf.hisHospitalDr);
  69. JArray jaParam = new JArray();
  70. jaParam.Add(joSqlstr);
  71. JObject joSettlQuery = new JObject();
  72. joSettlQuery.Add("params", jaParam);
  73. joSettlQuery.Add("code", "09010059");
  74. InvokeHelper invoker = new InvokeHelper();
  75. JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
  76. //MessageBox.Show(joRtn.ToString());
  77. //if (JsonHelper.parseIrisRtnValue(joRtn, out errMsg) != 0)
  78. //{
  79. // MessageBox.Show("查询失败:" + errMsg);
  80. // return;
  81. //}
  82. if (joRtn["result"]["data"].ToString() == "[]")
  83. {
  84. MessageBox.Show("查询结果为空!");
  85. return;
  86. }
  87. DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  88. dgvSettlRecord.DataSource = dt;
  89. if (dt.Rows.Count != 0)
  90. {
  91. btnPrint.Enabled = true;
  92. dtExport = dt;
  93. //从HIS获取患者的床号(分床前医保登记的病人床号没有写入医保平台登记表)
  94. for (int i = 0; i < dt.Rows.Count; i++)
  95. {
  96. string BedNo, BedDocName, InHospNo, Address;
  97. JObject joTmp = new JObject();
  98. joTmp.Add("admID", dt.Rows[i]["Adm_Dr"].ToString());
  99. JObject joRtn2 = invoker.invokeHISService(JsonHelper.setIrisInpar("05110014", joTmp).ToString(), "获取患者就诊信息");
  100. if (JsonHelper.parseIrisRtnValue(joRtn2, out errMsg) == 0)
  101. {
  102. BedNo = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.adm_bed");
  103. BedDocName = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.chfpdr_name");
  104. InHospNo = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.medrcdno");
  105. Address = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.Address");
  106. dt.Rows[i]["AdmBed"] = BedNo;
  107. dt.Rows[i]["AttendDoctorNO"] = BedDocName;
  108. dt.Rows[i]["InHospNo"] = InHospNo;
  109. dt.Rows[i]["Address"] = Address;
  110. }
  111. else
  112. {
  113. if (errMsg.IndexOf("请重新登录") > 0)
  114. {
  115. MessageBox.Show("获取患者信息失败,请重新登录系统!");
  116. break;
  117. }
  118. }
  119. }
  120. }
  121. }
  122. private void btnPrint_Click(object sender, EventArgs e)
  123. {
  124. string LSH = DateTime.Now.ToString("yyyy-MM-dd"); //DateTime.Now.ToString("MMddHHmmssffff");
  125. string sFliePathName = @"C:\Users\Administrator\Desktop\" + LSH + "医保在院患者登记或结算信息.xls";
  126. string ReturnFileName = ExportToExcel.DataTabletoExcel(dtExport, sFliePathName);
  127. if (ReturnFileName != "")
  128. {
  129. MessageBox.Show("导出成功,文件保存路径:【" + ReturnFileName + "】");
  130. System.Diagnostics.Process.Start(ReturnFileName); //打开excel文件
  131. }
  132. else
  133. {
  134. MessageBox.Show("导出失败!");
  135. }
  136. }
  137. }
  138. }