public DnsRequestTransaction EditRequestPost(IDnsRequestContext request, IDnsPostContext post)
        {
            // RSL 8/15/13: I have no idea where this GetModel call goes, but it is NOT the one in this file.
            // this model does not need the editing/lookup support (using InitializeModel)
            var m = post.GetModel <ConditionsModel>();

            m.RequestType = ConditionsRequestType.All.FirstOrDefault(rt => rt.ID == request.RequestType.ID);
            IList <string> errorMessages;

            if (!Validate(m, out errorMessages))
            {
                return new DnsRequestTransaction {
                           ErrorMessages = errorMessages, IsFailed = true
                }
            }
            ;

            byte[] requestBuilderBytes = BuildRequest(request, m);
            byte[] modelBytes          = BuildUIArgs(m);
            var    newDocuments        = new List <DocumentDTO> {
                new DocumentDTO(REQUEST_FILENAME, "application/xml", false, DocumentKind.Request, requestBuilderBytes),
                new DocumentDTO(REQUEST_ARGS_FILENAME, "application/lpp-dns-uiargs", true, DocumentKind.Request, modelBytes),
            };

            return(new DnsRequestTransaction
            {
                NewDocuments = newDocuments,
                UpdateDocuments = null,
                RemoveDocuments = request.Documents
            });
        }
Example #2
0
        public DnsResult Validate(IDnsRequestContext context)
        {
            if (context.RequestType.IsMetadataRequest)
            {
                return(DnsResult.Success);
            }

            var datacontext = System.Web.HttpContext.Current.DataContext();

            if (AsyncHelpers.RunSync <bool>(() => datacontext.HasPermission(Auth.ApiIdentity, Lpp.Dns.DTO.Security.PermissionIdentifiers.Portal.SkipTwoDataMartRule)))
            {
                return(DnsResult.Success);
            }

            var success = (from r in datacontext.Requests
                           let totalCount = r.DataMarts.Where(d => d.Status != DTO.Enums.RoutingStatus.Canceled).Count()
                                            let ownCount = r.DataMarts.Where(d => d.Status != DTO.Enums.RoutingStatus.Canceled).Count(d => d.DataMart.OrganizationID == r.UpdatedBy.OrganizationID)
                                                           let otherCount = r.DataMarts.Where(d => d.Status != DTO.Enums.RoutingStatus.Canceled).Count(d => d.DataMart.OrganizationID != r.UpdatedBy.OrganizationID)
                                                                            where r.ID == context.RequestID
                                                                            select totalCount >= 2 && otherCount >= 1).First();

            if (success)
            {
                return(DnsResult.Success);
            }

            return(DnsResult.Failed("The system requires that you submit your query to 2 or more DataMarts from different organizations. Please select at least 1 DataMart from 2 separate organizations."));
        }
        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 DnsRequestTransaction EditRequestPost(IDnsRequestContext request, IDnsPostContext post)
        {
            var newDocuments    = new System.Collections.Generic.List <DocumentDTO>();
            var removeDocuments = new System.Collections.Generic.List <Document>();
            var m = post.GetModel <SqlDistributionModel>();

            newDocuments.Add(new DocumentDTO {
                FileName = request.Header.Name,
                Name     = request.Header.Name,
                Kind     = DocumentKind.Request,
                MimeType = "text/plain",
                Viewable = true,
                Data     = GetBytes(m.SqlQuery)
            });

            var doc = request.Documents.FirstOrDefault(s => s.Kind == DocumentKind.Request);

            if (doc != null)
            {
                removeDocuments.Add(doc);
            }

            return(new DnsRequestTransaction
            {
                NewDocuments = newDocuments,
                UpdateDocuments = null,
                RemoveDocuments = removeDocuments
            });
        }
