Пример #1
0
        static void Main(string[] args)
        {
            DataClasses1DataContext db       = new DataClasses1DataContext();
            List <Rule>             RuleList = db.Rules.Where(x => x.QID == 188).ToList();

            Console.WriteLine("Rules found: " + RuleList.Count + ". Continue?");
            Console.ReadLine();
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            foreach (Rule rule in RuleList)
            {
                if (rule.Type == 1)
                {
                    CostingRule crule = serializer.Deserialize <CostingRule>(rule.Properties);
                    crule.Id        = rule.ID;
                    rule.Properties = serializer.Serialize(crule);
                }
                if (rule.Type == 2)
                {
                    ServiceRule crule = serializer.Deserialize <ServiceRule>(rule.Properties);
                    crule.Id        = rule.ID;
                    rule.Properties = serializer.Serialize(crule);
                }
            }
            var changeSet = db.GetChangeSet();

            Console.WriteLine("Changes: " + changeSet.Updates.ToString());
            Console.ReadLine();
            db.SubmitChanges();
        }
Пример #2
0
    public void Optimize()
    {
        var rule = new ServiceRule("Win8InstallToolTest", "descr", ServiceState.Disabled);

        Assert.IsTrue(rule.NeedOptimize());

        rule.Optimize();
        using var controller = new ServiceController("Win8InstallToolTest");
        Assert.AreEqual(controller.StartType, ServiceStartMode.Disabled);
    }
        /// <summary>
        /// Check the service rul, then the parcel type rules.
        /// </summary>
        /// <param name="serviceRule"></param>
        public void Visit(ServiceRule serviceRule)
        {
            if (_rate.ServiceId == null || _rate.ServiceId != serviceRule.ServiceId)
            {
                return;
            }

            if (!serviceRule.ParcelTypeRules.ContainsKey((ParcelType)_rate.ParcelType))
            {
                _state = ValidationState.INVALID;
                Reason = string.Format("Service {0} does not support parcel type {1}", serviceRule.ServiceId, _rate.ParcelType);
                return;
            }
            foreach (var rule in serviceRule.ParcelTypeRules[(ParcelType)_rate.ParcelType])
            {
                if (_state == ValidationState.PROCESSING)
                {
                    rule.Accept(this);
                }
            }
        }
Пример #4
0
 public static RatesArrayFluent <T> RateFromRule <T>(this RatesArrayFluent <T> f, CarrierRule carrierRule, ServiceRule serviceRule, ParcelTypeRule parcelTypeRule)
     where T : class, IRates, new()
 {
     return(f
            .Carrier(carrierRule.Carrier)
            .ParcelType(parcelTypeRule.ParcelType)
            .Service(serviceRule.ServiceId));
 }
