/******************************************************************************
* 文件名称: HisBusiness.cs
* 文件说明: HIS业务的封装
* 当前版本: V1.0
* 创建日期: 2022-04-14
*
* 2020-04-14: 增加 SingleDownload 方法
* 2020-04-14: 增加 AutoDownload 方法
******************************************************************************/
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ChengDuMedInsu2;
using MedicalInsurance.Business;
using MedicalInsurance.Helper;
using MedicalInsurance.Common;
using MedicalInsurance.Forms;
using System.Windows.Forms;
namespace MedicalInsurance.Business
{
class HisBusiness
{
///
/// 医保目录单个版本号的下载
///
///
///
///
///
///
public int SingleDownload(string ver, int directoryType,Sunny.UI.UIProcessBar uiProcessBar, out string errorMessage)
{
string txtPath = string.Empty;
errorMessage = "";
int iResult = -1;
string funNo = "";
switch (directoryType)
{
case 0://药品
{
funNo = "1301";
break;
}
case 1://诊疗
{
funNo = "1305";
break;
}
case 2://材料
{
funNo = "1306";
break;
}
case 3://疾病诊断
{
funNo = "1307";
break;
}
case 4://手术
{
funNo = "1308";
break;
}
case 5://慢性病
{
funNo = "1309";
break;
}
case 6://DRGs
{
funNo = "1310";
break; ;
}
case 7://日间手术
{
funNo = "1311";
break;
}
case 8://字典表
{
break;
}
}
try
{
CenterBusiness centerBusiness = new CenterBusiness();
JObject joRtn = centerBusiness.DownDirecotry(funNo, ver);
if (JsonHelper.parseBusinessJson(joRtn, out errorMessage) == 0)
{
txtPath = joRtn["filePath"].ToString();
DataImoport bus = new DataImoport();
JObject joImportRtn = bus.importDataToIrisByTxt(txtPath, 50, directoryType + 1, uiProcessBar);
if (JsonHelper.parseBusinessJson(joImportRtn, out errorMessage) == 0)
{
iResult = 0;
}
else
{
GlobalVariables.writeLog(joImportRtn.ToString());
errorMessage = "导入数据出现错误,请查看日志!";//joImportRtn["errorMessage"].ToString();
}
}
return iResult;
}
catch (Exception ex)
{
errorMessage = "SingleDownload提示:" + ex.Message;
return -1;
}
}
///
/// 自动下载医保目录,直到最新版本(返回报错)
///
///
///
///
///
public int AutoDownload(int directoryType, Sunny.UI.UIProcessBar uiProcessBar, out string errorMessage)
{
int iResult = 0;
errorMessage = "";
try
{
InsuServices irisBus = new InsuServices();
JObject joMaxVerNO = irisBus.getDirectoryMaxVersionNO(directoryType);
string ver = joMaxVerNO["MaxVersionNO"].ToString();
iResult = JsonHelper.parseBusinessJson(joMaxVerNO,out errorMessage);
while (iResult == 0)
{
iResult = SingleDownload(ver, directoryType,uiProcessBar, out errorMessage);
}
return iResult;
}
catch (Exception ex)
{
errorMessage = ex.Message;
return -1;
}
}
///
/// 读卡
///
///
public int readCard(string funNO, out string outParam)
{
outParam = "";
string errorMsg = "";
int errorCode;
string errorMessage;
try
{
ChengDuMedInsu2.YinHaiCom yinhaiCom = new ChengDuMedInsu2.YinHaiCom();
JObject joInput = GlobalVariables.setYinHaiParam(funNO);
string sSafeControlsRtnValue = string.Empty;
yinhaiCom.Init();
yinhaiCom.Call(funNO, joInput.ToString(), out sSafeControlsRtnValue);
JObject joRtn = new JObject();
joRtn = JObject.Parse(sSafeControlsRtnValue);
errorCode = int.Parse(joRtn["code"].ToString());
errorMessage = joRtn["message"].ToString();
if (errorCode != 1)
{
outParam = JsonHelper.getIrisReturnJson(-100, "调用银海控件失败!", joRtn).ToString();
return 1;
}
else
{
JObject jodata = JObject.FromObject(joRtn["data"]);
GlobalVariables.insuplc_admdvs = jodata["insuplc_admdvs"].ToString();
GlobalVariables.mdtrt_cert_type = jodata["mdtrt_cert_type"].ToString();
GlobalVariables.mdtrt_cert_no = jodata["mdtrt_cert_no"].ToString();
GlobalVariables.psn_cert_type = jodata["psn_cert_type"].ToString();
GlobalVariables.certno = jodata["certno"].ToString();
GlobalVariables.psn_name = jodata["psn_name"].ToString();
//GlobalVariables.psn_no = jodata["psn_no"].ToString();
GlobalVariables.card_sn = jodata["card_sn"].ToString();
GlobalVariables.card_token = jodata["card_token"].ToString();
dynamic joInput_1101 = new JObject();
dynamic joTmp = new JObject();
joTmp.mdtrt_cert_type = GlobalVariables.mdtrt_cert_type;
joTmp.mdtrt_cert_no = GlobalVariables.mdtrt_cert_no;
joTmp.card_sn = GlobalVariables.card_sn;
joTmp.begntime = "";
joTmp.psn_cert_type = GlobalVariables.psn_cert_type;
joTmp.certno = GlobalVariables.certno;
joTmp.psn_name = GlobalVariables.psn_name;
dynamic joExpContent = new JObject();
joExpContent.card_token = GlobalVariables.card_token;
joTmp.Add("expContent", JObject.FromObject(joExpContent));
joInput_1101.Add("data", JObject.FromObject(joTmp));
InvokeHelper center = new InvokeHelper();
JObject joCenterServiceRtn = center.InvokeCenterService("1101", joInput_1101.ToString());
if (joCenterServiceRtn["infcode"].ToString() != "0")
{
outParam = "调用1101失败! ";
return -1;
}
else
{
string output = joCenterServiceRtn["output"].ToString();
//展示信息界面
JObject joOutput = JObject.Parse(output);
//编码转换
JArray jaConvertCode = new JArray();
JObject joConvertCodeParam = new JObject();
joConvertCodeParam.Add("hospitalDr", GlobalVariables.hospitalDr);
joConvertCodeParam.Add("interfaceDr", GlobalVariables.interfaceDr);
joConvertCodeParam.Add("output", joOutput);
jaConvertCode.Add(joConvertCodeParam);
JObject joConvertCode = new JObject();
joConvertCode.Add("code", "09010054");
joConvertCode.Add("params", jaConvertCode);
InvokeHelper invoker = new InvokeHelper();
JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "患者信息编码转换");
PatientInsuInfo frmPatientInfo = new PatientInsuInfo(joConvertCodeRtn);
//相关信息转换到登记面板
if (frmPatientInfo.ShowDialog() == DialogResult.OK)
{
joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo));
}
else
{
outParam = JsonHelper.getIrisExceptionJson(-1, "读卡", "收款员取消读卡").ToString();
return -1;
}
}
outParam = joCenterServiceRtn.ToString();
GlobalVariables.writeLog("readCard","",outParam);
return 0;
}
}
catch (Exception ex)
{
outParam = "异常:" + ex.Message;
return -1;
}
}
///
/// 获取患者基本信息
///
///
///
public int GetHisPatBaseInfo(out string errMsg)
{
errMsg = "";
try
{
dynamic joTmp = new JObject();
joTmp.admID = GlobalVariables.admDr;
InvokeHelper invoker = new InvokeHelper();
JObject joRtn = invoker.invokeHISService(JsonHelper.getIrisServiceInparamBaseJson("05110021", joTmp).ToString(), "获取HIS患者基本信息");
if (JsonHelper.parseBusinessJson(joRtn, out errMsg) != 0)
{
errMsg = "获取HIS患者基本信息失败,请联系管理员!" + errMsg;
return -1;
}
else
{
errMsg = joRtn.ToString();
return 0;
}
}
catch (Exception ex)
{
errMsg = "GetHisPatBaseInfo异常:" + ex.Message;
return -1;
}
}
public int checkName(string insuName, out string errMsg)
{
try
{
errMsg = "";
string hisPatBaseInfo = "";
if (GetHisPatBaseInfo(out hisPatBaseInfo) != 0)
{
errMsg = hisPatBaseInfo;
return -1;
}
string hisPatName = JsonHelper.getJsonValue(JObject.Parse(hisPatBaseInfo), "result.patName");
if (hisPatName.Trim() != insuName.Trim())
{
errMsg = "患者姓名(" + hisPatName + ")与参保人姓名(" + insuName + ")不一致,请检查!";
return -1;
}
else
{
return 0;
}
}
catch (Exception ex)
{
errMsg = "核对HIS与医保平台姓名一致性发生异常:" + ex.Message;
return -1;
}
}
///
/// 签到
///
///
public int MutualAidSignIn(out JObject joRtn)
{
string outParam = "";
string inParam = "";
try
{
dynamic jsonSignIn = new JObject();
dynamic jsonInput = new JObject();
jsonSignIn.opter_no = GlobalVariables.operatorNO;
MedicalInsurance.Common.Common com = new MedicalInsurance.Common.Common();
jsonSignIn.mac = com.GetMAC();
jsonSignIn.ip = com.GetIP();
jsonInput.signin = jsonSignIn;
InvokeHelper invoke = new InvokeHelper();
outParam = invoke.InvokeCenterServiceOfMutualAid("9001", jsonInput.ToString()).ToString();
GlobalVariables.writeLog("共济加密" + outParam);
joRtn = JObject.Parse(outParam);
if (joRtn["infcode"].ToString() == "0")
{
GlobalVariables.mutualAidSignNO = joRtn["output"]["signinoutb"]["sign_no"].ToString();
return 0;
}
else
{
//joRtn = JsonHelper.getIrisExceptionJson(-100, "签到异常", (string)joRtn["err_msg"]);
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 MutualAidReadCard(string funNO, out string outParam, string centerUrl)
{
outParam = "";
string errorMsg = "";
int errorCode;
string errorMessage;
JObject joSignRtn = new JObject();
if (MutualAidSignIn(out joSignRtn) != 0)
{
GlobalVariables.writeLog(joSignRtn.ToString());
outParam = JsonHelper.getIrisExceptionJson(-1, "签到异常", (string)joSignRtn["err_msg"]).ToString();
return -1;
}
else
{
GlobalVariables.writeLog(joSignRtn.ToString());
}
try
{
ChengDuMedInsu2.YinHaiCom yinhaiCom = new ChengDuMedInsu2.YinHaiCom();
JObject joInput = GlobalVariables.setYinHaiParam("1101");
string sSafeControlsRtnValue = string.Empty;
yinhaiCom.Init();
yinhaiCom.Call(funNO, joInput.ToString(), out sSafeControlsRtnValue);
JObject joRtn = new JObject();
joRtn = JObject.Parse(sSafeControlsRtnValue);
errorCode = int.Parse(joRtn["code"].ToString());
errorMessage = joRtn["message"].ToString();
if (errorCode != 1)
{
outParam = JsonHelper.getIrisReturnJson(-100, "调用银海控件失败!", joRtn).ToString();
return 1;
}
else
{
JObject jodata = JObject.FromObject(joRtn["data"]);
GlobalVariables.mutualAidPatientAreaCode = jodata["insuplc_admdvs"].ToString();
dynamic joInput_1101 = new JObject();
dynamic joTmp = new JObject();
joTmp.mdtrt_cert_type = jodata["mdtrt_cert_type"].ToString();
joTmp.mdtrt_cert_no = jodata["mdtrt_cert_no"].ToString();
joTmp.card_sn = jodata["card_sn"].ToString();
joTmp.begntime = "";
joTmp.psn_cert_type = jodata["psn_cert_type"].ToString();
joTmp.certno = jodata["certno"].ToString();
joTmp.psn_name = jodata["psn_name"].ToString();
GlobalVariables.card_token = jodata["card_token"].ToString();
dynamic joExpContent = new JObject();
joExpContent.card_token = jodata["card_token"].ToString();
joTmp.Add("expContent", JObject.FromObject(joExpContent));
joInput_1101.Add("data", JObject.FromObject(joTmp));
InvokeHelper center = new InvokeHelper();
JObject joCenterServiceRtn = center.InvokeCenterServiceOfMutualAid("1101", joInput_1101.ToString());
if (joCenterServiceRtn["infcode"].ToString() != "0")
{
outParam = "调用1101失败! ";
return -1;
}
else
{
string output = joCenterServiceRtn["output"].ToString();
//展示信息界面
JObject joOutput = JObject.Parse(output);
//编码转换
JArray jaConvertCode = new JArray();
JObject joConvertCodeParam = new JObject();
joConvertCodeParam.Add("hospitalDr", GlobalVariables.hospitalDr);
joConvertCodeParam.Add("interfaceDr", GlobalVariables.mutualAidInterfaceDr);
joConvertCodeParam.Add("output", joOutput);
jaConvertCode.Add(joConvertCodeParam);
JObject joConvertCode = new JObject();
joConvertCode.Add("code", "09010054");
joConvertCode.Add("params", jaConvertCode);
InvokeHelper invoker = new InvokeHelper();
JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "患者信息编码转换");
PatientInsuInfo frmPatientInfo = new PatientInsuInfo(joConvertCodeRtn);
//相关信息转换到登记面板
if (frmPatientInfo.ShowDialog() == DialogResult.OK)
{
joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo));
joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("comInfo", jodata));
}
else
{
outParam = JsonHelper.getIrisExceptionJson(-1, "读卡", "收款员取消读卡").ToString();
return -1;
}
}
outParam = joCenterServiceRtn.ToString();
GlobalVariables.writeLog("MutualAidReadCard", "", outParam);
return 0;
}
}
catch (Exception ex)
{
outParam = "异常:" + ex.Message;
return -1;
}
}
}
}