Пример #1
0
        public AddCareTeamMemberResponse Post(AddCareTeamMemberRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            var response = new AddCareTeamMemberResponse();
            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;
                    var dataResponse = ContactManager.AddCareTeamMember(request);

                    response.Id = dataResponse.Id;
                }
                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);
        }
Пример #2
0
        public AddCareTeamMemberDataResponse AddCareTeamMember(AddCareTeamMemberRequest request)
        {
            var response = new AddCareTeamMemberDataResponse();

            try
            {
                IRestClient client = new JsonServiceClient();

                var url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Contacts/{4}/CareTeams/{5}/CareTeamMembers",
                                                               DDContactServiceUrl,
                                                               "NG",
                                                               request.Version,
                                                               request.ContractNumber, request.ContactId, request.CareTeamId), request.UserId);
                var dataDomainResponse =
                    client.Post <AddCareTeamMemberDataResponse>(url, new AddCareTeamMemberDataRequest
                {
                    CareTeamMemberData = Mapper.Map <CareTeamMemberData>(request.CareTeamMember),
                    Version            = request.Version,
                    ContactId          = request.ContactId,
                    CareTeamId         = request.CareTeamId,
                    ContractNumber     = request.ContractNumber,
                    Context            = "NG"
                } as object);

                if (dataDomainResponse != null)
                {
                    response.Version = dataDomainResponse.Version;
                    response.Status  = response.Status == null ? new ResponseStatus() : dataDomainResponse.Status;
                    response.Id      = dataDomainResponse.Id;
                }
            }
            catch (WebServiceException wse)
            {
                throw new WebServiceException("AD:AddCareTeamMember()::" + wse.Message, wse.InnerException);
            }
            return(response);
        }
Пример #3
0
        public AddCareTeamMemberResponse AddCareTeamMember(AddCareTeamMemberRequest request)
        {
            var response = new AddCareTeamMemberResponse();

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

            ValidateCareTeamMemberFields(request.CareTeamMember);

            var careTeamData = EndpointUtil.GetCareTeam(new GetCareTeamRequest {
                ContactId = request.ContactId, ContractNumber = request.ContractNumber, UserId = request.UserId, Version = request.Version
            });

            if (careTeamData == null)
            {
                throw new ApplicationException(string.Format("No care team exists for contact  {0}", request.ContactId));
            }

            var members = careTeamData.Members;

            if (!members.IsNullOrEmpty())
            {
                var mappedMembers = members.Select(Mapper.Map <Member>).ToList();
                mappedMembers.Add(request.CareTeamMember);

                var careTeam = new CareTeam {
                    Members = mappedMembers, ContactId = request.ContactId, Id = careTeamData.Id
                };

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

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

            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));
            }

            var cohortRuleCheckData = new CohortRuleCheckData()
            {
                ContactId      = request.ContactId,
                ContractNumber = request.ContractNumber,
                UserId         = request.UserId,
                PatientId      = contact.PatientId
            };

            try
            {
                var domainResponse = EndpointUtil.AddCareTeamMember(request);
                if (domainResponse != null)
                {
                    response.Id = domainResponse.Id;
                    CohortRules.EnqueueCohorRuleCheck(cohortRuleCheckData);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("AD:UpdateCareTeamMember()::" + ex.Message, ex.InnerException);
            }

            return(response);
        }