Example #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PayorCoverageCache"/> class.
 /// </summary>
 /// <param name="patient">The patient.</param>
 /// <param name="payorCache">The payor cache.</param>
 /// <param name="effectiveDateRange">The effective date range.</param>
 /// <param name="memberNumber">The member number.</param>
 /// <param name="payorSubscriber">The payor subscriber.</param>
 /// <param name="payorCoverageCacheType">Type of the payor coverage cache.</param>
 protected internal PayorCoverageCache(
     Patient patient,
     PayorCache payorCache,
     DateRange effectiveDateRange,
     string memberNumber,
     PayorSubscriberCache payorSubscriber,
     PayorCoverageCacheType payorCoverageCacheType)
 {
     Patient                = patient;
     PayorCache             = payorCache;
     EffectiveDateRange     = effectiveDateRange;
     MemberNumber           = memberNumber;
     PayorSubscriberCache   = payorSubscriber;
     PayorCoverageCacheType = payorCoverageCacheType;
 }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PayorCoverageCache"/> class.
 /// </summary>
 /// <param name="patient">The patient.</param>
 /// <param name="payorCache">The payor cache.</param>
 /// <param name="effectiveDateRange">The effective date range.</param>
 /// <param name="memberNumber">The member number.</param>
 /// <param name="payorSubscriber">The payor subscriber.</param>
 /// <param name="payorCoverageCacheType">Type of the payor coverage cache.</param>
 protected internal PayorCoverageCache(
     Patient patient, 
     PayorCache payorCache, 
     DateRange effectiveDateRange, 
     string memberNumber, 
     PayorSubscriberCache payorSubscriber, 
     PayorCoverageCacheType payorCoverageCacheType )
 {
     Patient = patient;
     PayorCache = payorCache;
     EffectiveDateRange = effectiveDateRange;
     MemberNumber = memberNumber;
     PayorSubscriberCache = payorSubscriber;
     PayorCoverageCacheType = payorCoverageCacheType;
 }
Example #3
0
        /// <summary>
        /// Revises the payor coverage cache info.
        /// </summary>
        /// <param name="payorCoverageCacheType">Type of the payor coverage cache.</param>
        /// <param name="effectiveDateRange">The effective date range.</param>
        /// <param name="memberNumber">The member number.</param>
        public virtual void RevisePayorCoverageCacheInfo(PayorCoverageCacheType payorCoverageCacheType, DateRange effectiveDateRange, string memberNumber)
        {
            Check.IsNotNull(payorCoverageCacheType, () => PayorCoverageCacheType);
            Check.IsNotNull(effectiveDateRange, () => EffectiveDateRange);
            Check.IsNotNull(memberNumber, () => MemberNumber);

            DomainRuleEngine.CreateRuleEngine(this, "RevisePayorCoverageCacheInfoRuleSet")
            .WithContext(effectiveDateRange)
            .WithContext(payorCoverageCacheType)
            .Execute(
                () =>
            {
                PayorCoverageCacheType = payorCoverageCacheType;
                EffectiveDateRange     = effectiveDateRange;
                MemberNumber           = memberNumber;
            });
        }
        /// <summary>
        /// Creates the payor coverage.
        /// </summary>
        /// <param name="patient">The patient.</param>
        /// <param name="payorCache">The payor cache.</param>
        /// <param name="effectiveDateRange">The effective date range.</param>
        /// <param name="memberNumber">The member number.</param>
        /// <param name="payorSubscriberCache">The payor subscriber cache.</param>
        /// <param name="payorCoverageCacheType">Type of the payor coverage cache.</param>
        /// <returns>A Payor coverage cache.</returns>
        public PayorCoverageCache CreatePayorCoverage(
            Patient patient, 
            PayorCache payorCache, 
            DateRange effectiveDateRange, 
            string memberNumber, 
            PayorSubscriberCache payorSubscriberCache, 
            PayorCoverageCacheType payorCoverageCacheType )
        {
            var payorCoverage = new PayorCoverageCache ( patient, payorCache, effectiveDateRange, memberNumber, payorSubscriberCache, payorCoverageCacheType );

            PayorCoverageCache createdPayorCoverage = null;

            DomainRuleEngine.CreateRuleEngine(payorCoverage, "CreatePayorCoverageRuleSet")
                .WithContext ( payorCoverage.PayorCoverageCacheType )
                .WithContext ( payorCoverage.EffectiveDateRange )
                .Execute(() =>
                {
                    createdPayorCoverage = payorCoverage;

                    _payorCoverageCacheRepository.MakePersistent(payorCoverage);
                });

            return createdPayorCoverage;
        }
        /// <summary>
        /// Creates the payor coverage.
        /// </summary>
        /// <param name="patient">The patient.</param>
        /// <param name="payorCache">The payor cache.</param>
        /// <param name="effectiveDateRange">The effective date range.</param>
        /// <param name="memberNumber">The member number.</param>
        /// <param name="payorSubscriberCache">The payor subscriber cache.</param>
        /// <param name="payorCoverageCacheType">Type of the payor coverage cache.</param>
        /// <returns>A Payor coverage cache.</returns>
        public PayorCoverageCache CreatePayorCoverage(
            Patient patient,
            PayorCache payorCache,
            DateRange effectiveDateRange,
            string memberNumber,
            PayorSubscriberCache payorSubscriberCache,
            PayorCoverageCacheType payorCoverageCacheType)
        {
            var payorCoverage = new PayorCoverageCache(patient, payorCache, effectiveDateRange, memberNumber, payorSubscriberCache, payorCoverageCacheType);

            PayorCoverageCache createdPayorCoverage = null;

            DomainRuleEngine.CreateRuleEngine(payorCoverage, "CreatePayorCoverageRuleSet")
            .WithContext(payorCoverage.PayorCoverageCacheType)
            .WithContext(payorCoverage.EffectiveDateRange)
            .Execute(() =>
            {
                createdPayorCoverage = payorCoverage;

                _payorCoverageCacheRepository.MakePersistent(payorCoverage);
            });

            return(createdPayorCoverage);
        }
