/// <summary> /// Defines a new set of known parameter values to achieve a given goal (e.g. identify 'diabetic drugs' in dataset prescriptions) in combination with a parent <see cref="IFilter"/>. /// <para>A single <see cref="ExtractionFilter"/> (e.g. 'Drug Prescriptions of X' with parameter @DrugList) could have many <see cref="ExtractionFilterParameterSet"/></para> /// </summary> /// <param name="repository"></param> /// <param name="filter"></param> /// <param name="name"></param> public ExtractionFilterParameterSet(ICatalogueRepository repository, ExtractionFilter filter, string name = null) { name = name ?? "New ExtractionFilterParameterSet " + Guid.NewGuid(); repository.InsertAndHydrate(this, new Dictionary <string, object>() { { "Name", name }, { "ExtractionFilter_ID", filter.ID } }); }
/// <summary> /// Identifies all parameters which do not exist yet as declared values /// </summary> /// <returns></returns> public IEnumerable <ExtractionFilterParameter> GetMissingEntries() { var existingCatalogueParameters = ExtractionFilter.GetAllParameters().Cast <ExtractionFilterParameter>().ToArray(); var personalChildren = Values.ToArray(); foreach (ExtractionFilterParameter catalogueParameter in existingCatalogueParameters) { if (personalChildren.All(c => c.ExtractionFilterParameter_ID != catalogueParameter.ID)) { yield return(catalogueParameter); } } }
/// <summary> /// Creates new value entries for each parameter in the filter that does not yet have a value in this value set /// </summary> /// <returns></returns> public ExtractionFilterParameterSetValue[] CreateNewValueEntries() { List <ExtractionFilterParameterSetValue> toReturn = new List <ExtractionFilterParameterSetValue>(); var existingMasters = ExtractionFilter.GetAllParameters().Cast <ExtractionFilterParameter>().ToArray(); var personalChildren = Values.ToArray(); foreach (ExtractionFilterParameter master in existingMasters) { if (personalChildren.All(c => c.ExtractionFilterParameter_ID != master.ID)) { //we have a master that does not have any child values yet toReturn.Add(new ExtractionFilterParameterSetValue((ICatalogueRepository)Repository, this, master)); } } return(toReturn.ToArray()); }
/// <summary> /// Creates a new parameter on the given <paramref name="parent"/> /// <para>It is better to use <see cref="ParameterCreator"/> to automatically generate parameters based on the WHERE Sql</para> /// </summary> /// <param name="repository"></param> /// <param name="parameterSQL"></param> /// <param name="parent"></param> public ExtractionFilterParameter(ICatalogueRepository repository, string parameterSQL, ExtractionFilter parent) { repository.InsertAndHydrate(this, new Dictionary <string, object> { { "ParameterSQL", parameterSQL }, { "ExtractionFilter_ID", parent.ID } }); }