Breaking changes:
- Table columns renamed to better match FHIR names
- Overhaul of how codings are handled - now dynamically detected and joined as appropriate
- All core tables are strictly 2 dimensional; unnesting should not be required if using core as the basis.
- Minimum python version is now 3.10
Other major changes:
- Core builds :should: now gracefully react to missing nested data from the EHR
- magical string `cumulus_none` added to reflect cases where null data was recieved from a downstream system
- Added missing required/must support fields from US Core R4
- Overhaul of template infrastructure to better centralize/reuse code
- Added duckdb support, which we are now using for unit tests
- Propensity score matching added as an available statistical library
Minor changes:
- Schema validation is now more robustly case insensitive
- Added additional coding fields to the discovery study
- Added `--archive` cli command for storing study data outside athena
- Added `--generate-sql` cli command for making example output from a study's jinja templates
- Added `--generate-md` cli command to create markdown documentation directly from a database
- Switched to ruff for linting/security
- `id` field is now always the first column in a FHIR resource table