public async Task <int> CreateQuestionnaire(AthleteQuestionnaireDto questionnaireDto) { //Map to the Data Entity object var questionnaireDb = Mapper.Map <Questionnaire>(questionnaireDto); //1. Insert into Questionnaire table await _db.InsertAsync(questionnaireDb); if (questionnaireDb.Id <= 0) { return(0); } //2. Map to the Question entity and save into the DB foreach (var dtoQuestion in questionnaireDto.Questions) { var question = Mapper.Map <Question>(dtoQuestion); //2. Write to the DB await _db.InsertAsync(question); //3. Create relationship between the 2 tables var questJoin = new QuestionnaireQuestion() { QuestionnaireId = questionnaireDb.Id, QuestionId = question.Id }; await _db.InsertAsync(questJoin); } return(questionnaireDb.Id); }
public QuestionnaireAppRecord(QCategory QCategory, QuestionnaireQuestion QuestionnaireQuestion, Question Question, SelectList Answers, QType QType, int Ordinal, int SubOrdinal, string Response) { this.QCategory = QCategory; this.QuestionnaireQuestion = QuestionnaireQuestion; this.Question = Question; this.Answers = Answers; this.QType = QType; this.Ordinal = Ordinal; this.SubOrdinal = SubOrdinal; this.Response = Response; }
public ActionResult DuplicateQuestionnaireQCategory(QuestionnaireQCategory qqc) { if (qqc.Ordinal <= 0) { return(View()); } var userGuid = new Guid(User.Identity.GetUserId()); //WebSecurity.GetUserId(User.Identity.Name); var userId = BitConverter.ToInt32(userGuid.ToByteArray(), 0); var allOfOrdinal = _db.QuestionnaireQCategories.Where(a => a.Ordinal == qqc.Ordinal).OrderBy(o => o.SubOrdinal); allOfOrdinal = allOfOrdinal.Where(x => x.UserId == 0 || x.UserId == userId).OrderBy(o => o.SubOrdinal); var toDuplicate = allOfOrdinal.ToList().Last(); /* add new QuestionnaireQCategory */ var questionnaireqcategory = new QuestionnaireQCategory { QCategoryId = toDuplicate.QCategoryId, QuestionnaireId = toDuplicate.QuestionnaireId, Ordinal = toDuplicate.Ordinal, SubOrdinal = toDuplicate.SubOrdinal + 1, UserId = userId }; _db.QuestionnaireQCategories.Add(questionnaireqcategory); _db.SaveChanges(); /* get new Id */ var newId = questionnaireqcategory.Id; /* get QuestionnaireQuestions to duplicate */ var QQCI = _db.QuestionnaireQCategories.Where(x => x.UserId == 0 && x.QCategoryId == toDuplicate.QCategoryId).FirstOrDefault().Id; var toDuplicateQQs = _db.QuestionnaireQuestions.Where(x => x.QQCategoryId == QQCI); //toDuplicate.QCategoryId); foreach (var dupQ in toDuplicateQQs) //.Select(qq => new QuestionnaireQuestion() { var qq = new QuestionnaireQuestion { QQCategoryId = newId, Ordinal = dupQ.Ordinal, QuestionnaireId = dupQ.QuestionnaireId, QuestionId = dupQ.QuestionId, UserId = userId }; _db.QuestionnaireQuestions.Add(qq); } _db.SaveChanges(); return(RedirectToAction("Edit", "Response", new { area = "", id = toDuplicate.QuestionnaireId })); }
public QuestionTO(QuestionnaireQuestion mdo) { this.number = mdo.Number; this.text = mdo.Text; this.val = mdo.Value; this.branchFromQuestion = mdo.BranchFromQuestion; this.branchCondition = mdo.BranchCondition; if (mdo.Choices != null) { this.choices = new TaggedTextArray(); this.choices.results = new TaggedText[mdo.Choices.Count]; for (int i = 0; i < mdo.Choices.Count; i++) { KeyValuePair <string, string> kvp = mdo.Choices[i]; this.choices.results[i] = new TaggedText(kvp); } this.choices.count = mdo.Choices.Count; } }
public IActionResult AddQuestionnaireQuestion(int questionnaireId, QuestionnaireQuestion qQ) { Questionnaire toAdd = ModMgr.GetQuestionnaire(questionnaireId, false); QuestionnaireQuestion newQuestion = new QuestionnaireQuestion { QuestionText = qQ.QuestionText, QuestionType = qQ.QuestionType, Module = toAdd, Questionnaire = toAdd, Optional = qQ.Optional, Answers = new List <Answer>() }; toAdd.Questions.Add(qQ); QqMgr.MakeQuestion(newQuestion, toAdd.Id); ModMgr.EditQuestionnaire(toAdd); return(RedirectToAction("AddQuestionnaire", toAdd.Id)); }
public QuestionnaireSet getSet(string filepath) { if (String.IsNullOrEmpty(filepath)) { throw new ArgumentNullException("filename"); } if (!File.Exists(filepath)) { throw new ArgumentException("Missing XML questionnaire definition file"); } QuestionnaireSet qset = null; List <QuestionnaireQuestion> currentQuestions = null; Questionnaire currentQuestionnaire = null; QuestionnaireQuestion currentQuestion = null; QuestionnaireSection currentSection = null; QuestionnairePage currentPage = null; QuestionnaireSubsection currentSubsection = null; XmlReader reader = new XmlTextReader(filepath); while (reader.Read()) { switch ((int)reader.NodeType) { case (int)XmlNodeType.Element: string name = reader.Name; if (name == "QuestionnaireSet") { qset = new QuestionnaireSet(); qset.Name = reader.GetAttribute("name"); qset.Title = reader.GetAttribute("title"); qset.Description = reader.GetAttribute("description"); qset.Questionnaires = new List <Questionnaire>(); } else if (name == "Introduction") { currentQuestions = new List <QuestionnaireQuestion>(); } else if (name == "Questionnaire") { currentQuestionnaire = new Questionnaire(); currentQuestionnaire.Name = reader.GetAttribute("name"); currentQuestionnaire.Title = reader.GetAttribute("title"); currentQuestionnaire.Description = reader.GetAttribute("description"); currentQuestionnaire.Sections = new List <QuestionnaireSection>(); } else if (name == "Choices") { currentQuestion.Choices = new List <KeyValuePair <string, string> >(); } else if (name == "Choice") { string nbr = reader.GetAttribute("number"); string txt = reader.GetAttribute("text"); currentQuestion.Choices.Add(new KeyValuePair <string, string>(nbr, txt)); } else if (name == "Section") { currentSection = new QuestionnaireSection(); currentSection.Name = reader.GetAttribute("name"); currentSection.Title = reader.GetAttribute("title"); currentSection.Pages = new List <QuestionnairePage>(); } else if (name == "Page") { currentPage = new QuestionnairePage(); currentPage.Number = reader.GetAttribute("number"); currentPage.Sections = new List <QuestionnaireSubsection>(); } else if (name == "Subsection") { currentSubsection = new QuestionnaireSubsection(); currentSubsection.Name = reader.GetAttribute("name"); currentSubsection.Title = reader.GetAttribute("title"); } else if (name == "Questions") { currentQuestions = new List <QuestionnaireQuestion>(); } else if (name == "Question") { currentQuestion = new QuestionnaireQuestion(); currentQuestion.Number = reader.GetAttribute("number"); currentQuestion.Text = reader.GetAttribute("text"); currentQuestion.BranchFromQuestion = reader.GetAttribute("branchFrom"); currentQuestion.BranchCondition = reader.GetAttribute("if"); currentQuestions.Add(currentQuestion); } break; case (int)XmlNodeType.EndElement: name = reader.Name; if (name == "Introduction") { qset.Questions = currentQuestions; currentQuestions = null; } else if (name == "Questionnaire") { qset.Questionnaires.Add(currentQuestionnaire); currentQuestionnaire = null; } else if (name == "Choices") { } else if (name == "Section") { currentQuestionnaire.Sections.Add(currentSection); currentSection = null; } else if (name == "Page") { currentSection.Pages.Add(currentPage); currentPage = null; } else if (name == "Subsection") { currentPage.Sections.Add(currentSubsection); currentSubsection = null; } else if (name == "Questions") { currentSubsection.Questions = currentQuestions; currentQuestions = null; } break; } } return(qset); }
/// <summary>Component from question.</summary> /// <param name="format"> Describes the format to use.</param> /// <param name="question"> The question.</param> /// <param name="itemOrder">[in,out] The item order.</param> /// <returns>A Questionnaire.ItemComponent.</returns> private static Questionnaire.ItemComponent ComponentFromQuestion( IReportingFormat format, QuestionnaireQuestion question, ref int itemOrder) { if (!format.Fields.ContainsKey(question.ValueFieldName)) { return(null); } FormatField valueField = format.Fields[question.ValueFieldName]; FormatField displayField; if (string.IsNullOrEmpty(question.DisplayFieldName) || (!format.Fields.ContainsKey(question.DisplayFieldName))) { displayField = valueField; } else { displayField = format.Fields[question.DisplayFieldName]; } Questionnaire.ItemComponent component = new Questionnaire.ItemComponent() { LinkId = valueField.Name, Required = valueField.IsRequired == true, Repeats = false, }; if (!string.IsNullOrEmpty(question.FieldSystem)) { component.Code = new List <Coding>() { new Coding(question.FieldSystem, valueField.Name), }; } #if false // 2020.05.13 - Argonaut extensions aren't valid in R4 yet component.AddExtension( "http://fhir.org/guides/argonaut/questionnaire/StructureDefinition/extension-itemOrder", new FhirDecimal(itemOrder++)); #endif if (question.UseTitleOnly) { component.Text = $"{displayField.Title}"; } else { component.Text = $"{displayField.Title}: {displayField.Description}"; } int optionOrder = 0; switch (valueField.Type) { case FormatField.FieldType.Date: component.Type = Questionnaire.QuestionnaireItemType.Date; break; case FormatField.FieldType.Count: component.Type = Questionnaire.QuestionnaireItemType.Integer; break; case FormatField.FieldType.Percentage: component.Type = Questionnaire.QuestionnaireItemType.Decimal; break; case FormatField.FieldType.Boolean: component.Type = Questionnaire.QuestionnaireItemType.Boolean; break; case FormatField.FieldType.Choice: component.Type = Questionnaire.QuestionnaireItemType.Choice; component.AnswerOption = new List <Questionnaire.AnswerOptionComponent>(); component.AddExtension( "http://hl7.org/fhir/StructureDefinition/questionnaire-optionExclusive", new FhirBoolean(true), true); foreach (FormatFieldOption option in valueField.Options) { Element element = new FhirString(option.Text); #if false // 2020.05.13 - Argonaut extensions aren't valid in R4 yet element.AddExtension( "http://fhir.org/guides/argonaut/questionnaire/StructureDefinition/extension-itemOrder", new FhirDecimal(optionOrder++)); #endif component.AnswerOption.Add(new Questionnaire.AnswerOptionComponent() { Value = element, }); } break; case FormatField.FieldType.MultiSelectChoice: component.Type = Questionnaire.QuestionnaireItemType.Choice; component.AnswerOption = new List <Questionnaire.AnswerOptionComponent>(); foreach (FormatFieldOption option in valueField.Options) { Element element = new FhirString(option.Text); #if false // 2020.05.13 - Argonaut extensions aren't valid in R4 yet element.AddExtension( "http://fhir.org/guides/argonaut/questionnaire/StructureDefinition/extension-itemOrder", new FhirDecimal(optionOrder++)); #endif component.AnswerOption.Add(new Questionnaire.AnswerOptionComponent() { Value = element, }); } break; case FormatField.FieldType.Text: component.Type = Questionnaire.QuestionnaireItemType.Text; break; case FormatField.FieldType.ShortString: component.Type = Questionnaire.QuestionnaireItemType.String; break; case FormatField.FieldType.Display: default: component.Type = Questionnaire.QuestionnaireItemType.Display; break; } return(component); }
// // GET: /Questionnaire/Details/5 public ActionResult Details(int id = 0) { var viewModel = new QuestionnaireDetailData(); /* Add Fully Loaded (.Included) Questionnaire to the ViewModel */ viewModel.Questionnaire = _db.Questionnaires .Include(a => a.QuestionnaireQuestions .Select(b => b.Question.QType)) .Include(a => a.QuestionnaireQuestions .Select(b => b.QuestionnaireQCategory)) .Include(a => a.QuestionnaireQCategories .Select(b => b.QCategory)) .Where(n => n.QuestionnaireId == id) .Single(); /* Sort by Questionnaire Question Categories: Step 1 - Left Join QuestionnaireQuestions to QuestionnaireQCategories on QCategoryId */ var query = from questionnaireQuestions in viewModel.Questionnaire.QuestionnaireQuestions join questionnaireQCategories in viewModel.Questionnaire.QuestionnaireQCategories on questionnaireQuestions.QuestionnaireQCategory.QCategoryId equals questionnaireQCategories.QCategoryId into qqJoinQqc from subset in qqJoinQqc.DefaultIfEmpty() select new { questionnaireQuestions.Id, questionnaireQuestions.QuestionnaireId, questionnaireQuestions.QuestionId, questionnaireQuestions.QuestionnaireQCategory.QCategoryId, questionnaireQuestions.Ordinal, questionnaireQuestions.Question, questionnaireQuestions.QuestionnaireQCategory.QCategory, QQCOrdinal = (subset == null ? 99 : subset.Ordinal) }; /* Sort by Questionnaire Question Categories: Step 2 - Sort on Ordinal from QuestionnaireQCategories */ var sortedQuery = query.OrderBy(q => q.QQCOrdinal); /* Sort by Questionnaire Question Categories: Step 3 - Build List<QuestionnaireQuestion> (because QuestionnaireQuestions is an ICollection) */ var sortedQuestionnaireQuestions = new List <QuestionnaireQuestion>(); foreach (var item in sortedQuery) { var questionnaireQuestion = new QuestionnaireQuestion { Id = item.Id, Ordinal = item.Ordinal, QuestionnaireId = item.QuestionnaireId, QuestionId = item.QuestionId, QuestionnaireQCategory = { QCategoryId = item.QCategoryId }, Question = item.Question }; questionnaireQuestion.QuestionnaireQCategory.QCategory = item.QCategory; sortedQuestionnaireQuestions.Add(questionnaireQuestion); } /* Sort by Questionnaire Question Categories: Step 4 - Replace Questionnaire.QuestionnaireQuestions with Sorted List */ viewModel.Questionnaire.QuestionnaireQuestions = sortedQuestionnaireQuestions; viewModel.Questionnaire.QuestionnaireQCategories = viewModel.Questionnaire.QuestionnaireQCategories.OrderBy(o => o.Ordinal).ToList(); var detailRecords = new List <QuestionnaireDetailRecord>(); foreach (QuestionnaireQuestion qq in viewModel.Questionnaire.QuestionnaireQuestions) { List <Answer> answers = _db.Answers.Where(x => x.QTypeName == qq.Question.QTypeName).ToList(); var selectListItems = new List <SelectListItem>(); for (int i = 0; i < answers.Count(); i++) { var selectListItem = new SelectListItem { Text = answers[i].AnswerText, Value = answers[i].AnswerId.ToString() }; selectListItems.Add(selectListItem); } var selectList = new SelectList(selectListItems, "Value", "Text"); detailRecords.Add(new QuestionnaireDetailRecord { Question = qq.Question, QCategory = qq.QuestionnaireQCategory.QCategory, Answers = selectList }); } viewModel.DetailRecords = detailRecords; return(View(viewModel)); }
public ActionResult Edit(IEnumerable <QuestionnaireQuestion> qQuestions, int[] remove, int selectedQuestionAdd = -1, int selectedQQCategoryAdd = -1) { if (remove == null) { remove = new int[0]; } QuestionnaireQuestion[] enumerable = qQuestions as QuestionnaireQuestion[] ?? qQuestions.ToArray(); int?id = enumerable[0].QuestionnaireId; if (id == null) { return(View()); } var questionnaireId = (int)id; var scope = new TransactionScope( // a new transaction will always be created TransactionScopeOption.RequiresNew, // we will allow volatile data to be read during transaction new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted } ); using (scope) { try { var qqnum = enumerable.Where(x => remove.Contains(x.Id)); // updates foreach (QuestionnaireQuestion qQuestion in enumerable) { if (!remove.Contains(qQuestion.Id)) { _db.Entry(qQuestion).State = System.Data.Entity.EntityState.Modified; } } _db.SaveChanges(); // deletes foreach (var i in remove) { var qq = _db.QuestionnaireQuestions.Single(x => x.Id == i); _db.Entry(qq).State = System.Data.Entity.EntityState.Deleted; } _db.SaveChanges(); // new questionnaire question if (selectedQuestionAdd != -1 && selectedQQCategoryAdd != -1) { int ordinal = 1; if (_db.QuestionnaireQuestions.Any(x => x.QuestionnaireId == id && x.QQCategoryId == selectedQQCategoryAdd)) { ordinal = _db.QuestionnaireQuestions.Where( x => x.QuestionnaireId == id && x.QQCategoryId == selectedQQCategoryAdd) .OrderBy(x => x.Ordinal) .ToList() .Last() .Ordinal + 1; } var qq = new QuestionnaireQuestion { QuestionnaireId = id, QuestionId = selectedQuestionAdd, QQCategoryId = selectedQQCategoryAdd, Ordinal = ordinal }; _db.Entry(qq).State = System.Data.Entity.EntityState.Added; } _db.SaveChanges(); scope.Complete(); return(RedirectToAction("Edit")); } catch (Exception ex) { throw; } } return(View()); }
public static bool ContainsIssues(this QuestionnaireQuestion question) { return(question.Issues.Count > 0); }
private static void SetOneAnswer(QuestionnaireQuestion q1) { QuestionnaireQuestionAnswer yes = new QuestionnaireQuestionAnswer(); yes.Value = "1"; yes.Answer = "YES"; QuestionnaireQuestionAnswer no = new QuestionnaireQuestionAnswer(); no.Value = "0"; no.Answer = "NO"; q1.Answers = new QuestionnaireQuestionAnswer[] { yes, no }; }
private static void SetFrequencyAnswer(QuestionnaireQuestion q1) { QuestionnaireQuestionAnswer Never = new QuestionnaireQuestionAnswer(); Never.Value = "0"; Never.Answer = "Never"; QuestionnaireQuestionAnswer Happened = new QuestionnaireQuestionAnswer(); Happened.Value = "1"; Happened.Answer = "Happened but not in the last week"; QuestionnaireQuestionAnswer OneOrTwoTimes = new QuestionnaireQuestionAnswer(); OneOrTwoTimes.Value = "2"; OneOrTwoTimes.Answer = "1 or 2 times in the last week"; QuestionnaireQuestionAnswer FromThreeToSix = new QuestionnaireQuestionAnswer(); FromThreeToSix.Value = "3"; FromThreeToSix.Answer = "From 3 to 6 times in the last week"; QuestionnaireQuestionAnswer Everyday = new QuestionnaireQuestionAnswer(); Everyday.Value = "4"; Everyday.Answer = "Everyday"; QuestionnaireQuestionAnswer NotApplicable = new QuestionnaireQuestionAnswer(); NotApplicable.Value = "9"; NotApplicable.Answer = "I don’t know/Not applicable"; q1.Answers = new QuestionnaireQuestionAnswer[] { Never, Happened, OneOrTwoTimes, FromThreeToSix, Everyday, NotApplicable}; }
private static void SerializeQuestionnaire() { Questionnaire q = new Questionnaire(); q.Version = "1.0"; List<QuestionnaireQuestion> QuestionnaireQuestions = new List<QuestionnaireQuestion>(); #region 1. What is the year, season, date, day, and month? QuestionnaireQuestion q1 = new QuestionnaireQuestion(); q1.ID = "1"; q1.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q1.Title = "1. What is the year, season, date, day, and month?"; SetOneAnswer(q1); QuestionnaireQuestions.Add(q1); QuestionnaireQuestion q1_1 = new QuestionnaireQuestion(); q1_1.ID = "1.1"; q1_1.Condition = "1"; q1_1.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q1_1.Title = "1. Year"; SetOneAnswer(q1_1); q1.Questions.Add(q1_1); QuestionnaireQuestion q1_2= new QuestionnaireQuestion(); q1_2.ID = "1.2"; q1_2.Condition = "1"; q1_2.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q1_2.Title = "2. Season "; SetOneAnswer(q1_2); q1.Questions.Add(q1_2); QuestionnaireQuestion q1_3 = new QuestionnaireQuestion(); q1_3.ID = "1.3"; q1_3.Condition = "1"; q1_3.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q1_3.Title = "3. Date"; SetOneAnswer(q1_3); q1.Questions.Add(q1_3); QuestionnaireQuestion q1_4 = new QuestionnaireQuestion(); q1_4.ID = "1.4"; q1_4.Condition = "1"; q1_4.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q1_4.Title = "4. Day "; SetOneAnswer(q1_4); q1.Questions.Add(q1_4); QuestionnaireQuestion q1_5 = new QuestionnaireQuestion(); q1_5.ID = "1.5"; q1_5.Condition = "1"; q1_5.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q1_5.Title = "5. Month"; SetOneAnswer(q1_5); q1.Questions.Add(q1_5); #endregion #region 2. Where are we (state, country, town or city, home/hospital, floor)? QuestionnaireQuestion q2 = new QuestionnaireQuestion(); q2.ID = "2"; q2.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q2.Title = "2. Where are we (state, country, town or city, home/hospital, floor)?"; SetOneAnswer(q2); QuestionnaireQuestions.Add(q2); QuestionnaireQuestion q2_1 = new QuestionnaireQuestion(); q2_1.ID = "2.1"; q2_1.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q2_1.Title = "1. State"; SetOneAnswer(q2_1); q2.Questions.Add(q2_1); QuestionnaireQuestion q2_2 = new QuestionnaireQuestion(); q2_2.ID = "2.2"; q2_2.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q2_2.Title = "2. Country "; SetOneAnswer(q2_2); q2.Questions.Add(q2_2); QuestionnaireQuestion q2_3 = new QuestionnaireQuestion(); q2_3.ID = "2.3"; q2_3.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q2_3.Title = "3. Town or city"; SetOneAnswer(q2_3); q2.Questions.Add(q2_3); QuestionnaireQuestion q2_4 = new QuestionnaireQuestion(); q2_4.ID = "2.4"; q2_4.QuestionType = QuestionnaireQuestionAnswerType.OneAnswer; q2_4.Title = "4. Home/hospital "; SetOneAnswer(q2_4); q2.Questions.Add(q2_4); QuestionnaireQuestion q2_5 = new QuestionnaireQuestion("2.5", "5. Floor", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q2_5); q2.Questions.Add(q2_5); #endregion #region Cluster 1: Cognitive QuestionnaireQuestion q3 = new QuestionnaireQuestion("3", "3. Does he/she mix up past and present (e.g. thinking a deceased relative is alive)?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q3); QuestionnaireQuestions.Add(q3); QuestionnaireQuestion q3_Frequency = new QuestionnaireQuestion("3.1", "How often?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q3_Frequency); q3.Questions.Add(q3_Frequency); QuestionnaireQuestion q4 = new QuestionnaireQuestion("4", "4. Does he/she loose, misplace or hide things?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q4); QuestionnaireQuestions.Add(q4); QuestionnaireQuestion q4_Frequency = new QuestionnaireQuestion("4.1", "How often?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q4_Frequency); q4.Questions.Add(q4_Frequency); QuestionnaireQuestion q5 = new QuestionnaireQuestion("5", "5. Does he/she wander or get lost?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q5); QuestionnaireQuestions.Add(q5); QuestionnaireQuestion q5_Frequency = new QuestionnaireQuestion("5.1", "How often?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q5_Frequency); q5.Questions.Add(q5_Frequency); QuestionnaireQuestion q6 = new QuestionnaireQuestion("6", "6. Does he/she not recognize familiar people?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q6); QuestionnaireQuestions.Add(q6); QuestionnaireQuestion q6_Frequency = new QuestionnaireQuestion("6.1", "How often?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q6_Frequency); q6.Questions.Add(q6_Frequency); QuestionnaireQuestion q7 = new QuestionnaireQuestion("7", "7. Does he/she see or hear things that are not there (hallucinations or illusions)?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q7); QuestionnaireQuestions.Add(q7); QuestionnaireQuestion q7_Frequency = new QuestionnaireQuestion("7.1", "How often?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q7_Frequency); q7.Questions.Add(q7_Frequency); #endregion #region Cluster 2: Aggressiveness QuestionnaireQuestion q8 = new QuestionnaireQuestion("8", "Does he/she become angry?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q8); QuestionnaireQuestions.Add(q8); QuestionnaireQuestion q9 = new QuestionnaireQuestion("9", "Is he/she suspicious or makes accusations?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q9); q8.Questions.Add(q9); QuestionnaireQuestion q10 = new QuestionnaireQuestion("10", "Does he/she strike out or try to hit?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q10); q8.Questions.Add(q10); QuestionnaireQuestion q11 = new QuestionnaireQuestion("11", "Does he/she engage in behaviour potentially dangerous to others or him/herself?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q11); q8.Questions.Add(q11); QuestionnaireQuestion q12 = new QuestionnaireQuestion("12", "Does he/she talk in an aggressive or threatening manner?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q12); q8.Questions.Add(q12); QuestionnaireQuestion q13 = new QuestionnaireQuestion("13", "Is he/she uncooperative when I want him/her to do something?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q13); q8.Questions.Add(q13); #endregion #region Cluster 3: Mood QuestionnaireQuestion q14 = new QuestionnaireQuestion("14", "Does he/she appear sad or depressed?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q14); QuestionnaireQuestions.Add(q14); QuestionnaireQuestion q15 = new QuestionnaireQuestion("15", "Is he/she unable to keep occupied or busy by self?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q15); q14.Questions.Add(q15); QuestionnaireQuestion q16 = new QuestionnaireQuestion("16", "Does he/she spend long periods of time inactive?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q16); q14.Questions.Add(q16); QuestionnaireQuestion q17 = new QuestionnaireQuestion("17", "Does he/she talk little or not at all?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q17); q14.Questions.Add(q17); QuestionnaireQuestion q18 = new QuestionnaireQuestion("18", "Does he/she cry or become tearful or appear emotionally instable?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q18); q14.Questions.Add(q18); QuestionnaireQuestion q19 = new QuestionnaireQuestion("19", "Does he/she eat excessively or not at all?", QuestionnaireQuestionAnswerType.OneAnswer); SetFrequencyAnswer(q19); q14.Questions.Add(q19); #endregion #region Questions 20 - 32 QuestionnaireQuestion q20 = new QuestionnaireQuestion("20", "Is he/she able to solve daily problems?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q20); q14.Questions.Add(q20); QuestionnaireQuestion q21 = new QuestionnaireQuestion("21", "Does he/she take care of his/her personal hygiene?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q21); q14.Questions.Add(q21); QuestionnaireQuestion q22 = new QuestionnaireQuestion("22", "Is he/she involved in social activities?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q22); q14.Questions.Add(q22); QuestionnaireQuestion q23 = new QuestionnaireQuestion("23", "Did he/she fall in the last week?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q23); q14.Questions.Add(q23); QuestionnaireQuestion q24 = new QuestionnaireQuestion("24", "Does he/she have difficulties in the speech?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q24); q14.Questions.Add(q24); QuestionnaireQuestion q25 = new QuestionnaireQuestion("25", "Does he/she appear anxious or agitated?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q25); q14.Questions.Add(q25); QuestionnaireQuestion q26 = new QuestionnaireQuestion("26", "Does he/she appear apathetic?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q26); q14.Questions.Add(q26); QuestionnaireQuestion q27 = new QuestionnaireQuestion("27", "Does he/she sleep?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q27); q14.Questions.Add(q27); QuestionnaireQuestion q28 = new QuestionnaireQuestion("28", "Does he/she have appetite?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q28); q14.Questions.Add(q28); QuestionnaireQuestion q29 = new QuestionnaireQuestion("29", "Did he/she assume therapy every day in the last week?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q29); q14.Questions.Add(q29); QuestionnaireQuestion q30 = new QuestionnaireQuestion("30", " Does he/she report side effects?", QuestionnaireQuestionAnswerType.FreeText); SetOneAnswer(q30); q14.Questions.Add(q30); QuestionnaireQuestion q31 = new QuestionnaireQuestion("31", "Any other problem (specify)?", QuestionnaireQuestionAnswerType.FreeText); SetOneAnswer(q31); q14.Questions.Add(q31); QuestionnaireQuestion q32 = new QuestionnaireQuestion("32", "Has it been necessary to visit Emergency, has the patient needed any non-programmed resource, visits to their doctor or a specialist, has hospital admission or to a Long Term Care Unit or Residential Centre been necessary?", QuestionnaireQuestionAnswerType.OneAnswer); SetOneAnswer(q32); q14.Questions.Add(q32); #endregion QuestionnaireQuestion[] questions = QuestionnaireQuestions.ToArray(); q.Questions = questions; SerializeMe(q, "DailyQuestionnaire.xml"); }
public QuestionnaireSet getSet(string filepath) { if (String.IsNullOrEmpty(filepath)) { throw new ArgumentNullException("filename"); } if (!File.Exists(filepath)) { throw new ArgumentException("Missing XML questionnaire definition file"); } QuestionnaireSet qset = null; List<QuestionnaireQuestion> currentQuestions = null; Questionnaire currentQuestionnaire = null; QuestionnaireQuestion currentQuestion = null; QuestionnaireSection currentSection = null; QuestionnairePage currentPage = null; QuestionnaireSubsection currentSubsection = null; XmlReader reader = new XmlTextReader(filepath); while (reader.Read()) { switch ((int)reader.NodeType) { case (int)XmlNodeType.Element: string name = reader.Name; if (name == "QuestionnaireSet") { qset = new QuestionnaireSet(); qset.Name = reader.GetAttribute("name"); qset.Title = reader.GetAttribute("title"); qset.Description = reader.GetAttribute("description"); qset.Questionnaires = new List<Questionnaire>(); } else if (name == "Introduction") { currentQuestions = new List<QuestionnaireQuestion>(); } else if (name == "Questionnaire") { currentQuestionnaire = new Questionnaire(); currentQuestionnaire.Name = reader.GetAttribute("name"); currentQuestionnaire.Title = reader.GetAttribute("title"); currentQuestionnaire.Description = reader.GetAttribute("description"); currentQuestionnaire.Sections = new List<QuestionnaireSection>(); } else if (name == "Choices") { currentQuestion.Choices = new List<KeyValuePair<string, string>>(); } else if (name == "Choice") { string nbr = reader.GetAttribute("number"); string txt = reader.GetAttribute("text"); currentQuestion.Choices.Add(new KeyValuePair<string, string>(nbr, txt)); } else if (name == "Section") { currentSection = new QuestionnaireSection(); currentSection.Name = reader.GetAttribute("name"); currentSection.Title = reader.GetAttribute("title"); currentSection.Pages = new List<QuestionnairePage>(); } else if (name == "Page") { currentPage = new QuestionnairePage(); currentPage.Number = reader.GetAttribute("number"); currentPage.Sections = new List<QuestionnaireSubsection>(); } else if (name == "Subsection") { currentSubsection = new QuestionnaireSubsection(); currentSubsection.Name = reader.GetAttribute("name"); currentSubsection.Title = reader.GetAttribute("title"); } else if (name == "Questions") { currentQuestions = new List<QuestionnaireQuestion>(); } else if (name == "Question") { currentQuestion = new QuestionnaireQuestion(); currentQuestion.Number = reader.GetAttribute("number"); currentQuestion.Text = reader.GetAttribute("text"); currentQuestion.BranchFromQuestion = reader.GetAttribute("branchFrom"); currentQuestion.BranchCondition = reader.GetAttribute("if"); currentQuestions.Add(currentQuestion); } break; case (int)XmlNodeType.EndElement: name = reader.Name; if (name == "Introduction") { qset.Questions = currentQuestions; currentQuestions = null; } else if (name == "Questionnaire") { qset.Questionnaires.Add(currentQuestionnaire); currentQuestionnaire = null; } else if (name == "Choices") { } else if (name == "Section") { currentQuestionnaire.Sections.Add(currentSection); currentSection = null; } else if (name == "Page") { currentSection.Pages.Add(currentPage); currentPage = null; } else if (name == "Subsection") { currentPage.Sections.Add(currentSubsection); currentSubsection = null; } else if (name == "Questions") { currentSubsection.Questions = currentQuestions; currentQuestions = null; } break; } } return qset; }