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); }
/// <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); } }