Exemplo n.º 1
0
 /// <summary>
 /// Gets the hash code for this object.
 /// </summary>
 /// <returns>
 /// The hash code for this object.
 /// </returns>
 /// <remarks>
 /// * CA2218:
 ///   * If two objects are equal in value based on the Equals override, they must both return the same value for calls
 ///     to GetHashCode.
 ///   * GetHashCode must be overridden whenever Equals is overridden.
 /// * It is fine if the value overflows.
 /// </remarks>
 public override int GetHashCode()
 {
     return(Id.GetHashCode() +
            ReferralEvent.GetHashCode() +
            RewardId.GetHashCode() +
            PerUserLimit.GetHashCode());
 }
Exemplo n.º 2
0
        public bool ReSend(string id, string userId)
        {
            var referralList = _dbContext.Set <ReferralList>().Where(r => r.UniqueID == id).FirstOrDefault();
            var order        = _dbContext.Set <Order>().Where(o => o.AccNo == referralList.AccNo).FirstOrDefault();

            if (referralList != null)
            {
                ReferralEvent referralEvent = new ReferralEvent();
                ReferralLog   referralLog   = new ReferralLog();

                CreateReSendReferralEvent(userId, order, ref referralList, ref referralEvent, ref referralLog);
                _dbContext.Set <ReferralEvent>().Add(referralEvent);
                _dbContext.Set <ReferralLog>().Add(referralLog);

                //procedure
                var procedures = _dbContext.Set <Procedure>().Where(o => o.OrderID == order.UniqueID).ToList();
                foreach (Procedure procedure in procedures)
                {
                    procedure.Status = -1;
                }

                _dbContext.SaveChanges();
                return(true);
            }

            return(false);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Validates parameters within the context.
        /// </summary>
        /// <returns>
        /// The result of the operation.
        /// </returns>
        private ResultCode ValidateParameters()
        {
            ResultCode result = ResultCode.Success;

            ReferralDataContract referralDataContract = Context[Key.ReferralDataContract] as ReferralDataContract;
            bool stepResult = referralDataContract != null;

            if (stepResult == true)
            {
                ReferralTypeCode = referralDataContract.ReferralTypeCode;
                Context[Key.ReferralTypeCode] = ReferralTypeCode;

                stepResult = String.IsNullOrWhiteSpace(ReferralTypeCode) == false;
            }
            if (stepResult == true)
            {
                UserIdString = referralDataContract.UserId;
                Context[Key.ReferredUserId] = UserIdString;

                stepResult = String.IsNullOrWhiteSpace(UserIdString) == false;
            }
            if (stepResult == true)
            {
                ReferralEvent referralEvent = (ReferralEvent)referralDataContract.ReferralEvent;
                Context[Key.ReferralEvent] = referralEvent;
                ReferralEventString        = referralEvent.ToString();
            }
            else
            {
                result = ResultCode.InvalidParameter;
            }

            return(result);
        }
Exemplo n.º 4
0
        private void CreateReSendReferralEvent(string userId, Order order, ref ReferralList referralList, ref ReferralEvent referralEvent, ref ReferralLog referralLog)
        {
            User user = _dbContext.Set <User>().Where(u => u.UniqueID == userId).FirstOrDefault();

            if (referralList.Scope == (int)Enums.Ref_Scope.MultiSite)
            {
                referralEvent = new ReferralEvent
                {
                    ReferralID   = referralList.UniqueID,
                    OperatorGuid = userId,
                    OperateDt    = DateTime.Now,
                    SourceDomain = order.Domain,
                    Event        = (int)Enums.Ref_EventType.SendReferral,
                    Status       = referralList.Refpurpose,
                    ExamDomain   = referralList.ExamDomain,
                    ExamAccNo    = referralList.ExamAccNo,
                    UniqueID     = Guid.NewGuid().ToString(),
                    OperatorName = user.LocalName,
                    SourceSite   = referralList.SourceSite,
                    TargetSite   = referralList.TargetSite,
                    TargetDomain = referralList.TargetDomain,
                    Scope        = referralList.Scope,
                };

                referralLog = new ReferralLog
                {
                    ReferralID   = referralList.UniqueID,
                    OperatorGuid = userId,
                    OperateDt    = DateTime.Now,
                    SourceDomain = order.Domain,
                    OperatorName = user.LocalName,
                    SourceSite   = referralList.SourceSite,
                    TargetSite   = referralList.TargetSite,
                    TargetDomain = referralList.TargetDomain,
                    Memo         = "",
                    EventDesc    = Enum.GetName(typeof(Enums.Ref_EventType), Enums.Ref_EventType.SendReferral),
                    RefPurpose   = referralList.Refpurpose,
                    CreateDt     = DateTime.Now
                };

                referralList.RefStatus = (int)Enums.ReferralStatus.Sent;
            }
        }
Exemplo n.º 5
0
        private ReferralEvent CreateReSendReferralEvent(Order order, ReferralList referralList)
        {
            ReferralEvent referralEvent = new ReferralEvent
            {
                ReferralID   = "",
                OperatorGuid = "",
                OperateDt    = DateTime.Now,
                SourceDomain = order.Domain,
                TargetDomain = "",
                Event        = (int)Enums.Ref_EventType.AutoReferral,
                Status       = referralList.RefStatus,
                Tag          = 0,
                Content      = "ORDERID=" + order.UniqueID + "&MODALITYTYPE=" + referralList.ModalityType,
                ExamDomain   = "",
                ExamAccNo    = "",
                UniqueID     = Guid.NewGuid().ToString(),
                OperatorName = ""
            };

            return(referralEvent);
        }
Exemplo n.º 6
0
        public bool SendReferral(ManualReferralDto manualReferralDto, string domain, string site, string userId)
        {
            //get new referralid
            var order = _dbContext.Set <Order>().Where(o => o.UniqueID == manualReferralDto.OrderID).FirstOrDefault();

            //judge whether send the target, reject and cancel
            var specialReferralList = _dbContext.Set <ReferralList>().Where(o => o.AccNo == order.AccNo &&
                                                                            o.RefStatus != (int)Enums.ReferralStatus.Rejected &&
                                                                            o.RefStatus != (int)Enums.ReferralStatus.Canceled &&
                                                                            o.RefStatus != (int)Enums.ReferralStatus.Finished).ToList();

            if (specialReferralList.Count > 0)
            {
                return(false);
            }

            var           patient       = _dbContext.Set <Patient>().Where(o => o.UniqueID == order.PatientID).FirstOrDefault();
            ReferralList  referralList  = new ReferralList();
            ReferralEvent referralEvent = new ReferralEvent();
            ReferralLog   referralLog   = new ReferralLog();

            List <Procedure> procedures       = _dbContext.Set <Procedure>().Where(o => o.OrderID == manualReferralDto.OrderID).ToList();
            string           strprocedureCode = "";
            string           strcheckingItem  = "";
            string           strModalityType  = "";
            int           status            = 0;
            List <string> strprocedureCodes = new List <string>();
            List <string> strcheckingItems  = new List <string>();

            if (procedures.Count > 0)
            {
                strModalityType = procedures[procedures.Count - 1].ModalityType;
                foreach (Procedure procedure in procedures)
                {
                    strprocedureCodes.Add(procedure.ProcedureCode);
                    strcheckingItems.Add(procedure.CheckingItem);
                    if (procedure.Status > status)
                    {
                        status = procedure.Status;
                    }
                }
                strprocedureCode = string.Join(",", strprocedureCodes);
                strcheckingItem  = string.Join(",", strcheckingItems);
            }

            //set referralList
            referralList.UniqueID      = GetNewReferralID(domain);
            referralList.Scope         = (int)Enums.Ref_Scope.MultiSite;
            referralList.ProcedureCode = strprocedureCode;
            referralList.CheckingItem  = strcheckingItem;
            referralList.ModalityType  = strModalityType;
            referralList.RPStatus      = status;
            referralList.InitialDomain = domain;
            referralList.SourceDomain  = domain;
            referralList.SourceSite    = site;
            //patient info
            referralList.PatientID   = patient.PatientNo;
            referralList.LocalName   = patient.LocalName;
            referralList.EnglishName = patient.EnglishName;
            referralList.Gender      = patient.Gender;
            referralList.Birthday    = patient.Birthday;
            referralList.TelePhone   = patient.Telephone == null ? "" : patient.Telephone;
            referralList.Address     = patient.Address == null ? "" : patient.Address;
            //order info
            referralList.AccNo           = order.AccNo;
            referralList.ApplyDoctor     = order.ApplyDoctor == null ? "" : order.ApplyDoctor;
            referralList.HealthHistory   = order.HealthHistory == null ? "" : order.HealthHistory;
            referralList.Observation     = order.Observation == null ? "" : order.Observation;
            referralList.IsExistSnapshot = 0;
            referralList.GetReportDomain = "";

            referralList.TargetSite = manualReferralDto.TargetSite;
            Site tarSite = _dbContext.Set <Site>().Where(s => s.SiteName == manualReferralDto.TargetSite).FirstOrDefault();

            if (tarSite != null)
            {
                referralList.TargetDomain = tarSite.Domain;
            }
            if (referralList.RPStatus == (int)RPStatus.Examination)
            {
                referralList.Refpurpose = (int)Hys.CareRIS.Application.Services.ServiceImpl.Enums.ReferralPurpose.WriteReport;
            }
            else if (referralList.RPStatus == (int)RPStatus.Submit)
            {
                referralList.Refpurpose = (int)Hys.CareRIS.Application.Services.ServiceImpl.Enums.ReferralPurpose.ApproveReport;
            }
            referralList.Direction       = (int)Hys.CareRIS.Application.Services.ServiceImpl.Enums.Direction.In;
            referralList.CreateDt        = DateTime.Now;
            referralList.ExamAccNo       = "";
            referralList.ExamDomain      = "";
            referralList.OriginalBizData = "";
            referralList.PackagedBizData = "";
            referralList.RefApplication  = "";
            referralList.RefReport       = "";

            CreateReSendReferralEvent(userId, order, ref referralList, ref referralEvent, ref referralLog);
            //set memo
            referralEvent.Memo    = manualReferralDto.Memo;
            referralEvent.Tag     = 0;
            referralEvent.Content = "";
            referralLog.Memo      = manualReferralDto.Memo;
            _dbContext.Set <ReferralList>().Add(referralList);
            _dbContext.Set <ReferralEvent>().Add(referralEvent);
            _dbContext.Set <ReferralLog>().Add(referralLog);
            //update order
            order.ReferralID = referralList.UniqueID;
            order.IsReferral = 1;

            //update procedure
            foreach (Procedure procedure in procedures)
            {
                procedure.Status = -1;
            }

            _dbContext.SaveChanges();

            return(true);
        }
        /// <summary>
        /// Populate the specified ReferralType from the specified ReferralTypeDataContract.
        /// </summary>
        /// <param name="referralTypeDataContract">
        /// The ReferralTypeDataContract to use to populate the ReferralType.
        /// </param>
        /// <param name="referralType">
        /// The ReferralType to populate.
        /// </param>
        /// <returns>
        /// The result of the operation.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// * Parameter referralTypeDataContract cannot be null.
        /// -OR-
        /// * Parameter referralType cannot be null.
        /// </exception>
        protected internal ResultCode BuildReferralType(ReferralTypeDataContract referralTypeDataContract,
                                                        ReferralType referralType)
        {
            if (referralTypeDataContract == null)
            {
                throw new ArgumentNullException("referralTypeDataContract", "Parameter referralTypeDataContract cannot be null.");
            }

            if (referralType == null)
            {
                throw new ArgumentNullException("referralType", "Parameter referralType cannot be null.");
            }

            ResultCode result = ResultCode.Success;

            ReferralVector  referralVector  = ReferralVector.Twitter;
            RewardRecipient rewardRecipient = RewardRecipient.Referrer;
            ReferralEvent   referralEvent   = ReferralEvent.Signup;
            bool            stepResult      = true;

            stepResult = Enum.TryParse <ReferralVector>(referralTypeDataContract.ReferralVector, true, out referralVector);
            if (stepResult == true)
            {
                referralType.ReferralVector = referralVector;

                stepResult = Enum.TryParse <RewardRecipient>(referralTypeDataContract.RewardRecipient, true, out rewardRecipient);
            }
            if (stepResult == true)
            {
                referralType.RewardRecipient = rewardRecipient;

                stepResult = referralTypeDataContract.ReferralEventRewards != null;
            }
            if (stepResult == true)
            {
                Dictionary <ReferralEvent, bool> registeredEvents = new Dictionary <ReferralEvent, bool>();

                foreach (ReferralEventRewardDataContract referralEventRewardDataContract
                         in referralTypeDataContract.ReferralEventRewards)
                {
                    ReferralEventReward referralEventReward = new ReferralEventReward();

                    stepResult = Enum.TryParse <ReferralEvent>(referralEventRewardDataContract.ReferralEvent, true,
                                                               out referralEvent);
                    if (stepResult == true)
                    {
                        if (registeredEvents.ContainsKey(referralEvent) == false)
                        {
                            registeredEvents[referralEvent] = true;
                        }
                        else
                        {
                            stepResult = false;
                        }
                    }
                    if (stepResult == true)
                    {
                        referralEventReward.ReferralEvent = referralEvent;

                        stepResult = referralEventRewardDataContract.RewardId != Guid.Empty;
                    }
                    if (stepResult == true)
                    {
                        referralEventReward.RewardId = referralEventRewardDataContract.RewardId;

                        stepResult = referralEventRewardDataContract.PerUserLimit >= 0;
                    }
                    if (stepResult == true)
                    {
                        referralEventReward.PerUserLimit = referralEventRewardDataContract.PerUserLimit;

                        referralType.ReferralEventRewards.Add(referralEventReward);
                    }
                    else
                    {
                        break;
                    }
                }
            }
            if (stepResult == true)
            {
                stepResult = referralType.ReferralEventRewards.Count > 0;
            }
            if (stepResult == true)
            {
                Context[Key.ReferralType] = referralType;
                ReferralType = referralType;
            }
            else
            {
                result = ResultCode.InvalidParameter;
            }

            return(result);
        }