private void updateDose(ISchemaItem schemaItem, IContainer targetContainer, IFormulaCache formulaCache) { //now that parameter have been set, we need to update the dose by hand according to the selected unit var inputDose = schemaItem.Dose; var dose = targetContainer.Parameter(CoreConstants.Parameters.DOSE); var dosePerBodyWeight = targetContainer.Parameter(CoreConstants.Parameters.DOSE_PER_BODY_WEIGHT); var dosePerBodySurfaceArea = targetContainer.Parameter(CoreConstants.Parameters.DOSE_PER_BODY_SURFACE_AREA); if (schemaItem.DoseIsInMass()) { //we have to create a constant value for the dose parameter dose.Formula = _formulaFactory.ValueFor(inputDose.Value, _dimensionRepository.Mass); updateDoseParameter(inputDose, dose, dosePerBodyWeight, dosePerBodySurfaceArea); } else if (schemaItem.DoseIsPerBodyWeight()) { dose.Formula = _formulaFactory.DoseFromDosePerBodyWeightFor(formulaCache); updateDoseParameter(inputDose, dosePerBodyWeight, dose, dosePerBodySurfaceArea); } else if (schemaItem.DoseIsPerBodySurfaceArea()) { dose.Formula = _formulaFactory.DoseFromDosePerBodySurfaceAreaFor(formulaCache); updateDoseParameter(inputDose, dosePerBodySurfaceArea, dose, dosePerBodyWeight); } }
public IParameter CreateFor(ParameterValueMetaData parameterValueDefinition) { var param = _objectBaseFactory.CreateParameter(); param.Formula = _formulaFactory.ValueFor(parameterValueDefinition); setParameterProperties(param, parameterValueDefinition); updateDefaultValueFor(param); return(param); }
public IParameter CreateFor(ParameterValueMetaData parameterValueDefinition) { var parameter = _objectBaseFactory.CreateParameter(); parameter.Formula = _formulaFactory.ValueFor(parameterValueDefinition); setParameterProperties(parameter, parameterValueDefinition); updateDefaultValueFor(parameter); synchronizeFormulaDimension(parameter); return(parameter); }
private void resetParameterToInput(IParameter parameter) { parameter.IsDefault = false; parameter.ValueOrigin.UpdateFrom(new ValueOrigin(), updateId: true); parameter.Formula = _formulaFactory.ValueFor(double.NaN, parameter.Dimension); }