Example #6
0
        /// <summary>
        /// Revises the payor coverage cache info.
        /// </summary>
        /// <param name="payorCoverageCacheType">Type of the payor coverage cache.</param>
        /// <param name="effectiveDateRange">The effective date range.</param>
        /// <param name="memberNumber">The member number.</param>
        public virtual void RevisePayorCoverageCacheInfo(PayorCoverageCacheType payorCoverageCacheType, DateRange effectiveDateRange, string memberNumber )
        {
            Check.IsNotNull(payorCoverageCacheType, () => PayorCoverageCacheType);
            Check.IsNotNull(effectiveDateRange, () => EffectiveDateRange);
            Check.IsNotNull(memberNumber, () => MemberNumber);

            DomainRuleEngine.CreateRuleEngine(this, "RevisePayorCoverageCacheInfoRuleSet")
                .WithContext(effectiveDateRange)
                .WithContext(payorCoverageCacheType)
                .Execute(
                    () =>
                    {
                        PayorCoverageCacheType = payorCoverageCacheType;
                        EffectiveDateRange = effectiveDateRange;
                        MemberNumber = memberNumber;
                    });
        }
Example #7
0
        /// <summary>
        /// Determines whether that there are any payor coverages with specified type whose effective date range intersect with specified date range.
        /// </summary>
        /// <param name="payorCoverageCacheKey">The payor coverage cache key.</param>
        /// <param name="patientKey">The patient key.</param>
        /// <param name="payorCoverageCacheType">Type of the payor coverage cache.</param>
        /// <param name="effectiveDateRange">The effective date range.</param>
        /// <returns>True if there exists a match; otherwise false</returns>
        public bool AnyPayorCoverageTypeInEffectiveDateRange(long payorCoverageCacheKey, long patientKey, PayorCoverageCacheType payorCoverageCacheType, DateRange effectiveDateRange)
        {
            var startDate = effectiveDateRange.StartDate.Value;
            var endDate   = effectiveDateRange.EndDate;
            var query     = Session.CreateCriteria <PayorCoverageCache> ().Add(
                Restrictions.And(Restrictions.Eq(Projections.Property <PayorCoverageCache> (pc => pc.Patient.Key), patientKey),
                                 Restrictions.And(
                                     Restrictions.Not(Restrictions.IdEq(payorCoverageCacheKey)),
                                     Restrictions.And(
                                         Restrictions.Eq(Projections.Property <PayorCoverageCache> (pc => pc.PayorCoverageCacheType), payorCoverageCacheType.Key),
                                         Restrictions.Or(
                                             Restrictions.Eq(Projections.Property <PayorCoverageCache> (pc => pc.EffectiveDateRange.StartDate), startDate),
                                             Restrictions.Or(
                                                 Restrictions.And(
                                                     Restrictions.Lt(Projections.Property <PayorCoverageCache> (pc => pc.EffectiveDateRange.StartDate), startDate),
                                                     Restrictions.Or(
                                                         Restrictions.IsNull(Projections.Property <PayorCoverageCache> (pc => pc.EffectiveDateRange.EndDate)),
                                                         Restrictions.Ge(Projections.Property <PayorCoverageCache> (pc => pc.EffectiveDateRange.EndDate), startDate))),
                                                 Restrictions.And(
                                                     Restrictions.Gt(Projections.Property <PayorCoverageCache> (pc => pc.EffectiveDateRange.StartDate), startDate),
                                                     Restrictions.Or(
                                                         Restrictions.IsNull(Projections.Constant(endDate, NHibernateUtil.GuessType(typeof(DateTime?)))),
                                                         Restrictions.Le(Projections.Property <PayorCoverageCache> (pc => pc.EffectiveDateRange.StartDate), endDate))))
                                             ))))
                )
                            .SetProjection(Projections.RowCount())
                            .FutureValue <int> ();

            return(query.Value > 0);
        }