Exemplo n.º 1
0
        private static AssessmentInstance CreateAssessmentForPatient(AssessmentDefinition assessmentDefinition, Patient patient)
        {
            var assessmentInstanceFactory = IoC.CurrentContainer.Resolve <IAssessmentInstanceFactory>();
            var instance = assessmentInstanceFactory.Create(assessmentDefinition, patient.Key, assessmentDefinition.CodedConcept.Name);

            //instance.UpdateItem();
            Console.WriteLine("Added Assessment Instance {0} to patient: {1} ......", assessmentDefinition.CodedConcept.Name, patient.Name.FullName);
            return(instance);
        }
 /// <summary>Calculates the completeness.</summary>
 /// <param name="assessment">The assessment.</param>
 /// <param name="sectionDefinition">The section definition.</param>
 /// <returns>A <see cref="CompletenessResults" />.</returns>
 public CompletenessResults CalculateCompleteness(AssessmentInstance assessment, ItemDefinition sectionDefinition = null)
 {
     if (sectionDefinition != null)
     {
         var requiredQuestions = AssessmentDefinition.GetAllItemDefinitionsOfTypeInContainer(sectionDefinition, ItemType.Question).Where(i => i.GetIsRequired());
         var totalRequired     = requiredQuestions.Count( );
         var skippedTotal      = requiredQuestions.Select(i => i.CodedConcept.Code).Intersect(assessment.SkippedItemDefinitions.Select(i => i.CodedConcept.Code)).Count();
         var answeredTotal     = requiredQuestions.Select(i => i.CodedConcept.Code).Intersect(assessment.ItemInstances.Select(i => i.ItemDefinitionCode)).Count();
         return(new CompletenessResults("Report", totalRequired - skippedTotal, answeredTotal));
     }
     return(assessment.CalculateCompleteness());
 }
Exemplo n.º 3
0
        private static void Main(string[] args)
        {
            var assessmentDefinitions = typeof(Frequency).Assembly.GetTypes()
                                        .Where(t => t.IsSubclassOf(typeof(AssessmentDefinition)))
                                        .Select(assessmentDefType => Activator.CreateInstance(assessmentDefType) as AssessmentDefinition).ToList();

            Console.WriteLine("Data update starting ......");

            InitializeDatabase(args.Length > 0 ? args[0] : null);

            Console.WriteLine("Database cleared ......");

            Console.WriteLine("Bootstrapping ......");
            new Bootstrapper().Run();

            var assessmentDefinitionDtos = new List <AssessmentDefinitionDto>();

            foreach (var assessmentDefinition in assessmentDefinitions)
            {
                var assessmentDef = new AssessmentDefinition(assessmentDefinition.CodedConcept);
                assessmentDefinitionDtos.Add(new AssessmentDefinitionDto
                {
                    Key            = assessmentDef.Key,
                    AssessmentName = assessmentDefinition.CodedConcept.Name,
                    AssessmentCode = assessmentDefinition.CodedConcept.Code
                });
                foreach (var itemDefinition in assessmentDefinition.ItemDefinitions)
                {
                    assessmentDef.AddItemDefinition(itemDefinition);
                }

                //SaveDefinitionToEventStore(wireup, assessmentDefinition);
                Console.WriteLine("Added assessment definition: {0} ......", assessmentDefinition.CodedConcept.Name);
            }

            Guid staffKey;
            var  organizationkey = SetupOrganization(assessmentDefinitionDtos, out staffKey);

            var patientKey = AddPatients(organizationkey);

            SetupPatientPortal(organizationkey, patientKey);
            AddAssessmentReminders(assessmentDefinitionDtos, organizationkey, patientKey, staffKey);

            var unitOfWorkProvider = IoC.CurrentContainer.Resolve <IUnitOfWorkProvider>();

            unitOfWorkProvider.GetCurrentUnitOfWork().Commit();

            Console.WriteLine("Data update completed ......");
            //Console.WriteLine("Press any key to continue:");
            //Console.ReadKey();
        }
