예제 #1
0
        //private DueCalculationType GetDueCalculationType(string dsioCalcType)
        //{
        //    DueCalculationType returnVal = DueCalculationType.Unknown;

        //    Dictionary<string, DueCalculationType> lookup = new Dictionary<string, DueCalculationType>();

        //    lookup.Add(DsioChecklistItem.InitialCalcType, DueCalculationType.Initial);
        //    lookup.Add(DsioChecklistItem.WeeksGaCalcType, DueCalculationType.WeeksGa);
        //    lookup.Add(DsioChecklistItem.TrimesterGaCalcType, DueCalculationType.TrimesterGa);
        //    lookup.Add(DsioChecklistItem.WeeksPostpartumCalcType, DueCalculationType.WeeksPostpartum);

        //    if (lookup.ContainsKey(dsioCalcType))
        //        returnVal = lookup[dsioCalcType];

        //    return returnVal;
        //}

        //private ChecklistItemType GetChecklistItemType(string dsioItemType)
        //{
        //    ChecklistItemType returnVal = ChecklistItemType.Unknown;

        //    Dictionary<string, ChecklistItemType> lookup = new Dictionary<string, ChecklistItemType>();

        //    lookup.Add(DsioChecklistItem.MccCallType, ChecklistItemType.MccCall);
        //    lookup.Add(DsioChecklistItem.EdItemType, ChecklistItemType.EducationItem);
        //    lookup.Add(DsioChecklistItem.LabType, ChecklistItemType.Lab);
        //    lookup.Add(DsioChecklistItem.UltrasoundType, ChecklistItemType.Ultrasound);
        //    lookup.Add(DsioChecklistItem.ConsultType, ChecklistItemType.Consult);
        //    lookup.Add(DsioChecklistItem.CdaExchangeType, ChecklistItemType.CdaExchange);
        //    lookup.Add(DsioChecklistItem.VisitType, ChecklistItemType.Visit);
        //    lookup.Add(DsioChecklistItem.OtherType, ChecklistItemType.Other);

        //    if (lookup.ContainsKey(dsioItemType))
        //        returnVal = lookup[dsioItemType];

        //    return returnVal;
        //}

        private PregnancyChecklistItem GetPatientChecklistItem(DsioPatientChecklistItem dsioItem)
        {
            PregnancyChecklistItem returnItem;

            ChecklistItem baseItem = this.GetChecklistItem(dsioItem);

            returnItem = new PregnancyChecklistItem(baseItem);

            returnItem.PatientDfn       = dsioItem.PatientDfn;
            returnItem.PregnancyIen     = dsioItem.PregnancyIen;
            returnItem.ItemDate         = VistaDates.ParseDateString(dsioItem.ItemDate, VistaDates.VistADateFormatSix);
            returnItem.SpecificDueDate  = VistaDates.ParseDateString(dsioItem.SpecificDueDate, VistaDates.VistADateOnlyFormat);
            returnItem.CompletionStatus = dsioItem.CompletionStatus;

            returnItem.CompleteDate = VistaDates.ParseDateString(dsioItem.CompleteDate, VistaDates.VistADateFormatFour);
            if (returnItem.CompleteDate == DateTime.MinValue)
            {
                if (!string.IsNullOrWhiteSpace(dsioItem.CompleteDate))
                {
                    returnItem.CompleteDate = VistaDates.ParseDateString(dsioItem.CompleteDate, VistaDates.VistADateFormatSeven);
                }
            }

            returnItem.CompletionLink = dsioItem.CompletionLink;
            returnItem.CompletedBy    = dsioItem.CompletedBy;
            returnItem.StoredNote     = dsioItem.Note;
            returnItem.User           = dsioItem.User;
            returnItem.InProgress     = (dsioItem.InProgress == "1") ? true : false;

            returnItem.EducationItemIen = dsioItem.EducationIen;

            return(returnItem);
        }
        private BrokerOperationResult CompleteItem(PregnancyChecklistItem item)
        {
            BrokerOperationResult result = new BrokerOperationResult();

            switch (item.ItemType)
            {
            // *** For education items, create the education item, and complete the checklist item ***
            case DsioChecklistItemType.EducationItem:

                result = ChecklistUtility.CompleteEducationItem(
                    this.DashboardRepository,
                    item.PatientDfn,
                    item.EducationItemIen,
                    item.Ien);

                break;

            // *** For all other items, complete the checklist item ***
            default:

                result = this.DashboardRepository.Checklist.CompletePregnancyItem(item);

                break;
            }

            // *** Update the next checklist date ***
            if (result.Success)
            {
                result = ChecklistUtility.UpdateNextDates(this.DashboardRepository, item.PatientDfn, item.PregnancyIen);
            }

            return(result);
        }
