コード例 #1
0
        public IHttpActionResult SendReferral([FromBody] ManualReferralDto manualReferralDto)
        {
            var currUser = base.CurrentUser();
            var result   = _referralService.SendReferral(manualReferralDto, currUser.Domain, currUser.Site, currUser.UniqueID);

            return(Ok(result));
        }
コード例 #2
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);
        }