Example #5
0
        public DnsRequestTransaction EditRequestPost(IDnsRequestContext request, IDnsPostContext post)
        {
            var newDocuments = new List <DocumentDTO>();
            var m            = post.GetModel <SASDistributionModel>();

            var removedFiles = ConvertJSONtoStringList(m.RemovedFilesList);

            Document[] removedDocuments = null;
            if (removedFiles.Any())
            {
                var removedFileIDs = removedFiles.Select(f => new Guid(f));
                using (var db = new DataContext())
                {
                    removedDocuments = (from d in db.Documents where removedFileIDs.Contains(d.ID) select d).ToArray();
                    db.Documents.RemoveRange(removedDocuments);
                    db.SaveChanges();
                }
            }

            return(new DnsRequestTransaction
            {
                NewDocuments = newDocuments,
                UpdateDocuments = null,
                RemoveDocuments = removedDocuments
            });
        }
        public Func <HtmlHelper, IHtmlString> EditRequestView(IDnsRequestContext context)
        {
            var gm    = InitializeModel(GetModel(context));
            var model = InitializeModel(gm, context);

            return(html => html.Partial <Create>().WithModel(model));
        }
Example #7
0
 public static SASDistributionModel InitializeModel(SASDistributionModel m, IDnsRequestContext request)
 {
     m.RequestType     = SASDistributionRequestType.All.FirstOrDefault(rt => rt.ID == request.RequestType.ID);
     m.RequestID       = request.RequestID;
     m.RequestFileList = new List <FileSelection>();
     request.Documents.Where(s => s.Kind == DocumentKind.User).ForEach(s => m.RequestFileList.Add(new Lpp.Dns.HealthCare.Models.FileSelection(s.Name, s.Length)));
     return(m);
 }
Example #8
0
 public IEnumerable <IDnsResponseAggregationMode> GetAggregationModes(IDnsRequestContext context)
 {
     //
     // TODO: Dynamically configure the view options based on the request type
     //
     //return new[] { DataCheckerViewOptions.TableView, DataCheckerViewOptions.BarChartView, DataCheckerViewOptions.PieChartView };
     return(null);
 }
Example #9
0
 public Func <HtmlHelper, IHtmlString> EditRequestView(IDnsRequestContext context)
 {
     return(html => html.Partial <Views.Summary.Create>(new Models.MedicalRequestModel
     {
         RequestType = SummaryRequestType.All.FirstOrDefault(rt => rt.Id == context.RequestType.Id),
         Stratifications = Stratifications.All.Where(s => s.StratificationType == "age").ToList()
     }));
 }
        public Func <HtmlHelper, IHtmlString> EditRequestReDisplay(IDnsRequestContext request, IDnsPostContext post)
        {
            // RSL 8/15/13: I have no idea where this GetModel call goes, but it is NOT the one in this file.
            var gm    = InitializeModel(post.GetModel <ConditionsModel>());
            var model = InitializeModel(gm, request);

            return(html => html.Partial <Create>().WithModel(model));
        }
Example #11
0
 public DnsRequestTransaction EditRequestPost(IDnsRequestContext request, IDnsPostContext post)
 {
     return(new DnsRequestTransaction
     {
         NewDocuments = null,
         UpdateDocuments = null,
         RemoveDocuments = null
     });
 }
Example #12
0
        public DnsResult Validate(IDnsRequestContext context)
        {
            if (System.Web.HttpContext.Current.DataContext().RequestDataMarts.Any(dm => dm.RequestID == context.RequestID && dm.Status != DTO.Enums.RoutingStatus.Canceled))
            {
                return(DnsResult.Success);
            }

            return(DnsResult.Failed("Please select at least one DataMart"));
        }
        public static ModularProgramModel InitializeModel(ModularProgramModel m, IDnsRequestContext request)
        {
            m.RequestType     = ModularProgramRequestType.All.FirstOrDefault(rt => rt.ID == request.RequestType.ID);
            m.RequestTypeName = request.RequestType.Name;
            m.RequestId       = request.RequestID;
            string requestName     = GetRequestName(request.RequestType.ID.ToString());
            string requestViewName = GetRequestViewName(request.RequestType.ID.ToString());

            return(m);
        }
