/// <summary> /// 构造发药单表头 /// </summary> /// <param name="obj">处方头</param> /// <param name="deptId">药剂科室ID</param> /// <param name="dispenserId">发药人员ID</param> /// <returns>发药单表头</returns> public override YP_DRMaster BuildNewDispenseMaster(object obj, int deptId, int dispenserId) { HIS.Interface.Structs.Prescription pres = (HIS.Interface.Structs.Prescription)obj; YP_DRMaster dispMaster = new YP_DRMaster(); dispMaster.Charge_Flag = 1; dispMaster.DeptID = deptId; dispMaster.ChargeMan = Convert.ToInt32(pres.ChargeCode); dispMaster.DeptID = deptId; if (pres.PresDocCode != "") { dispMaster.DocID = Convert.ToInt32(pres.PresDocCode); } else { dispMaster.DocID = 0; } dispMaster.DosageMan = 0; dispMaster.DrugOC_Flag = 1; dispMaster.InpatientID = ""; dispMaster.InvoiceNum = Convert.ToInt32(pres.TicketNum); dispMaster.OPPeopleID = dispenserId; dispMaster.OPTime = XcDate.ServerDateTime; dispMaster.OpType = ConfigManager.OP_YF_DISPENSE; dispMaster.PatientID = pres.RegisterID; dispMaster.PatientName = pres.PatientName; dispMaster.PatientNo = ""; dispMaster.ReceiptCode = pres.ChargeID; dispMaster.RecipeID = pres.PrescriptionID; dispMaster.RecipeNum = Convert.ToInt32(pres.presAmount); dispMaster.RetailFee = 0; return(dispMaster); }
/// <summary> /// 获取病人未收费处方明细 /// </summary> /// <param name="patListId">门诊病人就诊Id</param> /// <returns>门诊收费处方结构体组</returns> public HIS.Interface.Structs.Prescription[] GetPrescriptions(int patListId) { int presNo = 0; string strsql = ""; bool isControlSkinTest = OP_ReadBaseData.GetConfigValue("003").Trim() == "1"; //系统参数:是否控制未皮试和皮试阳性的药品不能收费 //获取处方头列表信息 update 王志 2010-03-11 导致收完费的处方还能收费 //List<PresHead> presHeads = new PresHead(patListId).GetNormalPresHeadList(); List <PresHead> presHeads = new PresHead((long)patListId, 0).GetNoChangePresHeadList(); //定义收费处方结构体 HIS.Interface.Structs.Prescription[] prescriptions = new HIS.Interface.Structs.Prescription[presHeads.Count]; for (int i = 0; i < presHeads.Count; i++) { //获取处方明细信息 if (presHeads[i].PresType.Trim() == "00") { strsql = HIS.BLL.Tables.mz_doc_preslist.PRESHEADID + oleDb.EuqalTo() + presHeads[i].PresHeadId + oleDb.And() + HIS.BLL.Tables.mz_doc_preslist.DELETE_BIT + oleDb.EuqalTo() + 0 + oleDb.OrderBy(HIS.BLL.Tables.mz_doc_preslist.ORDERNO); } else { strsql = HIS.BLL.Tables.mz_doc_preslist.PRESHEADID + oleDb.EuqalTo() + presHeads[i].PresHeadId + oleDb.And() + HIS.BLL.Tables.mz_doc_preslist.DELETE_BIT + oleDb.EuqalTo() + 0 + oleDb.And() + HIS.BLL.Tables.mz_doc_preslist.SELFDRUG_FLAG + oleDb.EuqalTo() + 0 + oleDb.OrderBy(HIS.BLL.Tables.mz_doc_preslist.ORDERNO); } List <HIS.Model.Mz_Doc_PresList> presList = BindEntity <HIS.Model.Mz_Doc_PresList> .CreateInstanceDAL(oleDb).GetListArray(strsql); if (presList.Count > 0) { DataRow[] rows = null; if (isControlSkinTest) { rows = Public.Function.ListToDataTable(presList, new HIS.Model.Mz_Doc_PresList()).Select("SkinTest_Flag = 1 or SkinTest_Flag = 3"); } if (rows != null && rows.Length > 0) { continue; } #region 读取处方头 prescriptions[presNo] = new HIS.Interface.Structs.Prescription(); prescriptions[presNo].Charge_Flag = 0; prescriptions[presNo].ChargeCode = ""; prescriptions[presNo].ChargeID = 0; prescriptions[presNo].Drug_Flag = presHeads[i].PresType == "00" ? 0 : 1; prescriptions[presNo].ExecDeptCode = presHeads[i].Pres_ExeDept.ToString(); prescriptions[presNo].ExecDocCode = ""; prescriptions[presNo].OldPresID = 0; prescriptions[presNo].PresCostCode = presHeads[i].Pres_Doc.ToString(); prescriptions[presNo].PrescriptionID = presHeads[i].PresHeadId; prescriptions[presNo].PrescType = presHeads[i].PresType == "00" ? "-1" : Convert.ToInt32(presHeads[i].PresType).ToString(); prescriptions[presNo].PresDeptCode = presHeads[i].Pres_Dept.ToString(); prescriptions[presNo].PresDocCode = presHeads[i].Pres_Doc.ToString(); prescriptions[presNo].Record_Flag = 0; prescriptions[presNo].TicketCode = ""; prescriptions[presNo].TicketNum = ""; prescriptions[presNo].Total_Fee = 0; //prescriptions[presNo].VisitNo = ""; #endregion //定义收费处方明细结构体 HIS.Interface.Structs.PrescriptionDetail[] details = new HIS.Interface.Structs.PrescriptionDetail[presList.Count]; for (int j = 0; j < presList.Count; j++) { #region 读取处方明细 details[j] = new HIS.Interface.Structs.PrescriptionDetail(); details[j].Amount = presList[j].Item_Amount * presList[j].RelationNum / presList[j].Item_Rate; details[j].BigitemCode = presList[j].StatItem_Code; details[j].Buy_price = presList[j].Buy_Price; details[j].ComplexId = presList[j].Tc_Flag == 1 ? presList[j].Service_Item_Id : 0; details[j].DetailId = presList[j].PresListId; details[j].ItemId = presList[j].Service_Item_Id; details[j].Itemname = presList[j].Item_Name; details[j].ItemType = (presList[j].StatItem_Code == "01" || presList[j].StatItem_Code == "02" || presList[j].StatItem_Code == "03") ? presList[j].StatItem_Code : "00"; details[j].Order_Flag = presList[j].OrderNo; details[j].PassId = 0; details[j].PresAmount = presList[j].Dosage; details[j].PresctionId = presHeads[i].PresHeadId; details[j].RelationNum = presList[j].RelationNum; details[j].Sell_price = presList[j].Sell_Price; details[j].Standard = presList[j].Standard; details[j].Tolal_Fee = presList[j].Item_Amount * presList[j].Item_Price * presList[j].Dosage; details[j].Unit = presList[j].Unit; details[j].Drug_Flag = (presList[j].StatItem_Code == "01" || presList[j].StatItem_Code == "02" || presList[j].StatItem_Code == "03") ? 1 : 0; prescriptions[presNo].Total_Fee += details[j].Tolal_Fee; #endregion } prescriptions[presNo].PresDetails = details; presNo++; } } //定义返回的处方结构体 //取有效处方记录 HIS.Interface.Structs.Prescription[] returnPres = new HIS.Interface.Structs.Prescription[presNo]; { for (int i = 0; i < presNo; i++) { returnPres[i] = prescriptions[i]; } } return(returnPres); }