예제 #1
0
        private void button23_Click(object sender, EventArgs e)
        {
            TradeData   tradeData   = new TradeData();
            Tradeinfo   tradeinfo   = new Tradeinfo();
            RecipeList  recipeList  = new RecipeList();
            FeeitemList feeitemList = new FeeitemList();

            tradeinfo.tradeType = TradeType.普通门诊;
            tradeinfo.billtype  = "0";

            List <Recipe> recipes = new List <Recipe>();
            Recipe        recipe  = new Recipe();

            recipes.Add(recipe);
            recipeList.recipes = recipes;

            List <Feeitem> feeitems = new List <Feeitem>();

            foreach (DataRow dr in ((DataTable)dataGridView2.DataSource).Rows)
            {
                Feeitem feeitem = new Feeitem();
                feeitem.itemno    = dr["PresDetailID"].ToString();
                feeitem.recipeno  = dr["presNO"].ToString();
                feeitem.hiscode   = dr["ItemID"].ToString();
                feeitem.itemname  = dr["ItemName"].ToString();
                feeitem.itemtype  = dr["ItemType"].ToString();
                feeitem.unitprice = dr["RetailPrice"].ToString();
                feeitem.count     = dr["PresAmount"].ToString();
                feeitem.fee       = dr["TotalFee"].ToString();
                feeitem.babyflag  = "0";

                feeitems.Add(feeitem);
            }
            feeitemList.feeitems = feeitems;

            tradeData.MIID     = 1;
            tradeData.SerialNo = txtMzCenterCostID.Text.ToString().Trim();

            tradeData.tradeinfo   = tradeinfo;
            tradeData.recipeList  = recipeList;
            tradeData.feeitemList = feeitemList;

            InvokeController("MZ_PreviewChargeDllNew", tradeData);
        }
