示例#1
0
        public static ObjectId GetPatientsPrimaryCareManager(GetPrimaryCareManagerDataRequest request, IRestClient client)
        {
            try
            {
                ObjectId pcmObjectId = ObjectId.Empty;
                // [Route("/{Context}/{Version}/{ContractNumber}/Patient/{PatientId}/PrimaryCareManager", "GET")]
                string url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Patient/{4}/PrimaryCareManager",
                                                                  DDCareMemberUrl,
                                                                  "NG",
                                                                  request.Version,
                                                                  request.ContractNumber,
                                                                  request.PatientId), request.UserId);

                GetCareMemberDataResponse ddResponse = client.Get <GetCareMemberDataResponse>(url);

                if (ddResponse != null && ddResponse.CareMember != null)
                {
                    pcmObjectId = ObjectId.Parse(ddResponse.CareMember.ContactId);
                }
                return(pcmObjectId);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#2
0
        public void GetPrimaryCareManager_Test()
        {
            GetPrimaryCareManagerDataRequest request = new GetPrimaryCareManagerDataRequest {
                PatientId = "5325db1ad6a4850adcbba83a", Context = "NG", ContractNumber = "InHealth001", UserId = "000000000000000000000000", Version = 1.0
            };
            ICareMemberDataManager cm = new StubCareMemberDataManager {
                Factory = new StubCareMemberRepositoryFactory()
            };
            CareMemberData response = cm.GetPrimaryCareManager(request);

            Assert.IsTrue(response.Id == "53271896d6a4850adc518b1f");
        }
