public override void SetQcObjInnerKind(object innerKind) { if (innerKind is QCConditionType) { _conditionType = (QCConditionType)innerKind; } }
/// <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); } }
/// <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); }
/// <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); } }
/// <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); }
/// <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); }