public override object GetValue(DocumentObject dom, GV flags)
        {
            if (!Enum.IsDefined(typeof(GV), flags))
            {
                throw new ArgumentException("flags");
            }
            //throw new InvalidEnumArgumentException("flags", (int)flags, typeof(GV));

            object val;

            if (FieldInfo != null)
            {
                val = FieldInfo.GetValue(dom);
            }
            else
            {
                val = PropertyInfo.GetGetMethod(true).Invoke(dom, Type.EmptyTypes);
            }
            INullableValue ival = val as INullableValue;

            if (ival != null && ival.IsNull && flags == GV.GetNull)
            {
                return(null);
            }
            return(val);
        }
Exemple #2
0
        public INullableValue <T> Create <T>(
            T?value)
            where T : struct
        {
            INullableValue <T> instance = null;

            try
            {
                PrimitiveType primitiveType = value switch
                {
                    bool b => new FhirBoolean(
                        b),

                    decimal d => new FhirDecimal(
                        d),

                    int i => new PositiveInt(
                        i),

                    { } => throw new ArgumentNullException(nameof(value)),

                          _ => null
                };

                instance = (INullableValue <T>)primitiveType;
            }
Exemple #3
0
        public IHM4InputContext Create(
            ImmutableList <INullableValue <int> > weekdays,
            ImmutableList <Tuple <Organization, ImmutableList <Organization> > > surgicalSpecialties,
            ImmutableList <INullableValue <int> > lengthOfStayDays,
            Bundle operatingRooms,
            Bundle surgeons,
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > planningHorizon,
            ImmutableList <INullableValue <int> > scenarios,
            Duration timeBlockLength,
            ImmutableList <Tuple <Organization, INullableValue <int>, Duration> > surgeonScenarioWeightedAverageSurgicalDurations,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonLengthOfStayMaximums,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int> > > surgeonScenarioMaximumNumberPatients,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int>, INullableValue <decimal> > > surgeonDayScenarioLengthOfStayProbabilities,
            INullableValue <int> numberDaysPerWeek,
            ImmutableList <Tuple <Organization, Location, INullableValue <bool> > > surgeonOperatingRoomAssignments,
            ImmutableList <Tuple <Organization, Location, INullableValue <int>, INullableValue <int> > > surgeonOperatingRoomDayNumberAssignedTimeBlocks,
            ImmutableList <Tuple <Location, FhirDateTime, INullableValue <bool> > > operatingRoomDayAssignedAvailabilities,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <decimal> > > surgeonScenarioMaximumNumberPatientMeans,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <decimal> > > scenarioProbabilities,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <decimal> > > surgeonScenarioMaximumNumberPatientStandardDeviations,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int>, INullableValue <decimal> > > surgeonDayScenarioCumulativeNumberPatients,
            INullableValue <int> maximumNumberRecoveryWardBeds)
        {
            IHM4InputContext context = null;

            try
            {
                context = new HM4InputContext(
                    weekdays,
                    surgicalSpecialties,
                    lengthOfStayDays,
                    operatingRooms,
                    surgeons,
                    planningHorizon,
                    scenarios,
                    timeBlockLength,
                    surgeonScenarioWeightedAverageSurgicalDurations,
                    surgeonLengthOfStayMaximums,
                    surgeonScenarioMaximumNumberPatients,
                    surgeonDayScenarioLengthOfStayProbabilities,
                    numberDaysPerWeek,
                    surgeonOperatingRoomAssignments,
                    surgeonOperatingRoomDayNumberAssignedTimeBlocks,
                    operatingRoomDayAssignedAvailabilities,
                    surgeonScenarioMaximumNumberPatientMeans,
                    scenarioProbabilities,
                    surgeonScenarioMaximumNumberPatientStandardDeviations,
                    surgeonDayScenarioCumulativeNumberPatients,
                    maximumNumberRecoveryWardBeds);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(context);
        }
        public TPInputContext(
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > activeDays,
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > days,
            ImmutableList <INullableValue <int> > blockTypes,
            ImmutableList <INullableValue <int> > lengthOfStayDays,
            ImmutableList <INullableValue <int> > patientGroups,
            Bundle operatingRooms,
            Bundle surgeonGroups,
            ImmutableList <Tuple <Organization, ImmutableList <Organization> > > wards,
            INullableValue <int> numberBeds,
            ImmutableList <KeyValuePair <INullableValue <int>, Duration> > patientGroupSurgeryDurations,
            ImmutableList <KeyValuePair <INullableValue <int>, Duration> > blockTypeTimeBlockLengths,
            ImmutableList <Tuple <FhirDateTime, Location, Duration> > dayOperatingRoomOperatingCapacities,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonGroupSubsetPatientGroups,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > wardSubsetPatientGroups,
            ImmutableList <Tuple <INullableValue <int>, INullableValue <int>, FhirDecimal> > patientGroupDayLengthOfStayProbabilities,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <int> > > patientGroupThroughputs,
            ImmutableList <KeyValuePair <Organization, INullableValue <decimal> > > wardα,
            ImmutableList <KeyValuePair <Organization, INullableValue <decimal> > > wardβ,
            ImmutableList <KeyValuePair <Organization, INullableValue <decimal> > > wardγ)
        {
            this.ActiveDays = activeDays;

            this.Days = days;

            this.BlockTypes = blockTypes;

            this.LengthOfStayDays = lengthOfStayDays;

            this.PatientGroups = patientGroups;

            this.OperatingRooms = operatingRooms;

            this.SurgeonGroups = surgeonGroups;

            this.Wards = wards;

            this.NumberBeds = numberBeds;

            this.PatientGroupSurgeryDurations = patientGroupSurgeryDurations;

            this.BlockTypeTimeBlockLengths = blockTypeTimeBlockLengths;

            this.DayOperatingRoomOperatingCapacities = dayOperatingRoomOperatingCapacities;

            this.SurgeonGroupSubsetPatientGroups = surgeonGroupSubsetPatientGroups;

            this.WardSubsetPatientGroups = wardSubsetPatientGroups;

            this.PatientGroupDayLengthOfStayProbabilities = patientGroupDayLengthOfStayProbabilities;

            this.PatientGroupThroughputs = patientGroupThroughputs;

            this.Wardα = wardα;

            this.Wardβ = wardβ;

            this.Wardγ = wardγ;
        }
        /// <summary>
        /// Write attribute of type Unit, Color, int, float, double, bool, string or enum.
        /// </summary>
        public void WriteSimpleAttribute(string valueName, object value)
        {
            INullableValue ival = value as INullableValue;

            if (ival != null)
            {
                value = ival.GetValue();
            }

            Type type = value.GetType();

            if (type == typeof(Unit))
            {
                string strUnit = value.ToString();
                if (((Unit)value).Type == UnitType.Point)
                {
                    WriteLine(valueName + " = " + strUnit);
                }
                else
                {
                    WriteLine(valueName + " = \"" + strUnit + "\"");
                }
            }
            else if (type == typeof(float))
            {
                WriteLine(valueName + " = " + ((float)value).ToString(CultureInfo.InvariantCulture));
            }
            else if (type == typeof(double))
            {
                WriteLine(valueName + " = " + ((double)value).ToString(CultureInfo.InvariantCulture));
            }
            else if (type == typeof(bool))
            {
                WriteLine(valueName + " = " + value.ToString().ToLower());
            }
            else if (type == typeof(string))
            {
                StringBuilder sb = new StringBuilder(value.ToString());
                sb.Replace("\\", "\\\\");
                sb.Replace("\"", "\\\"");
                WriteLine(valueName + " = \"" + sb + "\"");
            }
#if !NETFX_CORE
            else if (type == typeof(int) || type.BaseType == typeof(Enum) || type == typeof(Color))
#else
            else if (type == typeof(int) || type.GetTypeInfo().BaseType == typeof(Enum) || type == typeof(Color))
#endif
            {
                WriteLine(valueName + " = " + value);
            }
            else
            {
                string message = String.Format("Type '{0}' of value '{1}' not supported", type, valueName);
                Debug.Assert(false, message);
            }
        }
Exemple #6
0
        public ITPInputContext Create(
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > activeDays,
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > days,
            ImmutableList <INullableValue <int> > blockTypes,
            ImmutableList <INullableValue <int> > lengthOfStayDays,
            ImmutableList <INullableValue <int> > patientGroups,
            Bundle operatingRooms,
            Bundle surgeonGroups,
            ImmutableList <Tuple <Organization, ImmutableList <Organization> > > wards,
            INullableValue <int> numberBeds,
            ImmutableList <KeyValuePair <INullableValue <int>, Duration> > patientGroupSurgeryDurations,
            ImmutableList <KeyValuePair <INullableValue <int>, Duration> > blockTypeTimeBlockLengths,
            ImmutableList <Tuple <FhirDateTime, Location, Duration> > dayOperatingRoomOperatingCapacities,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonGroupSubsetPatientGroups,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > wardSubsetPatientGroups,
            ImmutableList <Tuple <INullableValue <int>, INullableValue <int>, FhirDecimal> > patientGroupDayLengthOfStayProbabilities,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <int> > > patientGroupThroughputs,
            ImmutableList <KeyValuePair <Organization, INullableValue <decimal> > > wardα,
            ImmutableList <KeyValuePair <Organization, INullableValue <decimal> > > wardβ,
            ImmutableList <KeyValuePair <Organization, INullableValue <decimal> > > wardγ)
        {
            ITPInputContext context = null;

            try
            {
                context = new TPInputContext(
                    activeDays,
                    days,
                    blockTypes,
                    lengthOfStayDays,
                    patientGroups,
                    operatingRooms,
                    surgeonGroups,
                    wards,
                    numberBeds,
                    patientGroupSurgeryDurations,
                    blockTypeTimeBlockLengths,
                    dayOperatingRoomOperatingCapacities,
                    surgeonGroupSubsetPatientGroups,
                    wardSubsetPatientGroups,
                    patientGroupDayLengthOfStayProbabilities,
                    patientGroupThroughputs,
                    wardα,
                    wardβ,
                    wardγ);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(context);
        }
Exemple #7
0
        /// <summary>
        /// Determines whether the given DocumentObject is null (not set).
        /// </summary>
        public override bool IsNull(DocumentObject dom)
        {
#if !NETFX_CORE
            object val = FieldInfo != null?FieldInfo.GetValue(dom) : PropertyInfo.GetGetMethod(true).Invoke(dom, null);
#else
            object val = FieldInfo != null?FieldInfo.GetValue(dom) : PropertyInfo.GetValue(dom);
#endif
            INullableValue ival = val as INullableValue;
            if (ival != null)
            {
                return(ival.IsNull);
            }
            return(false);
        }
        public SPInputContext(
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > activeDays,
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > days,
            ImmutableList <INullableValue <int> > patientGroups,
            Bundle surgeonGroups,
            ImmutableList <Tuple <Organization, ImmutableList <Organization> > > wards,
            ImmutableList <Tuple <INullableValue <int>, FhirDateTime, FhirDateTime> > patientGroupDaySubsetActiveDays,
            INullableValue <int> numberBeds,
            INullableValue <int> numberBlocks,
            ImmutableList <KeyValuePair <INullableValue <int>, Duration> > patientGroupSurgeryDurations,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <int> > > patientGroupNumberPatientLowerBounds,
            Duration timeBlockLength,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonGroupSubsetPatientGroups,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > wardSubsetPatientGroups,
            ImmutableList <KeyValuePair <INullableValue <int>, Money> > patientGroupProfits,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <int> > > patientGroupThroughputs,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <int> > > patientGroupNumberPatientUpperBounds)
        {
            this.ActiveDays = activeDays;

            this.Days = days;

            this.PatientGroups = patientGroups;

            this.SurgeonGroups = surgeonGroups;

            this.Wards = wards;

            this.PatientGroupDaySubsetActiveDays = patientGroupDaySubsetActiveDays;

            this.NumberBeds = numberBeds;

            this.NumberBlocks = numberBlocks;

            this.PatientGroupSurgeryDurations = patientGroupSurgeryDurations;

            this.PatientGroupNumberPatientLowerBounds = patientGroupNumberPatientLowerBounds;

            this.TimeBlockLength = timeBlockLength;

            this.SurgeonGroupSubsetPatientGroups = surgeonGroupSubsetPatientGroups;

            this.WardSubsetPatientGroups = wardSubsetPatientGroups;

            this.PatientGroupProfits = patientGroupProfits;

            this.PatientGroupThroughputs = patientGroupThroughputs;

            this.PatientGroupNumberPatientUpperBounds = patientGroupNumberPatientUpperBounds;
        }
Exemple #9
0
        public ISPInputContext Create(
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > activeDays,
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > days,
            ImmutableList <INullableValue <int> > patientGroups,
            Bundle surgeonGroups,
            ImmutableList <Tuple <Organization, ImmutableList <Organization> > > wards,
            ImmutableList <Tuple <INullableValue <int>, FhirDateTime, FhirDateTime> > patientGroupDaySubsetActiveDays,
            INullableValue <int> numberBeds,
            INullableValue <int> numberBlocks,
            ImmutableList <KeyValuePair <INullableValue <int>, Duration> > patientGroupSurgeryDurations,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <int> > > patientGroupNumberPatientLowerBounds,
            Duration timeBlockLength,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonGroupSubsetPatientGroups,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > wardSubsetPatientGroups,
            ImmutableList <KeyValuePair <INullableValue <int>, Money> > patientGroupProfits,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <int> > > patientGroupThroughputs,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <int> > > patientGroupNumberPatientUpperBounds)
        {
            ISPInputContext context = null;

            try
            {
                context = new SPInputContext(
                    activeDays,
                    days,
                    patientGroups,
                    surgeonGroups,
                    wards,
                    patientGroupDaySubsetActiveDays,
                    numberBeds,
                    numberBlocks,
                    patientGroupSurgeryDurations,
                    patientGroupNumberPatientLowerBounds,
                    timeBlockLength,
                    surgeonGroupSubsetPatientGroups,
                    wardSubsetPatientGroups,
                    patientGroupProfits,
                    patientGroupThroughputs,
                    patientGroupNumberPatientUpperBounds);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(context);
        }
        public IHM1BInputContext Create(
            ImmutableList <Tuple <Organization, ImmutableList <Organization> > > surgicalSpecialties,
            Bundle operatingRooms,
            Bundle surgeons,
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > planningHorizon,
            ImmutableList <INullableValue <int> > scenarios,
            ImmutableList <INullableValue <int> > operatingRoomServiceLevels,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int> > > surgeonServiceLevelNumberTimeBlocks,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonStrategicTargets,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int> > > surgeonScenarioMaximumNumberPatients,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <decimal> > > scenarioProbabilities,
            INullableValue <int> optimalOperatingRoomServiceLevel,
            INullableValue <int> nextOperatingRoomServiceLevel,
            ImmutableList <KeyValuePair <FhirDateTime, INullableValue <bool> > > dayAvailabilities,
            ImmutableList <KeyValuePair <Organization, INullableValue <decimal> > > surgeonPenaltyWeights)
        {
            IHM1BInputContext context = null;

            try
            {
                context = new HM1BInputContext(
                    surgicalSpecialties,
                    operatingRooms,
                    surgeons,
                    planningHorizon,
                    scenarios,
                    operatingRoomServiceLevels,
                    surgeonServiceLevelNumberTimeBlocks,
                    surgeonStrategicTargets,
                    surgeonScenarioMaximumNumberPatients,
                    scenarioProbabilities,
                    optimalOperatingRoomServiceLevel,
                    nextOperatingRoomServiceLevel,
                    dayAvailabilities,
                    surgeonPenaltyWeights);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(context);
        }
Exemple #11
0
        public HM1BInputContext(
            ImmutableList <Tuple <Organization, ImmutableList <Organization> > > surgicalSpecialties,
            Bundle operatingRooms,
            Bundle surgeons,
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > planningHorizon,
            ImmutableList <INullableValue <int> > scenarios,
            ImmutableList <INullableValue <int> > operatingRoomServiceLevels,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int> > > surgeonServiceLevelNumberTimeBlocks,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonStrategicTargets,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int> > > surgeonScenarioMaximumNumberPatients,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <decimal> > > scenarioProbabilities,
            INullableValue <int> optimalOperatingRoomServiceLevel,
            INullableValue <int> nextOperatingRoomServiceLevel,
            ImmutableList <KeyValuePair <FhirDateTime, INullableValue <bool> > > dayAvailabilities,
            ImmutableList <KeyValuePair <Organization, INullableValue <decimal> > > surgeonPenaltyWeights)
        {
            this.SurgicalSpecialties = surgicalSpecialties;

            this.OperatingRooms = operatingRooms;

            this.Surgeons = surgeons;

            this.PlanningHorizon = planningHorizon;

            this.Scenarios = scenarios;

            this.OperatingRoomServiceLevels = operatingRoomServiceLevels;

            this.SurgeonServiceLevelNumberTimeBlocks = surgeonServiceLevelNumberTimeBlocks;

            this.SurgeonStrategicTargets = surgeonStrategicTargets;

            this.SurgeonScenarioMaximumNumberPatients = surgeonScenarioMaximumNumberPatients;

            this.ScenarioProbabilities = scenarioProbabilities;

            this.OptimalOperatingRoomServiceLevel = optimalOperatingRoomServiceLevel;

            this.NextOperatingRoomServiceLevel = nextOperatingRoomServiceLevel;

            this.DayAvailabilities = dayAvailabilities;

            this.SurgeonPenaltyWeights = surgeonPenaltyWeights;
        }
Exemple #12
0
        public override object GetValue(DocumentObject dom, GV flags)
        {
            if (!Enum.IsDefined(typeof(GV), flags))
            {
                throw new /*InvalidEnum*/ ArgumentException(DomSR.InvalidEnumValue(flags), "flags");
            }

#if !NETFX_CORE
            object val = FieldInfo != null?FieldInfo.GetValue(dom) : PropertyInfo.GetGetMethod(true).Invoke(dom, null);
#else
            object val = FieldInfo != null?FieldInfo.GetValue(dom) : PropertyInfo.GetValue(dom);
#endif
            INullableValue ival = val as INullableValue;
            if (ival != null && ival.IsNull && flags == GV.GetNull)
            {
                return(null);
            }
            return(val);
        }
        /// <summary>
        /// Determines whether the given DocumentObject is null (not set).
        /// </summary>
        public override bool IsNull(DocumentObject dom)
        {
            object val;

            if (FieldInfo != null)
            {
                val = FieldInfo.GetValue(dom);
            }
            else
            {
                val = PropertyInfo.GetGetMethod(true).Invoke(dom, Type.EmptyTypes);
            }
            INullableValue ival = val as INullableValue;

            if (ival != null)
            {
                return(ival.IsNull);
            }
            return(false);
        }
Exemple #14
0
        public override object GetValue(DocumentObject dom, GV flags)
        {
            object val;

            if (FieldInfo != null)
            {
                val = FieldInfo.GetValue(dom);
            }
            else
            {
                val = PropertyInfo.GetGetMethod(true).Invoke(dom, Type.EmptyTypes);
            }
            INullableValue ival = val as INullableValue;

            if (ival != null && ival.IsNull && flags == GV.GetNull)
            {
                return(null);
            }
            return(val);
        }
Exemple #15
0
        public HM1BOutputContext(
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgicalSpecialtyNumberAssignedTimeBlocks,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonNumberAssignedTimeBlocks,
            INullableValue <decimal> bestBound,
            INullableValue <decimal> gap,
            long numberOfExploredNodes,
            INullableValue <decimal> objectiveValue,
            TimeSpan overallWallTime)
        {
            this.SurgicalSpecialtyNumberAssignedTimeBlocks = surgicalSpecialtyNumberAssignedTimeBlocks;

            this.SurgeonNumberAssignedTimeBlocks = surgeonNumberAssignedTimeBlocks;

            this.BestBound = bestBound;

            this.Gap = gap;

            this.NumberOfExploredNodes = numberOfExploredNodes;

            this.ObjectiveValue = objectiveValue;

            this.OverallWallTime = overallWallTime;
        }
        public HM3BInputContext(
            ImmutableList <INullableValue <int> > weekdays,
            ImmutableList <Tuple <Organization, ImmutableList <Organization> > > surgicalSpecialties,
            ImmutableList <INullableValue <int> > lengthOfStayDays,
            Bundle machines,
            Bundle operatingRooms,
            Bundle surgeons,
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > planningHorizon,
            ImmutableList <INullableValue <int> > scenarios,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgicalSpecialtyNumberAssignedTimeBlocks,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonNumberAssignedTimeBlocks,
            Duration timeBlockLength,
            ImmutableList <Tuple <Organization, INullableValue <int>, Duration> > surgeonScenarioWeightedAverageSurgicalDurations,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonLengthOfStayMaximums,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int> > > surgeonScenarioMaximumNumberPatients,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int>, INullableValue <decimal> > > surgeonDayScenarioLengthOfStayProbabilities,
            ImmutableList <Tuple <Device, Location, INullableValue <bool> > > machineOperatingRoomAssignments,
            INullableValue <int> numberDaysPerWeek,
            ImmutableList <Tuple <Organization, Location, INullableValue <bool> > > surgicalSpecialtyOperatingRoomAssignments,
            ImmutableList <Tuple <Organization, Location, INullableValue <bool> > > surgeonOperatingRoomAssignments,
            ImmutableList <Tuple <Organization, Device, INullableValue <bool> > > surgeonMachineRequirements,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <decimal> > > surgeonScenarioMaximumNumberPatientMeans,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <decimal> > > scenarioProbabilities,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <decimal> > > surgeonScenarioMaximumNumberPatientStandardDeviations,
            ImmutableList <KeyValuePair <FhirDateTime, INullableValue <bool> > > dayAvailabilities,
            INullableValue <int> maximumNumberRecoveryWardBeds)
        {
            this.Weekdays = weekdays;

            this.SurgicalSpecialties = surgicalSpecialties;

            this.LengthOfStayDays = lengthOfStayDays;

            this.Machines = machines;

            this.OperatingRooms = operatingRooms;

            this.Surgeons = surgeons;

            this.PlanningHorizon = planningHorizon;

            this.Scenarios = scenarios;

            this.SurgicalSpecialtyNumberAssignedTimeBlocks = surgicalSpecialtyNumberAssignedTimeBlocks;

            this.SurgeonNumberAssignedTimeBlocks = surgeonNumberAssignedTimeBlocks;

            this.TimeBlockLength = timeBlockLength;

            this.SurgeonScenarioWeightedAverageSurgicalDurations = surgeonScenarioWeightedAverageSurgicalDurations;

            this.SurgeonLengthOfStayMaximums = surgeonLengthOfStayMaximums;

            this.SurgeonScenarioMaximumNumberPatients = surgeonScenarioMaximumNumberPatients;

            this.SurgeonDayScenarioLengthOfStayProbabilities = surgeonDayScenarioLengthOfStayProbabilities;

            if (machineOperatingRoomAssignments != null && machineOperatingRoomAssignments.Count > 0)
            {
                this.MachineOperatingRoomAssignments = machineOperatingRoomAssignments;
            }
            else
            {
                this.MachineOperatingRoomAssignments = null;
            }

            this.NumberDaysPerWeek = numberDaysPerWeek;

            if (surgicalSpecialtyOperatingRoomAssignments != null && surgicalSpecialtyOperatingRoomAssignments.Count > 0)
            {
                this.SurgicalSpecialtyOperatingRoomAssignments = surgicalSpecialtyOperatingRoomAssignments;
            }
            else
            {
                this.SurgicalSpecialtyOperatingRoomAssignments = null;
            }

            if (surgeonOperatingRoomAssignments != null && surgeonOperatingRoomAssignments.Count > 0)
            {
                this.SurgeonOperatingRoomAssignments = surgeonOperatingRoomAssignments;
            }
            else
            {
                this.SurgeonOperatingRoomAssignments = null;
            }

            this.SurgeonMachineRequirements = surgeonMachineRequirements;

            this.SurgeonScenarioMaximumNumberPatientMeans = surgeonScenarioMaximumNumberPatientMeans;

            this.ScenarioProbabilities = scenarioProbabilities;

            this.SurgeonScenarioMaximumNumberPatientStandardDeviations = surgeonScenarioMaximumNumberPatientStandardDeviations;

            this.DayAvailabilities = dayAvailabilities;

            this.MaximumNumberRecoveryWardBeds = maximumNumberRecoveryWardBeds;
        }
Exemple #17
0
        public HM4InputContext(
            ImmutableList <INullableValue <int> > weekdays,
            ImmutableList <Tuple <Organization, ImmutableList <Organization> > > surgicalSpecialties,
            ImmutableList <INullableValue <int> > lengthOfStayDays,
            Bundle operatingRooms,
            Bundle surgeons,
            ImmutableList <KeyValuePair <INullableValue <int>, FhirDateTime> > planningHorizon,
            ImmutableList <INullableValue <int> > scenarios,
            Duration timeBlockLength,
            ImmutableList <Tuple <Organization, INullableValue <int>, Duration> > surgeonScenarioWeightedAverageSurgicalDurations,
            ImmutableList <KeyValuePair <Organization, INullableValue <int> > > surgeonLengthOfStayMaximums,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int> > > surgeonScenarioMaximumNumberPatients,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int>, INullableValue <decimal> > > surgeonDayScenarioLengthOfStayProbabilities,
            INullableValue <int> numberDaysPerWeek,
            ImmutableList <Tuple <Organization, Location, INullableValue <bool> > > surgeonOperatingRoomAssignments,
            ImmutableList <Tuple <Organization, Location, INullableValue <int>, INullableValue <int> > > surgeonOperatingRoomDayNumberAssignedTimeBlocks,
            ImmutableList <Tuple <Location, FhirDateTime, INullableValue <bool> > > operatingRoomDayAssignedAvailabilities,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <decimal> > > surgeonScenarioMaximumNumberPatientMeans,
            ImmutableList <KeyValuePair <INullableValue <int>, INullableValue <decimal> > > scenarioProbabilities,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <decimal> > > surgeonScenarioMaximumNumberPatientStandardDeviations,
            ImmutableList <Tuple <Organization, INullableValue <int>, INullableValue <int>, INullableValue <decimal> > > surgeonDayScenarioCumulativeNumberPatients,
            INullableValue <int> maximumNumberRecoveryWardBeds)
        {
            this.Weekdays = weekdays;

            this.SurgicalSpecialties = surgicalSpecialties;

            this.LengthOfStayDays = lengthOfStayDays;

            this.OperatingRooms = operatingRooms;

            this.Surgeons = surgeons;

            this.PlanningHorizon = planningHorizon;

            this.Scenarios = scenarios;

            this.TimeBlockLength = timeBlockLength;

            this.SurgeonScenarioWeightedAverageSurgicalDurations = surgeonScenarioWeightedAverageSurgicalDurations;

            this.SurgeonLengthOfStayMaximums = surgeonLengthOfStayMaximums;

            this.SurgeonScenarioMaximumNumberPatients = surgeonScenarioMaximumNumberPatients;

            this.SurgeonDayScenarioLengthOfStayProbabilities = surgeonDayScenarioLengthOfStayProbabilities;

            this.NumberDaysPerWeek = numberDaysPerWeek;

            this.SurgeonOperatingRoomAssignments = surgeonOperatingRoomAssignments;

            this.SurgeonOperatingRoomDayNumberAssignedTimeBlocks = surgeonOperatingRoomDayNumberAssignedTimeBlocks;

            this.OperatingRoomDayAssignedAvailabilities = operatingRoomDayAssignedAvailabilities;

            this.SurgeonScenarioMaximumNumberPatientMeans = surgeonScenarioMaximumNumberPatientMeans;

            this.ScenarioProbabilities = scenarioProbabilities;

            this.SurgeonScenarioMaximumNumberPatientStandardDeviations = surgeonScenarioMaximumNumberPatientStandardDeviations;

            this.SurgeonDayScenarioCumulativeNumberPatients = surgeonDayScenarioCumulativeNumberPatients;

            this.MaximumNumberRecoveryWardBeds = maximumNumberRecoveryWardBeds;
        }