123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682 |
- 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.Helper;
- using PTMedicalInsurance.Common;
- using Newtonsoft.Json.Linq;
- using PTMedicalInsurance.FormSetter;
- using PTMedicalInsurance.Variables;
- using FastReport;
- using Newtonsoft.Json;
- using System.Threading;
- using PTMedicalInsurance.Business;
- namespace PTMedicalInsurance.Forms
- {
- public partial class DownLoad : Form
- {
- private int hospitalDr;
- private int interfaceDr;
- private string hospitalNO;
- private string interfaceNO;
- private string hospitalName;
- private string hospitalAreaCode;
- public DataTable dtInsuInfo;
- private bool disposed = false;
- Thread thread_test;
- private InvokeHelper invoker = new InvokeHelper();
- public DownLoad()
- {
- InitializeComponent();
- hospitalDr = Global.inf.hospitalDr;
- hospitalNO = Global.inf.hospitalNO;
- hospitalName = Global.inf.hospitalName;
- hospitalAreaCode = Global.inf.areaCode;
- }
- public DownLoad(JObject joParam)
- {
- InitializeComponent();
- int a = int.Parse(cbxInterface_down.SelectedValue.ToString());
- queryHISInsuDirectory(rbgDirecType.SelectedIndex, 1, 50, dgvDirectoy, a);
- }
- public void Dispose()
- {
- Dispose1(true);
- GC.SuppressFinalize(this);
- }
- protected virtual void Dispose1(bool disposing)
- {
- if (thread_test == null) return;
- if (disposed == false)
- {
- if (disposing == true)
- {
- Thread.Sleep(100);
- Global.writeLog("Main - aborting my thread.");
- thread_test.Abort();//终止线程myThread
- thread_test.Join();//等待线程myThread结束
- Global.writeLog("Main - ending.");
- }
- //
- //释放托管资源的代码
- }
- disposed = true;
- }
- private void uiButton3_Click(object sender, EventArgs e)
- {
- }
- private void btnExit_Click(object sender, EventArgs e)
- {
- Close();
- }
- private void FormDownLoad_Load(object sender, EventArgs e)
- {
- try
- {
- this.WindowState = FormWindowState.Maximized;
- ComboxSetter cbxSetter = new ComboxSetter();
- //cbxSetter.setCbxInterfaceDataSource(cbxInterface_down);
- cbxSetter.setCbxInterfaceDataSource(cbxInterface_down);
- this.cbxInterface_down.SelectedValueChanged += new System.EventHandler(this.cbxInterface_down_SelectedValueChanged);
- }
- catch (Exception ex)
- {
- MessageBox.Show("异常:" + ex.Message);
- }
- }
- private void btnQuery_Click(object sender, EventArgs e)
- {
- if ((rbgDirecType.SelectedIndex < 0) || (rbgDirecType.SelectedIndex > 20))
- {
- MessageBox.Show("请先选择查询类型!");
- return;
- }
- int a = int.Parse(cbxInterface_down.SelectedValue.ToString());
- queryHISInsuDirectory(rbgDirecType.SelectedIndex, 1, 50, dgvDirectoy, a);
- }
- private void queryHISInsuDirectory(int directoryType, int pageIndex, int count, Sunny.UI.UIDataGridView dgv, int directoryDr)
- {
- string code = "";
-
- if ((rbgDirecType.SelectedIndex <= 13)&& (rbgDirecType.SelectedIndex >0))
- {
- if (rbgDirecType.SelectedIndex == 8)
- code = "09010043";
- else if (rbgDirecType.SelectedIndex == 20)
- code = "090100XX"; //暂时未定义医疗机构下载Code
- else
- code = "09010042";
- queryInsuDirectory(pageIndex, count, directoryType + 1, directoryDr, code);
- setHeaderTxt(directoryType, dgv);
- }
- else if ((rbgDirecType.SelectedIndex > 13) && (rbgDirecType.SelectedIndex < 21)) //几个医保查询交易处理
- {
- string funNo = "";
- string sOutpar = "";
- HisBusiness hisBus = new HisBusiness();
- dynamic joData = new JObject();
- joData = GetInput(rbgDirecType.SelectedIndex, out funNo);
- if (hisBus.InsuMedQuery(joData, funNo, out sOutpar) != 0)
- {
- MessageBox.Show(sOutpar);
- return;
- }
- //处理调用查询接口医保返回JSON结果和展示
- //JObject joOutparam = JObject.Parse(sOutpar);
- //dtInsuInfo = (DataTable)joOutparam["output"].ToObject(typeof(DataTable));
- //dgvDirectoy.DataSource = dtInsuInfo;
- Sunny.UI.UIPagination pg;
- pg = pgDownload;
- JObject jo = (JObject)JsonConvert.DeserializeObject(sOutpar);
- JObject joOutparam = JObject.Parse(jo.ToString());
- DataTable dt;
- if (rbgDirecType.SelectedIndex == 20)
- {
- dt = (DataTable)joOutparam["result"]["body"]["output"]["medinsinfo"].ToObject(typeof(DataTable));
- }
- else
- {
- dt = (DataTable)joOutparam["result"]["body"]["output"].ToObject(typeof(DataTable));
- }
- //int totalCount = int.Parse(joOutparam["result"]["TotalCount"].ToString());
- //pg.TotalCount = totalCount;
- pg.TotalCount = int.Parse(TexBYSJL.Text);
- pg.PageSize = 50;
- dgv.DataSource = dt;
- dgv.Columns[0].ReadOnly = true;
- //生成DataView列
- setHeaderTxt(directoryType, dgv);
- }
- }
- private void queryInsuDirectory(int currentPage, int pageSize, int directoryType, int directoryDr, string code)
- {
- string dirCode = tbDirectoryCode.Text;
- string dirName = tbDircetoryName.Text;
- Sunny.UI.UIDataGridView dgv;
- Sunny.UI.UIPagination pg;
- dirCode = tbDirectoryCode.Text;
- dirName = tbDircetoryName.Text;
- dgv = dgvDirectoy;
- pg = pgDownload;
- IrisInterfaceService irisService = new IrisInterfaceService();
- JObject joRtn = irisService.getDirectoryByPagination(currentPage, pageSize, code, directoryType, dirCode, dirName, directoryDr);
- if (joRtn["errorCode"].ToString() != "0")
- {
- MessageBox.Show("IRIS数据返回错误:" + joRtn["errorMessage"].ToString());
- return;
- }
- if (joRtn["result"]["Data"] == null)
- {
- MessageBox.Show("该节点不存在");
- return;
- }
- if (joRtn["result"]["TotalCount"].ToString() == "0")
- {
- MessageBox.Show("未查询到数据");
- dgv.DataSource = null;
- return;
- }
- DataTable dt = (DataTable)joRtn["result"]["Data"].ToObject(typeof(DataTable));
- int totalCount = int.Parse(joRtn["result"]["TotalCount"].ToString());
- pg.TotalCount = totalCount;
- pg.PageSize = 50;
- dgv.DataSource = dt;
- dgv.Columns[0].ReadOnly = true;
- }
- /// <summary>
- /// 刷新窗体表格的数据
- /// </summary>
- /// <param name="directoryType"></param>
- /// <param name="dgv"></param>
- private void setHeaderTxt(int directoryType, Sunny.UI.UIDataGridView dgv)
- {
- GridViewSetter gvdSetter = new GridViewSetter();
- switch (directoryType)
- {
- case 0://药品
- {
- gvdSetter.SetHeaderTextOfDrug(dgv);
- break;
- }
- case 1://诊疗
- {
- gvdSetter.SetHeaderTextOfMedicalService(dgv);
- break;
- }
- case 2://材料
- {
- gvdSetter.SetHeaderTextOfMaterials(dgv);
- break;
- }
- case 3://疾病诊断
- {
- gvdSetter.SetHeaderTextOfDiagnose(dgv);
- break;
- }
- case 4://手术
- {
- gvdSetter.SetHeaderTextOfDiagnose(dgv);
- break;
- }
- case 5://慢性病
- {
- gvdSetter.SetHeaderTextOfDiagnose(dgv);
- break;
- }
- case 6://按病种付费病种
- {
- gvdSetter.SetHeaderTextOfDiagnose(dgv);
- break; ;
- }
- case 7://日间手术
- {
- gvdSetter.SetHeaderTextOfDiagnose(dgv);
- break; ;
- }
- case 8://字典表
- {
- gvdSetter.SetHeaderTextOfDictionary(dgv);
- break;
- }
- case 9://中药饮片下载
- {
- gvdSetter.SetHeaderTextOfChineseMedicine(dgv);
- break;
- }
- case 10://医药机构制剂目录下载
- {
- gvdSetter.SetHeaderTextOfPreparation(dgv);
- break;
- }
- case 11://肿瘤形态学下载
- {
- gvdSetter.SetHeaderTextOfTumorMorphology(dgv);
- break;
- }
- case 12://中医疾病下载
- {
- gvdSetter.GetChineseDiagnoseJsonByTxt(dgv);
- break;
- }
- case 13://中医证候下载
- {
- gvdSetter.GetTCMSyndromeJsonByTxt(dgv);
- break;
- }
-
- case 14://民族药品
- {
- gvdSetter.GetEthnicMedicineJsonByTxt(dgv);
- break;
- }
- case 15://目录信息查询
- {
- gvdSetter.GetMedInsuCatalogJsonByTxt(dgv);
- break;
- }
- case 16://医疗与医保目录匹配关系查询
- {
- gvdSetter.GetMedInsuCorrespondencJsonByTxt(dgv);
- break;
- }
- case 17://医药机构目录匹配查询
- {
- gvdSetter.GetMedInstCorrespondencJsonByTxt(dgv);
- break;
- }
- case 18://医保目录限价查询
- {
- gvdSetter.GetMedInsuFixedPriceJsonByTxt(dgv);
- break;
- }
- case 19://医保目录先自付比例下载
- {
- gvdSetter.GetMedInsuFirstPayProportionJsonByTxt(dgv);
- break;
- }
- case 20://医药机构信息
- {
- gvdSetter.GetMedicalInstitutionJsonByTxt(dgv);
- break;
- }
- }
- }
- private void cbxInterface_down_SelectedValueChanged(object sender, EventArgs e)
- {
- //int i = 0;
- //if (int.TryParse(cbxInterface_down.SelectedValue.ToString(), out i))
- //{ GlobalVariables.interfaceDr_Download = i; }
- //else
- //{
- // GlobalVariables.interfaceDr_Download = 0;
- //}
- GlobalVariables.interfaceDr_Download = int.Parse(cbxInterface_down.SelectedValue.ToString());
- IrisInterfaceService iris = new IrisInterfaceService();
- JObject joInterface = iris.getInterface(cbxInterface_down.SelectedValue.ToString());
- //赋值
- GlobalVariables.hospitalNO = (string)joInterface["HospitalNO"];
- GlobalVariables.hospitalDr = (int)joInterface["HospitalDr"];
- GlobalVariables.interfaceNO = (string)joInterface["InterfaceNO"];
- GlobalVariables.interfaceDr = (int)joInterface["ID"];
- GlobalVariables.centerURL = (string)joInterface["CenterURL"];
- GlobalVariables.businessDllName = (string)joInterface["DLLName"];
- GlobalVariables.patientMedInsuAreaCode = (string)joInterface["AreaCode"];
- }
- /// <summary>
- /// 主窗体关闭事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void DownLoad_FormClosed(object sender, FormClosedEventArgs e)
- {
- Dispose();
- }
- /// <summary>
- /// 下载按钮事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnDownload_Click(object sender, EventArgs e)
- {
- string errorMessage = string.Empty;
- HisBusiness hisBus = new HisBusiness();
- if ((rbgDirecType.SelectedIndex < 0)|| (rbgDirecType.SelectedIndex > 20))
- {
- MessageBox.Show("请先选择下载类型!");
- return;
- }
- //字典数据下载
- if (rbgDirecType.SelectedIndex == 8)
- {
- dynamic joData = new JObject();
- joData.type = tbDicType.Text;
- joData.parentValue = "";
- joData.admdvs = "";
- joData.date = tbDicDate.Text;
- joData.vali_flag = "";
- if (hisBus.downloadDicionary(joData, uiProcessBar1, out errorMessage) != 0)
- {
- MessageBox.Show(errorMessage);
- return;
- }
- }
- else if ((rbgDirecType.SelectedIndex > 13) && (rbgDirecType.SelectedIndex < 21))
- {
- //医疗机构信息下载并保存
- if (rbgDirecType.SelectedIndex == 20)
- {
- if (TexYYMC.Text == "")
- {
- MessageBox.Show("下载医疗机构信息,医院名称信息不能为空,可输入名称进行模糊匹配!");
- return;
- }
- string funNo = "";
- dynamic joData = new JObject();
- joData = GetInput(rbgDirecType.SelectedIndex, out funNo);
- if (hisBus.InsuMedQuery(joData, funNo, out errorMessage) == 0)
- {
- string code = "090100XX"; //暂时未定医疗机构新增Code
- Sunny.UI.UIPagination pg;
- pg = pgDownload;
- //调用IRIS接口服务保存医疗机构信息
- if (hisBus.MedicalInstitutionSave(errorMessage,code,out string sOutMsg) != 0)
- {
- MessageBox.Show(sOutMsg);
- return;
- }
- }
- else
- {
- MessageBox.Show(errorMessage);
- return;
- }
- }
- else //其它查询信息只下载查询不保存
- {
- string funNo = "";
- dynamic joData = new JObject();
- joData = GetInput(rbgDirecType.SelectedIndex, out funNo);
- if (hisBus.InsuMedQuery(joData, funNo, out errorMessage) != 0)
- {
- MessageBox.Show(errorMessage);
- return;
- }
- }
- }
- else //医保目录下载
- {
- if (rbSingleDown.Checked)
- {
- string ver = tbVer.Text;
- if (tbVer.Text != "")
- {
- ver = tbVer.Text;
- }
- if (hisBus.SingleDownload(ver, rbgDirecType.SelectedIndex, uiProcessBar1, out errorMessage) != 0)
- {
- MessageBox.Show(errorMessage);
- return;
- }
- }
- if (rbAutoDown.Checked)
- {
- if (hisBus.AutoDownload(rbgDirecType.SelectedIndex, uiProcessBar1, out errorMessage) != 0)
- {
- MessageBox.Show(errorMessage);
- return;
- }
- }
- }
- //下载完后刷新页面数据
- btnQuery_Click(sender, e);
- }
- private void rbgDirecType_ValueChanged(object sender, int index, string text)
- {
- //选定项不同调用的接口也不相同,Index值大于
- if (rbgDirecType.SelectedIndex > 13)
- {
- uiGroupBox1.Visible = false;
- uiGroupBox2.Visible = false;
- uiGroupBox4.Visible = false;
- uiGroupBox5.Visible = false;
- uiProcessBar1.Visible = false;
- uiGroupBox5.Visible = true;
- btnQuery.Visible = true;
- btnDownload.Visible = false;
- }
- else
- {
- uiGroupBox1.Visible = true;
- uiGroupBox2.Visible = true;
- uiGroupBox4.Visible = true;
- uiGroupBox5.Visible = true;
- uiGroupBox5.Visible = false;
- uiProcessBar1.Visible = true;
- btnQuery.Visible = false;
- btnDownload.Visible = true;
- }
- }
- /// <summary>
- /// 几个医保查询的交易组织入参
- /// </summary>
- /// <param name="Index"></param>
- /// <param name="funNo"></param>
- /// <returns></returns>
- private JObject GetInput(int Index, out string funNo)
- {
- funNo = "";
- dynamic joData = new JObject();
- switch (Index)
- {
- case 14://民族药品目
- {
- funNo = "1304";
- joData.med_list_codg = ""; //医疗目录编码
- joData.genname_codg = ""; //通用名编号
- joData.drug_genname = ""; //药品通用名
- joData.drug_prodname = ""; //药品商品名
- joData.reg_name = ""; //注册名称
- joData.tcmherb_name = ""; //中草药名称
- joData.mlms_name = ""; //药材名称
- joData.vali_flag = ""; //有效标志
- joData.rid = ""; //唯一记录号
- joData.ver = ""; //版本号
- joData.ver_name = ""; //版本名称
- joData.opt_begn_time = ""; //经办开始时间
- joData.opt_end_time = ""; //经办结束时间
- joData.updt_time = TexDate.Text; //更新时间
- joData.page_num = TexDQYS.Text; //当前页数
- joData.page_size = TexBYSJL.Text; //本页数据量
-
- break;
- }
- case 15://目录信息查询
- {
- funNo = "1312";
- joData.query_date = ""; //查询时间点
- joData.hilist_code = ""; //医保目录编码
- joData.insu_admdvs = ""; //参保机构医保区划
- joData.begndate = ""; //开始日期
- joData.hilist_name = ""; //医保目录名称
- joData.wubi = ""; //五笔助记码
- joData.pinyin = ""; //拼音助记码
- joData.med_chrgitm_type = ""; //医疗收费项目类别
- joData.chrgitm_lv = ""; //收费项目等级
- joData.lmt_used_flag = ""; //限制使用标志
- joData.list_type = ""; //目录类别
- joData.med_use_flag = ""; //医疗使用标志
- joData.matn_used_flag = ""; //生育使用标志
- joData.hilist_use_type = ""; //医保目录使用类别
- joData.lmt_cpnd_type = ""; //限复方使用类型
- joData.vali_flag = ""; //有效标志
- joData.updt_time = TexDate.Text; //更新时间
- joData.page_num = TexDQYS.Text; //当前页数
- joData.page_size = TexBYSJL.Text; //本页数据量
- break;
- }
- case 16://医疗与医保目录匹配
- {
- funNo = "1316";
- joData.query_date = ""; //查询时间点
- joData.medins_list_codg = ""; //定点医药机构目录编号
- joData.hilist_code = ""; //医保目录编码
- joData.list_type = ""; //目录类别
- joData.insu_admdvs = ""; //参保机构医保区划
- joData.begndate = ""; //开始日期
- joData.vali_flag = ""; //有效标志
- joData.updt_time = TexDate.Text; //更新时间
- joData.page_num = TexDQYS.Text; //当前页数
- joData.page_size = TexBYSJL.Text; //本页数据量
- break;
- }
- case 17://医药机构目录匹配
- {
- funNo = "1317";
- joData.query_date = ""; //查询时间点
- joData.fixmedins_code = ""; //定点医药机构编号
- joData.medins_list_codg = ""; //定点医药机构目录编号
- joData.medins_list_name = ""; //定点医药机构目录名称
- joData.insu_admdvs = ""; //参保机构医保区划
- joData.list_type = ""; //目录类别
- joData.med_list_codg = ""; //医疗目录编码
- joData.begndate = ""; //开始日期
- joData.vali_flag = ""; //有效标志
- joData.updt_time = TexDate.Text; //更新时间
- joData.page_num = TexDQYS.Text; //当前页数
- joData.page_size = TexBYSJL.Text; //本页数据量
- break;
- }
- case 18://医保目录限价
- {
- funNo = "1318";
- joData.query_date = ""; //查询时间点
- joData.hilist_code = ""; //医保目录编码
- joData.hilist_lmtpric_type = ""; //医保目录限价类型
- joData.overlmt_dspo_way = ""; //医保目录超限处理方式
- joData.insu_admdvs = ""; //参保机构医保区划
- joData.begndate = ""; //开始日期
- joData.enddate = ""; //结束日期
- joData.vali_flag = ""; //有效标志
- joData.rid = ""; //唯一记录号
- joData.tabname = ""; //表名
- joData.poolarea_no = ""; //统筹区
- joData.updt_time = TexDate.Text; //更新时间
- joData.page_num = TexDQYS.Text; //当前页数
- joData.page_size = TexBYSJL.Text; //本页数据量
- break;
- }
- case 19://医保目录先自付比例
- {
- funNo = "1319";
- joData.query_date = ""; //查询时间点
- joData.hilist_code = ""; //医保目录编码
- joData.selfpay_prop_psn_type = "";//医保目录自付比例人员类别
- joData.selfpay_prop_type = ""; //目录自付比例类别
- joData.insu_admdvs = ""; //参保机构医保区划
- joData.begndate = ""; //开始日期
- joData.enddate = ""; //结束日期
- joData.vali_flag = ""; //有效标志
- joData.rid = ""; //唯一记录号
- joData.tabname = ""; //表名
- joData.poolarea_no = ""; //统筹区
- joData.updt_time = TexDate.Text; //更新时间
- joData.page_num = TexDQYS.Text; //当前页数
- joData.page_size = TexBYSJL.Text; //本页数据量
- break;
- }
- case 20://医药机构信息
- {
- funNo = "1201";
- joData.fixmedins_type = "1"; //定点医疗服务机构类型 1定点医疗机构,2定点零售药店,3工伤定点康复机构,4辅助器具配置机构,5计划生育服务机构
- joData.fixmedins_name = ""; //定点医药机构名称
- joData.fixmedins_code = ""; //定点医药机构编号
- break;
- }
- }
- return joData;
- }
- private void AddDGVColumn(DataGridView dgv, string headerText, string dataPropertyName, int width = 120)
- {
- DataGridViewColumn newColumn = new DataGridViewTextBoxColumn();
- newColumn.HeaderText = headerText;
- newColumn.Width = width;
- newColumn.DataPropertyName = dataPropertyName;
- newColumn.Name = dataPropertyName;
- dgv.Columns.Add(newColumn);
- }
- private void setDgvColonum()
- {
- AddDGVColumn(dgvDirectoy, "余额", "balc", 80);
- AddDGVColumn(dgvDirectoy, "险种类型", "insutype", 200);
- AddDGVColumn(dgvDirectoy, "人员类别", "psn_type");
- AddDGVColumn(dgvDirectoy, "人员参保状态", "psn_insu_stas",300);
- AddDGVColumn(dgvDirectoy, "个人参保日期", "psn_insu_date", 300);
- AddDGVColumn(dgvDirectoy, "暂停参保日期", "paus_insu_date", 300);
- AddDGVColumn(dgvDirectoy, "公务员标志", "cvlserv_flag", 60);
- AddDGVColumn(dgvDirectoy, "参保地医保区划", "insuplc_admdvs", 200);
- AddDGVColumn(dgvDirectoy, "单位名称", "emp_name", 300);
- dgvDirectoy.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
- dgvDirectoy.ColumnHeadersHeight = 40;
- }
- }
- }
|