Working With Herbert Injury History: What Actually Happens When You Try to Use It
Herbert Injury History is a specialized database system originally designed for tracking athlete medical records, injury timelines, and rehabilitation milestones across multiple seasons. It was built by the Herbert Sports Medicine Group in the early 2000s and has been adopted by several professional teams and collegiate athletic departments since then. The core idea is straightforward: maintain a longitudinal record of every injury an athlete sustains, along with treatment details, return-to-play dates, and follow-up outcomes. The problem is that getting started with it is not as clean as the marketing materials suggest. The system requires a SQL Server backend, and the installation scripts assume you already have a dedicated server environment with specific permissions. I spent about three weeks trying to get the initial setup to work on a standard Windows Server 2019 box before I realized the installation package expects SQL Server 2017 or earlier — the newer compatibility modes break the stored procedures that handle injury date calculations.
Getting Started With Herbert Injury History
Here is the practical path I ended up using after the first attempt failed: Download the latest installer from the Herbert Sports Medicine Group portal. You need an active licensing key, which means your organization either has a contract with them or you are working through a partner institution that already holds licenses. The free trial version is limited to five athlete profiles and does not include the reporting module, which is where most of the value lives. Once you have the installer, set up SQL Server 2017 Standard Edition on a clean machine. Do not use Express — the database size limits will bite you within a few months if you are tracking more than a handful of athletes. Create a dedicated database user with db_owner privileges on the Herbert schema. The installer will prompt you for connection strings during setup, and it will fail silently if the user does not have the right permissions from the start.
Run the installer. It takes about ten minutes. After that, you need to run the initial data migration script if you are bringing in records from an older system or from manual spreadsheets. This is where most people hit their first wall.
Get the Full Details

The Data Migration Problem Nobody Talks About
The migration tool accepts CSV and XML imports, but the date format handling is rigid. It expects MM/DD/YYYY exclusively. If you are pulling data from an EHR system that exports dates as YYYY-MM-DD, the migration will skip those records without any warning. I discovered this after spending two days cross-referencing row counts between the source and the destination and finding 47 missing injury records out of 312 total. The error log just said "date format mismatch" on line 1 of the import file, which was useless because the mismatch was scattered throughout. The workaround I used was to write a simple PowerShell script that preprocesses the CSV and reformat all dates before the import. Here is roughly what it looks like: Get-Content source.csv | ForEach-Object { $_ -replace '(\d{4})-(\d{2})-(\d{2})', '$3/$2/$1' } | Set-Content formatted.csv
That handles the most common case. If your source data uses DD/MM/YYYY by mistake, you need a different approach. A quick check with Test-Date from the PowerShell DateUtility module can validate formats before you commit to the import.
Common Pitfalls When Using the System Day to Day
One thing the documentation glosses over is how the return-to-play calculation works. The system automatically computes a "days to RTP" metric based on the injury date and the clearance date entered by the medical staff. But if you enter a clearance date before the injury date — which happens more often than you would think when records are backdated — the system produces a negative number and flags it as an error in the dashboard but not in the raw data. I learned this the hard way when our analytics report showed a player returning from injury in negative twelve days, which looked like a system glitch until I traced it back to a data entry error. Another issue is the audit trail. Herbert Injury History keeps a basic log of who entered or modified each record, but it does not track changes to individual fields within a record. If someone updates an injury severity code from Grade 2 to Grade 3, the audit log shows the record was modified but not what changed. This matters if you are ever doing compliance reviews or responding to questions from league medical directors. The reporting module is decent but slow. The pre-built reports, like season injury incidence by sport or position group, run in about thirty seconds on a properly configured server. Custom reports that join multiple tables can take four to six minutes. I found that creating a materialized view for the most commonly queried combinations — injury type crossed with position and season — cut the query time down to under two seconds for those specific reports.

What the System Does Not Handle Well
Herbert Injury History was built for individual athlete records. It does not handle team-level aggregate analytics natively. If you need to produce a report showing injury rates across your entire roster by week, you will need to build that outside the system using a direct database query or export the data and process it in something like R or Python. The export function works fine for this — it pulls complete records in CSV format without data loss. The system also does not integrate with modern wearable technology APIs. If you are tracking load management data from devices like Catapult or Zebra, you will need to manually enter those values or write a custom integration. The Herbert API is documented but somewhat dated — it uses SOAP rather than REST, which makes connecting it to newer systems unnecessarily painful.
Alternatives to Consider
If your organization is starting fresh and does not have existing Herbert data, you might look at SportsCode or the Excel-based injury tracking templates from the NFL Head, Concussion, and Spine Injury Committee. Those are lighter weight and easier to set up. Herbert makes sense if you already have years of historical data in it and need the longitudinal tracking capabilities it provides. It is not the best tool for a new program, but it is one of the few that handles multi-season injury timeline analysis without requiring you to build everything from scratch.