Ver Fonte

feat: 增加2403交易

zhengjie há 1 ano atrás
pai
commit
ce4ff2f2ae
2 ficheiros alterados com 169 adições e 80 exclusões
  1. 168 80
      Business/HisMainBusiness.cs
  2. 1 0
      Variables/Struct.cs

+ 168 - 80
Business/HisMainBusiness.cs

@@ -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 = "";

+ 1 - 0
Variables/Struct.cs

@@ -115,6 +115,7 @@ namespace PTMedicalInsurance.Variables
         public int OtherProv;
         // 传递给医保的就诊号
         public string insuAdmNo;
+        public bool midSettlementFlag;  //中途结算标志
 
         public string disCode;
         public string disName;