Example #14
0
 public IEnumerable <IDnsResponseAggregationMode> GetAggregationModes(IDnsRequestContext context)
 {
     using (DataContext db = new DataContext())
     {
         bool canViewIndividualResults = db.CanViewIndividualResults(Auth.ApiIdentity, Auth.CurrentUserID, context.RequestID);
         return(canViewIndividualResults
             ? new[] { SampleViewOptions.AggregateView, SampleViewOptions.IndividualView }
             : null);
     }
 }
 public IEnumerable <IDnsResponseAggregationMode> GetAggregationModes(IDnsRequestContext context)
 {
     using (var db = new DataContext())
     {
         //bool canViewIndividualResults = Lpp.Utilities.AsyncHelpers.RunSync<bool>(() => db.HasPermissions<Request>(Auth.ApiIdentity, context.RequestID, DTO.Security.PermissionIdentifiers.Request.ViewIndividualResults));
         bool canViewIndividualResults = db.CanViewIndividualResults(Auth.ApiIdentity, Auth.CurrentUserID, context.RequestID);
         return(canViewIndividualResults
         ? new[] { SQLViewOptions.AggregateView, SQLViewOptions.IndividualView }
         : null);
     }
 }
Example #16
0
 DataCheckerModel InitializeModel(DataCheckerModel m, IDnsRequestContext request)
 {
     m.RequestType  = DataCheckerRequestType.All.FirstOrDefault(rt => rt.ID == request.RequestType.ID);
     m.RequestId    = request.RequestID;
     m.DataPartners = (from o in DataContext.Organizations
                       where o.DataMarts.Any(dm => dm.Deleted == false && dm.Projects.Any(p => p.Project.Active && p.Project.Deleted == false && p.Project.Requests.Any(r => r.ID == m.RequestId))) && o.Deleted == false
                       orderby o.Name ascending
                       select new { o.Name, o.Acronym }).ToArray()
                      .Select(x => new KeyValuePair <string, string>(x.Name, x.Acronym)).ToArray();
     return(m);
 }
Example #17
0
        private SessionMetadata GetSessionMetadata(PluginSession sess, IDnsRequestContext req)
        {
            throw new Lpp.Utilities.CodeToBeUpdatedException();

            //return new SessionMetadata
            //{
            //    RequestId = sess.RequestID,
            //    ReturnUrl = sess.ReturnUrl,
            //    ModelId = req.Model.Id.ToString(),
            //    RequestTypeId = req.RequestType.Id.ToString()
            //};
        }
        public Func <HtmlHelper, IHtmlString> DisplayRequest(IDnsRequestContext context)
        {
            var gm = InitializeModel(GetModel(context));
            var m  = InitializeModel(gm, context);

            var codeIds = (m.Codes ?? "").Split(',');

            return(html => html
                   .Partial <Display>()
                   .WithModel(new ConditionsViewModel
            {
                Base = m,
            }));
        }
Example #19
0
        public DnsResult ValidateForSubmission(IDnsRequestContext context)
        {
            PubHealthModel m = GetModel(context);
            IList <string> errorMessages;

            if (Validate(m, out errorMessages))
            {
                return(DnsResult.Success);
            }
            else
            {
                return(DnsResult.Failed(errorMessages.ToArray <string>()));
            }
        }
        /// <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);
        }
