- Ya
- 25 Agosti 2026, 17:01 UTC
- Mwandishi
- Kamo
- Ahadi ya
- ff497c2
Releases, concepts, the precomputed hierarchy closure, value set definitions and expansions, concept maps, and per-tenant licence entitlement. Releases are never mutated, only superseded. A claim reprocessed a year later must resolve codes valid on its DATE OF SERVICE — overwriting a release in place makes every historical record silently re-interpret itself against a vocabulary that did not exist when it was written, and the record looks unchanged while meaning something different. isActive on a concept is NOT a soft delete. An inactive code must still resolve or every historical record referencing it stops being readable; it means "do not offer this for new entry". ConceptClosure is precomputed and is the largest table here — SNOMED CT US Edition is ~400k active concepts and its closure runs to tens of millions of rows. That is cheaper than the alternative: :below and is-a subsumption are recursive queries, and "find every kind of diabetes" is an ordinary clinical question that must not be a graph walk at query time. Value set DEFINITIONS and EXPANSIONS are separate tables because eCQM value sets bind to a specific expansion version. Regenerating one in place changes what a quality measure counted, retroactively, and its numbers stop reproducing. Expansions keep inactive members too: a picker filters them out but validation of historical data needs them, and dropping them makes old records fail validation. ConceptMapElement.equivalence is never defaulted to equivalent. A SNOMED-to-ICD-10 map is usually wider, narrower or inexact, and treating an approximation as a fact changes what the record asserts — billing narrower than documented is upcoding, the reverse discards specificity the chart had. TenantCodeSystemEntitlement exists because two licences make this a per-tenant question. CPT is licensed per product with royalties and usage reporting, so entitlement must be a countable row rather than a config flag; SNOMED requires a UMLS licensee per organization and has territory-dependent fees. The schema consequence is specific: always store the CODE, gate the DISPLAY. An unentitled tenant gets 99213 with no descriptor — withholding the code would break their claims, withholding the text is what the licence requires. PENDING is not ENTITLED, because paperwork in flight is how a breach happens while everyone believes it is covered. Deployment note recorded on CodeSystemRelease: these are non-PHI, read-mostly, non-tenant-scoped reference tables and the design intent is a dedicated single-node Postgres — hierarchy queries are the shape Yugabyte is worst at. They live here so the model is defined and testable; moving them is a datasource change, not a schema change.