public static PregnancyChecklistItemsResult GetSortedPregnancyChecklist(IDashboardRepository repo, string patientDfn, PregnancyDetails pregnancy, DsioChecklistCompletionStatus status) { PregnancyChecklistItemsResult result = new PregnancyChecklistItemsResult(); PregnancyChecklistItemsResult chkResult = repo.Checklist.GetPregnancyItems(patientDfn, pregnancy.Ien, "", status); result.SetResult(chkResult.Success, chkResult.Message); if (result.Success) { PregnancyChecklistItemList tempList = new PregnancyChecklistItemList(); tempList.AddRange(chkResult.Items); tempList.AddPregnancyDates(pregnancy.EDD, pregnancy.EndDate); tempList.Sort(delegate(PregnancyChecklistItem x, PregnancyChecklistItem y) { return(x.DueDate.CompareTo(y.DueDate)); }); result.Items = tempList; } return(result); }
public ActionResult PregnancyIndex(string dfn, string pregIen, string page) { PregnancyChecklistIndex model = new PregnancyChecklistIndex(); model.Patient = this.CurrentPatient; // TODO: In future add ability to view checklist for a specific pregnancy passed in as parameter // Add a pregnancy selection and display //PregnancyDetails preg = PregnancyUtilities.GetWorkingPregnancy(this.DashboardRepository, dfn, pregIen); PregnancyDetails preg = PregnancyUtilities.GetWorkingPregnancy(this.DashboardRepository, dfn, ""); if (preg == null) { model.NoPregnancies = true; } else { if ((preg.EDD == DateTime.MinValue) && (preg.EndDate == DateTime.MinValue)) { model.NoPregnancyDate = true; } model.Pregnancy = preg; //PregnancyChecklistItemsResult result = this.DashboardRepository.Checklist.GetPregnancyItems(dfn, preg.Ien, ""); //if (!result.Success) // this.Error(result.Message); //else //{ // model.Items = new PregnancyChecklistItemList(); // model.Items.AddRange(result.Items); // model.Items.AddPregnancyDates(preg.EDD, preg.EndDate); // model.Items.Sort(delegate(PregnancyChecklistItem x, PregnancyChecklistItem y) // { // return x.DueDate.CompareTo(y.DueDate); // }); //} PregnancyChecklistItemsResult result = ChecklistUtility.GetSortedPregnancyChecklist(this.DashboardRepository, dfn, preg, DsioChecklistCompletionStatus.Unknown); if (!result.Success) { this.Error(result.Message); } else { model.Items.AddRange(result.Items); } } // TODO: Paging... return(View(model)); }
public static BrokerOperationResult UpdateNextDates(IDashboardRepository repo, string patientDfn, string pregnancyIen) { BrokerOperationResult result = new BrokerOperationResult(); // *** First get the pregnancy *** PregnancyListResult pregResult = repo.Pregnancy.GetPregnancies(patientDfn, pregnancyIen); result.SetResult(pregResult.Success, pregResult.Message); if (pregResult.Success) { if (pregResult.Pregnancies != null) { if (pregResult.Pregnancies.Count > 0) { // *** Get the checklist items *** PregnancyChecklistItemsResult getResult = GetSortedPregnancyChecklist(repo, patientDfn, pregResult.Pregnancies[0], DsioChecklistCompletionStatus.NotComplete); result.SetResult(getResult.Success, getResult.Message); if (result.Success) { if (getResult.Items != null) { if (getResult.Items.Count > 0) { // *** Find the next due *** DateTime nextChecklistDue = getResult.Items[0].DueDate; // *** Save next checklist observation *** result = repo.Observations.UpdateNextChecklistDue(patientDfn, nextChecklistDue); if (result.Success) { // *** Find next contact due *** DateTime nextContactDue = DateTime.MinValue; foreach (PregnancyChecklistItem item in getResult.Items) { if (item.ItemType == DsioChecklistItemType.MccCall) { nextContactDue = item.DueDate; break; } } result = repo.Observations.UpdateNextContactDue(patientDfn, nextContactDue); } } } } } } } return(result); }
public static BrokerOperationResult CompleteEducationItem(IDashboardRepository repo, string patientDfn, string educationItemIen, string checklistItemIen) { BrokerOperationResult returnResult = new BrokerOperationResult(); // *** Two-step process: // *** (1) Create completed patient education item // *** (2) Complete the checklist item PatientEducationItem patItem = new PatientEducationItem() { PatientDfn = patientDfn, EducationItemIen = educationItemIen, CompletedOn = DateTime.Now }; IenResult saveResult = repo.Education.SavePatientItem(patItem); returnResult.SetResult(saveResult.Success, saveResult.Message); if (saveResult.Success) { PregnancyChecklistItemsResult result = repo.Checklist.GetPregnancyItems(patientDfn, "", checklistItemIen); returnResult.SetResult(result.Success, result.Message); if (result.Success) { if (result.Items != null) { if (result.Items.Count > 0) { PregnancyChecklistItem checkItem = result.Items[0]; checkItem.CompletionStatus = DsioChecklistCompletionStatus.Complete; checkItem.CompletionLink = saveResult.Ien; IenResult ienResult = repo.Checklist.SavePregnancyItem(checkItem); returnResult.SetResult(ienResult.Success, ienResult.Message); if (returnResult.Success) { returnResult = UpdateNextDates(repo, patientDfn, checkItem.PregnancyIen); if (returnResult.Success) { returnResult.Message = "Education item completed"; } } } } } } return(returnResult); }
//[HttpGet] //public ActionResult Timeline(string patientId) //{ // TrackedPatient model = this.DashboardRepository.Patients.Get("1234"); // return View(model); //} private void UpdateChecklistSummary(PatientSummary model, string dfn, PregnancyResult pregResult) { const int itemCount = 4; PregnancyChecklistItemsResult checklistResult = this.DashboardRepository.Checklist.GetPregnancyItems(dfn, pregResult.Pregnancy.Ien, "", DsioChecklistCompletionStatus.NotComplete); if (checklistResult.Success) { if (checklistResult.Items != null) { PregnancyChecklistItemList tempList = new PregnancyChecklistItemList(); tempList.AddRange(checklistResult.Items); tempList.AddPregnancyDates(pregResult.Pregnancy.EDD, pregResult.Pregnancy.EndDate); tempList.Sort(delegate(PregnancyChecklistItem x, PregnancyChecklistItem y) { return(x.DueDate.CompareTo(y.DueDate)); }); int tempCount = 0; foreach (PregnancyChecklistItem tempItem in tempList) { if (model.PregnancyChecklistItems == null) { model.PregnancyChecklistItems = new PregnancyChecklistItemList(); } model.PregnancyChecklistItems.Add(tempItem); tempCount += 1; if (tempCount == itemCount) { break; } } if (tempList.Count > itemCount) { model.MoreChecklistItems = string.Format("{0} more", tempList.Count - itemCount); } model.ChecklistLink = Url.Action("PregnancyIndex", "Checklist", new { dfn = model.Patient.Dfn, pregIen = pregResult.Pregnancy.Ien, page = "1" }); } } }
public ActionResult PregnancyAddEdit(string dfn, string pregIen, string itemIen) { PregnancyChecklistAddEdit model = new PregnancyChecklistAddEdit(); model.Patient = this.CurrentPatient; if (!string.IsNullOrWhiteSpace(itemIen)) { PregnancyChecklistItemsResult result = this.DashboardRepository.Checklist.GetPregnancyItems(dfn, "", itemIen); if (!result.Success) { this.Error(result.Message); } else { if (result.Items != null) { if (result.Items.Count > 0) { model.Item = result.Items[0]; model.GetDueVals(); //if (model.Item.ItemType == DsioChecklistItemType.EducationItem) // model.EducationItemLink = model.Item.Link; } } } } else { model.Item.PatientDfn = dfn; model.Item.PregnancyIen = pregIen; model.Item.CompletionStatus = DsioChecklistCompletionStatus.NotComplete; } model.EducationItemSelection = this.DashboardRepository.Education.GetItemSelection(); return(View(model)); }
private void GetMergedList(PatientEducationIndex model, PregnancyDetails preg) { PregnancyChecklistItemsResult result = this.DashboardRepository.Checklist.GetPregnancyItems(model.Patient.Dfn, preg.Ien, ""); if (!result.Success) { this.Error(result.Message); } else { // *** Create view items *** if (result.Items != null) { foreach (PregnancyChecklistItem item in result.Items) { if (item.ItemType == DsioChecklistItemType.EducationItem) { PatientEducationChecklistItem newItem = new PatientEducationChecklistItem(); newItem.PregnancyChecklistItem = item; model.ItemList.Add(newItem); } } } // *** Get patient education items *** PatientEducationItemsResult edResult = this.DashboardRepository.Education.GetPatientItems( model.Patient.Dfn, "", DateTime.MinValue, DateTime.MinValue, EducationItemType.Unknown, 1, 1000 ); if (!edResult.Success) { this.Error(edResult.Message); } else { Dictionary <string, PatientEducationItem> patEdItems = new Dictionary <string, PatientEducationItem>(); // *** Place patient education items in dictionary for lookup *** if (edResult.Items != null) { foreach (PatientEducationItem patEdItem in edResult.Items) { patEdItems.Add(patEdItem.Ien, patEdItem); } } // *** Go through checklist to find links to patient education *** foreach (PatientEducationChecklistItem finalItem in model.ItemList) { if (finalItem.PregnancyChecklistItem != null) { if (finalItem.PregnancyChecklistItem.CompletionStatus == DsioChecklistCompletionStatus.Complete) { if (!string.IsNullOrWhiteSpace(finalItem.PregnancyChecklistItem.CompletionLink)) { if (patEdItems.ContainsKey(finalItem.PregnancyChecklistItem.CompletionLink)) { // *** If found add to final *** finalItem.PatientEducationItem = patEdItems[finalItem.PregnancyChecklistItem.CompletionLink]; // *** Remove since already added *** patEdItems.Remove(finalItem.PregnancyChecklistItem.CompletionLink); } } } } } // *** Now that we've added all items that are linked, add remainder *** foreach (PatientEducationItem patEdItem in patEdItems.Values) { PatientEducationChecklistItem newItem = new PatientEducationChecklistItem(); newItem.PatientEducationItem = patEdItem; model.ItemList.Add(newItem); } // *** Finally get education items linked by a checklist but incomplete *** foreach (PatientEducationChecklistItem finalItem in model.ItemList) { if (finalItem.PregnancyChecklistItem != null) { if (finalItem.PregnancyChecklistItem.CompletionStatus != DsioChecklistCompletionStatus.Complete) { if (!string.IsNullOrWhiteSpace(finalItem.Link)) { EducationItemsResult edItemsResult = this.DashboardRepository.Education.GetEducationItems(finalItem.Link, "", EducationItemType.Unknown, 0, 0, EducationItemSort.Type); if (edItemsResult.Success) { if (edItemsResult.EducationItems != null) { if (edItemsResult.EducationItems.Count > 0) { finalItem.EducationItem = edItemsResult.EducationItems[0]; } } } } } } } } model.ItemList.AddPregnancyDates(preg.EDD, preg.EndDate); model.ItemList.Sort(delegate(PatientEducationChecklistItem x, PatientEducationChecklistItem y) { return(x.CompareDate.CompareTo(y.CompareDate)); }); } }