Exemplo n.º 4
0
 private string GetPreviousPatientScore(AssessmentDefinition assessmentDefinition, Guid patientKey)
 {
     using (var connection = _connectionFactory.CreateConnection())
     {
         var query = "SELECT AssessmentScore FROM [ReportModule].[PatientScoreRangeReport] " +
                     "WHERE PatientKey='" + patientKey + "'" +
                     " AND AssessmentCode='" + assessmentDefinition.CodedConcept.Code + "'" +
                     " ORDER BY ScoreDate DESC";
         var reportDtos = connection.Query <PatientScoreRangeDto> (string.Format(query)).ToList();
         if (!reportDtos.Any())
         {
             return(null);
         }
         var row = reportDtos.ElementAt(0);
         return(row.AssessmentScore);
     }
 }
        public void ShouldApplyCreatedEvent ()
        {
            using ( var serviceLocatorFixture = new ServiceLocatorFixture () )
            {
                // Setup
                SetupServiceLocatorFixture ( serviceLocatorFixture );

                var events = new List<IDomainEvent> ();
                CommitEvent.RegisterAll ( events.Add );

                // Exercise
                const string testCode = "testCode";
                var source = new AssessmentDefinition ( new CodedConcept ( CodeSystems.Nci, testCode, "Test" ) );

                // Verify
                Assert.AreEqual ( 1, events.Count );
                var createdEvent = events[0];
                Assert.IsNotNull ( createdEvent );
                Assert.AreEqual ( typeof(AssessmentDefinitionCreatedEvent), createdEvent.GetType () );
                Assert.AreEqual ( ( createdEvent as AssessmentDefinitionCreatedEvent ).CodedConcept.Code, testCode );
                Assert.AreEqual ( 1, source.Version );
            }
        }
Exemplo n.º 6
0
        /// <summary>Creates the assessment definition.</summary>
        /// <returns>A <see cref="AssessmentDefinition"/>.</returns>
        public AssessmentDefinition CreateAssessmentDefinition()
        {
            var type = GetType();
            var assessmentDefinition = new AssessmentDefinition(GetCodedConcept(type), GetScoreType(type));

            foreach (var propertyInfo in GetOrderedProperties())
            {
                if (typeof(IItemDefinitionProvider).IsAssignableFrom(propertyInfo.PropertyType))
                {
                    var itemDefinitionProvider = propertyInfo.GetValue(this) as IItemDefinitionProvider;
                    assessmentDefinition.AddItemDefinition(
                        itemDefinitionProvider.CreateItemDefinition(
                            GetCodedConcept(
                                propertyInfo,
                                assessmentDefinition.CodedConcept.CodeSystem)));
                }
                else
                {
                    assessmentDefinition.AddItemDefinition(CreateItemDefinitionForQuestionProperty(propertyInfo, assessmentDefinition.CodedConcept.CodeSystem));
                }
            }
            return(assessmentDefinition);
        }
        public void ShouldApplyItemAddedEvent ()
        {
            using ( var serviceLocatorFixture = new ServiceLocatorFixture () )
            {
                // Setup
                SetupServiceLocatorFixture ( serviceLocatorFixture );

                var events = new List<IDomainEvent> ();
                CommitEvent.RegisterAll ( events.Add );

                // Exercise
                const string testCode = "testCode";
                var source = new AssessmentDefinition ( new CodedConcept ( CodeSystems.Nci, testCode, "Test" ) );
                source.AddItemDefinition ( new ItemDefinition ( new CodedConcept ( CodeSystems.Nci, testCode, "Test" ), ItemType.Question, new Lookup (new CodedConcept ( CodeSystems.Nci, testCode, "Test")) ) );

                // Verify
                Assert.AreEqual ( 2, events.Count );
                var itemDefinitionAddedEvent = events[1];
                Assert.IsNotNull ( itemDefinitionAddedEvent );
                Assert.AreEqual ( typeof(ItemDefinitionAddedEvent), itemDefinitionAddedEvent.GetType () );
                Assert.AreEqual ( ( itemDefinitionAddedEvent as ItemDefinitionAddedEvent ).ItemDefinition.CodedConcept.Code, testCode );
                Assert.AreEqual ( 2, source.Version );
            }
        }
 private void MapItems(AssessmentSectionSummaryDto assessmentSectionSummaryDto, AssessmentDefinition assessmentDefinition, AssessmentInstance assessmentInstance)
 {
     foreach (var section in assessmentDefinition.ItemDefinitions.Where(i => i.ItemType == ItemType.Section))
     {
         var subSections       = section.ItemDefinitions.Where(i => i.ItemType == ItemType.Section);
         var sectionSummaryDto = CreateSection(assessmentInstance, section);
         foreach (var subSection in subSections)
         {
             sectionSummaryDto.SubSections.Add(CreateSection(assessmentInstance, subSection));
         }
         assessmentSectionSummaryDto.Sections.Add(sectionSummaryDto);
     }
 }
