Skip to content

Releases: uwrit/leaf

3.11.3 (2023-4-19)

24 Apr 23:48
73d1ee7
Compare
Choose a tag to compare

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:

image

image

  • #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 AS X").

Upgrading to 3.11.3

  1. 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.
  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.
  3. Database - execute the 3.11.2__3.11.3 database update script on your Leaf application database.

3.11.2 (2022-10-27)

28 Oct 19:42
673b896
Compare
Choose a tag to compare

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.

    image

  • #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.

    image

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

  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.
  2. 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)

05 May 18:51
dc65c19
Compare
Choose a tag to compare

This release adds support for some of the most oft-requested Leaf features! Specifically:

  1. Support for database vendors besides SQL Server
  2. Support for App and Clinical databases on separate servers

New Features

  • #300 - The specific database vendors supported are:
    image

    To specify your database vendor, set the new Db.Clin.RDBMS property in the appsettings.json file:
    image

    If using Google BigQuery for RDBMS, your LEAF_CLIN_DB environment variable should be your BigQuery ProjectId, rather than a connection string. Leaf further assumes that you also have a GOOGLE_APPLICATION_CREDENTIALS environment variable and associated key.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

  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.
  2. Database - execute the 3.10.1__3.11.0 database update script on your Leaf application database.
  3. appsettings.json - Update the appsettings file as specified above.

3.10.1 (1-11-2022)

11 Jan 21:46
Compare
Choose a tag to compare

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 and DowntimeUntil. You can also set an optional message to users using DowntimeMessage, else Leaf will default to showing:

    image

  • #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:

    image

    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:
    image
  • #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

  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.
  2. Database - execute the 3.10.0__3.10.1 database update script on your Leaf application database.
  3. appsettings.json - No changes are needed to the appsettings file.

3.10.0 (10-19-2021)

19 Oct 21:39
Compare
Choose a tag to compare

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:

    1. Set Authorization.Mechanism to "APPDB"

    image

    1. 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:

    image


  • #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:

    image

    AllowAllAuthenticatedUsers can be used with both SAML2 and APPDB 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 and Attestation.Text to the appsettings.json file, where Attestation.Type is either "HTML" or "TEXT", and Attestation.Text is an array of strings.

    HTML usage example:
    image

    Text usage example:
    image

    The custom attestation will then be displayed to users:

    image

Minor features and changes

  • #417 - The logout button and feature can now be disabled, requiring a small modification to the appsettings.json file:

    Change

    image

    to

    image

    Where the previous Authentication.LogoutURI is now Authentication.Logout.URI, and can be disabled used Authenication.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

  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.
  2. Database - execute the 3.9.2__3.10.0 database update script on your Leaf application database.
  3. appsettings.json - Update your appsettings.json file to include the changes outlined above.

3.9.0 (4-27-2021)

28 Apr 00:59
Compare
Choose a tag to compare

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, and z in the following 3, 6, 9, and 12 months without needing to make so many queries" ?

    Enter Timelines:
    leaf_3 9_demo

    Timelines allow users to identify an Index 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:
    image

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

  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.
  2. Database - execute the 3.8.2__3.9.0 database update script on your Leaf application database.
  3. appsettings.json - Update your appsettings.json file to include the Client: Timelines section shown above, with Enabled: true if you'd like to use Timelines.

3.8.2 (12-19-2020)

18 Dec 23:48
3110989
Compare
Choose a tag to compare

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 usual npm run build statement to build a production client. Simply edit the custom.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

3.8.1 (10-1-2020)

01 Oct 19:28
739d7a7
Compare
Choose a tag to compare

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

  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.
  2. 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)

18 Sep 00:19
Compare
Choose a tag to compare

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:
image

Leaf would generate SQL similar to (formatted for readability):


image

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.:
image

  • #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.

image

image

image

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

  1. 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.
  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.
  3. 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.

3.7.2 (8-27-2020)

27 Aug 23:41
Compare
Choose a tag to compare

This is a patch release to fix two relatively minor bugs.

Bug fixes

  • #347 - When viewing the Patient List in Identified mode, the UI would not show the deceasedDateTime column.
  • #356 - After navigating away from the Find Patients screen, the root concepts search dropdown (starting with 'All Concepts', allowing users to search only for concepts under a given root) would become blank.

Upgrading to 3.7.2

  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.
  2. Database - execute the 3.7.1__3.7.2 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.