public CaseController()
 {
     repository = new Repositories.CaseRepository();
     repoStaff  = new Repositories.OfficeStaffRepository();
     _service   = new App.Case.CaseService();
     Context    = AppService.Current.DataContext;
 }
Exemple #2
0
        internal void UpdateHoursSubmission(EditPopupSubmitVM submitData)
        {
            var context = new Data.Models.CoreEntityModel();

            var item = context.CaseAuthHours.Find(submitData.id);

            item.HoursBillable        = decimal.Parse(submitData.billableHours);
            item.HoursBillingRef      = submitData.billingRef;
            item.HoursDate            = submitData.date;
            item.HoursHasCatalystData = submitData.hasData;
            item.HoursNotes           = submitData.notes;
            item.HoursPayable         = decimal.Parse(submitData.payableHours);
            item.HoursServiceID       = submitData.serviceID;
            item.HoursSSGParentID     = submitData.ssgParentID;
            item.HoursStatus          = (int)submitData.ConvertedStatus;
            item.HoursTimeIn          = submitData.timeIn.TimeOfDay;
            item.HoursTimeOut         = submitData.timeOut.TimeOfDay;
            item.HoursTotal           = decimal.Parse(submitData.totalHours);
            item.ServiceLocationID    = submitData.serviceLocationID;

            if (submitData.extendedNotes != null)
            {
                foreach (ExtendedNote n in submitData.extendedNotes)
                {
                    if (n.id == 0 && !String.IsNullOrEmpty(n.value))
                    {
                        var dbNote = new Data.Models.CaseAuthHoursNote();
                        dbNote.HoursID         = submitData.id;
                        dbNote.NotesTemplateID = n.templateId;
                        dbNote.NotesAnswer     = n.value;

                        context.CaseAuthHoursNotes.Add(dbNote);
                    }
                    else if (n.id != 0 && !String.IsNullOrEmpty(n.value))
                    {
                        var dbNote = context.CaseAuthHoursNotes.Find(n.id);
                        dbNote.NotesAnswer = n.value;
                    }
                    else if (n.id != 0 && String.IsNullOrEmpty(n.value))
                    {
                        var dbNote = context.CaseAuthHoursNotes.Find(n.id);
                        context.CaseAuthHoursNotes.Remove(dbNote);
                    }
                    // else if (n.id == 0 && String.IsNullOrEmpty(n.value)) //Do nothing.
                }
            }


            context.SaveChanges();

            // now that the hours are updated, re-calc the auth breakdown
            var c2           = AppService.Current.DataContextV2;
            var h            = c2.Hours.Find(submitData.id);
            var authResolver = new DomainServices.Hours.AuthResolver(h);

            authResolver.UpdateAuths(c2);
        }
        public List <CaseHoursDetailItem> GetCaseHoursDetails(int caseID, int providerID, DateTime?cutoff = null)
        {
            List <CaseHoursDetailItem> list = new List <CaseHoursDetailItem>();

            var caseAuthHours = caseService.GetCaseHoursByCase(caseID, cutoff)
                                .Where(m => m.Status != AuthorizationHoursStatus.PreCheckedOnApp);

            var v2Provider = _context.Providers.Find(providerID);

            if (v2Provider.ProviderTypeID == (int)Domain2.Providers.ProviderTypeIDs.BoardCertifiedBehavioralAnalyst)
            {
                // don't filter
            }
            else
            {
                caseAuthHours = caseAuthHours.Where(x => x.ProviderID == providerID).ToList();
            }


            bool getExtendedNotes = false;

            if ((Global.Default.GetUserProvider().Type.Code == "BCBA") && (Domain.Hours.Note.UseExtendedNotes))
            {
                getExtendedNotes = true;
            }

            var context = new Data.Models.CoreEntityModel();

            foreach (var domainHours in caseAuthHours)
            {
                var hours = new CaseHoursDetailItem();
                hours.ID           = domainHours.ID.Value;
                hours.Date         = domainHours.Date;
                hours.EndTime      = domainHours.TimeOut;
                hours.StartTime    = domainHours.TimeIn;
                hours.Hours        = domainHours.HoursTotal;
                hours.Service      = domainHours.Service;
                hours.Notes        = domainHours.Notes;
                hours.ProviderName = domainHours.Provider.FirstName + " " + domainHours.Provider.LastName;

                if (string.IsNullOrEmpty(hours.Notes) && getExtendedNotes)
                {
                    hours.Notes =
                        string.Join("; ",
                                    context.CaseAuthHoursNotes
                                    .Where(x => x.HoursID == hours.ID && !string.IsNullOrEmpty(x.NotesAnswer))
                                    .Select(x => x.NotesAnswer).ToArray());
                }


                list.Add(hours);
            }

            return(list.OrderByDescending(x => x.Date).ThenBy(x => x.StartTime).ToList());
        }
