MedInsuQuery.cs 7.1 KB

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