using Newtonsoft.Json; using Newtonsoft.Json.Linq; using PTMedicalInsurance.Business; using PTMedicalInsurance.Common; using PTMedicalInsurance.Entity; using PTMedicalInsurance.Entity.Base.Settlement.Record; using PTMedicalInsurance.Forms.Setters.ToPutOnRecord; using PTMedicalInsurance.Helper; using PTMedicalInsurance.Variables; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace PTMedicalInsurance.Forms.ToPutOnRecord { public partial class ToPutOnRecord : Form { private InvokeHelper invoker = new InvokeHelper(); private HisMainBusiness hBus = new HisMainBusiness(); private string opsp_dise_code; private string opsp_dise_name; private string insu_optins; private string ide_fixmedins_no; private string ide_fixmedins_name; private string diag_dr_code; private string diag_dr_name; private string fixmedins_code; private string fixmedins_name; private MIIrisServices mis = new MIIrisServices(); GridViewSetter grd = new GridViewSetter(); public DataTable dtInsuranceType; public DataTable dtDiease; public DataTable dtInsuranceArea; public DataTable dtDoctor; public DataTable dtDept; public DataTable dtDiagnose; public ToPutOnRecord() { InitializeComponent(); //设置ComBox数据源 SetDBLKCombox(ref dblkcbxInsuranceType_1, AssignComboxDT(out dtInsuranceType,GetDictionary("insutype"))); SetDBLKCombox(ref dblkcbxDieaseCode_1, AssignComboxDT(out dtDiease, GetDirectory("6"))); SetDBLKCombox(ref dblkcbxCbd_1, AssignComboxDT(out dtInsuranceArea, GetDictionary("admdvs",2))); SetDBLKCombox(ref dblkcbxDoctor_1, AssignComboxDT(out dtDoctor, FormatComboxDatasource(GetDocInfo(""), "insuUserCode", "descripts"))); SetDBLKCombox(ref dblkcbxDept_1, AssignComboxDT(out dtDept, FormatComboxDatasource(GetDocInfo(""), "code", "descripts"))); //初始化界面 InitForm(); //添加转院备案 AddForm(this.tabPage2, new HospitalTransfer(this)); //添加定点备案 AddForm(this.tabPage3, new FixedPointRecord(this)); } #region 方法封装 private void AddForm(TabPage tabpage,Form frm) { tabpage.Controls.Add(frm); frm.Show(); } private DataTable GetDBLKComboxTable(string sqlStr) { InvokeHelper invoker = new InvokeHelper(); dynamic joInparm = new JObject(); dynamic joTmp = new JObject(); joTmp.sqlStr = sqlStr; JArray jaParams = new JArray(); jaParams.Add(joTmp); joInparm.Add("params", JArray.FromObject(jaParams)); joInparm.code = "09010014"; string inParam = joInparm.ToString(); JObject joRtn = invoker.invokeInsuService(inParam, "获取下拉框消息"); //dynamic jsonRtn = JsonConvert.DeserializeObject(strRtn); DataTable dt = (DataTable)joRtn["result"].ToObject(typeof(DataTable)); //dt.Columns[0].ColumnName = "编码";d //dt.Columns[1].ColumnName = "名称"; //dt.Columns[2].ColumnName = "拼音查找码"; return dt; } private void SetDBLKCombox(ref PTControl.DBLookupCombox dblcbx, string sqlStr) { SetDBLKCombox(ref dblcbx, GetDBLKComboxTable(sqlStr)); } public void SetDBLKCombox(ref PTControl.DBLookupCombox dblcbx, DataTable dt) { dblcbx.sDisplayField = "Code,Name,SearchCode"; dblcbx.sDisplayMember = "名称"; dblcbx.sKeyWords = "Code,SearchCode"; dblcbx.DataSource = dt; dblcbx.RowFilterVisible = true; dblcbx.TextBox.Width = 400; dblcbx.DataGridView.Width = 400; dblcbx.DataGridView.Columns[0].Name = "编码"; dblcbx.DataGridView.Columns[1].Name = "名称"; dblcbx.DataGridView.Columns[2].Name = "查找码"; dblcbx.DataGridView.Columns[0].Width = 100; dblcbx.DataGridView.Columns[1].Width = 200; } /// /// 格式化combobox为下拉框指定格式 /// /// /// /// /// public DataTable FormatComboxDatasource(DataTable sourceTable,string code,string desc) { // 使用 LINQ 查询源 DataTable var query = from row in sourceTable.AsEnumerable() select new { Code = row.Field(code), Name = row.Field(desc) }; // 创建新的 DataTable DataTable resultTable = new DataTable(); resultTable.Columns.Add("Code", typeof(string)); resultTable.Columns.Add("Name", typeof(string)); resultTable.Columns.Add("SearchCode", typeof(string)); // 将查询结果添加到新的 DataTable foreach (var item in query) { resultTable.Rows.Add(item.Code, item.Name,item.Name); } return resultTable; } public DataTable QueryRecord(string sqlStr, string desc) { JObject joRtn = mis.DynamicQuery(sqlStr, desc); string err; if (JsonHelper.parseIrisRtnValue(joRtn, out err) != 0) { MessageBox.Show("查询失败"); return null; } return (DataTable)joRtn["result"]["data"].ToObject(typeof(DataTable)); } public void AfterSelector(object sender, PTControl.AfterSelectorEventArgs e, out string code, out string name) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; code = dataRow["Code"].ToString().Trim(); name = dataRow["Name"].ToString().Trim(); } #endregion #region 获取科室,医生信息,字典等 private void InitForm() { this.StartPosition = FormStartPosition.CenterParent; dblkcbxHospitalCode_1.Text = "东莞常平健明眼科医院"; dblkcbxCbd_1.Text = "东莞市"; insu_optins = "441900"; fixmedins_code = Global.inf.hospitalNO; fixmedins_name = Global.inf.hospitalName; rbPsnNo_1.Checked = true; this.tabRecord.SelectedIndex = 1; this.WindowState = FormWindowState.Maximized; } /// /// 返回datatable的同时赋值指定的datatable /// /// /// /// public DataTable AssignComboxDT(out DataTable dt, DataTable source) { dt = source; return source; } public DataTable GetDictionary(string insuCode, int queryType = 1, string extConditon = "") { string sqlCondition = " and A.Interface_Dr = '" + Global.inf.interfaceDr_TY.ToString() + "'"; 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 = '{insuCode}'" ; if (queryType == 1) { sqlStr = sqlStr + sqlCondition + extConditon; } else { sqlStr = sqlStr + extConditon; } return GetDBLKComboxTable(sqlStr); } public DataTable GetDirectory(string histype, int queryType = 1, string extConditon = "") { string sqlCondition = " and A.Interface_Dr = '" + Global.inf.interfaceDr_TY.ToString() + "'"; string sqlStr = $"SELECT A.Code, A.Name FROM HB_MedInsuDirectory A where A.ValidFlag='1' And A.HisType={histype}"; if (queryType == 1) { sqlStr = sqlStr + sqlCondition + extConditon; } else { sqlStr = sqlStr + extConditon; } return GetDBLKComboxTable(sqlStr); } public DataTable GetDeptInfo() { try { JObject joInput = new JObject(); joInput.Add("hospID", Global.inf.hisHospitalDr); string inpar = JsonHelper.setIrisInpar("09030043", joInput).ToString(); JObject joRtn = invoker.invokeHISService(inpar, "获取医院用户信息"); DataTable dt = (DataTable)joRtn["result"]["rows"].ToObject(typeof(DataTable)); return dt; } catch (Exception ex) { return null; } } public DataTable GetDocInfo(string UserID) { try { JObject joInput = new JObject(); joInput.Add("hospID", Global.inf.hisHospitalDr); joInput.Add("userID", UserID); string inpar = JsonHelper.setIrisInpar("01040297", joInput).ToString(); JObject joRtn = invoker.invokeHISService(inpar, "获取医院用户信息"); DataTable dt = (DataTable)joRtn["result"]["rows"].ToObject(typeof(DataTable)); return dt; } catch (Exception ex) { return null; } } #endregion #region 业务封装 /// /// 医保患者参保信息获取 /// /// /// public int GetPersonInfo(out string outParam) { string patInfo = ""; //打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息 if (hBus.readCard(out outParam) != 0) { return -1; } else { patInfo = outParam; //展示患者信息界面 if (hBus.showPatInfo(patInfo, out outParam) != 0) { return -1; } } //患者信息赋值给全局变量 patInfo = outParam; if (hBus.setGlobalPatAfaterShowPatInfo(patInfo, out outParam) != 0) { return -1; } //校验HIS姓名与医保姓名是否一致 if (hBus.checkName(Global.pat.name, out outParam) != 0) { return -1; } return 0; } #endregion #region 事件 private void btReadCard_1_Click(object sender, EventArgs e) { string PatInfo = ""; if (GetPersonInfo(out PatInfo) != 0) { MessageBox.Show("读卡失败:" + PatInfo); } tbName_1.Text = Global.pat.name; tbPsnNO_1.Text = Global.pat.psn_no; tbPsnNo2_1.Text = tbPsnNO_1.Text = Global.pat.psn_no; foreach (DataRow row in ((DataTable)dblkcbxInsuranceType_1.DataSource).Rows) { if (row["Code"].ToString() == Global.pat.insuType) { dblkcbxInsuranceType_1.Text = row["Name"].ToString(); } } } private void btClose_1_Click(object sender, EventArgs e) { Close(); } private void btApply_1_Click(object sender, EventArgs e) { JObject joTmp = new JObject(); joTmp.Add("psn_no", tbPsnNO_1.Text); joTmp.Add("insutype", Global.pat.insuType); joTmp.Add("opsp_dise_code", opsp_dise_code); joTmp.Add("opsp_dise_name", opsp_dise_name); joTmp.Add("tel", tbTel_1.Text); joTmp.Add("addr", tbAddress_1.Text); joTmp.Add("insu_optins", insu_optins); joTmp.Add("ide_fixmedins_no", Global.inf.hospitalNO); joTmp.Add("ide_fixmedins_name", Global.inf.hospitalName); joTmp.Add("hosp_ide_date", dpAuth.Value.ToString("yyyy-MM-dd")); joTmp.Add("diag_dr_code", diag_dr_code); joTmp.Add("diag_dr_name", diag_dr_name); joTmp.Add("begndate", dpStart.Value.ToString("yyyy-MM-dd")); joTmp.Add("enddate", dpEnd.Value.ToString("yyyy-MM-dd")); JObject jo = new JObject(); jo.Add("fixmedins_code", fixmedins_code); jo.Add("fixmedins_name", fixmedins_name); JArray ja = new JArray(); ja.Add(jo); joTmp.Add("psn_fixed_detl_list", ja); JObject joData = new JObject(); joData.Add("data", joTmp); JObject joRtn = invoker.invokeCenterService(TradeEnum.ChronicDiseaseRecord, joData); string err; if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0) { MessageBox.Show(err); } else { //存到后台 ChronicDiseaseRecordInput chronicIn = JsonConvert.DeserializeObject(joTmp.ToString()); JObject joDbIn = chronicIn.ConvertToDBJson(); string declareNo = JsonHelper.getDestValue(joRtn, "output.result.trt_dcla_detl_sn"); joDbIn.Add("DeclareNo", declareNo); joDbIn.Add("RecordType", "C"); joDbIn.Add("RecordStatus", "1"); joDbIn.Add("CreateUser", Global.user.ID); joDbIn.Add("PatientName", Global.pat.name); joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09030001", joDbIn).ToString(), "插入/更新慢性病表"); if (JsonHelper.parseIrisRtnValue(joRtn, out err) != 0) { MessageBox.Show("插入失败"); } //查询后在下方表格显示 string sqlStr = $"select * from BS_InsuPersonnelRecord where DeclareNo ='{declareNo}'"; dgvApplyResult.DataSource = QueryRecord(sqlStr, "查询慢病备案记录"); MessageBox.Show("申请成功"); } } private void dblkcbxDoctor_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { AfterSelector(sender, e, out diag_dr_code, out diag_dr_name); } private void dblkcbxCbd_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { string tmp; AfterSelector(sender, e, out insu_optins, out tmp); } private void dblkcbxDept_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { } private void dblkcbxHospitalCode_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { AfterSelector(sender, e, out fixmedins_code, out fixmedins_name); } private void dblkcbxDieaseCode_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { AfterSelector(sender, e, out opsp_dise_code, out opsp_dise_name); } private void btQueryCenterRecord_1_Click(object sender, EventArgs e) { JObject joTmp = new JObject(); joTmp.Add("psn_no", tbPsnNo2_1.Text); JObject joData = new JObject(); joData.Add("data", joTmp); //5301 也可以 JObject joRtn = invoker.invokeCenterService(TradeEnum.QueryChronicDiseaseRecordLocal, joData); string err; if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0) { MessageBox.Show(err); } else { List lst = JsonConvert.DeserializeObject>(JsonHelper.getDestValue(joRtn, "output.result")); DataTable dt = (DataTable)joRtn["output"]["result"].ToObject(typeof(DataTable)); QueryChronicDiseaseRecord qcd = new QueryChronicDiseaseRecord(); qcd.SetHeaderText(dgvApplyResult, new Font("Arial", 9)); dgvApplyResult.DataSource = lst; } } private void btQueryHisRecord_1_Click(object sender, EventArgs e) { string conditon = ""; if (rbName_1.Checked) { conditon = $" PatientName ='{tbPsnNo2_1.Text}'"; } if (rbPsnNo_1.Checked) { conditon = $" PersonnelNO ='{tbPsnNo2_1.Text}'"; } if (rbDeclareNo_1.Checked) { conditon = $" DeclareNo ='{tbPsnNo2_1.Text}'"; } string sqlStr = $"select * from BS_InsuPersonnelRecord where {conditon} "; grd.SetHeaderTextOfApplyResult1(dgvApplyResult); dgvApplyResult.DataSource = QueryRecord(sqlStr, "查询慢病备案记录"); } private void btCancleByHis_1_Click(object sender, EventArgs e) { int i = dgvApplyResult.SelectedIndex; JObject joInput = new JObject(); joInput.Add("psn_no", dgvApplyResult.Rows[i].Cells["PersonnelNO"].Value.ToString()); joInput.Add("trt_dcla_detl_sn", dgvApplyResult.Rows[i].Cells["DeclareNo"].Value.ToString()); joInput.Add("opsp_dise_code", dgvApplyResult.Rows[i].Cells["ChronicDiseaseCode"].Value.ToString()); joInput.Add("begndate", dgvApplyResult.Rows[i].Cells["BusinStartDate"].Value.ToString()); joInput.Add("memo", rtbCancleReason_1.Text); JObject joData = new JObject(); joData.Add("data", joInput); JObject joRtn = invoker.invokeCenterService(TradeEnum.CancleChronicDiseaseRecord, joData); string err; if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0) { MessageBox.Show(err); } else { //更新后台 JObject joDbIn = new JObject(); joDbIn.Add("DeclareNo", dgvApplyResult.Rows[i].Cells["DeclareNo"].ToString()); joDbIn.Add("RecordStatus", "-1"); joDbIn.Add("CreateUser", Global.user.ID); joDbIn.Add("PersonnelNO", dgvApplyResult.Rows[i].Cells["PersonnelNO"].ToString()); joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09030001", joDbIn).ToString(), "插入/更新慢性病表"); if (JsonHelper.parseIrisRtnValue(joRtn, out err) != 0) { MessageBox.Show("中心撤销成功但平台更新失败"); } else { MessageBox.Show("撤销成功"); } } } #endregion private void btCancleByCenter_1_Click(object sender, EventArgs e) { int i = dgvApplyResult.SelectedIndex; JObject joInput = new JObject(); joInput.Add("psn_no", dgvApplyResult.Rows[i].Cells["psn_no"].Value.ToString()); joInput.Add("trt_dcla_detl_sn", dgvApplyResult.Rows[i].Cells["trt_dcla_detl_sn"].Value.ToString()); joInput.Add("opsp_dise_code", dgvApplyResult.Rows[i].Cells["opsp_dise_code"].Value.ToString()); joInput.Add("begndate", dgvApplyResult.Rows[i].Cells["begndate"].Value.ToString()); joInput.Add("memo", rtbCancleReason_1.Text); JObject joData = new JObject(); joData.Add("data", joInput); JObject joRtn = invoker.invokeCenterService(TradeEnum.CancleChronicDiseaseRecord, joData); string err; if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0) { MessageBox.Show(err); } else { //更新后台 JObject joDbIn = new JObject(); joDbIn.Add("DeclareNo", dgvApplyResult.Rows[i].Cells["DeclareNo"].ToString()); joDbIn.Add("RecordStatus", "-1"); joDbIn.Add("CreateUser", Global.user.ID); joDbIn.Add("PersonnelNO", dgvApplyResult.Rows[i].Cells["PersonnelNO"].ToString()); joRtn = invoker.invokeInsuService(JsonHelper.setIrisInpar("09030001", joDbIn).ToString(), "插入/更新慢性病表"); if (JsonHelper.parseIrisRtnValue(joRtn, out err) != 0) { MessageBox.Show("中心撤销成功但平台更新失败"); } else { MessageBox.Show("撤销成功"); } } } } }