Пример #5
0
        /// <summary>
        /// Finds the patient.
        /// </summary>
        /// <param name="facilityId">The facility identifier.</param>
        /// <param name="lastname">The lastname.</param>
        /// <param name="middlename">The middlename.</param>
        /// <param name="firstname">The firstname.</param>
        /// <param name="enrollment">The enrollment.</param>
        /// <param name="gender">The gender.</param>
        /// <param name="status">The status.</param>
        /// <param name="dob">The dob.</param>
        /// <param name="registrationDate">The registration date.</param>
        /// <param name="moduleId">The module identifier.</param>
        /// <param name="maxRecords">The maximum records.</param>
        /// <returns></returns>
        public static DataTable FindPatient(int facilityId, string lastname, string middlename, string firstname,
                                            string enrollment,
                                            string gender,
                                            string status,
                                            DateTime?dob,
                                            DateTime?registrationDate,
                                            int moduleId          = 999,
                                            int maxRecords        = 100,
                                            string phoneNumber    = "",
                                            string identifierName = "")
        {
            IPatientRegistration pMgr = (IPatientRegistration)ObjectFactory.CreateInstance("BusinessProcess.Clinical.BPatientRegistration, BusinessProcess.Clinical");

            string rowFilter  = "";
            string rowFilter2 = "";
            string ruleOne    = "";
            string ruleOneAge = "";
            string ruleTwoAge = "";
            string rule1Sex   = "";
            string rule2Sex   = "";
            string ruletwo    = "";

            if (moduleId < 999)
            {
                IModule            moduleMgr = (IModule)ObjectFactory.CreateInstance("BusinessProcess.FormBuilder.BModule, BusinessProcess.FormBuilder");
                List <ServiceRule> rules     = moduleMgr.GetBusinessRule(moduleId);

                if (rules != null && rules.Count > 0)
                {
                    ServiceRule        setOneAge    = rules.Where(r => r.RuleSet == 1 && r.RuleReferenceId == "ACTIVE_AGE_RANGE_YEARS").FirstOrDefault();
                    List <ServiceRule> setOneFemale = rules.Where(r => r.RuleSet == 1 && r.RuleReferenceId == "ACTIVE_FEMALE").ToList();
                    List <ServiceRule> setOneMale   = rules.Where(r => r.RuleSet == 1 && r.RuleReferenceId == "ACTIVE_MALE").ToList();
                    if (setOneAge != null)
                    {
                        if (setOneAge.MinValue != "" || setOneAge.MaxValue != "")
                        {
                            rowFilter  = string.Format("{0} Age >= {1} And Age <= {2} ", rowFilter, Convert.ToDecimal(setOneAge.MinValue), Convert.ToDecimal(setOneAge.MaxValue));
                            ruleOne    = string.Format("And (convert(varchar,round(cast(datediff(dd,DOB,DateofDeath)/365.25 as decimal(5,2)),2))) between {0} and {1})", setOneAge.MinValue, setOneAge.MaxValue);
                            ruleOneAge = string.Format(" (Age between {0} and {1}) ", setOneAge.MinValue, setOneAge.MaxValue);
                        }
                    }
                    if (setOneFemale != null && setOneFemale.Count > 0 && setOneMale != null && setOneMale.Count > 0)
                    {
                    }
                    else
                    {
                        if (setOneFemale.Count > 0)
                        {
                            if (rowFilter != "")
                            {
                                rowFilter = rowFilter + " and ";
                            }
                            rowFilter = string.Format("{0} Sex = '{1}' ", rowFilter, "Female");
                            ruleOne  += " And (Sex = 17) ";
                            rule1Sex  = "(Sex = 'Female')";
                        }
                        else if (setOneMale.Count > 0)
                        {
                            if (rowFilter != "")
                            {
                                rowFilter = rowFilter + " and ";
                            }
                            rowFilter = string.Format("{0} Sex = '{1}' ", rowFilter, "male");
                            ruleOne  += " And (Sex = 16) ";
                            rule1Sex  = "(Sex = 'Male')";
                        }
                    }

                    ServiceRule        set2Age    = rules.Where(r => r.RuleSet == 2 && r.RuleReferenceId == "ACTIVE_AGE_RANGE_YEARS").FirstOrDefault();
                    List <ServiceRule> set2Female = rules.Where(r => r.RuleSet == 2 && r.RuleReferenceId == "ACTIVE_FEMALE").ToList();
                    List <ServiceRule> set2Male   = rules.Where(r => r.RuleSet == 2 && r.RuleReferenceId == "ACTIVE_MALE").ToList();
                    if (set2Age != null)
                    {
                        if (set2Age.MinValue != "" || set2Age.MaxValue != "")
                        {
                            rowFilter2 = string.Format("{0} Age >= {1} And Age <= {2} ", rowFilter2, Convert.ToDecimal(set2Age.MinValue), Convert.ToDecimal(set2Age.MaxValue));
                            ruletwo    = string.Format("And (convert(varchar,round(cast(datediff(dd,DOB,DateofDeath)/365.25 as decimal(5,2)),2))) between {0} and {1})", setOneAge.MinValue, setOneAge.MaxValue);
                            ruleTwoAge = string.Format(" (Age between {0} and {1})", set2Age.MinValue, set2Age.MaxValue);
                        }
                        if (set2Female != null && set2Female.Count > 0 && set2Male != null && set2Male.Count > 0)
                        {
                        }
                        else
                        {
                            if (set2Female.Count > 0)
                            {
                                if (rowFilter2 != "")
                                {
                                    rowFilter2 = rowFilter2 + " and ";
                                }
                                rowFilter2 = string.Format("{0} Sex = '{1}' ", rowFilter2, "Female");
                                ruletwo   += " And (Sex = 17) ";
                                rule2Sex   = " (Sex = 'Female') ";
                            }
                            else if (set2Male.Count > 0)
                            {
                                if (rowFilter2 != "")
                                {
                                    rowFilter2 = rowFilter2 + " and ";
                                }
                                rowFilter2 = string.Format("{0} Sex = '{1}' ", rowFilter2, "male");
                                ruletwo   += " And (Sex = 16) ";
                                rule2Sex   = " (Sex = 'Male') ";
                            }
                        }

                        string mainRowFilter = rowFilter;
                        if (rowFilter2 != "")
                        {
                            mainRowFilter = mainRowFilter + " or (" + rowFilter2 + " )";
                        }


                        //dtPatient.DefaultView.RowFilter = mainRowFilter;
                    }
                }
                ruleOne = ruleOneAge.Trim() + (rule1Sex.Trim() != "" ? " And " + rule1Sex.Trim() : "");
                ruletwo = ruleTwoAge.Trim() + (rule2Sex.Trim() != "" ? " And " + rule2Sex.Trim() : "");

                if (ruleOne.Trim() != "" && ruletwo.Trim() != "")
                {
                    rowFilter = string.Format(" Where ( {0} or ( {1}))", ruleOne, ruletwo);
                }
                else if (ruleOne.Trim() != "")
                {
                    rowFilter = " Where " + ruleOne;
                }
                else if (ruletwo.Trim() != "")
                {
                    rowFilter = " Where " + ruletwo;
                }
            }
            DataTable dtPatient = pMgr.GetPatientSearchResults(facilityId, lastname, middlename, firstname, enrollment, gender, status, dob, registrationDate, moduleId, maxRecords, rowFilter, phoneNumber, identifierName);

            // DataTable dt = dtPatient.DefaultView.ToTable();
            return(dtPatient);
        }
