MedInsuQuery.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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. DataTable dtExport;
  22. //1.声明自适应类实例
  23. AutoResizeForm asc = new AutoResizeForm();
  24. private InvokeHelper invoker = new InvokeHelper();
  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 void MedInsuQuery_Load(object sender, EventArgs e)
  36. {
  37. //this.WindowState = FormWindowState.Maximized;
  38. tbcMain.SelectedIndex = 1;
  39. dpST.Text = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
  40. dpED.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
  41. dt_ST.Text = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  42. dt_ET.Text = DateTime.Now.ToString("yyyy-MM-dd 23:59:59");
  43. // dgvSettlRecord.AutoGenerateColumns = false;
  44. cbbLevel.SelectedIndex = 0;
  45. cbbOverPrice.SelectedIndex = 0;
  46. GridViewSetter grdSetter = new GridViewSetter();
  47. grdSetter.SetHeaderTextOfMedInsuHosPerInfo(dgvSettlRecord);
  48. grdSetter.SetHeaderTextOfSettltMentFeelDetailInfo(dgvInsuFeeUpload);
  49. grdSetter.DatagridviewColumnWidthAdaptation(dgvInsuFeeUpload);
  50. }
  51. private void btnQuery_Click(object sender, EventArgs e)
  52. {
  53. btnPrint.Enabled = false;
  54. string sCZYXM = Global.user.name;
  55. string SqlHeard = " Adm_Dr,MdtrtID,Name as PatientName,Age,PsnCertNO,Gend,PsnType,EmpName,AdmInDepName,insuplcAdmdvs,sZYZT AS sZTSM, "
  56. + " AdmBed,RegDate,MainDiagName,AttendDoctorNO,ChiefPhyDocName,'"+ sCZYXM+ "' as OpertName,'' as InHospNo,''Address ";
  57. string SqlStrMain = " SELECT a.*,b.*,a.PatientName AS Name,a.PsnType AS PsnTypeCode,'在院' sZYZT FROM BS_MIPatCurrentInsuInfo a LEFT JOIN BS_MedInsuRegisterInfo b "
  58. + " ON a.MdtrtID=b.InsuRegID AND a.Interface_Dr=b.Interface_Dr AND a.Hospital_Dr=b.Hospital_Dr "
  59. + " WHERE b.Type=1 AND b.ValidFlag=1 AND b.Hospital_Dr= " + Global.inf.hospitalDr + " AND b.Interface_Dr= " + Global.inf.interfaceDr
  60. + " AND b.InsuRegID NOT IN (SELECT MdtrtID FROM BS_MedInsuSettlement WHERE MdtrtID=b.InsuRegID AND BillType=1 AND ValidFlag=1 AND AdmType=2) "
  61. + " AND b.RegDate<='" + dpED.Text + "' AND b.RegDate>'" + dpST.Text + "' " //
  62. + " UNION ALL "
  63. + " SELECT a.*,b.*,a.PatientName AS Name,a.PsnType AS PsnTypeCode,'已结算' AS sZYZT "
  64. + " FROM BS_MIPatCurrentInsuInfo a LEFT JOIN BS_MedInsuRegisterInfo b "
  65. + " ON a.MdtrtID=b.InsuRegID AND a.Interface_Dr=b.Interface_Dr AND a.Hospital_Dr=b.Hospital_Dr "
  66. + " 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 "
  67. + " 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
  68. + " AND c.AdmType=2 AND c.SettlementDateTime<='" + dpED.Text + "' AND c.SettlementDateTime>'" + dpST.Text + "' "; //
  69. string sqlStr = " SELECT "+ SqlHeard + " FROM ("+ SqlStrMain +") M ";
  70. //MessageBox.Show(sqlStr);
  71. JObject joSqlstr = new JObject();
  72. joSqlstr.Add("sqlStr", sqlStr);
  73. joSqlstr.Add("Type", "MedInsuHosPInfo");
  74. joSqlstr.Add("hospID", Global.inf.hisHospitalDr);
  75. JArray jaParam = new JArray();
  76. jaParam.Add(joSqlstr);
  77. JObject joSettlQuery = new JObject();
  78. joSettlQuery.Add("params", jaParam);
  79. joSettlQuery.Add("code", "09010059");
  80. InvokeHelper invoker = new InvokeHelper();
  81. JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
  82. //MessageBox.Show(joRtn.ToString());
  83. if (joRtn["result"]["data"].ToString() == "[]")
  84. {
  85. MessageBox.Show("查询结果为空!");
  86. return;
  87. }
  88. DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  89. dgvSettlRecord.DataSource = dt;
  90. if (dt.Rows.Count != 0)
  91. {
  92. btnPrint.Enabled = true;
  93. dtExport = dt;
  94. //从HIS获取患者的床号(分床前医保登记的病人床号没有写入医保平台登记表)
  95. for (int i = 0; i < dt.Rows.Count; i++)
  96. {
  97. string BedNo, BedDocName, InHospNo, Address;
  98. JObject joTmp = new JObject();
  99. joTmp.Add("admID", dt.Rows[i]["Adm_Dr"].ToString());
  100. JObject joRtn2 = invoker.invokeHISService(JsonHelper.setIrisInpar("05110014", joTmp).ToString(), "获取患者就诊信息");
  101. if (JsonHelper.parseIrisRtnValue(joRtn2, out string errMsg) == 0)
  102. {
  103. BedNo = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.adm_bed");
  104. BedDocName = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.chfpdr_name");
  105. InHospNo = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.medrcdno");
  106. Address = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.Address");
  107. dt.Rows[i]["AdmBed"] = BedNo;
  108. dt.Rows[i]["AttendDoctorNO"] = BedDocName;
  109. dt.Rows[i]["InHospNo"] = InHospNo;
  110. dt.Rows[i]["Address"] = Address;
  111. }
  112. else
  113. {
  114. if (errMsg.IndexOf("请重新登录") > 0)
  115. {
  116. MessageBox.Show("获取患者信息失败,请重新登录系统!");
  117. break;
  118. }
  119. }
  120. }
  121. }
  122. }
  123. private void btnPrint_Click(object sender, EventArgs e)
  124. {
  125. string LSH = DateTime.Now.ToString("yyyy-MM-dd"); //DateTime.Now.ToString("MMddHHmmssffff");
  126. string sFliePathName = @"C:\Users\Administrator\Desktop\" + LSH + "医保在院患者登记或结算信息.xls";
  127. string ReturnFileName = ExportToExcel.DataTabletoExcel(dtExport, sFliePathName);
  128. if (ReturnFileName != "")
  129. {
  130. MessageBox.Show("导出成功,文件保存路径:【" + ReturnFileName + "】");
  131. System.Diagnostics.Process.Start(ReturnFileName); //打开excel文件
  132. }
  133. else
  134. {
  135. MessageBox.Show("导出失败!");
  136. }
  137. }
  138. private void btnOK_Click(object sender, EventArgs e)
  139. {
  140. string sqlStr;
  141. sqlStr = " SELECT a.Adm_Dr,c.Name, b.HISCode, b.MedInsuNO, b.Price,b.Sumamt,b.ChargeItemLevel,c.ChargeItemLevelName,b.SelfPayProp, ";
  142. sqlStr = sqlStr + " b.UpLimitAmount,b.OverLimitAmount,b.InScopeAmount,b.FullOwnPayAmount,b.PreSelfPayAmount,b.LimitUsedFlag ";
  143. sqlStr = sqlStr + " FROM BS_MedInsuSettlement a LEFT JOIN BS_MedInsuFeeUploadRecord b ";
  144. sqlStr = sqlStr + " ON a.Hospital_Dr=b.Hospital_Dr AND a.MdtrtID=b.MdtrtID AND a.PersonnelNO=b.PersonnelNO ";
  145. sqlStr = sqlStr + " LEFT JOIN HB_MedInsuDirectory c ON b.MedInsuNO=c.Code AND a.Interface_Dr=c.Interface_Dr AND a.Hospital_Dr=c.Hospital_Dr ";
  146. sqlStr = sqlStr + " WHERE b.MedInsuNO<>'' and a.ValidFlag=1 AND a.BillType=1 AND a.AdmType=2 ";
  147. sqlStr = sqlStr + " AND a.Interface_Dr=" + Global.inf.interfaceDr;
  148. sqlStr = sqlStr + " AND a.Hospital_Dr= " + Global.inf.hospitalDr;
  149. sqlStr = sqlStr + " AND a.OccurTime>'" + dt_ST.Text + "'";
  150. sqlStr = sqlStr + " AND a.OccurTime<'" + dt_ET.Text + "'";
  151. if (tb_InHospNo.Text != "")
  152. {
  153. sqlStr = sqlStr + " and a.BillID='" + tb_InHospNo.Text + "'";
  154. }
  155. if (tb_SettleID.Text != "")
  156. {
  157. sqlStr = sqlStr + " and a.SettlementID='" + tb_SettleID.Text + "'";
  158. }
  159. if (cbbOverPrice.Text == "是")
  160. {
  161. sqlStr = sqlStr + " AND b.OverLimitAmount>0 ";
  162. }
  163. else if (cbbOverPrice.Text == "否")
  164. {
  165. sqlStr = sqlStr + " AND b.OverLimitAmount<=0 ";
  166. }
  167. if (cbbLevel.Text == "甲类")
  168. {
  169. sqlStr = sqlStr + " AND b.ChargeItemLevel='01' ";
  170. }
  171. else if (cbbLevel.Text == "乙类")
  172. {
  173. sqlStr = sqlStr + " AND b.ChargeItemLevel='02' ";
  174. }
  175. else if (cbbLevel.Text == "丙类")
  176. {
  177. sqlStr = sqlStr + " AND b.ChargeItemLevel='03' ";
  178. }
  179. JObject joSqlstr = new JObject();
  180. joSqlstr.Add("sqlStr", sqlStr);
  181. JArray jaParam = new JArray();
  182. jaParam.Add(joSqlstr);
  183. JObject joSettlQuery = new JObject();
  184. joSettlQuery.Add("params", jaParam);
  185. joSettlQuery.Add("code", "09010118");
  186. JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询医保结算费用信息");
  187. DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  188. dgvInsuFeeUpload.DataSource = dt;
  189. }
  190. }
  191. }