Files
stack/dev/vendor/bcda-app/conf/configs/prod.yml
kert 2cc13008a9
Some checks failed
CI / lint (push) Successful in 54s
CI / notebooks-smoke (push) Successful in 1m43s
CI / test (push) Failing after 2m56s
Infra CI / zotero (push) Successful in 15s
Infra CI / notebooks (push) Successful in 1m1s
Infra CI / api (push) Successful in 1m7s
Infra CI / docs (push) Successful in 1m50s
Infra CI / llm (push) Successful in 49s
Infra CI / mc (push) Failing after 35s
Infra CI / bcda (push) Successful in 1m42s
CI / lint (pull_request) Successful in 45s
CI / notebooks-smoke (pull_request) Successful in 1m38s
CI / test (pull_request) Failing after 2m53s
Infra CI / mc (pull_request) Failing after 30s
Infra CI / zotero (pull_request) Successful in 16s
Infra CI / notebooks (pull_request) Successful in 58s
Infra CI / docs (pull_request) Successful in 16s
Infra CI / api (pull_request) Successful in 15s
Infra CI / bcda (pull_request) Successful in 21s
Infra CI / llm (pull_request) Successful in 17s
feat(bcda): close the upstream-review gaps — partial exports, claim identity across systems, attribution checks, filter grammar, vendored behaviour
Closes #1293 #1294 #1295 #1296 #1297 #1298 #1299 #1300 (upstream review
docs/superpowers/specs/2026-10-25-bcda-upstream-review.md).