示例#3
0
 public CareMemberData GetPrimaryCareManager(GetPrimaryCareManagerDataRequest request)
 {
     try
     {
         CareMemberData        response    = null;
         ICareMemberRepository repo        = Factory.GetRepository(request, RepositoryType.CareMember);
         List <CareMemberData> careMembers = repo.FindByPatientId(request.PatientId) as List <CareMemberData>;
         if (careMembers != null)
         {
             GetLookUpsDataRequest lookupDataRequest = new GetLookUpsDataRequest {
                 Context = request.Context, ContractNumber = request.ContractNumber, Name = LookUpType.CareMemberType.ToString(), UserId = request.UserId, Version = request.Version
             };
             string careManagerLookUpId = getCareManagerLookupId(lookupDataRequest);
             response = careMembers.Find(c => c.Primary == true && c.TypeId == careManagerLookUpId);
         }
         return(response);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#4
0
        public GetPrimaryCareManagerDataResponse Get(GetPrimaryCareManagerDataRequest request)
        {
            GetPrimaryCareManagerDataResponse response = new GetPrimaryCareManagerDataResponse();

            try
            {
                if (string.IsNullOrEmpty(request.UserId))
                {
                    throw new UnauthorizedAccessException("CareMemberDD:Get()::Unauthorized Access");
                }

                response.CareMember = Manager.GetPrimaryCareManager(request);
                response.Version    = request.Version;
            }
            catch (Exception ex)
            {
                CommonFormatter.FormatExceptionResponse(response, base.Response, ex);

                string aseProcessID = ConfigurationManager.AppSettings.Get("ASEProcessID") ?? "0";
                Common.Helper.LogException(int.Parse(aseProcessID), ex);
            }
            return(response);
        }
        public override void Implementation()
        {
            try
            {
                Results = new List <Result>();
                ObjectId           systemObjectId = ObjectId.Parse(Phytel.API.DataDomain.Program.DTO.Constants.SystemContactId);
                IRestClient        client         = new JsonServiceClient();
                IProgramRepository repo           = new ProgramRepositoryFactory().GetRepository(Request, Phytel.API.DataDomain.Program.DTO.RepositoryType.PatientProgram);

                List <MEPatientProgram> programs = (List <MEPatientProgram>)repo.SelectAll();

                foreach (MEPatientProgram mePP in programs)
                {
                    #region NIGHT-832, NIGHT831
                    mePP.AssignedBy = systemObjectId;
                    mePP.AssignedOn = mePP.RecordCreatedOn;
                    #endregion

                    #region NIGHT-833
                    GetPrimaryCareManagerDataRequest careMemberDataRequest = new GetPrimaryCareManagerDataRequest {
                        Context = Request.Context, ContractNumber = Request.ContractNumber, PatientId = mePP.PatientId.ToString(), UserId = Phytel.API.DataDomain.Program.DTO.Constants.SystemContactId, Version = 1
                    };
                    ObjectId primaryCareManagerId = Helper.GetPatientsPrimaryCareManager(careMemberDataRequest, client);
                    if (primaryCareManagerId == ObjectId.Empty)
                    {
                        mePP.AssignedTo = null;
                    }
                    else
                    {
                        mePP.AssignedTo = primaryCareManagerId;
                    }
                    #endregion

                    #region NIGHT-868
                    switch (mePP.State)
                    {
                    case ElementState.NotStarted:
                        mePP.StateUpdatedOn = mePP.AssignedOn;
                        break;

                    case ElementState.InProgress:
                        mePP.StateUpdatedOn = getActionsEarliestCompletedDate(mePP);
                        break;

                    case ElementState.Closed:
                        mePP.StateUpdatedOn = getDisenrollmentActionsCompletedDate(mePP);
                        break;
                    }
                    #endregion

                    mePP.LastUpdatedOn = DateTime.UtcNow;
                    mePP.UpdatedBy     = systemObjectId;
                    MEPatientProgram updatedProgram = mePP;
                    bool             success        = repo.Save(updatedProgram);
                    if (success)
                    {
                        Results.Add(new Result {
                            Message = string.Format("Updated Program Id : '{0}' in PatientProgram collection.", updatedProgram.Id)
                        });
                    }
                }
                Results.Add(new Result {
                    Message = "Total records updated: " + Results.Count
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#6
0
        public override void Implementation()
        {
            try
            {
                Results = new List <Result>();
                ObjectId           systemObjectId = ObjectId.Parse(Phytel.API.DataDomain.Program.DTO.Constants.SystemContactId);
                IRestClient        client         = new JsonServiceClient();
                IProgramRepository repo           = new ProgramRepositoryFactory().GetRepository(Request, Phytel.API.DataDomain.Program.DTO.RepositoryType.PatientProgram);
                IProgramRepository ppResponserepo = new ProgramRepositoryFactory().GetRepository(Request, Phytel.API.DataDomain.Program.DTO.RepositoryType.PatientProgramResponse);

                List <MEPatientProgram> programs = (List <MEPatientProgram>)repo.SelectAll();

                foreach (MEPatientProgram mePP in programs)
                {
                    GetPrimaryCareManagerDataRequest careMemberDataRequest = new GetPrimaryCareManagerDataRequest {
                        Context = Request.Context, ContractNumber = Request.ContractNumber, PatientId = mePP.PatientId.ToString(), UserId = Phytel.API.DataDomain.Program.DTO.Constants.SystemContactId, Version = 1
                    };
                    ObjectId primaryCareManagerId = Helper.GetPatientsPrimaryCareManager(careMemberDataRequest, client);

                    List <Module> modules = mePP.Modules;
                    if (modules != null & modules.Count > 0)
                    {
                        foreach (Module meM in modules)
                        {
                            List <Phytel.API.DataDomain.Program.MongoDB.DTO.Action> actions = meM.Actions;
                            if (actions != null && actions.Count > 0)
                            {
                                foreach (Phytel.API.DataDomain.Program.MongoDB.DTO.Action meA in actions)
                                {
                                    #region NIGHT-876, NIGHT-835
                                    if (meM.Enabled && meA.Enabled)
                                    {
                                        meA.AssignedBy = systemObjectId;
                                        meA.AssignedOn = mePP.RecordCreatedOn;
                                    }

                                    #endregion

                                    #region NIGHT-877
                                    if (primaryCareManagerId == ObjectId.Empty)
                                    {
                                        meA.AssignedTo = null;
                                    }
                                    else
                                    {
                                        meA.AssignedTo = primaryCareManagerId;
                                    }
                                    #endregion

                                    #region NIGHT-952
                                    switch (meA.State)
                                    {
                                    case ElementState.NotStarted:
                                        meA.StateUpdatedOn = mePP.RecordCreatedOn;
                                        break;

                                    case ElementState.InProgress:
                                        meA.StateUpdatedOn = getStepResponsesEarliestUpdatedDate(meA, ppResponserepo);
                                        break;

                                    case ElementState.Completed:
                                        meA.StateUpdatedOn = meA.DateCompleted;
                                        break;
                                    }
                                    #endregion
                                }
                            }
                        }
                        mePP.LastUpdatedOn = DateTime.UtcNow;
                        mePP.UpdatedBy     = systemObjectId;
                        MEPatientProgram updatedProgram = mePP;
                        bool             success        = repo.Save(updatedProgram);
                        if (success)
                        {
                            Results.Add(new Result {
                                Message = string.Format("Updated Program Id : '{0}' in PatientProgram collection.", updatedProgram.Id)
                            });
                        }
                    }
                }
                Results.Add(new Result {
                    Message = "Total records updated: " + Results.Count
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }