public DatasetInstance CreateInstance(int contextId, string tag, EncounterTypeWorkPlan encounterTypeWorkPlan, DatasetInstance spontaneousReport, PatientClinicalEvent activeReport) { var instance = new DatasetInstance(this, contextId, tag, encounterTypeWorkPlan); foreach (DatasetCategory category in DatasetCategories) { foreach (DatasetCategoryElement element in category.DatasetCategoryElements) { if (element.DatasetElement.Field.FieldType.Description == "Table") { instance.AddInstanceValue(element.DatasetElement, "<<Table>>"); } } } if (spontaneousReport != null) { instance.InitialiseValuesForSpontaneousDataset(tag, spontaneousReport); } if (activeReport != null) { instance.InitialiseValuesForActiveDataset(tag, activeReport); } return(instance); }
private void MapValuesUsingInstance(DatasetCategoryElement dce, string tag, DatasetInstance sourceInstance) { var mapping = dce.DestinationMappings.SingleOrDefault(dm => dm.Tag == tag); if (mapping != null) { if (dce.DatasetElement.Field.FieldType.Description != "Table") { var sourceValue = mapping.SourceElement != null?sourceInstance.GetInstanceValue(mapping.SourceElement.DatasetElement.ElementName) : ""; if (!String.IsNullOrWhiteSpace(sourceValue)) { var formattedValue = TranslateSourceValueForElement(mapping, sourceValue); if (!String.IsNullOrWhiteSpace(formattedValue)) { SetInstanceValue(dce.DatasetElement, formattedValue); } } } else { // we need to process mapping using sub elements var sourceContexts = sourceInstance.GetInstanceSubValuesContext(mapping.SourceElement.DatasetElement.ElementName); foreach (Guid sourceContext in sourceContexts) { var newContext = Guid.NewGuid(); var subItemValues = sourceInstance.GetInstanceSubValues(mapping.SourceElement.DatasetElement.ElementName, sourceContext); foreach (DatasetMappingSub subMapping in mapping.SubMappings) { var sourceSubValue = subMapping.SourceElement != null?subItemValues.SingleOrDefault(siv => siv.DatasetElementSub.Id == subMapping.SourceElement.Id) : null; if (sourceSubValue != null) { var formattedValue = TranslateSourceValueForSubElement(subMapping, sourceSubValue.InstanceValue); if (!String.IsNullOrWhiteSpace(formattedValue)) { SetInstanceSubValue(subMapping.DestinationElement, formattedValue, newContext); } } } } } } }
public void InitialiseValuesForSpontaneousDataset(string tag, DatasetInstance spontaneousReport) { foreach (DatasetCategory dc in Dataset.DatasetCategories) { foreach (DatasetCategoryElement dce in dc.DatasetCategoryElements) { // Default using default value if (dce.DatasetElement.DefaultValue != null && dce.DatasetElement.DefaultValue != "") { SetInstanceValue(dce.DatasetElement, dce.DatasetElement.DefaultValue); } else { MapValuesUsingInstance(dce, tag, spontaneousReport); } } } }