ToPutOnRecord.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using PTMedicalInsurance.Business;
  4. using PTMedicalInsurance.Common;
  5. using PTMedicalInsurance.Entity;
  6. using PTMedicalInsurance.Forms.Setters.ToPutOnRecord;
  7. using PTMedicalInsurance.Helper;
  8. using PTMedicalInsurance.Variables;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.ComponentModel;
  12. using System.Data;
  13. using System.Drawing;
  14. using System.Linq;
  15. using System.Text;
  16. using System.Threading.Tasks;
  17. using System.Windows.Forms;
  18. namespace PTMedicalInsurance.Forms.ToPutOnRecord
  19. {
  20. public partial class ToPutOnRecord : Form
  21. {
  22. private InvokeHelper invoker = new InvokeHelper();
  23. private string opsp_dise_code;
  24. private string opsp_dise_name;
  25. private string insu_optins;
  26. private string ide_fixmedins_no;
  27. private string ide_fixmedins_name;
  28. private string diag_dr_code;
  29. private string diag_dr_name;
  30. private string fixmedins_code;
  31. private string fixmedins_name;
  32. private MIIrisServices mis = new MIIrisServices();
  33. public ToPutOnRecord()
  34. {
  35. InitializeComponent();
  36. //添加转院备案
  37. HospitalTransfer hospTransfer = new HospitalTransfer(this);
  38. this.tabPage2.Controls.Add(hospTransfer);
  39. hospTransfer.Show();
  40. //添加其他备案
  41. this.StartPosition = FormStartPosition.CenterParent;
  42. Global.pat.medType = string.IsNullOrEmpty(Global.pat.medType) ? "21" : Global.pat.medType; //默认医疗
  43. string sqlCondition = " and A.Interface_Dr = '" + Global.inf.InsuCurrencyCataLogue.ToString() + "'";
  44. 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 = 'insutype'" + sqlCondition;
  45. SetDBLKCombox(ref dblkcbxInsuranceType_1, sqlStr);
  46. sqlStr = "SELECT A.Code, A.Name FROM HB_MedInsuDirectory A where A.ValidFlag='1' And A.HisType=6" + sqlCondition;
  47. SetDBLKCombox(ref dblkcbxDieaseCode_1, sqlStr);
  48. 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 = 'admdvs' ";
  49. SetDBLKCombox(ref dblkcbxCbd_1, sqlStr);
  50. SetDBLKCombox(ref dblkcbxDoctor_1, ConvertToComboxDT(GetDocInfo(""), "insuUserCode", "descripts"));
  51. SetDBLKCombox(ref dblkcbxDept_1, ConvertToComboxDT(GetDeptInfo(), "code", "descripts"));
  52. dblkcbxHospitalCode_1.Text = "东莞常平健明眼科医院";
  53. dblkcbxCbd_1.Text = "东莞市";
  54. insu_optins = "441900";
  55. fixmedins_code = Global.inf.hospitalNO;
  56. fixmedins_name = Global.inf.hospitalName;
  57. GridViewSetter grd = new GridViewSetter();
  58. grd.SetHeaderTextOfApplyResult1(dgvApplyResult);
  59. rbPsnNo_1.Checked = true;
  60. this.tabRecord.SelectedIndex = 1;
  61. this.WindowState = FormWindowState.Maximized;
  62. }
  63. #region 方法封装
  64. private DataTable GetDBLKComboxTable(string sqlStr)
  65. {
  66. InvokeHelper invoker = new InvokeHelper();
  67. dynamic joInparm = new JObject();
  68. dynamic joTmp = new JObject();
  69. joTmp.sqlStr = sqlStr;
  70. JArray jaParams = new JArray();
  71. jaParams.Add(joTmp);
  72. joInparm.Add("params", JArray.FromObject(jaParams));
  73. joInparm.code = "09010014";
  74. string inParam = joInparm.ToString();
  75. JObject joRtn = invoker.invokeInsuService(inParam, "获取下拉框消息");
  76. //dynamic jsonRtn = JsonConvert.DeserializeObject(strRtn);
  77. DataTable dt = (DataTable)joRtn["result"].ToObject(typeof(DataTable));
  78. //dt.Columns[0].ColumnName = "编码";d
  79. //dt.Columns[1].ColumnName = "名称";
  80. //dt.Columns[2].ColumnName = "拼音查找码";
  81. return dt;
  82. }
  83. private void SetDBLKCombox(ref PTControl.DBLookupCombox dblcbx, string sqlStr)
  84. {
  85. SetDBLKCombox(ref dblcbx, GetDBLKComboxTable(sqlStr));
  86. }
  87. private void SetDBLKCombox(ref PTControl.DBLookupCombox dblcbx, DataTable dt)
  88. {
  89. dblcbx.sDisplayField = "Code,Name,SearchCode";
  90. dblcbx.sDisplayMember = "名称";
  91. dblcbx.sKeyWords = "Code,SearchCode";
  92. dblcbx.DataSource = dt;
  93. dblcbx.RowFilterVisible = true;
  94. dblcbx.TextBox.Width = 400;
  95. dblcbx.DataGridView.Width = 400;
  96. dblcbx.DataGridView.Columns[0].Name = "编码";
  97. dblcbx.DataGridView.Columns[1].Name = "名称";
  98. dblcbx.DataGridView.Columns[2].Name = "查找码";
  99. dblcbx.DataGridView.Columns[0].Width = 100;
  100. dblcbx.DataGridView.Columns[1].Width = 200;
  101. }
  102. public static DataTable ConvertToComboxDT(DataTable sourceTable,string code,string desc)
  103. {
  104. // 使用 LINQ 查询源 DataTable
  105. var query = from row in sourceTable.AsEnumerable()
  106. select new { Code = row.Field<string>(code), Name = row.Field<string>(desc) };
  107. //var query = from row in sourceTable.AsEnumerable()
  108. //select new { Code = row.Field<string>("insuUserCode"), Name = row.Field<string>("descripts") };
  109. // 创建新的 DataTable
  110. DataTable resultTable = new DataTable();
  111. resultTable.Columns.Add("Code", typeof(string));
  112. resultTable.Columns.Add("Name", typeof(string));
  113. resultTable.Columns.Add("SearchCode", typeof(string));
  114. // 将查询结果添加到新的 DataTable
  115. foreach (var item in query)
  116. {
  117. resultTable.Rows.Add(item.Code, item.Name,item.Name);
  118. //Global.writeLog("111:" +item.Name);
  119. //if (item.Name !="") Global.writeLog(Logogram.GetFI(item.Name));
  120. }
  121. return resultTable;
  122. }
  123. #endregion
  124. #region 获取科室,医生信息等
  125. public DataTable GetDeptInfo()
  126. {
  127. try
  128. {
  129. JObject joInput = new JObject();
  130. joInput.Add("hospID", Global.inf.hisHospitalDr);
  131. string inpar = JsonHelper.setIrisInpar("09030043", joInput).ToString();
  132. JObject joRtn = invoker.invokeHISService(inpar, "获取医院用户信息");
  133. DataTable dt = (DataTable)joRtn["result"]["rows"].ToObject(typeof(DataTable));
  134. return dt;
  135. }
  136. catch (Exception ex)
  137. {
  138. return null;
  139. }
  140. }
  141. public DataTable GetDocInfo(string UserID)
  142. {
  143. try
  144. {
  145. JObject joInput = new JObject();
  146. joInput.Add("hospID", Global.inf.hisHospitalDr);
  147. joInput.Add("userID", UserID);
  148. string inpar = JsonHelper.setIrisInpar("01040297", joInput).ToString();
  149. JObject joRtn = invoker.invokeHISService(inpar, "获取医院用户信息");
  150. DataTable dt = (DataTable)joRtn["result"]["rows"].ToObject(typeof(DataTable));
  151. return dt;
  152. }
  153. catch (Exception ex)
  154. {
  155. return null;
  156. }
  157. }
  158. #endregion
  159. #region 业务封装
  160. /// <summary>
  161. /// 医保患者参保信息获取
  162. /// </summary>
  163. /// <param name="OutParam"></param>
  164. /// <returns></returns>
  165. private int GetPersonInfo(out string outParam)
  166. {
  167. PatientService patientService = new PatientService();
  168. patientService.readPatientInfo(out outParam);
  169. string err;
  170. return JsonHelper.parseCenterRtnValue(JObject.Parse(outParam),out err);
  171. }
  172. #endregion
  173. private void btReadCard_1_Click(object sender, EventArgs e)
  174. {
  175. string PatInfo = "";
  176. if (GetPersonInfo(out PatInfo) != 0)
  177. {
  178. MessageBox.Show( "读卡失败:" + PatInfo);
  179. }
  180. tbName_1.Text = Global.pat.name;
  181. tbPsnNO_1.Text = Global.pat.psn_no;
  182. foreach (DataRow row in ((DataTable)dblkcbxInsuranceType_1.DataSource).Rows)
  183. {
  184. Global.writeLog(row["Code"].ToString());
  185. if (row["Code"].ToString() == Global.pat.insuType)
  186. {
  187. dblkcbxInsuranceType_1.Text = row["Name"].ToString();
  188. }
  189. }
  190. }
  191. private void btClose_1_Click(object sender, EventArgs e)
  192. {
  193. Close();
  194. }
  195. private void btApply_1_Click(object sender, EventArgs e)
  196. {
  197. JObject joTmp = new JObject();
  198. joTmp.Add("psn_no", tbPsnNO_1.Text);
  199. joTmp.Add("insutype", Global.pat.insuType);
  200. joTmp.Add("opsp_dise_code", opsp_dise_code);
  201. joTmp.Add("opsp_dise_name", opsp_dise_name);
  202. joTmp.Add("tel", tbTel_1.Text);
  203. joTmp.Add("addr", tbAddress_1.Text);
  204. joTmp.Add("insu_optins", insu_optins);
  205. joTmp.Add("ide_fixmedins_no", Global.inf.hospitalNO);
  206. joTmp.Add("ide_fixmedins_name",Global.inf.hospitalName);
  207. joTmp.Add("hosp_ide_date", dpAuth.Value.ToString("yyyy-MM-dd"));
  208. joTmp.Add("diag_dr_code", diag_dr_code);
  209. joTmp.Add("diag_dr_name", diag_dr_name);
  210. joTmp.Add("begndate", dpStart.Value.ToString("yyyy-MM-dd"));
  211. joTmp.Add("enddate", dpEnd.Value.ToString("yyyy-MM-dd"));
  212. JObject jo = new JObject();
  213. jo.Add("fixmedins_code", fixmedins_code);
  214. jo.Add("fixmedins_name", fixmedins_name);
  215. JArray ja = new JArray();
  216. ja.Add(jo);
  217. joTmp.Add("psn_fixed_detl_list",ja);
  218. JObject joData = new JObject();
  219. joData.Add("data",joTmp);
  220. JObject joRtn = invoker.invokeCenterService(TradeEnum.ChronicDiseaseRecord, joData);
  221. string err;
  222. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  223. {
  224. MessageBox.Show(err);
  225. }
  226. else
  227. {
  228. //存到后台
  229. ChronicDiseaseRecordInput chronicIn = JsonConvert.DeserializeObject<ChronicDiseaseRecordInput>(joTmp.ToString());
  230. JObject joDbIn = chronicIn.ConvertToDBJson();
  231. string declareNo = JsonHelper.getDestValue(joRtn, "output.result.trt_dcla_detl_sn");
  232. joDbIn.Add("DeclareNo",declareNo);
  233. joDbIn.Add("RecordType", "C");
  234. joDbIn.Add("RecordStatus", "1");
  235. joDbIn.Add("CreateUser", Global.user.ID);
  236. joDbIn.Add("PatientName", Global.pat.name);
  237. joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09030001", joDbIn).ToString(), "插入/更新慢性病表");
  238. if (JsonHelper.parseIrisRtnValue(joRtn, out err) != 0)
  239. {
  240. MessageBox.Show("插入失败");
  241. }
  242. //查询后在下方表格显示
  243. string sqlStr = $"select * from BS_InsuPersonnelRecord where DeclareNo ='{declareNo}'";
  244. dgvApplyResult.DataSource = QueryRecord(sqlStr,"查询慢病备案记录");
  245. MessageBox.Show("申请成功");
  246. }
  247. }
  248. private DataTable QueryRecord(string sqlStr,string desc)
  249. {
  250. JObject joRtn = mis.DynamicQuery(sqlStr, desc);
  251. string err;
  252. if (JsonHelper.parseIrisRtnValue(joRtn, out err) != 0)
  253. {
  254. MessageBox.Show("查询失败");
  255. return null;
  256. }
  257. return (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable));
  258. }
  259. private void dblkcbxDoctor_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e)
  260. {
  261. DataGridViewRow row = e.Value as DataGridViewRow;
  262. DataRowView dataRow = row.DataBoundItem as DataRowView;
  263. diag_dr_code = dataRow["Code"].ToString().Trim();
  264. diag_dr_name = dataRow["Name"].ToString().Trim();
  265. }
  266. private void dblkcbxCbd_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e)
  267. {
  268. DataGridViewRow row = e.Value as DataGridViewRow;
  269. DataRowView dataRow = row.DataBoundItem as DataRowView;
  270. insu_optins = dataRow["Code"].ToString().Trim();
  271. }
  272. private void dblkcbxDept_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e)
  273. {
  274. DataGridViewRow row = e.Value as DataGridViewRow;
  275. DataRowView dataRow = row.DataBoundItem as DataRowView;
  276. //diag_dr_code = dataRow["Code"].ToString().Trim();
  277. //diag_dr_name = dataRow["Name"].ToString().Trim();
  278. }
  279. private void dblkcbxHospitalCode_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e)
  280. {
  281. DataGridViewRow row = e.Value as DataGridViewRow;
  282. DataRowView dataRow = row.DataBoundItem as DataRowView;
  283. fixmedins_code = dataRow["Code"].ToString().Trim();
  284. fixmedins_name = dataRow["Name"].ToString().Trim();
  285. }
  286. private void dblkcbxDieaseCode_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e)
  287. {
  288. DataGridViewRow row = e.Value as DataGridViewRow;
  289. DataRowView dataRow = row.DataBoundItem as DataRowView;
  290. opsp_dise_code = dataRow["Code"].ToString().Trim();
  291. opsp_dise_name = dataRow["Name"].ToString().Trim();
  292. }
  293. private void btQueryCenterRecord_1_Click(object sender, EventArgs e)
  294. {
  295. JObject joTmp = new JObject();
  296. joTmp.Add("psn_no", tbPsnNo2_1.Text);
  297. JObject joData = new JObject();
  298. joData.Add("data", joTmp);
  299. JObject joRtn = invoker.invokeCenterService(TradeEnum.QueryChronicDiseaseRecord, joData);
  300. string err;
  301. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  302. {
  303. MessageBox.Show(err);
  304. }
  305. else
  306. {
  307. //存到后台
  308. //查询后在下方表格显示
  309. MessageBox.Show("申请成功");
  310. }
  311. }
  312. private void btQueryHisRecord_1_Click(object sender, EventArgs e)
  313. {
  314. string conditon = "";
  315. if (rbName_1.Checked)
  316. {
  317. conditon = $" PatientName ='{tbPsnNo2_1.Text}'";
  318. }
  319. if (rbPsnNo_1.Checked)
  320. {
  321. conditon = $" PersonnelNO ='{tbPsnNo2_1.Text}'";
  322. }
  323. if (rbDeclareNo_1.Checked)
  324. {
  325. conditon = $" DeclareNo ='{tbPsnNo2_1.Text}'";
  326. }
  327. string sqlStr = $"select * from BS_InsuPersonnelRecord where {conditon} ";
  328. dgvApplyResult.DataSource = QueryRecord(sqlStr, "查询慢病备案记录");
  329. }
  330. private void btCancleByHis_1_Click(object sender, EventArgs e)
  331. {
  332. int i = dgvApplyResult.SelectedIndex;
  333. JObject joInput = new JObject();
  334. joInput.Add("psn_no",dgvApplyResult.Rows[i].Cells["PersonnelNO"].Value.ToString());
  335. joInput.Add("trt_dcla_detl_sn", dgvApplyResult.Rows[i].Cells["DeclareNo"].Value.ToString());
  336. joInput.Add("opsp_dise_code", dgvApplyResult.Rows[i].Cells["ChronicDiseaseCode"].Value.ToString());
  337. joInput.Add("begndate", dgvApplyResult.Rows[i].Cells["BusinStartDate"].Value.ToString());
  338. joInput.Add("memo", rtbCancleReason_1.Text);
  339. JObject joData = new JObject();
  340. joData.Add("data", joInput);
  341. JObject joRtn = invoker.invokeCenterService(TradeEnum.CancleChronicDiseaseRecord, joData);
  342. string err;
  343. if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0)
  344. {
  345. MessageBox.Show(err);
  346. }
  347. else
  348. {
  349. //更新后台
  350. JObject joDbIn = new JObject();
  351. joDbIn.Add("DeclareNo", dgvApplyResult.Rows[i].Cells["DeclareNo"].ToString());
  352. joDbIn.Add("RecordStatus", "-1");
  353. joDbIn.Add("CreateUser", Global.user.ID);
  354. joDbIn.Add("PersonnelNO", dgvApplyResult.Rows[i].Cells["PersonnelNO"].ToString());
  355. joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09030001", joDbIn).ToString(), "插入/更新慢性病表");
  356. if (JsonHelper.parseIrisRtnValue(joRtn, out err) != 0)
  357. {
  358. MessageBox.Show("中心撤销成功但平台更新失败");
  359. }
  360. else
  361. {
  362. MessageBox.Show("撤销成功");
  363. }
  364. }
  365. }
  366. }
  367. }