Releases: uwrit/leaf
3.11.4 (2024-11-06)
Well howdy, it's been a while! Thank you to everyone who has contacted the Leaf development team and continued helping to refine Leaf and make it better. This is a largely maintenance release which fixes a few outstanding bugs and upgrades dependencies.
Bug Fixes
-
#590 - On the Visualize screen, a version upgrade for the Recharts library caused certain labels in the visualizations to overlap with bars.
-
#602 - Both patients actually > age 89 as well as patients age 89 were indicated as Age: 89 on the Patient List screen. These now should show ">89" and "89", respectively.
Upgrading to 3.11.4
- Client app and server API - Download and deploy the latest client and server compiled files under Assets, included in this release (or compile on your own as described in the Leaf installation instructions), making sure to first remove any previously deployed instances.
- Database - execute the 3.11.3__3.11.4 database update script on your Leaf application database.
3.11.3 (2023-4-19)
This release adds support for customization of Leaf's splash page, dependency upgrades (including .NET Core 6!), and various bug fixes and minor changes.
New features
- #578 - Leaf's splash page now allows for custom credits. You can add multiple logos and even custom text. Example:
- #587 - In a related feature, in case you don't need the QI/Research selection screen but DO need to show an attestation, you can now configure the splash screen to skip directly to the attestation. Simply set
Attestation.SkipModeSelection
:true
Minor features
- #509 - The Patient List now allows for custom date ranges.
Bug fixes
- #515 - On the Patient List, birthdates could be off by several hours due to timezone offsets.
- #586 - The admin panel could fail to load if no record is in the app.DemographicQuery table.
- #558 - Upon exporting a Patient List to csv, in certain cases columns would be duplicated.
- #553 - To avoid syntax errors specific to Oracle, Leaf avoids using underscores in table aliases and avoids using "AS" for table alias syntax (e.g., "mytable
ASX").
Upgrading to 3.11.3
- IMPORTANT Leaf 3.11.3 is the first version of the API to use .NET Core 6. Make sure you update your app server environment appropriately, with compilation done using the .NET 6 SDK and deployment with .NET 6 Runtime.
- Client app and server API - Download and deploy the latest client and server compiled files under Assets, included in this release (or compile on your own as described in the Leaf installation instructions), making sure to first remove any previously deployed instances.
- Database - execute the 3.11.2__3.11.3 database update script on your Leaf application database.
3.11.2 (2022-10-27)
New features
-
#575 - Basic demographics columns can now be given custom names. Custom names can be configured in the Admin Panel and will override Leaf defaults when shown in the Patient List & during export.
-
#574 - Ever had additional columns you'd like to be automatically added to the Patient List default Basic Demographics (without users needing to manually add them everytime)? You can now do so by creating a Dataset and checking
Load by Default
in the Admin Panel.
Minor changes
- #559 - UI dependent libraries with security warnings have been upgraded.
- #509 - Patient List datasets can now be filtered by custom dates, similar to Find Patients cohort queries.
- #489 - Patient List dataset time filters now default to "Anytime".
Bug fixes
- #558 - When exporting to CSV using a multi-row dataset (i.e., a 1:M relationship between a patient and data), data would be accidentally duplicated.
- #515 - Birth and death dates in the default Basic Demographics dataset would be erroneously offset by a few hours.
Upgrading to 3.11.2
- Client app and server API - Download and deploy the latest client and server compiled files under Assets, included in this release (or compile on your own as described in the Leaf installation instructions), making sure to first remove any previously deployed instances.
- Database - execute the 3.11.0__3.11.1 and 3.11.1__3.11.2 database update script on your Leaf application database. (3.11.1 was not made an official release, thus the 2 scripts)
3.11.0 (2022-05-05)
This release adds support for some of the most oft-requested Leaf features! Specifically:
- Support for database vendors besides SQL Server
- Support for App and Clinical databases on separate servers
New Features
-
#300 - The specific database vendors supported are:
To specify your database vendor, set the new
Db.Clin.RDBMS
property in theappsettings.json
file:
If using Google BigQuery for
RDBMS
, yourLEAF_CLIN_DB
environment variable should be your BigQuery ProjectId, rather than a connection string. Leaf further assumes that you also have aGOOGLE_APPLICATION_CREDENTIALS
environment variable and associatedkey.json
file. See https://cloud.google.com/docs/authentication#getting_credentials_for_server-centric_flow for more information.Note that
Db.Clin.RDBMS
is required, even if you are planning to (continue) using SQL Server. -
#514 - Related to support for new database flavors, this also enables the App and Clinical databases to be deployed to separate databases servers (which is required if not using SQL Server, else optional).
-
#513 - The Visualize and Patient List screens can now be enabled, even when
LowCellMasking
is on. Special thanks to @artgoldberg and @glabrie10 for invaluable implementation suggestions and ideas.
Minor changes
- #489 - The Patient List "+ Add More Data" modal now defaults to "Anytime" (previously was "Past 6 Months").
Upgrading to 3.11.0
- Client app and server API - Download and deploy the latest client and server compiled files under Assets, included in this release (or compile on your own as described in the Leaf installation instructions), making sure to first remove any previously deployed instances.
- Database - execute the 3.10.1__3.11.0 database update script on your Leaf application database.
- appsettings.json - Update the appsettings file as specified above.
3.10.1 (1-11-2022)
Leaf 3.10.1 continues a focus on adding community-requested features, in this release thanks to collaboration and extensive input from @artgoldberg at Mt. Sinai, who has been a great partner and has helped us continue to improve Leaf. Most of the features in this release were suggested and brainstormed by Professor Goldberg.
New features
-
#453 - Leaf can now be set to "Maintenance Mode", which prevents users from logging in and running queries, while Leaf Admins are able to. As maintenance mode is designed to be managed programmatically, there is no admin UI component. Instead, Admins can set Leaf to maintenance mode via the Leaf app database
app.ServerState
table.To set Leaf to maintenance mode immediately, run something like:
UPDATE app.ServerState SET IsUp = 0 , Updated = GETDATE() , UpdatedBy = 'admin'
To set Leaf to maintenance mode from and until a specified time, run something like:
UPDATE app.ServerState SET DowntimeFrom = '2022-02-01 17:00:00' /* Feb. 1st 5pm */ , DowntimeUntil = '2022-02-01 19:00:00' /* Feb. 1st 7pm */ , Updated = GETDATE() , UpdatedBy = 'admin'
Leaf will automatically initiate and end maintenance mode at the intervals specified in
DowntimeFrom
andDowntimeUntil
. You can also set an optional message to users usingDowntimeMessage
, else Leaf will default to showing: -
#495 - Leaf can also notify users of new features, upcoming events, or any other custom message needed with the Notifications feature. Like maintenance mode, notifications are designed to be used programmatically via the Leaf database.
To send a notification to users, run something like:
DECLARE @msg NVARCHAR(1000) = 'Leaf will be down for maintenance on Wednesday February 1st from 5 to 7pm.' DECLARE @user NVARCHAR(20) = 'admin' DECLARE @showUntil DATETIME = '2022-02-01 17:00:00' INSERT INTO app.Notification (Message, Until, Created, CreatedBy, Updated, UpdatedBy) SELECT @msg, @showUntil, GETDATE(), @user, GETDATE(), @user
The message will appear in the lower-right corner of users' screens:
Note that even active, already-logged-in users will be shown the message as the client syncs at 30 second intervals to the server and updates users with any new notifications. Like maintenance mode, notifications can also be set to expire by specifying the
Until
SQL column.
Minor features and changes
- #490 - Contributed by @jnothman, Patient List datasets now show a nice icon to better indicate any date filters present:
- #476 - Also by @jnothman, the default text shown to users for queries not yet saved is now "Unsaved Query", rather than "New Query" (previous).
- #498 - The term "blacklist" in database tables and API services has been renamed to "Invalidated".
Upgrading to 3.10.1
- Client app and server API - Download and deploy the latest client and server compiled files under Assets, included in this release (or compile on your own as described in the Leaf installation instructions), making sure to first remove any previously deployed instances.
- Database - execute the 3.10.0__3.10.1 database update script on your Leaf application database.
- appsettings.json - No changes are needed to the appsettings file.
3.10.0 (10-19-2021)
Leaf 3.10.0 focuses on adding community-requested features for user authorization, custom attestations, maintenance and more.
New features
-
#465 - Leaf now allows for user Authorization to be handled by SQL tables within the Leaf app database. Note that this is not Authentication, which still relies on SAML2 for determining the user.
To enable app database-based authorization:
- Set
Authorization.Mechanism
to"APPDB"
- Run the 3.9.2__3.10.0 database migration script to add two SQL new tables for user authorization.
This feature has no UI component and is designed to be managed purely by admins via SQL. User roles and groups can be added like the example below, with
ScopedIdentity
matching the username sent by the IdP: - Set
-
#466 - In cases where all authenticated users should be allowed as Leaf users (rather than only members of a specific group), you can now allow them by adding
Authorization.AllowAllAuthenticatedUsers
:true
:AllowAllAuthenticatedUsers
can be used with bothSAML2
andAPPDB
Authorization. -
#419 - Custom attestations can now be entered, superseding the default Leaf attestation text shown in the UI upon login (if enabled). This can be used by adding
Attestation.Type
andAttestation.Text
to the appsettings.json file, whereAttestation.Type
is either"HTML"
or"TEXT"
, andAttestation.Text
is an array of strings.The custom attestation will then be displayed to users:
Minor features and changes
-
#417 - The logout button and feature can now be disabled, requiring a small modification to the appsettings.json file:
Change
to
Where the previous
Authentication.LogoutURI
is nowAuthentication.Logout.URI
, and can be disabled usedAuthenication.Logout.Enabled
=false
. -
#425 - On the NIH table on the
Visualize
screen, the subtext now notes that patients without demographic information are excluded from the counts.
Bug fixes
- #460 - When creating a concept in the Admin UI, Leaf would crash if dropdowns were added before first saving the concept.
- #447 - Leaf would incorrectly assume a SQL query to be illegal if the token
WITH
appeared within the WHERE clause. - #426 - Concept search would occasionally show a blank (no concepts) if the same search string was used twice.
- #421 - Long concept text within
Timelines
would occasionally be cutoff. - #418 - Timestamps shown in the
Patient List
would not match those of the database due to timezone shifting behavior in the browser. - #420 - In cases where the user access token had been invalidated but was still cached in the browser, the web client would attempt to re-use it and fail. It now attempts to request a new token on failure.
Upgrading to 3.10.0
- Client app and server API - Download and deploy the latest client and server compiled files under Assets, included in this release (or compile on your own as described in the Leaf installation instructions), making sure to first remove any previously deployed instances.
- Database - execute the 3.9.2__3.10.0 database update script on your Leaf application database.
- appsettings.json - Update your appsettings.json file to include the changes outlined above.
3.9.0 (4-27-2021)
Leaf 3.9.0 focuses on the new Timelines
feature (described below), along with a few bug fixes and minor additions.
New features
-
#385 - Ever think, "Well I'm glad Leaf can make a query to find these patients, but it sure would be nice to know how many had criteria
x
,y
, andz
in the following 3, 6, 9, and 12 months without needing to make so many queries" ?Timelines
allow users to identify anIndex Event
for a cohort, then quickly view other events that happened before and/or after the index event, at intervals of their choosing.Even better,
Timelines
requires no special configuration. If you already have Leaf up and running,Timelines
just works.To use
Timelines
, add the following to your appsettings.json file:
Minor features
- #407 - Concept search now preserves apostrophes and Concept subtext is also included for tokenization and search.
Bug fixes
- #405 - Leaf uses a library called Serilog for handling logging events. We found, however, that by default Serilog deletes log files greater than 31 days old. This is now fixed and no log files should be automatically deleted.
- #382 - If federated Leaf instance users attempted to pull
Patient List
datasets besides Basic Demographics, an error would be thrown and no data pulled.
Upgrading to 3.9.0
- Client app and server API - Download and deploy the latest client and server compiled files under Assets, included in this release (or compile on your own as described in the Leaf installation instructions), making sure to first remove any previously deployed instances.
- Database - execute the 3.8.2__3.9.0 database update script on your Leaf application database.
- appsettings.json - Update your appsettings.json file to include the
Client: Timelines
section shown above, withEnabled
:true
if you'd like to useTimelines
.
3.8.2 (12-19-2020)
This is a patch release to fix several bugs and a simple feature to allow custom site-specific CSS.
New features
- #375 - Adds a simple
build/styles/custom.css
file upon running the usualnpm run build
statement to build a production client. Simply edit thecustom.css
file and Leaf will automatically show your changes, no hacks needed. See the example custom.css file for specific elements and examples.
Minor changes
- #377 - The Leaf icon is now shown in the corner of the browser tab.
Bug fixes
- #374 - For (rare) sites disabling the attestation and disabling de-identification, Leaf would not show identified fields in the Patient List.
- #376 - Patient List Dataset queries for "From Specific Encounter" were ignored if the query strategy is set to
PARALLEL
.
3.8.1 (10-1-2020)
This is a small patch release to fix a bug related to displaying the CSV export modal.
Bug fixes
- #368 - When REDCap export is disabled, the CSV export functionality was not displayed to users.
Upgrading to 3.8.1
- Client app and server API - Download and deploy the latest client and server compiled files under Assets, included in this release (or compile on your own as described in the Leaf installation instructions), making sure to first remove any previously deployed instances.
- Database - execute the 3.8.0__3.8.1 database update script on your Leaf application database. Note that in this patch release there are no structural database changes; this simply updates the Leaf version.
3.8.0 (9-17-2020)
Leaf version 3.8.0 adds some exciting new features, and requires an upgrade from .NET Core 2.2 to the .NET Core 3.1.x Runtime.
New features
- #364 - You can now configure Leaf to either run
Find Patients
queries using the past Common Table Expression, or CTE approach, where Leaf wraps each panel's query in a single CTE, or instead run individual queries for each panel in parallel. The latter can be useful in cases where you find patterns of one particularly expensive panel's query slowing down the entire CTE.
For example, given the hypothetical query:
Leaf would generate SQL similar to (formatted for readability):
Note that in either case, the number of patients found is exactly the same but the strategies to find the cohort are different. Using the CTE
option, Leaf combines all panel queries into a single query and leverages the SQL engine to find the intersect of the queries. Using the Parallel
option, Leaf runs each query in parallel (or technically, concurrently) and map/reduces the results of each query to find the cohort in the Leaf API.
These options can be set in a new subsection of the appsettings file, under Db.CLin.
:
- #4 - CSV exports are now available! A long-requested feature, Leaf can now export directly to CSV, in addition to the traditional REDCap export. Leaf will generate a CSV file for each
Patient List
dataset loaded.
- #359 - The
"@<scope>"
portion of the username exported to REDCap can now be omitted by setting theExport.REDCap.IncludeScopeInUsername
setting tofalse
:
Bug fixes
- #358 - If an ampersand ("&") appeared in the body of the data exported to REDCap, REDCap would throw an error when deserializing from JSON. Ampersands are now converted to empty spaces.
Upgrading to 3.8.0
- IMPORTANT - Leaf 3.8.0 now requires the .NET Core 3.1.x Runtime, which must be installed and replace the previously used .NET CORE 2.2.
- Client app and server API - Download and deploy the latest client and server compiled files under Assets, included in this release (or compile on your own as described in the Leaf installation instructions), making sure to first remove any previously deployed instances.
- Database - execute the 3.7.2__3.8.0 database update script on your Leaf application database. Note that in this release there are no structural database changes; this simply updates the Leaf version.