Пример #6
0
        /// <summary>
        /// Binds the module by business rules.
        /// </summary>
        /// <param name="dt">The dt.</param>
        /// <param name="patientAge">The patient age.</param>
        /// <param name="patientSex">The patient sex.</param>
        public static List <ServiceArea> FilterModuleByBusinessRules(List <ServiceArea> dt, double patientAge, string patientSex)
        {
            IModule moduleMgr = (IModule)ObjectFactory.CreateInstance("BusinessProcess.FormBuilder.BModule, BusinessProcess.FormBuilder");

            List <ServiceRule> rules = moduleMgr.GetBusinessRule(null);
            List <ServiceArea> list  = dt.Where(r => r.EnrolFlag == true).ToList();

            list.RemoveAll(item =>
            {
                int moduleId                    = item.Id;
                ServiceRule setOneAge           = rules.Where(r => r.RuleSet == 1 && r.RuleReferenceId == "ACTIVE_AGE_RANGE_YEARS" && r.ServiceAreaId == moduleId).FirstOrDefault();
                List <ServiceRule> setOneFemale = rules.Where(r => r.RuleSet == 1 && r.RuleReferenceId == "ACTIVE_FEMALE" && r.ServiceAreaId == moduleId).ToList();
                List <ServiceRule> setOneMale   = rules.Where(r => r.RuleSet == 1 && r.RuleReferenceId == "ACTIVE_MALE" && r.ServiceAreaId == moduleId).ToList();
                bool setOneFlag                 = true;
                bool setTwoFlag                 = false;
                if (setOneAge != null)
                {
                    if (setOneAge.MinValue != "0" || setOneAge.MaxValue != "0")
                    {
                        if (patientAge >= Convert.ToDouble(setOneAge.MinValue) && patientAge <= Convert.ToDouble(setOneAge.MaxValue))
                        {
                        }
                        else
                        {
                            setOneFlag = false;
                        }
                    }
                }
                if (setOneFemale != null && setOneFemale.Count > 0 && setOneMale != null && setOneMale.Count > 0)
                {
                }
                else
                {
                    if (setOneFemale.Count > 0 && patientSex == "Male")
                    {
                        setOneFlag = false;
                    }
                    else if (setOneMale.Count > 0 && patientSex == "Female")
                    {
                        setOneFlag = false;
                    }
                }

                ServiceRule set2Age           = rules.Where(r => r.RuleSet == 2 && r.RuleReferenceId == "ACTIVE_AGE_RANGE_YEARS" && r.ServiceAreaId == moduleId).FirstOrDefault();
                List <ServiceRule> set2Female = rules.Where(r => r.RuleSet == 2 && r.RuleReferenceId == "ACTIVE_FEMALE" && r.ServiceAreaId == moduleId).ToList();
                List <ServiceRule> set2Male   = rules.Where(r => r.RuleSet == 2 && r.RuleReferenceId == "ACTIVE_MALE" && r.ServiceAreaId == moduleId).ToList();
                if (set2Age != null)
                {
                    if (patientAge >= Convert.ToDouble(set2Age.MinValue) && patientAge <= Convert.ToDouble(set2Age.MaxValue))
                    {
                    }
                    else
                    {
                        setTwoFlag = false;
                    }
                }
                if (set2Female != null && set2Female.Count > 0 && set2Male != null && set2Male.Count > 0)
                {
                }
                else
                {
                    if (set2Female.Count > 0 && patientSex == "Male")
                    {
                        setTwoFlag = false;
                    }
                    else if (set2Male.Count > 0 && patientSex == "Female")
                    {
                        setTwoFlag = false;
                    }
                }
                return(!setTwoFlag && !setOneFlag);
            });


            return(list);
        }
Пример #7
0
 protected void AddRuleBroke(ServiceRule rule)
 {
     _brokenRules.Add(rule);
 }