コード例 #1
0
ファイル: PayorCoverageCache.cs プロジェクト: divyang4481/REM
 /// <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;
 }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
ファイル: PayorCoverageCache.cs プロジェクト: divyang4481/REM
 /// <summary>
 /// Revises the payor subscriber cache.
 /// </summary>
 /// <param name="payorSubscriberCache">The payor subscriber cache.</param>
 public virtual void RevisePayorSubscriberCache( PayorSubscriberCache payorSubscriberCache )
 {
     PayorSubscriberCache = payorSubscriberCache;
 }
コード例 #4
0
        /// <summary>
        /// Handles the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>A <see cref="Agatha.Common.Response"/></returns>
        public override Response Handle(SaveDtoRequest <PayorCoverageCacheDto> request)
        {
            var requestDto = request.DataTransferObject;

            DomainEvent.Register <RuleViolationEvent> (failure => _validationFailureOccurred = true);

            LogicalTreeWalker.Walk <IDataTransferObject> (requestDto, dto => dto.ClearAllDataErrorInfo());

            var response = CreateTypedResponse();

            if (requestDto.EditStatus == EditStatus.Create || requestDto.EditStatus == EditStatus.Update)
            {
                var patient                = _patientRepository.GetByKeyOrThrow(requestDto.PatientKey, "Patient");
                var payorCache             = _payorCacheRepository.GetByKeyOrThrow(requestDto.PayorCache.Key, "Payor");
                var effectiveDateRange     = new DateRange(requestDto.StartDate, requestDto.EndDate);
                var payorCoverageCacheType = _mappingHelper.MapLookupField <PayorCoverageCacheType> (requestDto.PayorCoverageCacheType);

                var countyArea    = _mappingHelper.MapLookupField <CountyArea> (requestDto.PayorSubscriberCache.Address.CountyArea);
                var stateProvince = _mappingHelper.MapLookupField <StateProvince> (requestDto.PayorSubscriberCache.Address.StateProvince);
                var country       = _mappingHelper.MapLookupField <Country> (requestDto.PayorSubscriberCache.Address.Country);

                var address = new Address(
                    requestDto.PayorSubscriberCache.Address.FirstStreetAddress,
                    requestDto.PayorSubscriberCache.Address.SecondStreetAddress,
                    requestDto.PayorSubscriberCache.Address.CityName,
                    countyArea,
                    stateProvince,
                    country,
                    new PostalCode(requestDto.PayorSubscriberCache.Address.PostalCode));

                var gender = _mappingHelper.MapLookupField <AdministrativeGender>(requestDto.PayorSubscriberCache.AdministrativeGender);

                var patientName = new PersonNameBuilder()
                                  .WithFirst(requestDto.PayorSubscriberCache.FirstName)
                                  .WithMiddle(requestDto.PayorSubscriberCache.MiddleName)
                                  .WithLast(requestDto.PayorSubscriberCache.LastName);

                var payorSubscriberRelationshipCacheType =
                    _mappingHelper.MapLookupField <PayorSubscriberRelationshipCacheType> (requestDto.PayorSubscriberCache.PayorSubscriberRelationshipCacheType);

                var payorSubscriberCache = new PayorSubscriberCache(
                    address, requestDto.PayorSubscriberCache.BirthDate, gender, patientName, payorSubscriberRelationshipCacheType);

                PayorCoverageCache payorCoverageCache;

                if (requestDto.EditStatus == EditStatus.Create)
                {
                    payorCoverageCache = _payorCoverageCacheFactory.CreatePayorCoverage(
                        patient, payorCache, effectiveDateRange, requestDto.MemberNumber, payorSubscriberCache, payorCoverageCacheType);
                }
                else
                {
                    payorCoverageCache = _payorCoverageCacheRepository.GetByKeyOrThrow(requestDto.Key, "Payor");
                    payorCoverageCache.RevisePayorCoverageCacheInfo(payorCoverageCacheType, effectiveDateRange, requestDto.MemberNumber);
                    payorCoverageCache.RevisePayorCache(payorCache);
                    payorCoverageCache.RevisePayorSubscriberCache(payorSubscriberCache);
                }

                response.DataTransferObject = payorCoverageCache == null ? requestDto : Mapper.Map <PayorCoverageCache, PayorCoverageCacheDto>(payorCoverageCache);
            }
            else if (requestDto.EditStatus == EditStatus.Delete)
            {
                var payorCoverageCache = _payorCoverageCacheRepository.GetByKey(requestDto.Key);
                if (payorCoverageCache != null)
                {
                    _payorCoverageCacheFactory.DestroyPayorCoverage(payorCoverageCache);
                }
                response.DataTransferObject = requestDto;
            }
            else
            {
                var payorCoverageCache = _payorCoverageCacheRepository.GetByKeyOrThrow(requestDto.Key, "Payor");
                response.DataTransferObject = Mapper.Map <PayorCoverageCache, PayorCoverageCacheDto>(payorCoverageCache);
            }

            var processSucceeded = !_validationFailureOccurred;

            if (processSucceeded)
            {
                Session.Flush();
                Session.Clear();
            }
            else
            {
                if (requestDto.EditStatus == EditStatus.Create)
                {
                    response.DataTransferObject.Key = 0;
                }
            }

            return(response);
        }