Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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("读取发票信息错误!");
            }
        }
Esempio n. 4
0
        /// <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);
        }