/******************************************************************************
* 文件名称: 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;
}
}
}
}