Payer negotiated rates
The same contracts, read from the insurer's side. We take what Horizon BCBSNJ has agreed to pay, network by network, join it to hospitals by NPI, and compare it against what the hospitals say themselves.
Already have a seat? Open it at data.soro.health
In-network, out-of-network, and the agreement report
In-network rates, by hospital
What Horizon pays each facility, per billing code, across every current network: MGCN, PPO and TRAD, OMNIA OMT1 and OMT2, HMO and MCEX, AEPO, OEX1 and OEX2, and Indemnity. Hospitals are joined to the payer side by NPI, and 48 currently match a Horizon NPI and carry payer-side rates.
Out-of-network allowed amounts
Per billing code, the most a provider billed against the most Horizon actually allowed, split institutional and professional. This is the number that tells you what an out-of-network charge is really worth.
The agreement report
Per hospital, the hospital-published rate against the payer-published rate for the same code: how many codes overlap, the median ratio between the two, and the worst disagreements. It ships with the data rather than being something we say in a sales call.
Rebuilt every month
Payers republish on a monthly cycle, so the payer side is rebuilt on that cycle rather than left to go stale between releases.
What a row looks like
The payer side arrives as tens of gigabytes per network, far too large to hold in memory, so it is streamed and reduced to per-code aggregates as it passes.
| Field | Shape | What it is |
|---|---|---|
| payer | string | The publishing plan, here Horizon BCBSNJ |
| builtAt | timestamp | When this build of the artifact was produced |
| hospitals[].hospital | string | Facility, matched to the hospital dataset |
| hospitals[].npis | string[] | The NPIs the match was made on |
| hospitals[].codes["DRG:470"] | [number, int] | Highest negotiated dollar amount, and how many rates backed it |
| Field | Shape | What it is |
|---|---|---|
| codes["CPT:70450"].institutional | [number, number, int] | Highest allowed, highest billed, and the count behind them |
| codes["CPT:70450"].professional | [number, number, int] | The same three, for the professional side of the claim |
Payer-wide benchmark, not per facility. Amounts are dollars, held to the cent.
| Per hospital | What it tells you |
|---|---|
| Overlapping codes | How much of the comparison is real rather than sampled |
| Median ratio | Whether the two publishers broadly agree |
| Worst disagreements | Exactly which codes to look at by hand |
Where the sides disagree, the report names the codes rather than averaging the problem away.
The hospital and the insurer publish the same contract.
When the two filings agree, the number is close to unarguable. When they do not, the gap is the finding, and the agreement report names the codes it turns on.
- Errors do not survive both sides. A parsing mistake or a hospital's misfiled column shows up as a disagreement instead of shipping as a rate.
- Known disagreements stay named. Case-rate structures legitimately differ between the two filings. We identify those clusters rather than quietly dropping them.
- New hospitals inherit the check. The join is on NPI, so a facility added to the hospital dataset is picked up on the payer side without anyone editing a list.
See both sides before you decide
Ask for a sample and we will send a real slice, agreement report included, so you can see where the two publishers agree and where they do not.