Exemplo n.º 9
0
        private static void Main(string[] args)
        {
            ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("user-context", typeof(UserContextLayoutRenderer));
            var assessmentDefinitions = new List <AssessmentDefinition> ();

            assessmentDefinitions.Add(new GpraInterview());

            Console.WriteLine("Data update starting ......");

            var connectionString = GetArgument(args, "-c");

            InitializeDatabase(connectionString.Length > 0 ? connectionString : null);

            Console.WriteLine("Database cleared ......");

            Console.WriteLine("Bootstrapping ......");
            new Bootstrapper().Run();

            AddSystemAccount();

            //TODO: use assembly locator.
            var assessmblies = new List <Assembly>
            {
                typeof(DrugUseFrequency).Assembly,
                typeof(GainShortScreener).Assembly,
                typeof(PediatricSymptonChecklist).Assembly,
                typeof(NihHealthBehaviorsAssessment).Assembly
            };

            Task.Run(() =>
            {
                foreach (var assessmbly in assessmblies)
                {
                    assessmentDefinitions.AddRange(
                        assessmbly
                        .GetTypes()
                        .Where(t => t.IsSubclassOf(typeof(Assessment)))
                        .Select(
                            t =>
                    {
                        var assessment = Activator.CreateInstance(t) as Assessment;
                        return(assessment.CreateAssessmentDefinition());
                    }));
                }
            }).Wait();

            var         assessmentDefinitionDtos = new List <AssessmentDefinitionDto>();
            List <Guid> assessmentDefinitionKeys = new List <Guid> ();

            foreach (var assessmentDefinition in assessmentDefinitions)
            {
                var assessmentDef = new AssessmentDefinition(assessmentDefinition.CodedConcept, assessmentDefinition.ScoreType);
                assessmentDefinitionDtos.Add(new AssessmentDefinitionDto
                {
                    Key            = assessmentDef.Key,
                    AssessmentName = assessmentDefinition.CodedConcept.Name,
                    AssessmentCode = assessmentDefinition.CodedConcept.Code
                });
                assessmentDefinitionKeys.Add(assessmentDef.Key);
                foreach (var itemDefinition in assessmentDefinition.ItemDefinitions)
                {
                    assessmentDef.AddItemDefinition(itemDefinition);
                }

                //SaveDefinitionToEventStore(wireup, assessmentDefinition);
                Console.WriteLine("Added assessment definition: {0} ......", assessmentDefinition.CodedConcept.Name);
            }

            Guid staffKey;
            var  organizationkey = SetupOrganization(assessmentDefinitionDtos, out staffKey);

            var patientKeys = AddPatients(organizationkey);
            var portalRole  = SetupPatientPortalRole(organizationkey);

            foreach (var patient in patientKeys)
            {
                AssignPatientToPortal(portalRole, organizationkey, patient);
            }
            AddReportDefinitions(staffKey);
            AddAssessmentReminders(assessmentDefinitionDtos, organizationkey, patientKeys.ElementAt(0).Key, staffKey);

            var addAdditionalData = GetArgument(args, "-x");

            if (addAdditionalData.Length > 0)
            {
                AddAdditionalData(organizationkey, portalRole, staffKey, assessmentDefinitionDtos);
            }
            var unitOfWorkProvider = IoC.CurrentContainer.Resolve <IUnitOfWorkProvider>();

            unitOfWorkProvider.GetCurrentUnitOfWork().Commit();

            WaitForAllToBeDispatched();
            Console.WriteLine("Data update completed ......");
        }