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)); }
/// <summary> /// Helper function to serialize the request builder into a byte array /// </summary> /// <param name="requestBuilder"></param> /// <returns></returns> private byte[] SerializeRequest(request_builder requestBuilder) { byte[] requestBuilderBytes; XmlSerializer serializer = new XmlSerializer(typeof(request_builder)); using (StringWriter sw = new StringWriter()) { using (XmlWriter xw = XmlWriter.Create(sw, new XmlWriterSettings { OmitXmlDeclaration = true })) { serializer.Serialize(xw, requestBuilder, null); requestBuilderBytes = Encoding.UTF8.GetBytes(sw.ToString()); } } return(requestBuilderBytes); }
private byte[] BuildRequest(IDnsRequestContext request, ModularProgramModel m) { request_builder requestBuilder = new request_builder(); requestBuilder.header = new header(); requestBuilder.header.request_type = request.RequestType.Name; requestBuilder.header.request_name = request.Header.Name; requestBuilder.header.request_description = request.Header.Description; if (request.Header.DueDate != null) { requestBuilder.header.due_date = (DateTime)request.Header.DueDate; } requestBuilder.header.activity = request.Header.Activity != null ? request.Header.Activity.Name : null; requestBuilder.header.activity_description = request.Header.ActivityDescription; requestBuilder.header.submitter_email = request.Header.AuthorEmail; requestBuilder.request = new request(); // Build package manifest IList <Lpp.Dns.HealthCare.ModularProgram.Data.Serializer.ModularProgramItem> list = new List <Lpp.Dns.HealthCare.ModularProgram.Data.Serializer.ModularProgramItem>(); m.PackageManifest.ForEach(s => list.Add(new Data.Serializer.ModularProgramItem() { ProgramName = s.ProgramName, Description = s.Description, TypeCode = s.TypeCode, Scenarios = s.Scenarios })); requestBuilder.request.PackageManifest = list.ToArray(); requestBuilder.request.Files = m.Files.ToArray(); byte[] requestBuilderBytes; XmlSerializer serializer = new XmlSerializer(typeof(request_builder)); using (StringWriter sw = new StringWriter()) { using (XmlWriter xw = XmlWriter.Create(sw, new XmlWriterSettings { OmitXmlDeclaration = true })) { serializer.Serialize(xw, requestBuilder, null); requestBuilderBytes = Encoding.UTF8.GetBytes(sw.ToString()); } } return(requestBuilderBytes); }
/// <summary> /// Helper function to load up the report header from the request /// </summary> /// <param name="request"></param> /// <returns></returns> private request_builder LoadReportHeader(IDnsRequestContext request) { request_builder requestBuilder = new request_builder(); requestBuilder.header = new header(); requestBuilder.header.request_type = request.RequestType.Name; requestBuilder.header.request_name = request.Header.Name; requestBuilder.header.request_description = request.Header.Description; if (request.Header.DueDate != null) { requestBuilder.header.due_date = (DateTime)request.Header.DueDate; } requestBuilder.header.activity = request.Header.Activity != null ? request.Header.Activity.Name : null; requestBuilder.header.activity_description = request.Header.ActivityDescription; requestBuilder.request = new request(); return(requestBuilder); }
/// <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)); }