463c2997-8a6a-4688-9575-6549e5215f7b true D0011-SQL-01.sdt.local jazz tst CNE 20191210.1 true <ProgramFilesX64>\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Newtonsoft.Json.dll Amazon.Lambda.S3Events AWSSDK.Core AWSSDK.S3 Amazon Amazon.Auth.AccessControlPolicy Amazon.Auth.AccessControlPolicy.ActionIdentifiers Amazon.Internal Amazon.Lambda.S3Events Amazon.MissingTypes Amazon.Runtime Amazon.Runtime.CredentialManagement Amazon.Runtime.CredentialManagement.Internal Amazon.Runtime.EventStreams Amazon.Runtime.EventStreams.Internal Amazon.Runtime.Internal Amazon.Runtime.Internal.Auth Amazon.Runtime.Internal.Settings Amazon.Runtime.Internal.Transform Amazon.Runtime.Internal.Util Amazon.Runtime.SharedInterfaces Amazon.Runtime.SharedInterfaces.Internal Amazon.S3 Amazon.S3.Encryption Amazon.S3.Encryption.Internal Amazon.S3.Internal Amazon.S3.IO Amazon.S3.Model Amazon.S3.Model.Internal.MarshallTransformations Amazon.S3.Transfer Amazon.S3.Util Amazon.Util Amazon.Util.Internal Amazon.Util.Internal.PlatformServices Newtonsoft.Json Newtonsoft.Json.Converters Newtonsoft.Json.Linq Newtonsoft.Json.Schema Newtonsoft.Json.Serialization System System.Diagnostics System.Diagnostics.Tracing System.IO.Compression ThirdParty.BouncyCastle.Asn1 ThirdParty.BouncyCastle.Asn1.Utilities ThirdParty.BouncyCastle.Math ThirdParty.BouncyCastle.OpenSsl ThirdParty.BouncyCastle.Utilities.IO.Pem ThirdParty.Ionic.Zlib ThirdParty.Json.LitJson ThirdParty.MD5 void Main() { var configurationGuid = Guid.Parse("880C4912-5A58-40B7-ADB1-1F9BD365E6AF"); (from sd in StaffingToDemandPatientVolumes where new[] {21398, 21915}.Contains(sd.DepartmentID) select sd).ToList() .OrderBy(g => g.DepartmentID) .ThenBy(g => g.IsBaseline) .ThenBy(g => g.DayOfWeek) .ThenBy(g => g.Seasonality) .ThenBy(g => g.Hour) .Dump(nameof(StaffingToDemandPatientVolumes)); var CensusData = from obj in Nursings join f in DimFunctionalAreas on obj.DimDepartment.FunctionalAreaID equals f.FunctionalAreaID join fj in NursingFlexJobCodeGroups on obj.NursingGUID equals fj.NursingGUID join j in DimFlexJobCodeGroups on fj.FlexJobCodeGroupID equals j.FlexJobCodeGroupID where obj.ConfigurationGUID == configurationGuid select new { obj.DepartmentID, obj.NumOfBeds, obj.IsComplete, obj.IsNewborn, InPatientDays = new FlattenDays("InPatientDays", obj).Values, ObservationDays = new FlattenDays("ObservationDays", obj).Values, NewbornInPatientDays = new FlattenDays("NewbornInPatientDays", obj).Values, NewbornObservationDays = new FlattenDays("NewbornObservationDays", obj).Values, Seasonality = new FlattenSeasonality("Seasonality", obj).Values, obj.DimDepartment.Name, FunctionalAreaName = f.Name, fj.WHPPDBaseline, fj.MedianAnnualWageBaseline, fj.DirectCarePercentageBaseline, fj.UnproductivePercentBaseline, fj.WHPPD, fj.MedianAnnualWage, fj.DirectCarePercentage, fj.UnproductivePercent, fj.PatientCare, fj.AcutyAdjustment, fj.RoundingRule, fj.FlexJobCodeGroupID, fj.StaffingModelType, StaffingModelConfig = Newtonsoft.Json.JsonConvert.DeserializeObject(fj.StaffingModelConfig),//.PatientRatios, JobName = j.Name, j.Code, j.SortOrder }; CensusData.Where(cd => new [] {"2310 - 11150 - DELIVERY","2110 - 11071 - RIVERVIEW 3"}.Contains(cd.Name) && cd.JobName == "RN").Dump(); } // Define other methods and classes here public class ModelValue { public IList ModelValues { get; set; } internal Dictionary> PatientRatios => ModelValues .GroupBy(mv => mv.DayOfWeek, (dayOfWeek, d) => new { dayOfWeek, HourlyRatios = d.Select(x => new { x.HourOfDay, x.PatientRatio }) .ToDictionary(key => key.HourOfDay, value => value.PatientRatio) }).ToDictionary(key => key.dayOfWeek, value => value.HourlyRatios); } public class StaffingModel { public int DayOfWeek { get; set; } public int HourOfDay { get; set; } public double PatientRatio { get; set; } } public class FlattenDays { public IEnumerable Values { get; set; } public FlattenDays(string name, Nursing obj) { var regex = new Regex($"Month[\\d]{{2}}{name}", RegexOptions.IgnoreCase); Type t = typeof(Nursing); var fields = t.GetFields(BindingFlags.Public | BindingFlags.Instance) .Where(f => regex.IsMatch(f.Name)) .OrderBy(f => f.Name); Values = fields.Select(field => (double)field.GetValue(obj)); } } public class FlattenSeasonality { public IEnumerable Values { get; set; } public FlattenSeasonality(string name, Nursing obj) { var regex = new Regex($"Month[\\d]{{2}}{name}", RegexOptions.IgnoreCase); Type t = typeof(Nursing); var fields = t.GetFields(BindingFlags.Public | BindingFlags.Instance) .Where(f => regex.IsMatch(f.Name)) .OrderBy(f => f.Name); Values = fields.Select(field => (byte)field.GetValue(obj)); } }