using Newtonsoft.Json; using Newtonsoft.Json.Linq; using PTMedicalInsurance.Business; using PTMedicalInsurance.Common; using PTMedicalInsurance.Entity; 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 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(); public ToPutOnRecord() { InitializeComponent(); //添加转院备案 HospitalTransfer hospTransfer = new HospitalTransfer(this); this.tabPage2.Controls.Add(hospTransfer); hospTransfer.Show(); //添加其他备案 this.StartPosition = FormStartPosition.CenterParent; Global.pat.medType = string.IsNullOrEmpty(Global.pat.medType) ? "21" : Global.pat.medType; //默认医疗 string sqlCondition = " and A.Interface_Dr = '" + Global.inf.InsuCurrencyCataLogue.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 = 'insutype'" + sqlCondition; SetDBLKCombox(ref dblkcbxInsuranceType_1, sqlStr); sqlStr = "SELECT A.Code, A.Name FROM HB_MedInsuDirectory A where A.ValidFlag='1' And A.HisType=6" + sqlCondition; SetDBLKCombox(ref dblkcbxDieaseCode_1, sqlStr); 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' "; SetDBLKCombox(ref dblkcbxCbd_1, sqlStr); SetDBLKCombox(ref dblkcbxDoctor_1, ConvertToComboxDT(GetDocInfo(""), "insuUserCode", "descripts")); SetDBLKCombox(ref dblkcbxDept_1, ConvertToComboxDT(GetDeptInfo(), "code", "descripts")); dblkcbxHospitalCode_1.Text = "东莞常平健明眼科医院"; dblkcbxCbd_1.Text = "东莞市"; insu_optins = "441900"; fixmedins_code = Global.inf.hospitalNO; fixmedins_name = Global.inf.hospitalName; GridViewSetter grd = new GridViewSetter(); grd.SetHeaderTextOfApplyResult1(dgvApplyResult); rbPsnNo_1.Checked = true; this.tabRecord.SelectedIndex = 1; this.WindowState = FormWindowState.Maximized; } #region 方法封装 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)); } private 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; } public static DataTable ConvertToComboxDT(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) }; //var query = from row in sourceTable.AsEnumerable() //select new { Code = row.Field("insuUserCode"), Name = row.Field("descripts") }; // 创建新的 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); //Global.writeLog("111:" +item.Name); //if (item.Name !="") Global.writeLog(Logogram.GetFI(item.Name)); } return resultTable; } #endregion #region 获取科室,医生信息等 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 业务封装 /// /// 医保患者参保信息获取 /// /// /// private int GetPersonInfo(out string outParam) { PatientService patientService = new PatientService(); patientService.readPatientInfo(out outParam); string err; return JsonHelper.parseCenterRtnValue(JObject.Parse(outParam),out err); } #endregion 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; foreach (DataRow row in ((DataTable)dblkcbxInsuranceType_1.DataSource).Rows) { Global.writeLog(row["Code"].ToString()); 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 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)); } private void dblkcbxDoctor_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; diag_dr_code = dataRow["Code"].ToString().Trim(); diag_dr_name = dataRow["Name"].ToString().Trim(); } private void dblkcbxCbd_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; insu_optins = dataRow["Code"].ToString().Trim(); } private void dblkcbxDept_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; //diag_dr_code = dataRow["Code"].ToString().Trim(); //diag_dr_name = dataRow["Name"].ToString().Trim(); } private void dblkcbxHospitalCode_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; fixmedins_code = dataRow["Code"].ToString().Trim(); fixmedins_name = dataRow["Name"].ToString().Trim(); } private void dblkcbxDieaseCode_1_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; opsp_dise_code = dataRow["Code"].ToString().Trim(); opsp_dise_name = dataRow["Name"].ToString().Trim(); } 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); JObject joRtn = invoker.invokeCenterService(TradeEnum.QueryChronicDiseaseRecord, joData); string err; if (JsonHelper.parseCenterRtnValue(joRtn, out err) != 0) { MessageBox.Show(err); } else { //存到后台 //查询后在下方表格显示 MessageBox.Show("申请成功"); } } 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} "; 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("撤销成功"); } } } } }