Example #1
0
 public override void SetQcObjInnerKind(object innerKind)
 {
     if (innerKind is QCConditionType)
     {
         _conditionType = (QCConditionType)innerKind;
     }
 }
Example #2
0
        /// <summary>
        /// 增加规则纪录
        /// </summary>
        /// <param name="patid">病人Id</param>
        /// <param name="eprid">病历Id</param>
        /// <param name="opdoctor">操作医生</param>
        /// <param name="conditionType">时限规则条件类别</param>
        /// <param name="conditionObject">条件对象,用来定位具体的条件</param>
        /// <param name="conditionTime">条件发生时间</param>
        public void AddRuleRecord(int patid, int eprid, string opdoctor, QCConditionType conditionType, object conditionObject, DateTime conditionTime)
        {
            DoctorManagerPatient dmp = _patientdal.SelectDoctorManagerPatient(patid);

            if (dmp == null)
            {
                return;
            }

            QCCondition qcc = QCCondition.SelectQCCondition(conditionType, conditionObject);

            if (qcc == null)
            {
                return;
            }

            IList <QCRule> rules = QCRule.GetRulesByCondition(qcc);

            foreach (QCRule rule in rules)
            {
                QCRuleRecord qcrr = new QCRuleRecord(patid, eprid, rule);
                qcrr.ConditionTime  = conditionTime;
                qcrr.ConditionState = CompleteType.Completed;
                qcrr.RuleState      = RuleRecordState.UndoIntime;
                qcrr.CreateDoctor   = opdoctor;
                SetQcRuleRecordState(rule, qcrr);
                _rulerecorddal.InsertPatientRuleRecord(dmp, qcrr);
            }
        }
Example #3
0
        /// <summary>
        /// 取得条件类型对应的类
        /// </summary>
        /// <param name="condition"></param>
        /// <returns></returns>
        public static string ConditionType2String(QCConditionType condtiontype)
        {
            switch (condtiontype)
            {
            case QCConditionType.AdviceChange:
                return(ConstRes.cstOrderType);

            case QCConditionType.PatStateChange:
                return(ConstRes.cstPatientType);

            case QCConditionType.EmrChange:
                return(ConstRes.cstEmrModelType);

            default:
                break;
            }
            return(string.Empty);
        }
Example #4
0
        /// <summary>
        /// 由于条件取消导致规则记录取消
        /// </summary>
        /// <param name="patid"></param>
        /// <param name="eprid"></param>
        /// <param name="opdoctor"></param>
        /// <param name="conditionType"></param>
        /// <param name="conditionObject"></param>
        /// <param name="conditionTime"></param>
        public void CancelRuleRecord(int patid, int eprid, string opdoctor, QCConditionType conditionType, object conditionObject, DateTime conditionTime)
        {
            DoctorManagerPatient dmp = _patientdal.SelectDoctorManagerPatient(patid);

            if (dmp == null)
            {
                return;
            }

            QCCondition qcc = QCCondition.SelectQCCondition(conditionType, conditionObject);

            if (qcc == null)
            {
                return;
            }

            IList <QCRule> rules = QCRule.GetRulesByCondition(qcc);

            if (rules == null || rules.Count == 0)
            {
                return;
            }

            DataTable dtrulerecords = SelectPatientRuleRecords(patid, false);
            Collection <QCRuleRecord> rulerecords = GetRuleRecordsCollection(dtrulerecords);

            for (int i = 0; i < rulerecords.Count; i++)
            {
                QCRuleRecord qcrr = rulerecords[i];
                if (qcrr.ResultState == CompleteType.Completed)
                {
                    continue;
                }
                QCRule existsrule = ((List <QCRule>) rules).Find(delegate(QCRule rule)
                {
                    return(rule.Id == qcrr.Rule.Id);
                });
                qcrr.RecordState = RecordState.Invalid;
                _rulerecorddal.UpdatePatientRuleRecord(dmp, qcrr);
            }
        }
Example #5
0
        /// <summary>
        /// 通过指定的条件类别和对象定位条件
        /// </summary>
        /// <param name="conditionType"></param>
        /// <param name="conditionObject"></param>
        /// <returns></returns>
        public static QCCondition SelectQCCondition(QCConditionType conditionType, object conditionObject)
        {
            IList <QCCondition> kindConditions = new List <QCCondition>();

            foreach (QCCondition qcc in _allConditions)
            {
                if (qcc._conditionType == conditionType)
                {
                    kindConditions.Add(qcc.Clone());
                }
            }

            string objtype = Qcsv.ConditionType2String(conditionType);

            if (string.IsNullOrEmpty(objtype))
            {
                foreach (QCCondition qcc in kindConditions)
                {
                    if (qcc.JudgeSetting == conditionObject.ToString())
                    {
                        return(qcc);
                    }
                }
            }
            else
            {
                foreach (QCCondition qcc in kindConditions)
                {
                    QCParams qcp = new QCParams(qcc.JudgeSetting);
                    if (Qcsv.JudgeObjIsEqualProps(Type.GetType(objtype), conditionObject, qcp))
                    {
                        return(qcc);
                    }
                }
            }
            return(null);
        }
Example #6
0
 /// <summary>
 /// 增加规则纪录,默认当前时间
 /// </summary>
 /// <param name="patid">病人Id</param>
 /// <param name="eprid">病历Id</param>
 /// <param name="opdoctor">操作医生</param>
 /// <param name="conditionType"></param>
 /// <param name="conditionObject"></param>
 public void AddRuleRecord(int patid, int eprid, string opdoctor, QCConditionType conditionType, object conditionObject)
 {
     AddRuleRecord(patid, eprid, opdoctor, conditionType, conditionObject, DateTime.Now);
 }