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()); }
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(); }
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 ); } }
/// <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); } }
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 ......"); }