public async Task <PagedResponse <PatientModel> > GetDetailsAsync(int pageSize = 10, int pageNumber = 1)
        {
            Logger?.LogDebug("'{0}' has been invoked", nameof(GetDetailsAsync));

            var response = new PagedResponse <PatientModel>();
            List <PatientModel> patientData = null;

            try
            {
                var query = DbContext.GetPatientDetails();

                // Set paging values
                response.PageSize   = pageSize;
                response.PageNumber = pageNumber;

                // Get the total rows
                response.ItemsCount = await query.CountAsync();

                // Get the specific page from database
                var temp = await query.Paging(pageSize, pageNumber).ToListAsync();

                patientData = temp.Select(t => new PatientModel
                {
                    Forename        = t.Forename,
                    Surname         = t.Surname,
                    DateOfBirth     = t.DateOfBirth,
                    Gender          = t.Gender,
                    PatientId       = t.PatientId,
                    TelephoneNumber = !string.IsNullOrEmpty(t.TelephoneNumber) ? JsonConvert.DeserializeObject <PatientTelephoneNumber>(t.TelephoneNumber)
                    : new PatientTelephoneNumber()
                }).ToList();

                response.Model = patientData;

                response.Message = string.Format("Page {0} of {1}, Total of records: {2}.", pageNumber, response.PageCount, response.ItemsCount);

                Logger?.LogInformation("The records have been retrieved successfully.");
            }
            catch (Exception ex)
            {
                response.DidError     = true;
                response.ErrorMessage = "There was an internal error, please contact to technical support.";

                Logger?.LogCritical("There was an error on '{0}' invocation: {1}", nameof(GetDetailsAsync), ex);
            }

            return(response);
        }