using Newtonsoft.Json.Linq;
using PTMedicalInsurance.Business.Core.Forms.DischargeAudit;
using PTMedicalInsurance.Helper;
using PTMedicalInsurance.Variables;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PTMedicalInsurance.Business.Core.SelfServiceMachine.Process.InPat
{
class ShowDischargeAuditForm : AbstractProcess
{
AuditForm auditFrm = new AuditForm();
private PTMedicalInsurance.Forms.PatientInsuInfo frmPatientInfo;
private PTMedicalInsurance.Business.Core.Forms.DischargeAudit.AdmissionRegistration admRegForm;
private PTMedicalInsurance.Business.Core.Forms.DischargeAudit.DischargeRegistration disRegForm;
private PTMedicalInsurance.Business.Core.Forms.DischargeAudit.OutpatRegistration outpatRegForm;
private PTMedicalInsurance.Business.Core.Forms.DischargeAudit.GridViewSetter grdSetter = new GridViewSetter();
private PTMedicalInsurance.Business.Core.Forms.DischargeAudit.FeeDetail feeDetailForm = new FeeDetail();
private DataTable dtDisease;
private DataTable dtDiseaseType;
private DataTable dtInsuranceType;
private DataTable dtMedicalType;
private DataTable dtOperation;
private DataTable dtSettelmentWay;
JObject joAuditInfo;
private JArray jaFinalDiagnoses;
private JArray jaAdmRegAuditDetail;
private JArray jaDisRegAuditDetail;
private JArray jaOutpatRegAuditDetail;
private JArray jaFeeDetail;
int admRegAuditDetailCount = 0;
int disRegAuditDetailCount = 0;
int outpatRegAuditDetailCount = 0;
private JObject joHisDiagnoseInfo;
private int auditMethod = 1;
public override CallResult Process(JObject input)
{
auditFrm.tcAudit.TabPages.Remove(auditFrm.tpOutpatRegistration);
if (InitPatienInfoForm(out errMsg) != 0)
{
return Exception(errMsg);
}
GetDBLKComBoxDatasource();
if (GetDiagnoses(out errMsg) !=0)
{
return Exception(errMsg);
}
if (GetDischargeAuditInfo(out errMsg) != 0)
{
return Exception(errMsg);
}
if (InitAdmissionRegistrationForm(out errMsg) !=0)
{
return Exception(errMsg);
}
if (InitDischargeRegistrationForm(out errMsg) !=0)
{
return Exception(errMsg);
}
InitFeeDetailForm();
auditFrm.ConfirmClicked += (sender, e) => { ConfirmClicked(sender, e); };
auditFrm.ShowDialog();
var jo = new { auditStatus = auditFrm.auditStatus ,memo= auditFrm.memo};
outParam = JObject.FromObject(jo).ToString();
if (auditFrm.auditStatus == 1)
{
return Success("审核通过");
}
else if (auditFrm.auditStatus == 0)
{
return Success("暂未审核");
}
else
{
return Success("审核被拒");
}
}
#region 获取数据源
//获取登记界面Combox的数据源
private void GetDBLKComBoxDatasource()
{
//获取通用目录
string sTYML = mIS.GetCommonInterface_Dr(Global.inf.interfaceDr.ToString(), "");
if (sTYML == "")
Global.inf.interfaceDr_TY = Global.inf.interfaceDr;
else
Global.inf.interfaceDr_TY = int.Parse(sTYML);
string sqlCondition = " and A.Interface_Dr = '" + Global.inf.interfaceDr_TY.ToString() + "'";
string sqlStr = "SELECT B.Code,B.Descripts AS Name FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr WHERE A.InsuCode = 'insutype'" + sqlCondition;
dtInsuranceType = grdSetter.GetDBLKComboxTable(sqlStr);
sqlStr = "select A.Code, A.Name FROM HB_MedInsuDirectory A where A.UseFlag='1' And A.HisType=7" + sqlCondition;
dtDisease = grdSetter.GetDBLKComboxTable(sqlStr);
sqlStr = "select A.Code, A.Name FROM HB_MedInsuDirectory A where A.UseFlag='1' And A.HisType=8" + sqlCondition;
dtOperation = grdSetter.GetDBLKComboxTable(sqlStr);
sqlStr = "SELECT B.Code,B.Descripts AS Name FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr WHERE A.InsuCode = 'psn_setlway'" + sqlCondition;
dtSettelmentWay = grdSetter.GetDBLKComboxTable(sqlStr);
sqlStr = "SELECT B.Code,B.Descripts AS Name FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr WHERE A.InsuCode = 'med_type'" + sqlCondition;
dtMedicalType = grdSetter.GetDBLKComboxTable(sqlStr);
}
///
/// 获取审核信息,并赋值给全局变量,供其它方法公用
///
///
///
private int GetDischargeAuditInfo(out string err)
{
//查询费用核查信息 regType -1表示查询全部明细
if (mIS.queryDischargeAuditInfo(out err) != 0)
{
return -1;
}
else
{
JObject joRtn = JObject.Parse(err);
joAuditInfo = JObject.Parse(JsonHelper.getDestValue(joRtn, "result.AuditInfo"));
jaAdmRegAuditDetail = JArray.Parse(JsonHelper.getDestValue(joRtn, "result.AdmReg"));
jaDisRegAuditDetail = JArray.Parse(JsonHelper.getDestValue(joRtn, "result.DisReg"));
jaOutpatRegAuditDetail = JArray.Parse(JsonHelper.getDestValue(joRtn, "result.OutpatReg"));
admRegAuditDetailCount = int.Parse(JsonHelper.getDestValue(joRtn, "result.AdmRegCount"));
disRegAuditDetailCount = int.Parse(JsonHelper.getDestValue(joRtn, "result.DisRegCount"));
outpatRegAuditDetailCount = int.Parse(JsonHelper.getDestValue(joRtn, "result.OutpatRegCount"));
return 0;
}
}
///
/// 获取His的诊断数据,并进行过滤筛选
///
///
///
private int GetDiagnoses(out string err)
{
err = "";
//调用服务获取门诊诊断信息
if (hIS.getPatDiagnoses(Global.pat, out err) != 0)
{
return -1;
}
JObject joHisRtnInfo = JObject.Parse(err);
//组织登记入参
JObject joReg = new JObject();
JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "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.getDestValue((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;
}
jaFinalDiagnoses = (JArray)jaConvertedDiagnoses.DeepClone();
joHisDiagnoseInfo = (JObject)joHisRtnInfo.DeepClone();
return 0;
}
///
/// 获取当前界面的审核明细
///
///
///
private JArray GetAuditDetail(dynamic frm, int regType)
{
var details = new List