Breaking changes
* Actions/builders APIs now primarily work from StudyConfig and StudyManifest objects
* Minimum python is now 3.11
* Changed `_code_system` in tables to just `_system`
* Replace `core__medicationrequest` with `core__medication`, removed previous version
* Removed `core__study_period`, offloaded study definitions to downstream studies
Deprecation warning
* `core__observation` is now considered deprecated - use a specific observation profile table, if one exists. Once we have more profile coverage, `core__observation` will be removed.
Major changes
* Added a generic way to log to a study's transaction table
* Allow studies to specify their own unique schema (intended for independent data sets, like code systems)
* Allow studies to specify their own CLI args with `--option`
Minor changes/bugfixes
* Several new generic templates & jinja syntax helpers
* Added StudyManifest, StudyConfig, BaseTableBuilder, and CountsBuilder to the package-level API
* Use `cumulus-fhir-support` for reading ndjson
* Fixed Athena's ability to export "decimal" types
* Updated CLI to use terms like `database` and `schema` in the context of a specific database's nomenclature
* Added $expand to the UMLS VSAC API, and paginate results
* `clean` CLI arg now removes views
* `generate-sql` now masks S3 paths in output
**Full Changelog**: https://github.com/smart-on-fhir/cumulus-library/compare/v2.3.0...v3.0.0