123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784 |
- using Newtonsoft.Json.Linq;
- using PTMedicalInsurance.Business;
- using PTMedicalInsurance.Helper;
- using PTMedicalInsurance.Variables;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Diagnostics;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace PTMedicalInsurance.Forms
- {
- public partial class OutPatientIntegratedServices : Form
- {
- private HisIrisServices hIS = new HisIrisServices();
- private MIIrisServices mIS = new MIIrisServices();
- private CenterBusiness cBus = new CenterBusiness();
- private XmlHelper xmler = new XmlHelper();
- private HisMainBusiness hBus = new HisMainBusiness();
- private YHComInvoker yhHelper = new YHComInvoker();
- private string aka130;
- private string inpar_48;
- private JObject joPatInfo;
- private JObject joDiagnoses;
- private JObject joFee;
- private JObject joSettlRtn;
- private int selectedPsnTypeIndex;
- public int rtnFlag = -1;
- public string rtnMsg; //返回的信息
- public DataTable DtDiagnose { get; set; }
- public DataTable DtSpecDise { get; set; }
- public DataTable DtPsnType { get; set; }
- #region 设置表格
- 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 setDgvPsnType()
- {
- AddDGVColumn(dgvPersonType, "城乡居民类别", "ykc296", 80);
- AddDGVColumn(dgvPersonType, "城乡居民类别名称", "YKC297", 200);
- AddDGVColumn(dgvPersonType, "开始时间", "AAE030");
- AddDGVColumn(dgvPersonType, "结束时间", "AAE031");
- dgvPersonType.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
- dgvPersonType.ColumnHeadersHeight = 20;
- }
- private void setDgvSpecDise()
- {
- AddDGVColumn(dgvSpeDise, "医院编码", "akb020", 80);
- AddDGVColumn(dgvSpeDise, "分中心", "YAB003", 200);
- AddDGVColumn(dgvSpeDise, "疾病编码", "YKA026");
- AddDGVColumn(dgvSpeDise, "病种名称", "YKA027");
- AddDGVColumn(dgvSpeDise, "开始时间", "AAE030");
- AddDGVColumn(dgvSpeDise, "结束时间", "AAE031");
- AddDGVColumn(dgvSpeDise, "拼音助记码", "YKA260", 60);
- AddDGVColumn(dgvSpeDise, "病种标志名称", "YKD112");
- AddDGVColumn(dgvSpeDise, ">补助标准", "YKA068", 300);
- AddDGVColumn(dgvSpeDise, ">病种标志编码", "YKD111", 300);
- dgvSpeDise.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 9, FontStyle.Bold);
- dgvSpeDise.ColumnHeadersHeight = 20;
- }
- #endregion
- public OutPatientIntegratedServices()
- {
- InitializeComponent();
- cbCardType.SelectedIndex = 1;
- cbAKA130.SelectedIndex = 0;
- dgvDiagnose.DataSource = DtDiagnose;
- rbGuiYang.Checked = true;
- setDgvPsnType();
- setDgvSpecDise();
- string errMsg = "";
- if (yhHelper.initYHCom(out errMsg) != 0)
- {
- rtnMsg = "初始化银海COM组件失败" + errMsg;
- Close();
- }
- if (GetAndShowDiagnoses(out errMsg) != 0)
- {
- rtnMsg = "获取诊断信息错误,请联系管理员!" + errMsg;
- MessageBox.Show(rtnMsg);
- }
- dgvDiagnose.DataSource = DtDiagnose;
- }
- #region 获取参保信息
- private int readCard(out string outParam)
- {
- outParam = "";
- string errorMsg = "";
- JObject joCardInfo = new JObject();
- try
- {
- JObject joInput = new JObject();
-
- if (rbGuiZhou.Checked)
- {
- Global.pat.patExtend.prm_yabtch = "9900";
- }
- if (rbGuiYang.Checked)
- {
- Global.pat.patExtend.prm_yabtch = "0100";
- }
- if (rbGongShang.Checked)
- {
- Global.pat.patExtend.prm_yabtch = "GS01";
- }
- JObject joTmp = new JObject();
- joTmp.Add("prm_payoptype", cbCardType.Text.Substring(0, 2));
- joTmp.Add("prm_yabtch", Global.pat.patExtend.prm_yabtch);
- if (yhHelper.invokeYHCom("03", joTmp, out errorMsg) != 0)
- {
- outParam = "读卡失败" + errorMsg;
- return -1;
- }
- else
- {
- outParam = errorMsg;
- return 0;
- }
- }
- catch (Exception ex)
- {
- outParam = "异常:" + ex.Message;
- return -1;
- }
- }
- private int ShowPatInsuInfo(string patInfo,out string msg)
- {
- msg = "";
- try
- {
- JObject joOutput = JObject.Parse(patInfo);
- JObject joPatInfo = JObject.FromObject(joOutput["output"]);
- rtbPatientInsuInfo.AppendText("01.个人编号:" + joPatInfo["prm_aac001"] + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("02.医疗人员类别:" + convertDictionaryValue("akc021", joPatInfo["prm_akc021"].ToString()) + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("03.公务员级别:" + convertDictionaryValue("ykc120", joPatInfo["prm_ykc120"].ToString()) + System.Environment.NewLine); //prm_ykc120
- rtbPatientInsuInfo.AppendText("04.参保所属分中心:" + joPatInfo["prm_yab139"] + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("05.执行社会保险办法:" + convertDictionaryValue("ykb065", joPatInfo["prm_ykb065"].ToString()) + System.Environment.NewLine); //prm_ykb065
- rtbPatientInsuInfo.AppendText("06.异地安置标志:" + convertDictionaryValue("ykc150", joPatInfo["prm_ykc150"].ToString()) + System.Environment.NewLine);//prm_ykc150
- rtbPatientInsuInfo.AppendText("07.姓名:" + joPatInfo["prm_aac003"] + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("08.性别:" + convertDictionaryValue("aac004", joPatInfo["prm_aac004"].ToString()) + System.Environment.NewLine);//prm_aac004
- rtbPatientInsuInfo.AppendText("09.公民身份号:" + joPatInfo["prm_aac002"] + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("10.出生日期:" + joPatInfo["prm_aac006"] + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("11.实足年龄:" + joPatInfo["prm_akc023"] + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("12.单位编号:" + joPatInfo["prm_aab001"] + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("13.单位名称:" + joPatInfo["prm_aab004"] + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("14.个人参保状态:" + convertDictionaryValue("aac031", joPatInfo["prm_aac031"].ToString()) + System.Environment.NewLine);//prm_aac031
- rtbPatientInsuInfo.AppendText("15.个人账户余额:" + joPatInfo["prm_akc087"] + System.Environment.NewLine);
- rtbPatientInsuInfo.AppendText("16.分中心编号:" + joPatInfo["prm_yab003"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("17.居民医疗人员类别:" + convertDictionaryValue("ykc280", joPatInfo["prm_ykc280"].ToString()) + System.Environment.NewLine);//prm_ykc280
- rtbPatientInsuInfo2.AppendText("18.居民医疗人员身份:" + convertDictionaryValue("ykc281", joPatInfo["prm_ykc281"].ToString()) + System.Environment.NewLine);//prm_ykc281
- rtbPatientInsuInfo2.AppendText("19.行政职务:" + joPatInfo["prm_aac020"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("20.住院状态:" + joPatInfo["prm_ykc023"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("21.电话:" + joPatInfo["prm_ aae005"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("22.地址:" + joPatInfo["prm_aae006"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("23.二维码:" + joPatInfo["prm_yae921"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("24.卡号:" + joPatInfo["prm_yac005"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("25.特殊病标识:" + convertDictionaryValue("symbol", joPatInfo["prm_symbol"].ToString()) + System.Environment.NewLine);//prm_symbol
- rtbPatientInsuInfo2.AppendText("26.是否待遇等待期:" + joPatInfo["prm_ykc101"] + System.Environment.NewLine);
- //rtbPatientInsuInfo2.AppendText("27.特殊疾病信息:" + joPatInfo["prm_ykc010"] + System.Environment.NewLine);
- //rtbPatientInsuInfo2.AppendText("28.人员类别:" + joPatInfo["prm_ykc296"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("29.二维码类型:" + joPatInfo["prm_qrcodetype"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("30.账户共济授权人编码:" + joPatInfo["prm_auther_no"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("31.账户共济授权人证件号码:" + joPatInfo["prm_auther_certno"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("32.账户共济授权人姓名:" + joPatInfo["prm_auther_name"] + System.Environment.NewLine, Color.Fuchsia, new Font("宋体", 12));
- rtbPatientInsuInfo2.AppendText("33.账户共济授权人参保区划:" + joPatInfo["prm_auther_insu_admdvs"] + System.Environment.NewLine);
- //rtbPatientInsuInfo2.AppendText("34.门诊统筹限额已累计金额:" + joPatInfo["prm_yka128"] + System.Environment.NewLine);
- rtbPatientInsuInfo2.AppendText("34.门诊统筹限额已累计金额:" + joPatInfo["prm_yka128"] + System.Environment.NewLine, Color.Fuchsia, new Font("宋体", 12));
- DataTable dt = null ;
- if (string.IsNullOrEmpty(joPatInfo["prm_ykc296"].ToString()))
- {
- }
- else
- {
- JObject joPsnType = JObject.FromObject(joPatInfo["prm_ykc296"]);
- dt = (DataTable)joPsnType["row"].ToObject(typeof(DataTable));
- DtPsnType = (DataTable)joPsnType["row"].ToObject(typeof(DataTable));
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- DataRow dr = dt.Rows[i];
- dr["ykc296"] = convertDictionaryValue("ykc296", dr["ykc296"].ToString());
- //dr["ykc296"] = "测试";
- }
- dgvPersonType.DataSource = dt;
- }
-
- if (string.IsNullOrEmpty(joPatInfo["prm_ykc010"].ToString()))
- { }
- else
- {
- JObject joSpecDise = JObject.FromObject(joPatInfo["prm_ykc010"]);
- DtSpecDise = (DataTable)joSpecDise["row"].ToObject(typeof(DataTable));
- dgvSpeDise.DataSource = DtSpecDise;
- }
- return 0;
- }
- catch (Exception ex)
- {
- msg = ex.Message;
- Global.writeLog("ShowPatInsuInfo", patInfo,msg);
- return -1;
- }
- }
- #endregion
- #region 获取诊断信息
- private int GetAndShowDiagnoses(out string outparam)
- {
- //调用服务获取门诊诊断信息
- outparam = "";
- if (hIS.getPatDiagnoses(Global.pat, out outparam) != 0)
- {
- return -1;
- }
- JObject joTmp = JObject.Parse(outparam);
- try
- {
- JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joTmp, "diseinfo"));
- //转换下主要诊断
- for (int i = 0; i < jaDiagnoses.Count; i++)
- {
- string diag_type = JsonHelper.getDestValue((JObject)jaDiagnoses[i], "diag_type");
- switch (diag_type)
- {
- case "1":
- {
- jaDiagnoses[i]["diag_type_name"] = new JObject();
- jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
- break;
- }
- case "2":
- {
- jaDiagnoses[i]["diag_type_name"] = new JObject();
- jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
- break;
- }
- case "3":
- {
- jaDiagnoses[i]["diag_type_name"] = new JObject();
- jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
- break;
- }
- case "4":
- {
- jaDiagnoses[i]["diag_type_name"] = new JObject();
- jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
- break;
- }
- }
- }
- //展示到界面
- DtDiagnose = (DataTable)jaDiagnoses.ToObject(typeof(DataTable));
- //组织门诊结算诊断入参
- JArray jaRow = new JArray();
- for (int i = 0; i < jaDiagnoses.Count; i++)
- {
- jaDiagnoses[i]["vali_flag"] = new JObject();
- jaDiagnoses[i]["vali_flag"] = "1";
- if (jaDiagnoses[i]["maindiag_flag"].ToString() == "1")
- {
- Global.pat.discDiagName = jaDiagnoses[i]["diag_name"].ToString();
- }
- jaRow.Add(jaDiagnoses[i]);
- }
- JObject joDiagRow = new JObject();
- joDiagRow.Add("row", jaRow);
- outparam = joDiagRow.ToString();
- return 0;
- }
- catch (Exception ex)
- {
- outparam = "登记界面显示异常:" + ex.Message;
- Global.writeLog("GetAndShowDiagnoses", joTmp.ToString(), outparam);
- return -1;
- }
- }
- #endregion
- #region 获取费用信息
- private int GetFee(out string outparam)
- {
- string hisFee;
- JObject jo = new JObject();
- try
- {
- //获取HIS费用
- if (hIS.getHisFee(Global.pat, out hisFee) != 0)
- {
- outparam = hisFee;
- return -1;
- }
- joFee = JObject.Parse(hisFee);
- //处理
- //调用医保平台转换HIS费用(转换医保编码等)
- JObject joHisFee = JObject.Parse(hisFee);
- if (mIS.convertHisFeeWithInsuCode(joHisFee, out outparam) != 0)
- {
- return -1;
- }
- JObject joRow = new JObject();
- JArray jaRow = new JArray();
- JArray jaFeeDetail = JArray.Parse(JsonHelper.getDestValue(JObject.Parse(outparam), "data"));
- decimal sumFee = 0;
- //转换
- for (int i = 0; i < jaFeeDetail.Count; i++)
- {
- decimal cnt = decimal.Parse(jaFeeDetail[i]["cnt"].ToString());
- decimal pric = decimal.Parse(jaFeeDetail[i]["pric"].ToString());
- decimal sumamt = decimal.Parse(jaFeeDetail[i]["det_item_fee_sumamt"].ToString());
- sumFee = sumFee + sumamt;
- JObject joTmp = new JObject();
- joTmp.Add("yka105", jaFeeDetail[i]["feedetl_sn"]);//记账流水号
- joTmp.Add("ykd125", jaFeeDetail[i]["medins_list_codg"]); //医院项目流水号
- joTmp.Add("ykd126", jaFeeDetail[i]["medins_list_codg"]); //医院项目名称
- joTmp.Add("yka002", jaFeeDetail[i]["med_list_codg"]);//医保通用项目编码
- joTmp.Add("yka003", jaFeeDetail[i]["med_list_codg"]);//医保通用项目名称
- joTmp.Add("akc226", cnt.ToString("#0.0000"));//数量
- joTmp.Add("akc225", pric.ToString("#0.000000"));//实际价格
- joTmp.Add("yka315", jaFeeDetail[i]["det_item_fee_sumamt"]);//明细项目费用总额
- joTmp.Add("yka097", jaFeeDetail[i]["bilg_dept_codg"]);//开单科室编码
- joTmp.Add("yka098", jaFeeDetail[i]["bilg_dept_name"]);//开单科室名称
- joTmp.Add("ykd102", jaFeeDetail[i]["bilg_dr_ID"]);//开单医生公民身份号码
- joTmp.Add("ykd103", jaFeeDetail[i]["bilg_dr_codg"]);//国家医保医生编码
- joTmp.Add("yka099", jaFeeDetail[i]["bilg_dr_name"]);//开单医生姓名
- joTmp.Add("yka100", jaFeeDetail[i]["acord_dept_codg"]);//受单科室编码
- joTmp.Add("yka101", jaFeeDetail[i]["acord_dept_name"]);//受单科室名称
- joTmp.Add("ykd106", jaFeeDetail[i]["orders_dr_ID"]);//受单医生公民身份号码
- joTmp.Add("yka102", jaFeeDetail[i]["orders_dr_name"]);//受单医生姓名
- joTmp.Add("yke123", jaFeeDetail[i]["fee_ocur_time"]);//明细发生时间
- joTmp.Add("ykc141", Global.user.name);//经办人姓名
- joTmp.Add("aae036", jaFeeDetail[i]["fee_ocur_time"]);//经办时间
- joTmp.Add("aae013", "");//备注
- joTmp.Add("akc229", "");//慢性病药品用药天数
- joTmp.Add("yke201", "");//中药使用方式
- joTmp.Add("yka295", "");//最小计价单位
- joTmp.Add("aka074", "");//规格
- joTmp.Add("aka070", "");//剂型
- joTmp.Add("yae374", "");//剂型名称
- joTmp.Add("yke009", "");//是否医院制剂
- joTmp.Add("yke186", "1");//医院审批标志
- joTmp.Add("yka821", jaFeeDetail[i]["hosp_appr_flag"]);//项目报销标志
- joTmp.Add("yka830", jaFeeDetail[i]["med_list_codg"]);//国家目录编码
- joTmp.Add("yka831", jaFeeDetail[i]["med_list_codg"]);//国家目录名称
- jaRow.Add(joTmp);
- }
- joRow.Add("row", jaRow);
-
- jo.Add("dataset", joRow);
- jo.Add("prm_hisfyze", sumFee.ToString("#0.00"));
- outparam = jo.ToString();
- return 0;
- }
- catch (Exception ex)
- {
- outparam = "获取费用异常:" + ex.Message;
- Global.writeLog("GetFee", jo.ToString(), "获取费用异常:" + ex.Message);
- return -1;
- }
- }
- #endregion
- #region 组织入参
- private int Set41Inpar(out string outparam)
- {
- outparam = "";
- JObject joInpar = new JObject();
- string errMsg = "";
- try
- {
- //获取诊断
- if(GetAndShowDiagnoses(out errMsg) != 0)
- {
- outparam = errMsg;
- return -1;
- }
- joInpar.Add("diselist", JObject.Parse(errMsg));
- //获取费用
- if (GetFee(out errMsg) != 0)
- {
- outparam = errMsg;
- return -1;
- }
- JObject joFee = JObject.Parse(errMsg);
- joInpar.Add("dataset", JObject.Parse(JsonHelper.getDestValue(joFee, "dataset")));
- joInpar.Add("prm_hisfyze", JsonHelper.getDestValue(joFee, "prm_hisfyze")); //费用总额
- //获取其他入参
- joInpar.Add("prm_akc190", "");//就诊编号
- joInpar.Add("prm_aac001", Global.pat.psn_no);//个人编号
- joInpar.Add("prm_ykc173", Global.pat.discDiagName);//门诊诊断信息
- joInpar.Add("prm_aka130", Global.pat.medType);//支付类别
- joInpar.Add("prm_yka110", "");//发票号
- joInpar.Add("prm_aae013", "");//备注
- joInpar.Add("prm_aae011", Global.user.ID);//经办人编码
- joInpar.Add("prm_ykc141", Global.user.name);//经办人姓名
- joInpar.Add("prm_ykb065", Global.pat.insuType);//执行社会保险办法
- joInpar.Add("ELEC_BILLNO_CODE", "");//电子票据号码
- joInpar.Add("ELEC_BILL_CODE", "");//电子票据代码
- joInpar.Add("ELEC_BILL_CHKCODE", "");//电子票据校验码
- joInpar.Add("prm_yabtch", Global.pat.patExtend.prm_yabtch);
- outparam = joInpar.ToString();
- return 0;
- }
- catch (Exception ex)
- {
- outparam = "设置41入参异常:" + ex.Message;
- Global.writeLog("", joInpar.ToString(), "设置41入参异常:" + ex.Message);
- return -1;
- }
- }
- private void Set48fInpar(out string outparam)
- {
- JObject joParam = new JObject();
- joParam.Add("prm_yae921", Global.pat.qrCodeID);//二维码ID
- joParam.Add("prm_aac001", Global.pat.psn_no);//个人编码
- joParam.Add("prm_count", 1);//HIS 本次就诊结算次数
- joParam.Add("prm_hisfyze", Global.settl.sumamt);//本次就诊总费用
- joParam.Add("prm_misecond", 10000);//等待患者确认响应时间
- joParam.Add("prm_yabtch", Global.pat.patExtend.prm_yabtch);
- outparam = joParam.ToString();
- }
- #endregion
- #region 存入MI
- private int saveToMi(out string errMsg)
- {
- errMsg = "";
- try
- {
- //存储参保信息
- JObject joBaseInfo = JObject.Parse(JsonHelper.getDestValue(joPatInfo, "output"));
- if (mIS.insertPatCurInsuInfo(joBaseInfo, out errMsg) != 0)
- {
- return -1;
- }
- //存储登记信息
- if (mIS.saveOutpatRegisterInfo(JObject.Parse(inpar_48), joSettlRtn, out errMsg) != 0)
- {
- return -1 ;
- }
- //存储费用信息
- if (mIS.insertFee(JArray.Parse(JsonHelper.getDestValue(joFee, "result")), out errMsg) != 0)
- {
- return -1 ;
- }
- return 0;
- }
- catch (Exception ex)
- {
- errMsg = "saveToMi:" + ex.Message;
- return -1;
- }
- }
- #endregion
- public delegate int MyInvoke(out string outParam);
- public delegate void test(object o);
- #region Button事件
- private void btReadCard_Click(object sender, EventArgs e)
- {
- string errMsg;
- try
- {
- //object[] o = new object[2];
- //mainThreadSynContext = new WindowsFormsSynchronizationContext();//当前主线程没有UI
- //mainThreadSynContext = SynchronizationContext.Current;//当前的主线程有UI
- //mainThreadSynContext.Post(new SendOrPostCallback(tt), o);//抛到主线程之中
- //errMsg = (string)o[1];
- //object[] o = new object[1];
- //int a = (int)this.Invoke(mi, o);
- //if (a != 0)
- //{
- // MessageBox.Show(this, (string)o[0]);
- // return;
- //}
- //string patInfo = (string)o[0];
- if (readCard(out errMsg) != 0)
- {
- MessageBox.Show(errMsg);
- return;
- }
- string patInfo = xmler.ToJSON(errMsg);
- //展示患者信息
- if (ShowPatInsuInfo(patInfo, out errMsg) != 0)
- {
- rtnMsg = "读卡提示:" + errMsg;
- MessageBox.Show(errMsg);
- return;
- };
- //设置全局变量
- joPatInfo = JObject.Parse(patInfo);
- if (hBus.setGlobalPatAfaterShowPatInfo(patInfo, out errMsg) != 0) MessageBox.Show("设置全局变量提示:" + errMsg);
- }
- catch (Exception ex)
- {
- MessageBox.Show("读卡异常:" + ex.Message);
- }
- }
- private void btSettlement_Click(object sender, EventArgs e)
- {
- try
- {
- //查询MIS是否有RecordID记录,如果有,则提示,并记录
- string sqlStr = $"SELECT 1 FROM SQLUser.BS_MedInsuSettlement WHERE Interface_Dr = {Global.inf.interfaceDr} AND Adm_Dr = '{Global.pat.adm_Dr}' AND RecordID ='{Global.pat.recordID}' ";
- JObject joSqlstr = new JObject();
- joSqlstr.Add("sqlStr", sqlStr);
- JObject joRecordRows = mIS.DynamicQuery(joSqlstr,"查询当前RecorID是否已存在数据!");
- if (JsonHelper.getDestValue(joRecordRows, "result.total") != "0")
- {
- MessageBox.Show("检测到存在重复结算,注意是否存在网络卡顿,延迟等情况,并即时向管理员反馈!");
- return;
- }
- if ((string.IsNullOrEmpty(Global.pat.psn_no)) || (string.IsNullOrEmpty(Global.pat.psn_no)) || (string.IsNullOrEmpty(Global.pat.psn_no)))
- {
- MessageBox.Show("未获取到有效的参保信息,请先点击读卡按钮!");
- return;
- }
- if (cbMutualAid.Checked && (string.IsNullOrEmpty(Global.pat.patExtend.prm_auther_certno) || string.IsNullOrEmpty(Global.pat.patExtend.prm_auther_no)))
- {
- MessageBox.Show("未检测到该患者有共济授权人,请取消勾选共济结算!!");
- return;
- }
- Global.pat.medType = cbAKA130.Text.Substring(0, cbAKA130.Text.IndexOf("."));
- Global.pat.payByQrCode = cbxQrCodePay.Checked;
- if (DtPsnType != null)
- {
- Global.pat.patExtend.ykc296 = DtPsnType.Rows[dgvPersonType.CurrentRow.Index]["ykc296"].ToString();
- }
- string errMsg = "";
- if (Global.pat.patExtend.prm_yabtch != "GS01")
- {
- ////事前分析
- if ((Global.curEvt.ext.isOpenAnalysis) && (Global.operationType == OperationType.SettlementOP))
- {
-
- if (hBus.PreAnalysis("1","", out errMsg) != 0)
- {
- MessageBox.Show(errMsg);
- return;
- }
- }
- }
- //组织入参
- if (Set41Inpar(out errMsg) != 0)
- {
- rtnMsg = errMsg;
- MessageBox.Show("Set41Inpar" + errMsg);
- return;
- }
- inpar_48 = errMsg;
- if (Global.pat.payByQrCode)
- {
- string inpar_48f;
- Set48fInpar(out inpar_48f);
- if (yhHelper.invokeYHCom("48f", JObject.Parse(inpar_48f), out errMsg) != 0)
- {
- MessageBox.Show(errMsg);
- rtnMsg = errMsg;
- return;
- }
- }
- //string inpar = xmler.ToXML(errMsg);
- //调用结算
- if (yhHelper.invokeYHCom("48", JObject.Parse(inpar_48), out errMsg) != 0)
- {
- MessageBox.Show(errMsg);
- rtnMsg = errMsg;
- return;
- }
- //将主结算的jylsh,jyyzm保存
- string mainJylsh = Global.curEvt.msgid;
- string mainJyyzm = Global.curEvt.jyyzm;
- //存储结算信息
- Global.pat.admType = 1; //门诊标志
- joSettlRtn = JObject.Parse(xmler.ToJSON(errMsg));
- Global.pat.mdtrtID = JsonHelper.getDestValue(joSettlRtn, "output.prm_akc190");
- //返回给云医保平台结算信息
- if (mIS.saveSettlement(joSettlRtn, out errMsg) != 0)
- {
- rtnMsg = "结算成功,但云医保平台保存失败" + errMsg;
- yhHelper.cancleYHCom(out errMsg);
- MessageBox.Show(rtnMsg);
- return;
- }
- JObject joSettlement = JObject.Parse(errMsg);
- //相关信息存到医保平台
- saveToMi(out errMsg);
- //如果有共济支付,进行共济支付结算
- if (cbMutualAid.Checked)
- {
- decimal psnCashPay = decimal.Parse(JsonHelper.getDestValue(joSettlRtn, "output.psn_cash_pay"));
- if (psnCashPay == 0)
- {
- MessageBox.Show("该患者自付金额为0,不需要进行共济支付!");
- }
- else
- {
- //开启自付界面,因涉及到多次自付
- JObject joMa = new JObject();
- joMa.Add("setl_id", JsonHelper.getDestValue(joSettlRtn, "output.prm_yka103"));
- joMa.Add("psnCashPay", psnCashPay);
- joMa.Add("MainSettlInfo", joSettlRtn);
- MutualAid frmMA = new MutualAid(joMa);
- if (frmMA.dtSumumt.Rows.Count != 0)
- {
- frmMA.WindowState = FormWindowState.Maximized;
- if (frmMA.ShowDialog() == DialogResult.OK)
- {
- joSettlement = JObject.Parse(frmMA.finalSettlementInfo);
- joSettlRtn = frmMA.joMainSettlInfo;
- }
- else
- {
- rtnMsg = "开启共济支付失败,原因为收款员取消共济支付!";
- MessageBox.Show(rtnMsg);
- return;
- }
- }
- else
- {
- rtnMsg = "开启共济支付失败,原因为未检测到有效的被共济人的医保结算数据!";
- MessageBox.Show(rtnMsg);
- return;
- }
- }
- }
- //返回给HIS
- if (hIS.returnOutpatSettlementInfo(joSettlement, joSettlRtn, out errMsg) != 0)
- {
- rtnMsg = "返回结算信息给HIS" + errMsg;
- yhHelper.cancleYHCom(out errMsg);
- MessageBox.Show(rtnMsg);
- return;
- }
- string rtnHis = errMsg;
- //确认中心结算
- Global.curEvt.jyyzm = mainJyyzm;
- Global.curEvt.msgid = mainJylsh;
- if (yhHelper.confirmYHCom(out errMsg) != 0)
- {
- rtnMsg = "中心确认失败" + errMsg;
- yhHelper.cancleYHCom(out errMsg);
- MessageBox.Show(rtnMsg);
- return;
- }
- else
- {
- JObject joHisServieRtn = JObject.Parse(rtnHis);
- hBus.returnToFrontEndAfterSettlement(joSettlement, joHisServieRtn, out rtnHis);
- rtnMsg = JsonHelper.setIrisReturnValue(0, "结算成功", JObject.Parse(rtnHis)).ToString();
- rtnFlag = 0;
- Close();
- return;
- }
- }
- catch (Exception ex)
- {
- Global.writeLog(ex.Message);
- throw;
- }
- }
- private void btExit_Click(object sender, EventArgs e)
- {
- Close();
- }
- #endregion
- #region 转换
- private string convertDictionaryValue(string type, string code)
- {
- try
- {
- JObject joRtn = mIS.getSpecDictionary(Global.inf.interfaceDr.ToString(), type, code);
- string errMsg = "";
-
- JArray ja = JArray.Parse(JsonHelper.getDestValue(joRtn, "result.data"));
- if (ja.Count == 1)
- {
- return ja[0]["name"].ToString();
- }
- else
- {
- return code;
- }
-
- }
- catch (Exception ex)
- {
- Global.writeLog("convertDictionaryValue",ex.Message,"");
- return code;
- }
-
- }
- #endregion
- private void rbGongShang_CheckedChanged(object sender, EventArgs e)
- {
- if (rbGongShang.Checked)
- {
- cbAKA130.SelectedIndex = 10;
- }
- else
- {
- cbAKA130.SelectedIndex = 0;
- }
- }
- }
- public static class RichTextBoxColorExtensions
- {
- public static void AppendText(this Sunny.UI.UIRichTextBox rtb, string text, Color color, Font font, bool isNewLine = false)
- {
- rtb.SuspendLayout();
- rtb.SelectionStart = rtb.TextLength;
- rtb.SelectionLength = 0;
- rtb.SelectionColor = color;
- rtb.SelectionFont = font;
- rtb.AppendText(isNewLine ? $"{text}{ Environment.NewLine}" : text);
- rtb.SelectionColor = rtb.ForeColor;
- rtb.ScrollToCaret();
- rtb.ResumeLayout();
- }
- }
- }
|