Exemple #4
0
        public void ScrubSelected(List <int> selectedHours)
        {
            var context = new Data.Models.CoreEntityModel();

            foreach (int id in selectedHours)
            {
                var scrubHour = context.CaseAuthHours.Find(id);
                scrubHour.HoursStatus = (int)Domain2.Hours.HoursStatus.ScrubbedByAdmin;
            }

            context.SaveChanges();
        }
        /***********************
         *
         * CTOR/DTOR
         *
         **********************/


        public CrossHoursValidation(Data.Services.ICaseService caseService, DateTime firstDayOfPeriod)
        {
            Errors = new List <DomainServices.Hours.CrossHoursValidation.Error>();

            StartDate = firstDayOfPeriod;
            EndDate   = firstDayOfPeriod.AddMonths(1).AddSeconds(-1);

            _caseService = caseService;

            Hours = _caseService.GetCaseHoursByDateRange(StartDate, EndDate);

            context = new Data.Models.CoreEntityModel();
        }
Exemple #6
0
        internal List <EditPopupVM.ServiceLocationListItem> GetServiceLocationsList()
        {
            var context   = new Data.Models.CoreEntityModel();
            var dataItems = context.ServiceLocations.ToList();
            var items     = new List <EditPopupVM.ServiceLocationListItem>();

            foreach (var d in dataItems)
            {
                items.Add(new EditPopupVM.ServiceLocationListItem()
                {
                    ID   = d.ID,
                    Name = d.LocationName
                });
            }

            return(items);
        }
Exemple #7
0
        public List <ServiceLocation> GetActiveServiceLocations()
        {
            var items    = new List <ServiceLocation>();
            var entities = new Data.Models.CoreEntityModel().ServiceLocations.Where(x => x.Active).ToList();

            foreach (var e in entities)
            {
                var item = new ServiceLocation();
                item.Active = e.Active;
                item.ID     = e.ID;
                item.MBHID  = e.LocationMBHID;
                item.Name   = e.LocationName;

                items.Add(item);
            }

            return(items);
        }
Exemple #8
0
        internal List <EditPopupVM.AuthListItem> GetAuthList(int caseID)
        {
            var context   = new Data.Models.CoreEntityModel();
            var dataItems = context.CaseAuthCodes.Where(x => x.CaseID == caseID).ToList();
            var items     = new List <EditPopupVM.AuthListItem>();

            foreach (var d in dataItems)
            {
                items.Add(new EditPopupVM.AuthListItem()
                {
                    ID          = d.ID,
                    Code        = d.AuthCode.CodeCode,
                    Description = d.AuthCode.CodeDescription
                });
            }

            return(items);
        }
        void validateProviderMax5HoursPerDay()
        {
            // removed per request 2017-02-01, apply to all providers, not just aides
            //if (subjectHours.Provider.Type.Code != "AIDE") {
            //    return;
            //}

            var date       = subjectHours.Date;
            var providerID = subjectHours.Provider.ID;

            var context = new Data.Models.CoreEntityModel();

            var h = context.CaseAuthHours
                    .Where(x =>
                           x.HoursDate == date &&
                           x.CaseProviderID == providerID &&
                           x.CaseID == subjectHours.CaseID)
                    .GroupBy(x => x.CaseProviderID)
                    .Select(x => new {
                ProviderID = x.Key,
                TotalHours = x.Sum(y => y.HoursTotal)
            }).ToList();

            var previousHours = h.Sum(x => x.TotalHours);


            //var z = h.Where(x => x.TotalHours + (decimal)subjectHours.HoursTotal > 5).ToList();

            //if (z.Count > 0) {
            if ((previousHours + (decimal)subjectHours.HoursTotal) > 5)
            {
                ValidationHelper.ValidationError.AddError(
                    ValidationErrors,
                    (int)HoursEntryErrorID.ProviderMoreThan5HoursPerDay,
                    "Cannot log more than 5 hours per day.", null);
            }
        }
