public async Task MainAsync(string[] args)
        {
            LogManager.LoadConfiguration("nlog.config");
            ILoggerFactory loggerFactory = new NLogLoggerFactory();
            var            logger        = loggerFactory.CreateLogger <Program>();

            try
            {
                var configuration             = CreateConfigurationObject();
                var clinicalDocumentAPIConfig = new ClinicalDocumentAPIConfig();
                configuration.Bind(clinicalDocumentAPIConfig);
                var options = Options.Create(clinicalDocumentAPIConfig);

                _restClinicalDocumentAPI = new RestClinicalDocumentAPI(options, loggerFactory);
                _documentDetailRequest   = CreateDocumentDetailRequest();

                //POST endpoint of clinical document - Save Clinical Documents
                var saveClinicalDocumentsResult = await _restClinicalDocumentAPI.SaveClinicalDocumentDetails(_documentDetailRequest);

                //GET endpoint of clinical document - Get Clinical Documents
                var getClinicalDocumentsResult = await _restClinicalDocumentAPI.GetClinicalDocumentDetails("TEST", "12345");
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "Exception at Clinical Document Console application");
                Console.WriteLine(ex);
            }
        }
        public void ValidateRequiredFacilityCodeRequest()
        {
            CheckPropertyValidation val = new CheckPropertyValidation();

            var activityObject = new DocumentDetailRequest
            {
                AccountNumber = "1234567",
                DocumentName  = "OpsReport",
                DocumentType  = "JPEG",
                FacilityCode  = ""
            };

            var validDetails = val.ValidateModel(activityObject).ToList().FirstOrDefault();

            Assert.Equal("Facility Code is required", validDetails.ToString());
        }
        public void ValidateMaxLengthaccountNumberRequest()
        {
            CheckPropertyValidation val = new CheckPropertyValidation();

            var activityObject = new DocumentDetailRequest
            {
                AccountNumber = "WE@#$%QWEQ",
                DocumentName  = "OpsReport",
                DocumentType  = "JPEG",
                FacilityCode  = "SJPR"
            };

            var validDetails = val.ValidateModel(activityObject).ToList().FirstOrDefault();

            Assert.Equal("Please enter valid Account Number", validDetails.ToString());
        }
        public void ValidateDocumentDetailRequest()
        {
            CheckPropertyValidation val = new CheckPropertyValidation();

            var activityObject = new DocumentDetailRequest
            {
                AccountNumber = "1234567",
                DocumentName  = "OpsReport",
                DocumentType  = "JPEG",
                FacilityCode  = "SJPR"
            };

            var validDetails = val.ValidateModel(activityObject).Count();

            Assert.Equal("0", validDetails.ToString());
        }
        public async void ThrowsExceptionFromSaveClinicalDocumentDetailsWhenURLIsInvalid()
        {
            var mockILogger = new Mock <ILoggerFactory>();
            var mockIOptionsClinicalDocumentAPIConfig   = new Mock <IOptions <ClinicalDocumentAPIConfig> >();
            var mockIRestClinicalDocumentAPI            = new Mock <IRestClinicalDocumentAPI>();
            DocumentDetailRequest documentDetailRequest = CreateDocumentDetailRequestObject();

            SetClinicalDocumentApiConfig(inValidUrl, mockIOptionsClinicalDocumentAPIConfig);
            var documentDetailResponse = new DocumentDetailResponse {
                ResponseMessage = "Success"
            };

            var restClinicalDocumentAPI = new RestClinicalDocumentAPI(mockIOptionsClinicalDocumentAPIConfig.Object, mockILogger.Object);

            await Assert.ThrowsAsync <NullReferenceException>(() => restClinicalDocumentAPI.SaveClinicalDocumentDetails(documentDetailRequest));
        }
