/// <summary> /// 上传门诊病历记录 /// </summary> /// <param name="record">病历记录</param> public static void Upload_Clinic_Medical_Records(string dahId, EmrRecord record) { XmlDocument upateData = new XmlDocument(); XmlDocument result = new XmlDocument(); upateData.LoadXml(Properties.Resources.ClinicMedicalRecords); #region 入病历数据 foreach (XmlNode node in upateData.SelectSingleNode("chs/table/row").ChildNodes) { foreach (XmlNode recordNode in record.RecordContentXml.SelectSingleNode("门急诊病历").ChildNodes) { if (node.InnerText.Trim() == recordNode.Name.Trim()) { node.InnerText = recordNode.InnerText; } } } Model.PatientInfo patInfo = BindEntity <Model.PatientInfo> .CreateInstanceDAL(oleDb).GetModel(record.PatId); //病人信息 Model.MZ_PatList patList = BindEntity <Model.MZ_PatList> .CreateInstanceDAL(oleDb).GetModel(record.PatListId); //病人就诊信息 upateData.SelectSingleNode("chs/table/row/dahid").InnerText = dahId; //健康档案号 upateData.SelectSingleNode("chs/table/row/cf").InnerText = ""; upateData.SelectSingleNode("chs/table/row/jzrq").InnerText = patList.CureDate.Year.ToString("0000") + patList.CureDate.Month.ToString("00") + patList.CureDate.Day.ToString("00"); upateData.SelectSingleNode("chs/table/row/jzys").InnerText = new GWMHIS.BussinessLogicLayer.Classes.Employee(Convert.ToInt64(patList.CureEmpCode)).Name; upateData.SelectSingleNode("chs/table/row/jzjg").InnerText = HIS.SYSTEM.Core.EntityConfig.WorkName; upateData.SelectSingleNode("chs/table/row/jgdm").InnerText = HIS.SYSTEM.Core.EntityConfig.WorkID.ToString(); upateData.SelectSingleNode("chs/table/row/djr").InnerText = new GWMHIS.BussinessLogicLayer.Classes.Employee(Convert.ToInt64(record.RecordCreateEmp)).Name; upateData.SelectSingleNode("chs/table/row/djrq").InnerText = record.RecordCreateDate.Year.ToString("0000") + record.RecordCreateDate.Month.ToString("00") + record.RecordCreateDate.Day.ToString("00"); upateData.SelectSingleNode("chs/table/row/his_blbh").InnerText = (record.RecordId).ToString(); #endregion CHIService service = new CHIService(); result.LoadXml(service.upload_Clinic_Medical_Records(upateData.InnerXml)); if (Convert.ToBoolean(result.SelectSingleNode("chs/status").InnerText)) { record.UpdateFlag = 1; record.Update(); Upload_Mzcf_Records(record.PatListId, dahId, record.RecordId); } else { throw new Exception(result.SelectSingleNode("chs/message").InnerText); } }
/// <summary> /// 挂号的预处理 /// </summary> /// <param name="Patient"></param> /// <returns></returns> public override ChargeInfo Budget(RegPatient Patient) { //保存就诊记录 Model.MZ_PatList mz_patlist = SavePatList(Patient); Patient.PatListID = mz_patlist.PatListID; //查找所需费用项目 List <Model.MZ_REG_ITEM_FEE> listRegFee = BindEntity <Model.MZ_REG_ITEM_FEE> .CreateInstanceDAL(oleDb).GetListArray(BLL.Tables.mz_reg_item_fee.TYPE_CODE + "='" + Patient.RegTypeCode.Trim() + "'"); //写入处方表 Model.MZ_PresMaster mz_presmaster = SavePresMaster(Patient); Hashtable htCostOrder = new Hashtable(); Model.MZ_CostOrder mz_costorder = null; foreach (Model.MZ_REG_ITEM_FEE mz_reg_item_fee in listRegFee) { Model.BASE_SERVICE_ITEMS base_service_item = BindEntity <Model.BASE_SERVICE_ITEMS> .CreateInstanceDAL(oleDb).GetModel(mz_reg_item_fee.ITEM_ID); if (base_service_item == null) { throw new OperatorException("找不到项目编号为" + mz_reg_item_fee.ITEM_ID.ToString() + "的项目"); } //保存明细 Model.MZ_PresOrder mz_presorder = SavePresOrder(Patient, mz_presmaster, base_service_item); mz_presmaster.Total_Fee += mz_presorder.Tolal_Fee; if (htCostOrder.Contains(base_service_item.STATITEM_CODE)) { ((Model.MZ_CostOrder)htCostOrder[base_service_item.STATITEM_CODE]).Total_Fee += mz_presorder.Tolal_Fee; } else { mz_costorder = new HIS.Model.MZ_CostOrder(); mz_costorder.ItemType = base_service_item.STATITEM_CODE; mz_costorder.Total_Fee = mz_presorder.Tolal_Fee; htCostOrder.Add(base_service_item.STATITEM_CODE, mz_costorder); } } //写结算记录 Model.MZ_CostMaster mz_costmaster = SaveCostMaster(Patient, mz_presmaster); InvoiceItem[] invoiceItems = new InvoiceItem[htCostOrder.Count]; int count = 0; foreach (object item in htCostOrder) { mz_costorder = (Model.MZ_CostOrder)((DictionaryEntry)item).Value; mz_costorder.CostID = mz_costmaster.CostMasterID; BindEntity <Model.MZ_CostOrder> .CreateInstanceDAL(oleDb).Add(mz_costorder); Model.BASE_STAT_ITEM base_stat_item = BindEntity <Model.BASE_STAT_ITEM> .CreateInstanceDAL(oleDb).GetModel(BLL.Tables.base_stat_item.CODE + "='" + mz_costorder.ItemType.Trim() + "'"); Model.BASE_STAT_MZFP base_stat_mzfp = BindEntity <Model.BASE_STAT_MZFP> .CreateInstanceDAL(oleDb).GetModel(BLL.Tables.base_stat_mzfp.CODE + "='" + base_stat_item.MZFP_CODE.Trim() + "'"); invoiceItems[count].ItemName = base_stat_mzfp.ITEM_NAME; invoiceItems[count].ItemCode = base_stat_mzfp.CODE; invoiceItems[count].Cost = mz_costorder.Total_Fee; count++; } //回写处方的总金额和结算号 BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).Update(BLL.Tables.mz_presmaster.PRESMASTERID + "=" + mz_presmaster.PresMasterID, BLL.Tables.mz_presmaster.TOTAL_FEE + "=" + mz_presmaster.Total_Fee, BLL.Tables.mz_presmaster.COSTMASTERID + "=" + mz_costmaster.CostMasterID); ChargeInfo regInfo = new ChargeInfo(); regInfo.ChargeID = mz_costmaster.CostMasterID; regInfo.ChargeDate = mz_costmaster.CostDate; regInfo.TotalFee = mz_costmaster.Total_Fee; regInfo.PrescriptionID = mz_presmaster.PresMasterID; regInfo.Items = invoiceItems; return(regInfo); }
/// <summary> /// 发票号 /// </summary> /// <param name="InvoiceNo">发票号</param> public Invoice(string PerfChar, string InvoiceNo, OPDBillKind kind) { HIS.Model.MZ_CostMaster m_mz_costmaster = new HIS.Model.MZ_CostMaster( ); HIS.DAL.MZ_DAL mz_dal = new HIS.DAL.MZ_DAL( ); mz_dal._OleDB = oleDb; try { string condiction = "TicketNum='" + InvoiceNo + "' and record_flag in (0,1)"; //if ( PerfChar.Trim( ) != "" ) condiction += " and TicketCode ='" + PerfChar + "'"; if (kind == OPDBillKind.门诊挂号发票) { condiction += " and hang_flag=" + (int)OPDOperationType.门诊挂号; } if (kind == OPDBillKind.门诊收费发票) { condiction += " and hang_flag=" + (int)OPDOperationType.门诊收费; } m_mz_costmaster = BindEntity <Model.MZ_CostMaster> .CreateInstanceDAL(oleDb).GetModel(condiction); _perfchar = PerfChar; _billKind = kind; _chargeId = m_mz_costmaster.CostMasterID; _invoiceNo = InvoiceNo; _perfChar = m_mz_costmaster.TicketCode; Model.MZ_CostMaster mz_costmaster = BindEntity <Model.MZ_CostMaster> .CreateInstanceDAL(oleDb).GetModel(m_mz_costmaster.CostMasterID); Model.MZ_PatList mz_patlist = BindEntity <Model.MZ_PatList> .CreateInstanceDAL(oleDb).GetModel(mz_costmaster.PatListID); _patientName = mz_patlist == null ? "" : mz_patlist.PatName; _totalPay = m_mz_costmaster.Total_Fee; _posPay = m_mz_costmaster.Pos_Fee; _favorPay = m_mz_costmaster.Favor_Fee; _villagePay = m_mz_costmaster.Village_Fee; _selfTally = m_mz_costmaster.Self_Tally; _chargeUser = m_mz_costmaster.ChargeName; _chargeUserId = m_mz_costmaster.ChargeCode; _chargeDate = m_mz_costmaster.CostDate; _record_flag = m_mz_costmaster.Record_Flag; _cashPay = _totalPay - _posPay - _villagePay - _favorPay - _selfTally;//m_mz_costmaster.Money_Fee; //发票内容 System.Data.DataTable tb = mz_dal.GetInvoiceDetail(mz_costmaster.CostMasterID); //Hashtable htInvoiceItems = new Hashtable(); //for (int i = 0; i < tb.Rows.Count; i++) //{ // InvoiceItem item = new InvoiceItem(); // item.ItemName = tb.Rows[i]["Item_Name"].ToString().Trim(); // item.Cost = Convert.ToDecimal(tb.Rows[i]["Total_fee"]); // item.Item_Name = tb.Rows[i]["ItemName"].ToString().Trim(); // item.Tolal_Fee = Convert.ToDecimal(tb.Rows[i]["Fee"]); // if (htInvoiceItems.ContainsKey(item.ItemName)) // { // InvoiceItem item1 = (InvoiceItem)htInvoiceItems[item.ItemName]; // if (tb.Rows[i]["itemtype"].ToString() == "01" || tb.Rows[i]["itemtype"].ToString() == "02" || tb.Rows[i]["itemtype"].ToString() == "03") // { // item1.Cost = item1.Cost + item.Cost; // htInvoiceItems.Remove(item.ItemName); // } // htInvoiceItems.Add(item1.ItemName, item1); // } // else // { // htInvoiceItems.Add(item.ItemName, item); // } //} _items = new InvoiceItem[tb.Rows.Count]; // int invoiceCount = 0; for (int i = 0; i < tb.Rows.Count; i++) { _items[i].ItemName = tb.Rows[i]["Item_Name"].ToString().Trim(); _items[i].Cost = Convert.ToDecimal(tb.Rows[i]["Total_fee"]); _items[i].Item_Name = tb.Rows[i]["ItemName"].ToString().Trim(); if (_items[i].Item_Name.Trim() == "") { _items[i].Tolal_Fee = ""; } else { _items[i].Tolal_Fee = tb.Rows[i]["Fee"].ToString(); } } //foreach (object obj in htInvoiceItems) //{ // _items[invoiceCount].ItemName = ((InvoiceItem)((DictionaryEntry)obj).Value).ItemName; // _items[invoiceCount].Cost = ((InvoiceItem)((DictionaryEntry)obj).Value).Cost; // _items[invoiceCount].ItemName = ((InvoiceItem)((DictionaryEntry)obj).Value).Item_Name; // _items[invoiceCount].Tolal_Fee = ((InvoiceItem)((DictionaryEntry)obj).Value).Tolal_Fee; // invoiceCount++; //} //处方信息 #region ... //定义统计大类容器 Hashtable htStatItems = new Hashtable( ); List <HIS.Model.MZ_PresMaster> lst_mz_presmaster = new List <HIS.Model.MZ_PresMaster>( ); lst_mz_presmaster = BindEntity <Model.MZ_PresMaster> .CreateInstanceDAL(oleDb).GetListArray(Tables.mz_presmaster.COSTMASTERID + oleDb.EuqalTo() + _chargeId); _prescription = new Prescription[lst_mz_presmaster.Count]; int index = 0; foreach (Model.MZ_PresMaster model_mz_presmaster in lst_mz_presmaster) { _prescription[index] = new Prescription( ); _prescription[index].Charge_Flag = model_mz_presmaster.Charge_Flag; _prescription[index].ChargeCode = model_mz_presmaster.ChargeCode; _prescription[index].ChargeID = model_mz_presmaster.CostMasterID; _prescription[index].Drug_Flag = model_mz_presmaster.Drug_Flag; _prescription[index].ExecDeptCode = model_mz_presmaster.ExecDeptCode; _prescription[index].ExecDocCode = model_mz_presmaster.ExecDocCode; _prescription[index].OldPresID = model_mz_presmaster.OldID; _prescription[index].PresCostCode = model_mz_presmaster.PresCostCode; _prescription[index].PrescriptionID = model_mz_presmaster.PresMasterID; _prescription[index].PrescType = model_mz_presmaster.PresType; _prescription[index].PresDeptCode = model_mz_presmaster.PresDocCode; _prescription[index].PresDocCode = model_mz_presmaster.PresDocCode; _prescription[index].Record_Flag = model_mz_presmaster.Record_Flag; _prescription[index].TicketCode = model_mz_presmaster.TicketCode; _prescription[index].TicketNum = model_mz_presmaster.TicketNum; _prescription[index].Total_Fee = model_mz_presmaster.Total_Fee; _prescription[index].Drug_Flag = model_mz_presmaster.Drug_Flag; _prescription[index].DocPresId = model_mz_presmaster.DocPresId; List <HIS.Model.MZ_PresOrder> orders = BindEntity <Model.MZ_PresOrder> .CreateInstanceDAL(oleDb).GetListArray("PresmasterID=" + _prescription[index].PrescriptionID); PrescriptionDetail[] details = new PrescriptionDetail[orders.Count]; for (int j = 0; j < orders.Count; j++) { #region 明细 details[j] = new PrescriptionDetail(); details[j].Amount = orders[j].Amount; details[j].BigitemCode = orders[j].BigItemCode; details[j].Buy_price = orders[j].Buy_Price; details[j].ComplexId = orders[j].CaseID; details[j].DetailId = orders[j].PresOrderID; details[j].ItemId = orders[j].ItemID; details[j].Itemname = orders[j].ItemName; details[j].ItemType = orders[j].ItemType; details[j].Order_Flag = orders[j].Order_Flag; details[j].PassId = orders[j].PassID; details[j].PresAmount = orders[j].PresAmount; details[j].PresctionId = orders[j].PresMasterID; details[j].RelationNum = orders[j].RelationNum; details[j].Sell_price = orders[j].Sell_Price; details[j].Standard = orders[j].Standard; details[j].Tolal_Fee = orders[j].Tolal_Fee; details[j].Unit = orders[j].Unit; details[j].Comp_Money = orders[j].Comp_Money; #endregion #region 生成大项目列表 if (htStatItems.ContainsKey(orders[j].BigItemCode.Trim())) { InvoiceItem item = (InvoiceItem)htStatItems[orders[j].BigItemCode.Trim( )]; item.Cost += orders[j].Tolal_Fee; htStatItems.Remove(orders[j].BigItemCode.Trim( )); htStatItems.Add(item.ItemCode, item); } else { InvoiceItem item = new InvoiceItem( ); item.ItemCode = orders[j].BigItemCode.Trim(); //item.ItemName = GetStatItemNameByStatCode( item.ItemCode ); item.ItemName = BaseDataController.GetName(BaseDataCatalog.基本分类科目, item.ItemCode); item.Cost = orders[j].Tolal_Fee; htStatItems.Add(item.ItemCode, item); } #endregion } _prescription[index].PresDetails = details; index++; } #endregion _statitems = new InvoiceItem[htStatItems.Count]; index = 0; foreach (object obj in htStatItems.Values) { _statitems[index] = (InvoiceItem)obj; index++; } paytype = ""; if (_cashPay > 0) { paytype += " 现金 "; } if (_posPay > 0) { paytype += " POS "; } if (_villagePay > 0) { paytype += " 农合医保记账 "; } if (_selfTally > 0) { paytype += " 单位记账 "; } } catch (Exception err) { ErrorWriter.WriteLog(err.Message); throw new Exception("读取发票信息错误!"); } }
/// <summary> /// 判断门诊号是否存在 /// </summary> /// <returns></returns> private bool VisitNoExists(string VisitNo) { Model.MZ_PatList mz_patient = BindEntity <Model.MZ_PatList> .CreateInstanceDAL(oleDb).GetModel("VISITNO='" + VisitNo + "'"); return(mz_patient == null ? false : true); }