using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using MedicalInsurance.Helper;
using MedicalInsurance.Business;
using MedicalInsurance.Common;
using MedicalInsurance.Forms;
namespace ChengDuMedInsu2
{
public class InsuBusiness : IInsuBusiness
{
object YinHaiComInstance;
System.Type YinHaiCom;
YinHaiEncrypt yhEncrypt = new YinHaiEncrypt();
private readonly InvokeHelper invoker = new InvokeHelper();
private HisServices hServices = new HisServices();
private InsuServices iServices = new InsuServices();
private CenterServices cBusServices = new CenterServices();
dynamic Jo = new JObject();
string errorMessage = "", result = "";
int errorCode = 0;
Common common = new Common();
//重写构造函数,构造即初始化
#region 初始化
///
/// 初始化
///
///
///
public string Init(string InParam)
{
string sRtn = string.Empty;
try
{
if (InitCom(out errorMessage) != 1)
{
sRtn = JsonHelper.getIrisExceptionJson(-100, "InitCom失败", "").ToString();
return sRtn;
}
if (GlobalVariables.Init(InParam) != 0)
{
sRtn = JsonHelper.getIrisExceptionJson(-100, "GlobalVariables.Init失败", "").ToString();
return sRtn;
}
//GlobalVariables.printGlobalVariablesVlaue();
//签到
CenterBusiness center = new CenterBusiness();
JObject joRtn = new JObject();
if (center.SignIn(out joRtn) != 0)
{
//GlobalVariables.writeLog(joRtn.ToString());
sRtn = JsonHelper.getIrisExceptionJson(-1, "签到异常", (string)joRtn["err_msg"]).ToString();
return sRtn;
}
else
{
//GlobalVariables.writeLog(joRtn.ToString());
sRtn = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joRtn).ToString();
}
GlobalVariables.writeLog(joRtn.ToString());
return sRtn;
}
catch (Exception ex)
{
sRtn = JsonHelper.getIrisExceptionJson(-1, "Init异常", ex.Message).ToString();
return sRtn;
}
finally
{
GlobalVariables.writeLog("业务DLL_Init",InParam,sRtn);
}
}
#endregion
#region 获取患者信息
///
/// 获取患者信息
///
///
///
public string GetPatientInfo(string InParam)
{
string rtnResult = "";
JObject joReturn = new JObject();
//介质信息,要返回给HIS,然后HIS在登记时返回给壳
JObject joCertInfo = new JObject();
try
{
JObject joInitRtn = JObject.Parse(Init(InParam));
//joInitRtn = JObject.Parse(Init(InParam));
if (JsonHelper.parseBusinessJson(joInitRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(-100, "Business.Download", "初始化失败:" + errorMessage).ToString();
MessageBox.Show("初始化失败:" + errorMessage);
return rtnResult;
}
JObject joInParam = JObject.Parse(InParam);
string businessType = joInParam["businessType"].ToString();
switch (businessType)
{
case "M1"://门诊读卡
{
//JArray joSession = JArray.FromObject(joInParam["session"]);
ChooseCard cc = new ChooseCard();
cc.ShowDialog();
YinHaiCom yinhaiCom = new YinHaiCom();
JObject joInput = GlobalVariables.setYinHaiParam("2207A");
string sSafeControlsRtnValue = string.Empty;
yinhaiCom.Init();
yinhaiCom.Call("2207A", 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)
{
return JsonHelper.getIrisReturnJson(-100, "调用银海控件失败!", joRtn).ToString();
}
else
{
JObject jodata = JObject.FromObject(joRtn["data"]);
joCertInfo = (JObject)jodata.DeepClone();
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")
{
errorCode = -100;
errorMessage = "调用1101失败!";
}
else
{
//展示信息界面
JObject joOutput = JObject.FromObject(joCenterServiceRtn["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);
//相关信息转换到登记面板
try
{
if (frmPatientInfo.ShowDialog() == DialogResult.OK)
{
joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo));
}
else
{
rtnResult = JsonHelper.getIrisExceptionJson(-1, "门诊读卡", "收款员取消读卡").ToString();
return rtnResult;
}
}
catch (Exception e)
{ MessageBox.Show("33:" + e.Message); }
//返回给前端
errorCode = int.Parse(joCenterServiceRtn["infcode"].ToString());
errorMessage = joCenterServiceRtn["err_msg"].ToString();
}
joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("certInfo", joCertInfo));
return JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterServiceRtn).ToString();
}
break;
}
case "Z1"://住院读卡
{
//JArray joSession = JArray.FromObject(joInParam["session"]);
ChooseCard cc = new ChooseCard();
cc.ShowDialog();
YinHaiCom yinhaiCom = new YinHaiCom();
GlobalVariables.business_type = "01103";
JObject joInput = GlobalVariables.setYinHaiParam("1101");
string sSafeControlsRtnValue = string.Empty;
yinhaiCom.Init();
yinhaiCom.Call("1101", joInput.ToString(), out sSafeControlsRtnValue);
GlobalVariables.writeLog("1101COM", joInput.ToString(), sSafeControlsRtnValue);
JObject joRtn = new JObject();
joRtn = JObject.Parse(sSafeControlsRtnValue);
errorCode = int.Parse(joRtn["code"].ToString());
errorMessage = joRtn["message"].ToString();
if (errorCode != 1)
{
return JsonHelper.getIrisExceptionJson(-100, "调用银海控件失败!", errorMessage).ToString();
}
else
{
JObject jodata = JObject.FromObject(joRtn["data"]);
joCertInfo = (JObject)jodata.DeepClone();
GlobalVariables.patientAreaCode = jodata["insuplc_admdvs"].ToString();
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();
string inParam1101 = GlobalVariables.SetJsonParam("1101", joInput_1101.ToString());
JObject joCenterServiceRtn = center.InvokeCenterService("1101", joInput_1101.ToString());
if (joCenterServiceRtn["infcode"].ToString() != "0")
{
errorCode = -100;
errorMessage = "调用1101失败!";
}
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
{
rtnResult = JsonHelper.getIrisExceptionJson(-1, "住院读卡", "收款员取消读卡").ToString();
return rtnResult;
}
//返回给前端
errorCode = int.Parse(joCenterServiceRtn["infcode"].ToString());
errorMessage = joCenterServiceRtn["err_msg"].ToString();
}
joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("certInfo", joCertInfo));
return JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterServiceRtn).ToString();
}
}
}
return rtnResult;
}
catch (Exception ex)
{
JObject joRtn = JsonHelper.getIrisExceptionJson(-100, "GetPatientInfo", ex.Message);
rtnResult = joRtn.ToString();
return rtnResult;
}
finally
{
GlobalVariables.writeLog("GetPatientInfo", InParam, rtnResult);
//GlobalVariables.writeLog(AppDomain.CurrentDomain.BaseDirectory);
//GlobalVariables.writeLog(Environment.CurrentDirectory);
//GlobalVariables.writeLog(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
}
}
#endregion
#region 登记
///
/// 登记
///
///
///
public string Register(string InParam)
{
//返回结果
string rtnResult = string.Empty;
try
{
JObject joInitRtn = JObject.Parse(Init(InParam));
//joInitRtn = JObject.Parse(Init(InParam));
if (JsonHelper.parseBusinessJson(joInitRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(-100, "Business.Download", "初始化失败:" + errorMessage).ToString();
MessageBox.Show("初始化失败:" + errorMessage);
return rtnResult;
}
//解析入参
JObject joInParam = JObject.Parse(InParam);
JArray jaSession = JArray.Parse(JsonHelper.getJsonValue(joInParam,"session"));
JArray jaParmas = JArray.Parse(JsonHelper.getJsonValue(joInParam, "params"));
//提取业务类型
string businessType = JsonHelper.getJsonValue(joInParam, "businessType");
JObject joParam = JObject.FromObject(jaParmas[0]);
//JObject joInterface = (JObject)joParam["interfaceInfo"];
//JObject joHisinsuAdmObj = JObject.Parse(JsonHelper.getJsonValue(joInParam, "insuAdmObj"));
//GlobalVariables.patientAreaCode = JsonHelper.getJsonValue(joHisinsuAdmObj, "insuplc_admdvs");
//接口信息
JObject joInterface = (JObject)joInParam["interfaceinfo"];
GlobalVariables.admDr = JsonHelper.getJsonValue(joParam, "admID"); ;
//获取参保地
if ((businessType == "Z2") )//|| (businessType == "M2")
{ GlobalVariables.patientAreaCode = JsonHelper.getJsonValue(joParam, "patientInfo.output.insuinfo[0].insuplc_admdvs"); }
else
{
JObject joHisinsuAdmObj = JObject.Parse(JsonHelper.getJsonValue(joInParam, "insuAdmObj"));
GlobalVariables.patientAreaCode = JsonHelper.getJsonValue(joHisinsuAdmObj, "insuplc_admdvs");
}
switch (businessType)
{
case "M2"://门诊登记
{
GlobalVariables.business_type = "01101";
//设置一些通用变量
string admID = JsonHelper.getJsonValue(joParam, "admID");
string adm_Dr = JsonHelper.getJsonValue(joParam, "admID");
string mdtrt_id = "";
string psn_no = "";
string billID = "";
string insutype = "";
string patName = "";
dynamic joExpContent = new JObject();
joExpContent.card_token = GlobalVariables.card_token;
JObject joCertInfo = new JObject();
//调用服务获取门诊诊断信息
dynamic joIrisParam = new JObject();
JArray jaIrisParams = new JArray();
JObject joIrisTmp = new JObject();
joIrisParam.code = "05110001";
joIrisParam.session = jaSession;
joIrisTmp.Add("admID", admID);
joIrisTmp.Add("psn_no", GlobalVariables.psn_no);
jaIrisParams.Add(joIrisTmp);
joIrisParam.Add("params", JArray.FromObject(jaIrisParams));
JObject joIrisRtn = invoker.invokeHISService(joIrisParam.ToString(), "05110001");
if (JsonHelper.parseBusinessJson(joIrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIrisRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIrisRtn).ToString();
return rtnResult;
}
//显示登记面板
OutpatientRegistration frmReg = new OutpatientRegistration();
//相关信息转换到登记面板
JObject joHisPatInfo = JObject.Parse(JsonHelper.getJsonValue(joIrisRtn, "mdtrtinfo"));
//指定险种信息
joIrisRtn.Add("selectedInsuInfo", null);
JObject joSelected = JObject.Parse(JsonHelper.getJsonValue(joIrisRtn, "selectedInsuInfo"));
DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
int selectedIndex = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["Name"].ToString() == JsonHelper.getJsonValue(joSelected, "insutype"))
{
selectedIndex = i;
frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
frmReg.insuType = dt.Rows[i]["Code"].ToString();
}
}
//获取诊断信息
frmReg.DtDiagnose = (DataTable)joIrisRtn["diseinfo"].ToObject(typeof(DataTable));
if (frmReg.ShowDialog() == DialogResult.OK)
{
frmReg.insuType = dt.Rows[selectedIndex]["Code"].ToString();
//挂号
//组织挂号入参
JObject joRegInpar = new JObject();
joRegInpar.Add("psn_no", GlobalVariables.psn_no);
joRegInpar.Add("insutype", insutype);
joRegInpar.Add("begntime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//挂号时间
joRegInpar.Add("mdtrt_cert_type", GlobalVariables.mdtrt_cert_type);
joRegInpar.Add("mdtrt_cert_no", GlobalVariables.mdtrt_cert_no);
joRegInpar.Add("ipt_otp_no", admID);
joRegInpar.Add("atddr_no", JsonHelper.getJsonValue(joHisPatInfo, "atddr_no"));
joRegInpar.Add("dr_name", JsonHelper.getJsonValue(joHisPatInfo, "chfpdr_name"));
joRegInpar.Add("dept_code", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_codg"));
joRegInpar.Add("dept_name", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_name"));
joRegInpar.Add("expContent", joExpContent);
joRegInpar.Add("caty", "72");
JObject joRegInput = new JObject();
joRegInput.Add("data", joRegInpar);
//上传挂号信息
JObject jo2201Rtn = invoker.InvokeCenterService("2201", joRegInput.ToString());
if (JsonHelper.parseCenterReturnJson(jo2201Rtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2201Rtn).ToString();
MessageBox.Show(rtnResult);
return rtnResult;
}
else
{
mdtrt_id = JsonHelper.getJsonValue(jo2201Rtn, "output.data.mdtrt_id");
//插入云医保平台
dynamic joTmp = new JObject();
joTmp.admdr = adm_Dr;
joTmp.patname = GlobalVariables.psn_name;
joTmp.insu_reg_id = mdtrt_id;
joTmp.regstate = 1;
joTmp.validflag = 1;
joTmp.type = 1;
joTmp.updateUserID = GlobalVariables.operatorNO;
joRegInpar.Add("med_type", frmReg.insuType);
JObject josave2401ToIris = iServices.saveRegisterInfo(joRegInpar, joTmp);
if (JsonHelper.parseBusinessJson(josave2401ToIris, out errorMessage) != 0)
{
errorMessage = "中心登记成功但医保平台保存失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joRegInput).ToString();
return rtnResult;
}
}
//门诊登记信息上传
//组织入参
JObject joReg = new JObject();
JObject joMdtrtinfo = new JObject();
JArray jaDiag = JArray.FromObject(joIrisRtn["diseinfo"]);
joMdtrtinfo.Add("mdtrt_id", mdtrt_id);
joMdtrtinfo.Add("psn_no", GlobalVariables.psn_no); //人员编号
joMdtrtinfo.Add("insutype", frmReg.insuType); //险种类型
joMdtrtinfo.Add("endtime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //结束时间
joMdtrtinfo.Add("dise_codg", frmReg.diseCodg); //病种编码
joMdtrtinfo.Add("dise_name", frmReg.diseName); //病种名称
joMdtrtinfo.Add("oprn_oprt_code", frmReg.oprn_oprt_code); //手术操作代码
joMdtrtinfo.Add("oprn_oprt_name", frmReg.oprn_oprt_name); //手术操作名称
joMdtrtinfo.Add("fpsc_no", JsonHelper.getJsonValue(joHisPatInfo, "fpsc_no")); //计划生育服务证号
joMdtrtinfo.Add("matn_type", JsonHelper.getJsonValue(joHisPatInfo, "matn_type")); //生育类别
joMdtrtinfo.Add("birctrl_type", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_type")); //计划生育手术类别
joMdtrtinfo.Add("latechb_flag", JsonHelper.getJsonValue(joHisPatInfo, "latechb_flag")); //晚育标志
joMdtrtinfo.Add("geso_val", JsonHelper.getJsonValue(joHisPatInfo, "geso_val")); //孕周数
joMdtrtinfo.Add("fetts", JsonHelper.getJsonValue(joHisPatInfo, "fetts")); //胎次
joMdtrtinfo.Add("fetus_cnt", JsonHelper.getJsonValue(joHisPatInfo, "fetus_cnt")); //胎儿数
joMdtrtinfo.Add("pret_flag", JsonHelper.getJsonValue(joHisPatInfo, "pret_flag")); //早产标志
joMdtrtinfo.Add("birctrl_matn_date", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_matn_date")); //计划生育手术或生育日期
joMdtrtinfo.Add("cop_flag", JsonHelper.getJsonValue(joHisPatInfo, "dise_type_code")); //伴有并发症标志
joMdtrtinfo.Add("dscg_dept_codg", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_codg")); //出院科室编码
joMdtrtinfo.Add("dscg_dept_name", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_name")); //出院科室名称
joMdtrtinfo.Add("dscg_bed", JsonHelper.getJsonValue(joHisPatInfo, "adm_bed")); //出院床位
joMdtrtinfo.Add("dscg_way", "1"); //离院方式
joMdtrtinfo.Add("die_date", ""); //死亡日期
joMdtrtinfo.Add("expContent", ""); //字段扩展
joMdtrtinfo.Add("insuplc_admdvs", JsonHelper.getJsonValue(joCertInfo, "insuplc_admdvs")); //参保地医保区划
joMdtrtinfo.Add("mdtrtarea_admvs", GlobalVariables.hospitalAreaCode); //就医地医保区划
joReg.Add("dscginfo", joMdtrtinfo);
joReg.Add("diseinfo", jaDiag);
//组织好后上传给中心
JObject joCenterRtn = invoker.InvokeCenterService("2203A", joReg.ToString());
}
else
{ }
break;
}
case "M2C"://门诊登记撤销
{
//设置一些通用变量
string admID = JsonHelper.getJsonValue(joParam, "admID");
string mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
string psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
//组织挂号入参
JObject joCancleRegInpar = new JObject();
joCancleRegInpar.Add("psn_no", psn_no);
joCancleRegInpar.Add("mdtrt_id", mdtrt_id);
joCancleRegInpar.Add("ipt_otp_no", admID);
JObject joRegInput = new JObject();
joRegInput.Add("data", joCancleRegInpar);
//上传挂号信息
JObject jo2202Rtn = invoker.InvokeCenterService("2202", joRegInput.ToString());
if (JsonHelper.parseCenterReturnJson(jo2202Rtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2202Rtn).ToString();
return rtnResult;
}
else
{
dynamic joTmp = new JObject();
joTmp.admID = admID;
joTmp.PersonalNO = psn_no;
joTmp.InsuRegID = mdtrt_id;
joTmp.Add("billID", "");
joTmp.Type = 3;
joTmp.CancleRegDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
JObject jo2404IrisRtn = iServices.cancleRegisterInfo(joTmp);
if (JsonHelper.parseBusinessJson(jo2404IrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(jo2404IrisRtn["errorCode"].ToString());
errorMessage = "中心取消登记成功但云HIS平台取消失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2404IrisRtn).ToString();
return rtnResult;
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(0, "取消挂号登记成功", jo2202Rtn).ToString();
return rtnResult;
}
}
}
case "Z0"://住院修改
{
break;
}
case "Z2"://入院登记
{
GlobalVariables.business_type = "01103";
JObject joPatientInfo = JObject.Parse(JsonHelper.getJsonValue(joParam, "patientInfo"));
//基本信息
JObject joPatBasInfo = JObject.Parse(JsonHelper.getJsonValue(joInParam, "params[0].patientInfo.output.baseinfo"));
//参保信息
//JArray jaPatInsuInfo = JArray.Parse(JsonHelper.getJsonValue(joInParam, "params[0].patientInfo.output.insuinfo"));
JObject joPatInsuInfo = JObject.Parse(JsonHelper.getJsonValue(joInParam, "params[0].patientInfo.selectedInsuInfo"));
//读取介质信息
JObject joCertInfo = JObject.Parse(JsonHelper.getJsonValue(joInParam, "params[0].patientInfo.certInfo"));
//
HisBusiness hb = new HisBusiness();
if (hb.checkName(JsonHelper.getJsonValue(joPatBasInfo, "psn_name"), out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(errorCode, "入院登记姓名核对", errorMessage).ToString();
return rtnResult;
}
//HIS选择界面,选择医保接口类型(HIS调用医保平台提供的云服务,获取接口类型),获取信息
string adm_Dr = joParam["admID"].ToString();
string patName = JsonHelper.getJsonValue(joParam, "patientInfo.certInfo.psn_name");
string psn_no = JsonHelper.getJsonValue(joPatBasInfo, "psn_no");
GlobalVariables.psn_no = psn_no;
string billID = JsonHelper.getJsonValue(joParam, "billID");
//调用服务获取门诊诊断信息
dynamic joIrisParam = new JObject();
JArray jaIrisParams = new JArray();
JObject joIrisTmp = new JObject();
joIrisParam.code = "05110001";
joIrisParam.session = jaSession;
joIrisTmp.Add("admID", adm_Dr);
joIrisTmp.Add("psn_no", psn_no);
jaIrisParams.Add(joIrisTmp);
joIrisParam.Add("params", JArray.FromObject(jaIrisParams));
JObject joIrisRtn = invoker.invokeHISService(joIrisParam.ToString(), "05110001");
if (JsonHelper.parseBusinessJson(joIrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIrisRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIrisRtn).ToString();
return rtnResult;
}
//显示登记面板
OutpatientRegistration frmReg = new OutpatientRegistration();
//相关信息转换到登记面板
JObject joHisPatInfo = JObject.Parse(JsonHelper.getJsonValue(joIrisRtn, "mdtrtinfo"));
//指定险种信息
joIrisRtn.Add("selectedInsuInfo", joPatInsuInfo);
JObject joSelected = JObject.Parse(JsonHelper.getJsonValue(joIrisRtn, "selectedInsuInfo"));
DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
int selectedIndex = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["Name"].ToString() == JsonHelper.getJsonValue(joSelected, "insutype"))
{
selectedIndex = i;
frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
frmReg.insuType = dt.Rows[i]["Code"].ToString();
}
}
DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
for (int i = 0; i < dtMedType.Rows.Count; i++)
{
if (dtMedType.Rows[i]["Code"].ToString() == "21")
{
frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
}
}
#region 2022.10.28 增加判断
//因为诊断重复,通过诊断类型来区分
string dscg_maindiag_code = "", dscg_maindiag_name = "";
JArray jaDiagnoses = JArray.Parse(JsonHelper.getJsonValue(joIrisRtn, "diseinfo"));
JArray jaConvertedDiagnoses = new JArray();
JArray jaInPatDiagnoses = new JArray();
JArray jaOutPatDiagnoses = new JArray();
for (int i = 0; i < jaDiagnoses.Count; i++)
{
string diag_type = JsonHelper.getJsonValue((JObject)jaDiagnoses[i], "diag_type");
switch (diag_type)
{
case "1":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
break;
}
case "2":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
break;
}
case "3":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
break;
}
case "4":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
break;
}
}
if (jaDiagnoses[i]["diaTypeCode"].ToString() == "ADD") //ADD 入院 OPD 门诊
{
jaInPatDiagnoses.Add(jaDiagnoses[i]);
}
if (jaDiagnoses[i]["diaTypeCode"].ToString() == "OPD") //ADD 入院 OPD 门诊
{
jaOutPatDiagnoses.Add(jaDiagnoses[i]);
}
}
if (jaInPatDiagnoses.Count > 0)
{
jaConvertedDiagnoses = (JArray)jaInPatDiagnoses.DeepClone();
}
else
{
jaConvertedDiagnoses = (JArray)jaOutPatDiagnoses.DeepClone();
}
for (int i = 0; i < jaConvertedDiagnoses.Count; i++)
{
jaConvertedDiagnoses[i]["diag_srt_no"] = i + 1;
if (jaConvertedDiagnoses[i]["maindiag_flag"].ToString() == "1")
{
dscg_maindiag_code = jaConvertedDiagnoses[i]["diag_code"].ToString();
dscg_maindiag_name = jaConvertedDiagnoses[i]["diag_name"].ToString();
}
}
#endregion
frmReg.DtDiagnose = (DataTable)jaConvertedDiagnoses.ToObject(typeof(DataTable));
//frmReg.DtDiagnose = (DataTable)joIrisRtn["diseinfo"].ToObject(typeof(DataTable));
if (frmReg.ShowDialog() == DialogResult.OK)
{
//调用中心介质
YinHaiCom yinHai = new YinHaiCom();
yinHai.Init();
JObject joInput = GlobalVariables.setYinHaiParam("2401");
string sSafeControlsRtnValue = string.Empty;
string yinhaiRtn = "";
yinHai.Call("2401", joInput.ToString(), out yinhaiRtn);
GlobalVariables.writeLog("2401com", joInput.ToString(),yinhaiRtn);
JObject joyinHaiRtn = JObject.Parse(yinhaiRtn);
if (JsonHelper.getJsonValue(joyinHaiRtn, "code") != "1")
{
rtnResult = JsonHelper.getIrisExceptionJson(-1, "入院登记控件调用失败", JsonHelper.getJsonValue(joyinHaiRtn, "message")).ToString();
return rtnResult;
}
//string token = joyinHaiRtn["data"]["card_token"].ToString();
string token = JsonHelper.getJsonValue(joyinHaiRtn, "data.card_token");
dynamic joExp = new JObject();
joExp.card_token = token;
joExp.mdtrt_grp_type = frmReg.mdtrt_grp_type;
JObject joReg = new JObject();
JObject joMdtrtinfo = new JObject();
JArray jaDiag = JArray.FromObject(joIrisRtn["diseinfo"]);
joMdtrtinfo.Add("psn_no", JsonHelper.getJsonValue(joPatBasInfo, "psn_no")); //人员编号
joMdtrtinfo.Add("insutype", frmReg.insuType); //险种类型
joMdtrtinfo.Add("coner_name", JsonHelper.getJsonValue(joHisPatInfo, "coner_name")); //联系人姓名
joMdtrtinfo.Add("tel", JsonHelper.getJsonValue(joHisPatInfo, "tel")); //联系电话
joMdtrtinfo.Add("begntime", JsonHelper.getJsonValue(joHisPatInfo, "begntime")); //开始时间
joMdtrtinfo.Add("mdtrt_cert_type", JsonHelper.getJsonValue(joCertInfo, "mdtrt_cert_type")); //就诊凭证类型
if (JsonHelper.getJsonValue(joCertInfo, "mdtrt_cert_type") == "01")
{
joMdtrtinfo.Add("mdtrt_cert_no", JsonHelper.getJsonValue(joyinHaiRtn, "data.mdtrt_cert_no")); //就诊凭证编号
}
else
{
joMdtrtinfo.Add("mdtrt_cert_no", JsonHelper.getJsonValue(joCertInfo, "mdtrt_cert_no")); //就诊凭证编号
}
joMdtrtinfo.Add("med_type", frmReg.med_type); //医疗类别
joMdtrtinfo.Add("ipt_no", JsonHelper.getJsonValue(joHisPatInfo, "ipt_no")); //住院号
joMdtrtinfo.Add("medrcdno", JsonHelper.getJsonValue(joHisPatInfo, "medrcdno")); //病历号
joMdtrtinfo.Add("atddr_no", JsonHelper.getJsonValue(joHisPatInfo, "atddr_no")); //主治医生编码
joMdtrtinfo.Add("chfpdr_name", JsonHelper.getJsonValue(joHisPatInfo, "chfpdr_name")); //主诊医师姓名
joMdtrtinfo.Add("adm_diag_dscr", JsonHelper.getJsonValue(joHisPatInfo, "adm_diag_dscr")); //入院诊断描述
joMdtrtinfo.Add("adm_dept_codg", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_codg")); //入院科室编码
joMdtrtinfo.Add("adm_dept_name", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_name")); //入院科室名称
joMdtrtinfo.Add("adm_bed", JsonHelper.getJsonValue(joHisPatInfo, "adm_bed")); //入院床位
joMdtrtinfo.Add("dscg_maindiag_code", dscg_maindiag_code); //住院主诊断代码
joMdtrtinfo.Add("dscg_maindiag_name", dscg_maindiag_name); //住院主诊断名称
joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getJsonValue(joHisPatInfo, "main_cond_dscr")); //主要病情描述
joMdtrtinfo.Add("dise_codg", frmReg.diseCodg); //病种编码
joMdtrtinfo.Add("dise_name", frmReg.diseName); //病种名称
joMdtrtinfo.Add("oprn_oprt_code", frmReg.oprn_oprt_code); //手术操作代码
joMdtrtinfo.Add("oprn_oprt_name", frmReg.oprn_oprt_name); //手术操作名称
joMdtrtinfo.Add("fpsc_no", JsonHelper.getJsonValue(joHisPatInfo, "fpsc_no")); //计划生育服务证号
joMdtrtinfo.Add("matn_type", JsonHelper.getJsonValue(joHisPatInfo, "matn_type")); //生育类别
joMdtrtinfo.Add("birctrl_type", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_type")); //计划生育手术类别
joMdtrtinfo.Add("latechb_flag", JsonHelper.getJsonValue(joHisPatInfo, "latechb_flag")); //晚育标志
joMdtrtinfo.Add("geso_val", JsonHelper.getJsonValue(joHisPatInfo, "geso_val")); //孕周数
joMdtrtinfo.Add("fetts", JsonHelper.getJsonValue(joHisPatInfo, "fetts")); //胎次
joMdtrtinfo.Add("fetus_cnt", JsonHelper.getJsonValue(joHisPatInfo, "fetus_cnt")); //胎儿数
joMdtrtinfo.Add("pret_flag", JsonHelper.getJsonValue(joHisPatInfo, "pret_flag")); //早产标志
joMdtrtinfo.Add("birctrl_matn_date", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_matn_date")); //计划生育手术或生育日期
joMdtrtinfo.Add("dise_type_code", JsonHelper.getJsonValue(joHisPatInfo, "dise_type_code")); //病种类型
joMdtrtinfo.Add("expContent", joExp); //字段扩展
joMdtrtinfo.Add("insuplc_admdvs", JsonHelper.getJsonValue(joCertInfo, "insuplc_admdvs")); //参保地医保区划
joMdtrtinfo.Add("mdtrtarea_admvs", GlobalVariables.hospitalAreaCode); //就医地医保区划
joReg.Add("mdtrtinfo", joMdtrtinfo);
//joReg.Add("diseinfo", jaDiag);
joReg.Add("diseinfo", jaConvertedDiagnoses);
//组织好后上传给中心
JObject joCenterRtn = invoker.InvokeCenterService("2401", joReg.ToString());
//将中心返回的结果返回HIS,调用HIS服务进行保存
if (joCenterRtn["infcode"].ToString() == "0")
{
//插入云医保平台
dynamic joTmp = new JObject();
joTmp.admdr = adm_Dr;
joTmp.patname = patName;
joTmp.insu_reg_id = JsonHelper.getJsonValue(joCenterRtn, "output.result.mdtrt_id");
joTmp.regstate = 1;
joTmp.validflag = 1;
joTmp.type = 1;
joTmp.updateUserID = GlobalVariables.operatorNO;
joTmp.msgid = GlobalVariables.msgid;
joMdtrtinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
JObject josave2401ToIris = iServices.saveRegisterInfo(joMdtrtinfo, joTmp);
if (JsonHelper.parseBusinessJson(josave2401ToIris, out errorMessage) != 0)
{
errorMessage = "中心登记成功但医保平台保存失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisExceptionJson(-1, "入院登记", errorMessage).ToString();
return rtnResult;
}
//回传给HIS
JObject joSendToIris2401 = GlobalVariables.SetJsonParam("2401",joReg);
joSendToIris2401.Add("admID", adm_Dr);
joSendToIris2401.Add("mdtrt_id", JsonHelper.getJsonValue(joCenterRtn, "output.result.mdtrt_id"));
joSendToIris2401.Add("interfaceDr", GlobalVariables.interfaceDr);
joSendToIris2401.Add("billID", billID);
JObject joRegInfoToHis = iServices.sendRegisterInfoToHis(joSendToIris2401, jaSession);
if (JsonHelper.parseBusinessJson(joRegInfoToHis, out errorMessage) != 0)
{
errorMessage = "中心登记成功但云HIS平台保存失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
}
else
{
errorCode = int.Parse(joCenterRtn["infcode"].ToString());
errorMessage = joCenterRtn["err_msg"].ToString();
}
//返回给前端
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
break;
}
case "Z2C"://入院登记取消
{
//获HIS传过来的信息
string adm_Dr = JsonHelper.getJsonValue(joParam, "admID");
string mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
string psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
string billID = JsonHelper.getJsonValue(joParam, "billID");
string insuplc_admdvs = GlobalVariables.patientAreaCode;
GlobalVariables.patientAreaCode = insuplc_admdvs;
//组织入参
dynamic joTmp = new JObject();
joTmp.mdtrt_id = mdtrt_id;
joTmp.psn_no = psn_no;
JObject joData = new JObject();
joData.Add("data",joTmp);
//好后上传给中心
//string inpar = GlobalVariables.SetJsonParam("2405", joTmp).ToString();
JObject jo2404CenterRtn = invoker.InvokeCenterService("2404", joData.ToString());
//将中心返回的结果返回HIS 调用HIS服务进行保存
if (JsonHelper.parseCenterReturnJson(jo2404CenterRtn, out errorMessage) != 0)
{
errorCode = int.Parse(jo2404CenterRtn["infcode"].ToString());
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2404CenterRtn).ToString();
return rtnResult;
}
else
{
joTmp = new JObject();
joTmp.admID = adm_Dr;
joTmp.PersonalNO = psn_no;
joTmp.InsuRegID = mdtrt_id;
joTmp.Add("billID", billID);
joTmp.Type = 1;
joTmp.CancleRegDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
JObject jo2404IrisRtn = iServices.cancleRegisterInfo(joTmp);
if (JsonHelper.parseBusinessJson(jo2404IrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(jo2404IrisRtn["errorCode"].ToString());
errorMessage = "中心取消登记成功但云HIS平台取消失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2404IrisRtn).ToString();
return rtnResult;
}
else
{
//回传给HIS
JObject joSendToIris2404 = new JObject();
joSendToIris2404.Add("admID", adm_Dr);
joSendToIris2404.Add("interfaceDr", GlobalVariables.interfaceDr);
joSendToIris2404.Add("billID", billID);
JObject joCancleRegInfoToHis = invoker.invokeHISService(JsonHelper.getIrisServiceInparamBaseJson("05110004", joSendToIris2404,jaSession).ToString(),"取消登记(HIS服务)");
if (JsonHelper.parseBusinessJson(joCancleRegInfoToHis, out errorMessage) != 0)
{
errorMessage = "中心登记成功但云HIS平台保存失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCancleRegInfoToHis).ToString();
return rtnResult;
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(0, "取消成功", null).ToString();
return rtnResult;
}
}
}
}
case "Z6"://出院登记
{
GlobalVariables.hisDischargeTime = Convert.ToDateTime(JsonHelper.getJsonValue(joInParam, "insuAdmObj.disDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
//读取介质信息
JObject joCertInfo = JObject.Parse(JsonHelper.getJsonValue(joInParam, "params[0].patientInfo.certInfo"));
//HIS选择界面,选择医保接口类型(HIS调用医保平台提供的云服务,获取接口类型),获取信息
string adm_Dr = joParam["admID"].ToString();
string psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
GlobalVariables.psn_no = psn_no;
string mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
//调用服务获取登记信息
dynamic joTmp = new JObject();
joTmp.mdtrt_id = mdtrt_id;
joTmp.Type = 1;
joTmp.admID = adm_Dr;
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.InterfaceDr = GlobalVariables.interfaceDr;
JObject joRegInfo = invoker.invokeInsuService(JsonHelper.getIrisServiceInparamBaseJson("09010050", joTmp).ToString(), "获取登记信息");
GlobalVariables.med_type = JsonHelper.getJsonValue(joRegInfo, "data.MedicalType");
GlobalVariables.insutype = JsonHelper.getJsonValue(joRegInfo, "data.InsuType");
GlobalVariables.mdtrt_cert_type = JsonHelper.getJsonValue(joRegInfo, "data.CertificateType");
GlobalVariables.mdtrt_cert_no = JsonHelper.getJsonValue(joRegInfo, "data.CertificateNO");
GlobalVariables.psn_cert_type = JsonHelper.getJsonValue(joRegInfo, "data.CertificateType");
GlobalVariables.certno = JsonHelper.getJsonValue(joRegInfo, "data.CertificateNO");
GlobalVariables.insuplc_admdvs = JsonHelper.getJsonValue(joRegInfo, "data.InsuranceAreaCode");
JObject joData = new JObject();
joData.Add("data", joTmp);
//调用服务获取门诊诊断信息
dynamic joIrisParam = new JObject();
JArray jaIrisParams = new JArray();
JObject joIrisTmp = new JObject();
joIrisParam.code = "05110001";
joIrisParam.session = jaSession;
joIrisTmp.Add("admID", adm_Dr);
joIrisTmp.Add("psn_no", psn_no);
jaIrisParams.Add(joIrisTmp);
joIrisParam.Add("params", JArray.FromObject(jaIrisParams));
JObject joIrisRtn = invoker.invokeHISService(joIrisParam.ToString(), "05110001");
if (JsonHelper.parseBusinessJson(joIrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIrisRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIrisRtn).ToString();
return rtnResult;
}
#region 2022.10.28 增加判断
//因为诊断重复,通过诊断类型来区分
string dscg_maindiag_code = "", dscg_maindiag_name = "";
JArray jaDiagnoses = JArray.Parse(JsonHelper.getJsonValue(joIrisRtn, "diseinfo"));
JArray jaConvertedDiagnoses = new JArray();
JArray jaInPatDiagnoses = new JArray();
JArray jaOutPatDiagnoses = new JArray();
for (int i = 0; i < jaDiagnoses.Count; i++)
{
string diag_type = JsonHelper.getJsonValue((JObject)jaDiagnoses[i], "diag_type");
switch (diag_type)
{
case "1":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
break;
}
case "2":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
break;
}
case "3":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
break;
}
case "4":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
break;
}
}
if (jaDiagnoses[i]["diaTypeCode"].ToString() == "ADD") //ADD 入院 OPD 门诊
{
jaInPatDiagnoses.Add(jaDiagnoses[i]);
}
if (jaDiagnoses[i]["diaTypeCode"].ToString() == "DIS") //ADD 入院 OPD 门诊 DIS 出院
{
jaOutPatDiagnoses.Add(jaDiagnoses[i]);
}
}
if (jaOutPatDiagnoses.Count > 0)
{
jaConvertedDiagnoses = (JArray)jaOutPatDiagnoses.DeepClone();
}
else
{
jaConvertedDiagnoses = (JArray)jaInPatDiagnoses.DeepClone();
}
for (int i = 0; i < jaConvertedDiagnoses.Count; i++)
{
jaConvertedDiagnoses[i]["diag_srt_no"] = i + 1;
if (jaConvertedDiagnoses[i]["maindiag_flag"].ToString() == "1")
{
dscg_maindiag_code = jaConvertedDiagnoses[i]["diag_code"].ToString();
dscg_maindiag_name = jaConvertedDiagnoses[i]["diag_name"].ToString();
}
}
#endregion
//显示登记面板
OutpatientRegistration frmReg = new OutpatientRegistration();
//相关信息转换到登记面板
JObject joHisPatInfo = JObject.Parse(JsonHelper.getJsonValue(joIrisRtn, "mdtrtinfo"));
DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
int selectedIndex = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["Code"].ToString() == GlobalVariables.insutype)
{
selectedIndex = i;
frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
frmReg.insuType = dt.Rows[i]["Code"].ToString();
}
}
dt = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["Code"].ToString() == GlobalVariables.med_type)
{
frmReg.dblkcbxMedicalType.Text = dt.Rows[i]["Name"].ToString();
frmReg.med_type = dt.Rows[i]["Code"].ToString();
}
}
DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
for (int i = 0; i < dtMedType.Rows.Count; i++)
{
if (dtMedType.Rows[i]["Code"].ToString() == "21")
{
frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
}
}
DataTable dtSettlWay = (DataTable)frmReg.dblkcbxSettelmentWay.DataSource;
for (int i = 0; i < dtSettlWay.Rows.Count; i++)
{
if (dtSettlWay.Rows[i]["Code"].ToString() == "01")
{
frmReg.dblkcbxSettelmentWay.Text = dtSettlWay.Rows[i]["Name"].ToString();
frmReg.psn_setlway = dtSettlWay.Rows[i]["Code"].ToString();
}
}
frmReg.DtDiagnose = (DataTable)jaConvertedDiagnoses.ToObject(typeof(DataTable));
if (frmReg.ShowDialog() == DialogResult.OK)
{
JObject joReg = new JObject();
JObject joMdtrtinfo = new JObject();
//JArray jaDiag = JArray.FromObject(joIrisRtn["diseinfo"]);
JArray jaDiag = (JArray)jaConvertedDiagnoses.DeepClone();
joMdtrtinfo.Add("mdtrt_id", mdtrt_id);
joMdtrtinfo.Add("psn_no", GlobalVariables.psn_no); //人员编号
joMdtrtinfo.Add("insutype", frmReg.insuType); //险种类型
//joMdtrtinfo.Add("coner_name", JsonHelper.getJsonValue(joHisPatInfo, "coner_name")); //联系人姓名
//joMdtrtinfo.Add("tel", JsonHelper.getJsonValue(joHisPatInfo, "tel")); //联系电话
joMdtrtinfo.Add("endtime", GlobalVariables.hisDischargeTime); //结束时间
//joMdtrtinfo.Add("mdtrt_cert_type", JsonHelper.getJsonValue(joCertInfo, "mdtrt_cert_type")); //就诊凭证类型
//joMdtrtinfo.Add("mdtrt_cert_no", JsonHelper.getJsonValue(joCertInfo, "mdtrt_cert_no")); //就诊凭证编号
////joMdtrtinfo.Add("med_type", frmReg.med_type); //医疗类别
//joMdtrtinfo.Add("ipt_no", JsonHelper.getJsonValue(joHisPatInfo, "ipt_no")); //住院号
//joMdtrtinfo.Add("medrcdno", JsonHelper.getJsonValue(joHisPatInfo, "medrcdno")); //病历号
//joMdtrtinfo.Add("atddr_no", JsonHelper.getJsonValue(joHisPatInfo, "atddr_no")); //主治医生编码
//joMdtrtinfo.Add("chfpdr_name", JsonHelper.getJsonValue(joHisPatInfo, "chfpdr_name")); //主诊医师姓名
//joMdtrtinfo.Add("adm_diag_dscr", JsonHelper.getJsonValue(joHisPatInfo, "adm_diag_dscr")); //入院诊断描述
//joMdtrtinfo.Add("adm_dept_codg", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_codg")); //入院科室编码
//joMdtrtinfo.Add("adm_dept_name", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_name")); //入院科室名称
//joMdtrtinfo.Add("adm_bed", JsonHelper.getJsonValue(joHisPatInfo, "adm_bed")); //入院床位
//joMdtrtinfo.Add("dscg_maindiag_code", JsonHelper.getJsonValue(joHisPatInfo, "dscg_maindiag_code")); //住院主诊断代码
//joMdtrtinfo.Add("dscg_maindiag_name", JsonHelper.getJsonValue(joHisPatInfo, "dscg_maindiag_name")); //住院主诊断名称
//joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getJsonValue(joHisPatInfo, "main_cond_dscr")); //主要病情描述
joMdtrtinfo.Add("dise_codg", frmReg.diseCodg); //病种编码
joMdtrtinfo.Add("dise_name", frmReg.diseName); //病种名称
joMdtrtinfo.Add("oprn_oprt_code", frmReg.oprn_oprt_code); //手术操作代码
joMdtrtinfo.Add("oprn_oprt_name", frmReg.oprn_oprt_name); //手术操作名称
joMdtrtinfo.Add("fpsc_no", JsonHelper.getJsonValue(joHisPatInfo, "fpsc_no")); //计划生育服务证号
joMdtrtinfo.Add("matn_type", JsonHelper.getJsonValue(joHisPatInfo, "matn_type")); //生育类别
joMdtrtinfo.Add("birctrl_type", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_type")); //计划生育手术类别
joMdtrtinfo.Add("latechb_flag", JsonHelper.getJsonValue(joHisPatInfo, "latechb_flag")); //晚育标志
joMdtrtinfo.Add("geso_val", JsonHelper.getJsonValue(joHisPatInfo, "geso_val")); //孕周数
joMdtrtinfo.Add("fetts", JsonHelper.getJsonValue(joHisPatInfo, "fetts")); //胎次
joMdtrtinfo.Add("fetus_cnt", JsonHelper.getJsonValue(joHisPatInfo, "fetus_cnt")); //胎儿数
joMdtrtinfo.Add("pret_flag", JsonHelper.getJsonValue(joHisPatInfo, "pret_flag")); //早产标志
joMdtrtinfo.Add("birctrl_matn_date", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_matn_date")); //计划生育手术或生育日期
joMdtrtinfo.Add("cop_flag", JsonHelper.getJsonValue(joHisPatInfo, "dise_type_code")); //伴有并发症标志
joMdtrtinfo.Add("dscg_dept_codg", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_codg")); //出院科室编码
joMdtrtinfo.Add("dscg_dept_name", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_name")); //出院科室名称
joMdtrtinfo.Add("dscg_bed", JsonHelper.getJsonValue(joHisPatInfo, "adm_bed")); //出院床位
joMdtrtinfo.Add("dscg_way", "1"); //离院方式
joMdtrtinfo.Add("die_date", ""); //死亡日期
joMdtrtinfo.Add("expContent", ""); //字段扩展
joMdtrtinfo.Add("insuplc_admdvs", JsonHelper.getJsonValue(joCertInfo, "insuplc_admdvs")); //参保地医保区划
joMdtrtinfo.Add("mdtrtarea_admvs", GlobalVariables.hospitalAreaCode); //就医地医保区划
joReg.Add("dscginfo", joMdtrtinfo);
//增加就诊ID
for (int i = 0; i < jaDiag.Count; i++)
{
jaDiag[i]["mdtrt_id"] = new JObject();
jaDiag[i]["mdtrt_id"] = mdtrt_id;
}
joReg.Add("diseinfo", jaDiag);
//组织好后上传给中心
JObject joCenterRtn = invoker.InvokeCenterService("2402", joReg.ToString());
//将中心返回的结果返回HIS,调用HIS服务进行保存
if (joCenterRtn["infcode"].ToString() == "0")
{
//插入云医保平台
//joTmp = new JObject();
//joTmp.admdr = adm_Dr;
//joTmp.patname = "";
//joTmp.insu_reg_id = JsonHelper.getJsonValue(joCenterRtn, "output.result.mdtrt_id");
//joTmp.regstate = 2;
//joTmp.validflag = 1;
//joTmp.type = 2;
//joTmp.updateUserID = GlobalVariables.operatorNO;
//JObject josave2401ToIris = iServices.saveRegisterInfo(joMdtrtinfo, joTmp);
//if (JsonHelper.parseBusinessJson(josave2401ToIris, out errorMessage) != 0)
//{
// errorMessage = "中心登记成功但医保平台保存失败,请联系管理员!" + errorMessage;
// rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
// return rtnResult;
//}
}
else
{
errorCode = int.Parse(joCenterRtn["infcode"].ToString());
errorMessage = joCenterRtn["err_msg"].ToString();
rtnResult = JsonHelper.getIrisExceptionJson(-1, "取消出院登记", errorMessage).ToString();
return rtnResult;
}
//返回给前端
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
break;
}
case "Z6C"://出院登记取消
{
//获HIS传过来的信息
string adm_Dr = JsonHelper.getJsonValue(joParam, "admID");
string mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
string psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
string insuplc_admdvs = GlobalVariables.patientAreaCode;
GlobalVariables.patientAreaCode = insuplc_admdvs;
//组织入参
dynamic joTmp = new JObject();
joTmp.mdtrt_id = mdtrt_id;
joTmp.psn_no = psn_no;
joTmp.expContent = "";
JObject joData = new JObject();
joData.Add("data", joTmp);
//好后上传给中心
//string inpar = GlobalVariables.SetJsonParam("2405", joTmp).ToString();
JObject jo2405CenterRtn = invoker.InvokeCenterService("2405", joData.ToString());
//将中心返回的结果返回HIS 调用HIS服务进行保存
if (JsonHelper.parseCenterReturnJson(jo2405CenterRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2405CenterRtn).ToString();
return rtnResult;
}
else
{
//joTmp = new JObject();
//joTmp.AdmID = adm_Dr;
//joTmp.PersonalNO = psn_no;
//joTmp.InsuRegID = mdtrt_id;
//joTmp.Type = 1;
//joTmp.CancleRegDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//JObject jo2405IrisRtn = iServices.cancleRegisterInfo(joTmp);
//if (JsonHelper.parseBusinessJson(jo2405IrisRtn, out errorMessage) != 0)
//{
// errorMessage = "中心取消登记成功但云HIS平台取消失败,请联系管理员!" + errorMessage;
// rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2405IrisRtn).ToString();
// return rtnResult;
//}
//else
//{
// rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2405IrisRtn).ToString();
// return rtnResult;
//}
rtnResult = JsonHelper.getIrisReturnJson(0, "取消成功", jo2405CenterRtn).ToString();
return rtnResult;
}
break;
}
default:
rtnResult = "传入的业务编码不对!";
break;
}
return rtnResult;
}
catch (Exception ex)
{
JObject joRtn = JsonHelper.getIrisExceptionJson(-100, "Register", ex.Message);
rtnResult = joRtn.ToString();
return rtnResult;
}
finally
{
GlobalVariables.writeLog("Register", InParam,rtnResult);
}
}
#endregion
#region 费用上传
///
/// 费用上传
///
///
///
public string FeeUpload(string InParam)
{
//返回结果
string rtnResult = string.Empty;
try
{
//环境初始化(获取IRIS配置,接口配置,医保动态库初始化,签到)
JObject joInitRtn = JObject.Parse(Init(InParam));
//joInitRtn = JObject.Parse(Init(InParam));
if (JsonHelper.parseBusinessJson(joInitRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(-100, "Business.Download", "初始化失败:" + errorMessage).ToString();
return rtnResult;
}
//解析入参
JObject joInParam = JObject.Parse(InParam);
JArray jaSession = JArray.FromObject(joInParam["session"]);
JArray jaParmas = (JArray)joInParam["params"];
JObject joHisinsuAdmObj = JObject.Parse(JsonHelper.getJsonValue(joInParam, "insuAdmObj"));
GlobalVariables.patientAreaCode = JsonHelper.getJsonValue(joHisinsuAdmObj, "insuplc_admdvs");
//提取业务类型
string businessType = joInParam["businessType"].ToString();
JObject joParam = JObject.FromObject(jaParmas[0]);
//JObject joInterface = (JObject)joParam["interfaceInfo"];
JObject joInterface = (JObject)joInParam["interfaceinfo"];
switch (businessType)
{
case "M3"://门诊费用上传
{
//HIS选择界面,选择医保接口类型(HIS调用医保平台提供的云服务,获取接口类型),获取信息
string admID = joParam["admID"].ToString();
break;
}
case "M3C"://门诊费用撤销
{
//获HIS传过来的信息
string adm_Dr = JsonHelper.getJsonValue(joParam, "admID");
string mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
string psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
//组织入参
dynamic joTmp = new JObject();
joTmp.chrg_bchno = "0000";
joTmp.mdtrt_id = mdtrt_id;
joTmp.psn_no = psn_no;
joTmp.expContent = "";
JObject joData = new JObject();
joData.Add("data", joTmp);
//组织好后上传给中心
JObject joCenterRtn = invoker.InvokeCenterService("2205", joData.ToString());
if (joCenterRtn["infcode"].ToString() == "0")
{
rtnResult = JsonHelper.getIrisReturnJson(0, "", joCenterRtn).ToString();
//删除医保传送表的数据
joTmp = new JObject();
joTmp.code = "09010048";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2301DeleteRtn = invoker.invokeInsuService(joTmp.ToString(), "删除门诊明细");
if (JsonHelper.parseBusinessJson(joIris2301DeleteRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2301DeleteRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIris2301DeleteRtn).ToString();
return rtnResult;
}
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-100, joCenterRtn["err_msg"].ToString(), joCenterRtn).ToString();
MessageBox.Show("取消失败: " + joCenterRtn["err_msg"].ToString());
}
break;
}
case "Z3"://入院费用上传
{
string adm_Dr = JsonHelper.getJsonValue(joParam, "admID");
string psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
//先取消中心费用传送
//组织入参
dynamic joTmp = new JObject();
joTmp.feedetl_sn = "0000";
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.psn_no = psn_no;
joTmp.expContent = "";
JArray jaData = new JArray();
jaData.Add(joTmp);
JObject joData = new JObject();
joData.Add("data", jaData);
//组织好后上传给中心,不管是否成功
JObject joCenterRtn = invoker.InvokeCenterService("2302", joData.ToString());
//再删除医保传送表的数据
joTmp = new JObject();
joTmp.code = "09010048";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2301DeleteRtn = invoker.invokeInsuService(joTmp.ToString(), "删除2301明细");
//开始进行费用传送
//调用费用查询信息
dynamic joIrisParam = new JObject();
JArray jaIrisParams = new JArray();
JObject joIrisTmp = new JObject();
joIrisParam.code = "05110003";
joIrisParam.session = jaSession;
joIrisTmp.Add("admID", adm_Dr);
joIrisTmp.Add("billID", JsonHelper.getJsonValue(joParam, "billID"));
joIrisTmp.Add("recordID", "");
jaIrisParams.Add(joIrisTmp);
joIrisParam.Add("params", JArray.FromObject(jaIrisParams));
JObject joIrisRtn = invoker.invokeHISService(joIrisParam.ToString(), "05110003");
if (JsonHelper.parseBusinessJson(joIrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIrisRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIrisRtn).ToString();
return rtnResult;
}
jaData = JArray.FromObject(joIrisRtn["result"]);
dynamic joInpar = new JObject();
joInpar.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
//joInpar.med_type = JsonHelper.getJsonValue(joParam, "med_type");
joInpar.med_type = 21;
joInpar.psn_no = psn_no;
joInpar.HospitalDr = GlobalVariables.hospitalDr;
joInpar.InterfaceDr = GlobalVariables.interfaceDr;
joInpar.code = "09010045";
joInpar.Add("params",JArray.FromObject(jaData));
JObject joIrisRtn_fee = invoker.invokeInsuService(joInpar.ToString(),"获取费用(含医保目录)");
if (JsonHelper.parseBusinessJson(joIrisRtn_fee, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIrisRtn_fee, "errorCode"));
rtnResult = JsonHelper.getIrisExceptionJson(-1, "费用上传", errorMessage).ToString();
return rtnResult;
}
JArray jaFeeDetail = JArray.FromObject(joIrisRtn_fee["data"]);
int singleRows = 50;//单次传50行
JArray jaTmp = new JArray();
for (int i = 0; i < jaFeeDetail.Count; i++)
{
jaTmp.Add(jaFeeDetail[i]);
if (((i+1) % singleRows == 0) || ((i+1) == jaFeeDetail.Count))
{
JObject joFeeDetail = new JObject();
joFeeDetail.Add("feedetail", jaTmp);
joCenterRtn = invoker.InvokeCenterService("2301", joFeeDetail.ToString());
if (joCenterRtn["infcode"].ToString() == "0")
{
rtnResult = JsonHelper.getIrisReturnJson(0, "", joCenterRtn).ToString();
//成功后插入医保平台
//插入2301上传的数据
joTmp = new JObject();
joTmp.code = "09010046";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
joTmp.Add("params", jaTmp);
;
JObject joIris2301InsertRtn = invoker.invokeInsuService(joTmp.ToString(), "插入2301明细");
if (JsonHelper.parseBusinessJson(joIris2301InsertRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2301InsertRtn, "errorCode"));
rtnResult = JsonHelper.getIrisExceptionJson(-1, "费用上传", errorMessage).ToString();
return rtnResult;
}
//更新2301返回的数据
joTmp = new JObject();
joTmp.code = "09010047";
JArray jaParams = JArray.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.result"));
joTmp.Add("params", jaParams);
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2301UpdateRtn = invoker.invokeInsuService(joTmp.ToString(), "更新2301明细");
if (JsonHelper.parseBusinessJson(joIris2301UpdateRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2301InsertRtn, "errorCode"));
rtnResult = JsonHelper.getIrisExceptionJson(-1, "费用上传回写", errorMessage).ToString();
return rtnResult;
}
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-100, joCenterRtn["err_msg"].ToString(), joCenterRtn).ToString();
MessageBox.Show("上传失败: " + joCenterRtn["err_msg"].ToString());
}
jaTmp = new JArray();
}
}
/****
//组织好后上传给中心
JObject joCenterRtn = invoker.invokeCenterService(GlobalVariables.SetJsonParam("2301", joFeeDetail.ToString()));
if (joCenterRtn["infcode"].ToString() == "0")
{
rtnResult = JsonHelper.getIrisReturnJson(0, "",joCenterRtn).ToString();
//成功后插入医保平台
//插入2301上传的数据
dynamic joTmp = new JObject();
joTmp.code = "09010046";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
joTmp.Add("params",jaFeeDetail);
;
JObject joIris2301InsertRtn = invoker.invokeInsuService(joTmp.ToString(), "插入2301明细");
if (JsonHelper.parseBusinessJson(joIris2301InsertRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2301InsertRtn, "errorCode"));
rtnResult = JsonHelper.getIrisExceptionJson(-1, "费用上传", errorMessage).ToString();
return rtnResult;
}
//更新2301返回的数据
joTmp = new JObject();
joTmp.code = "09010047";
JArray jaParams = JArray.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.result"));
joTmp.Add("params",jaParams);
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2301UpdateRtn = invoker.invokeInsuService(joTmp.ToString(), "更新2301明细");
if (JsonHelper.parseBusinessJson(joIris2301UpdateRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2301InsertRtn, "errorCode"));
rtnResult = JsonHelper.getIrisExceptionJson(-1,"费用上传回写" , errorMessage).ToString();
return rtnResult;
}
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-100, joCenterRtn["err_msg"].ToString(), joCenterRtn).ToString();
MessageBox.Show("上传失败: " + joCenterRtn["err_msg"].ToString());
}
****/
break;
}
case "Z3C"://住院费用上传取消
{
//获HIS传过来的信息
string adm_Dr = JsonHelper.getJsonValue(joParam, "admID");
string mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
string psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
//组织入参
dynamic joTmp = new JObject();
joTmp.feedetl_sn = "0000";
joTmp.mdtrt_id = mdtrt_id;
joTmp.psn_no = psn_no;
joTmp.expContent = "";
JArray jaData = new JArray();
jaData.Add(joTmp);
JObject joData = new JObject();
joData.Add("data", jaData);
//组织好后上传给中心
JObject joCenterRtn = invoker.InvokeCenterService("2302", joData.ToString());
if (joCenterRtn["infcode"].ToString() == "0")
{
rtnResult = JsonHelper.getIrisReturnJson(0, "", joCenterRtn).ToString();
//删除医保传送表的数据
joTmp = new JObject();
joTmp.code = "09010048";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2301DeleteRtn = invoker.invokeInsuService(joTmp.ToString(), "删除2301明细");
if (JsonHelper.parseBusinessJson(joIris2301DeleteRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2301DeleteRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIris2301DeleteRtn).ToString();
return rtnResult;
}
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-100, joCenterRtn["err_msg"].ToString(), joCenterRtn).ToString();
MessageBox.Show("取消失败: " + joCenterRtn["err_msg"].ToString());
}
break;
}
default:
rtnResult = "传入的业务编码不对!";
break;
}
return rtnResult;
}
catch (Exception ex)
{
JObject joRtn = JsonHelper.getIrisExceptionJson(-100, "FeeUpload", ex.Message);
rtnResult = joRtn.ToString();
return rtnResult;
}
finally
{
GlobalVariables.writeLog("FeeUpload", InParam, rtnResult);
}
}
#endregion
#region 结算
///
/// 结算
///
///
///
public string Settlement(string InParam)
{
//返回结果
string rtnResult = string.Empty;
try
{
//环境初始化(获取IRIS配置,接口配置,医保动态库初始化,签到)
JObject joInitRtn = JObject.Parse(Init(InParam));
//joInitRtn = JObject.Parse(Init(InParam));
if (JsonHelper.parseBusinessJson(joInitRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(-100, "Business.Download", "初始化失败:" + errorMessage).ToString();
return rtnResult;
}
//解析入参
JObject joInParam = JObject.Parse(InParam);
JArray jaSession = JArray.FromObject(joInParam["session"]);
JArray jaParmas = (JArray)joInParam["params"];
//提取业务类型
string businessType = joInParam["businessType"].ToString();
JObject joParam = JObject.FromObject(jaParmas[0]);
//JObject joInterface = (JObject)joParam["interfaceInfo"];
JObject joInterface = (JObject)joInParam["interfaceinfo"];
if (businessType != "M5")
{
JObject joHisinsuAdmObj = JObject.Parse(JsonHelper.getJsonValue(joInParam, "insuAdmObj"));
GlobalVariables.patientAreaCode = JsonHelper.getJsonValue(joHisinsuAdmObj, "insuplc_admdvs");
GlobalVariables.psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
}
//设置一些通用变量
string admID = JsonHelper.getJsonValue(joParam, "admID");
string adm_Dr = JsonHelper.getJsonValue(joParam, "admID");
GlobalVariables.admDr = adm_Dr;
string mdtrt_id = "";
string psn_no = "";
string billID = JsonHelper.getJsonValue(joParam, "billID");
string recordID = JsonHelper.getJsonValue(joParam, "recordID");
string patName = "";
String chrg_bchno = "";
GlobalVariables.business_type = "01301";
switch (businessType)
{
case "M4"://门诊预结算
{
OutpatientRegistration frmReg = new OutpatientRegistration();
if (frmReg.ShowDialog() == DialogResult.OK)
{
rtnResult = "调用结束";
}
break;
}
case "M4C"://门诊预结算撤销
{
break;
}
case "M5"://门诊结算
{
//读卡
ChooseCard cc = new ChooseCard();
cc.ShowDialog();
YinHaiCom yinhaiCom = new YinHaiCom();
JObject joInput = GlobalVariables.setYinHaiParam("2207A");
JObject joData = GlobalVariables.setYinHaiParam("2207A");
string sSafeControlsRtnValue = string.Empty;
yinhaiCom.Init();
yinhaiCom.Call("2207A", joInput.ToString(), out sSafeControlsRtnValue);
GlobalVariables.writeLog("2207A银海",joInput.ToString(),sSafeControlsRtnValue);
JObject joCom2207ARtn = new JObject();
joCom2207ARtn = JObject.Parse(sSafeControlsRtnValue);
errorCode = int.Parse(joCom2207ARtn["code"].ToString());
errorMessage = joCom2207ARtn["message"].ToString();
if (errorCode != 1)
{
return JsonHelper.getIrisExceptionJson(-100, "调用银海控件失败!", errorMessage).ToString();
}
else
{
JObject jodata = JObject.FromObject(joCom2207ARtn["data"]);
JObject joCertInfo = (JObject)jodata.DeepClone();
GlobalVariables.patientAreaCode = jodata["insuplc_admdvs"].ToString();
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 = "";
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();
string inParam1101 = GlobalVariables.SetJsonParam("1101", joInput_1101.ToString());
JObject joCenterServiceRtn = center.InvokeCenterService("1101", joInput_1101.ToString());
JObject joInsuInfo = new JObject();
if (JsonHelper.parseCenterReturnJson(joCenterServiceRtn,out errorMessage) !=0)
{
errorCode = -100;
rtnResult = JsonHelper.getIrisExceptionJson(errorCode,"门诊读卡",errorMessage).ToString();
return rtnResult;
}
else
{
//展示信息界面
JObject joOutput = JObject.FromObject(joCenterServiceRtn["output"]);
HisBusiness hb = new HisBusiness();
if (hb.checkName(JsonHelper.getJsonValue(joOutput, "baseinfo.psn_name"), out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(errorCode, "门诊姓名核对", errorMessage).ToString();
return rtnResult;
}
//编码转换
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(), "患者信息编码转换");
if (JsonHelper.parseCenterReturnJson(joCenterServiceRtn, out errorMessage) != 0)
{
errorCode = -100;
rtnResult = JsonHelper.getIrisExceptionJson(errorCode, "门诊读卡转换信息", errorMessage).ToString();
return rtnResult;
}
PatientInsuInfo frmPatientInfo = new PatientInsuInfo(joConvertCodeRtn);
//相关信息转换到登记面板
if (frmPatientInfo.ShowDialog() == DialogResult.OK)
{
//joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo));
joInsuInfo = JObject.FromObject(frmPatientInfo.joSelectedInsuInfo);
}
else
{
rtnResult = JsonHelper.getIrisExceptionJson(-1, "门诊读卡", "收款员取消读卡").ToString();
return rtnResult;
}
}
JObject joBaseInfo = JObject.Parse(JsonHelper.getJsonValue(joCenterServiceRtn, "output.baseinfo"));
GlobalVariables.psn_no = JsonHelper.getJsonValue(joBaseInfo, "psn_no");
GlobalVariables.psn_name = JsonHelper.getJsonValue(joBaseInfo, "psn_name");
string insutype = JsonHelper.getJsonValue(joInsuInfo, "insutype");
//参保地以1101返回的为准
GlobalVariables.patientAreaCode = JsonHelper.getJsonValue(joInsuInfo, "insuplc_admdvs");
GlobalVariables.insuplc_admdvs = JsonHelper.getJsonValue(joInsuInfo, "insuplc_admdvs");
//GlobalVariables.psn_no = JsonHelper.getJsonValue(joBaseInfo, "psn_no");
//GlobalVariables.psn_no = JsonHelper.getJsonValue(joBaseInfo, "psn_no");
//GlobalVariables.psn_no = JsonHelper.getJsonValue(joBaseInfo, "psn_no");
//GlobalVariables.psn_no = JsonHelper.getJsonValue(joBaseInfo, "psn_no");
//调用服务获取门诊诊断信息
dynamic joIrisParam = new JObject();
JArray jaIrisParams = new JArray();
JObject joIrisTmp = new JObject();
joIrisParam.code = "05110001";
joIrisParam.session = jaSession;
joIrisTmp.Add("admID",admID);
joIrisTmp.Add("recordID", recordID);
joIrisTmp.Add("billID", billID);
joIrisTmp.Add("psn_no", GlobalVariables.psn_no);
jaIrisParams.Add(joIrisTmp);
joIrisParam.Add("params", JArray.FromObject(jaIrisParams));
JObject joIrisRtn = invoker.invokeHISService(joIrisParam.ToString(), "05110001");
if (JsonHelper.parseBusinessJson(joIrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIrisRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIrisRtn).ToString();
return rtnResult;
}
admID = JsonHelper.getJsonValue(joIrisRtn,"admID");
adm_Dr = admID;
//显示登记面板
OutpatientRegistration frmReg = new OutpatientRegistration();
//相关信息转换到登记面板
JObject joHisPatInfo = JObject.Parse(JsonHelper.getJsonValue(joIrisRtn, "mdtrtinfo"));
//指定险种信息
joIrisRtn.Add("selectedInsuInfo", joInsuInfo);
JObject joSelected = JObject.Parse(JsonHelper.getJsonValue(joIrisRtn, "selectedInsuInfo"));
DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
int selectedIndex = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["Name"].ToString() == JsonHelper.getJsonValue(joSelected, "insutype"))
{
selectedIndex = i;
frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
frmReg.insuType = dt.Rows[i]["Code"].ToString();
}
}
DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
for (int i = 0; i < dtMedType.Rows.Count; i++)
{
if (dtMedType.Rows[i]["Code"].ToString() == "11")
{
frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
}
}
DataTable dtSettlWay = (DataTable)frmReg.dblkcbxSettelmentWay.DataSource;
for (int i = 0; i < dtSettlWay.Rows.Count; i++)
{
if (dtSettlWay.Rows[i]["Code"].ToString() == "01")
{
frmReg.dblkcbxSettelmentWay.Text = dtSettlWay.Rows[i]["Name"].ToString();
frmReg.psn_setlway = dtSettlWay.Rows[i]["Code"].ToString();
}
}
frmReg.DtDiagnose = (DataTable)joIrisRtn["diseinfo"].ToObject(typeof(DataTable));
if (frmReg.ShowDialog() == DialogResult.OK)
{
//挂号
//扩展参数入参
joExpContent.enddate = "";
joExpContent.adsetl_codg = "0";
joExpContent.mdtrt_grp_type = frmReg.mdtrt_grp_type;
joExpContent.opt_er_refl_flag = frmReg.opt_er_refl_flag;
//组织挂号入参
JObject joRegInpar = new JObject();
string occurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
joRegInpar.Add("psn_no", GlobalVariables.psn_no);
joRegInpar.Add("insutype", frmReg.insuType);
joRegInpar.Add("begntime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//挂号时间
joRegInpar.Add("mdtrt_cert_type", GlobalVariables.mdtrt_cert_type);
joRegInpar.Add("mdtrt_cert_no", GlobalVariables.mdtrt_cert_no);
joRegInpar.Add("ipt_otp_no", admID);
joRegInpar.Add("atddr_no", JsonHelper.getJsonValue(joHisPatInfo, "atddr_no"));
joRegInpar.Add("dr_name", JsonHelper.getJsonValue(joHisPatInfo, "chfpdr_name"));
joRegInpar.Add("dept_code", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_codg"));
joRegInpar.Add("dept_name", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_name"));
joRegInpar.Add("expContent", joExpContent);
joRegInpar.Add("caty", "72");
JObject joRegInput = new JObject();
joRegInput.Add("data", joRegInpar);
//上传挂号信息
JObject jo2201Rtn = invoker.InvokeCenterService("2201", joRegInput.ToString());
if (JsonHelper.parseCenterReturnJson(jo2201Rtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2201Rtn).ToString();
MessageBox.Show(rtnResult);
return rtnResult;
}
else
{
mdtrt_id = JsonHelper.getJsonValue(jo2201Rtn, "output.data.mdtrt_id");
//插入云医保平台
joTmp = new JObject();
joTmp.admdr = admID;
joTmp.patname = GlobalVariables.psn_name;
joTmp.insu_reg_id = mdtrt_id;
joTmp.regstate = 1;
joTmp.validflag = 1;
joTmp.type = 3;
joTmp.msgid = GlobalVariables.msgid;
joTmp.updateUserID = GlobalVariables.operatorNO;
joRegInpar.Add("med_type", frmReg.med_type);
joRegInpar.Add("adm_dept_codg", JsonHelper.getJsonValue(joIrisRtn, "mdtrtinfo.adm_dept_codg"));
joRegInpar.Add("dscg_maindiag_code", JsonHelper.getJsonValue(joIrisRtn, "mdtrtinfo.dscg_maindiag_code"));
joRegInpar.Add("dscg_maindiag_name", JsonHelper.getJsonValue(joIrisRtn, "mdtrtinfo.dscg_maindiag_name"));
joRegInpar.Add("OccurTime", occurTime);
JObject josave2201ToIris = iServices.saveRegisterInfo(joRegInpar, joTmp);
if (JsonHelper.parseBusinessJson(josave2201ToIris, out errorMessage) != 0)
{
errorMessage = "中心登记成功但医保平台保存失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joRegInput).ToString();
return rtnResult;
}
}
//门诊登记信息上传
//组织入参
JObject joReg = new JObject();
JObject joMdtrtinfo = new JObject();
JArray jaDiag = JArray.FromObject(joIrisRtn["diseinfo"]);
for (int i = 0; i < jaDiag.Count; i++)
{
jaDiag[i]["vali_flag"] = new JObject();
jaDiag[i]["vali_flag"] = "1";
}
joMdtrtinfo.Add("mdtrt_id", mdtrt_id);
joMdtrtinfo.Add("psn_no", GlobalVariables.psn_no); //人员编号
joMdtrtinfo.Add("med_type", frmReg.med_type); //医疗类别
joMdtrtinfo.Add("begntime", JsonHelper.getJsonValue(joHisPatInfo, "begntime")); //开始时间
joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getJsonValue(joHisPatInfo, "main_cond_dscr")); //主要病情描述
joMdtrtinfo.Add("dise_codg", frmReg.diseCodg); //病种编码
joMdtrtinfo.Add("dise_name", frmReg.diseName); //病种名称
joMdtrtinfo.Add("birctrl_type", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_type")); //计划生育手术类别
joMdtrtinfo.Add("birctrl_matn_date", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_matn_date")); //计划生育手术或生育日期
joMdtrtinfo.Add("matn_type", JsonHelper.getJsonValue(joHisPatInfo, "matn_type")); //生育类别
joMdtrtinfo.Add("geso_val", JsonHelper.getJsonValue(joHisPatInfo, "geso_val")); //孕周数
joMdtrtinfo.Add("expContent", ""); //字段扩展
joReg.Add("mdtrtinfo", joMdtrtinfo);
joReg.Add("diseinfo", jaDiag);
//组织好后上传给中心
JObject joCenterRtn = invoker.InvokeCenterService("2203A", joReg.ToString());
//将中心返回的结果返回HIS,调用HIS服务进行保存
if (joCenterRtn["infcode"].ToString() == "0")
{
//上传费用信息
//调用费用查询信息
joIrisParam = new JObject();
jaIrisParams = new JArray();
joIrisTmp = new JObject();
joIrisParam.code = "05110003";
joIrisParam.session = jaSession;
joIrisTmp.Add("admID", admID);
joIrisTmp.Add("billID", JsonHelper.getJsonValue(joParam, "billID"));
joIrisTmp.Add("recordID", JsonHelper.getJsonValue(joParam, "recordID"));
jaIrisParams.Add(joIrisTmp);
joIrisParam.Add("params", JArray.FromObject(jaIrisParams));
joIrisRtn = invoker.invokeHISService(joIrisParam.ToString(), "05110003");
if (JsonHelper.parseBusinessJson(joIrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIrisRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIrisRtn).ToString();
return rtnResult;
}
JArray jaData = JArray.FromObject(joIrisRtn["result"]);
dynamic joInpar = new JObject();
joInpar.mdtrt_id = mdtrt_id;
//joInpar.med_type = JsonHelper.getJsonValue(joParam, "med_type");
joInpar.med_type = 21;
joInpar.psn_no = GlobalVariables.psn_no;
joInpar.HospitalDr = GlobalVariables.hospitalDr;
joInpar.InterfaceDr = GlobalVariables.interfaceDr;
joInpar.code = "09010045";
joInpar.Add("params", JArray.FromObject(jaData));
JObject joIrisRtn_fee = invoker.invokeInsuService(joInpar.ToString(), "获取费用(含医保目录)");
if (JsonHelper.parseBusinessJson(joIrisRtn_fee, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIrisRtn_fee, "errorCode"));
rtnResult = JsonHelper.getIrisExceptionJson(-1, "费用上传", errorMessage).ToString();
return rtnResult;
}
JArray jaFeeDetail = JArray.FromObject(joIrisRtn_fee["data"]);
JObject joFeeDetail = new JObject();
joFeeDetail.Add("feedetail", jaFeeDetail);
//组织好后上传给中心
joCenterRtn = invoker.InvokeCenterService("2204", joFeeDetail.ToString());
if (joCenterRtn["infcode"].ToString() == "0")
{
rtnResult = JsonHelper.getIrisReturnJson(0, "", joCenterRtn).ToString();
//成功后插入医保平台
//插入2301上传的数据
joTmp = new JObject();
joTmp.code = "09010046";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = mdtrt_id;
joTmp.updateUserID = GlobalVariables.operatorNO;
joTmp.Add("params", jaFeeDetail);
JObject joIris2301InsertRtn = invoker.invokeInsuService(joTmp.ToString(), "插入2301明细");
if (JsonHelper.parseBusinessJson(joIris2301InsertRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2301InsertRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIris2301InsertRtn).ToString();
return rtnResult;
}
//更新2301返回的数据
joTmp = new JObject();
joTmp.code = "09010047";
JArray jaParams = JArray.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.result"));
joTmp.Add("params", jaParams);
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = mdtrt_id;
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2301UpdateRtn = invoker.invokeInsuService(joTmp.ToString(), "更新2301明细");
if (JsonHelper.parseBusinessJson(joIris2301UpdateRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2301InsertRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIris2301UpdateRtn).ToString();
return rtnResult;
}
//预结算
//调用IRIS获取医保各项金额
joTmp = new JObject();
joTmp = new JObject();
joTmp.code = "09010049";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = admID;
joTmp.mdtrt_id = mdtrt_id;
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2303SumFeeRtn = invoker.invokeInsuService(joTmp.ToString(), "获取各项费用汇总");
if (JsonHelper.parseBusinessJson(joIris2303SumFeeRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2303SumFeeRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIris2303SumFeeRtn).ToString();
return rtnResult;
}
//解析返回的金额
JObject joSumFeeData = JObject.Parse(JsonHelper.getJsonValue(joIris2303SumFeeRtn, "data"));
JObject jo2303Inpar = new JObject();
jo2303Inpar.Add("psn_no", GlobalVariables.psn_no);
jo2303Inpar.Add("mdtrt_cert_type", JsonHelper.getJsonValue(joCom2207ARtn, "data.mdtrt_cert_type"));
jo2303Inpar.Add("mdtrt_cert_no", JsonHelper.getJsonValue(joCom2207ARtn, "data.mdtrt_cert_no"));
jo2303Inpar.Add("med_type", frmReg.med_type); //结算类型
jo2303Inpar.Add("medfee_sumamt", JsonHelper.getJsonValue(joSumFeeData, "Sumamt"));
jo2303Inpar.Add("psn_setlway", frmReg.psn_setlway); //结算方式
jo2303Inpar.Add("mdtrt_id", mdtrt_id);
jo2303Inpar.Add("chrg_bchno", jaFeeDetail[0]["chrg_bchno"].ToString());
jo2303Inpar.Add("acct_used_flag", frmReg.personAccountUsedFlag);//个人账户使用标志
jo2303Inpar.Add("insutype", frmReg.insuType);//险种类型
//jo2303Inpar.Add("insuplc_admdvs", JsonHelper.getJsonValue(joCom2207ARtn, "data.insuplc_admdvs"));
jo2303Inpar.Add("insuplc_admdvs", GlobalVariables.insuplc_admdvs);//不能根据银海控件返回的,必须与1101返回一致,否则异地患者退费会有问题.退界算看的是最外层的2207A的参保地(即不是input节点内的参保地 )
jo2303Inpar.Add("pub_hosp_rfom_flag", "");
jo2303Inpar.Add("expContent", joExpContent);
//上传给中心
joData = new JObject();
joData.Add("data", jo2303Inpar);
joCenterRtn = invoker.InvokeCenterService("2206A", joData.ToString());
if (JsonHelper.parseCenterReturnJson(joCenterRtn, out errorMessage) == 0)
{
JObject joSetlinfo = JObject.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.setlinfo"));
//展示结算信息
JObject joOutput = JObject.FromObject(joCenterRtn["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", "09010055");
joConvertCode.Add("params", jaConvertCode);
InvokeHelper invoker = new InvokeHelper();
JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "结算信息编码转换");
SettlementInfo frmSettlment = new SettlementInfo(joConvertCodeRtn);
//相关信息转换到结算信息面板
if (frmSettlment.ShowDialog() == DialogResult.OK)
{
jo2303Inpar.Add("invono", "");
jo2303Inpar.Add("fulamt_ownpay_amt", JsonHelper.getJsonValue(joSumFeeData, "FullOwnPayAmount"));
jo2303Inpar.Add("overlmt_selfpay", JsonHelper.getJsonValue(joSumFeeData, "OverLimitAmount"));
jo2303Inpar.Add("preselfpay_amt", JsonHelper.getJsonValue(joSumFeeData, "PreSelfPayAmount"));
jo2303Inpar.Add("inscp_scp_amt", JsonHelper.getJsonValue(joSumFeeData, "inscp_scp_amt"));
//开始正式结算
joCenterRtn = invoker.InvokeCenterService("2207A", joData.ToString());
if (JsonHelper.parseCenterReturnJson(joCenterRtn, out errorMessage) == 0)
{
//返回给云医保平台
joSetlinfo = JObject.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.setlinfo"));
joSetlinfo.Add("HospitalDr", GlobalVariables.hospitalDr);
joSetlinfo.Add("admID", admID);
joSetlinfo.Add("ValidFlag", 1);
joSetlinfo.Add("BillType", 1);
joSetlinfo.Add("updateUserID", GlobalVariables.operatorNO);
joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
joSetlinfo.Add("billID", billID);
joSetlinfo.Add("recordID", recordID);
joSetlinfo.Add("msgid", GlobalVariables.msgid);
joSetlinfo.Add("interfaceDr", GlobalVariables.interfaceDr);
joSetlinfo.Add("insuplc_admdvs", GlobalVariables.patientAreaCode);
joSetlinfo.Add("admType", 1);
if (GlobalVariables.isMutualAid)
{
joSetlinfo.Add("MainSettlementIDOfMutualAid", JsonHelper.getJsonValue(joCenterRtn, "output.setlinfo.setl_id"));
joSetlinfo.Add("MutualAidFlag", 1);
}
else
{
joSetlinfo.Add("MainSettlementIDOfMutualAid", "");
joSetlinfo.Add("MutualAidFlag", "0");
}
joTmp = new JObject();
joTmp.code = "09010051";
JArray jaTmp = new JArray();
jaTmp.Add(joSetlinfo);
joTmp.Add("params", jaTmp);
JObject joSettlInfoOfMutualAid = (JObject)joSetlinfo.DeepClone();
JObject joRtn = invoker.invokeInsuService(joTmp.ToString(), "插入结算信息");
if (JsonHelper.parseBusinessJson(joRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joRtn).ToString();
return rtnResult;
}
JObject joSetlDetail = new JObject();
joSetlDetail.Add("HospitalDr", GlobalVariables.hospitalDr);
joSetlDetail.Add("InterfaceDr", GlobalVariables.interfaceDr);
joSetlDetail.Add("MdtrtID", mdtrt_id);
joSetlDetail.Add("SettlementID", JsonHelper.getJsonValue(joSetlinfo, "setl_id"));
joSetlDetail.Add("AdmID", admID);
joSetlDetail.Add("updateUserID", GlobalVariables.operatorNO);
JArray jaSetlDetail = JArray.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.setldetail"));
joSetlDetail.Add("setldetail", jaSetlDetail);
joTmp = new JObject();
joTmp.code = "09010056";
jaTmp = new JArray();
jaTmp.Add(joSetlDetail);
joTmp.Add("params", jaTmp);
JObject joInsertSetlDetail = invoker.invokeInsuService(joTmp.ToString(), "插入结算明细信息");
if (JsonHelper.parseBusinessJson(joInsertSetlDetail, out errorMessage) != 0)
{
//errorCode = int.Parse(JsonHelper.getJsonValue(joRtn, "errorCode"));
//rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joRtn).ToString();
MessageBox.Show("插入结算明细信息:" + errorMessage);
}
//共济支付
if (GlobalVariables.isMutualAid)
{
decimal psnCashPay = decimal.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.setlinfo.psn_cash_pay"));
if (psnCashPay == 0)
{
MessageBox.Show("该患者自付金额为0,不需要进行共济支付!");
}
else
{
//开启自付界面,因涉及到多次自付
MutualAid frmMA = new MutualAid(joSettlInfoOfMutualAid);
if (frmMA.dtSettlInfo.Rows.Count != 0)
{
frmMA.WindowState = FormWindowState.Maximized;
if (frmMA.ShowDialog() == DialogResult.OK)
{
joSetlinfo = JObject.Parse(frmMA.finalSettlementInfo);
}
else
{
MessageBox.Show("开启共济支付失败,原因为收款员取消共济支付!");
}
}
else
{
MessageBox.Show("开启共济支付失败,原因为未检测到有效的被共济人的医保结算数据!");
}
}
}
//返回给HIS
//数据返回给HIS
dynamic joIris2304 = new JObject();
joIris2304.code = "05110009";
joTmp = new JObject();
joTmp.settleInfo = joSetlinfo;
joTmp.updateUserID = GlobalVariables.operatorNO;
joTmp.regInfo = jo2303Inpar;
joTmp.middleSettleFlag = "";
joTmp.interfaceDr = GlobalVariables.interfaceDr;
dynamic joHisInfo = new JObject();
joHisInfo.admID = admID;
joHisInfo.billID = billID;
joHisInfo.recordID = recordID;
joTmp.hisInfo = joHisInfo;
jaTmp = new JArray();
jaTmp.Add(joTmp);
joIris2304.Add("params", jaTmp);
joIris2304.session = jaSession;
JObject joHis2304Rtn = invoker.invokeHISService(joIris2304.ToString(), "返回2207A结算结果给HIS");
if (JsonHelper.parseBusinessJson(joHis2304Rtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joHis2304Rtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joHis2304Rtn).ToString();
return rtnResult;
}
else
{
JObject joHisInsuInfo = new JObject();
joHisInsuInfo = JObject.Parse(JsonHelper.getJsonValue(joHis2304Rtn, "result"));
//joHisInsuInfo.Add("setl_id", JsonHelper.getJsonValue(joSetlinfo, "setl_id"));
//joCenterRtn["hisInsuInfo"] = new JObject();
//joCenterRtn["hisInsuInfo"] = joHisInsuInfo;
rtnResult = JsonHelper.getIrisReturnJson(0, "结算成功", joCenterRtn).ToString();
return rtnResult;
}
}
else
{
errorCode = int.Parse(JsonHelper.getJsonValue(joCenterRtn, "infcode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
}
else
{
//返回给前端
rtnResult = JsonHelper.getIrisExceptionJson(-1, "门诊结算", "操作员取消").ToString();
return rtnResult;
}
}
else
{
errorCode = int.Parse(JsonHelper.getJsonValue(joCenterRtn, "infcode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-100, joCenterRtn["err_msg"].ToString(), joCenterRtn).ToString();
return rtnResult;
}
}
else
{
errorCode = int.Parse(joCenterRtn["infcode"].ToString());
errorMessage = joCenterRtn["err_msg"].ToString();
rtnResult = JsonHelper.getIrisExceptionJson(-1, "中心返回错误", errorMessage).ToString();
return rtnResult;
}
}
else
{
//返回给前端
rtnResult = JsonHelper.getIrisExceptionJson(-1,"门诊结算" , "操作员取消").ToString();
return rtnResult;
}
}
}
case "M5C"://门诊结算撤销
{
//获HIS传过来的信息
admID = JsonHelper.getJsonValue(joParam, "admID");
mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
string setl_id = JsonHelper.getJsonValue(joParam, "setl_id");
string insuplc_admdvs = GlobalVariables.patientAreaCode;
//获取结算详细信息
string sqlStr = "SELECT * FROM MedInsu_Tables.Settlement WHERE ValidFlag =1 and Hosp_Dr=" + GlobalVariables.hospitalDr + " AND SettlementID='" + setl_id + "'";
JObject joRtn = iServices.querySettlementInfo(sqlStr);
DataTable dtSettlInfo = (DataTable)JsonConvert.DeserializeObject(joRtn["result"]["data"].ToString(), (typeof(DataTable)));
if (dtSettlInfo.Rows.Count != 1)
{
rtnResult = JsonHelper.getIrisReturnJson(-1, "未查询到相关结算信息!", joRtn).ToString();
return rtnResult;
}
int mutualAidFlag = 0;
if (!string.IsNullOrEmpty(dtSettlInfo.Rows[0]["MutualAidFlag"].ToString()))
{
mutualAidFlag = Convert.ToInt32(dtSettlInfo.Rows[0]["MutualAidFlag"].ToString());
}
if (mutualAidFlag > 0)
{
//开启自付界面,因涉及到多次自付
MutualAid frmMA = new MutualAid(setl_id);
if (frmMA.dtSettlInfo.Rows.Count != 0)
{
frmMA.WindowState = FormWindowState.Maximized;
if (frmMA.ShowDialog() == DialogResult.OK)
{
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-1, "收款员取消共济支付撤销!", null).ToString();
return rtnResult;
}
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-1, "开启共济支付失败,原因为未检测到有效的被共济人的医保结算数据!", null).ToString();
return rtnResult;
}
}
//组织入参
dynamic joTmp = new JObject();
joTmp.mdtrt_id = mdtrt_id;
joTmp.psn_no = psn_no;
joTmp.setl_id = setl_id;
joTmp.expContent = "";
JObject joData = new JObject();
joData.Add("data", joTmp);
//好后上传给中心
//string inpar = GlobalVariables.SetJsonParam("2405", joTmp).ToString();
JObject jo2305CenterRtn = invoker.InvokeCenterService("2208", joData.ToString());
//将中心返回的结果返回HIS 调用HIS服务进行保存
if (JsonHelper.parseCenterReturnJson(jo2305CenterRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisReturnJson(-1, errorMessage, jo2305CenterRtn).ToString();
return rtnResult;
}
else
{
joTmp = new JObject();
joTmp.admID = adm_Dr;
joTmp.PersonalNO = psn_no;
joTmp.mdtrt_id = mdtrt_id;
joTmp.setl_id = setl_id;
joTmp.newSetlId = JsonHelper.getJsonValue(jo2305CenterRtn, "output.setlinfo.setl_id");
JObject jo2305IrisRtn = iServices.cancleSettlement(joTmp);
if (JsonHelper.parseBusinessJson(jo2305IrisRtn, out errorMessage) != 0)
{
errorMessage = "中心取消结算成功但云HIS平台取消失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisReturnJson(-1, errorMessage, jo2305IrisRtn).ToString();
return rtnResult;
}
else
{
//取消费用传送
//组织入参
joTmp = new JObject();
joTmp.chrg_bchno = "0000";
joTmp.mdtrt_id = mdtrt_id;
joTmp.psn_no = psn_no;
joTmp.expContent = "";
joData = new JObject();
joData.Add("data", joTmp);
//组织好后上传给中心
JObject joCenterRtn = invoker.InvokeCenterService("2205", joData.ToString());
if (joCenterRtn["infcode"].ToString() == "0")
{
rtnResult = JsonHelper.getIrisReturnJson(0, "", joCenterRtn).ToString();
//删除医保传送表的数据
joTmp = new JObject();
joTmp.code = "09010048";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = adm_Dr;
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2301DeleteRtn = invoker.invokeInsuService(joTmp.ToString(), "删除门诊明细");
if (JsonHelper.parseBusinessJson(joIris2301DeleteRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2301DeleteRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIris2301DeleteRtn).ToString();
return rtnResult;
}
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-100, joCenterRtn["err_msg"].ToString(), joCenterRtn).ToString();
MessageBox.Show("取消失败: " + joCenterRtn["err_msg"].ToString());
}
//取消登记
//组织挂号入参
JObject joCancleRegInpar = new JObject();
joCancleRegInpar.Add("psn_no", psn_no);
joCancleRegInpar.Add("mdtrt_id", mdtrt_id);
joCancleRegInpar.Add("ipt_otp_no", admID);
JObject joRegInput = new JObject();
joRegInput.Add("data", joCancleRegInpar);
//取消挂号信息
JObject jo2202Rtn = invoker.InvokeCenterService("2202", joRegInput.ToString());
if (JsonHelper.parseCenterReturnJson(jo2202Rtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisReturnJson(-1, errorMessage, jo2202Rtn).ToString();
return rtnResult;
}
else
{
joTmp = new JObject();
joTmp.admID = admID;
joTmp.PersonalNO = psn_no;
joTmp.InsuRegID = mdtrt_id;
joTmp.Add("billID", "");
joTmp.Type = 3;
joTmp.CancleRegDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
JObject jo2404IrisRtn = iServices.cancleRegisterInfo(joTmp);
if (JsonHelper.parseBusinessJson(jo2404IrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(jo2404IrisRtn["errorCode"].ToString());
errorMessage = "中心取消登记成功但云HIS平台取消挂号信息失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2404IrisRtn).ToString();
return rtnResult;
}
else
{
//调用HIS服务
dynamic joIris2208 = new JObject();
joTmp = new JObject();
joIris2208.code = "05110008";
joTmp = joParam.DeepClone();
//joTmp.billID = billID;
joTmp.updateUserID = GlobalVariables.operatorNO;
joTmp.middleSettleFlag = "";
JArray jaTmp = new JArray();
jaTmp.Add(joTmp);
joIris2208.Add("params", jaTmp);
joIris2208.Add("session", jaSession);
JObject joHis2208Rtn = invoker.invokeHISService(joIris2208.ToString(), "返回2208结算撤销结果给HIS");
if (JsonHelper.parseBusinessJson(joHis2208Rtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joHis2208Rtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joHis2208Rtn).ToString();
return rtnResult;
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(0, "取消结算成功", null).ToString();
return rtnResult;
}
}
}
}
}
break;
}
case "Z4"://住院预结算
{
GlobalVariables.hisDischargeTime = Convert.ToDateTime(JsonHelper.getJsonValue(joInParam, "insuAdmObj.disDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
ChooseCard cc = new ChooseCard();
cc.ShowDialog();
//调用银海控件
YinHaiCom yinHai = new YinHaiCom();
yinHai.Init();
JObject jo2303YinhaiInput = GlobalVariables.setYinHaiParam("2303");
string yinhaiRtn = "";
yinHai.Call("2303", jo2303YinhaiInput.ToString(), out yinhaiRtn);
JObject joyinHaiRtn = JObject.Parse(yinhaiRtn);
GlobalVariables.writeLog("2303", jo2303YinhaiInput.ToString(), joyinHaiRtn.ToString());
if (JsonHelper.getJsonValue(joyinHaiRtn, "code") != "1")
{
rtnResult = JsonHelper.getIrisExceptionJson(-100, "Business.Download", "银海控件调用失败(2303):" + errorMessage).ToString();
return rtnResult;
}
//解析控件返回的参数
JObject joYinhaiData = JObject.Parse(JsonHelper.getJsonValue(joyinHaiRtn, "data"));
//GlobalVariables.patientAreaCode = JsonHelper.getJsonValue(joYinhaiData, "insuplc_admdvs");
//调用IRIS获取医保各项金额
dynamic joTmp = new JObject();
joTmp = new JObject();
joTmp.code = "09010049";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = JsonHelper.getJsonValue(joParam, "admID");
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2303SumFeeRtn = invoker.invokeInsuService(joTmp.ToString(), "获取各项费用汇总");
if (JsonHelper.parseBusinessJson(joIris2303SumFeeRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2303SumFeeRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIris2303SumFeeRtn).ToString();
return rtnResult;
}
//解析返回的金额
JObject joSumFeeData = JObject.Parse(JsonHelper.getJsonValue(joIris2303SumFeeRtn, "data"));
//选择结算方式等
OutpatientRegistration frmReg = new OutpatientRegistration();
frmReg.dblkcbxInsuranceType.Enabled = true;
if (frmReg.ShowDialog() == DialogResult.OK)
{
JObject jo2303Inpar = new JObject();
jo2303Inpar.Add("psn_no", GlobalVariables.psn_no);
jo2303Inpar.Add("mdtrt_cert_type", JsonHelper.getJsonValue(joYinhaiData, "mdtrt_cert_type"));
jo2303Inpar.Add("mdtrt_cert_no", JsonHelper.getJsonValue(joYinhaiData, "mdtrt_cert_no"));
jo2303Inpar.Add("medfee_sumamt", JsonHelper.getJsonValue(joSumFeeData, "Sumamt"));
jo2303Inpar.Add("psn_setlway", frmReg.psn_setlway); //结算方式
jo2303Inpar.Add("mdtrt_id", JsonHelper.getJsonValue(joParam, "mdtrt_id"));
jo2303Inpar.Add("acct_used_flag", frmReg.personAccountUsedFlag);//个人账户使用标志
jo2303Inpar.Add("insutype", frmReg.insuType);//险种类型
jo2303Inpar.Add("insuplc_admdvs", JsonHelper.getJsonValue(joYinhaiData, "insuplc_admdvs"));
jo2303Inpar.Add("mdtrtarea_admvs", GlobalVariables.hospitalAreaCode);
jo2303Inpar.Add("invono", "");
jo2303Inpar.Add("mid_setl_flag", "0");
jo2303Inpar.Add("fulamt_ownpay_amt", JsonHelper.getJsonValue(joSumFeeData, "FullOwnPayAmount"));
jo2303Inpar.Add("overlmt_selfpay", JsonHelper.getJsonValue(joSumFeeData, "OverLimitAmount"));
jo2303Inpar.Add("preselfpay_amt", JsonHelper.getJsonValue(joSumFeeData, "PreSelfPayAmount"));
jo2303Inpar.Add("dscgTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
jo2303Inpar.Add("expContent", "");
//上传给中心
JObject joData = new JObject();
joData.Add("data",jo2303Inpar);
JObject joCenterRtn = invoker.InvokeCenterService("2303", joData.ToString());
if (JsonHelper.parseCenterReturnJson(joCenterRtn,out errorMessage) == 0)
{
JObject joSetlinfo = JObject.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.setlinfo"));
//数据返回给HIS
//dynamic joIris2303 = new JObject();
//joTmp = new JObject();
//joIris2303.code = "05110006";
//joTmp.HospitalDr = GlobalVariables.hospitalDr;
//joTmp.admID = JsonHelper.getJsonValue(joParam, "admID");
//joTmp.billID = "";
//joTmp.insuPrePayInfo = joSetlinfo;
//joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
//joTmp.updateUserID = GlobalVariables.operatorNO;
//joIris2303.Add("params", joTmp);
//JObject joHis2303Rtn = invoker.invokeInsuService(joIris2303.ToString(), "返回2303预结算结果给HIS");
//if (JsonHelper.parseBusinessJson(joHis2303Rtn, out errorMessage) != 0)
//{
// errorCode = int.Parse(JsonHelper.getJsonValue(joHis2303Rtn, "errorCode"));
// rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joHis2303Rtn).ToString();
// return rtnResult;
//}
//else//展示界面
//{
// JObject joOutput = JObject.FromObject(joCenterRtn["output"]);
// SettlementInfo frmSettlment = new SettlementInfo(joOutput);
// //相关信息转换到登记面板
// if (frmSettlment.ShowDialog() == DialogResult.OK)
// {
// MessageBox.Show("111");
// }
//}
//展示结算信息
JObject joOutput = JObject.FromObject(joCenterRtn["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", "09010055");
joConvertCode.Add("params", jaConvertCode);
InvokeHelper invoker = new InvokeHelper();
JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "结算信息编码转换");
SettlementInfo frmSettlment = new SettlementInfo(joConvertCodeRtn);
//相关信息转换到结算信息面板
if (frmSettlment.ShowDialog() == DialogResult.OK)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joCenterRtn, "infcode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
else
{
errorCode = int.Parse(JsonHelper.getJsonValue(joCenterRtn, "infcode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
}
else
{
errorCode = int.Parse(JsonHelper.getJsonValue(joCenterRtn, "infcode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-100, "收款员取消结算!", null).ToString();
return rtnResult;
}
break;
}
case "Z4C"://住院预结算撤销
{
rtnResult = JsonHelper.getIrisReturnJson(-100, "该接口不支持预结算取消!", null).ToString();
//return rtnResult;
break;
}
case "Z5"://住院结算
{
GlobalVariables.hisDischargeTime = Convert.ToDateTime(JsonHelper.getJsonValue(joInParam, "insuAdmObj.disDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
ChooseCard cc = new ChooseCard();
cc.ShowDialog();
mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
admID = JsonHelper.getJsonValue(joParam, "admID");
billID = JsonHelper.getJsonValue(joParam, "billID");
GlobalVariables.psn_no = psn_no;
YinHaiCom yinHai = new YinHaiCom();
yinHai.Init();
//出院登记
//调用服务获取登记信息
dynamic joTmp = new JObject();
joTmp.mdtrt_id = mdtrt_id;
joTmp.type = 1;
joTmp.admID = adm_Dr;
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.InterfaceDr = GlobalVariables.interfaceDr;
JObject joRegInfo = invoker.invokeInsuService(JsonHelper.getIrisServiceInparamBaseJson("09010050", joTmp).ToString(), "获取登记信息");
GlobalVariables.med_type = JsonHelper.getJsonValue(joRegInfo, "data.MedicalType");
GlobalVariables.insutype = JsonHelper.getJsonValue(joRegInfo, "data.InsuType");
GlobalVariables.mdtrt_cert_type = JsonHelper.getJsonValue(joRegInfo, "data.CertificateType");
GlobalVariables.mdtrt_cert_no = JsonHelper.getJsonValue(joRegInfo, "data.CertificateNO");
GlobalVariables.psn_cert_type = JsonHelper.getJsonValue(joRegInfo, "data.CertificateType");
GlobalVariables.certno = JsonHelper.getJsonValue(joRegInfo, "data.CertificateNO");
GlobalVariables.insuplc_admdvs = JsonHelper.getJsonValue(joRegInfo, "data.InsuranceAreaCode");
//调用服务获取门诊诊断信息
dynamic joIrisParam = new JObject();
JArray jaIrisParams = new JArray();
JObject joIrisTmp = new JObject();
joIrisParam.code = "05110001";
joIrisParam.session = jaSession;
joIrisTmp.Add("admID", adm_Dr);
joIrisTmp.Add("psn_no", psn_no);
jaIrisParams.Add(joIrisTmp);
joIrisParam.Add("params", JArray.FromObject(jaIrisParams));
JObject joIrisRtn = invoker.invokeHISService(joIrisParam.ToString(), "05110001");
if (JsonHelper.parseBusinessJson(joIrisRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIrisRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIrisRtn).ToString();
return rtnResult;
}
#region 2022.10.28 增加判断
//因为诊断重复,通过诊断类型来区分
string dscg_maindiag_code = "", dscg_maindiag_name = "";
JArray jaDiagnoses = JArray.Parse(JsonHelper.getJsonValue(joIrisRtn, "diseinfo"));
JArray jaConvertedDiagnoses = new JArray();
JArray jaInPatDiagnoses = new JArray();
JArray jaOutPatDiagnoses = new JArray();
for (int i = 0; i < jaDiagnoses.Count; i++)
{
string diag_type = JsonHelper.getJsonValue((JObject)jaDiagnoses[i], "diag_type");
switch (diag_type)
{
case "1":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
break;
}
case "2":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
break;
}
case "3":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
break;
}
case "4":
{
jaDiagnoses[i]["diag_type_name"] = new JObject();
jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
break;
}
}
if (jaDiagnoses[i]["diaTypeCode"].ToString() == "ADD") //ADD 入院 OPD 门诊
{
jaInPatDiagnoses.Add(jaDiagnoses[i]);
}
if (jaDiagnoses[i]["diaTypeCode"].ToString() == "DIS") //ADD 入院 OPD 门诊 DIS 出院
{
jaOutPatDiagnoses.Add(jaDiagnoses[i]);
}
}
if (jaOutPatDiagnoses.Count > 0)
{
jaConvertedDiagnoses = (JArray)jaOutPatDiagnoses.DeepClone();
}
else
{
jaConvertedDiagnoses = (JArray)jaInPatDiagnoses.DeepClone();
}
for (int i = 0; i < jaConvertedDiagnoses.Count; i++)
{
jaConvertedDiagnoses[i]["diag_srt_no"] = i + 1;
if (jaConvertedDiagnoses[i]["maindiag_flag"].ToString() == "1")
{
dscg_maindiag_code = jaConvertedDiagnoses[i]["diag_code"].ToString();
dscg_maindiag_name = jaConvertedDiagnoses[i]["diag_name"].ToString();
}
}
#endregion
//显示登记面板
OutpatientRegistration frmReg = new OutpatientRegistration();
frmReg.dblkcbxInsuranceType.Enabled = true;
//相关信息转换到登记面板
JObject joHisPatInfo = JObject.Parse(JsonHelper.getJsonValue(joIrisRtn, "mdtrtinfo"));
DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
int selectedIndex = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["Code"].ToString() == GlobalVariables.insutype)
{
selectedIndex = i;
frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
frmReg.insuType = dt.Rows[i]["Code"].ToString();
}
}
dt = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["Code"].ToString() == GlobalVariables.med_type)
{
frmReg.dblkcbxMedicalType.Text = dt.Rows[i]["Name"].ToString();
frmReg.med_type = dt.Rows[i]["Code"].ToString();
}
}
DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
for (int i = 0; i < dtMedType.Rows.Count; i++)
{
if (dtMedType.Rows[i]["Code"].ToString() == "21")
{
frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
}
}
DataTable dtSettlWay = (DataTable)frmReg.dblkcbxSettelmentWay.DataSource;
for (int i = 0; i < dtSettlWay.Rows.Count; i++)
{
if (dtSettlWay.Rows[i]["Code"].ToString() == "01")
{
frmReg.dblkcbxSettelmentWay.Text = dtSettlWay.Rows[i]["Name"].ToString();
frmReg.psn_setlway = dtSettlWay.Rows[i]["Code"].ToString();
}
}
//frmReg.DtDiagnose = (DataTable)joIrisRtn["diseinfo"].ToObject(typeof(DataTable));
frmReg.DtDiagnose = (DataTable)jaConvertedDiagnoses.ToObject(typeof(DataTable));
//定义一些登记变量,
string insutype = "";
string dise_codg = "";
string dise_name = "";
string oprn_oprt_code = "";
string oprn_oprt_name = "";
string psn_setlway = "";
string personAccountUsedFlag = "";
//string insutype = "";
//string dise_codg = "";
//string insutype = "";
//string dise_codg = "";
//string insutype = "";
//string dise_codg = "";
if (frmReg.ShowDialog() == DialogResult.OK)
{
insutype = frmReg.insuType;
dise_codg = frmReg.diseCodg;
dise_name = frmReg.diseName;
oprn_oprt_code = frmReg.oprn_oprt_code;
oprn_oprt_name = frmReg.oprn_oprt_name;
psn_setlway = frmReg.psn_setlway;
personAccountUsedFlag = frmReg.personAccountUsedFlag;
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(-100, "收款员取消结算!", null).ToString();
return rtnResult;
}
JObject joReg = new JObject();
JObject joMdtrtinfo = new JObject();
//JArray jaDiag = JArray.FromObject(joIrisRtn["diseinfo"]);
JArray jaDiag = (JArray)jaConvertedDiagnoses.DeepClone();
joMdtrtinfo.Add("mdtrt_id", mdtrt_id);
joMdtrtinfo.Add("psn_no", GlobalVariables.psn_no); //人员编号
joMdtrtinfo.Add("insutype", frmReg.insuType); //险种类型
//joMdtrtinfo.Add("coner_name", JsonHelper.getJsonValue(joHisPatInfo, "coner_name")); //联系人姓名
//joMdtrtinfo.Add("tel", JsonHelper.getJsonValue(joHisPatInfo, "tel")); //联系电话
joMdtrtinfo.Add("endtime", GlobalVariables.hisDischargeTime); //结束时间
joMdtrtinfo.Add("dise_codg", frmReg.diseCodg); //病种编码
joMdtrtinfo.Add("dise_name", frmReg.diseName); //病种名称
joMdtrtinfo.Add("oprn_oprt_code", frmReg.oprn_oprt_code); //手术操作代码
joMdtrtinfo.Add("oprn_oprt_name", frmReg.oprn_oprt_name); //手术操作名称
joMdtrtinfo.Add("fpsc_no", JsonHelper.getJsonValue(joHisPatInfo, "fpsc_no")); //计划生育服务证号
joMdtrtinfo.Add("matn_type", JsonHelper.getJsonValue(joHisPatInfo, "matn_type")); //生育类别
joMdtrtinfo.Add("birctrl_type", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_type")); //计划生育手术类别
joMdtrtinfo.Add("latechb_flag", JsonHelper.getJsonValue(joHisPatInfo, "latechb_flag")); //晚育标志
joMdtrtinfo.Add("geso_val", JsonHelper.getJsonValue(joHisPatInfo, "geso_val")); //孕周数
joMdtrtinfo.Add("fetts", JsonHelper.getJsonValue(joHisPatInfo, "fetts")); //胎次
joMdtrtinfo.Add("fetus_cnt", JsonHelper.getJsonValue(joHisPatInfo, "fetus_cnt")); //胎儿数
joMdtrtinfo.Add("pret_flag", JsonHelper.getJsonValue(joHisPatInfo, "pret_flag")); //早产标志
joMdtrtinfo.Add("birctrl_matn_date", JsonHelper.getJsonValue(joHisPatInfo, "birctrl_matn_date")); //计划生育手术或生育日期
joMdtrtinfo.Add("cop_flag", JsonHelper.getJsonValue(joHisPatInfo, "dise_type_code")); //伴有并发症标志
joMdtrtinfo.Add("dscg_dept_codg", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_codg")); //出院科室编码
joMdtrtinfo.Add("dscg_dept_name", JsonHelper.getJsonValue(joHisPatInfo, "adm_dept_name")); //出院科室名称
joMdtrtinfo.Add("dscg_bed", JsonHelper.getJsonValue(joHisPatInfo, "adm_bed")); //出院床位
joMdtrtinfo.Add("dscg_way", "1"); //离院方式
joMdtrtinfo.Add("die_date", ""); //死亡日期
joMdtrtinfo.Add("expContent", ""); //字段扩展
joMdtrtinfo.Add("insuplc_admdvs", GlobalVariables.patientAreaCode); //参保地医保区划
joMdtrtinfo.Add("mdtrtarea_admvs", GlobalVariables.hospitalAreaCode); //就医地医保区划
joReg.Add("dscginfo", joMdtrtinfo);
//增加就诊ID
for (int i = 0; i < jaDiag.Count; i++)
{
jaDiag[i]["mdtrt_id"] = new JObject();
jaDiag[i]["mdtrt_id"] = mdtrt_id;
}
joReg.Add("diseinfo", jaDiag);
//组织好后上传给中心
JObject joCenterRtn = invoker.InvokeCenterService("2402", joReg.ToString());
//将中心返回的结果返回HIS,调用HIS服务进行保存
if (JsonHelper.parseCenterReturnJson(joCenterRtn, out errorMessage) == 0)
{
//插入云医保平台
//joTmp = new JObject();
//joTmp.admdr = adm_Dr;
//joTmp.patname = "";
//joTmp.insu_reg_id = JsonHelper.getJsonValue(joCenterRtn, "output.result.mdtrt_id");
//joTmp.regstate = 2;
//joTmp.validflag = 1;
//joTmp.type = 2;
//joTmp.updateUserID = GlobalVariables.operatorNO;
//JObject josave2401ToIris = iServices.saveRegisterInfo(joMdtrtinfo, joTmp);
//if (JsonHelper.parseBusinessJson(josave2401ToIris, out errorMessage) != 0)
//{
// errorMessage = "中心登记成功但医保平台保存失败,请联系管理员!" + errorMessage;
// rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
// return rtnResult;
//}
}
else
{
errorCode = int.Parse(joCenterRtn["infcode"].ToString());
rtnResult = JsonHelper.getIrisExceptionJson(errorCode,"出院登记", errorMessage).ToString();
return rtnResult;
}
//预结算
JObject jo2303YinhaiInput = GlobalVariables.setYinHaiParam("2303");
string yinhaiRtn = "";
yinHai.Call("2303", jo2303YinhaiInput.ToString(), out yinhaiRtn);
JObject joyinHaiRtn = JObject.Parse(yinhaiRtn);
GlobalVariables.writeLog("2303", jo2303YinhaiInput.ToString(), joyinHaiRtn.ToString());
if (JsonHelper.getJsonValue(joyinHaiRtn, "code") != "1")
{
errorMessage = JsonHelper.getJsonValue(joyinHaiRtn, "message");
rtnResult = JsonHelper.getIrisExceptionJson(-100, "银海控件调用(2303)", errorMessage).ToString();
return rtnResult;
}
//解析控件返回的参数
JObject joYinhaiData = JObject.Parse(JsonHelper.getJsonValue(joyinHaiRtn, "data"));
//GlobalVariables.patientAreaCode = JsonHelper.getJsonValue(joYinhaiData, "insuplc_admdvs");
//调用IRIS获取医保各项金额
joTmp = new JObject();
joTmp = new JObject();
joTmp.code = "09010049";
joTmp.HospitalDr = GlobalVariables.hospitalDr;
joTmp.admID = JsonHelper.getJsonValue(joParam, "admID");
joTmp.mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
joTmp.updateUserID = GlobalVariables.operatorNO;
JObject joIris2303SumFeeRtn = invoker.invokeInsuService(joTmp.ToString(), "获取各项费用汇总");
if (JsonHelper.parseBusinessJson(joIris2303SumFeeRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joIris2303SumFeeRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joIris2303SumFeeRtn).ToString();
return rtnResult;
}
//解析返回的金额
JObject joSumFeeData = JObject.Parse(JsonHelper.getJsonValue(joIris2303SumFeeRtn, "data"));
//组织预结算入参
JObject jo2303Inpar = new JObject();
jo2303Inpar.Add("psn_no", GlobalVariables.psn_no);
jo2303Inpar.Add("mdtrt_cert_type", JsonHelper.getJsonValue(joYinhaiData, "mdtrt_cert_type"));
jo2303Inpar.Add("mdtrt_cert_no", JsonHelper.getJsonValue(joYinhaiData, "mdtrt_cert_no"));
jo2303Inpar.Add("medfee_sumamt", JsonHelper.getJsonValue(joSumFeeData, "Sumamt"));
jo2303Inpar.Add("psn_setlway", frmReg.psn_setlway); //结算方式
jo2303Inpar.Add("mdtrt_id", JsonHelper.getJsonValue(joParam, "mdtrt_id"));
jo2303Inpar.Add("acct_used_flag", frmReg.personAccountUsedFlag);//个人账户使用标志
jo2303Inpar.Add("insutype", frmReg.insuType);//险种类型
jo2303Inpar.Add("insuplc_admdvs", JsonHelper.getJsonValue(joYinhaiData, "insuplc_admdvs"));
jo2303Inpar.Add("mdtrtarea_admvs", GlobalVariables.hospitalAreaCode);
jo2303Inpar.Add("invono", "");
jo2303Inpar.Add("mid_setl_flag", "0");
jo2303Inpar.Add("fulamt_ownpay_amt", JsonHelper.getJsonValue(joSumFeeData, "FullOwnPayAmount"));
jo2303Inpar.Add("overlmt_selfpay", JsonHelper.getJsonValue(joSumFeeData, "OverLimitAmount"));
jo2303Inpar.Add("preselfpay_amt", JsonHelper.getJsonValue(joSumFeeData, "PreSelfPayAmount"));
jo2303Inpar.Add("dscgTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
jo2303Inpar.Add("expContent", "");
//上传给中心
JObject joData = new JObject();
joData.Add("data", jo2303Inpar);
joCenterRtn = invoker.InvokeCenterService("2303", joData.ToString());
if (JsonHelper.parseCenterReturnJson(joCenterRtn, out errorMessage) == 0)
{
//展示结算信息
JObject joOutput = JObject.FromObject(joCenterRtn["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", "09010055");
joConvertCode.Add("params", jaConvertCode);
InvokeHelper invoker = new InvokeHelper();
JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "结算信息编码转换");
SettlementInfo frmSettlment = new SettlementInfo(joConvertCodeRtn);
//相关信息转换到结算信息面板
if (frmSettlment.ShowDialog() != DialogResult.OK)
{
//取消出院登记
//组织入参
joTmp = new JObject();
joTmp.mdtrt_id = mdtrt_id;
joTmp.psn_no = psn_no;
joData = new JObject();
joData.Add("data", joTmp);
//好后上传给中心
//string inpar = GlobalVariables.SetJsonParam("2405", joTmp).ToString();
JObject jo2405CenterRtn = invoker.InvokeCenterService("2405", joData.ToString());
//将中心返回的结果返回HIS 调用HIS服务进行保存
if (JsonHelper.parseCenterReturnJson(jo2405CenterRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(-1, "预结算撤销", "取消出院登记失败").ToString();
return rtnResult;
}
else
{
rtnResult = JsonHelper.getIrisExceptionJson(-1, "结算提示:", "操作员取消结算").ToString();
return rtnResult;
}
}
}
else
{
errorCode = int.Parse(JsonHelper.getJsonValue(joCenterRtn, "infcode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
//正式结算
//调用银海控件
JObject jo2304YinhaiInput = GlobalVariables.setYinHaiParam("2304");
yinhaiRtn = "";
yinHai.Call("2304", jo2304YinhaiInput.ToString(), out yinhaiRtn);
joyinHaiRtn = JObject.Parse(yinhaiRtn);
GlobalVariables.writeLog("2304", jo2304YinhaiInput.ToString(), joyinHaiRtn.ToString());
if (JsonHelper.getJsonValue(joyinHaiRtn, "code") != "1")
{
rtnResult = JsonHelper.getIrisExceptionJson(-100, "Business.Download", "银海控件调用失败(2304):" + errorMessage).ToString();
return rtnResult;
}
//解析控件返回的参数
joYinhaiData = JObject.Parse(JsonHelper.getJsonValue(joyinHaiRtn, "data"));
JObject joExpContent = new JObject();
joExpContent.Add("card_token", JsonHelper.getJsonValue(joYinhaiData, "card_token"));
JObject jo2304Inpar = new JObject();
jo2304Inpar.Add("psn_no", GlobalVariables.psn_no);
jo2304Inpar.Add("mdtrt_cert_type", JsonHelper.getJsonValue(joYinhaiData, "mdtrt_cert_type"));
jo2304Inpar.Add("mdtrt_cert_no", JsonHelper.getJsonValue(joYinhaiData, "mdtrt_cert_no"));
jo2304Inpar.Add("medfee_sumamt", JsonHelper.getJsonValue(joSumFeeData, "Sumamt"));
jo2304Inpar.Add("psn_setlway", frmReg.psn_setlway); //结算方式
jo2304Inpar.Add("mdtrt_id", JsonHelper.getJsonValue(joParam, "mdtrt_id"));
jo2304Inpar.Add("acct_used_flag", frmReg.personAccountUsedFlag);//个人账户使用标志
jo2304Inpar.Add("insutype", frmReg.insuType);//险种类型
jo2304Inpar.Add("insuplc_admdvs", JsonHelper.getJsonValue(joYinhaiData, "insuplc_admdvs"));
jo2304Inpar.Add("mdtrtarea_admvs", GlobalVariables.hospitalAreaCode);
jo2304Inpar.Add("invono", "");
jo2304Inpar.Add("mid_setl_flag", "0");
jo2304Inpar.Add("fulamt_ownpay_amt", JsonHelper.getJsonValue(joSumFeeData, "FullOwnPayAmount"));
jo2304Inpar.Add("overlmt_selfpay", JsonHelper.getJsonValue(joSumFeeData, "OverLimitAmount"));
jo2304Inpar.Add("preselfpay_amt", JsonHelper.getJsonValue(joSumFeeData, "PreSelfPayAmount"));
jo2304Inpar.Add("dscgTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
jo2304Inpar.Add("expContent", joExpContent);
//上传给中心
joData = new JObject();
joData.Add("data", jo2304Inpar);
joCenterRtn = invoker.InvokeCenterService("2304", joData.ToString());
if (JsonHelper.parseCenterReturnJson(joCenterRtn, out errorMessage) == 0)
{
//返回给云医保平台
JObject joSetlinfo = JObject.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.setlinfo"));
joSetlinfo.Add("HospitalDr", GlobalVariables.hospitalDr);
joSetlinfo.Add("admID", JsonHelper.getJsonValue(joParam, "admID"));
joSetlinfo.Add("ValidFlag", 1);
joSetlinfo.Add("BillType", 1);
joSetlinfo.Add("updateUserID", GlobalVariables.operatorNO);
joSetlinfo.Add("OccurTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
joSetlinfo.Add("billID", billID);
joSetlinfo.Add("recordID", recordID);
joSetlinfo.Add("msgid", GlobalVariables.msgid);
joSetlinfo.Add("interfaceDr", GlobalVariables.interfaceDr);
joSetlinfo.Add("admType", 2);
joSetlinfo.Add("insuplc_admdvs", GlobalVariables.patientAreaCode);
joTmp = new JObject();
joTmp.code = "09010051";
JArray jaTmp = new JArray();
jaTmp.Add(joSetlinfo);
joTmp.Add("params", jaTmp);
JObject joRtn = invoker.invokeInsuService(joTmp.ToString(), "插入结算信息");
if (JsonHelper.parseBusinessJson(joRtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joRtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joRtn).ToString();
return rtnResult;
}
JObject joSetlDetail = new JObject();
joSetlDetail.Add("HospitalDr", GlobalVariables.hospitalDr);
joSetlDetail.Add("InterfaceDr", GlobalVariables.interfaceDr);
joSetlDetail.Add("MdtrtID", mdtrt_id);
joSetlDetail.Add("SettlementID", JsonHelper.getJsonValue(joSetlinfo, "setl_id"));
joSetlDetail.Add("AdmID", admID);
joSetlDetail.Add("updateUserID", GlobalVariables.operatorNO);
JArray jaSetlDetail = JArray.Parse(JsonHelper.getJsonValue(joCenterRtn, "output.setldetail"));
joSetlDetail.Add("setldetail", jaSetlDetail);
joTmp = new JObject();
joTmp.code = "09010056";
jaTmp = new JArray();
jaTmp.Add(joSetlDetail);
joTmp.Add("params", jaTmp);
JObject joInsertSetlDetail = invoker.invokeInsuService(joTmp.ToString(), "插入结算明细信息");
if (JsonHelper.parseBusinessJson(joInsertSetlDetail, out errorMessage) != 0)
{
//errorCode = int.Parse(JsonHelper.getJsonValue(joRtn, "errorCode"));
//rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joRtn).ToString();
MessageBox.Show("插入结算明细信息:" + errorMessage);
}
//返回给HIS
//数据返回给HIS
dynamic joIris2304 = new JObject();
joTmp = new JObject();
joIris2304.code = "05110007";
joTmp = joParam.DeepClone();
joTmp.insuPayInfo = joSetlinfo;
joTmp.updateUserID = GlobalVariables.operatorNO;
joTmp.middleSettleFlag = "";
jaTmp = new JArray();
jaTmp.Add(joTmp);
joIris2304.Add("params", jaTmp);
joIris2304.Add("session", jaSession);
JObject joHis2304Rtn = invoker.invokeHISService(joIris2304.ToString(), "返回2304结算结果给HIS");
if (JsonHelper.parseBusinessJson(joHis2304Rtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joHis2304Rtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joHis2304Rtn).ToString();
return rtnResult;
}
else
{
JObject joHisInsuInfo = new JObject();
joHisInsuInfo = JObject.Parse(JsonHelper.getJsonValue(joHis2304Rtn, "result"));
joHisInsuInfo.Add("setl_id", JsonHelper.getJsonValue(joSetlinfo, "setl_id"));
joCenterRtn["hisInsuInfo"] = new JObject();
joCenterRtn["hisInsuInfo"] = joHisInsuInfo;
rtnResult = JsonHelper.getIrisReturnJson(0, "结算成功", joCenterRtn).ToString();
return rtnResult;
}
}
else
{
errorCode = int.Parse(JsonHelper.getJsonValue(joCenterRtn, "infcode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joCenterRtn).ToString();
return rtnResult;
}
break;
}
case "Z5C"://住院结算撤销
{
//获HIS传过来的信息
adm_Dr = JsonHelper.getJsonValue(joParam, "admID");
mdtrt_id = JsonHelper.getJsonValue(joParam, "mdtrt_id");
psn_no = JsonHelper.getJsonValue(joParam, "psn_no");
string setl_id = JsonHelper.getJsonValue(joParam, "setl_id");
string insuplc_admdvs = GlobalVariables.patientAreaCode;
//组织入参
dynamic joTmp = new JObject();
joTmp.mdtrt_id = mdtrt_id;
joTmp.psn_no = psn_no;
joTmp.setl_id = setl_id;
joTmp.expContent = "";
JObject joData = new JObject();
joData.Add("data", joTmp);
//好后上传给中心
//string inpar = GlobalVariables.SetJsonParam("2405", joTmp).ToString();
JObject jo2305CenterRtn = invoker.InvokeCenterService("2305", joData.ToString());
//将中心返回的结果返回HIS 调用HIS服务进行保存
if (JsonHelper.parseCenterReturnJson(jo2305CenterRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisReturnJson(-1, errorMessage, jo2305CenterRtn).ToString();
return rtnResult;
}
else
{
joTmp = new JObject();
joTmp.admID = adm_Dr;
joTmp.PersonalNO = psn_no;
joTmp.mdtrt_id = mdtrt_id;
joTmp.setl_id = setl_id;
joTmp.msgid = GlobalVariables.msgid;
joTmp.newSetlId = JsonHelper.getJsonValue(jo2305CenterRtn, "output.setlinfo.setl_id");
JObject jo2305IrisRtn = iServices.cancleSettlement(joTmp);
if (JsonHelper.parseBusinessJson(jo2305IrisRtn, out errorMessage) != 0)
{
errorMessage = "中心取消结算成功但云HIS平台取消失败,请联系管理员!" + errorMessage;
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, jo2305IrisRtn).ToString();
return rtnResult;
}
else
{
//调用HIS服务
dynamic joIris2305 = new JObject();
joTmp = new JObject();
joIris2305.code = "05110008";
joTmp = joParam.DeepClone();
//joTmp.billID = billID;
joTmp.updateUserID = GlobalVariables.operatorNO;
joTmp.middleSettleFlag = "";
JArray jaTmp = new JArray();
jaTmp.Add(joTmp);
joIris2305.Add("params", jaTmp);
joIris2305.Add("session", jaSession);
JObject joHis2305Rtn = invoker.invokeHISService(joIris2305.ToString(), "返回2304结算结果给HIS");
if (JsonHelper.parseBusinessJson(joHis2305Rtn, out errorMessage) != 0)
{
errorCode = int.Parse(JsonHelper.getJsonValue(joHis2305Rtn, "errorCode"));
rtnResult = JsonHelper.getIrisReturnJson(errorCode, errorMessage, joHis2305Rtn).ToString();
return rtnResult;
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(0, "取消结算成功", null).ToString();
return rtnResult;
}
}
}
break;
}
default:
rtnResult = "传入的业务编码不对!";
break;
}
return rtnResult;
}
catch (Exception ex)
{
JObject joRtn = JsonHelper.getIrisExceptionJson(-100, "Settlement", ex.Message);
rtnResult = joRtn.ToString();
return rtnResult;
}
finally
{
GlobalVariables.writeLog("Settlement", InParam, rtnResult);
}
}
private int InitCom(out string Msg)
{
string msg = "";
try
{
//初始化某些字段
string progID = "YinHai.CHS.InterfaceSCS";
// 与指定 ProgID 关联的类型,即获取相应的Com对象
YinHaiCom = System.Type.GetTypeFromProgID(progID);
// 创建Com的实例
if (YinHaiCom != null)
{
//创建实例
YinHaiComInstance = Activator.CreateInstance(YinHaiCom);
//设置需要设置的参数值
object[] ParamArray = new object[2];
ParamArray[0] = 0;
ParamArray[1] = "";
ParameterModifier[] ParamMods = new ParameterModifier[1];
ParamMods[0] = new ParameterModifier(2); // 初始化为接口参数的个数
ParamMods[0][0] = true;
ParamMods[0][1] = true; // 设置第二个参数为返回参数,调用含有ParameterModifier数组的重载函数
YinHaiCom.InvokeMember("yh_CHS_init", // 接口函数名
BindingFlags.Default | BindingFlags.InvokeMethod,
null,
YinHaiComInstance, // 调用的COM组件
ParamArray, // 参数数组
ParamMods, // 指定返回参数的ParameterModifier数组
null,
null);
Msg = "加载成功!" ;
msg = Msg + "\r\n 返回值:" + ParamArray[0].ToString() + "\r\n 返参:" + ParamArray[1].ToString();
return (int)ParamArray[0];
}
else
{
Msg = "加载失败!";
msg = Msg;
return -1;
}
}
catch (Exception ex)
{
Msg = "初始化异常!" + ex.Message;
msg = Msg;
return -1;
}
finally
{
GlobalVariables.writeLog("InitCom","",msg );
}
}
public string Download(string InParam)
{
string strReturn = string.Empty;
try
{
JObject joInitRtn = JObject.Parse(Init(InParam));
if (JsonHelper.parseBusinessJson(joInitRtn, out errorMessage) != 0)
{
strReturn = JsonHelper.getIrisExceptionJson(-100, "Business.Download", "初始化失败:" + errorMessage).ToString();
return strReturn;
}
//GlobalVariables.getIrisConfig();
JObject joInParam = new JObject();
joInParam = JObject.Parse(InParam);
JArray jaParams = (JArray)joInParam["params"];
JObject joParam = new JObject();
joParam = JObject.FromObject(jaParams[0]);
//GlobalVariables.getInterfaceByHISParam(joParam);
//IrisInterfaceService iris = new IrisInterfaceService();
//JObject joInterface = iris.getCurrentInterface();
//GlobalVariables.getInterfaceInfoByIris(joInterface);
GlobalVariables.printGlobalVariablesVlaue();
//if (InitCom(out errorMessage) != 1)
//{
// strReturn = JsonHelper.getIrisExceptionJson(-100, "Download", errorMessage).ToString();
// return strReturn;
//}
CenterBusiness center = new CenterBusiness();
JObject joSign = new JObject();
center.SignIn(out joSign);
dynamic joData = new JObject();
joData.data = joParam["data"];
//string code = (string)joInParam["code"];
string funNO = (string)joParam["funNO"];
string businessType = joParam["businessType"].ToString();
switch (businessType)
{
case "DirectoryDownload":
{
SubBusiness subBus = new SubBusiness();
string downloadParam = GlobalVariables.SetJsonParam(funNO, joData.ToString());
strReturn = subBus.Download(downloadParam);
break;
}
case "DictionayDownload":
{
SubBusiness subBus = new SubBusiness();
string downloadParam = GlobalVariables.SetJsonParam(funNO, joData.ToString());
strReturn = subBus.downDictionary(downloadParam);
break;
}
}
return strReturn;
}
catch (Exception ex)
{
strReturn = JsonHelper.getIrisExceptionJson(-100, "Download", ex.Message).ToString();
return strReturn;
}
finally
{
GlobalVariables.writeLog("Download",InParam,strReturn);
}
}
#endregion
#region 其他辅助交易
public string AgentFun(string InParam)
{
//返回结果
string rtnResult = string.Empty;
try
{
//环境初始化(获取IRIS配置,接口配置,医保动态库初始化,签到)
JObject joInitRtn = JObject.Parse(Init(InParam));
GlobalVariables.writeLog("1");
//joInitRtn = JObject.Parse(Init(InParam));
if (JsonHelper.parseBusinessJson(joInitRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(-100, "Business.Download", "初始化失败:" + errorMessage).ToString();
return rtnResult;
}
GlobalVariables.writeLog("2");
//解析入参
JObject joInParam = JObject.Parse(InParam);
JArray jaSession = JArray.FromObject(joInParam["session"]);
JArray jaParmas = (JArray)joInParam["params"];
//提取业务类型
string businessType = joInParam["businessType"].ToString();
//JObject joParam = JObject.FromObject(jaParmas[0]);
//JObject joInterface = (JObject)joParam["interfaceInfo"];
JObject joInterface = JObject.Parse(JsonHelper.getJsonValue(joInParam, "interfaceinfo"));
GlobalVariables.writeLog("3");
GlobalVariables.writeLog(businessType);
switch (businessType)
{
case "BasicData"://基础数据维护
{
MessageBox.Show(businessType);
break;
}
case "Exception"://异常处理
{
//显示异常处理界面
HandleException frmEX = new HandleException();
if (frmEX.ShowDialog() == DialogResult.OK)
{
}
break;
}
case "CheckAndClearing"://对账清算
{
GlobalVariables.writeLog("4");
Clearing frm = new Clearing();
GlobalVariables.writeLog("5");
if (frm.ShowDialog() == DialogResult.OK)
{
}
return JsonHelper.getIrisReturnJson(0, "", null).ToString();
}
case "Print"://打印
{
//显示打印界面
SettlementChecklist frmSettlList;
string insuAdmObj = JsonHelper.getJsonValue(joInParam, "insuAdmObj");
if (insuAdmObj == "")
{
frmSettlList = new SettlementChecklist();
}
else
{
JObject joInsuAdmObj = JObject.Parse(insuAdmObj);
frmSettlList = new SettlementChecklist(joInsuAdmObj);
}
if (frmSettlList.ShowDialog() == DialogResult.OK)
{
};
return JsonHelper.getIrisReturnJson(0, "", null).ToString();
break;
}
case "Log"://日志
{
MessageBox.Show(businessType);
break;
}
case "RecordUpload"://上传记录
{
MessageBox.Show(businessType);
break;
}
case "HospitalRegister"://备案
{
MessageBox.Show(businessType);
break;
}
case "MutualAid"://共济结算
{
MutualAid frmMA = new MutualAid();
frmMA.WindowState = FormWindowState.Maximized;
frmMA.ShowDialog();
break;
}
default:
rtnResult = "传入的业务编码不对!";
break;
}
return JsonHelper.getIrisReturnJson(0, rtnResult, null).ToString();
}
catch (Exception e)
{
GlobalVariables.writeLog(e.Message);
return "YC";
}
}
#endregion
#region 平台直连
public string PlatformDirectConnect(string InParam)
{
//设置返回值,错误信息
int errCode;
string errMsg, rtnResult = "", outParam;
try
{
GlobalVariables.writeLog("PlatformDirectConnect 入参:" + JsonHelper.Compress(InParam));
//环境初始化(获取IRIS配置,接口配置,医保动态库初始化,签到)
JObject joInitRtn = JObject.Parse(Init(InParam));
//joInitRtn = JObject.Parse(Init(InParam));
if (JsonHelper.parseBusinessJson(joInitRtn, out errorMessage) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(-100, "Business.Download", "初始化失败:" + errorMessage).ToString();
return rtnResult;
}
//解析入参
JObject joInParam = JObject.Parse(InParam);
JArray jaSession = JArray.FromObject(joInParam["session"]);
JArray jaParmas = (JArray)joInParam["params"];
//提取业务类型
string businessType = joInParam["businessType"].ToString();
JObject joParam = JObject.FromObject(jaParmas[0]);
JObject joInterface = (JObject)joInParam["interfaceinfo"];
string funNO = JsonHelper.getJsonValue(joInParam, "funNO");
InvokeHelper center = new InvokeHelper();
GlobalVariables.patientAreaCode = JsonHelper.getJsonValue(joInParam, "insuplc_admdvs");
JObject joRtn = center.InvokeCenterService(funNO, joParam.ToString());
if (JsonHelper.parseCenterReturnJson(joRtn, out errMsg) != 0)
{
rtnResult = JsonHelper.getIrisExceptionJson(-1, "平台直连错误", errMsg).ToString();
return rtnResult;
}
else
{
rtnResult = JsonHelper.getIrisReturnJson(0, "", joRtn).ToString();
return rtnResult;
}
}
catch (Exception ex)
{
rtnResult = JsonHelper.getIrisExceptionJson(-1, "PlatformDirectConnect 交易", ex.Message).ToString();
return rtnResult;
}
finally
{
GlobalVariables.writeLog("PlatformDirectConnect 出参:" + JsonHelper.Compress(rtnResult));
}
}
#endregion
}
}