Example #21
0
        public Func <HtmlHelper, IHtmlString> DisplayRequest(IDnsRequestContext context)
        {
            var doc = context.Documents.FirstOrDefault();

            if (doc == null)
            {
                return(html => new MvcHtmlString("Query not yet created"));
            }

            return(html =>
            {
                using (var s = doc.OpenBody()) return new MvcHtmlString(new StreamReader(s).ReadToEnd());
            });
        }
        public DnsRequestTransaction EditRequestPost(IDnsRequestContext request, IDnsPostContext post)
        {
            using (var db = new DataContext())
            {
                var newDocuments = new List <DocumentDTO>();
                var m            = post.GetModel <ModularProgramModel>();

                var removedFiles     = SplitToGuids(m.RemovedFileList);
                var removedDocuments = new List <Document>();
                if (removedFiles != null && removedFiles.Any())
                {
                    removedDocuments.AddRange((from d in db.Documents where removedFiles.Contains(d.ID) select d).ToArray());
                    db.Documents.RemoveRange(removedDocuments);
                    db.SaveChanges();
                }

                m.PackageManifest = ConvertJSONtoProgramItems(m.ModularProgramList);
                m.Files           = db.Documents.Where(d => d.ItemID == request.RequestID && !d.FileName.StartsWith("ModularProgramRequest.")).Select(d => new FileItem
                {
                    MimeType = d.MimeType,
                    Name     = d.Name,
                    Size     = d.Length.ToString()
                }).ToList();

                // Serialize the request XML document containing the manifest, add it to the new document list, add the old one to the remove list.
                string requestName         = GetRequestName(request.RequestType.ID.ToString());
                byte[] requestBuilderBytes = BuildRequest(request, m);

                newDocuments.Add(new DocumentDTO(requestName, "application/xml", false, DocumentKind.SystemGeneratedNoLog, requestBuilderBytes));

                request.Documents.Where(s => s.Name == requestName).ForEach(s => removedDocuments.Add(s));

                //Serialize the request view as an HTML document
                var viewDocument = BuildRequestViewDocument(new MemoryStream(requestBuilderBytes)).ToArray();


                string requestViewName = GetRequestViewName(request.RequestType.ID.ToString());
                newDocuments.Add(new DocumentDTO(requestViewName, "text/html", true, DocumentKind.SystemGeneratedNoLog, viewDocument));
                request.Documents.Where(s => s.Name == requestViewName).ForEach(s => removedDocuments.Add(s));

                return(new DnsRequestTransaction
                {
                    NewDocuments = newDocuments,
                    UpdateDocuments = null,
                    RemoveDocuments = removedDocuments,
                    //SearchTerms = GetSearchTerms(request, m)
                });
            }
        }
Example #23
0
        public DnsRequestTransaction EditRequestPost(IDnsRequestContext request, IDnsPostContext post)
        {
            throw new Lpp.Utilities.CodeToBeUpdatedException();

            //var session = Sessions.FindSession(request.RequestId);
            //if (session == null) return DnsRequestTransaction.Failed("Unknown Request ID");
            //if (session.IsAborted) return DnsRequestTransaction.Failed("Request has been aborted");
            //if (!session.IsCommitted) return DnsRequestTransaction.Failed("Request creation is not finished yet");

            //return new DnsRequestTransaction
            //{
            //    RemoveDocuments = request.Documents,
            //    NewDocuments = DocumentsFrom(session)
            //};
        }
        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);
            }
        }
Example #25
0
        public Func <HtmlHelper, IHtmlString> DisplayRequest(IDnsRequestContext context)
        {
            List <FileSelection> Files = new List <FileSelection>();

            foreach (var doc in context.Documents)
            {
                Files.Add(new FileSelection(doc.Name, doc.Length, doc.ID, null, doc.MimeType));
            }

            return(html => html
                   .Partial <Views.SASDistribution.Display>()
                   .WithModel(new Models.SASDistributionModel
            {
                RequestFileList = Files
            }));
        }
        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);
        }
 public static FileDistributionModel InitializeModel(FileDistributionModel m, IDnsRequestContext request)
 {
     using (var db = new DataContext()) {
         m.RequestType     = FileDistributionRequestType.All.FirstOrDefault(rt => rt.ID == request.RequestType.ID);
         m.RequestId       = request.RequestID;
         m.RequestFileList = (from d in db.Documents
                              where d.ItemID == request.RequestID
                              select new FileSelection
         {
             DataMartName = null,
             FileName = d.FileName,
             ID = d.ID,
             MimeType = d.MimeType,
             Size = d.Length
         }).ToList();
         return(m);
     }
 }
        public static SqlDistributionModel InitializeModel(SqlDistributionModel m, IDnsRequestContext request)
        {
            m.RequestType = SqlDistributionRequestType.All.FirstOrDefault(rt => rt.ID == request.RequestType.ID);
            m.RequestID   = request.RequestID;
            m.SqlQuery    = "";

            if (request.Documents != null && request.Documents.Count() > 0)
            {
                using (var db = new DataContext())
                {
                    var doc = request.Documents.FirstOrDefault(s => s.Kind == DocumentKind.Request);
                    if (doc != null)
                    {
                        m.SqlQuery = System.Text.UTF8Encoding.UTF8.GetString(doc.GetData(db));
                    }
                }
            }
            return(m);
        }
        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);
        }