Releases: CDCgov/dibbs-ecr-viewer
7.0.0
What's Changed
This release removes an unused container (validation) which requires an infrastructure change. These changes will be incorporated into the various AWS, Azure, and GCP releases we support.
This release also adds an auditing system to the eCR viewer which logs user actions to the database.
Release Summary
This release contains many visual updates to the Viewer to bring it in line with general DIBBs styling.
Admins can now filter users by Program Area.
Active Problem Status has been added to the viewer as well as additional social history fields.
Audit logging infrastructure and logs for creating and updating users
🚧 Required Infrastructure Changes 🚧
This is a breaking change for AWS users as we will no longer be deploying the Validation container. Please reference our AWS terraform for updates.
This will also be breaking if VM users attempt manual upgrades. Please upgrade using the Upgrade Wizard to avoid this.
📊 Automated Database Migrations 📊
Migrations must be run for this release to create the necessary database resources for auditing.
🏕️ Features
- feat: implement dibbs design system by @mcmcgrath13 in #922
- refactor: Remove validation service and references by @gordonfarrell in #877
- feat: add tooltip icon by @mcmcgrath13 in #923
- feat: Filter users by program area by @angelathe in #898
- docs: Create example for Rhapsody 7 with JWT by @austin-hall-skylight in #929
- feat: 3.1 Spec - Add active problem status by @angelathe in #928
- feat: clear library search with X or Esc by @gordonfarrell in #931
- fix: search tweaks by @gordonfarrell in #944
- fix: string sorting should ignore case by @mcmcgrath13 in #948
- feat: Add social history fields to eCR Viewer by @angelathe in #945
- feat: Display therapeutic medicine response observation by @angelathe in #969
- docs: Update technical testing guide for version 6 by @akasper in #950
- docs: Update Rhapsody examples by @austin-hall-skylight in #985
- test: enable Azure AD with e2e tests by @mcmcgrath13 in #614
- feat: spike - audit logging by @mcmcgrath13 in #947
- feat: display structured plan of treatment by @mcmcgrath13 in #980
Full Changelog: 6.0.0...7.0.0
6.0.0
What's Changed
THIS IS A BREAKING RELEASE for users using the NON_INTEGRATED
or DUAL
configurations. Please read more below before installing.
Release Summary
This release introduces user and program management to the eCR Viewer for users using the NON_INTEGRATED
or DUAL
configurations. Program areas will be created with a selection of conditions, and standard users must be assigned to program areas in order to view eCRs with those conditions. Admins can manage program areas and users via the User management and Program management pages.
Please follow the Setup Guide for instructions on how to initialize an admin user and for more information on admin and standard user roles and permissions.
Along with these features we have included a time-based auto sign-out feature that will require users to log back in after periods of inactivity.
🚧 Required Infrastructure Changes 🚧
This release requires no new infrastructure changes.
📊 Automated Database Migrations 📊
This release includes an update to the ecr_labs
and patient_address
tables in the extended schema. Users using the extended schema will be required to call the migrate-db
API endpoint.
Running migrations will also update the latest conditions reference data from the TES.
🏕 Features
- feat: update TES DB for latest release, handle multiple versions by @mcmcgrath13 in #846
- refactor: rename metadata parsed fields to match db columns by @mcmcgrath13 in #868
- refactor: make
get_fhir_service
a regular service by @mcmcgrath13 in #876 - fix: change lab and address pks to be compound by @mcmcgrath13 in #873
- feat: Update header and add footer by @gordonfarrell in #766
- feat: auto sign out by @mcmcgrath13 in #831
- feat: add procedure details by @mcmcgrath13 in #867
- fix: sticky admin form header by @mcmcgrath13 in #896
- feat: add authorization for ecr viewer page by @mcmcgrath13 in #882
- feat: Edit user page by @angelathe in #863
- feat: admin user type filter by @mcmcgrath13 in #871
- fix: get user/program management actually working by @mcmcgrath13 in #855
- fix: make space for error alert on forms by @mcmcgrath13 in #842
- fix: sort program areas in user form by @mcmcgrath13 in #889
- fix: Allow user creation/edits with no program areas assigned by @angelathe in #911
- docs: Add Rhapsody 7 OAuth example by @austin-hall-skylight in #837
- docs: add technical testing guide to deployed docs by @mcmcgrath13 in #892
- docs: Add user and program area management to
setup.md
by @angelathe in #919](#919) - docs: Update setup guide (nits) by @angelathe in #920
Full Changelog: 5.0.0...6.0.0
5.0.0
Release Summary
THIS IS A BREAKING RELEASE for non-integrated and dual deployments! Please read more below before installing.
This release adds the public health emergency information to the eCR viewer and fixes a bug with the Provider Details section. Additionally, the condition code is now stored on the ecr_rr_conditions
table, which requires a database migration. This will be leveraged in the future to enable condition-based authorization for eCR viewing.
🚧 Required Infrastructure Changes 🚧
No infrastructure changes are included in this release
📊 Automated Database Migrations 📊
This release includes an update to the ecr_rr_conditions
table and will require calling the migrate-db
API endpoint.
What's Changed
🏕 Notable Updates
- docs: include API auth in Rhapsody 6 examples by @austin-hall-skylight in #759
- docs: Update README.md by @mcmcgrath13 in #772
- feat: Add foreign key on
ecr_rr_conditions
to thecondition_reference
table by @akasper in #678 - chore: update README to reflect the project by @emmastephenson in #830
- feat: Public Health Emergency Outbreak Info field by @JNygaard-Skylight in #680
- fix: provider details handling by @mcmcgrath13 in #777
🤐 Secret Future Features
- feat: already assigned condition confirmation modal by @mcmcgrath13 in #732
- feat: program details pane by @mcmcgrath13 in #728
- feat: program form condition search by @mcmcgrath13 in #762
- feat: add toast handling by @mcmcgrath13 in #739
- feat: add user form by @angelathe in #745
- feat: delete program area by @mcmcgrath13 in #738
- feat: program edit page by @mcmcgrath13 in #771
- fix: handling duplicate condition names by @mcmcgrath13 in #782
- feat: delete user by @mcmcgrath13 in #776
New Contributors
- @nickclyde made their first contribution in #748
Full Changelog: 4.0.0...5.0.0
4.0.0
What's Changed
THIS IS A BREAKING RELEASE! Please read more below before installing.
Release Summary
This release adds authentication to /api
routes. When calling the API to process eCRs, all users will need to pass a bearer token from either Rhapsody or their IDP to access the routes. In this release, it's still possible to save data without authentication directly to the orchestration container, but this will be removed in an upcoming release. Please see the guide, API documentation, and Rhapsody examples for more details about how to use this new release.
This release also adds a new /api/process-ecr
route to the eCR Viewer container, which replaces the now deprecated /api/process-zip
endpoint. The old process-zip
endpoint will also be removed in a coming release. The guide and API documentation have been updated with how to use this new endpoint.
🚧 Required Infrastructure Changes 🚧
There is one environment variable changes associated with the automated migrations. This change is only required for users running the NBS-integrated Viewer.
NBS_API_PUB_KEY
: Similar to NBS_PUB_KEY
but used for authenticating the /api
routes.
📊 Automated Database Migrations 📊
This release includes no new database migrations.
🏕 Features
- feat!: api auth by @mcmcgrath13 in #683
- feat: Add/modify Lab result & obs result status by @angelathe in #688
- feat: Add hospital admission and discharge diagnosis data to viewer by @gordonfarrell in #701
- feat:
process-ecr
api endpoint by @mcmcgrath13 in #712
🤐 Secret Future Features
These features are not available to end users yet, but they will be soon!
- feat: program area and conditions CRUD by @mcmcgrath13 in #673
- feat: user management table by @mcmcgrath13 in #692
- feat: user details pane by @mcmcgrath13 in #694
- feat: program management table by @mcmcgrath13 in #717
- feat: create program area form by @mcmcgrath13 in #718
Full Changelog: 3.4.0...4.0.0
3.4.0
Release Summary
This release adds support for automated database migrations for the non-integrated version of the Viewer. More information about these automated migrations is below.
This release also adds a sign-out button to the application, and added new docs to reference. It also adds basic user management tables to the application, which will be used in user permissions later.
🚧 Required Infrastructure Changes 🚧
There are two environment variable changes associated with the automated migrations. These changes are only required for users running the non-integrated Viewer.
METADATA_DATABASE_SCHEMA
: Optional. Possible values are "core" and "extended". Database schema to use for metadata storage. Core has a small subset of Extended. Default value is "extended".
METADATA_DATABASE_MIGRATION_SECRET
: Secret needed to apply migrations via the /migrate-db api route. If not set, a random UUID will be assigned by the application and logged to the server.
📊 Automated Database Migrations 📊
This release adds support for Kysely automated database migrations. These add two quality-of-life improvements for implementers of the Viewer:
- If the eCR Viewer database isn't up to date with the latest migrations, the application will show an error message
i. This means you can't get into a state where the data schema version doesn't match the application version. - Instead of running the SQL scripts manually, you'll call a new API endpoint that runs the migrations for you. See API documentation here.
What's Changed
🏕 Features
- feat: add occupational history accordion by @mcmcgrath13 in #645
- feat: Add Kysely-driven migrations by @akasper in #546
- feat: make
extended
the default schema, any schema on any db by @mcmcgrath13 in #656 - feat: add sign out button by @mcmcgrath13 in #670
- fix: eRSD Warnings by @angelathe in #643
- fix: eICR Processing Info render bug by @angelathe in #681
- feat: user CRUD and initial admin user creation by @mcmcgrath13 in #672
- fix: add fks to ecr tables by @mcmcgrath13 in #686
Full Changelog: v3.2.0...3.4.0
v3.3.1
Release Summary
This release adds support for automated database migrations for the non-integrated version of the Viewer. More information about these automated migrations is below.
This release also adds a sign-out button to the application, and added new docs to reference.
🚧 Required Infrastructure Changes 🚧
There are two environment variable changes associated with the automated migrations. These changes are only required for users running the non-integrated Viewer.
METADATA_DATABASE_SCHEMA
: Optional. Possible values are "core" and "extended". Database schema to use for metadata storage. Core has a small subset of Extended. Default value is "extended".
METADATA_DATABASE_MIGRATION_SECRET
: Secret needed to apply migrations via the /migrate-db api route. If not set, a random UUID will be assigned by the application and logged to the server.
📊 Automated Database Migrations 📊
This release adds support for Kysely automated database migrations. These add two quality-of-life improvements for implementers of the Viewer:
- If the eCR Viewer database isn't up to date with the latest migrations, the application will show an error message
i. This means you can't get into a state where the data schema version doesn't match the application version. - Instead of running the SQL scripts manually, you'll call a new API endpoint that runs the migrations for you. See API documentation here.
🏕 Features
- feat: add occupational history accordion by @mcmcgrath13 in #645
- feat: Add Kysely-driven migrations by @akasper in #546
- feat: make
extended
the default schema, any schema on any db by @mcmcgrath13 in #656 - docs: minor cleanup and re-org of env var docs by @mcmcgrath13 in #665
- feat: add sign out button by @mcmcgrath13 in #670
- fix: eRSD Warnings by @angelathe in #643
Full Changelog: v3.2.0...v3.3.1
v3.3.0
Release Summary
This release adds support for automated database migrations for the non-integrated version of the Viewer. More information about these automated migrations is below.
This release also adds a sign-out button to the application, and added new docs to reference.
🚧 Required Infrastructure Changes 🚧
There are two environment variable changes associated with the automated migrations. These changes are only required for users running the non-integrated Viewer.
METADATA_DATABASE_SCHEMA
: Optional. Possible values are "core" and "extended". Database schema to use for metadata storage. Core has a small subset of Extended. Default value is "extended".
METADATA_DATABASE_MIGRATION_SECRET
: Secret needed to apply migrations via the /migrate-db api route. If not set, a random UUID will be assigned by the application and logged to the server.
📊 Automated Database Migrations 📊
This release adds support for Kysely automated database migrations. These add two quality-of-life improvements for implementers of the Viewer:
- If the eCR Viewer database isn't up to date with the latest migrations, the application will show an error message
i. This means you can't get into a state where the data schema version doesn't match the application version. - Instead of running the SQL scripts manually, you'll call a new API endpoint that runs the migrations for you. See API documentation here.
🏕 Features
- feat: add occupational history accordion by @mcmcgrath13 in #645
- feat: Add Kysely-driven migrations by @akasper in #546
- feat: make
extended
the default schema, any schema on any db by @mcmcgrath13 in #656 - docs: minor cleanup and re-org of env var docs by @mcmcgrath13 in #665
- feat: add sign out button by @mcmcgrath13 in #670
- fix: eRSD Warnings by @angelathe in #643
Full Changelog: v3.2.0...v3.3.0
v3.2.0
Release Summary
This release fixes several user requests, including:
- Updated age calculations
- Improved error handling for data saving
- Consistent formatting of units in reference ranges
This release also adds new documentation and user guides, including sample Rhapsody routes.
🚧 Required Infrastructure Changes 🚧
No infrastructure changes are required in this release.
A change has been made to the eCR Viewer process-zip
endpoint to improve debugging. If you would like the FHIR bundle to be returned from the request, you can use the new return_fhir_bundle
parameter in the request. See API docs here.
What's Changed
🏕 Features
- fix: consistently format units in reference ranges by @mcmcgrath13 in #634
- fix: handle rollbacks on partially failed save by @mcmcgrath13 in #632
- fix: Make patient age field dynamic by @JNygaard-Skylight in #631
- fix: don't record exceptions for handled orchestration errors by @mcmcgrath13 in #635
- Add rhapsody docs and rlc, remove old example by @austin-hall-skylight in #637
- docs: add guide by @BobanL in #605
- feat: add optional flag to return bundle from process-zip by @mcmcgrath13 in #647
- docs: Update api-documentation.md by @emmastephenson in #653
Full Changelog: v3.1.0...v3.2.0
v3.1.0
Release Summary
This release adds several major features, including:
- Supporting GCP as a blob storage platform
- "Dual boot mode" authentication for jurisdictions who want to use both the eCR Library and NBS integration
- Using APHL's TES service to improve our relevant condition summaries
- Finalizing eCR grouping by
set_ID
in the Library
This release also adds an object-relational manager (ORM) to the eCR Viewer, which will help manage database connections. This change should be invisible to end users for now, but will make database management more seamless.
🚧 Required Infrastructure Changes 🚧
There are no required infrastructure changes with this release, but there is one suggested change for database management - see below.
Environment Variable change:
Previously, SQLServer database connections were managed through individual environment variables - SQL_SERVER_USER
, SQL_SERVER_PASSWORD
, etc. With this release, we recommend changing to the universal DATABASE_URL
environment variable to set your connection. This will allow you to specify more detailed connection strings, and manage things like the specific schema you're connecting to.
The legacy SQLServer environment variables will still be maintained for backwards compatibility in this release, but long-term DATABASE_URL
will be the supported connection setting.
What's Changed
🏕 Notable Features
- fix: eCR Library wrapper is inaccessible when no eCRs are found by @jakewheeler in #548
- feat: replace eRSD & RCKMS data with TES API data in TCRS by @jakewheeler in #532
- fix: process-zip saving metadata by @BobanL in #553
- fix: handle more phone number formats and fail more gracefully by @mcmcgrath13 in #561
- feat: add gcp support by @BobanL in #549
- fix: generify vital sign evaluation and display by @mcmcgrath13 in #567
- feat: make AZURE_CONTAINER_NAME optional in favor of ECR_BUCKET_NAME by @BobanL in #560
- fix: Misc notes display bug by @angelathe in #562
- feat(ecr-viewer): Add Keysely DB adapter by @akasper in #280
- fix: remove unused /fhir-api REST api route by @mcmcgrath13 in #572
- feat: dual boot mode by @mcmcgrath13 in #568
- feat: eCR grouping in library by @mcmcgrath13 in #577
Full Changelog: v3.0.0...v3.1.0
v3.0.0: docs: update release docs (#541)
Release Summary
This release adds support for authentication in the non-integrated version of the eCR Viewer. Supported authentication providers are Keycloak and Active Directory.
It also addresses the following end user requests:
- Default schema for the non-integrated Viewer is changed from DBO to ecr_viewer
- Supports SQL Server 2016
- Updates eCR Summary to include patient race/ethnicity and guardian information if minor
- Changes age calculations across the Viewer to be from encounter date
A number of technical debt and bug fixes issues are also addressed in this release, including an update to Python 3.13, adds dependency and version information to the /health-check endpoint, and changes to eCR Library display.
🚧 Required Infrastructure Changes 🚧
This release requires several infrastructure changes for the non-integrated Viewer. Users will need to update environment variables (see below) and run the new versions of our SQL scripts.
Environment Variable change:
Environment variables related to authentication have been added for when the viewer is configured for NON-INTEGRATED use. The 6 new auth environment variables are:
- NEXTAUTH_URL - This is the full URL for the API path of the ecr-viewer. For example https://your-site.com/ecr-viewer/api/auth
- NEXTAUTH_SECRET - Used by eCR viewer to encrypt authentication. This can be generated by running
openssl rand -base64 32
. - AUTH_PROVIDER - Accepts values of
ad
for Active Directory orkeycloak
for Keycloak - AUTH_CLIENT_ID - Client ID for auth service
- AUTH_CLIENT_SECRET - Secret for the auth service
- AUTH_ISSUER - is either the Azure AD Tenant ID or the URL issuer for keycloak. Keycloak’s issuer should inclue the realm - e.g. https://my-keycloak-domain.com/realms/My_Realm
For an example of these new Environment Variables please see the [env.sample](https://github.com/CDCgov/dibbs-ecr-viewer/blob/main/containers/ecr-viewer/.env.sample) file.
Creating a new client for eCR Viewer in the identity provider
For Azure AD/Entra, please follow [these steps to create a new client application](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application#register-a-new-application). In addition, add a "Web" redirect URI to point to ecr-viewer, for example https://example.com/ecr-viewer/api/auth/callback/azure-ad
.
For Keycloak, please follow [these steps to create a new client](https://www.keycloak.org/docs/latest/server_admin/index.html#proc-creating-oidc-client_server_administration_guide). In addition, add ecr-viewer callback to the Valid redirect URIs
, for example http://example.com/ecr-viewer/api/auth/callback/keycloak
.
🏕 Notable Features
- Update DB schemas to use new ecr_viewer schema not dbo by @gordonfarrell in #319
- fix: add "no eCR" message when no data listed by @mcmcgrath13 in #330
- fix: correct spelling of "Reportibility" to "Reportability" by @JNygaard-Skylight in #342
- feat: setup keycloak provider by @BobanL in #346
- feat: setup azure ad (aka entra id) provider by @BobanL in #347
- ci: create dependabot.yml by @BobanL in #350
- fix: update heading levels and move Immunizations to under Clinical S… by @JNygaard-Skylight in #333
- ci: limit dependabot by @BobanL in #381
- chore: update package manager version by @BobanL in #382
- fix: restore ecr library table stickiness by @mcmcgrath13 in #405
- feat: enable auth in middleware by @BobanL in #349
- fix: library user preferences by @mcmcgrath13 in #406
- build: create orchestration dev-requirements by @BobanL in #404
- fix: use onset age if available, only calculate if date present by @mcmcgrath13 in #414
- chore: Enable @typescript-eslint/no-explicit-any ESLint rule by @jakewheeler in #410
- refactor: replace error throw with console log for missing reportable triggers by @JNygaard-Skylight in #427
- refactor: bundle fhir paths instead of api return by @mcmcgrath13 in #413
- chore: upgrade Python 3.13 by @JNygaard-Skylight in #432
- fix: Reportability Summary table should not be visible when no data is available by @jakewheeler in #452
- feat: add dependencies and version as part of the /health-check by @BobanL in #455
- chore: rename ECR_DATA table to be lowercase by @BobanL in #466
- fix: update aria-labels to filter buttons when active by @austin-hall-skylight in #471
- feat!(ui): Add sign-in (redirect) page by @angelathe in #395
- fix: Empty author practitioner by @angelathe in #480
- feat: Add race and ethnicity to eCR Summary by @angelathe in #481
- fix: change ecr_viewer_url to use host.docker.internal by @BobanL in #482
- feat: Age calculation fixes (app-wide) by @jakewheeler in #463
- feat: add patient/guardian info, refactor formatters a bit by @mcmcgrath13 in #484
- fix: side nav scroll by @mcmcgrath13 in https://github.com/CDCgov/dibbs-ecr-viewer/pull/491DCgov/dibbs-ecr-viewer/pull/500
- Remove duplicate auth logic by @angelathe in #507
- feat: add search param validation middleware by @mcmcgrath13 in #486
- feat: replace STRING_AGG in order to support sqlserver 2016 by @BobanL in #476
- fix: next-auth url base path to be dynamic by @BobanL in #506
- feat!: simplify auth vars by @BobanL in #511
- fix: add revalidate on /health-check to force refresh by @BobanL in #539
Full Changelog: v2.0.0...v3.0.0