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); }
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; } }
public bool CancelReferral(string id, string userId, string localName) { 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) { //validate status if (referralList.RefStatus == (int)Enums.ReferralStatus.Accept || referralList.RefStatus == (int)Enums.ReferralStatus.Arrived || referralList.RefStatus == (int)Enums.ReferralStatus.Sent || referralList.RefStatus == (int)Enums.ReferralStatus.SentFailed || referralList.RefStatus == (int)Enums.ReferralStatus.CancelFailed) { bool canCancel = (referralList.Refpurpose == (int)Enums.ReferralPurpose.WriteReport && referralList.RPStatus <= (int)Hys.CareRIS.Application.Dtos.Report.RPStatus.Examination) || (referralList.Refpurpose == (int)Enums.ReferralPurpose.ApproveReport && referralList.RPStatus < (int)Hys.CareRIS.Application.Dtos.Report.RPStatus.FirstApprove); if (!canCancel) { return(false); } } else { return(false); } //valid lock bool hasLock = _reportLockService.HasLockForUser(order.UniqueID, userId); if (hasLock) { return(false); } //log ReferralLog referralLog = new ReferralLog(); referralLog = new ReferralLog { ReferralID = referralList.UniqueID, OperatorGuid = userId, OperateDt = DateTime.Now, SourceDomain = order.Domain, OperatorName = localName, SourceSite = referralList.SourceSite, TargetSite = referralList.TargetSite, TargetDomain = referralList.TargetDomain, Memo = "", EventDesc = Enum.GetName(typeof(Enums.Ref_EventType), Enums.Ref_EventType.CancelReferral), RefPurpose = referralList.Refpurpose, CreateDt = DateTime.Now }; _dbContext.Set <ReferralLog>().Add(referralLog); //referralList referralList.RefStatus = (int)Enums.ReferralStatus.Canceled; //procedure var procedures = _dbContext.Set <Procedure>().Where(o => o.OrderID == order.UniqueID).ToList(); foreach (Procedure procedure in procedures) { procedure.Status = referralList.RPStatus.Value; } //order order.ReferralID = ""; order.IsReferral = 0; order.Assign2Site = referralList.TargetSite; order.CurrentSite = referralList.SourceSite; _dbContext.SaveChanges(); return(true); } return(false); }
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); }