using Newtonsoft.Json.Linq;
using PTMedicalInsurance.Helper;
using PTMedicalInsurance.Variables;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PTMedicalInsurance.Business
{
class OPRegProcess : AbstractProcess
{
///
/// 门诊挂号
///
///
///
public JObject OutpatientReg(JObject joPatient)
{
//医保挂号
JObject jo2201Inpar = JObject.Parse(JsonHelper.getDestProperty(joPatient, "data"));
JObject jo2201Rtn = invoker.invokeCenterService(TradeEnum.OutpatientRegistration, jo2201Inpar);
string errMsg = "";
if (JsonHelper.parseCenterRtnValue(jo2201Rtn, out errMsg) != 0)
{
return JsonHelper.setExceptionJson(-1, "医保挂号", errMsg);
}
else
{
Global.pat.mdtrtID = JsonHelper.getDestValue(jo2201Rtn, "output.data.mdtrt_id");
string outParam = "";
//插入患者本次就诊用的参保信息
if (hBus.insertPatCurInsuInfo(joPatient.ToString(), out outParam) != 0)
{
if (DialogResult.Yes != MessageBox.Show(outParam, " 是否继续? ", MessageBoxButtons.YesNo))
{
return JsonHelper.setExceptionJson(-1, "插入患者本次就诊用的参保信息,请联系管理员!是否继续?", outParam);
}
}
}
return jo2201Rtn;
}
///
/// 挂号成功后返回医保的就诊Id(mdtrt_id)
///
///
///
public override CallResult Process(JObject joPatient)
{
JObject jo2201Inpar_plain = JObject.Parse(JsonHelper.getDestProperty(joPatient, "data"));
jo2201Inpar_plain = JObject.Parse(JsonHelper.setCenterInpar("2201", jo2201Inpar_plain));
JObject jo2201Rtn = OutpatientReg(joPatient);
if (jo2201Rtn.ContainsKey("errorCode"))
{
outParam = jo2201Rtn.ToString();
return Error(outParam);
}
//此处先取到就诊信息上传的入参,只要挂号成功就保存到云HIS后台(保存后台需要用到2203入参)
JObject jo2203Inpar = new JObject();
JObject jo2203Inpar_plain = new JObject();
jo2203Inpar.Add("mdtrtinfo", JObject.Parse(JsonHelper.getDestValue(joPatient, "mdtrtinfo")));
jo2203Inpar.Add("diseinfo", JArray.Parse(JsonHelper.getDestValue(joPatient, "diseinfo")));
jo2203Inpar["mdtrtinfo"]["mdtrt_id"] = Global.pat.mdtrtID;
jo2203Inpar_plain = JObject.Parse(JsonHelper.setCenterInpar_plain("2203A", jo2203Inpar));
jo2203Inpar = JObject.Parse(JsonHelper.setCenterInpar("2203A", jo2203Inpar));
//门诊登记信息,插入云医保平台
jo2201Rtn.Add("validflag", 1);
jo2201Rtn.Add("regstate", 1);
jo2201Rtn.Add("type", 3);
if (mIS.saveOutpatRegisterInfo(jo2201Inpar_plain, jo2201Rtn, jo2203Inpar_plain, out outParam) != 0)
{
return Error(-1, "中心登记成功但医保平台保存失败,请联系管理员!");
}
// 返回病人信息
outParam = joPatient.ToString();
return Success();
}
}
}