PatientInsuInfo.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Newtonsoft.Json.Linq;
  11. using PTMedicalInsurance.Helper;
  12. using PTMedicalInsurance.Variables;
  13. using PTMedicalInsurance.Business;
  14. using PTMedicalInsurance.Common;
  15. namespace PTMedicalInsurance.Forms
  16. {
  17. public partial class PatientInsuInfo : Form
  18. {
  19. public DataTable dtInsuInfo;
  20. public DataTable dtIDInfo;
  21. public JObject joSelectedInsuInfo;
  22. public int insuInfoIndex = 0;
  23. public int idInfoIndex = 0;
  24. InvokeHelper invoker = new InvokeHelper();
  25. private MIIrisServices mIS = new MIIrisServices();
  26. private DataTable dtFundPayType;
  27. private Form mainForm;
  28. //1.声明自适应类实例
  29. AutoResizeForm asc = new AutoResizeForm();
  30. public PatientInsuInfo()
  31. {
  32. InitializeComponent();
  33. this.StartPosition = FormStartPosition.CenterParent;
  34. asc.controllInitializeSize(this);
  35. asc.controlAutoSize(this);
  36. }
  37. public PatientInsuInfo(JObject jo,Form frm)
  38. {
  39. InitializeComponent();
  40. InitForm(jo,frm);
  41. }
  42. public PatientInsuInfo(JObject jo)
  43. {
  44. InitializeComponent();
  45. InitForm(jo);
  46. }
  47. private void InitForm(JObject jo)
  48. {
  49. dtInsuInfo = (DataTable)jo["insuinfo"].ToObject(typeof(DataTable));
  50. dtIDInfo = (DataTable)jo["idetinfo"].ToObject(typeof(DataTable));
  51. JObject joBaseInfo = JObject.FromObject(jo["baseinfo"]);
  52. this.tbName.Text = joBaseInfo["psn_name"].ToString();
  53. this.tbPsnNO.Text = joBaseInfo["psn_no"].ToString();
  54. this.tbGend.Text = joBaseInfo["gend"].ToString();
  55. this.tbBirthDay.Text = joBaseInfo["brdy"].ToString();
  56. this.tbNaty.Text = joBaseInfo["naty"].ToString();
  57. this.tbCertType.Text = joBaseInfo["psn_cert_type"].ToString();
  58. this.tbCertNO.Text = joBaseInfo["certno"].ToString();
  59. this.tbAge.Text = joBaseInfo["age"].ToString();
  60. string expContent = joBaseInfo["exp_content"].ToString(); //字段扩展 只有居民返回
  61. //JObject joInsuInfo = JObject.FromObject(jo["insuinfo"]);
  62. //Global.pat.insuType= joInsuInfo["insutypeNo"].ToString();
  63. setDgvIDInfo();
  64. setDgvInsuInfo();
  65. setDgvTreatement(dgvTreatment);
  66. dgvInsuInfo.DataSource = dtInsuInfo;
  67. dgvIDInfo.DataSource = dtIDInfo;
  68. //获取通用目录
  69. string sTYML = mIS.GetCommonInterface_Dr(Global.inf.interfaceDr.ToString(), "");
  70. if (sTYML == "")
  71. Global.inf.interfaceDr_TY = Global.inf.interfaceDr;
  72. else
  73. Global.inf.interfaceDr_TY = int.Parse(sTYML);
  74. string sqlCondition = " and A.Interface_Dr = '" + Global.inf.interfaceDr_TY.ToString() + "'";
  75. string sqlStr = "SELECT B.Code,B.Descripts AS Name FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr WHERE A.InsuCode = 'fund_pay_type'" + sqlCondition;
  76. dtFundPayType = GetDBLKComboxTable(sqlStr);
  77. }
  78. private void InitForm(JObject jo, Form frm)
  79. {
  80. InitForm(jo);
  81. mainForm = frm;
  82. CheckForIllegalCrossThreadCalls = false;
  83. // 禁用关闭按钮
  84. this.FormBorderStyle = FormBorderStyle.None;
  85. // 隐藏标题栏
  86. this.ControlBox = false;
  87. // 其他可能需要的配置
  88. if (mainForm != this)
  89. {
  90. this.TopLevel = false;
  91. this.Dock = DockStyle.Fill; // 根据需要设置 Dock 属性
  92. }
  93. else
  94. {
  95. this.WindowState = FormWindowState.Maximized;
  96. }
  97. //
  98. //grdSetter.setHisRegInfo(dgvHisRegInfo);
  99. //grdSetter.setCenterApplyInfo(dgvCenterApplyInfo);
  100. }
  101. private DataTable GetDBLKComboxTable(string sqlStr)
  102. {
  103. InvokeHelper invoker = new InvokeHelper();
  104. dynamic joInparm = new JObject();
  105. dynamic joTmp = new JObject();
  106. joTmp.sqlStr = sqlStr;
  107. JArray jaParams = new JArray();
  108. jaParams.Add(joTmp);
  109. joInparm.Add("params", JArray.FromObject(jaParams));
  110. joInparm.code = "09010014";
  111. string inParam = joInparm.ToString();
  112. JObject joRtn = invoker.invokeInsuService(inParam, "获取下拉框消息");
  113. //dynamic jsonRtn = JsonConvert.DeserializeObject(strRtn);
  114. DataTable dt = (DataTable)joRtn["result"].ToObject(typeof(DataTable));
  115. //dt.Columns[0].ColumnName = "编码";
  116. //dt.Columns[1].ColumnName = "名称";
  117. //dt.Columns[2].ColumnName = "拼音查找码";
  118. return dt;
  119. }
  120. private void AddDGVColumn(DataGridView dgv, string headerText, string dataPropertyName, int width = 120)
  121. {
  122. DataGridViewColumn newColumn = new DataGridViewTextBoxColumn();
  123. newColumn.HeaderText = headerText;
  124. newColumn.Width = width;
  125. newColumn.DataPropertyName = dataPropertyName;
  126. newColumn.Name = dataPropertyName;
  127. dgv.Columns.Add(newColumn);
  128. }
  129. public void setDgvTreatement(DataGridView dgv)
  130. {
  131. dgv.AutoGenerateColumns = false;
  132. dgv.Columns.Clear();
  133. AddDGVColumn(dgv, "人员编号", "psn_no", 300);
  134. AddDGVColumn(dgv, "待遇检查类型", "trt_chk_type", 140);
  135. AddDGVColumn(dgv, "基金支付类型", "fund_pay_type", 300);
  136. AddDGVColumn(dgv, "基金款项待遇享受标志", "trt_enjymnt_flag", 140);
  137. AddDGVColumn(dgv, "开始日期", "begndate", 200);
  138. AddDGVColumn(dgv, "结束日期", "enddate", 200);
  139. AddDGVColumn(dgv, "待遇检查结果", "trt_chk_rslt", 140);
  140. AddDGVColumn(dgv, "字段扩展", "exp_content", 140);
  141. dgv.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
  142. dgv.ColumnHeadersHeight = 30;
  143. }
  144. private void setDgvInsuInfo()
  145. {
  146. AddDGVColumn(dgvInsuInfo, "余额", "balc", 80);
  147. AddDGVColumn(dgvInsuInfo, "险种类型", "insutype",200);
  148. AddDGVColumn(dgvInsuInfo, "人员类别", "psn_type");
  149. AddDGVColumn(dgvInsuInfo, "人员参保状态", "psn_insu_stas");
  150. AddDGVColumn(dgvInsuInfo, "个人参保日期", "psn_insu_date",170);
  151. AddDGVColumn(dgvInsuInfo, "暂停参保日期", "paus_insu_date");
  152. AddDGVColumn(dgvInsuInfo, "公务员标志", "cvlserv_flag",95);
  153. AddDGVColumn(dgvInsuInfo, "参保区划", "insuplc_admdvs",85);
  154. AddDGVColumn(dgvInsuInfo, "单位名称", "emp_name",300);
  155. AddDGVColumn(dgvInsuInfo, "险种类型编码", "insutypeNo");
  156. dgvInsuInfo.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
  157. dgvInsuInfo.ColumnHeadersHeight = 40; //341124199210252617
  158. }
  159. private void setDgvIDInfo()
  160. {
  161. AddDGVColumn(dgvIDInfo, "人员身份类别", "psn_idet_type", 140);
  162. AddDGVColumn(dgvIDInfo, "人员类别等级", "psn_type_lv", 140);
  163. AddDGVColumn(dgvIDInfo, "备注", "memo", 150);
  164. AddDGVColumn(dgvIDInfo, "开始时间", "begntime", 200);
  165. AddDGVColumn(dgvIDInfo, "结束时间", "endtime", 200);
  166. dgvIDInfo.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
  167. dgvIDInfo.ColumnHeadersHeight = 40;
  168. }
  169. private void uiButton1_Click(object sender, EventArgs e)
  170. {
  171. insuInfoIndex = dgvInsuInfo.CurrentRow.Index;
  172. if (dtIDInfo.Rows.Count != 0 )
  173. idInfoIndex = dgvIDInfo.CurrentRow.Index;
  174. joSelectedInsuInfo = new JObject();
  175. for (int i = 0; i < dtInsuInfo.Columns.Count; i++)
  176. {
  177. string key = dtInsuInfo.Columns[i].ColumnName;
  178. string value = dgvInsuInfo.CurrentRow.Cells[key].Value.ToString();
  179. joSelectedInsuInfo.Add(key, value);
  180. }
  181. DialogResult = DialogResult.OK;
  182. }
  183. private void uiButton2_Click(object sender, EventArgs e)
  184. {
  185. DialogResult = DialogResult.Cancel;
  186. }
  187. private JObject QueryTreamentInfo()
  188. {
  189. int i = dgvInsuInfo.SelectedIndex;
  190. string insutype = dgvInsuInfo.Rows[i].Cells["insutypeNo"].Value.ToString();
  191. var joData = new { data = new { psn_no = this.tbPsnNO.Text, insutype = insutype, med_type = tools.getDestPosStrBySpliter(cbxMedicalType.Text, 1, "."), begntime = tbBeginDate_treatment.Text, endtime = tbEndDate_treatment.Text, fixmedins_code = Global.inf.hospitalNO } };
  192. return invoker.invokeCenterService("2001", JsonHelper.setCenterInpar("2001", JObject.FromObject(joData)));
  193. }
  194. private void btTreatment_Click(object sender, EventArgs e)
  195. {
  196. JObject joRtn = QueryTreamentInfo();
  197. string err;
  198. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  199. {
  200. MessageBox.Show(err);
  201. return;
  202. }
  203. // 创建一个字典来存储 dt2 中的 code 和 desc 键值对,以便快速查找
  204. var codeDescMap = dtFundPayType.AsEnumerable()
  205. .ToDictionary(row => row.Field<string>("Code"), row => row.Field<string>("Name"));
  206. DataTable dt = (DataTable)joRtn["output"]["trtinfo"].ToObject(typeof(DataTable));
  207. foreach (DataRow dr in dt.Rows)
  208. {
  209. if (dr["trt_enjymnt_flag"].ToString() == "0")
  210. {
  211. dr["trt_enjymnt_flag"] = "否";
  212. }
  213. else if(dr["trt_enjymnt_flag"].ToString() == "1")
  214. {
  215. dr["trt_enjymnt_flag"] = "是";
  216. }
  217. else
  218. {
  219. //
  220. }
  221. if (dr["trt_chk_type"].ToString() == "01")
  222. {
  223. dr["trt_chk_type"] = "基金项检查";
  224. }
  225. else if (dr["trt_chk_type"].ToString() == "99")
  226. {
  227. dr["trt_chk_type"] = "其它检查";
  228. }
  229. else
  230. {
  231. //
  232. }
  233. String key = dr["fund_pay_type"].ToString();
  234. // 检查 codeDescMap 中是否存在对应的描述
  235. if (codeDescMap.ContainsKey(key))
  236. {
  237. // 使用找到的描述更新当前行的 trt_enjymnt_flag 字段
  238. dr["fund_pay_type"] = $"({key}){codeDescMap[key]}";
  239. }
  240. else
  241. {
  242. // 如果没有找到对应描述,则可以设置一个默认值或者保留原值
  243. //dr["fund_pay_type"] = "未知"; // 或者其他的默认值
  244. }
  245. }
  246. dgvTreatment.DataSource = dt;
  247. }
  248. }
  249. }