161 lines
6.2 KiB
C#
161 lines
6.2 KiB
C#
<Query Kind="Program">
|
|
<Connection>
|
|
<ID>463c2997-8a6a-4688-9575-6549e5215f7b</ID>
|
|
<Persist>true</Persist>
|
|
<Server>D0011-SQL-01.sdt.local</Server>
|
|
<Database>jazz tst CNE 20191210.1</Database>
|
|
<ShowServer>true</ShowServer>
|
|
</Connection>
|
|
<Reference><ProgramFilesX64>\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Newtonsoft.Json.dll</Reference>
|
|
<NuGetReference>Amazon.Lambda.S3Events</NuGetReference>
|
|
<NuGetReference>AWSSDK.Core</NuGetReference>
|
|
<NuGetReference>AWSSDK.S3</NuGetReference>
|
|
<Namespace>Amazon</Namespace>
|
|
<Namespace>Amazon.Auth.AccessControlPolicy</Namespace>
|
|
<Namespace>Amazon.Auth.AccessControlPolicy.ActionIdentifiers</Namespace>
|
|
<Namespace>Amazon.Internal</Namespace>
|
|
<Namespace>Amazon.Lambda.S3Events</Namespace>
|
|
<Namespace>Amazon.MissingTypes</Namespace>
|
|
<Namespace>Amazon.Runtime</Namespace>
|
|
<Namespace>Amazon.Runtime.CredentialManagement</Namespace>
|
|
<Namespace>Amazon.Runtime.CredentialManagement.Internal</Namespace>
|
|
<Namespace>Amazon.Runtime.EventStreams</Namespace>
|
|
<Namespace>Amazon.Runtime.EventStreams.Internal</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Auth</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Settings</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Transform</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Util</Namespace>
|
|
<Namespace>Amazon.Runtime.SharedInterfaces</Namespace>
|
|
<Namespace>Amazon.Runtime.SharedInterfaces.Internal</Namespace>
|
|
<Namespace>Amazon.S3</Namespace>
|
|
<Namespace>Amazon.S3.Encryption</Namespace>
|
|
<Namespace>Amazon.S3.Encryption.Internal</Namespace>
|
|
<Namespace>Amazon.S3.Internal</Namespace>
|
|
<Namespace>Amazon.S3.IO</Namespace>
|
|
<Namespace>Amazon.S3.Model</Namespace>
|
|
<Namespace>Amazon.S3.Model.Internal.MarshallTransformations</Namespace>
|
|
<Namespace>Amazon.S3.Transfer</Namespace>
|
|
<Namespace>Amazon.S3.Util</Namespace>
|
|
<Namespace>Amazon.Util</Namespace>
|
|
<Namespace>Amazon.Util.Internal</Namespace>
|
|
<Namespace>Amazon.Util.Internal.PlatformServices</Namespace>
|
|
<Namespace>Newtonsoft.Json</Namespace>
|
|
<Namespace>Newtonsoft.Json.Converters</Namespace>
|
|
<Namespace>Newtonsoft.Json.Linq</Namespace>
|
|
<Namespace>Newtonsoft.Json.Schema</Namespace>
|
|
<Namespace>Newtonsoft.Json.Serialization</Namespace>
|
|
<Namespace>System</Namespace>
|
|
<Namespace>System.Diagnostics</Namespace>
|
|
<Namespace>System.Diagnostics.Tracing</Namespace>
|
|
<Namespace>System.IO.Compression</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Asn1</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Asn1.Utilities</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Math</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.OpenSsl</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Utilities.IO.Pem</Namespace>
|
|
<Namespace>ThirdParty.Ionic.Zlib</Namespace>
|
|
<Namespace>ThirdParty.Json.LitJson</Namespace>
|
|
<Namespace>ThirdParty.MD5</Namespace>
|
|
</Query>
|
|
|
|
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<ModelValue>(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<StaffingModel> ModelValues { get; set; }
|
|
internal Dictionary<int, Dictionary<int, double>> 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<double> 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<byte> 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));
|
|
}
|
|
} |