Partial exports (#1293). The manifest's `error` list is downloaded as
OperationOutcome[.N].ndjson with resource_type=OperationOutcome; every
URL is attempted and failures are recorded per file, then raised once as
DownloadError. A job with error files is `partial`: it still reconciles
(its rows are real) but never becomes the watermark, check_since warns
`partial_job`, the Store page lists the issues and `stack bcda errors`
prints them.

Claim identity (#1294), per bcda.cms.gov "Matching multiple EOBs to the
same claim": three new header columns — clm_cntl_num_match (VMS leading 1
stripped on SharedSystem DME), clm_natural_key (Part D events without a
control number: bene · line from-date · provider qualifier · service
provider · RX number · fill number) and superseded_by — plus
prvdr_srvc_id_qlfyr_cd. bcda.sync keys claims on match → control number
→ natural key → id, marks every claim another current claim names in
`related` as superseded (chain walked), counts `superseded`, and a new
invariant forbids a live claim being named predecessor by another live
claim. The connector dedupes on the same identity and drops superseded
rows. Partitions and current tables flattened before these columns
existed get them as NULLs.

Attribution (#1295): `attribution_expired` (block) from
expiration_dates, `attribution_floor` (warn) from the earliest
last_attribution_update recorded on job rows (new column), and the
server's 404/400/429 texts explained by explain_server_error.

Adoption (#1296): completed_jobs() drops jobs older than the 24 h file
retention; downloads no longer stop at the first failed file.

_typeFilter (#1297): build_type_filter follows bcda/fhir/param.go —
outcome lists, service-date earliest and latest bounds with eq/gt/ge/lt/le
on YYYY[-MM[-DD]], no comma lists, no conflicting prefixes; CLI and
Exports page expose them.

Runout (#1298): `runout_window` warn after July; population column on
the Sync page ledger.

Vendoring (#1299): the manifest now pins bcda-app's param.go,
bluebutton.go, service.go, constants, models and prod.yml, the docs
source (CMSgov/bcda-static-site: filter/access/migrate/PAC/FAQ pages and
announcements) and the PAC and unmapped-fields dictionaries.

Docs (#1300): the reconciliation design record states the server's
window `(since, transactionTime]`, the lookback bound, the silent
exclusions, re-loads, partial exports and the identity rules.

refs #1139
2026-10-25 17:10:24 -04:00

112 lines
3.6 KiB
YAML

aco_config:
# Kidney Care Choices (KCC) Model - Comprehensive Kidney Care Contracting
- model: 'CKCC' # Active, managed by 4i
name_pattern: '^C\d{4}$'
performance_year_transition: '01/01'
lookback_period: 2
data:
- 'adjudicated'
# Kidney Care Choices (KCC) Model - Kidney Care First
- model: 'KCF' # Ended, managed by 4i
name_pattern: '^K\d{4}$'
performance_year_transition: '01/01'
lookback_period: 2
data:
- 'adjudicated'
# ACO REACH Model, formerly Global and Professional Direct Contracting Model (GPDC) Model
- model: 'DC' # Active, managed by 4i
name_pattern: '^D\d{4}$'
performance_year_transition: '04/01'
lookback_period: 3
data:
- 'partially-adjudicated'
- 'adjudicated'
# Medicare Shared Savings Program
- model: 'SSP' # Active, managed by ACO-MS
name_pattern: '^A\d{4}$'
data:
- 'adjudicated'
# Comprehensive ESRD Care (CEC) Model
- model: 'CEC' # Ended
name_pattern: '^E\d{4}$'
data:
- 'adjudicated'
# Next Generation ACO Model
- model: 'NGACO' # Ended
name_pattern: '^V\d{3}$'
data:
- 'adjudicated'
# A config for BCDA's test entities
- model: 'TEST' # Active, managed by BCDA Admin
name_pattern: '^TEST\d{3}$'
data:
- 'adjudicated'
- 'partially-adjudicated'
# Maryland Total Cost of Care (MD TCoC) Model
- model: 'TCOCMD' # Ended, managed by BCDA Admin
name_pattern: '^CT\d{4,6}$'
data:
- 'adjudicated'
- 'partially-adjudicated'
attribution_file:
file_type: 'csv'
name_pattern: '(P|T)\.(PCPB)\.(M)([0-9][0-9])(\d{2})\.(D\d{6}\.T\d{6})\d'
model_identifier: 'PCPB'
file_performance_year: 4
file_date: 6
metadata_matches: 7
ignore_suppressions: true
# CMS Data Aggregation Contract
- model: 'CDAC' # Ended, managed by IHP
name_pattern: '^DA\d{4}$'
data:
- 'adjudicated'
- 'partially-adjudicated'
attribution_file:
file_type: 'csv'
name_pattern: '(P|T)\.(BCD)\.(DA\d{4}).(MBIY)(\d{2})\.(D\d{6}\.T\d{6})\d'
model_identifier: 'BCD'
file_performance_year: 5
file_date: 6
metadata_matches: 7
# GUIDE (Guiding an Improved Dementia Experience) Model
- model: 'GUIDE' # Active, managed by IHP
name_pattern: '^GUIDE-\d{4}$'
data:
- 'adjudicated'
attribution_file:
file_type: 'csv'
name_pattern: '(P|T)\.(GUIDE)\.(GUIDE-)(\d{4})\.(Y)(\d{2})\.(D\d{6}\.T\d{6})\d'
model_identifier: 'GUIDE'
file_performance_year: 6
file_date: 7
metadata_matches: 8
# ACCESS (Advancing Chronic Care with Effective, Scalable Solutions) Model
- model: 'ACCESS' # Active, managed by IHP
name_pattern: '^ACCES\d{5}$' # only one 's' due to character limits
lookback_period: 3
data:
- 'adjudicated'
attribution_file:
file_type: 'csv'
name_pattern: '(P|T)\.(ACCESS)\.(ACCES\d{5})\.(Y)(\d{2})\.(D\d{6}\.T\d{6})\d'
model_identifier: 'ACCESS'
file_performance_year: 5
file_date: 6
metadata_matches: 7
# Increasing Organ Transplant Access (IOTA) Model
- model: 'IOTA' # Active, managed via 4i
name_pattern: '^IOTA\d{3}$'
data:
- 'adjudicated'
- 'partially-adjudicated'
rate_limit_config:
all: true
acos: []
v1_v2_deny_regexes:
- '^IOTA\d{3}'
- '^ACCES\d{5}$'
- '^GUIDE-\d{4}$'
v3_no_partial_claims_models:
- 'GUIDE'