using Newtonsoft.Json; using Newtonsoft.Json.Linq; 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; using PTMedicalInsurance.Common; using PTMedicalInsurance.Helper; using PTMedicalInsurance.Variables; namespace PTMedicalInsurance.Forms { public partial class InpatientRegistration : Form { public InpatientRegistration() { InitializeComponent(); this.StartPosition = FormStartPosition.CenterParent; Global.pat.medType = string.IsNullOrEmpty(Global.pat.medType) ? "21": Global.pat.medType; //默认医疗 if (Global.pat.RYorCY == "2") { string sqlCondition = " and A.Interface_Dr = '" + Global.inf.interfaceDr.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 B.Code='" + Global.pat.insuType + "' and A.InsuCode = 'insutype'" + sqlCondition; SetDBLKCombox(ref dblkcbxInsuranceType, sqlStr); sqlStr = "select A.Code, A.Name FROM HB_MedInsuDirectory A where A.ValidFlag='1' And A.HisType=7" + sqlCondition; // 如果登记选择了,则直接用登记的病种 if(!string.IsNullOrEmpty(Global.pat.DiseasecCode)) { sqlStr += " and A.Code='" + Global.pat.DiseasecCode + "' "; } SetDBLKCombox(ref dblkcbxDisease, sqlStr); sqlStr = " SELECT B.Code,B.Descripts AS Name FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr" + " WHERE B.Code='" + Global.pat.medType + "' and A.InsuCode = 'med_type'" + sqlCondition; SetDBLKCombox(ref dblkcbxMedicalType, 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 = 'psn_setlway'" + sqlCondition; SetDBLKCombox(ref dblkcbxSettelmentWay, 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 = 'dscg_way'" + sqlCondition; SetDBLKCombox(ref dblkcbxExitway, sqlStr); } else { string sqlCondition = " and A.Interface_Dr = '" + Global.inf.interfaceDr.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, sqlStr); sqlStr = "select A.Code, A.Name FROM HB_MedInsuDirectory A where A.ValidFlag='1' And A.HisType=7" + sqlCondition; SetDBLKCombox(ref dblkcbxDisease, 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 = 'psn_setlway'" + sqlCondition; SetDBLKCombox(ref dblkcbxSettelmentWay, 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 = 'med_type'" + sqlCondition; SetDBLKCombox(ref dblkcbxMedicalType, 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 = 'dscg_way'" + sqlCondition; SetDBLKCombox(ref dblkcbxExitway, sqlStr); } cbxAccountPay.Checked = false; } public Boolean b2001 = false; private DataTable dtDisease; //private DataTable dtDiseaseType; //private DataTable dtInsuranceType; //private DataTable dtMedicalType; //private DataTable dtOperation; //private DataTable dtSettelmentType; //private DataTable dtHospType; //险种 public string insuType { get; set; } public string insuTypeName { get; set; } //医疗类别(人群类别) public string med_type { get; set; } public string med_type_name { get; set; } //诊断 public string diseCodg { get; set; } public string diseName{ get; set; } //手术 public string oprn_oprt_code { get; set; } public string oprn_oprt_name{ get; set; } //病种 public string dise_type_code { get; set; } public string dise_type_name { get; set; } //结算方式 public string psn_setlway { get; set; } public string psn_setlway_name { get; set; } //治疗方式 public string treatway_code = "A"; public string treatway_name { get; set; } //外伤 public string traumaFlag = "0"; //涉及第三方标志 public string relTtpFlag = "0"; public string hospType = "0"; //分级诊疗 public string claTrtFlag = "0"; public string otpErReflFlag = "0"; public string mdtrtGrpType; public string unifPayStdType = ""; //危重患者 public string dangerFlag = "0"; //住院类型(离院) public string iptTypeCode = "1"; public string iptTypeName { get; set; } public DataTable DtDiagnose { get; set; } public string personAccountUsedFlag = "0"; 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 = "编码"; //dt.Columns[1].ColumnName = "名称"; //dt.Columns[2].ColumnName = "拼音查找码"; return dt; } private void SetDBLKCombox(ref PTControl.DBLookupCombox dblcbx, string sqlStr) { dblcbx.sDisplayField = "Code,Name,SearchCode"; dblcbx.sDisplayMember = "名称"; dblcbx.sKeyWords = "Code,SearchCode"; dblcbx.DataSource = GetDBLKComboxTable(sqlStr); 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; } private void InpatientRegistration_Load(object sender, EventArgs e) { dgvDiagnose.AutoGenerateColumns = false; dgvDiagnose.DataSource = DtDiagnose; //DtDiagnose.AcceptChanges(); dgvDiagnose.ReadOnly = true; } private void button1_Click(object sender, EventArgs e) { //外伤标志 if (Chk_TraumaFlag.Checked) traumaFlag = "1"; else traumaFlag = "0"; //涉及第三方标志 if (Chk_RelTtpFlag.Checked) relTtpFlag = "1"; else relTtpFlag = "0"; if (chkDanger.Checked) { dangerFlag = "1"; } //单病种时必须选择病种 if (string.IsNullOrEmpty(this.diseCodg) && "0201".Equals(psn_setlway)) { MessageBox.Show("单病种时必须选择病种"); return; } // 是否使用个人账户金额 if (cbxAccountPay.Checked) { personAccountUsedFlag = "1"; } this.DialogResult = DialogResult.OK; } private void dblkcbxInsuranceType_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; insuType = dataRow["Code"].ToString().Trim(); insuTypeName = dataRow["Name"].ToString().Trim(); } private void dblkcbxMedicalType_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; med_type = dataRow["Code"].ToString().Trim(); med_type_name = dataRow["Name"].ToString().Trim(); } private void dblkcbxDisease_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; diseCodg = dataRow["Code"].ToString().Trim(); diseName = dataRow["Name"].ToString().Trim(); } private void dblkcbxOperation_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; oprn_oprt_code = dataRow["Code"].ToString().Trim(); oprn_oprt_name = dataRow["Name"].ToString().Trim(); } private void dblkcbxSettelmentWay_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; psn_setlway = dataRow["Code"].ToString().Trim(); psn_setlway_name = dataRow["Name"].ToString().Trim(); } private void dblkcbxDiseaseType_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; dise_type_code = dataRow["Code"].ToString().Trim(); dise_type_name = dataRow["Name"].ToString().Trim(); } private void button2_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } private void cbxAccountPay_ValueChanged(object sender, bool value) { if (cbxAccountPay.Checked) { personAccountUsedFlag = "1"; } else { personAccountUsedFlag = "0"; } } public int DealFor2001(string funNO) { //人员待遇享受检查 string errMsg = ""; JObject joData2001 = new JObject(); joData2001.Add("psn_no", Global.pat.psn_no); joData2001.Add("insutype", insuType); joData2001.Add("fixmedins_code", Global.inf.hospitalNO); joData2001.Add("med_type", med_type); joData2001.Add("begntime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); joData2001.Add("endtime", ""); joData2001.Add("dise_codg", diseCodg); joData2001.Add("dise_name", diseName); joData2001.Add("oprn_oprt_code", ""); joData2001.Add("oprn_oprt_name", ""); joData2001.Add("matn_type", ""); joData2001.Add("birctrl_type", ""); JObject joInput = new JObject(); joInput.Add("data", joData2001); InvokeHelper invoker = new InvokeHelper(); JObject joRtn2001 = invoker.invokeCenterService(TradeEnum.BenefitCheck, joInput); if (JsonHelper.parseCenterRtnValue(joRtn2001, out errMsg) != 0) { MessageBox.Show("人员待遇享受检查调用失败,中心返回错误信息:" + errMsg); return -1; } else { string treatInfo = JsonHelper.getDestValue(joRtn2001, "output.trtinfo"); if (!string.IsNullOrEmpty(treatInfo)) { JArray jarray = JArray.Parse(treatInfo); StringBuilder sb = new StringBuilder(); foreach (JObject obj in jarray) { string flag = JsonHelper.getDestValue(obj, "trt_enjymnt_flag"); if ("0".Equals(flag)) { string fundType = JsonHelper.getDestValue(obj, "fund_pay_type"); string msg = JsonHelper.getDestValue(obj, "trt_chk_rslt"); sb.Append("基金类型:【" + fundType + "】" + msg); } } if (sb.Length > 0) { MessageBox.Show("人员待遇享受检查结果:" + sb.ToString()); return -1; } } MessageBox.Show("人员待遇享受检查结果:【正常】!"); } return 0; } private void uiButton1_Click(object sender, EventArgs e) { DealFor2001(""); } private void dblkcbxHospType_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; iptTypeCode = dataRow["Code"].ToString().Trim(); iptTypeName = dataRow["Name"].ToString().Trim(); } private void dblkcbxTreatway_AfterSelector(object sender, PTControl.AfterSelectorEventArgs e) { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; treatway_code = dataRow["Code"].ToString().Trim(); treatway_name = dataRow["Name"].ToString().Trim(); } } }