예제 #2
0
        /// <summary>
        /// 医保收费预算
        /// </summary>
        /// <param name="workid"></param>
        /// <param name="presList">处方数据</param>
        /// <param name="curPatList">病人对象</param>
        /// <param name="costPatTypeid">收费病人类型</param>
        /// <param name="diagnosisList">诊断信息</param>
        /// <param name="invoiceNO">发票号</param>
        /// <returns></returns>
        public static Dictionary <string, string> MIBalanceBuget(int workid, List <Prescription> presList, OP_PatList curPatList, int costPatTypeid, List <OPD_DiagnosisRecord> diagnosisList, string invoiceNO)
        {
            ResultClass resultClass = new ResultClass();
            string      sSocialCreateNumSocialCreateNum = string.Empty;

            resultClass = MIInterFaceFactory.Mz_GetRegisterTradeNo(curPatList.VisitNO);
            if (resultClass.bSucess)
            {
                sSocialCreateNumSocialCreateNum = resultClass.sRemarks;
            }
            else
            {
                throw new Exception("异常!" + resultClass.sRemarks);
            }
            InputClass input = new InputClass();
            Dictionary <InputType, object> dicStr = new Dictionary <InputType, object>();
            TradeData   tradeData   = new TradeData();
            Tradeinfo   tradeinfo   = new Tradeinfo();
            RecipeList  recipeList  = new RecipeList();
            FeeitemList feeitemList = new FeeitemList();

            tradeinfo.tradeType = TradeType.普通门诊;
            tradeinfo.billtype  = "0";
            tradeinfo.feeno     = invoiceNO;

            List <Recipe>       recipes           = new List <Recipe>();
            List <Feeitem>      feeitems          = new List <Feeitem>();
            int                 diagnoseCount     = diagnosisList.Count > 3 ? 3 : diagnosisList.Count;//最多取三条诊断
            List <Prescription> feeItemHeadIDList = GetPresHeadList(presList);

            for (int i = 0; i < diagnoseCount; i++)
            {
                int diagNo = i + 1;
                foreach (Prescription pres in feeItemHeadIDList)
                {
                    Recipe recipe = new Recipe();

                    recipe.diagnoseno      = diagNo.ToString();
                    recipe.recipeno        = pres.FeeItemHeadID.ToString();
                    recipe.recipedate      = DateTime.Now.ToString("yyyyMMddHHmmss");
                    recipe.drid            = "0999";
                    recipe.drname          = curPatList.RegDocName.ToString();
                    recipe.sectioncode     = curPatList.RegDeptID.ToString();
                    recipe.sectionname     = curPatList.RegDeptName.ToString();
                    recipe.hissectionname  = curPatList.RegDeptName.ToString();
                    recipe.diagnosecode    = diagnosisList[i].DiagnosisCode.Equals("")?"0000": diagnosisList[i].DiagnosisCode;
                    recipe.diagnosename    = diagnosisList[i].DiagnosisName;
                    recipe.registertradeno = sSocialCreateNumSocialCreateNum;
                    recipe.recipetype      = pres.IsReimbursement == 1?"2":"1";
                    if (pres.StatID == 100 || pres.StatID == 101)
                    {
                        recipe.billstype = "2";
                    }
                    else if (pres.StatID == 102)
                    {
                        recipe.billstype = "4";
                    }
                    else
                    {
                        recipe.billstype = "5";
                    }
                    recipes.Add(recipe);
                }
            }

            foreach (Prescription pres in presList)
            {
                if (pres.SubTotalFlag == 0 && pres.Selected == 1)
                {
                    Feeitem feeitem = new Feeitem();
                    feeitem.itemno   = pres.PresDetailID.ToString();// dr["PresDetailID"].ToString();
                    feeitem.recipeno = pres.FeeItemHeadID.ToString();
                    feeitem.hiscode  = pres.ItemID.ToString();
                    if (pres.StatID == 102)
                    {
                        feeitem.itemname      = "中药饮片及药材";
                        feeitem.specification = pres.ItemName.ToString().Trim();
                        feeitem.unitprice     = (pres.RetailPrice / pres.UnitNO).ToString("0.000");
                        feeitem.count         = (pres.TotalFee * pres.UnitNO / pres.RetailPrice).ToString("0.00"); //pres.Amount.ToString();
                        decimal totalfee = Convert.ToDecimal(feeitem.unitprice) * Convert.ToDecimal(feeitem.count);

                        feeitem.unit = pres.MiniUnit;
                        feeitem.days = pres.PresAmount.ToString();
                        feeitem.fee  = totalfee.ToString("0.00");

                        feeitem.packaging  = pres.MiniUnit;
                        feeitem.minpackage = pres.MiniUnit;
                        feeitem.conversion = "1";
                    }
                    else if (pres.ItemType.Equals("1"))
                    {
                        feeitem.itemname      = pres.ItemName.ToString().Trim();
                        feeitem.specification = pres.Spec.ToString();

                        feeitem.unitprice  = pres.RetailPrice.ToString("0.000");
                        feeitem.count      = (pres.TotalFee / pres.RetailPrice).ToString("0.00"); //pres.Amount.ToString();
                        feeitem.unit       = pres.PackUnit;
                        feeitem.days       = pres.Days.ToString();
                        feeitem.fee        = pres.TotalFee.ToString("0.00");
                        feeitem.packaging  = pres.PackUnit;
                        feeitem.minpackage = pres.DosageUnit;
                        feeitem.conversion = (Convert.ToDecimal(pres.Factor) * pres.UnitNO).ToString();
                        //待测试的
                        //feeitem.unitprice = (pres.RetailPrice / pres.UnitNO).ToString("0.000");
                        //feeitem.count = (pres.TotalFee * pres.UnitNO / pres.RetailPrice).ToString("0.00"); //pres.Amount.ToString();
                        //decimal totalfee = Convert.ToDecimal(feeitem.unitprice) * Convert.ToDecimal(feeitem.count);

                        //feeitem.unit = pres.MiniUnit;
                        //feeitem.days = pres.Days.ToString();
                        //feeitem.fee = totalfee.ToString("0.00");
                    }
                    else
                    {
                        feeitem.itemname      = pres.ItemName.ToString().Trim();
                        feeitem.specification = pres.Spec.ToString();

                        feeitem.unitprice  = pres.RetailPrice.ToString("0.000");
                        feeitem.count      = (pres.TotalFee / pres.RetailPrice).ToString("0.00"); //pres.Amount.ToString();
                        feeitem.unit       = pres.PackUnit;
                        feeitem.days       = pres.Days.ToString();
                        feeitem.fee        = pres.TotalFee.ToString("0.00");
                        feeitem.packaging  = feeitem.unit;
                        feeitem.minpackage = feeitem.unit;
                        feeitem.conversion = "1";
                        //待测试的
                        //feeitem.unitprice = (pres.RetailPrice / pres.UnitNO).ToString("0.000");
                        //feeitem.count = (pres.TotalFee * pres.UnitNO / pres.RetailPrice).ToString("0.00"); //pres.Amount.ToString();
                        //decimal totalfee = Convert.ToDecimal(feeitem.unitprice) * Convert.ToDecimal(feeitem.count);

                        //feeitem.unit = pres.MiniUnit;
                        //feeitem.days = pres.Days.ToString();
                        //feeitem.fee = totalfee.ToString("0.00");
                    }

                    feeitem.itemtype = Convert.ToInt32(pres.ItemType) == Convert.ToInt32(OP_Enum.ItemType.药品) ? "0" : "1";

                    feeitem.babyflag = "0";

                    feeitem.dosage = pres.Dosage.ToString();
                    feeitem.dose   = pres.DosageId.ToString();

                    feeitem.howtouse = pres.FrequencyID.ToString();//"02";//pres.FrequencyName;


                    if (feeitem.itemtype == "0")
                    {
                        feeitem.drugapprovalnumber = pres.DrugApprovalnumber;
                    }
                    else
                    {
                        feeitem.drugapprovalnumber = string.Empty;
                    }
                    feeitems.Add(feeitem);
                }
            }
            feeitemList.feeitems = feeitems;
            recipeList.recipes   = recipes;
            #region 新版,诊断分类型增加
            //List<Recipe> recipes = new List<Recipe>();
            //List<Feeitem> feeitems = new List<Feeitem>();
            ////1按项目类型分类
            //var fL = from item in presList
            //         group item by new { item.ItemType } into g
            //        select new
            //        {
            //            ItemType = g.Key.ItemType
            //        };
            //int recCount = 0;
            ////2.分类型插入诊断和项目
            //foreach (var f in fL)
            //{
            //    //2.1添加诊断
            //    Recipe recipe = new Recipe();
            //    recipe.diagnoseno = recCount.ToString();
            //    recipe.recipeno = recCount.ToString();
            //    recipe.recipedate = DateTime.Now.ToString("yyyyMMddHHmmss");
            //    recipe.drid = "0999";//curPatList.RegEmpID.ToString();
            //    recipe.drname = curPatList.RegDocName.ToString();
            //    recipe.sectioncode = curPatList.RegDeptID.ToString();
            //    recipe.sectionname = curPatList.RegDeptName.ToString();
            //    recipe.hissectionname = curPatList.RegDeptName.ToString();
            //    recipe.diagnosecode = curPatList.DiseaseCode;
            //    recipe.diagnosename = curPatList.DiseaseName;
            //    recipe.registertradeno = sSocialCreateNumSocialCreateNum;
            //    recipe.billstype = f.ItemType.Equals("1") ? "2" : "5";
            //    recipes.Add(recipe);

            //    //2.2添加明细
            //    List<Prescription> PrescriptionList = presList.FindAll(x => x.ItemType == f.ItemType);
            //    foreach (Prescription pres in PrescriptionList)
            //    {
            //        if (pres.SubTotalFlag == 0 && pres.Selected == 1)
            //        {
            //            Feeitem feeitem = new Feeitem();
            //            feeitem.itemno = pres.PresDetailID.ToString();// dr["PresDetailID"].ToString();
            //            feeitem.recipeno = recCount.ToString();//pres.FeeItemHeadID.ToString();
            //            feeitem.hiscode = pres.ItemID.ToString();
            //            feeitem.itemname = pres.ItemName.ToString().Trim();
            //            feeitem.itemtype = Convert.ToInt32(pres.ItemType) == Convert.ToInt32(OP_Enum.ItemType.药品) ? "0" : "1";
            //            feeitem.unitprice = pres.RetailPrice.ToString("0.000");
            //            feeitem.count = (pres.TotalFee / pres.RetailPrice).ToString("0.00"); //pres.Amount.ToString();
            //            feeitem.fee = pres.TotalFee.ToString("0.00");
            //            feeitem.babyflag = "0";

            //            feeitem.dosage = pres.Dosage;
            //            feeitem.dose = pres.DosageName;
            //            feeitem.days = pres.Days.ToString();
            //            feeitem.howtouse = pres.FrequencyName;
            //            feeitem.specification = pres.Spec;
            //            feeitem.unit = pres.MiniUnit;


            //            if (feeitem.itemtype == "0")
            //            {
            //                feeitem.drugapprovalnumber = pres.DrugApprovalnumber;
            //            }
            //            else
            //            {
            //                feeitem.drugapprovalnumber = string.Empty;
            //            }
            //            feeitems.Add(feeitem);
            //        }
            //    }

            //    recCount += 1;
            //}
            //recipeList.recipes = recipes;
            //feeitemList.feeitems = feeitems;
            #endregion

            #region 老版,只传一个诊断
            //List<Recipe> recipes = new List<Recipe>();
            //Recipe recipe = new Recipe();
            //recipe.diagnoseno = "1";
            //recipe.recipeno = "1";
            //recipe.recipedate = DateTime.Now.ToString("yyyyMMddHHmmss");
            //recipe.drid = "0999";//curPatList.RegEmpID.ToString();
            //recipe.drname = curPatList.RegDocName.ToString();
            //recipe.sectioncode = curPatList.RegDeptID.ToString();
            //recipe.sectionname = curPatList.RegDeptName.ToString();
            //recipe.hissectionname = curPatList.RegDeptName.ToString();
            //recipe.diagnosecode = curPatList.DiseaseCode;
            //recipe.diagnosename = curPatList.DiseaseName;
            //recipe.registertradeno = string.Empty;
            //recipes.Add(recipe);
            //recipeList.recipes = recipes;

            //List<Feeitem> feeitems = new List<Feeitem>();
            //foreach (Prescription pres in presList)
            //{
            //    if (pres.SubTotalFlag == 0 && pres.Selected==1)
            //    {
            //        Feeitem feeitem = new Feeitem();
            //        feeitem.itemno = pres.PresDetailID.ToString();// dr["PresDetailID"].ToString();
            //        feeitem.recipeno = "1";//pres.FeeItemHeadID.ToString();
            //        feeitem.hiscode = pres.ItemID.ToString();
            //        feeitem.itemname = pres.ItemName.ToString().Trim();
            //        feeitem.itemtype = Convert.ToInt32(pres.ItemType) == Convert.ToInt32(OP_Enum.ItemType.药品) ? "0" : "1";
            //        feeitem.unitprice = pres.RetailPrice.ToString("0.000");
            //        feeitem.count = (pres.TotalFee / pres.RetailPrice).ToString("0.00"); //pres.Amount.ToString();
            //        feeitem.fee = pres.TotalFee.ToString("0.00");
            //        feeitem.babyflag = "0";

            //        if (feeitem.itemtype == "0")
            //        {
            //            feeitem.drugapprovalnumber = pres.DrugApprovalnumber;
            //        }
            //        else
            //        {
            //            feeitem.drugapprovalnumber = string.Empty;
            //        }
            //        feeitems.Add(feeitem);
            //    }
            //}
            //feeitemList.feeitems = feeitems;
            #endregion

            tradeData.MIID     = costPatTypeid;
            tradeData.SerialNo = curPatList.VisitNO;

            tradeData.tradeinfo   = tradeinfo;
            tradeData.recipeList  = recipeList;
            tradeData.feeitemList = feeitemList;

            dicStr.Add(InputType.TradeData, JsonHelper.SerializeObject(tradeData));
            dicStr.Add(InputType.bFlag, true);
            input.SInput = dicStr;
            resultClass  = MIInterFaceFactory.MZ_PreviewCharge(input);
            if (resultClass.bSucess)
            {
                Dictionary <string, string> resultDic = (Dictionary <string, string>)resultClass.oResult;
                Dictionary <string, string> myDic     = new Dictionary <string, string>();
                myDic.Add("ID", resultDic["Id"]);//医保预结算ID
                decimal medicarepay = Convert.ToDecimal(resultDic["fund"]) + Convert.ToDecimal(resultDic["personcountpay"]);
                myDic.Add("MedicarePay", medicarepay.ToString("0.00"));
                myDic.Add("MedicareMIPay", Convert.ToDecimal(resultDic["fund"]).ToString("0.00"));
                myDic.Add("MedicarePersPay", Convert.ToDecimal(resultDic["personcountpay"]).ToString("0.00"));
                StringBuilder strBuild = new StringBuilder();
                strBuild.Append("统筹支付:" + Convert.ToDecimal(resultDic["fund"]).ToString("0.00") + " ");
                strBuild.Append("现金支付:" + Convert.ToDecimal(resultDic["cash"]).ToString("0.00") + " ");
                strBuild.Append("个帐支付:" + Convert.ToDecimal(resultDic["personcountpay"]).ToString("0.00") + " ");
                myDic.Add("MedicardInfo", strBuild.ToString());
                if (!resultClass.sRemarks.Equals(""))
                {
                    MessageBox.Show("警告:" + resultClass.sRemarks);
                }
                return(myDic);
            }
            else
            {
                throw new Exception("异常!" + resultClass.sRemarks);
            }
        }