/****************************************************************************** * 文件名称: CardReader.cs * 文件说明: 读卡的封装,包括社保卡,身份证,电子凭证等等 * 当前版本: V1.0 * 创建日期: 2022-06-25 * * * 2020-06-20: 增加 IrisServices 类(基类) * ***** 2020-06-25: 增加 CardReader 方法,获取URL地址,USER信息,地方版SSCard.dll使用 * ***** 2020-06-25: 增加 CardReader 方法重载,国家版电子凭证使用 * * * * 2020-06-20: 增加 HisIrisServices 类(子类) * ***** 2020-06-25: 增加 CardReader 方法,获取URL地址,USER信息,地方版SSCard.dll使用 * ***** 2020-06-25: 增加 CardReader 方法重载,国家版电子凭证使用 * * * * 2020-06-20: 增加 MIIrisServices 类(子类) * ***** 2020-06-25: 增加 CardReader 方法,获取URL地址,USER信息,地方版SSCard.dll使用 * ***** 2020-06-25: 增加 CardReader 方法重载,国家版电子凭证使用 ******************************************************************************/ using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using PTMedInsuInterface.Variables; using PTMedInsuInterface.Helper; using System.Windows.Forms; namespace PTMedInsuInterface.Business { class HisIrisServices { public JObject getHospital() { dynamic joParam = new JObject(); joParam.hospID = ""; joParam.logonHospID = Global.inf.hospitalDr; JObject joInparam = JsonHelper.setIrisInpar("09010039", joParam); InvokeHelper invoker = new InvokeHelper(); return invoker.invokeHISService(joInparam.ToString(), "获取医院列表"); } } class MIIrisServices { public int getPlatformHospitalDr(string hospID, out string hospDr) { string sqlStr = "SELECT * FROM CB_HOSPITAL WHERE HisHospital_Dr = " + hospID; JObject joParam = new JObject(); JObject joRtn = new JObject(); JObject joOutparam; string errorMsg = ""; hospDr = ""; try { InvokeHelper invoke = new InvokeHelper(); joParam.Add("sqlStr", sqlStr); JObject joInparam = JsonHelper.setIrisInpar("01030001", joParam); joOutparam = invoke.invokeInsuService(joInparam.ToString(), "获取平台医院信息"); if (JsonHelper.parseIrisRtnValue(joOutparam, out errorMsg) != 0) { hospDr = joOutparam["errorMessage"].ToString(); return -1; } if (int.Parse(joOutparam["result"]["total"].ToString()) == 0) { hospDr = "平台未返回数据,请检查医保平台是否维护了医院信息!若维护了则检查是否跟HIS平台做了对照处理!"; return -1; } if (int.Parse(joOutparam["result"]["total"].ToString()) != 1) { hospDr = "平台返回多条数据,请检查医院信息!"; return -1; } JArray jaParams = new JArray(); jaParams = JArray.FromObject(joOutparam["result"]["rows"]); hospDr = jaParams[0]["hospitalID"].ToString(); return 0; } catch (Exception ex) { hospDr = "获取接口信息异常!" + ex.Message; return -1; } } /// /// 获取接口信息 /// /// public JObject getInterface() { dynamic joParam = new JObject(); joParam.HospitalDr = Global.inf.hospitalDr; joParam.InterfaceID = ""; joParam.UseFlag = "True"; JObject joInparam = JsonHelper.setIrisInpar("09010003", joParam); InvokeHelper invoker = new InvokeHelper(); return invoker.invokeInsuService(joInparam.ToString(), "获取接口信息"); } /// /// 获取自助机启动接口信息 /// /// public JObject getSelfServiceInterface() { dynamic joParam = new JObject(); joParam.HospitalDr = Global.inf.hospitalDr; joParam.InterfaceID = ""; joParam.UseFlag = "True"; joParam.SelfServiceFlag = "1"; JObject joInparam = JsonHelper.setIrisInpar("09010003", joParam); return getInterface(joParam, "获取自助机启动目录信息"); } public JObject getspecifiedInterface(int HospDr, int InterfaceDr) { dynamic joParam = new JObject(); joParam.HospitalDr = HospDr; joParam.InterfaceID = InterfaceDr; return getInterface(joParam, "获取指定接口信息"); } /// /// 获取指定接口信息 /// /// /// //public JObject getspecifiedInterface(int HospDr, int InterfaceDr) //{ // JObject joRtn = new JObject(); // JObject joInparam = new JObject(); // string errorMsg = ""; // try // { // InvokeHelper invoke = new InvokeHelper(); // dynamic joParam = new JObject(); // joParam.HospitalDr = HospDr; // joParam.InterfaceID = InterfaceDr; // joInparam = JsonHelper.setIrisInpar("09010003", joParam); // JObject joOutparam = invoke.invokeInsuService(joInparam.ToString(), "获取指定接口信息"); // if (JsonHelper.parseIrisRtnValue(joOutparam, out errorMsg) != 0) // { // return joOutparam; // } // JArray jaParams = new JArray(); // jaParams = JArray.FromObject(joOutparam["result"]["data"]); // JToken _token = jaParams[0]; // if (_token is null) // { // joRtn = JsonHelper.setExceptionJson(-100, "获取接口信息失败!", "返回值为空"); // } // if (_token.Type == JTokenType.String) // { // joRtn = JsonHelper.setExceptionJson(-100, "获取接口信息失败!返回值为字符串", _token.ToString()); // } // else //if (_token.Type == JTokenType.Object) // { // JObject joResult = JObject.FromObject(_token); // if (Global.curEvt.MIVer == "1") // { // joRtn = JsonHelper.setIrisReturnValue(0,"", joResult); // return joRtn; // } // dynamic joIn = new JObject(); // joIn.interfaceDr = JsonHelper.getDestValue(joResult, "ID"); // joIn.insuRegionDr = JsonHelper.getDestValue(joResult, "InsuRegionDr"); // JObject joInpar = JsonHelper.setIrisInpar("09010075", joIn); // JObject joOut = invoke.invokeInsuService(joInpar.ToString(), "获取医保区域信息"); // string insuRegionInterfaceDr = "", errorMessage = ""; // if (JsonHelper.parseIrisRtnValue(joOut, out errorMessage) != 0) // { // insuRegionInterfaceDr = ""; // } // else // { // insuRegionInterfaceDr = JsonHelper.getDestValue(joOut, "result.InsuRegionInterfaceDr"); // } // joResult.Add("insuRegionInterfaceDr", insuRegionInterfaceDr); // joRtn.Add("errorCode", 0); // joRtn.Add("errorMessage", ""); // joRtn.Add("result", joResult); // } // return joRtn; // } // catch (Exception ex) // { // joRtn = JsonHelper.setExceptionJson(-100, "获取接口信息异常!", ex.Message ); // Global.writeLog("getspecifiedInterface",joInparam.ToString(),joRtn.ToString()); // return joRtn; // } //} private JObject getInterface(JObject jo,string desc) { JObject joRtn = new JObject(); JObject joInparam = new JObject(); string errorMsg ; try { InvokeHelper invoke = new InvokeHelper(); joInparam = JsonHelper.setIrisInpar("09010003", jo); JObject joOutparam = invoke.invokeInsuService(joInparam.ToString(), desc); if (JsonHelper.parseIrisRtnValue(joOutparam, out errorMsg) != 0) { return joOutparam; } JArray jaParams = new JArray(); jaParams = JArray.FromObject(joOutparam["result"]["data"]); if (jaParams.Count == 0) { joRtn = JsonHelper.setExceptionJson(-100, "getInterface", "获取接口信息失败!返回数组为空!请检查 SelfServiceFlag 标志是否开启或者传入参数是否正确!"); return joRtn; } //取第一个 JToken _token = jaParams[0]; if (_token is null) { joRtn = JsonHelper.setExceptionJson(-100, "获取接口信息失败!", "返回值为空"); } if (_token.Type == JTokenType.String) { joRtn = JsonHelper.setExceptionJson(-100, "获取接口信息失败!返回值为字符串", _token.ToString()); } else { JObject joResult = JObject.FromObject(_token); if (Global.curEvt.MIVer == "1") { joRtn = JsonHelper.setIrisReturnValue(0, "", joResult); return joRtn; } dynamic joIn = new JObject(); joIn.interfaceDr = JsonHelper.getDestValue(joResult, "ID"); joIn.insuRegionDr = JsonHelper.getDestValue(joResult, "InsuRegionDr"); JObject joInpar = JsonHelper.setIrisInpar("09010075", joIn); JObject joOut = invoke.invokeInsuService(joInpar.ToString(), "获取医保区域信息"); string insuRegionInterfaceDr = "", errorMessage = ""; if (JsonHelper.parseIrisRtnValue(joOut, out errorMessage) != 0) { insuRegionInterfaceDr = ""; } else { insuRegionInterfaceDr = JsonHelper.getDestValue(joOut, "result.InsuRegionInterfaceDr"); } joResult.Add("insuRegionInterfaceDr", insuRegionInterfaceDr); joRtn.Add("errorCode", 0); joRtn.Add("errorMessage", ""); joRtn.Add("result", joResult); } return joRtn; } catch (Exception ex) { joRtn = JsonHelper.setExceptionJson(-100, "获取接口信息异常!", ex.Message); Global.writeLog(desc, joInparam.ToString(), joRtn.ToString()); return joRtn; } } } }