Releases: aces/Loris
LORIS Release v22.0.0
This release contains user interface improvements, code clean up, bug fixes and new features. This release assigns users to projects, and begins the process of adding project-based permissions to LORIS in addition to the site-based permissions that already exist.
Some of the major changes to this release are:
Summary
Features
- New module: Imaging QC. Note this module requires an installed MRI Parameter Form instrument in order to load.
- Addition of project affiliations to users. #5009
- Addition of the project flag to timepoints and rename of the
ProjectID
column toRegistrationProjectID
in thecandidate
table. #4919 - Creation of script to modify configuration settings from the back-end. #4973
- Addition of the ability to generate PSCIDs based on the project the candidate is affiliated with. #5285
- Automatically populate PSCID, CandID & visit label based on the filename upon upload in the imaging uploader module #5306
Updates and Improvements
- Paths in the configuration module will be validated before saving. Invalid paths will not be accepted. #4023
- Adding the
image_type
header to themri_protocol
table to allow scan type discrimination based on that header. #4448 - Improvement of the efficiency of
DataTable
filtering for large data tables. #5299 - Hiding of the UI option allowing users to edit their own approval status. #5353
- Addition of a new permission for "view only" in the data release module. #5557
- Help text in most modules has been rewritten to be more user-friendly.
Bug Fixes
- Fixes slash bug when including directory for endpoint in Module class. #5236
- Addition of the
-p
flag tomkdir
so that the install script won't fail whenuser_uploads/
already exists (for whatever reason) indocument_repository
ordata_release
module folders. #5245 - Restoring possibility to read
.nii.gz
files with Brainbrowser. #5314 - Addition of permissions to access Brainbrowser Module. #5530
Clean Up
- Renaming SQL
project_rel
table toproject_subproject_rel
. #4492 - Deletion of the full MINC
header
entry fromparameter_file
as not used anymore. #4925 - Removal of the
mri_acquisition_dates
table of the database. #4962 - Removal of unused functions in the
Database.class.inc
class. #4974 - Removal of unused variables from
imaging_uploader.class.inc
. #5307 - Renaming of the "Quality Control" module to "Imaging Quality Control". #5620
- Renaming of the "Data Team Helper" module to "Behavioural Quality Control". #5620
Notes for Existing Projects
- All paths in the Configuration module have to be valid (existing and writeable/readable on the file system) in order to be able to save a change in the module. #4023
- Instruments are now loaded through a module in LORIS. The URL will thus now include a n
/instruments/
element before the instrument name. Old links to instruments will no longer be valid. #4229 - Modified the
mri_protocol
table to includeimage_type
header information so that a scan can be identified based on that parameter along with the other acquisition parameters (particularly useful to distinguish between fieldmap magnitude and fieldmap phase images for example) #4448 - A project selection is now mandatory when creating a timepoint. #4919
- All users must now be affiliated to projects. Given the novelty of this feature, all users are automatically added to all projects by default. #5009
- Some functions in the database class were removed since they are no longer being used. These removals might affect project code using said functions. #4974
NodeJS
andNPM
will have to be installed in order to upgrade to this version #5017- No need anymore to manually enter PSCID, CandID and Visit label in the upload form of the imaging uploader since they are not being automatically populated based on the filename upon upload #5306
- The "Quality Control" module has been renamed to "Imaging Quality Control" and moved under the "Imaging" tab of the menu #5620
- The "Data Team Helper" module has been renamed to "Behavioural Quality Control" and moved under the "Clinical" tab of the menu #5620
- Projects now require an alias, the alias is used for PSCID generation. Upgrading LORIS will automatically add aliases to existing projects by using the first 4 characters from the project name. #5285
Upgrade process
Please note that in order for the steps below to succeed you must be on LORIS version 21.0.4. If you are on any previous version, the upgrade might fail to complete.
- Make sure you have installed "NodeJS" and "NPM" on your machine. These are new dependencies and must be installed in order to proceed with the upgrade.
- Get the latest release code (download and extract)
- Run
make all
from the LORIS root directory to update all dependencies - Source the
21.0_To_22.0_upgrade.sql
SQL file into your database.
Note: Some cleanup SQL commands might fail due to foreign key errors or other data related issues, make sure to test the release SQL patch previously and correct all necessary issues before proceeding to production.
LORIS Release v21.0.5
This release fixes a some bugs identified on LORIS v21.0.4
Notable Fixes:
LORIS Release v21.0.4
This release fixes several bugs from v21.0.3
For the full list of changes Click Here
Notable fixes:
- DQT Fix
Delete All
button when building query - CSV Downloads: Enable data mapping to display values of related tables rather then the keys associated to them
- Fix display of Echo Time in Imaging Browser
LORIS Release v21.0.3
This fixes various bugs found since 21.0.2. In particular, it fixes some issues with the install.sh script, fixes a 500 error in the DQT, and restricts statistics on the DQT to sites the user has access to.
For details or a complete list of changes see here.
LORIS Release v21.0.2
This release fixes various bugs in the v21.0.1 release. The list below enumerates a few of them:
- Fixing the
static
prefix option in the generation of PSCIDs - Candidate Info button not redirecting the the Candidate Parameters module
- Rename the
minLength
parameter tolength
in the configuration files to match the code
LORIS Release v21.0.1
This fixes various bugs found in the v21.0.0 release. In particular, error messages are improved when various configuration values aren't set, and a bug with setting consent values to "No" was fixed.
LORIS Release v21.0.0
This release contains several bug fixes and user interface improvements as well as a some new features and code clean-up.
It also adds the option to use the haveibeenpwned API to reject compromised passwords. This option defaults to false in order to not add a dependency on a third party service in the default install. Administrators are encouraged to enable it on any production server for increased security.
New Features
- [Instruments] Add ability to load instrument JSON data from flag Data column (#3894)
- [MRI] Add tables to the database to support the creation of a BIDS dataset for imaging data (#3912)
- [Core/Scurity] Add pwned passwords API to prevent common passwords and password reuse (#3961)
- [Core] Adding CandID Value Object (#4055)
- [Core] Add SameSite flag to session cookie to prevent CSRF (#4083)
- [Modules] QC Module (#4223)
Updates and Improvements
- Reactification of most menu filter pages for better UI
- [JS] Adding sortByValue for Selects and SearchableSelects (#3952)
- [SQL] Split mri_protocol range columns into min & max columns (#3973)
- [UI] Colour and styling makeover (#4007)
- [JSX] Dicom Archive - Refactor and Clean-Up (#4097)
- [Raisinbread] Update the dataset and clean-up of the data (#4120)
- [Instrument Manager] Add specific permission to this module so that superuser isn't necessary (#4191)
- [jsx] FilterableDataTable UI Redesign (#4203)
- [Core: Candidate] Improve ID generation (CandID, PSCID, ExternalID) (#4241)
Bug Fixes
- [Configuration] Prevent config field duplication and remove current duplicates (#3503)
- [Core: Candidate] Fix getFirstVisit method (#4075)
Clean Up
- [API] Remove "module API" (#3900)
- [SQL] Remove
PendingStaging
from files table (#3569) - [SQL] Replace the
Gender
field withSex
in the candidate table - [Core] Add User to hasAccess signature (#3655)
- [Core] Add type declarations to function signatures (Database, User, Site, Utility, Candidate, SinglepointLogin, Timepoint, BVL_Feedback_Panel, NDB_Caller, InstrumentSatus, Config, UserPermissions, Project, ProjectDefault, CouchDB, Client, Settings, NDB_factory, BVL_Feedback_Panel, NDB_Caller, InstrumentStatus, Config, Notify, State, Enail, Notifier, Breadcrumb, FeedbackMRI, MRIFile, ConflictDetector)
- [Core] removing deprecated Log class (#3999)
- [Core] removing deprecated Message class (#3999)
- [Core] Rename candidate center id to registration center (#4078)
- [Core] Remove the useProjects config setting (#4496)
- [Core] Remove checkDate() function from Utility
- [Core] Remove getNextVisitNo() function from Candidate (#4363)
- [Core] Cleanup duplicated data config paths (#4314)
- [JS] Compiled artifacts are no longer commited to the repository (#3891)
- [JS] StaticDataTable - Replaced
loris.hiddenHeaders
withthis.props.hiddenheaders
(#3967) - [Database] Make pSelectRow throw error if more than 1 row is returned (#3910)
- [Tools] Clean-up of tools and move into
tools/
subdirectory (Data Dictionary Builder - #4140, Fix Candidate Age - #4141, Score Instruments - #4146) - [Instruments] Make getFullName and getSubtestList abstract (#4407)
- [Training] Remove module (#4535)
Documentation
- Add document describing new routing (#3997)
Notes for Existing Projects
- Several changes in function signatures in library classes require updating any/all overrides done in projects' classes and PHP instruments. Existing instruments must be updated to ensure their signature matches the base class.
- The functions relating to getting the instrument's full name and getting the instrument's pages have been made abstract and must now be explicitly implemented to return the name string and pages array, rather than retrieving them from the database. The "LegacyInstrumentTrait" trait implements the old behaviour which can be restored by adding
use LegacyInstrumentTrait;
near the top of an instrument class. (This change is primarily motivated by an issue of cyclic dependencies while installing instruments, so there are no ill effects of using the trait on instruments which are already installed on a LORIS instance.) - LORIS API version 0.0.1 was removed. (v0.0.2 is a superset of v0.0.1, so only the URL should have to change in any scripts using the API.)
- Calls to pSelectRow will fail if more than 1 row is returned from the database. Make sure your select criterias match at most 1 row in the database.
- The
Log
andMessage
library classes have been removed. - The following tool scripts' location has been changed and their code cleaned up (Data Dictionary Builder - #4140, Fix Candidate Age - #4141, Score Instruments - #4146).
- The
mincPath
anddata
Config settings have been removed. - The
checkDate()
function has been removed from the Utility class. - The
getNextVisitNo()
function has been removed from the Candidate class. - The Training module has been removed.
- The menu item for the old reliability modle has been removed.
- The
useProjects
configuration setting has been removed. Projects are now mandatory, if no projects are defined in the database'sProject
table, a new defaultloris
project will be created and all candidates will be affiliated with it. If projects are defined in the table before execution of the patches, no changes will occur.
Upgrade Process
Several steps are involved in this LORIS release upgrade, due to database schema constraints.
Your LORIS must be updated to 20.3.0 before beginning this upgrade.
- Get the latest release code (download and extract)
- Run
make
from the Loris root directory to update all dependencies. - Source the
20.3_To_21.0_upgrade.sql
SQL file into the database - Run the script
data_dictionary_cleaner.php
from thetools/single_use/
directory and fix reported issues in the database. - Run the script
normalize_mri_protocol_range_data.php
from thetools/single_use/
directory to populate the new min/max fields in themri_protocol
table of the database.
Strongly Recommended: Security
- A bug was discovered in LORIS where passwords could be logged in the history table in plaintext.
This data is not exposed directly in the LORIS frontend, but an administrator could view them in the backend, or they could be exposed in the event of a data breach. The scripttools/single_use/remove_logged_passwords.php
should be run to delete all those logged. The script will expire the password of users who are affected
and print a report of which users should be warned along with their email address.
Optional: Upgrades
- Instruments JSON Data
This release adds support for loading and saving instrument data into theData
column of theflag
table rather than dedicated SQL tables (#3894). This change is still considered experimental and should not be used for important data. It can be enabled/disabled using thejsonData
property of the instrument class. This feature can be enabled independently on each instrument by following the steps below.- Run the script
migrate_sql_to_json.php
from thetools/single_use/
directory by specifying the name of the instrument you would like to convert as the first argument. - In the instrument, set the class variable
$this->jsonData = true;
in thesetup()
function.
- Run the script
Optional: Cleanup
- Check for duplicated configuration items and make sure their values are identical and correct to avoid being left with an incorrect value once duplicates are removed. Remove duplicated configurations using
2018-02-20_remove_duplicate_value_from_Config.sql
from theSQL/Archive/21.0/Cleanup
directory. - Run the
2018-04-05_RemovePendingStagingFromFiles.sql
from theSQL/Archive/21.0/Cleanup
directory. - Remove unused field
CurrentGUITable
by running2018-11-20-remove_currentGUITable_field.sql
from theSQL/Archive/21.0/Cleanup
directory. - Remove all references to the Training module by running
2019-05-13-RemoveTraining.sql
from theSQL/Archive/21.0/Cleanup
directory. - Remove leftover link to the old Reliability module in the menu by running
2019-05-15-Reliability_link.sql
from theSQL/Archive/21.0/Cleanup
directory.
LORIS Release v21.0.0 (Release Candidate 1)
LORIS v21.0 is the next major release of LORIS. This release contains several bug fixes and user interface improvements as well as a some new features and code clean-up.
It also adds the option to use the haveibeenpwned API to reject compromised passwords. This option defaults to false in order to not add a dependency on a third party service in the default install. Administrators are encouraged to enable it on any production server for increased security.
New Features
- [Instruments] Add ability to load instrument JSON data from flag Data column (#3894)
- [MRI] Add tables to the database to support the creation of a BIDS dataset for imaging data (#3912)
- [Core/Scurity] Add pwned passwords API to prevent common passwords and password reuse (#3961)
- [Core] Adding CandID Value Object (#4055)
- [Core] Add SameSite flag to session cookie to prevent CSRF (#4083)
- [Modules] QC Module (#4223)
Updates and Improvements
- Reactification of most menu filter pages for better UI
- [JS] Adding sortByValue for Selects and SearchableSelects (#3952)
- [SQL] Split mri_protocol range columns into min & max columns (#3973)
- [UI] Colour and styling makeover (#4007)
- [JSX] Dicom Archive - Refactor and Clean-Up (#4097)
- [Raisinbread] Update the dataset and clean-up of the data (#4120)
- [Instrument Manager] Add specific permission to this module so that superuser isn't necessary (#4191)
- [jsx] FilterableDataTable UI Redesign (#4203)
- [Core: Candidate] Improve ID generation (CandID, PSCID, ExternalID) (#4241)
Bug Fixes
- [Configuration] Prevent config field duplication and remove current duplicates (#3503)
- [Core: Candidate] Fix getFirstVisit method (#4075)
Clean Up
- [API] Remove "module API" (#3900)
- [SQL] Remove
PendingStaging
from files table (#3569) - [SQL] Replace the
Gender
field withSex
in the candidate table - [Core] Add User to hasAccess signature (#3655)
- [Core] Add type declarations to function signatures (Database, User, Site, Utility, Candidate, SinglepointLogin, Timepoint, BVL_Feedback_Panel, NDB_Caller, InstrumentSatus, Config, UserPermissions, Project, ProjectDefault, CouchDB, Client, Settings, NDB_factory, BVL_Feedback_Panel, NDB_Caller, InstrumentStatus, Config, Notify, State, Enail, Notifier, Breadcrumb, FeedbackMRI, MRIFile, ConflictDetector)
- [Core] removing deprecated Log class (#3999)
- [Core] removing deprecated Message class (#3999)
- [Core] Rename candidate center id to registration center (#4078)
- [Core] Remove the useProjects config setting (#4496)
- [Core] Remove checkDate() function from Utility
- [Core] Remove getNextVisitNo() function from Candidate (#4363)
- [Core] Cleanup duplicated data config paths (#4314)
- [JS] Compiled artifacts are no longer commited to the repository (#3891)
- [JS] StaticDataTable - Replaced
loris.hiddenHeaders
withthis.props.hiddenheaders
(#3967) - [Database] Make pSelectRow throw error if more than 1 row is returned (#3910)
- [Tools] Clean-up of tools and move into
tools/
subdirectory (Data Dictionary Builder - #4140, Fix Candidate Age - #4141, Score Instruments - #4146) - [Instruments] Make getFullName and getSubtestList abstract (#4407)
- [Training] Remove module (#4535)
Documentation
- Add document describing new routing (#3997)
Notes for Existing Projects
- Several changes in function signatures in library classes require updating any/all overrides done in projects' classes and PHP instruments.
- The functions relating to getting the instrument's full name and getting the instrument's pages have been made abstract and must now be explicitly implemented to return the name string and pages array, rather than retrieving them from the database. The "LegacyInstrumentTrait" trait implements the old behaviour which can be restored by adding
use LegacyInstrumentTrait;
near the top of an instrument class. (This change is primarily motivated by an issue of cyclic dependencies while installing instruments, so there are no ill effects of using the trait on instruments which are already installed on a LORIS instance.) - LORIS API version 0.0.1 was removed.
- Calls to pSelectRow will fail if more than 1 row is returned from the database. Make sure your select criterias match at most 1 row in the database.
- The
Log
andMessage
library classes have been removed. - The following tool scripts' location has been changed and their code cleaned up (Data Dictionary Builder - #4140, Fix Candidate Age - #4141, Score Instruments - #4146).
- The
mincPath
anddata
Config settings have been removed. - The
checkDate()
function has been removed from the Utility class. - The
getNextVisitNo()
function has been removed from the Candidate class. - The Training module has been removed.
- The menu item for the old reliability modle has been removed.
- The
useProjects
configuration setting has been removed. Projects are now mandatory, if no projects are defined in the database'sProject
table, a new defaultloris
project will be created and all candidates will be affiliated with it. If projects are defined in the table before execution of the patches, no changes will occur.
Upgrade Process
Several steps are involved in this LORIS release upgrade, due to database schema constraints.
Your LORIS must be updated to 20.3.0 before beginning this upgrade.
- Get the latest release code (download and extract)
- Run
make
from the Loris root directory to update all dependencies. - Source the
20.3_To_21.0_upgrade.sql
SQL file into the database - Run the script
data_dictionary_cleaner.php
from thetools/single_use/
directory and fix reported issues in the database. - Run the script
normalize_mri_protocol_range_data.php
from thetools/single_use/
directory to populate the new min/max fields in themri_protocol
table of the database.
Optional: Upgrades
- Instruments JSON Data
This release adds support for loading and saving instrument data into theData
column of theflag
table rather than dedicated SQL tables (#3894). This change is still considered experimental and should not be used for important data. It can be enabled/disabled using thejsonData
property of the instrument class. This feature can be enabled independently on each instrument by following the steps below.- Run the script
migrate_sql_to_json.php
from thetools/single_use/
directory by specifying the name of the instrument you would like to convert as the first argument. - In the instrument, set the class variable
$this->jsonData = true;
in thesetup()
function.
- Run the script
Optional: Cleanup
- Check for duplicated configuration items and make sure their values are identical and correct to avoid being left with an incorrect value once duplicates are removed. Remove duplicated configurations using
2018-02-20_remove_duplicate_value_from_Config.sql
from theSQL/Archive/21.0/Cleanup
directory. - Run the
2018-04-05_RemovePendingStagingFromFiles.sql
from theSQL/Archive/21.0/Cleanup
directory. - Remove unused field
CurrentGUITable
by running2018-11-20-remove_currentGUITable_field.sql
from theSQL/Archive/21.0/Cleanup
directory. - Remove all references to the Training module by running
2019-05-13-RemoveTraining.sql
from theSQL/Archive/21.0/Cleanup
directory. - Remove leftover link to the old Reliability module in the menu by running
2019-05-15-Reliability_link.sql
from theSQL/Archive/21.0/Cleanup
directory.
LORIS Release v20.3.1
This fixes minor bugs found in v20.3.0 prior to the upcoming v21 release for projects that are not immediately able to upgrade. In particular, it fixes the data querying tool and a bug where you couldn't edit issues in the issue tracker.
LORIS Release v20.3.0
This release of fixes bugs, adds new permissions, and does various cleanup to different LORIS modules. For a complete list of features see here.
New Features
- [Publication] Add new Publication module (Beta version) #3695
- [login/security] Add rate-limiting account lockout mechanism #3950
- [Candidate_parameters] Improving front-end validation for entering Consent data #4034
- [API] Updating summary header to add scanner information and image caveat flag and flag reason. #4077
- [Configuration] Adding configuration fields needed for imaging defacing tool #4232
Bug Fixes
- [Config / Imaging] Update default phantom regex configuration #3987
- [Brainbrowser] Clean up module after fixing paths in violation tables #4347
- [SinglePointLogin] Fix passwordAuthenticate method #4356
Notes for Existing Projects
- For Imaging projects, review carefully the Loris-MRI 20.3 release notes - several key changes and features are included in this release
Upgrade process
- Update the code
- Source the SQL patch:
SQL/Release_patches/20.2_To_20.3_upgrade.sql
Known issues
- [Issue Tracker] Inability to edit an existing issue. Will be solved in the next bugfix release (#4454)