# MA network intelligence: 2026 -> 2027 network change per contract x health system / specialty

`medicare_silver.ma_network_change_v1` · Medicare Advantage, Part D, Medicaid · status partial

Who joined and left each contract's published network between 2026 and 2027, like for like (own-year lists only, ZIP3 areas listed in both years, members only), rolled to health systems through CMS's hospital affiliation and the system map, with exit / join signals where a system's listing collapsed while the rest of the network held. Typed door get_network_system_change.

**Grain.** One row per contract_id x rollup_level (all | specialty | system) x rollup_key: listed_2026, listed_2027, stayed, left_network, joined, keep_rate, contract_keep_rate, contract_keep_rate_2027, zip3_both_years, source_changed, signal (exit_signal | join_signal). Partitioned by dataset_id.

| column | type | meaning |
|---|---|---|
| contract_id | string |  |
| rollup_level | string |  |
| rollup_key | string |  |
| rollup_name | string |  |
| listed_2026 | bigint |  |
| listed_2027 | bigint |  |
| stayed | bigint |  |
| left_network | bigint |  |
| joined | bigint |  |
| keep_rate | double |  |
| contract_keep_rate | double |  |
| contract_keep_rate_2027 | double |  |
| zip3_both_years | bigint |  |
| source_changed | boolean |  |
| signal | string |  |

Tools that read it: get_network_system_change

Query it: `query_substrate` with `SELECT ... FROM medicare_silver.ma_network_change_v1 WHERE ... LIMIT 100`; read `describe_data_source("medicare_silver.ma_network_change_v1")` first.
