using Newtonsoft.Json.Linq; using PTMedicalInsurance.Common; using PTMedicalInsurance.Entity; using PTMedicalInsurance.Entity.Local; using PTMedicalInsurance.Forms; using PTMedicalInsurance.Helper; using PTMedicalInsurance.Variables; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace PTMedicalInsurance.Business { class PatientService { protected HisMainBusiness hBus = new HisMainBusiness(); protected InvokeHelper invoker = new InvokeHelper(); /// /// 读卡 /// /// public int readCard(out string outParam) { outParam = ""; JObject joCardInfo = new JObject(); ChooseCard cc = new ChooseCard(); JObject joRtn = new JObject(); JObject joInput = new JObject(); try { if (cc.ShowDialog() == DialogResult.OK) { Global.businessType = ""; Utils.GetInsuCode(); Global.pat.certType = "01"; //电子凭证 if (cc.cardType == "01") { Global.pat.mdtrtcertType = "01"; Global.businessType = cc.businessType; tradeEcToken(out outParam); //return trade1161(out outParam); return 0; } //身份证 if (cc.cardType == "02") { if (cc.ID == "") { Global.pat.mdtrtcertType = "02"; Global.pat.name = ""; } else { Global.pat.mdtrtcertType = "02"; //读身份证 CardReader reader = new CardReader(); int rtn = reader.ReadSFZ(out outParam); if (rtn == 0) { trade1101(out outParam); } } return 0; } //社保卡 if (cc.cardType == "03") { #region 调用读卡接口信息 Global.pat.mdtrtcertType = "03"; //return trade1161(out outParam); CardReader reader = new CardReader(); int rtn = reader.ReadCardBas(out outParam); if(rtn ==0) { trade1101(out outParam); } return rtn; #endregion } } else { outParam = JsonHelper.setExceptionJson(-1, "读卡", "取消读卡").ToString(); return -1; } return 0; } catch (Exception ex) { outParam = "异常:" + ex.Message; return -1; } } /// /// 通过电子凭证获取基本信息 /// /// /// public int tradeEcToken(out string outParam) { //cardInfo outParam = ECTokenReader.ECQuery("1"); trade1101(out outParam); return 0; } /// /// 通过证件号获取基本信息(无卡) /// /// /// /// public int trade1101(out string outParam) { outParam = ""; string errorMsg = ""; JObject joInput = new JObject(); JObject joData = new JObject(); joData.Add("mdtrt_cert_type", Global.pat.mdtrtcertType); joData.Add("mdtrt_cert_no", Utils.ConvertMdtrtcertNo()); joData.Add("card_sn", Global.pat.card.SN); joData.Add("begntime", Utils.GetDateTimeNow()); joData.Add("psn_cert_type", Global.pat.certType); joData.Add("certno", Global.pat.certNO); //证件号码 joData.Add("psn_name", Global.pat.name); joInput.Add("data", joData); InvokeHelper invoker = new InvokeHelper(); JObject joRtn = invoker.invokeCenterService(TradeEnum.PatientInfo, joInput); if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0) { outParam = "获取病人信息失败:" + errorMsg; return -1; } else { outParam = joRtn.ToString(); parsePatient(joRtn); return 0; } } /// /// 读卡并获取基本信息 /// /// /// public int trade1161( out string outParam) { outParam = ""; string errorMsg = ""; JObject joInput = new JObject(); joInput.Add("begntime", Utils.GetDateTimeNow()); JObject joRtn = new JObject(); joRtn = invoker.invokeCenterService(TradeEnum.ReadCardInfo, joInput); if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0) { outParam = "读卡失败:" + errorMsg; return -1; } else { parsePatient(joRtn); outParam = joRtn.ToString(); } return 0; } /// /// 解析人员基本信息 /// /// public void parsePatient(JObject joRtn) { // 基线版 PersonCardInfo info = JsonHelper.getOutput(joRtn); Global.pat.card.NO = info.cardInfo?.cardno; Global.pat.card.SN = info.cardInfo?.card_sn; Global.pat.card.Cardtoken = info.cardInfo?.ecToken; Global.pat.ecToken = info.cardInfo?.ecToken; //Global.writeLog("病人信息:"+joRtn.ToString()); if (info.insuInfo != null && info.insuInfo.Length > 0) { //参保地 Global.pat.insuplc_admdvs = info.insuInfo[0].insuplc_admdvs; Global.pat.insuplc_name = info.insuInfo[0].insuplc_name; Global.pat.medType = info.insuInfo[0].med_type ?? "C"; } //证件号 Global.pat.certNO = info.baseInfo?.certno; // 人员证件类型 Global.pat.certType = info.baseInfo?.psn_cert_type; // 就诊类型 if(string.IsNullOrEmpty(Global.pat.mdtrtcertType)) { Global.pat.mdtrtcertType = "03"; } // 就诊凭证号 if (!string.IsNullOrEmpty(Global.pat.card.NO)) { Global.pat.mdtrtcertNO = Global.pat.card.NO; } if (string.IsNullOrEmpty(Global.pat.mdtrtcertNO)) { Global.pat.mdtrtcertNO = Global.pat.certNO; } Global.pat.payOrdId = info.platformOrderNo; } /// /// 读卡并展示病人信息 /// /// /// public string readPatientInfo(out string outParam) { string patInfo = ""; //打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息 if (readCard(out outParam) != 0) { outParam = JsonHelper.setExceptionJson(-100, "读卡失败!", outParam).ToString(); return outParam; } else { patInfo = outParam; //展示患者信息界面(合并到后面登记界面) //if (hBus.showPatInfo(patInfo, out outParam) != 0) //{ // return JsonHelper.setExceptionJson(-100, "操作员取消!", outParam).ToString(); //} hBus.convertPatientInfo(patInfo, out outParam); } #region 展示患者信息 //患者信息赋值给全局变量 string errMsg = ""; if (hBus.setGlobalPatAfaterShowPatInfo(outParam, out errMsg) != 0) { return JsonHelper.setExceptionJson(-1, "setGlobalPatAfaterShowPatInfo", errMsg).ToString(); } //校验HIS姓名与医保姓名是否一致 if (hBus.checkName(Global.pat.name, out errMsg) != 0) { return JsonHelper.setExceptionJson(-1, "校验HIS与医保姓名是否一致", errMsg).ToString(); } #endregion return "0"; } } }