示例#6
0
        /// <summary>
        /// Save clinical documents to database
        /// </summary>
        /// <param name="documentDetailRequest"></param>
        /// <returns></returns>
        public async Task <DocumentDetailResponse> SaveClinicalDocumentDetails(DocumentDetailRequest documentDetailRequest)
        {
            try
            {
                string postURL     = $"{_baseUrl}/{EndpointConstants.SaveClinicalDocument}";
                var    postContent = new StringContent(JsonConvert.SerializeObject(documentDetailRequest), System.Text.Encoding.UTF8, "application/json");

                HttpClient httpClient = new HttpClient();
                using (var httpResponse = await httpClient.PostAsync(postURL, postContent))
                {
                    if (httpResponse.IsSuccessStatusCode)
                    {
                        var content = await httpResponse.Content.ReadAsStringAsync();

                        return(JsonConvert.DeserializeObject <DocumentDetailResponse>(content));
                    }
                    else if (httpResponse.StatusCode == HttpStatusCode.BadRequest)
                    {
                        var badResponse = await BadRequestAsync(httpResponse);

                        return(new DocumentDetailResponse {
                            ValidationResponse = badResponse
                        });
                    }
                    else
                    {
                        var errorContent = await httpResponse.Content.ReadAsStringAsync();

                        var errorResponse = JsonConvert.DeserializeObject <ErrorResponse>(errorContent);
                        return(new DocumentDetailResponse {
                            ExceptionMessage = errorResponse.ExceptionMessage
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, Messages.SaveExceptionMessage);
                return(new DocumentDetailResponse {
                    ExceptionMessage = Messages.ExceptionMessage
                });
            }
        }
        public async void SaveClinicalDocumentDetails()
        {
            var mockILogger = new Mock <ILoggerFactory>();
            var mockIOptionsClinicalDocumentAPIConfig   = new Mock <IOptions <ClinicalDocumentAPIConfig> >();
            var mockIRestClinicalDocumentAPI            = new Mock <IRestClinicalDocumentAPI>();
            DocumentDetailRequest documentDetailRequest = CreateDocumentDetailRequestObject();

            SetClinicalDocumentApiConfig(validUrl, mockIOptionsClinicalDocumentAPIConfig);
            var documentDetailResponse = new DocumentDetailResponse {
                ResponseMessage = "Success"
            };

            var restClinicalDocumentAPI = new RestClinicalDocumentAPI(mockIOptionsClinicalDocumentAPIConfig.Object, mockILogger.Object);

            var result = await restClinicalDocumentAPI.SaveClinicalDocumentDetails(documentDetailRequest);

            Assert.True(result.IsValid);
            Assert.True(result.ResponseMessage.Length > 0);
            Assert.Contains("successfully", result.ResponseMessage);
        }
示例#8
0
 /// <summary>
 /// Save Clinical Document Constructor
 /// </summary>
 public SaveClinicalDocument_Step()
 {
     _server = new TestServer(
         WebHost.CreateDefaultBuilder()
         .UseStartup <Startup>()
         );
     _client = _server.CreateClient();
     _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
     _documentDetailRequest_Contract = new DocumentDetailRequest
     {
         AccountNumber = "1234567",
         DocumentName  = "OpsReport",
         DocumentType  = "JPEG",
         FacilityCode  = "SJPR",
         MimeType      = "image/jpeg",
         SourceSystem  = "GCR",
         Document      = Convert.FromBase64String("")
     };
     _validationResultModel = new ValidationResultModel();
 }
        public async void SaveClinicalDocumentDetailsReturnsBadRequestWhenParameterPassedIsInvalid()
        {
            var mockILogger = new Mock <ILoggerFactory>();
            var mockIOptionsClinicalDocumentAPIConfig = new Mock <IOptions <ClinicalDocumentAPIConfig> >();

            DocumentDetailRequest documentDetailRequest = CreateDocumentDetailRequestObject();

            documentDetailRequest.FacilityCode = "TESTWA";

            SetClinicalDocumentApiConfig(validUrl, mockIOptionsClinicalDocumentAPIConfig);
            var documentDetailResponse = new DocumentDetailResponse {
                ResponseMessage = "Success"
            };

            var restClinicalDocumentAPI = new RestClinicalDocumentAPI(mockIOptionsClinicalDocumentAPIConfig.Object, mockILogger.Object);

            var result = await restClinicalDocumentAPI.SaveClinicalDocumentDetails(documentDetailRequest);

            Assert.True((!result.IsValid));
            Assert.Equal("Validation Failed", result.ValidationResponse.Message);
        }
示例#10
0
        public async Task <DocumentDetailResponse> DocumentDetail(DocumentDetailRequest request)
        {
            try
            {
                using (IDbConnection connection = new SqlConnection(_configuration.GetValue <string>("ConnectionStrings:DefaultConnection")))
                {
                    DocumentDetail    document   = new DocumentDetail();
                    DynamicParameters parameters = new DynamicParameters();
                    parameters.Add("@Id", request.Id);

                    await Task.Run(() =>
                                   document = connection.Query <DocumentDetail>("App_Docs_Get", parameters, null, true, null, CommandType.StoredProcedure).FirstOrDefault()
                                   );

                    if (document != null)
                    {
                        parameters = new DynamicParameters();
                        parameters.Add("@DocId", document.Id);
                        await Task.Run(() =>
                                       document.DocsFiles = connection.Query <DocsFile>("DocsFiles_GetByDocId", parameters, null, true, null, CommandType.StoredProcedure).AsList <DocsFile>()
                                       );
                    }
                    return(new DocumentDetailResponse
                    {
                        Status = ResponseStatus.Success,
                        Message = ResponseStatus.Success.ToString(),
                        Document = document,
                    });
                }
            }
            catch (Exception ex)
            {
                return(new DocumentDetailResponse
                {
                    Status = ResponseStatus.Faile,
                    Message = ex.Message,
                });
            }
        }
示例#11
0
        public async Task <IActionResult> SaveClinicaldetails([FromBody] DocumentDetailRequest documentDetailRequest)
        {
            DocumentDetailResponse clinicalDetailsResponse = null;

            //Map Contract request model to clinical document input model
            ClinicalDocumentInputModel clinicalDocumentInputModel = _iMapper.Map <ClinicalDocumentInputModel>(documentDetailRequest);

            // Save document details
            ClinicalDocumentOutputModel clinicalDetails = await _iClinicalDocumentBusinessLogic.SaveClinicalDetails(clinicalDocumentInputModel);

            if (clinicalDetails != null)
            {
                //Map clinical document output model to Contract response model
                clinicalDetailsResponse = _iMapper.Map <DocumentDetailResponse>(clinicalDetails);

                //return response
                return(Ok(clinicalDetailsResponse));
            }
            else
            {
                //return badrequest
                return(BadRequest(_localizer["BadRequestErrorMessage"]));
            }
        }
示例#12
0
 public async Task <DocumentDetailResponse> DocumentDetail([FromQuery] DocumentDetailRequest request)
 {
     return(await _businessLogic.DocumentDetail(request));
 }