Exemplo n.º 1
0
        public SaveCareTeamDataResponse SaveCareTeam(SaveCareTeamRequest request)
        {
            SaveCareTeamDataResponse response = null;

            try
            {
                IRestClient client = new JsonServiceClient();
                // '/{Context}/{Version}/{ContractNumber}/Contacts/{ContactId}/CareTeams
                var url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Contacts/{4}/CareTeams",
                                                               DDContactServiceUrl,
                                                               "NG",
                                                               request.Version,
                                                               request.ContractNumber, request.ContactId), request.UserId);
                response =
                    client.Post <SaveCareTeamDataResponse>(url, new SaveCareTeamDataRequest
                {
                    CareTeamData   = Mapper.Map <CareTeamData>(request.CareTeam),
                    Version        = request.Version,
                    ContactId      = request.ContactId,
                    ContractNumber = request.ContractNumber,
                    Context        = "NG"
                } as object);
            }
            catch (WebServiceException wse)
            {
                throw new WebServiceException("AD:SaveCareTeam()::" + wse.Message, wse.InnerException);
            }

            return(response);
        }
Exemplo n.º 2
0
        public void ContactManager_SaveCareTeam_Contact_Is_Not_IsPatient_Should_Throw()
        {
            //Arrange
            var contactManager = new ContactManager();
            var members        = new List <Member>
            {
                new Member {
                    ContactId = "cid", StatusId = 1, RoleId = "rid"
                }
            };

            var stubRequest = new SaveCareTeamRequest {
                ContactId = "cid", CareTeam = new CareTeam()
                {
                    Members = members
                }
            };
            var mockContactEndPointUtil = new Mock <IContactEndpointUtil>();

            mockContactEndPointUtil.Setup(mceu => mceu.SaveCareTeam(It.IsAny <SaveCareTeamRequest>()))
            .Returns(new SaveCareTeamDataResponse());

            mockContactEndPointUtil.Setup(mceu => mceu.GetContactByContactId(It.IsAny <AppDomain.NG.DTO.GetContactByContactIdRequest>()))
            .Returns(new ContactData {
                PatientId = ""
            });

            var mockCohortRuleUtil = new Mock <ICohortRuleUtil>();

            mockCohortRuleUtil.Setup(mcru => mcru.HasMultipleActiveCorePCM(It.IsAny <AppDomain.NG.DTO.CareTeam>()))
            .Returns(false);
            mockCohortRuleUtil.Setup(mcru => mcru.HasMultipleActiveCorePCP(It.IsAny <AppDomain.NG.DTO.CareTeam>()))
            .Returns(false);

            var mockCohortRuleProcessor = new Mock <ICohortRulesProcessor>();

            contactManager.EndpointUtil   = mockContactEndPointUtil.Object;
            contactManager.CohortRuleUtil = mockCohortRuleUtil.Object;
            contactManager.CohortRules    = mockCohortRuleProcessor.Object;


            //Act
            try
            {
                var response = contactManager.SaveCareTeam(stubRequest);
            }
            catch (Exception ex) {
                Assert.AreEqual(string.Format("Contact with id: {0} is not a patient.", "cid"), ex.Message);
            }


            //Assert.
            mockContactEndPointUtil.Verify(mr => mr.SaveCareTeam(It.IsAny <SaveCareTeamRequest>()), Times.Never);
        }
