Example #1
0
        public DTO.Program FindByName(string entityName)
        {
            try
            {
                DTO.Program result = null;

                using (ProgramMongoContext ctx = new ProgramMongoContext(_dbName))
                {
                    var findcp = MB.Query <MEProgram> .EQ(b => b.Name, entityName);

                    MEProgram cp = ctx.Programs.Collection.Find(findcp).FirstOrDefault();

                    if (cp != null)
                    {
                        result = new DTO.Program
                        {
                            ProgramID = cp.Id.ToString()
                        };
                    }
                    else
                    {
                        throw new ArgumentException("ProgramName is not valid or is missing from the records.");
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                throw new Exception("DD:PatientProgramRepository:FindByName()::" + ex.Message, ex.InnerException);
            }
        }
Example #2
0
 public object GetLimitedProgramFields(string objectId)
 {
     try
     {
         MEProgram cp = null;
         using (ProgramMongoContext ctx = new ProgramMongoContext(_dbName))
         {
             var query = MB.Query.And(
                 MB.Query <MEProgram> .EQ(b => b.Id, ObjectId.Parse(objectId)),
                 MB.Query <MEProgram> .EQ(b => b.DeleteFlag, false)
                 );
             cp = ctx.Programs.Collection.Find(query).SetFields(
                 MEProgram.AuthoredByProperty,
                 MEProgram.TemplateNameProperty,
                 MEProgram.TemplateVersionProperty,
                 MEProgram.ProgramVersionProperty,
                 MEProgram.ProgramVersionUpdatedOnProperty,
                 MEProgram.ObjectivesInfoProperty
                 ).FirstOrDefault();
         }
         return(cp);
     }
     catch (Exception ex)
     {
         throw new Exception("DD:Program:GetLimitedProgramFields()::" + ex.Message, ex.InnerException);
     }
 }
Example #3
0
        public List <Module> GetProgramModules(ObjectId progId)
        {
            try
            {
                List <Module> mods = null;

                using (ProgramMongoContext ctx = new ProgramMongoContext(_dbName))
                {
                    var findcp = MB.Query <MEProgram> .EQ(b => b.Id, progId);

                    MEProgram cp = ctx.Programs.Collection.Find(findcp).FirstOrDefault();

                    if (cp != null)
                    {
                        mods = cp.Modules;
                    }
                    else
                    {
                        throw new ArgumentException("ProgramId is not valid or is missing from the records.");
                    }
                }
                return(mods);
            }
            catch (Exception ex)
            {
                throw new Exception("DD:PatientProgramRepository:GetProgramModules()::" + ex.Message, ex.InnerException);
            }
        }
            public void Get_With_Two_Objectives_Test()
            {
                StubProgramRepositoryFactory  factory = new StubProgramRepositoryFactory();
                GetPatientProgramsDataRequest request = new GetPatientProgramsDataRequest
                {
                    ContractNumber = "InHealth001",
                    Context        = "NG",
                    UserId         = "000000000000000000000000"
                };

                IProgramRepository repo = factory.GetRepository(request, RepositoryType.Program);

                MEProgram mep = repo.GetLimitedProgramFields("000000000000000000000000") as MEProgram;

                Assert.AreEqual(2, mep.Objectives.Count);
            }
            public void Get_With_Objectives_Test()
            {
                string ctrl = "123456789011111111112223";
                StubProgramRepositoryFactory  factory = new StubProgramRepositoryFactory();
                GetPatientProgramsDataRequest request = new GetPatientProgramsDataRequest
                {
                    ContractNumber = "InHealth001",
                    Context        = "NG",
                    UserId         = "000000000000000000000000"
                };

                IProgramRepository repo = factory.GetRepository(request, RepositoryType.Program);

                MEProgram mep = repo.GetLimitedProgramFields("000000000000000000000000") as MEProgram;

                Assert.IsNotNull(mep.Objectives);
            }
Example #6
0
        public MEProgram GetLimitedProgramDetails(string objectId, Interface.IDataDomainRequest request)
        {
            MEProgram mep = new MEProgram(request.UserId)
            {
                AuthoredBy              = "123456789012345678901234",
                TemplateName            = "template stub name",
                TemplateVersion         = "1.0",
                ProgramVersion          = "1.0",
                ProgramVersionUpdatedOn = System.DateTime.UtcNow,
                Objectives              = new List <Objective> {
                    new Objective {
                        Id = ObjectId.GenerateNewId(), Status = Status.Active, Units = "lbs", Value = "134"
                    }
                }
            };

            return(mep);
        }
Example #7
0
        public object FindByID(string entityID)
        {
            try
            {
                MEProgram cp = null;
                using (ProgramMongoContext ctx = new ProgramMongoContext(_dbName))
                {
                    var findcp = MB.Query <MEProgram> .EQ(b => b.Id, ObjectId.Parse(entityID));

                    cp = ctx.Programs.Collection.Find(findcp).FirstOrDefault();
                }
                return(cp);
            }
            catch (Exception ex)
            {
                throw new Exception("DD:Program:FindByID()::" + ex.Message, ex.InnerException);
            }
        }
        public object GetLimitedProgramFields(string objectId)
        {
            MEProgram mep = new MEProgram(this.userId)
            {
                AuthoredBy              = "123456789012345678901234",
                TemplateName            = "template stub name",
                TemplateVersion         = "1.0",
                ProgramVersion          = "1.0",
                ProgramVersionUpdatedOn = System.DateTime.UtcNow,
                Objectives              = new List <Objective> {
                    new Objective {
                        Id = ObjectId.GenerateNewId(), Status = Status.Active, Units = "lbs", Value = "134"
                    },
                    new Objective {
                        Id = ObjectId.GenerateNewId(), Status = Status.Inactive, Units = "oz", Value = "55"
                    }
                }
            };

            return(mep);
        }
Example #9
0
 public MEPatientProgram CreateInitialMEPatientProgram(DTO.PutProgramToPatientRequest request, MEProgram cp, List <global::MongoDB.Bson.ObjectId> sil)
 {
     throw new NotImplementedException();
 }
Example #10
0
 public string GetCareManagerValueByRule(DTO.PutProgramToPatientRequest request, MEProgram cp)
 {
     throw new NotImplementedException();
 }
Example #11
0
 public void HydrateResponsesInProgram(MEProgram prog, List <MEResponse> responseList, string usrId)
 {
     throw new NotImplementedException();
 }
Example #12
0
 public List <MEResponse> GetProgramResponseslist(List <global::MongoDB.Bson.ObjectId> idl, MEProgram cp, DTO.PutProgramToPatientRequest request)
 {
     throw new NotImplementedException();
 }
Example #13
0
        public PutProgramToPatientResponse PutPatientToProgram(PutProgramToPatientRequest request)
        {
            try
            {
                PutProgramToPatientResponse response = new PutProgramToPatientResponse();
                response.Outcome = new Phytel.API.DataDomain.Program.DTO.Outcome();

                #region validation calls
                if (!IsValidPatientId(request))
                {
                    return(FormatExceptionResponse(response, "Patient does not exist or has an invalid id.", "500"));
                }

                if (!IsValidContractProgramId(request))
                {
                    return(FormatExceptionResponse(response, "ContractProgram does not exist or has an invalid identifier.", "500"));
                }

                if (!IsContractProgramAssignable(request))
                {
                    return(FormatExceptionResponse(response, "ContractProgram is not currently active.", "500"));
                }
                #endregion

                /**********************************/
                List <MEPatientProgram> pp = DTOUtility.FindExistingpatientProgram(request);

                if (!DTOUtility.CanInsertPatientProgram(pp))
                {
                    response.Outcome.Result = 0;
                    response.Outcome.Reason = pp[0].Name + " is already assigned or reassignment is not allowed";
                }
                else
                {
                    MEProgram cp = DTOUtility.GetProgramForDeepCopy(request);

                    var stepIdList = new List <ObjectId>();
                    List <MEResponse> responseList = DTOUtility.GetProgramResponseslist(stepIdList, cp, request);
                    DTOUtils.HydrateResponsesInProgram(cp, responseList, request.UserId);
                    MEPatientProgram nmePp = DTOUtility.CreateInitialMEPatientProgram(request, cp, stepIdList);
                    DTOUtility.InitializePatientProgramAssignment(request, nmePp);
                    List <MEPatientProgramResponse> pprs = DTOUtils.ExtractMEPatientProgramResponses(nmePp, request.ContractNumber, request.UserId);
                    ProgramInfo pi = DTOUtility.SaveNewPatientProgram(request, nmePp);

                    if (pi != null)
                    {
                        response.program = pi;
                        DTOUtility.SavePatientProgramResponses(pprs, request);
                        DTOUtility.InitializeProgramAttributes(request, response);
                    }

                    response.Outcome.Result = 1;
                    response.Outcome.Reason = "Successfully assigned this program for the individual";
                }

                return(response);
            }
            catch (Exception ex)
            {
                throw new Exception("DD:DataProgramManager:PutPatientToProgram()::" + ex.Message, ex.InnerException);
            }
        }
Example #14
0
        public GetProgramDetailsSummaryResponse GetPatientProgramDetailsById(GetProgramDetailsSummaryRequest request)
        {
            try
            {
                GetProgramDetailsSummaryResponse response = new GetProgramDetailsSummaryResponse();

                IProgramRepository repo = Factory.GetRepository(request, RepositoryType.PatientProgram);
                MEPatientProgram   mepp = repo.FindByID(request.ProgramId) as MEPatientProgram;

                IProgramRepository respRepo = Factory.GetRepository(request, RepositoryType.PatientProgramResponse);
                var stepIds = mepp.Modules.SelectMany(m => m.Actions.SelectMany(a => a.Steps.Select(s => s.Id))).ToList();
                DTOUtility.ResponsesBag = respRepo.Find(stepIds).Cast <MEPatientProgramResponse>().ToList();

                response.Program = new ProgramDetail
                {
                    Id     = mepp.Id.ToString(),
                    Client = mepp.Client != null?mepp.Client.ToString() : null,
                                 ContractProgramId = mepp.ContractProgramId.ToString(),
                                 Description       = mepp.Description,
                                 Name      = mepp.Name,
                                 PatientId = mepp.PatientId.ToString(),
                                 //ProgramState = (int)mepp.ProgramState, depricated - Use Element state instead.
                                 ShortName                          = mepp.ShortName,
                                 StartDate                          = mepp.StartDate,
                                 EndDate                            = mepp.EndDate,
                                 AttrStartDate                      = mepp.AttributeStartDate,
                                 AttrEndDate                        = mepp.AttributeEndDate,
                                 Status                             = (int)mepp.Status,
                                 Version                            = mepp.Version,
                                 Completed                          = mepp.Completed,
                                 Enabled                            = mepp.Enabled,
                                 Next                               = mepp.Next != null?mepp.Next.ToString() : string.Empty,
                                                           Order    = mepp.Order,
                                                           Previous = mepp.Previous != null?mepp.Previous.ToString() : string.Empty,
                                                                          SourceId                = mepp.SourceId.ToString(),
                                                                          AssignBy                = mepp.AssignedBy.ToString(),
                                                                          AssignDate              = mepp.AssignedOn,
                                                                          AssignTo                = mepp.AssignedTo.ToString(),
                                                                          ElementState            = (int)mepp.State,
                                                                          StateUpdatedOn          = mepp.StateUpdatedOn,
                                                                          CompletedBy             = mepp.CompletedBy,
                                                                          DateCompleted           = mepp.DateCompleted,
                                                                          EligibilityEndDate      = mepp.EligibilityEndDate,
                                                                          EligibilityStartDate    = mepp.EligibilityStartDate,
                                                                          EligibilityRequirements = mepp.EligibilityRequirements,
                                                                          AuthoredBy              = mepp.AuthoredBy,
                                                                          //ObjectivesData = DTOUtils.GetObjectives(mepp.Objectives),
                                                                          SpawnElement = DTOUtility.GetSpawnElement(mepp),
                                                                          Modules      = DTOUtility.GetModules(mepp.Modules, mepp.ContractProgramId.ToString(), request)
                };

                // load program attributes
                ProgramAttributeData pad = GetProgramAttributes(mepp.Id.ToString(), request);
                response.Program.Attributes = pad;

                // Get the fields from Program collection.
                MEProgram meProgram = DTOUtility.GetLimitedProgramDetails(mepp.SourceId.ToString(), request);

                if (meProgram != null)
                {
                    response.Program.AuthoredBy              = meProgram.AuthoredBy;
                    response.Program.TemplateName            = meProgram.TemplateName;
                    response.Program.TemplateVersion         = meProgram.TemplateVersion;
                    response.Program.ProgramVersion          = meProgram.ProgramVersion;
                    response.Program.ProgramVersionUpdatedOn = meProgram.ProgramVersionUpdatedOn;
                    response.Program.ObjectivesData          = DTOUtility.GetObjectivesData(meProgram.Objectives);
                }
                return(response);
            }
            catch (Exception ex)
            {
                throw new Exception("DD:DataProgramManager:GetPatientProgramDetailsById()::" + ex.Message, ex.InnerException);
            }
            finally
            {
                DTOUtility.ResponsesBag = null;
            }
        }