예제 #3
0
        private PregnancyChecklistItemsResult GetPregnancyItemsInternal(string dfn, string pregIen, string itemIen, DsioChecklistCompletionStatus status)
        {
            PregnancyChecklistItemsResult result = new PregnancyChecklistItemsResult();

            if (this.broker != null)
            {
                DsioGetMccPatientChecklistCommand command = new DsioGetMccPatientChecklistCommand(broker);

                command.AddCommandArguments(dfn, itemIen, pregIen, status);

                RpcResponse response = command.Execute();

                result.SetResult(response.Status == RpcResponseStatus.Success, response.InformationalMessage);

                if (result.Success)
                {
                    result.TotalResults = command.TotalResults;

                    if (command.PatientItems != null)
                    {
                        foreach (DsioPatientChecklistItem dsioItem in command.PatientItems)
                        {
                            PregnancyChecklistItem item = GetPatientChecklistItem(dsioItem);

                            result.Items.Add(item);
                        }
                    }
                }
            }

            return(result);
        }
        private ActionResult PostCancel(PregnancyChecklistIndex model)
        {
            PregnancyChecklistItemResult opResult = this.DashboardRepository.Checklist.GetPregnancyItem(model.Patient.Dfn, model.SelectedItemIen);

            if (!opResult.Success)
            {
                this.Error(opResult.Message);
            }
            else
            {
                PregnancyChecklistItem item = opResult.Item;

                BrokerOperationResult updateResult = this.DashboardRepository.Checklist.CancelPregnancyItem(item);

                if (!updateResult.Success)
                {
                    this.Error(updateResult.Message);
                }
                else
                {
                    // *** Update the next checklist date ***
                    BrokerOperationResult result = ChecklistUtility.UpdateNextDates(this.DashboardRepository, item.PatientDfn, item.PregnancyIen);

                    if (!result.Success)
                    {
                        this.Error("Error updating next dates: " + result.Message);
                    }
                }
            }

            return(RedirectToAction("PregnancyIndex", new { dfn = model.Patient.Dfn, pregIen = model.Pregnancy.Ien, page = model.Paging.CurrentPage }));
        }
        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);
        }
예제 #6
0
        public BrokerOperationResult CancelPregnancyItem(PregnancyChecklistItem item)
        {
            BrokerOperationResult result = new BrokerOperationResult();

            item.CompletionStatus = DsioChecklistCompletionStatus.NotNeededOrApplicable;
            item.InProgress       = false;

            result = this.SavePregnancyItem(item);

            return(result);
        }
예제 #7
0
        public BrokerOperationResult CompletePregnancyItem(PregnancyChecklistItem item)
        {
            BrokerOperationResult result = new BrokerOperationResult();

            item.CompletionStatus = DsioChecklistCompletionStatus.Complete;
            item.InProgress       = false;
            item.CompleteDate     = DateTime.Now;

            result = this.SavePregnancyItem(item);

            return(result);
        }
        private ActionResult PostComplete(PregnancyChecklistIndex model)
        {
            // *** Update completion status for a pregnancy checklist item ***

            // *** Create default return action ***
            ActionResult returnResult = RedirectToAction("PregnancyIndex", new { dfn = model.Patient.Dfn, pregIen = model.Pregnancy.Ien, page = model.Paging.CurrentPage });

            // *** Get the item ***
            PregnancyChecklistItemResult getResult = this.DashboardRepository.Checklist.GetPregnancyItem(model.Patient.Dfn, model.SelectedItemIen);

            if (!getResult.Success)
            {
                this.Error(getResult.Message);
            }
            else
            {
                // *** Should only be one ***
                PregnancyChecklistItem item = getResult.Item;

                BrokerOperationResult opResult;

                if (item.ItemType == DsioChecklistItemType.MccCall)
                {
                    if (string.IsNullOrWhiteSpace(item.CompletionLink))
                    {
                        returnResult = RedirectToAction("Create", "PatientContact", new { @dfn = model.Patient.Dfn, @callType = item.Link, @checkIen = item.Ien });
                    }
                    else
                    {
                        returnResult = RedirectToAction("Edit", "PatientContact", new { @dfn = model.Patient.Dfn, @noteIen = item.CompletionLink, @checkIen = item.Ien });
                    }
                }
                else
                {
                    opResult = CompleteItem(item);

                    if (opResult.Success)
                    {
                        this.Information(opResult.Message);
                    }
                    else
                    {
                        this.Error(opResult.Message);
                    }
                }
            }

            return(returnResult);
        }
