using Newtonsoft.Json.Linq; using PTMedicalInsurance.Common; using PTMedicalInsurance.Helper; using PTMedicalInsurance.Variables; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PTMedicalInsurance.Business { class OPPreSettlementProcess : AbstractProcess { /// /// 返回预结算结果 /// /// 基本信息含挂号、就诊、诊断、结算等入参 /// public override CallResult Process(JObject joReg) { JObject joRtn = new JObject(); //调用IRIS获取医保各项金额 if (mIS.getSumFee(out outParam) != 0) { return Error(-1, "获取医保费用各项汇总金额"); } JObject joSumFee = JObject.Parse(outParam); JObject joSettlement = JObject.Parse(JsonHelper.getDestValue(joReg, "settlement")); //修改joSettlement的就诊ID ,总金额等 joSettlement["mdtrt_id"] = Global.pat.mdtrtID; joSettlement["mdtrt_cert_no"] = Utils.ConvertMdtrtcertNo(false); //预结算不需要转换 joSettlement["medfee_sumamt"] = JsonHelper.getDestValue(joSumFee, "data.Sumamt"); // 个性化(济南),费用不单独上传 //joSettlement["patient"] = joReg; //joSettlement.Add("psn_name", Global.pat.name); //joSettlement.Add("gend", ("1".Equals(Global.pat.gend)?"男":"女")); //joSettlement.Add("cardno", Global.pat.card.NO); //joSettlement["admNo"] = Global.pat.adm_Dr; // 病历号 // 异地就医标志 //string otherAreaFlag = "10"; //if (!Utils.isOtherCity() || Global.inf.interfaceDr == 28) //{ // otherAreaFlag = "01"; //本地 //} //joSettlement.Add("other_area_flag", otherAreaFlag); //var ret = hBus.getFeeDetail(); //if (ret.code < 0) //{ // return Error(ret.code,ret.data.ToString()); //} //JArray jaFeeDetail = (JArray)ret.data; //joSettlement["feeDetail"] = jaFeeDetail; //预结算 JObject jo2206Data = new JObject(); jo2206Data.Add("data", joSettlement); JObject jo2206Rtn = invoker.invokeCenterService(TradeEnum.OutpatientPreSettlement, jo2206Data); if (JsonHelper.parseCenterRtnValue(jo2206Rtn, out outParam) != 0) { return Exception(-1, "出院预结算", outParam); } //返回给HIS进行预结算判断 JObject joSetlinfo = JObject.Parse(JsonHelper.getDestValue(jo2206Rtn, "output.setlinfo")); if (hIS.preSettlement(joSettlement, joSetlinfo, out outParam) != 0) { return Exception(-1, "返回结算信息给HIS", outParam); } //编码转换 if (mIS.convertSettlementWithInsuCode(jo2206Rtn, out outParam) != 0) { return Exception(-1, "结算信息转换", outParam); } string errMsg = ""; JObject joRtnSettle =JObject.Parse(JsonHelper.getDestValue(jo2206Rtn, "output.setlinfo")); //判断勾稽关系是否平 if (hIS.sumInsuRtnSettlInfo(joRtnSettle, out joSumFee, out errMsg) != 0) { return Exception(-1, "勾稽关系不符合标准,请联系管理员!",errMsg); } //展示结算信息 JObject joConverted = JObject.Parse(outParam); if (hBus.showSettlementForm(joConverted, out outParam) != 0) { return Exception(-1, "结算信息展示", outParam); } // 返回结算参数+返回 joRtn = (JObject)joSettlement.DeepClone(); //济南扩展 //string useAccountFlag = JsonHelper.getDestValue(joSettlement, "acct_used_flag"); //string acctPay = Global.Set.acctPay; //if (!"1".Equals(useAccountFlag)) //{ // //不使用个人账户 // acctPay = "0"; //} //JObject joDataExp = new JObject(); //joDataExp.Add("acct_payamt", acctPay); //joRtnSettle["exp_content"] = joDataExp; joRtn.Add("setlinfo", joRtnSettle); //结算需要转换 joRtn["mdtrt_cert_no"] = Utils.ConvertMdtrtcertNo(); outParam = joRtn.ToString(); return Success(); } } }