Skip to content

v1.1.0 — Production-Driven Refinement

Latest

Choose a tag to compare

@dorofino dorofino released this 21 May 20:35

Backward-compatible minor release driven by six months of production extraction across real carrier SBCs and EOCs. Every v1.0.0 document continues to validate against v1.1.0 unchanged.

What's new

Plan identity

  • plan_year (integer) — supports cross-year plan-family grouping when effective_date is missing.
  • coverage_period object (start_date, end_date) — captures the coverage window explicitly.
  • market (string) — market segment (individual, small_group, large_group, medicare_advantage, …).

Accumulators (8 slots total)

  • 4 new out-of-network slots: oon_individual_deductible, oon_family_deductible, oon_individual_oop_max, oon_family_oop_max. Closes the v1.0.0 gap where PPO plans with separate in/out-of-network accumulators could not be fully represented.
  • New per-slot fields: period, network_tier, embedded, and applies_to on OOP max (parity with deductibles).
  • Refactored into $defs/deductible_accumulator and $defs/oop_max_accumulator so all 8 slots stay in sync.

Benefits

  • benefit_type discriminator (default "medical") — enables future modules (pharmacy, dental, vision, behavioral_health) without restructuring.
  • canonical_key — machine-readable canonical identifier.
  • raw_label — verbatim source-document label for traceability.

Cost shares

  • notes field on cost_shares[] items (was missing in v1.0.0; the SCAN example wanted to use it).

Recommended vocabularies (new vocabularies/ directory)

  • canonical-benefits.json — 100 canonical benefit identifiers across 13 categories.
  • categories.json — 25 recommended uppercase snake_case category codes.
  • markets.json — 12 recommended market codes.
  • plan-types.json — 12 recommended plan-design codes.

These are non-normative: the schema treats the corresponding fields as free-form strings so adopters can extend; the vocabularies provide consistent values for interoperability.

Expanded examples

All 7 carrier example plans now cover 25–30 benefits each (198 total), spanning the full SBC service inventory: office visits, diagnostics, pharmacy (4 tiers), outpatient surgery, ER/urgent care/ambulance, inpatient hospital, mental/behavioral health, maternity, recovery (home health, rehab, SNF, DME, hospice), and pediatric vision/dental.

FHIR alignment

New docs/fhir-alignment.md. Field-by-field BPS ↔ FHIR R4 InsurancePlan mapping, worked example, lossy-mapping table with extension/qualifier advice, round-tripping guidance. R5/R6 outlook included; the guide will refresh once HL7 R6 stabilizes.

Repository hygiene

  • LICENSE (MIT) added.
  • .gitattributes to normalize line endings.
  • examples/scan_example.json — removed notes from inside cost_shares[] (would have failed additionalProperties: false). The notes field is now formally defined on cost_shares[] in v1.1.0.

Backward compatibility

  • All v1.0.0 required fields remain required.
  • All v1.0.0 optional fields remain present with the same types.
  • All additions are optional and additionalProperties: false boundaries are respected.
  • A document declaring "schema_version": "1.0.0" validates against the v1.1.0 schema without changes.
  • All 7 original example plans validate clean against v1.1.0 (verified).

Canonical URLs

  • v1.1.0 schema: https://benefitplanstandard.org/schema/v1.1.0/benefit-plan.schema.json
  • v1.0.0 schema (preserved): https://benefitplanstandard.org/schema/v1.0.0/benefit-plan.schema.json

Documentation

The companion docs PR is in Benefit-Plan-Standard/benefit-plan-docs#1, which fixes the three doc-vs-schema mismatches (product_typeplan_type, individual_oopindividual_oop_max, source_refssource_references) and brings the docs site up to v1.1.0.

What's next

  • Formal pharmacy module schema using benefit_type: "pharmacy".
  • Behavioral health, dental, vision, maternity modules.
  • HealthPlanAPI reference-implementation alignment to v1.1.0.
  • Refreshed FHIR alignment once HL7 R6 normative behavior stabilizes.