예제 #9
0
        public BrokerOperationResult SetPregnancyItemInProgress(PregnancyChecklistItem item)
        {
            BrokerOperationResult result = new BrokerOperationResult();

            if (item.CompletionStatus == DsioChecklistCompletionStatus.NotComplete)
            {
                item.InProgress = true;

                result = this.SavePregnancyItem(item);
            }
            else
            {
                result.Message = "Item has already been completed";
            }

            return(result);
        }
예제 #10
0
        public IenResult SavePregnancyItem(PregnancyChecklistItem item)
        {
            IenResult result = new IenResult();

            if (this.broker != null)
            {
                DsioSaveMccPatChecklistCommand command = new DsioSaveMccPatChecklistCommand(broker);

                DsioChecklistItem dsioItem = GetDsioChecklistItem(item);

                DsioPatientChecklistItem patItem = new DsioPatientChecklistItem(dsioItem);

                patItem.PatientDfn   = item.PatientDfn;
                patItem.PregnancyIen = item.PregnancyIen;
                if (item.SpecificDueDate != DateTime.MinValue)
                {
                    patItem.SpecificDueDate = Util.GetFileManDate(item.SpecificDueDate);
                }
                patItem.CompletionStatus = item.CompletionStatus;
                patItem.CompleteDate     = Util.GetFileManDate(item.CompleteDate);
                patItem.CompletionLink   = item.CompletionLink;
                patItem.CompletedBy      = item.CompletedBy;
                patItem.Note             = item.StoredNote;
                patItem.InProgress       = (item.InProgress) ? "1" : "0";

                // *** These items not saved - generated internally ***
                //patItem.User = item.User;
                //patItem.ItemDate = Util.GetFileManDate(item.ItemDate);

                command.AddCommandArguments(patItem);

                RpcResponse response = command.Execute();

                result.SetResult(response.Status == RpcResponseStatus.Success, response.InformationalMessage);

                if (result.Success)
                {
                    result.Ien = command.Ien;
                }
            }

            return(result);
        }
        private ActionResult PostInProgress(PregnancyChecklistIndex model)
        {
            PregnancyChecklistItemResult opResult = this.DashboardRepository.Checklist.GetPregnancyItem(model.Patient.Dfn, model.SelectedItemIen);

            if (!opResult.Success)
            {
                this.Error(opResult.Message);
            }
            else
            {
                PregnancyChecklistItem item = opResult.Item;

                BrokerOperationResult updateResult = this.DashboardRepository.Checklist.SetPregnancyItemInProgress(item);

                if (!updateResult.Success)
                {
                    this.Error(updateResult.Message);
                }
            }

            return(RedirectToAction("PregnancyIndex", new { dfn = model.Patient.Dfn, pregIen = model.Pregnancy.Ien, page = model.Paging.CurrentPage }));
        }
예제 #12
0
        public BrokerOperationResult AddDefaultPregnancyItems(string dfn, string pregIen)
        {
            BrokerOperationResult result = new BrokerOperationResult();

            ChecklistItemsResult getResult = this.GetItems("", 1, 1000);

            if (string.IsNullOrWhiteSpace(dfn))
            {
                result.Message = "The patient could not be identified";
            }
            else
            {
                if (string.IsNullOrWhiteSpace(pregIen))
                {
                    result.Message = "The pregnancy could not be identified";
                }
                else
                {
                    if (!getResult.Success)
                    {
                        result.SetResult(getResult.Success, getResult.Message);
                    }
                    else
                    {
                        if (getResult.Items != null)
                        {
                            if (getResult.Items.Count == 0)
                            {
                                result.SetResult(false, "There are no default checklist items to add");
                            }
                            else
                            {
                                foreach (ChecklistItem item in getResult.Items)
                                {
                                    PregnancyChecklistItem patItem = new PregnancyChecklistItem(item);

                                    patItem.PatientDfn       = dfn;
                                    patItem.PregnancyIen     = pregIen;
                                    patItem.CompletionStatus = DsioChecklistCompletionStatus.NotComplete;
                                    patItem.Ien = "";

                                    if (item.DueCalculationType == DsioChecklistCalculationType.Initial)
                                    {
                                        patItem.SpecificDueDate = DateTime.Now;
                                    }

                                    IenResult saveResult = this.SavePregnancyItem(patItem);

                                    if (!saveResult.Success)
                                    {
                                        result.SetResult(saveResult.Success, saveResult.Message);
                                        break;
                                    }
                                    else
                                    {
                                        result.SetResult(saveResult.Success, saveResult.Message);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(result);
        }