# VA Federal Supply Schedule (FSS) drug prices

`drug_silver.fact_drug_va_fss_price` · Drugs and formularies · status live

VA Federal Supply Schedule drug prices by NDC — the negotiated federal contract price (price_usd, price_type), vendor, contract window, generic flag, VA class. A government-negotiated price benchmark distinct from ASP / NADAC / WAC — useful as a low-water reference for drug pricing.

**Grain.** One row per ndc11 per contract_number per price_type. That 3-col key is unique for all 21751 rows; ndc11 alone is 16283 distinct because a drug recurs across contracts and price types. price_start_date is redundant inside the key.

**How to use it.** Filter by ndc11 and price_type, take the currently-effective row: select price_usd, package_description, vendor_name from drug_silver.fact_drug_va_fss_price where ndc11=70370106001 and price_type=fss and price_stop_date at-or-after 2026-05-16. Gives the current VA FSS price for Ingrezza 60mg per 30-count pack; price_type=big4 gives the lower Federal Ceiling Price, ratioable vs commercial/Medicare ASP on ndc11.

**Traps.**
- Grain needs price_type: ndc11 alone is 16283 not 21751, and ndc11+contract_number is still not unique (up to 2 price types per contract). Include price_type or you double/triple-count. price_start_date is redundant in the key.
- price_type is load-bearing and not comparable across types: big4 (Federal Ceiling Price) sits at or below fss (5338 of 5341 pairs). Use fss for catalog price, big4 for lowest mandated price, nc for generic/standardization. Do not average across price_type.
- Single static snapshot, not a time series: is_current true for all rows; observed_period/asserted_at/source_url/sha256/bronze_object_key are constants (2026-05-16). The weekly/2016 history is the spread of price_start_date, not a refresh cadence.
- Aliases/dead: effective_period_start=price_start_date and effective_period_end=price_stop_date exactly; sub_item_identifier and drug_source_version_id are 100% NULL though drug_source_version_id is listed as a candidate key. vintage_tag=none, cms_vintage_sequence=2, parse_revision=1 are constants.
- Includes lapsed prices: ~2151 rows have price_stop_date before the snapshot; filter price_stop_date at-or-after your as-of date. covered_flag is text T/F not boolean; price_usd is per the free-text package size so cross-NDC compares need pack-size normalization.

| column | type | meaning |
|---|---|---|
| ndc11 | string | 11-digit NDC drug package; 16283 distinct; join key to drug spine |
| contract_number | string | VA contract, 657 distinct; 36F797/V797D-=FSS, 36E797/36W797=nc |
| price_start_date | date | price effective start; equals effective_period_start; redundant in key |
| vendor_name | string | vendor, 520 distinct; one per contract |
| contract_start_date | date | umbrella contract start |
| contract_stop_date | date | contract end (to 2031); ~2097 already lapsed |
| sub_item_identifier | string | 100% NULL, dead |
| package_description | string | free-text pack size (100, 10ML); unit for price_usd |
| trade_name | string | brand name, 9698 distinct |
| generic_name | string | generic name, 7811 distinct |
| is_generic | boolean | generic flag ~41% true |
| va_class | string | VA drug class code, 413 distinct, 13 nulls |
| covered_flag | string | text T/F covered-drug status; T=12517 F=9234 |
| prime_vendor_flag | boolean | prime-vendor bool ~93% true |
| price_usd | double | package price USD; min 0.01 median ~157 max 3.48M; meaning depends on price_type |
| observed_period | date | snapshot date, const 2026-05-16 |
| asserted_at | date | record date, const 2026-05-16 |
| effective_period_start | date | alias of price_start_date |
| effective_period_end | date | alias of price_stop_date |
| cms_vintage_sequence | int | const 2 |
| parse_revision | int | const 1 |
| parser_artifact_hash | string | parser hash, const |
| source_url | string | VA vaFssPharmPrices.xlsx, const |
| sha256_content_hash | string | raw file hash, const (one file) |
| source_id | string | va_fss_pharm_prices, const |
| is_current | boolean | TRUE all rows; no-op (one snapshot) |
| bronze_object_key | string | S3 bronze key, const |
| s3_version_id | string | S3 version id, const |
| vintage_tag | string | literal none |
| drug_source_version_id | string | 100% NULL, dead (listed as candidate key but empty) |
| price_type | string | fss(15417)=FSS price; big4(5343)=Federal Ceiling Price at-or-below fss; nc(991)=national-contract, mostly generics |
| price_stop_date | date | price end; alias of effective_period_end; ~2151 already expired |
| non_taa_status | string | TAA status Compliant(21332)/Non-Compliant(419) |

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