Exemplo n.º 3
0
        public void ContactManager_SaveCareTeam_Success()
        {
            //Arrange
            var contactManager = new ContactManager();
            var members        = new List <Member>
            {
                new Member {
                    ContactId = "cid", StatusId = 1, RoleId = "rid"
                }
            };

            var stubRequest = new SaveCareTeamRequest {
                ContactId = "cid", CareTeam = new CareTeam()
                {
                    Members = members
                }
            };
            var mockContactEndPointUtil = new Mock <IContactEndpointUtil>();

            mockContactEndPointUtil.Setup(mceu => mceu.SaveCareTeam(It.IsAny <SaveCareTeamRequest>()))
            .Returns(new SaveCareTeamDataResponse());

            mockContactEndPointUtil.Setup(mceu => mceu.GetContactByContactId(It.IsAny <AppDomain.NG.DTO.GetContactByContactIdRequest>()))
            .Returns(new ContactData {
                PatientId = "pid"
            });

            mockContactEndPointUtil.Setup(mceu => mceu.GetContactsByContactIds(It.IsAny <List <string> >(), It.IsAny <double>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns(new List <ContactData>());

            var mockCohortRuleUtil = new Mock <ICohortRuleUtil>();

            mockCohortRuleUtil.Setup(mcru => mcru.HasMultipleActiveCorePCM(It.IsAny <AppDomain.NG.DTO.CareTeam>()))
            .Returns(false);
            mockCohortRuleUtil.Setup(mcru => mcru.HasMultipleActiveCorePCP(It.IsAny <AppDomain.NG.DTO.CareTeam>()))
            .Returns(false);

            var mockCohortRuleProcessor = new Mock <ICohortRulesProcessor>();

            contactManager.EndpointUtil   = mockContactEndPointUtil.Object;
            contactManager.CohortRuleUtil = mockCohortRuleUtil.Object;
            contactManager.CohortRules    = mockCohortRuleProcessor.Object;


            //Act
            var response = contactManager.SaveCareTeam(stubRequest);

            //Assert.
            Assert.IsNotNull(response);
            mockContactEndPointUtil.Verify(mr => mr.SaveCareTeam(It.IsAny <SaveCareTeamRequest>()), Times.Once);
        }
Exemplo n.º 4
0
        public void ContactManager_SaveCareTeam_InCompleteMember_EmptyStatusId_Should_Throw()
        {
            var contactManager = new ContactManager();
            var members        = new List <Member>
            {
                new Member {
                    ContactId = "cid"
                }
            };

            var stubRequest = new SaveCareTeamRequest {
                ContactId = "cid", CareTeam = new CareTeam()
                {
                    Members = members
                }
            };

            contactManager.SaveCareTeam(stubRequest);
        }
Exemplo n.º 5
0
        public SaveCareTeamResponse Post(SaveCareTeamRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            var response = new SaveCareTeamResponse();
            ValidateTokenResponse result = null;

            try
            {
                request.Token = base.Request.Headers["Token"] as string;
                result        = Security.IsUserValidated(request.Version, request.Token, request.ContractNumber);
                if (result.UserId.Trim() != string.Empty)
                {
                    request.UserId = result.UserId;
                    response       = ContactManager.SaveCareTeam(request);
                }
                else
                {
                    throw new UnauthorizedAccessException();
                }
            }
            catch (Exception ex)
            {
                CommonFormatter.FormatExceptionResponse(response, base.Response, ex);
                if ((ex is WebServiceException) == false)
                {
                    ContactManager.LogException(ex);
                }
            }
            finally
            {
                if (result != null)
                {
                    AuditHelper.LogAuditData(request, result.SQLUserId, null, System.Web.HttpContext.Current.Request, request.GetType().Name);
                }
            }
            return(response);
        }
Exemplo n.º 6
0
        public SaveCareTeamResponse SaveCareTeam(SaveCareTeamRequest request)
        {
            var response = new SaveCareTeamResponse();

            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            if (request.CareTeam == null)
            {
                throw new ArgumentNullException("request.CareTeam");
            }

            //if(request.CareTeam.Members.IsNullOrEmpty())
            //     throw new ApplicationException(string.Format("CareTeam should have atleast one or more members."));

            if (string.IsNullOrEmpty(request.ContactId))
            {
                throw new ArgumentException(string.Format("ContactId is null or empty"), "request");
            }

            foreach (var member in request.CareTeam.Members)
            {
                ValidateCareTeamMemberFields(member);

                if (!string.IsNullOrEmpty(member.RoleId) && !string.IsNullOrEmpty(member.CustomRoleName))
                {
                    member.RoleId = null;
                }
            }

            //TODO: Refactor.
            var contact = GetContactByContactId(new GetContactByContactIdRequest
            {
                ContractNumber = request.ContractNumber,
                ContactId      = request.ContactId,
                UserId         = request.UserId,
                Version        = request.Version
            });

            if (contact == null)
            {
                throw new ApplicationException(string.Format("Contact with id: {0} does not exist.", request.ContactId));
            }

            if (!contact.IsPatient)
            {
                throw new ApplicationException(string.Format("Contact with id: {0} is not a patient.", request.ContactId));
            }


            if (CohortRuleUtil.HasMultipleActiveCorePCM(request.CareTeam))
            {
                throw new ApplicationException("The Care team cannot have multiple Active, Core PCMs");
            }

            if (CohortRuleUtil.HasMultipleActiveCorePCP(request.CareTeam))
            {
                throw new ApplicationException("The Care team cannot have multiple Active, Core PCPs");
            }

            try
            {
                var domainResponse = EndpointUtil.SaveCareTeam(request);

                if (domainResponse != null)
                {
                    response.CareTeam = Mapper.Map <CareTeam>(domainResponse.CareTeamData);


                    #region Populate Contact object for each care team member.
                    if (response.CareTeam != null)
                    {
                        if (!response.CareTeam.Members.IsNullOrEmpty())
                        {
                            var contactIds   = response.CareTeam.Members.Select(a => a.ContactId).ToList();
                            var contactsData = EndpointUtil.GetContactsByContactIds(contactIds, request.Version, request.ContractNumber, request.UserId);
                            if (contactsData != null)
                            {
                                foreach (var member in response.CareTeam.Members)
                                {
                                    var data = contactsData.FirstOrDefault(c => c.Id == member.ContactId);
                                    if (data == null)
                                    {
                                        throw new ApplicationException(string.Format("Contact card for a care team member with contact id = {0} was not found", member.ContactId));
                                    }
                                    else
                                    {
                                        member.Contact = Mapper.Map <Contact>(data);
                                    }
                                }
                            }
                        }
                    }

                    #endregion

                    var cohortRuleCheckData = new CohortRuleCheckData()
                    {
                        ContactId      = request.ContactId,
                        ContractNumber = request.ContractNumber,
                        UserId         = request.UserId,
                        PatientId      = contact.PatientId
                    };
                    CohortRules.EnqueueCohorRuleCheck(cohortRuleCheckData);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("AD:SaveCareTeam()::" + ex.Message, ex.InnerException);
            }

            return(response);
        }
Exemplo n.º 7
0
 public SaveCareTeamResponse SaveCareTeam(SaveCareTeamRequest request)
 {
     throw new NotImplementedException();
 }