/// <summary> /// 获取病人处方 /// </summary> /// <param name="patlistid">病人ID</param> /// <param name="status">状态</param> /// <param name="isCharge">是否收费处检索</param> /// <param name="beginDate">开始时间</param> /// <param name="endDate">结束时间</param> /// <param name="invoiceNo">发票号</param> /// <param name="execDeptCode">执行科室ID</param> /// <returns>处方信息</returns> public List <Prescription> GetPrescriptions(int patlistid, OP_Enum.PresStatus status, bool isCharge, string beginDate, string endDate, string invoiceNo, int execDeptCode) { BasicDataManagement basicdata = NewObject <BasicDataManagement>(); List <Prescription> preslist = new List <Prescription>(); string condiction = string.Empty; switch (status) { case PresStatus.全部: condiction = " PatListID = " + patlistid + " AND ChargeStatus in (0,1)"; break; case PresStatus.未收费: condiction = " PatListID = " + patlistid + " AND ChargeFlag = 0 AND ChargeStatus = 0"; break; case PresStatus.已收费未发药: case PresStatus.已收费已退药: condiction = " PatListID = " + patlistid + " AND ChargeFlag = 1 AND ChargeStatus = 0 And DistributeFlag = 0"; break; case PresStatus.已收费已发药: condiction = " PatListID = " + patlistid + " AND ChargeFlag = 1 AND ChargeStatus = 0 And DistributeFlag = 1"; break; } condiction += " and DocPresHeadID=0 "; if (execDeptCode != 0) { condiction = condiction + " and ExecDeptID = " + execDeptCode; } if (string.IsNullOrEmpty(invoiceNo)) { if (!string.IsNullOrEmpty(beginDate.Trim())) { condiction = condiction + " and PresDate>='" + beginDate + "'"; } if (endDate.Trim() != string.Empty) { condiction = condiction + " and PresDate<='" + endDate + "'"; } } if (!string.IsNullOrEmpty(invoiceNo)) { condiction = condiction + " and regflag=0 and CostHeadID in (select CostHeadID from OP_CostHead where EndInvoiceNO='" + invoiceNo + "' and CostStatus IN (0,1))"; } int presGroupID = 0; List <OP_FeeItemHead> presMastList = NewObject <OP_FeeItemHead>().getlist <OP_FeeItemHead>(condiction); if (presMastList.Count > 0) { DataTable dtPres = NewDao <IOPManageDao>().GetPrescription(condiction); List <Prescription> oldPres = EFWCoreLib.CoreFrame.Common.ConvertExtend.ToList <Prescription>(dtPres); for (int i = 0; i < presMastList.Count; i++) { List <Prescription> presDetailList = oldPres.Where(p => p.FeeItemHeadID == presMastList[i].FeeItemHeadID).ToList(); if (presDetailList.Count == 0) { continue; } presGroupID += 1; for (int j = 0; j < presDetailList.Count; j++) { #region 明细 presDetailList[j].PrescGroupID = presGroupID; presDetailList[j].presNO = j == 0 ? presGroupID : 0; presDetailList[j].PresDeptID = presMastList[i].PresDeptID; presDetailList[j].PresEmpID = presMastList[i].PresEmpID; presDetailList[j].ExecDeptID = presMastList[i].ExecDeptID; presDetailList[j].ModifyFlag = 0; presDetailList[j].Selected = 1; if (Convert.ToInt32(presDetailList[j].ItemType) == (int)OP_Enum.ItemType.收费项目 || Convert.ToInt32(presDetailList[j].ItemType) == (int)OP_Enum.ItemType.组合项目) { presDetailList[j].MiniAmount = presDetailList[j].Amount; presDetailList[j].PackAmount = (presDetailList[j].Amount - presDetailList[j].MiniAmount) / presDetailList[j].UnitNO; } else { presDetailList[j].MiniAmount = presDetailList[j].Amount % presDetailList[j].UnitNO; presDetailList[j].PackAmount = (presDetailList[j].Amount - presDetailList[j].MiniAmount) / presDetailList[j].UnitNO; } presDetailList[j].DocPresHeadID = presMastList[i].DocPresHeadID; #endregion preslist.Add(presDetailList[j]); } Prescription presTotal = new Prescription(); presTotal.ExecDetpName = "小 计"; presTotal.SubTotalFlag = 1; presTotal.PrescGroupID = presGroupID; presTotal.presNO = 0; presTotal.TotalFee = presMastList[i].TotalFee; presTotal.Selected = 1; preslist.Add(presTotal); } } //如果有医生站处方,则读取医生站处方 string obj = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.HasOpDSystem); if (Convert.ToInt32(obj) == 1) { presGroupID += 1; List <Prescription> docPresList = GetOpdPres(patlistid, presGroupID); foreach (Prescription docPres in docPresList) { preslist.Add(docPres); } } return(preslist); }
public ServiceResponseData GetPatPrescription() { int patlistid = requestData.GetData <int>(0); //病人ID OP_Enum.PresStatus presStatus = requestData.GetData <OP_Enum.PresStatus>(1); //处方状态 int costPatTypeID = requestData.GetData <int>(2); //病人结算类型 bool isMedicarePat = NewObject <CommonMethod>().IsMedicarePat(costPatTypeID); //根据病人类型ID判断是否是医保病人 List <Prescription> preslist = NewObject <PrescriptionProcess>().GetPrescriptions(patlistid, presStatus, true); #region 应北京医保要求,相关大项目ID相同的只取第一条 //应北京医保要求,相关大项目ID相同的只取第一条 if (isMedicarePat) { string statString = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.MedicalNotBalanceStatID); if (!string.IsNullOrEmpty(statString)) { string[] statIDs = statString.Split(','); for (int i = 0; i < statIDs.Length; i++) { if (!string.IsNullOrEmpty(statIDs[i])) { List <Prescription> presSameList = preslist.Where(p => p.StatID == Convert.ToInt32(statIDs[i])).OrderBy(p => p.ItemID).ThenBy(p => p.PrescGroupID).ToList(); if (presSameList.Count > 1) { int itemid = presSameList[0].ItemID; for (int j = 1; j < presSameList.Count; j++) { if (presSameList[j].ItemID == itemid) { int groupid = presSameList[j].PrescGroupID; preslist.Remove(presSameList[j]); List <Prescription> presGroupList = preslist.FindAll(p => p.PrescGroupID == groupid); if (presGroupList.Count > 0 && presGroupList.Count == 1) { preslist.Remove(presGroupList[0]); } else { List <Prescription> totalPres = presGroupList.FindAll(p => p.SubTotalFlag == 1); if (totalPres.Count > 0) { totalPres[0].TotalFee = totalPres[0].TotalFee - presSameList[j].TotalFee; } } } itemid = presSameList[j].ItemID; } } } } } } #endregion //返回处方信息 DataTable dtPres = EFWCoreLib.CoreFrame.Common.ConvertExtend.ToDataTable <Prescription>(preslist);// EFWCoreLib.CoreFrame.Common.ConvertExtend.ToDataTable(preslist); responseData.AddData(dtPres); //返回医生诊断信息 List <OPD_DiagnosisRecord> diagnoseList = NewObject <OPD_DiagnosisRecord>().getlist <OPD_DiagnosisRecord>(" PatlistID=" + patlistid).OrderBy(p => p.SortNo).ToList(); responseData.AddData(diagnoseList); return(responseData); }
/// <summary> /// 获取病人处方 /// </summary> /// <param name="patlistid">病人ID</param> /// <param name="status">状态</param> /// <param name="isCharge">是否收费处检索</param> /// <returns>处方信息</returns> public List <Prescription> GetPrescriptions(int patlistid, OP_Enum.PresStatus status, bool isCharge) { return(GetPrescriptions(patlistid, status, isCharge, string.Empty, string.Empty, string.Empty, 0)); }