private bool Validate(ConditionsModel m, out IList <string> errorMessages) { errorMessages = new List <string>(); if (string.IsNullOrEmpty(m.Report) && m.RequestType != null) { errorMessages.Add("At least one item must be selected in Report Selector."); } if (string.IsNullOrEmpty(m.Race)) { errorMessages.Add("At least one item must be selected in Race Selector."); } if (m.StartPeriodDate > m.EndPeriodDate) { errorMessages.Add("Start Period date cannot be greater than End Period date."); } if (m.MaxAge > 150) { errorMessages.Add("Age cannot be greater 150."); } if (m.MinAge > m.MaxAge) { errorMessages.Add("Minimum age cannot be greater than maximum age."); } if (string.IsNullOrEmpty(m.Codes) && string.IsNullOrEmpty(m.Disease)) { errorMessages.Add("At least one ICD-9 code must be selected."); } return(errorMessages.Count > 0 ? false : true); }
private DateTime?GetObservationEndPeriod(ConditionsModel m) { DateTime?endPeriod = null; bool useEndPeriod = false; foreach (var criteriaGroup in m.CriteriaGroups) { if (criteriaGroup.ExcludeCriteriaGroup == false) { foreach (var term in criteriaGroup.Terms) { if (term.TermName == "ObservationPeriod") { foreach (var arg in term.Args) { if (arg.Key == "UseEndPeriod" && arg.Value == "true") { useEndPeriod = true;; } else if (arg.Key == "EndPeriod" && !arg.Value.NullOrEmpty()) { endPeriod = DateTime.Parse(arg.Value); } } } } } } return(useEndPeriod == true ? endPeriod : null); }
private byte[] BuildComposerRequest(IDnsRequestContext request, ConditionsModel m) { request_builder requestBuilder = LoadReportHeader(request); requestBuilder.request.criteria = new criteria(); IList <variablesType> IncludeList = new List <variablesType>(); IList <variablesType> ExcludeList = new List <variablesType>(); foreach (var criteriaGroup in m.CriteriaGroups) { if (criteriaGroup.ExcludeCriteriaGroup == true) { ExcludeList.Add(BuildTerms(criteriaGroup)); } else { IncludeList.Add(BuildTerms(criteriaGroup)); } } if (IncludeList.Count > 0) { requestBuilder.request.criteria.inclusion_criteria = IncludeList.ToArray(); } if (ExcludeList.Count > 0) { requestBuilder.request.criteria.exclusion_criteria = ExcludeList.ToArray(); } LoadReportSelector(m, requestBuilder); return(SerializeRequest(requestBuilder)); }
public ActionResult SaveConditions(ConditionsModel selectedCondition) { using (var db = new VisualTraining.Models.Database.VisualTrainingModel()) { var conditionLines = db.ConditionLines.Where(x => x.DiagnosisID == selectedCondition.DiagnosisId).ToList(); //foreach(var conditionId in selectedCondition.SelectedConditions) //{ //} return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } }
/// <summary> /// Initializes the model for editing, relying on static lists /// </summary> /// <param name="m"></param> /// <returns></returns> private static ConditionsModel InitializeModel(ConditionsModel m, IDnsRequestContext request) { var periodStratification = PeriodStratificationSelectionList.periods.Select(period => new StratificationCategoryLookUp { CategoryText = period.Name, StratificationCategoryId = period.Code }); var ageStratification = AgeStratificationSelectionList.ages.Select(age => new StratificationCategoryLookUp { CategoryText = age.Display, StratificationCategoryId = age.Code }); m.DiseaseSelections = DiseaseSelectionList.diseases.Select(disease => new ConditionsSelection { Name = disease.Name, Display = disease.Display, Value = disease.Code }); m.RaceSelections = RaceSelectionList.races.Select(race => new StratificationCategoryLookUp { CategoryText = race.Name, StratificationCategoryId = race.Code }); m.EthnicitySelections = RaceSelectionList.ethnicities.Select(ethnicity => new StratificationCategoryLookUp { CategoryText = ethnicity.Name, StratificationCategoryId = ethnicity.Code }); // this is only set by our GetModel, not the generic one, so ensure it is set here m.RequestType = ConditionsRequestType.All.FirstOrDefault(rt => rt.ID == request.RequestType.ID); m.SexSelections = SexSelectionList.sexes.Select(sex => new StratificationCategoryLookUp { CategoryText = sex.Name, StratificationCategoryId = sex.Code }); m.ZipCodeSelections = ZipCodeSelectionList.zipCodes.Select(zip => new StratificationCategoryLookUp { CategoryText = zip.ZipCode, ClassificationText = zip.Name, StratificationCategoryId = zip.Code }); m.ReportSelections = new[] { new ReportSelection { Name = "PeriodStratification", Display = "Period", Value = (int)ReportSelectionCode.Period, SelectionList = periodStratification }, new ReportSelection { Name = "AgeStratification", Display = "Age", Value = (int)ReportSelectionCode.Age, SelectionList = ageStratification }, new ReportSelection { Name = "SexStratification", Display = "Sex", Value = (int)ReportSelectionCode.Sex }, new ReportSelection { Name = "RaceStratification", Display = "Race", Value = (int)ReportSelectionCode.Race }, new ReportSelection { Name = "CenterStratification", Display = "Center", Value = (int)ReportSelectionCode.Center }, new ReportSelection { Name = "ZipStratification", Display = "Zip", Value = (int)ReportSelectionCode.Zip }, }; return(m); }
private byte[] BuildUIArgs(ConditionsModel m) { byte[] modelBytes; XmlSerializer serializer = new XmlSerializer(typeof(ConditionsModel)); using (StringWriter sw = new StringWriter()) { ConditionsModel serializedModel = new ConditionsModel { Codes = m.Codes, AgeStratification = m.AgeStratification, Disease = m.Disease, EndPeriodDate = m.EndPeriodDate, MaxAge = m.MaxAge, MinAge = m.MinAge, MinVisits = m.MinVisits, PeriodStratification = m.PeriodStratification, Race = m.Race, Ethnicity = m.Ethnicity, RaceStratification = m.RaceStratification, Report = m.Report, Sex = m.Sex, StartPeriodDate = m.StartPeriodDate, ICD9Stratification = m.ICD9Stratification, CriteriaGroupsJSON = m.CriteriaGroupsJSON, TobaccoUse = m.TobaccoUse }; using (XmlWriter xmlWriter = XmlWriter.Create(sw, new XmlWriterSettings { OmitXmlDeclaration = true })) { xmlWriter.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"#stylesheet\""); xmlWriter.WriteDocType("ConditionsModel", null, null, "<!ATTLIST xsl:stylesheet id ID #REQUIRED>"); using (StreamReader transform = new StreamReader(this.GetType().Assembly.GetManifestResourceStream("Lpp.Dns.HealthCare.Conditions.Code.ConditionToHTML.xsl"))) { string xsl = transform.ReadToEnd(); serializer.Serialize(xmlWriter, serializedModel, null); string xml = sw.ToString(); xml = xml.Substring(0, xml.IndexOf("<AgeStratification")) + xsl + xml.Substring(xml.IndexOf("<AgeStratification")); modelBytes = Encoding.UTF8.GetBytes(xml); } } } return(modelBytes); }
public DnsResult ValidateForSubmission(IDnsRequestContext context) { // this model does not need the editing/lookup support (using InitializeModel) ConditionsModel m = GetModel(context); IList <string> errorMessages; if (!Validate(m, out errorMessages)) { return(DnsResult.Failed(errorMessages.ToArray <string>())); } else { return(DnsResult.Success); } }
private ConditionsModel GetModel(IDnsRequestContext context) { var m = new ConditionsModel { StartPeriodDate = DateTime.Now, EndPeriodDate = DateTime.Now, RequestType = ConditionsRequestType.All.FirstOrDefault(rt => rt.ID == context.RequestType.ID) }; if (context.Documents != null && context.Documents.Count() > 0) { var doc = (from aDoc in context.Documents where aDoc.Name == REQUEST_ARGS_FILENAME select aDoc).FirstOrDefault(); XmlSerializer serializer = new XmlSerializer(typeof(ConditionsModel)); using (var db = new DataContext()) { using (var docStream = new DocumentStream(db, doc.ID)) { using (XmlTextReader reader = new XmlTextReader(docStream)) { ConditionsModel deserializedModel = (ConditionsModel)serializer.Deserialize(reader); m.AgeStratification = deserializedModel.AgeStratification; m.Codes = deserializedModel.Codes; m.Disease = deserializedModel.Disease; m.EndPeriodDate = deserializedModel.EndPeriodDate; m.ICD9Stratification = deserializedModel.ICD9Stratification; m.MaxAge = deserializedModel.MaxAge; m.MinAge = deserializedModel.MinAge; m.MinVisits = deserializedModel.MinVisits; m.PeriodStratification = deserializedModel.PeriodStratification; m.Race = deserializedModel.Race; m.Ethnicity = deserializedModel.Ethnicity; m.Report = deserializedModel.Report; m.Sex = deserializedModel.Sex; m.TobaccoUse = deserializedModel.TobaccoUse; m.StartPeriodDate = deserializedModel.StartPeriodDate; } } } } return(m); }
// So, in order to make sure that the model looks like the one handed out in the original EditRequestView, // we need to split the initialization logic into three pieces... a "GetModel", an instanced InitializeModel, // and finally static InitializeModel. /// <summary> /// Initializes the model for editing, relying on lists that are loaded into this instance /// </summary> /// <param name="m"></param> /// <returns></returns> private ConditionsModel InitializeModel(ConditionsModel m) { // initialize the lists that need instance data... the rest are set up in the static InitializeModel using (var db = new DataContext()) { var categories = db.LookupListCategories.Where(c => c.ListId == Lists.SPANDiagnosis || c.ListId == Lists.ZipCodes).ToArray(); var values = db.LookupListValues.Where(v => v.ListId == Lists.SPANDiagnosis || v.ListId == Lists.ZipCodes).ToArray(); m.ICD9Categories = categories.Where(c => c.ListId == Lists.SPANDiagnosis); //lookuplist category m.ICD9Values = values.Where(v => v.ListId == Lists.SPANDiagnosis); //lookuplist value m.ZipCategories = categories.Where(c => c.ListId == Lists.ZipCodes); m.ZipValues = values.Where(v => v.ListId == Lists.ZipCodes); } //m.Asthma = IcdCodes.All.Where(v => v.ListId == Lists. //To-do Jamie return(m); }
private TermModel GetTerm(ConditionsModel m, string name) { TermModel t = null; foreach (var criteriaGroup in m.CriteriaGroups) { if (criteriaGroup.ExcludeCriteriaGroup == false) { foreach (var term in criteriaGroup.Terms) { if (term.TermName == name) { t = term; } } } } return(t); }
/// <summary> /// Helper function to load up the report selector /// </summary> /// <param name="m"></param> /// <param name="requestBuilder"></param> private void LoadReportSelector(ConditionsModel m, request_builder requestBuilder) { string[] reportSelections = m.Report.Split(','); if (reportSelections.Length > 0 && !string.IsNullOrEmpty(reportSelections[0])) { requestBuilder.response = new response(); requestBuilder.response.report = new report(); requestBuilder.response.report.name = "Default"; requestBuilder.response.report.options = new option[reportSelections.Length]; int i = 0; ReportSelectionCode repSel; foreach (string reportSelection in reportSelections) { requestBuilder.response.report.options[i] = new option(); if (Enum.TryParse <ReportSelectionCode>(reportSelection, out repSel)) { switch (repSel) { case ReportSelectionCode.Age: requestBuilder.response.report.options[i].name = "Age"; requestBuilder.response.report.options[i].value = m.AgeStratification.ToString(); break; case ReportSelectionCode.Sex: requestBuilder.response.report.options[i].name = "Sex"; break; case ReportSelectionCode.Period: requestBuilder.response.report.options[i].name = "Observation_Period"; requestBuilder.response.report.options[i].value = m.PeriodStratification.ToString(); break; case ReportSelectionCode.Race: requestBuilder.response.report.options[i].name = "Race"; break; case ReportSelectionCode.Ethnicity: requestBuilder.response.report.options[i].name = "Ethnicity"; break; case ReportSelectionCode.Center: requestBuilder.response.report.options[i].name = "CenterId"; break; case ReportSelectionCode.ICD9: requestBuilder.response.report.options[i].name = "ICD9"; requestBuilder.response.report.options[i].value = m.ICD9Stratification.ToString(); break; case ReportSelectionCode.Disease: requestBuilder.response.report.options[i].name = "Disease"; break; case ReportSelectionCode.Zip: requestBuilder.response.report.options[i].name = "Zip"; break; case ReportSelectionCode.TobaccoUse: requestBuilder.response.report.options[i].name = "TobaccoUse"; break; } } i++; } } }
private byte[] BuildRequest(IDnsRequestContext request, ConditionsModel m) { request_builder requestBuilder = LoadReportHeader(request); requestBuilder.request.variables = new variablesType(); requestBuilder.request.variables.operation = new operation(); requestBuilder.request.variables.operation.@operator = "And"; IList <variable> variables = new List <variable>(); // Observation Period Range DateTime sasZeroDate = DateTime.Parse("1960-01-01"); var sasStartPeriod = m.StartPeriodDate == null ? 0 : (m.StartPeriodDate.Value.Subtract(sasZeroDate)).Days; var sasEndPeriod = m.EndPeriodDate == null ? 0 : (m.EndPeriodDate.Value.Subtract(sasZeroDate)).Days; variables.Add(new variable { name = "Observation_Period", value = sasStartPeriod.ToString(), @operator = ">=" }); variables.Add(new variable { name = "Observation_Period", value = sasEndPeriod.ToString(), @operator = "<=" }); IList <operation> operations = new List <operation>(); variables.Add(new variable { name = "Disease", value = m.Disease.ToString() }); // Age Range variables.Add(new variable { name = "Age", value = m.MaxAge.ToString(), @operator = "<=" }); variables.Add(new variable { name = "Age", value = m.MinAge.ToString(), @operator = ">=" }); // Sex Selector if (m.Sex == SexSelectionList.Male.Code || m.Sex == SexSelectionList.Female.Code) { variables.Add(new variable { name = "Sex", value = SexSelectionList.GetName(m.Sex).Substring(0, 1) }); } else { operation sexOperation = new operation(); operations.Add(sexOperation); sexOperation.@operator = "Or"; IList <variable> sexVariables = new List <variable>(); sexVariables.Add(new variable { name = "Sex", value = SexSelectionList.Male.Name.Substring(0, 1) }); sexVariables.Add(new variable { name = "Sex", value = SexSelectionList.Female.Name.Substring(0, 1) }); sexOperation.variable = sexVariables.ToArray <variable>(); } // Race Selector string[] races = m.Race.Split(','); if (races.Length > 0 && !string.IsNullOrEmpty(races[0])) { operation raceOperation = new operation(); operations.Add(raceOperation); raceOperation.@operator = "Or"; IList <variable> raceVariables = new List <variable>(); foreach (string race in races) { if (race.NullOrEmpty()) { continue; } raceVariables.Add(new variable { name = "Race", value = RaceConvert(race) }); } raceOperation.variable = raceVariables.ToArray <variable>(); } if (variables.Count > 0) { requestBuilder.request.variables.operation.variable = variables.ToArray <variable>(); } if (operations.Count > 0) { requestBuilder.request.variables.operation.operation1 = operations.ToArray <operation>(); } LoadReportSelector(m, requestBuilder); return(SerializeRequest(requestBuilder)); }