MedInsuQuery.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  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. dt_Begin.Text = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  71. dt_End.Text = DateTime.Now.ToString("yyyy-MM-30 23:59:59");
  72. edt_SetlNY.Text = DateTime.Now.ToString("yyyyMM");
  73. // dgvSettlRecord.AutoGenerateColumns = false;
  74. GridViewSetter grdSetter = new GridViewSetter();
  75. grdSetter.SetHeaderTextOfMedInsuHosPerInfo(dgvSettlRecord);
  76. //医保查询页
  77. rb_query1.Visible = true;
  78. rb_query2.Visible = false;
  79. cb_MedQueryType.SelectedIndex = 0;
  80. string sqlStr = " SELECT B.Code,B.Descripts AS Name FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr "
  81. + " WHERE A.InsuCode = 'Med_Type' and A.Interface_Dr = '" + Global.inf.interfaceDr.ToString() + "'";
  82. GetCheckBoxGroupItem(sqlStr, chklst_MedTypeList);
  83. }
  84. private void btnQuery_Click(object sender, EventArgs e)
  85. {
  86. btnPrint.Enabled = false;
  87. string sCZYXM = Global.user.name;
  88. string SqlHeard = " Adm_Dr,MdtrtID,Name as PatientName,Age,PsnCertNO,Gend,PsnType,EmpName,AdmInDepName,insuplcAdmdvs,sZYZT AS sZTSM, "
  89. + " AdmBed,RegDate,MainDiagName,AttendDoctorNO,ChiefPhyDocName,'"+ sCZYXM+ "' as OpertName,'' as InHospNo,''Address ";
  90. string SqlStrMain = " SELECT a.*,b.*,a.PatientName AS Name,a.PsnType AS PsnTypeCode,'在院' sZYZT FROM BS_MIPatCurrentInsuInfo a LEFT JOIN BS_MedInsuRegisterInfo b "
  91. + " ON a.MdtrtID=b.InsuRegID AND a.Interface_Dr=b.Interface_Dr AND a.Hospital_Dr=b.Hospital_Dr "
  92. + " WHERE b.Type=1 AND b.ValidFlag=1 AND b.Hospital_Dr= " + Global.inf.hospitalDr + " AND b.Interface_Dr= " + Global.inf.interfaceDr
  93. + " AND b.InsuRegID NOT IN (SELECT MdtrtID FROM BS_MedInsuSettlement WHERE MdtrtID=b.InsuRegID AND BillType=1 AND ValidFlag=1 AND AdmType=2) "
  94. + " AND b.RegDate<='" + dpED.Text + "' AND b.RegDate>'" + dpST.Text + "' " //
  95. + " UNION ALL "
  96. + " SELECT a.*,b.*,a.PatientName AS Name,a.PsnType AS PsnTypeCode,'已结算' AS sZYZT "
  97. + " FROM BS_MIPatCurrentInsuInfo a LEFT JOIN BS_MedInsuRegisterInfo b "
  98. + " ON a.MdtrtID=b.InsuRegID AND a.Interface_Dr=b.Interface_Dr AND a.Hospital_Dr=b.Hospital_Dr "
  99. + " 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 "
  100. + " 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
  101. + " AND c.AdmType=2 AND c.SettlementDateTime<='" + dpED.Text + "' AND c.SettlementDateTime>'" + dpST.Text + "' "; //
  102. string sqlStr = " SELECT "+ SqlHeard + " FROM ("+ SqlStrMain +") M ";
  103. //MessageBox.Show(sqlStr);
  104. JObject joSqlstr = new JObject();
  105. joSqlstr.Add("sqlStr", sqlStr);
  106. joSqlstr.Add("Type", "MedInsuHosPInfo");
  107. joSqlstr.Add("hospID", Global.inf.hisHospitalDr);
  108. JArray jaParam = new JArray();
  109. jaParam.Add(joSqlstr);
  110. JObject joSettlQuery = new JObject();
  111. joSettlQuery.Add("params", jaParam);
  112. joSettlQuery.Add("code", "09010059");
  113. InvokeHelper invoker = new InvokeHelper();
  114. JObject joRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询结算信息");
  115. //MessageBox.Show(joRtn.ToString());
  116. if (joRtn["result"]["data"].ToString() == "[]")
  117. {
  118. MessageBox.Show("查询结果为空!");
  119. return;
  120. }
  121. DataTable dt = (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  122. dgvSettlRecord.DataSource = dt;
  123. if (dt.Rows.Count != 0)
  124. {
  125. btnPrint.Enabled = true;
  126. dtExport = dt;
  127. //从HIS获取患者的床号(分床前医保登记的病人床号没有写入医保平台登记表)
  128. for (int i = 0; i < dt.Rows.Count; i++)
  129. {
  130. string BedNo, BedDocName, InHospNo, Address;
  131. JObject joTmp = new JObject();
  132. joTmp.Add("admID", dt.Rows[i]["Adm_Dr"].ToString());
  133. JObject joRtn2 = invoker.invokeHISService(JsonHelper.setIrisInpar("05110014", joTmp).ToString(), "获取患者就诊信息");
  134. if (JsonHelper.parseIrisRtnValue(joRtn2, out string errMsg) == 0)
  135. {
  136. BedNo = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.adm_bed");
  137. BedDocName = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.chfpdr_name");
  138. InHospNo = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.medrcdno");
  139. Address = JsonHelper.getDestValue(JObject.Parse(joRtn2.ToString()), "mdtrtinfo.Address");
  140. dt.Rows[i]["AdmBed"] = BedNo;
  141. dt.Rows[i]["AttendDoctorNO"] = BedDocName;
  142. dt.Rows[i]["InHospNo"] = InHospNo;
  143. dt.Rows[i]["Address"] = Address;
  144. }
  145. else
  146. {
  147. if (errMsg.IndexOf("请重新登录") > 0)
  148. {
  149. MessageBox.Show("获取患者信息失败,请重新登录系统!");
  150. break;
  151. }
  152. }
  153. }
  154. }
  155. }
  156. private void btnPrint_Click(object sender, EventArgs e)
  157. {
  158. string LSH = DateTime.Now.ToString("yyyy-MM-dd"); //DateTime.Now.ToString("MMddHHmmssffff");
  159. string sFliePathName = @"C:\Users\Administrator\Desktop\" + LSH + "医保在院患者登记或结算信息.xls";
  160. string ReturnFileName = ExportToExcel.DataTabletoExcel(dtExport, sFliePathName);
  161. if (ReturnFileName != "")
  162. {
  163. MessageBox.Show("导出成功,文件保存路径:【" + ReturnFileName + "】");
  164. System.Diagnostics.Process.Start(ReturnFileName); //打开excel文件
  165. }
  166. else
  167. {
  168. MessageBox.Show("导出失败!");
  169. }
  170. }
  171. private void cb_MedQueryType_SelectedIndexChanged(object sender, EventArgs e)
  172. {
  173. GridViewSetter gvdSetter = new GridViewSetter();
  174. if (cb_MedQueryType.SelectedIndex < 3)
  175. {
  176. rb_query1.Visible = true;
  177. rb_query2.Visible = false;
  178. switch (cb_MedQueryType.SelectedIndex)
  179. {
  180. case 0://【3605】DRG 分组结果查询
  181. {
  182. gvdSetter.SetHeaderTextOfDRGGroupResultQuery(dgv_MainData);
  183. break;
  184. }
  185. case 1://【3606】DIP 分组结果查询
  186. {
  187. gvdSetter.SetHeaderTextOfDIPGroupResultQuery(dgv_MainData);
  188. break;
  189. }
  190. case 2://【3607】结算清单质控结果查询
  191. {
  192. gvdSetter.SetHeaderTextOfSetlBillQualityResultQuery(dgv_MainData);
  193. break;
  194. }
  195. }
  196. }
  197. else if (cb_MedQueryType.SelectedIndex == 3)
  198. {
  199. rb_query1.Visible = false;
  200. rb_query2.Visible = true;
  201. //【4105】医疗保障基金结算清单数量统计查询
  202. gvdSetter.SetHeaderTextOfSetlBillCountQuery(dgv_MainData);
  203. }
  204. }
  205. private void btnMedQuery_Click(object sender, EventArgs e)
  206. {
  207. string errorMsg;
  208. string sBussiesID;
  209. DataTable dt;
  210. JObject joData = new JObject();
  211. JObject joInput = new JObject();
  212. sBussiesID = cb_MedQueryType.Text.Substring(0, 4);
  213. if (cb_MedQueryType.SelectedIndex < 3)
  214. {
  215. joData.Add("setl_ym", edt_SetlNY.Text);
  216. joData.Add("page_num", edt_Page.Text);
  217. joData.Add("page_size", edt_PageCount.Text);
  218. joData.Add("setl_id", edt_SetID.Text);
  219. joInput.Add("data", joData);
  220. }
  221. else
  222. {
  223. //医疗类别获取选中项
  224. JArray ja = new JArray();
  225. string selectedOptions = string.Empty;
  226. foreach (var item in chklst_MedTypeList.CheckedItems)
  227. {
  228. string sItem = item.ToString();
  229. string[] sArry = sItem.Split('-');
  230. string medType = sArry[0]; //截取分隔符-前的字符串
  231. //selectedOptions += item.ToString() + Environment.NewLine + selectedOptions;
  232. ja.Add(medType);
  233. }
  234. string stt_flag="0", refdset_flag="false";
  235. if (chk_returnFlag.Checked)
  236. stt_flag = "1";
  237. if (chk_TotleFlag.Checked)
  238. refdset_flag = "true";
  239. joData.Add("fixmedins_code", Global.inf.hospitalNO);
  240. joData.Add("medtype_list", ja);
  241. joData.Add("stt_begntime", dt_Begin.Text);
  242. joData.Add("stt_endtime", dt_End.Text);
  243. joData.Add("stt_flag", stt_flag);
  244. joData.Add("refdset_flag", refdset_flag);
  245. joInput.Add("data", joData);
  246. }
  247. JObject joRtn = invoker.invokeCenterService(sBussiesID, JsonHelper.setCenterInpar(sBussiesID, joInput));
  248. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  249. {
  250. MessageBox.Show(cb_MedQueryType.Text + " 查询失败:" + errorMsg);
  251. return;
  252. }
  253. else
  254. {
  255. if ((cb_MedQueryType.SelectedIndex == 0) || (cb_MedQueryType.SelectedIndex == 1))
  256. {
  257. dt = (DataTable)joRtn["output"]["data"].ToObject(typeof(DataTable));
  258. }
  259. else
  260. if (cb_MedQueryType.SelectedIndex == 3)
  261. {
  262. dt = (DataTable)joRtn["output"].ToObject(typeof(DataTable));
  263. }
  264. else
  265. {
  266. //dt = (DataTable)joRtn["output"]["data"].ToObject(typeof(DataTable));
  267. JArray RtnjaArray = JArray.Parse(JsonHelper.getDestValue(joRtn, "output.data").ToString());
  268. JArray ja = new JArray();
  269. foreach (JObject obj in RtnjaArray)
  270. {
  271. string qltctrl_chk_rslt = "";
  272. //取值重新组织
  273. string cert_no = (string)obj["cert_no"].ToString();
  274. string grp_stas = (string)obj["grp_stas"].ToString();
  275. string qltctrl_rslt = (string)obj["qltctrl_rslt"].ToString();
  276. string setl_id = (string)obj["setl_id"].ToString();
  277. string psn_name = (string)obj["psn_name"].ToString();
  278. string err_lv = (string)obj["err_lv"].ToString();
  279. string setl_ym = (string)obj["setl_ym"].ToString();
  280. string fixmedins_code = (string)obj["fixmedins_code"].ToString();
  281. string psn_no = (string)obj["psn_no"].ToString();
  282. string qltctrl_ver = (string)obj["qltctrl_ver"].ToString();
  283. string detl_list = (string)obj["detl_list"].ToString();
  284. string fixmedins_name = (string)obj["fixmedins_name"].ToString();
  285. string psn_cert_type = (string)obj["psn_cert_type"].ToString();
  286. string retn_flag = (string)obj["retn_flag"].ToString();
  287. //int age = (int)obj["age"];
  288. if (err_lv == "3")
  289. {
  290. JArray jaDetList = JArray.Parse(obj["detl_list"].ToString());
  291. foreach (JObject obj1 in jaDetList)
  292. {
  293. //string qltctrl_chk_rslt = (string)obj1["qltctrl_chk_rslt"].ToString();
  294. qltctrl_chk_rslt = (string)obj1["qltctrl_chk_rslt"].ToString() + ";" + qltctrl_chk_rslt;
  295. }
  296. }
  297. JObject jo = new JObject();
  298. jo.Add("cert_no", cert_no);
  299. jo.Add("grp_stas", grp_stas);
  300. jo.Add("qltctrl_rslt", qltctrl_rslt);
  301. jo.Add("setl_id", setl_id);
  302. jo.Add("psn_name", psn_name);
  303. jo.Add("err_lv", err_lv);
  304. jo.Add("fixmedins_code", fixmedins_code);
  305. jo.Add("psn_no", psn_no);
  306. jo.Add("qltctrl_ver", qltctrl_ver);
  307. jo.Add("detl_list", qltctrl_chk_rslt);
  308. jo.Add("fixmedins_name", fixmedins_name);
  309. jo.Add("psn_cert_type", psn_cert_type);
  310. jo.Add("retn_flag", retn_flag);
  311. ja.Add(jo);
  312. }
  313. dt = (DataTable)ja.ToObject(typeof(DataTable));
  314. }
  315. dgv_MainData.DataSource = dt;
  316. if (dt.Rows.Count > 0)
  317. {
  318. btnImport.Enabled = true;
  319. dtExport = dt;
  320. }
  321. }
  322. }
  323. private void btnImport_Click(object sender, EventArgs e)
  324. {
  325. string sBussiesID = cb_MedQueryType.Text;
  326. string LSH = DateTime.Now.ToString("yyyyMMdd"); //DateTime.Now.ToString("MMddHHmmssffff");
  327. string sFliePathName = @"C:\Users\Administrator\Desktop\" + LSH + sBussiesID + "信息.xls";
  328. string ReturnFileName = ExportToExcel.DataTabletoExcel(dtExport, sFliePathName);
  329. if (ReturnFileName != "")
  330. {
  331. MessageBox.Show("导出成功,文件保存路径:【" + ReturnFileName + "】");
  332. System.Diagnostics.Process.Start(ReturnFileName); //打开excel文件
  333. }
  334. else
  335. {
  336. MessageBox.Show("导出失败!");
  337. }
  338. }
  339. }
  340. }