/// <summary> /// Initializes a new instance of the <see cref="PayorCoverageCacheRuleCollection"/> class. /// </summary> /// <param name="payorCoverageCacheRepository">The payor coverage cache repository.</param> public PayorCoverageCacheRuleCollection(IPayorCoverageCacheRepository payorCoverageCacheRepository) { NewRule(() => NoDuplicatePayorCoverageCacheTypesWithSameEffectiveDateRangeRule) .When( (s, ctx) => { var coverageType = ctx.WorkingMemory.GetContextObject <PayorCoverageCacheType> (); var effectiveDateRange = ctx.WorkingMemory.GetContextObject <DateRange> (); var conflicts = payorCoverageCacheRepository.AnyPayorCoverageTypeInEffectiveDateRange( s.Key, s.Patient.Key, coverageType, effectiveDateRange); return(conflicts); }) .ThenReportRuleViolation("Cannot have two payor coverages with the same payor coverage type active at the same time."); NewRuleSet(() => CreatePayorCoverageCacheRuleSet, NoDuplicatePayorCoverageCacheTypesWithSameEffectiveDateRangeRule); NewRuleSet(() => RevisePayorCoverageCacheInfoRuleSet, NoDuplicatePayorCoverageCacheTypesWithSameEffectiveDateRangeRule); }