|
@@ -765,6 +765,86 @@ namespace PTMedicalInsurance.Business
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 诊断转换
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="jaDiagnoses"></param>
|
|
|
+ /// <param name="dscg_maindiag_code"></param>
|
|
|
+ /// <param name="dscg_maindiag_name"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private JArray ConvertDiagnoses(JArray jaDiagnoses,out string dscg_maindiag_code,out string dscg_maindiag_name)
|
|
|
+ {
|
|
|
+ dscg_maindiag_code = "";
|
|
|
+ dscg_maindiag_name = "";
|
|
|
+ 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;
|
|
|
+ if (jaConvertedDiagnoses[i]["maindiag_flag"].ToString() == "1")
|
|
|
+ {
|
|
|
+ dscg_maindiag_code = jaConvertedDiagnoses[i]["diag_code"].ToString();
|
|
|
+ dscg_maindiag_name = jaConvertedDiagnoses[i]["diag_name"].ToString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return jaConvertedDiagnoses;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 显示住院患者登记面板,返回登记入参
|
|
|
/// </summary>
|
|
@@ -789,72 +869,8 @@ namespace PTMedicalInsurance.Business
|
|
|
JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
|
|
|
string dscg_maindiag_code = "",dscg_maindiag_name = "";
|
|
|
// 对诊断数组进行转换 转换下主要诊断
|
|
|
- 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;
|
|
|
- if (jaConvertedDiagnoses[i]["maindiag_flag"].ToString() == "1")
|
|
|
- {
|
|
|
- dscg_maindiag_code = jaConvertedDiagnoses[i]["diag_code"].ToString();
|
|
|
- dscg_maindiag_name = jaConvertedDiagnoses[i]["diag_name"].ToString();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ JArray jaConvertedDiagnoses = ConvertDiagnoses(jaDiagnoses, out dscg_maindiag_code, out dscg_maindiag_name);
|
|
|
+
|
|
|
//登记面板实例
|
|
|
OutpatientRegistration frmReg = new OutpatientRegistration();
|
|
|
//frmReg.dblkcbxSettelmentWay.Enabled = false;
|
|
@@ -1174,16 +1190,17 @@ namespace PTMedicalInsurance.Business
|
|
|
frmReg.DtDiagnose = (DataTable)jaConvertedDiagnoses.ToObject(typeof(DataTable));
|
|
|
if (frmReg.ShowDialog() == DialogResult.OK)
|
|
|
{
|
|
|
- string diseCodg = "", diseName = "";
|
|
|
- //哈尔滨要求必须传病种。普通疾病传主诊断
|
|
|
- if (string.IsNullOrEmpty(frmReg.diseCodg))
|
|
|
+ string diseCodg = frmReg.diseCodg, diseName = frmReg.diseName;
|
|
|
+ //要求必须传病种。普通疾病传主诊断
|
|
|
+ if (string.IsNullOrEmpty(diseCodg))
|
|
|
{
|
|
|
diseCodg = JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dscg_maindiag_code");
|
|
|
- };
|
|
|
- if (string.IsNullOrEmpty(frmReg.diseName))
|
|
|
+ }
|
|
|
+ if (string.IsNullOrEmpty(diseCodg))
|
|
|
{
|
|
|
diseName = JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dscg_maindiag_name");
|
|
|
- };
|
|
|
+ }
|
|
|
+
|
|
|
//出院登记入参
|
|
|
//单病种出院登记 病种信息取入院登记入参
|
|
|
if (Global.pat.RYorCY == "2")
|
|
@@ -1226,7 +1243,23 @@ namespace PTMedicalInsurance.Business
|
|
|
joDscgInfo.Add("insutype", frmReg.insuType); //险种类型
|
|
|
//joDscgInfo.Add("coner_name", JsonHelper.getJsonValue(joHisPatInfo, "coner_name")); //联系人姓名
|
|
|
//joDscgInfo.Add("tel", JsonHelper.getJsonValue(joHisPatInfo, "tel")); //联系电话
|
|
|
- joDscgInfo.Add("endtime", Global.pat.hisDischargeTime); //结束时间DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
|
|
|
+ if ("1".Equals(frmReg.midSettleFlag))
|
|
|
+ {
|
|
|
+ //中途结算,使用账单的结算日期
|
|
|
+ string dischargeTime = Global.pat.hisDischargeTime;
|
|
|
+ if (Global.pat.adm_Dr == 1346320) {
|
|
|
+ dischargeTime = "2023-12-31 23:59:59";
|
|
|
+ }
|
|
|
+ Global.pat.midSettlementFlag = true;
|
|
|
+ Global.pat.hisDischargeTime = dischargeTime;
|
|
|
+
|
|
|
+ joDscgInfo.Add("endtime", dischargeTime);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //出院结算
|
|
|
+ joDscgInfo.Add("endtime", Global.pat.hisDischargeTime); //结束时间DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
|
|
|
+ }
|
|
|
joDscgInfo.Add("dise_codg", diseCodg); //病种编码
|
|
|
joDscgInfo.Add("dise_name", diseName); //病种名称
|
|
|
joDscgInfo.Add("oprn_oprt_code", frmReg.oprn_oprt_code); //手术操作代码
|
|
@@ -1273,7 +1306,7 @@ namespace PTMedicalInsurance.Business
|
|
|
joSetlInpar.Add("fulamt_ownpay_amt", JsonHelper.getDestValue(joSumFee, "data.FullOwnPayAmount"));
|
|
|
joSetlInpar.Add("overlmt_selfpay", JsonHelper.getDestValue(joSumFee, "data.OverLimitAmount"));
|
|
|
joSetlInpar.Add("preselfpay_amt", JsonHelper.getDestValue(joSumFee, "data.PreSelfPayAmount"));
|
|
|
- joSetlInpar.Add("dscgTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
+ joSetlInpar.Add("dscgTime", Global.pat.hisDischargeTime);
|
|
|
|
|
|
JObject joDataExp = new JObject();
|
|
|
joDataExp.Add("acct_payamt", "0.00");
|
|
@@ -2172,13 +2205,36 @@ namespace PTMedicalInsurance.Business
|
|
|
JObject joRtn = JObject.Parse(outParam);
|
|
|
JObject jo2402Inpar = JObject.Parse(JsonHelper.getDestValue(joRtn, "DischargeRegister"));
|
|
|
|
|
|
- //昆明出院登记放再预结算之前
|
|
|
- JObject jo2402Rtn = invoker.invokeCenterService("2402", JsonHelper.setCenterInpar("2402", jo2402Inpar));
|
|
|
-
|
|
|
- if (JsonHelper.parseCenterRtnValue(jo2402Rtn, out errMsg) != 0)
|
|
|
+ //仅出院结算时登记
|
|
|
+ if (Global.pat.midSettlementFlag)
|
|
|
{
|
|
|
- outParam = JsonHelper.setExceptionJson(-1, "预结算失败:出院登记失败", errMsg).ToString();
|
|
|
- return -1;
|
|
|
+ //中途结算2403
|
|
|
+ string dise_code, dise_name;
|
|
|
+ JObject joAdmInfo = GetMdtrtInfo(joDiagnoses);
|
|
|
+ JArray oldDiagArray = JArray.Parse(JsonHelper.getDestValue(joDiagnoses, "diseinfo"));
|
|
|
+ JArray jaDiseInfo = ConvertDiagnoses(oldDiagArray, out dise_code,out dise_name );
|
|
|
+
|
|
|
+ dynamic jo2403Inpar = new JObject();
|
|
|
+ jo2403Inpar.adminfo = joAdmInfo;
|
|
|
+ jo2403Inpar.diseinfo = jaDiseInfo;
|
|
|
+
|
|
|
+ JObject jo2403Rtn = invoker.invokeCenterService("2403", JsonHelper.setCenterInpar("2403", jo2403Inpar));
|
|
|
+
|
|
|
+ if (JsonHelper.parseCenterRtnValue(jo2403Rtn, out errMsg) != 0)
|
|
|
+ {
|
|
|
+ outParam = JsonHelper.setExceptionJson(-1, "住院信息变更", errMsg).ToString();
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ } else {
|
|
|
+ JObject jo2402Rtn = invoker.invokeCenterService("2402", JsonHelper.setCenterInpar("2402", jo2402Inpar));
|
|
|
+
|
|
|
+ if (JsonHelper.parseCenterRtnValue(jo2402Rtn, out errMsg) != 0)
|
|
|
+ {
|
|
|
+ outParam = JsonHelper.setExceptionJson(-1, "出院登记失败", errMsg).ToString();
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
@@ -2232,6 +2288,38 @@ namespace PTMedicalInsurance.Business
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private JObject GetMdtrtInfo(JObject joHisRtnInfo)
|
|
|
+ {
|
|
|
+
|
|
|
+ JObject joMdtrtinfo = new JObject();
|
|
|
+ joMdtrtinfo.Add("mdtrt_id",Global.pat.mdtrtID);
|
|
|
+ joMdtrtinfo.Add("psn_no", Global.pat.psn_no);
|
|
|
+ joMdtrtinfo.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime"));
|
|
|
+ joMdtrtinfo.Add("endtime", Global.pat.hisDischargeTime);
|
|
|
+ joMdtrtinfo.Add("mdtrt_cert_type", Global.pat.mdtrtcertType); //就诊凭证类型
|
|
|
+ joMdtrtinfo.Add("med_type", Global.pat.medType); //医疗类别
|
|
|
+
|
|
|
+ string ipAdmNo = Utils.convertAdmDr(JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.ipt_no"));
|
|
|
+
|
|
|
+ joMdtrtinfo.Add("ipt_otp_no", ipAdmNo); //住院号
|
|
|
+ joMdtrtinfo.Add("medrcdno", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.medrcdno")); //病历号
|
|
|
+ joMdtrtinfo.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no")); //主治医生编码
|
|
|
+ joMdtrtinfo.Add("chfpdr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name")); //主诊医师姓名
|
|
|
+ joMdtrtinfo.Add("adm_diag_dscr", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_diag_dscr")); //入院诊断描述
|
|
|
+ joMdtrtinfo.Add("adm_dept_codg", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_codg")); //入院科室编码
|
|
|
+ joMdtrtinfo.Add("adm_dept_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name")); //入院科室名称
|
|
|
+ joMdtrtinfo.Add("adm_bed", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_bed")); //入院床位
|
|
|
+ joMdtrtinfo.Add("dscg_maindiag_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dscg_maindiag_code")); //住院主诊断代码
|
|
|
+ joMdtrtinfo.Add("dscg_maindiag_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dscg_maindiag_name")); //住院主诊断名称
|
|
|
+ joMdtrtinfo.Add("matn_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.matn_type")); //生育类别
|
|
|
+ joMdtrtinfo.Add("birctrl_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_type")); //计划生育手术类别
|
|
|
+ joMdtrtinfo.Add("latechb_flag", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.latechb_flag")); //晚育标志
|
|
|
+ joMdtrtinfo.Add("pret_flag", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.pret_flag")); //早产标志
|
|
|
+ joMdtrtinfo.Add("dise_type_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dise_type_code")); //病种类型
|
|
|
+ joMdtrtinfo.Add("exp_content", ""); //字段扩展
|
|
|
+ return joMdtrtinfo;
|
|
|
+ }
|
|
|
+
|
|
|
public int returnToFrontEndAfterSettlement(JObject joCenterRtn,JObject joHisServieRtn, out string outParam)
|
|
|
{
|
|
|
outParam = "";
|