private string GenerateSql(UrlQuery urlQuery, string tableName, pagedPatientData data)
        {
            var provider = _configuration.GetSection("TraumaRegistrySettings")["dbProvider"];

            switch (provider)
            {
            case "sqlserver":
                return(sqlserver(urlQuery, tableName));

            case "postgres":
                return(postgres(urlQuery, tableName));

            case "mysql":
                return(mysql(urlQuery, tableName));

            default:
                throw new Exception(string.Format("DB Provider {0} not supported.", provider));
            }
        }
        public ActionResult <pagedPatientData> GetPatients(UrlQuery urlQuery)
        {
            string tableName = "Patients";

            _databasename = _context.Database.GetDbConnection().Database;
            tableName     = AdjustDBEntityNameForProvider(tableName);
            pagedPatientData data = new pagedPatientData();
            var pageNumber        = Convert.ToInt32(urlQuery.PageNumber);

            data.recordCount = _context.Patients.Count();
            string sql = GenerateSql(urlQuery, tableName, data);

            data.records = _context.Patients.FromSqlRaw(sql).ToList();
            foreach (var item in data.records)
            {
                item.EventCount = _context.Events.Where(e => e.Patient.Id == item.Id).Count();
            }

            return(data);
        }