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 OutpatientRegistration : Form
    {
        public OutpatientRegistration()
        {
            InitializeComponent();
            /*
                string sqlCondition = " and Interface_ID = '" + GlobalVariables.InterfaceID + "'";
                string sqlStr = "select sNO AS Code,Name FROM CloudMedicalInsurancePlatform_Tables.Dictionary where Type = 'insutype'" + sqlCondition;
                //SetDBLKCombox(ref dblkcbxInsuranceType, sqlStr);

                string sqlStr2 = "select Code,Name FROM CloudMedicalInsurancePlatform_Tables.Dictionary where Type='insutype' and Interface_Dr = '7'and Hosp_Dr ='63'";
                SetDBLKCombox(ref dblkcbxInsuranceType, sqlStr2);

                sqlStr = "select Code,SectionName AS Name FROM CloudMedicalInsurancePlatform_Tables.Diagnose where Type='Diagnose'" + sqlCondition;
                SetDBLKCombox(ref dblkcbxDisease, sqlStr2);

                sqlStr = "select sNO AS Code,Name FROM CloudMedicalInsurancePlatform_Tables.Dictionary where Type = 'psn_setlway'" + sqlCondition;
                SetDBLKCombox(ref dblkcbxSettelmentWay, sqlStr);

                sqlStr = "select sNO AS Code,Name FROM CloudMedicalInsurancePlatform_Tables.Dictionary where Type = 'MED_TYPE'" + sqlCondition;
                SetDBLKCombox(ref dblkcbxMedicalType, sqlStr);

                sqlStr = "select Code,Name FROM CloudMedicalInsurancePlatform_Tables.Diagnose where Type='Operation'" + sqlCondition;
                SetDBLKCombox(ref dblkcbxOperation, sqlStr);
            */

            string sqlCondition = " and Interface_Dr = '" + Global.inf.interfaceDr.ToString() + "'";
            sqlCondition = sqlCondition + "and Hosp_Dr ='" + Global.inf.hospitalDr.ToString() + "'";
            string sqlStr = "select  Code,Name FROM MedInsu_Tables.Dictionary where Type = 'insutype'" + sqlCondition;
            SetDBLKCombox(ref dblkcbxInsuranceType, sqlStr);

            //sqlStr = "select Code, Name FROM CloudMedicalInsurancePlatform_Tables.Directory where HisType=4" + sqlCondition;
            //SetDBLKCombox(ref dblkcbxDisease, sqlStr);

            sqlStr = "select  Code,Name FROM MedInsu_Tables.Dictionary where Type = 'psn_setlway'" + sqlCondition;
            SetDBLKCombox(ref dblkcbxSettelmentWay, sqlStr);

            sqlStr = "select  Code,Name FROM MedInsu_Tables.Dictionary where Type = 'MED_TYPE'" + sqlCondition;
            SetDBLKCombox(ref dblkcbxMedicalType, sqlStr);

            //sqlStr = "select Code,Name FROM CloudMedicalInsurancePlatform_Tables.Directory where HisType=5" + sqlCondition;
            //SetDBLKCombox(ref dblkcbxOperation, sqlStr);

            //dgvDiagnose.DataSource = DtDiagnose;
            ////DtDiagnose.AcceptChanges();
            //dgvDiagnose.ReadOnly = true;
            //MessageBox.Show(DtDiagnose.Rows.Count.ToString());
            //MessageBox.Show(DtDiagnose.Rows[0]["diag_name"].ToString());
            //DataGridViewColumn column = new PTControl.DataGridViewDBLKBColumn();

            //(column as PTControl.DataGridViewDBLKBColumn).SDisplayField = "Code,Name,SearchCode";
            //(column as PTControl.DataGridViewDBLKBColumn).SDisplayMember = "Name";
            //(column as PTControl.DataGridViewDBLKBColumn).SKeyWords = "SearchCode";

            //column.DataGridView.Width = 400;
            //column.DataGridView.Columns[0].Name = "编码";
            //column.DataGridView.Columns[1].Name = "名称";
            //column.DataGridView.Columns[2].Name = "查找码";
            //column.DataGridView.Columns[0].Width = 100;
            //column.DataGridView.Columns[1].Width = 200;
            //sqlStr = "select sNO AS Code,Name FROM CloudMedicalInsurancePlatform_Tables.Dictionary where Type = 'psn_setlway'" + sqlCondition;
            //(column as PTControl.DataGridViewDBLKBColumn).DataSource = GetDBLKComboxTable(sqlStr);
            //dgvDiagnose.Columns.Add(column);
            //dgvDiagnose.Columns[10].Name = "测试";
            //dgvDiagnose.Columns[10].DisplayIndex = 0;
            //string diseaseTypeParam = string.Empty;
            //string diseaseTypeRtn = iris.Invoke(diseaseTypeParam);
            //dynamic diseaseTypeRtnRtnJson = JsonConvert.DeserializeObject(diseaseTypeRtn);
            //dtDiseaseType = (DataTable)diseaseTypeRtnRtnJson.ToObject(typeof(DataTable));

            //string insuranceTypeParam = string.Empty;
            //string insuranceTypeRtn = iris.Invoke(insuranceTypeParam);
            //dynamic insuranceTypeRtnRtnJson = JsonConvert.DeserializeObject(insuranceTypeRtn);
            //dtInsuranceType = (DataTable)insuranceTypeRtnRtnJson.ToObject(typeof(DataTable));
            cbxAccountPay.Checked = true;
            personAccountUsedFlag = "1";
        }

        private DataTable dtDisease;
        private DataTable dtDiseaseType;
        private DataTable dtInsuranceType;
        private DataTable dtMedicalType;
        private DataTable dtOperation;
        private DataTable dtSettelmentType;
        //险种
        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 DataTable DtDiagnose { get; set; }

        public string personAccountUsedFlag = "0";

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        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 OutpatientRegistration_Load(object sender, EventArgs e)
        {
            dgvDiagnose.AutoGenerateColumns = false;
            dgvDiagnose.DataSource = DtDiagnose;
            //DtDiagnose.AcceptChanges();
            dgvDiagnose.ReadOnly = true;
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            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";
            }
        }
    }
}
