Vendor-agnostic, normalized schema for DXA bone density and body composition exams.
OpenDXA Schema provides a standardized JSON Schema for representing DXA (Dual-energy X-ray Absorptiometry) scan data across different vendors (Hologic, GE Lunar, Norland). It enables interoperability between systems that process bone density and body composition measurements.
| File | Description |
|---|---|
opendxa-core-v0.1.schema.json |
Core JSON Schema defining the structure for DXA exam data |
opendxa-site-registry-v0.1.json |
Registry of bone density measurement sites (ROIs) |
opendxa-region-registry-v0.1.json |
Registry of body composition regions |
opendxa-site-registry.schema.json |
Meta-schema for validating site registry files |
opendxa-region-registry.schema.json |
Meta-schema for validating region registry files |
The core schema defines:
- patient - Patient demographics (ID, sex, date of birth, age)
- exam - Exam metadata (ID, date, indication, facility, operator)
- device - Scanner information (manufacturer, model, software version)
- bone_density - BMD measurements including:
- Sites (lumbar spine, hip, femoral neck, forearm, whole body)
- T-scores and Z-scores
- WHO classification (normal, osteopenia, osteoporosis)
- FRAX fracture risk assessment
- body_composition - Body composition data including:
- Total body metrics (fat mass, lean mass, BMC, percent body fat)
- Regional measurements (appendicular, trunk, android, gynoid, visceral)
- Derived metrics (android/gynoid ratio, appendicular lean mass index)
- quality_control - Scan quality indicators
- source - Data provenance (ingestion method, parser version)
The site registry defines canonical bone density measurement locations:
- Individual vertebrae: L1, L2, L3, L4
- Composites: L1-L4 (primary diagnostic), L2-L4
- Femoral neck (left, right, worse)
- Total hip (left, right, worse)
- Trochanter (left, right)
- Ward's area (deprecated)
- 1/3 radius (non-dominant preferred)
- Total forearm
- Whole body
- Total body less head (TBLH) - preferred for pediatric
The region registry defines body composition measurement areas:
- Arms (left, right, total)
- Legs (left, right, total)
- Appendicular total (for sarcopenia assessment)
- Trunk, trunk less head
- Pelvis, ribs
- Android region
- Gynoid region
- Visceral fat
- Total body
- Total body less head (TBLH)
Validate DXA data against the schema:
import json
import jsonschema
with open("opendxa-core-v0.1.schema.json") as f:
schema = json.load(f)
with open("my-dxa-exam.json") as f:
data = json.load(f)
jsonschema.validate(data, schema)Validate registry files against their meta-schemas:
import json
import jsonschema
# Validate site registry
with open("opendxa-site-registry.schema.json") as f:
site_schema = json.load(f)
with open("opendxa-site-registry-v0.1.json") as f:
site_registry = json.load(f)
jsonschema.validate(site_registry, site_schema)
# Validate region registry
with open("opendxa-region-registry.schema.json") as f:
region_schema = json.load(f)
with open("opendxa-region-registry-v0.1.json") as f:
region_registry = json.load(f)
jsonschema.validate(region_registry, region_schema)Schema versions follow v{major}.{minor} format:
- Major: Breaking changes to required fields or structure
- Minor: Additions, deprecations, or non-breaking refinements
Current version: v0.1
- ISCD Official Positions - International Society for Clinical Densitometry guidelines
- WHO Fracture Risk Assessment Tool (FRAX) - 10-year fracture probability calculator
- JSON Schema 2020-12 - Schema specification
MIT License