/******************************************************************************
* 文件名称: CenterBusiness.cs
* 文件说明: 中心交易封装
* 当前版本: V1.0
* 创建日期: 2022-06-20
*
* * 2020-06-20: 增加 CenterBusiness 类
* ***** 2020-06-20: 增加 CardReader 方法,获取URL地址,USER信息,地方版SSCard.dll使用
* ***** 2020-06-20: 增加 CardReader 方法重载,国家版电子凭证使用
* ***** 2020-06-20: 增加 Init 方法,SSCard环境初始化
******************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using PTMedicalInsurance.Common;
using PTMedicalInsurance.Helper;
using PTMedicalInsurance.Variables;
namespace PTMedicalInsurance.Business
{
class CenterBusiness
{
private InvokeHelper invoker = new InvokeHelper();
///
/// 医保相关查询交易-不需要下载文件解析
///
///
///
public JObject InvokeMedicalInsuranceInquiry(string funNO, JObject joInData)
{
try
{
JObject joInput = new JObject();
if (funNO != "1201")
joInput.Add("data", joInData);
else
joInput.Add("medinsinfo", joInData);
return invoker.invokeCenterService(funNO, joInput);
}
catch (Exception ex)
{
//封装返回值的格式 {"errorCode":"-1","errorMessage":"InvokeMedicalInsuranceInquiry+异常信息"}
return JsonHelper.setExceptionJson(-1, "InvokeMedicalInsuranceInquiry:", ex.Message);
}
}
#region 目录下载
///
/// 下载业务(1301-1309),返回会的JSON串中包含解压后的TXT地址
///
///
///
///
///
public JObject DownDictionay(JObject joData)
{
string outparam = "";
try
{
dynamic joData1 = new JObject();
//joData1.type = "CHNL_CODE";
//joData1.parentValue = "";
//joData1.admdvs = "";
//joData1.date = "2020-01-01";
//joData1.vali_flag = "";
Global.pat.insuplc_admdvs = "440100";
dynamic joParam = new JObject();
joParam.data = joData;
JObject joRtn = invoker.invokeCenterService("1901", joParam);
outparam = joRtn.ToString();
return joRtn;
}
catch (Exception ex)
{
JObject joRtn = JsonHelper.setExceptionJson(-1, "DownDictionay:", ex.Message);
outparam = joRtn.ToString();
return joRtn;
}
}
///
/// 下载业务(1301-1309),返回会的JSON串中包含解压后的TXT地址
///
///
///
///
///
public JObject DownDirecotry(string funNO, string ver)
{
try
{
dynamic joTmp = new JObject();
joTmp.ver = ver;
JObject joData = new JObject {
{ "data",joTmp}
};
return invoker.invokeCenterService(funNO, joData);
}
catch (Exception ex)
{
return JsonHelper.setExceptionJson(-1, "DownDirecotry:", ex.Message);
}
}
///
/// 91021保存文件
///
///
/// 正常返回结果同中心文档,异常返回结果同HIS
public JObject SaveFile(JObject jo)
{
try
{
string filename = JsonHelper.getDestValue(jo, "output.filename");
string file_qury_no = JsonHelper.getDestValue(jo, "output.file_qury_no");
string data_cnt = JsonHelper.getDestValue(jo, "output.data_cnt");
dynamic jo9102InParam = new JObject();
dynamic jofsDownloadIn = new JObject();
jofsDownloadIn.filename = filename;
jofsDownloadIn.file_qury_no = file_qury_no;
jofsDownloadIn.fixmedins_code = Global.inf.hospitalNO;
jo9102InParam.fsDownloadIn = jofsDownloadIn;
return invoker.DownloadCenterFile(JsonHelper.setCenterInpar("9102", jo9102InParam.ToString()));
//return invoker.invokeCenterService("9102", jo9102InParam.ToString());
}
catch (Exception ex)
{
return JsonHelper.setExceptionJson(-1, "9102保存文件", ex.Message);
}
}
#endregion
///
/// 签到
///
///
public int signIn(out JObject joRtn)
{
string outParam = "";
string inParam = "";
try
{
Global.curEvt.mac = "11-11-11-11-11";
Global.curEvt.ip = "11.11.11.11";
//string password = "Gzyb$867";
string password = Global.inf.password;
Global.writeLog($"password:{password}");
string currenttime = DateTime.Now.ToString("yyyyMMddHHmmss");
password = Encrypt.GetMD5(currenttime + password).ToUpper();
dynamic jsonSignIn = new JObject();
dynamic jsonInput = new JObject();
jsonSignIn.opter_no = Global.user.ID;
jsonSignIn.mac = Global.curEvt.mac;
jsonSignIn.ip = Global.curEvt.ip;
jsonSignIn.password = password; // "682EB392C797F9E18904E00D5C37111D";
//if (Global.inf.hospitalNO == "H44010400081")
//{
//jsonSignIn.userid = Global.inf.hospitalNO; }
// else
// {
// jsonSignIn.userid = "023166";
// }
jsonSignIn.userid = Global.inf.userid;
jsonSignIn.currenttime = currenttime;
jsonInput.data = jsonSignIn;
outParam = invoker.invokeCenterService("9001", jsonInput).ToString();
joRtn = JObject.Parse(outParam);
if (joRtn["infcode"].ToString() == "0")
{
Global.curEvt.signno = JsonHelper.getDestValue(joRtn, "output.result.sign_no");
return 0;
}
else
{
//joRtn = JsonHelper.getIrisExceptionJson(-100, "签到异常", (string)joRtn["err_msg"]);
Global.curEvt.signno = "";
return -1;
}
}
catch (Exception ex)
{
joRtn = new JObject();
joRtn.Add("infcode", -1);
joRtn.Add("err_msg", outParam + ex.Message);
//joRtn = JsonHelper.getIrisExceptionJson(-100,"签到异常", outParam + ex.Message);
return -2;
}
}
public int Authenticate(out string outPar)
{
outPar = "";
try
{
JObject joData = new JObject();
joData.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
joData.Add("card_sn", Global.pat.card.SN);
joData.Add("card_pwd", Global.pat.card.password);
joData.Add("psn_cert_type", Global.pat.certType);
joData.Add("certno", Global.pat.card.NO);
joData.Add("real_certno", Global.pat.certNO);
joData.Add("card_lv", Global.pat.card.level);
joData.Add("psn_name", Global.pat.name);
joData.Add("extra", "");
JObject joInput = new JObject();
joInput.Add("data",joData);
string funNO = "1160";
JObject joRtn = invoker.invokeCenterService(funNO, joInput);
string errMsg;
if (JsonHelper.parseCenterRtnValue(joRtn,out errMsg) != 0)
{
outPar = errMsg;
return -1;
}
else
{
outPar = joRtn.ToString();
return 0;
}
}
catch (Exception ex)
{
return -1;
}
}
//就医特殊属性上传
public int UploadAdmSpecAttribute(out string outPar)
{
outPar = "";
if (string.IsNullOrEmpty(Global.pat.specAttribute))
{
outPar = "患者就医特殊属性(specAttribute)为空!";
return -1;
}
try
{
JObject joData = new JObject();
joData.Add("mdtrt_id", Global.pat.mdtrtID);
joData.Add("psn_no", Global.pat.psn_no);
joData.Add("psn_cert_type", Global.pat.certType);
joData.Add("certno", Global.pat.certNO);
joData.Add("psn_name", Global.pat.name);
joData.Add("ipt_otp_no", Global.pat.adm_Dr);
joData.Add("ipt_psn_sp_flag_type", Global.pat.specAttribute);
joData.Add("ipt_psn_sp_flag", 1);
joData.Add("memo", "");
joData.Add("admdvs", Global.pat.insuplc_admdvs);
JObject joInput = new JObject();
joInput.Add("IptPsnSpFlagRegIn", joData);
string funNO = "2406";
JObject joRtn = invoker.invokeCenterService(funNO, joInput);
string errMsg;
if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
{
outPar = errMsg;
return -1;
}
else
{
outPar = joRtn.ToString();
return 0;
}
}
catch (Exception ex)
{
outPar = "上传就医属性异常:" + ex.Message;
return -1;
}
}
///
/// 住院患者登记
///
///
public int inPatReg(string inParam,out string outparam)
{
outparam = "";
try
{
return 0;
}
catch (Exception ex)
{
return -1;
}
}
public int cancleRegister(string funNO, out string outparam)
{
outparam = "";
string errMsg;
try
{
dynamic joTmp = new JObject();
joTmp.mdtrt_id = Global.pat.mdtrtID;
joTmp.psn_no = Global.pat.psn_no;
joTmp.mdtrt_mode = 0;
JObject joInput = new JObject();
if (funNO == "2202")
{
joTmp.ipt_otp_no = Global.pat.adm_Dr.ToString();
joInput.Add("mdtrtinfo", joTmp);
}
else
{
joInput = joTmp;
}
//JObject joData = new JObject();
//joData.Add("mdtrtinfo", joTmp);
//好后上传给中心
//string inpar = GlobalVariables.SetJsonParam("2405", joTmp).ToString();
JObject joRtn = invoker.invokeCenterService(funNO, joInput);
if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
{
outparam = errMsg;
return -1;
}
else
{
outparam = joRtn.ToString();
return 0;
}
}
catch (Exception ex)
{
outparam = "取消登记异常" + funNO + ":" + ex.Message;
return -1;
}
}
///
/// 取消费用传送
///
///
///
///
public int cancleFeeUpload(string funNO,out string errMsg)
{
errMsg = "";
try
{
//组织入参
dynamic joTmp = new JObject();
if (funNO == "2205")
{
joTmp.feedetl_sn = "0000";
}
else
{
joTmp.feedetl_sn = "0000";
}
joTmp.mdtrt_id = Global.pat.mdtrtID;
joTmp.psn_no = Global.pat.psn_no;
joTmp.expContent = "";
JObject joData = new JObject();
if (funNO == "2205")
{
joData.Add("data", joTmp);
}
else
{
JArray jaData = new JArray();
jaData.Add(joTmp);
joData.Add("feeinfo", joTmp);
}
//组织好后上传给中心
JObject joRtn = invoker.invokeCenterService(funNO, joData);
if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
{
return -1;
}
else
{
return 0;
}
}
catch (Exception ex)
{
errMsg = "cancleFeeUpload异常:" + ex.Message;
return -1;
}
}
public int cancleSettlement(string funNO, out string outparam)
{
outparam = "";
string errMsg;
try
{
dynamic joTmp = new JObject();
joTmp.mdtrt_id = Global.pat.mdtrtID;
joTmp.psn_no = Global.pat.psn_no;
joTmp.setl_id = Global.pat.settlID;
joTmp.expContent = "";
JObject joData = new JObject();
joData.Add("mdtrtinfo", joTmp);
JObject joRtn = invoker.invokeCenterService(funNO, joData);
if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
{
outparam = errMsg;
return -1;
}
else
{
outparam = joRtn.ToString();
return 0;
}
}
catch (Exception ex)
{
outparam = "取消结算异常" + funNO + ":" + ex.Message;
return -1;
}
}
public int UpdateDirectory_HEB(JObject joData, out string outparam)
{
outparam = "";
string funNO = "";
string errMsg;
try
{
int dirType = int.Parse(JsonHelper.getDestValue(joData,"type"));
joData.Remove("type");
JObject joInput = new JObject();
joInput.Add("data", joData);
switch (dirType)
{
case 1:
{
funNO = "1360";
break;
}
case 2://诊疗
{
funNO = "1365";
break;
}
case 3://材料
{
funNO = "1364";
break;
}
}
JObject joRtn = invoker.invokeCenterService(funNO, joInput);
if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
{
outparam = errMsg;
return -1;
}
else
{
outparam = joRtn.ToString();
return 0;
}
}
catch (Exception ex)
{
outparam = "查询中心目录算异常" + funNO + ":" + ex.Message;
return -1;
}
}
}
}