Exemple #10
0
        public void FillScrubSummaryProviderInfo(App.Hours.Models.ScrubOverviewItemSummaryVM summary, int caseID, DateTime periodStartDate)
        {
            DateTime periodEndDate = periodStartDate.AddMonths(1).AddDays(-1);

            var q = new Data.Models.CoreEntityModel().Database.SqlQuery <Data.Models.Sprocs.HoursScrubSummaryProvidersLists>(
                "dbo.GetHoursScrubSummaryProviders @CaseID, @StartDate, @EndDate",
                new SqlParameter("@CaseID", caseID),
                new SqlParameter("@StartDate", periodStartDate),
                new SqlParameter("@EndDate", periodEndDate)
                );

            var entities = q.ToList();

            foreach (var entity in entities)
            {
                switch (entity.ReturnTypeID)
                {
                case 0:
                    summary.ActiveProviders.Add(new App.Hours.Models.ScrubOverviewItemSummaryProvider()
                    {
                        ID        = entity.ID,
                        FirstName = entity.ProviderFirstName,
                        LastName  = entity.ProviderLastName
                    });
                    break;

                case 1:
                    summary.ProvidersWithHours.Add(new App.Hours.Models.ScrubOverviewItemSummaryProvider()
                    {
                        ID        = entity.ID,
                        FirstName = entity.ProviderFirstName,
                        LastName  = entity.ProviderLastName
                    });
                    break;

                case 2:
                    summary.ProvidersWithoutHours.Add(new App.Hours.Models.ScrubOverviewItemSummaryProvider()
                    {
                        ID        = entity.ID,
                        FirstName = entity.ProviderFirstName,
                        LastName  = entity.ProviderLastName
                    });
                    break;

                case 3:
                    summary.ProvidersFinalized.Add(new App.Hours.Models.ScrubOverviewItemSummaryProvider()
                    {
                        ID        = entity.ID,
                        FirstName = entity.ProviderFirstName,
                        LastName  = entity.ProviderLastName
                    });
                    break;

                case 4:
                    summary.ProvidersNotFinalized.Add(new App.Hours.Models.ScrubOverviewItemSummaryProvider()
                    {
                        ID        = entity.ID,
                        FirstName = entity.ProviderFirstName,
                        LastName  = entity.ProviderLastName
                    });
                    break;

                default:
                    throw new ArgumentOutOfRangeException("ReturnTypeID not registered");
                }
            }
        }
Exemple #11
0
 public HomeService(Data.V2.CoreContext context, Data.Models.CoreEntityModel contextOld)
 {
     _context    = context;
     _contextOld = contextOld;
 }
Exemple #12
0
 public HomeService()
 {
     _context    = AppService.Current.Data.Context;
     _contextOld = AppService.Current.Data.OldContext;
 }
Exemple #13
0
 public DashboardService()
 {
     hoursRepo = new Repos.HoursRepo();
     _context  = new Data.Models.CoreEntityModel();
 }
Exemple #14
0
 public CommonLists()
 {
     _data = new Data.Models.CoreEntityModel();
 }
Exemple #15
0
        public List <ValidationItemVM> GetValidationItems(DateTime period, bool fullRefresh)
        {
            if (!fullRefresh)
            {
                var cachedItems = getValidationItemsFromCache(period);
                if (cachedItems != null)
                {
                    return(cachedItems);
                }
            }

            var items       = new List <ValidationItemVM>();
            var caseService = new Data.Services.CaseService();
            var validator   = new DomainServices.Hours.CrossHoursValidation(caseService, period);

            validator.Validate();

            int i = 0;

            foreach (var err in validator.Errors)
            {
                var item = new App.Hours.Models.ValidationItemVM();

                var coreContext = new Data.Models.CoreEntityModel();

                var sourcePatient  = coreContext.Cases.Find(err.MatchedOn.CaseID.Value).Patient;
                var sourceProvider = coreContext.Providers.Find(err.MatchedOn.ProviderID);

                item.GridID = i;
                i++;
                item.SourceCaseID      = err.MatchedOn.CaseID.Value;
                item.SourceDate        = err.MatchedOn.Date;
                item.SourceHoursID     = err.MatchedOn.ID.Value;
                item.SourcePatientName = sourcePatient.PatientFirstName + " " + sourcePatient.PatientLastName;

                item.SourceProviderID   = err.MatchedOn.ProviderID;
                item.SourceProviderName = sourceProvider.ProviderFirstName + " " + sourceProvider.ProviderLastName;
                item.SourceServiceCode  = err.MatchedOn.ServiceCode;
                item.SourceTimeIn       = err.MatchedOn.TimeIn;
                item.SourceTimeOut      = err.MatchedOn.TimeOut;

                item.TypeValue = err.ErrorType;

                if (err.MatchedTo != null && err.MatchedTo.Count > 0)
                {
                    var m = err.MatchedTo[0];

                    var patient  = coreContext.Cases.Find(m.CaseID.Value).Patient;
                    var provider = coreContext.Providers.Find(m.ProviderID);

                    item.PartnerCaseID       = m.CaseID.Value;
                    item.PartnerDate         = m.Date;
                    item.PartnerHoursID      = m.ID.Value;
                    item.PartnerPatientName  = patient.PatientFirstName + " " + patient.PatientLastName;
                    item.PartnerProviderID   = m.ProviderID;
                    item.PartnerProviderName = provider.ProviderFirstName + " " + provider.ProviderLastName;
                    item.PartnerServiceCode  = m.ServiceCode;
                    item.PartnerTimeIn       = m.TimeIn;
                    item.PartnerTimeOut      = m.TimeOut;
                }

                items.Add(item);
            }

            setValidateItemsCache(items, period);

            return(items);
        }