Summary
The LORIS 27 release adds many new features and optimizations detailed below such as:
- Optimizations for the new dataquery tool which also optimize various components throughout LORIS
- Improvements to permission handling through different modules
- A new "Batch Mode" for the issue tracker
- The CandID in LORIS is now 10 digits instead of 6 to support larger projects
- Foreign Key references to the
candidate
table are now standardized:CandidateID
which refers tocandidate
.ID
- Instrument's
flag
.data
moved toinstrument_data
table - LORIS now has the ability to display summary statistics of the LORIS instance (either from an SQL query or a query built with the new data query tool) on the login page.
- A new redcap module allows to importing of data from redcap into LORIS
- Various other bug fixes and features detailed below
Notes For Existing Projects
Upgrading LORIS requires following the upgrade process each major and minor release (bug fix releases can be script) to ensure the schema is up to date.
For upgrading to 27 from 26:
- Source the
SQL/Release_patches/26.0_To_27.0_upgrade.sql
- Run the
tools/update_issues_with_description.php
to back-populate the new issue tracker description column. (The description was previously based on the first comment.)
What's Changed
Features
- [IssueTracker] Add description field to issues table by @sanjay-thiyagarajan in #8864
- [document_repository] New features by @pierre-p-s in #7103
- [SQL] Move flag.data column to own table by @driusan in #9215
- [instrument_manager] Use JSON data for uploaded linst instruments by @driusan in #9324
- [Core] Add Compression middleware by @driusan in #9207
- [document_repository] Remove File Type Restriction by @skarya22 in #9388
- [candidate_profile] Add error boundary to cards with errors by @driusan in #9333
- [JSX] Relax Strictness of Filter for Multiselect in Filter Component by @HenriRabalais in #9402
- [issue_tracker] Convert batch/normal mode toggle to tabs and implement permission control by @ay-bh in #9434
- [JSX] Add ProgressBar to FilterableDataTable for Progressive Loading UI by @HenriRabalais in #9401
- [SQL][Instrument List][Battery Manager] Move DDE Enabled to Test_Battery by @skarya22 in #9264
- [conflict_resolver] Add Cohort filter and field by @victori444 in #9407
- [issue_tracker] Add Instrument dropdown to Issue form by @ay-bh in #9311
- [data_release] Introduce Project Separation by @skarya22 in #9385
- [Survey Module] Update survey status upon data_entry by @victori444 in #9441
- [Core] Add database query class to represent the results of a DB query by @driusan in #9334
- [Core] Add support / fix PHP 8.4 support by @driusan in #9513
- [issue_tracker] Add Batch Mode by @ay-bh in #9339
- [Media] Upload Digest Notifications (Override from CCNA) by @skarya22 in #8849
- [dataquery] Add ability to retrieve results of previous run from API by @driusan in #9301
- [NDB_BVL_Instrument] Hide inactive examiners for site from selection, unless if already selected by @skarya22 in #9416
- [timepoint] Add Default Site to Dropdown by @victori444 in #9408
- [issue_tracker] Receive notifications for all issues by @skarya22 in #9396
- [dataquery] Add instrument flags to instruments query engine by @driusan in #9529
- [data_release] FileUpload version permission by @victori444 in #9489
- [SQL] Refactor FK CandID int(6) to CandidateID int(10) (candidate.ID PK) by @jeffersoncasimir in #9556
- [Login] Summary Statistics by @skarya22 in #9518
- [Core] New Filters and Logic by @ridz1208 in #9548
- [issue_tracker] Add more granular permissions for Issue Tracker by @shonibare in #9554
- [imaging_uploader] Sort by UploadDate for most recent uploads by @ridz1208 in #9563
- [dictionary] Cohort Filter by @skarya22 in #9390
- [dicom archive] add project permission check based on tarchiveID by @regisoc in #9359
- HTMLSpecialChars() Double escaping default to false by @KLaFleur in #9557
- [Core] Add performance profiler logger by @driusan in #9383
- [imaging_qc] Make module only display data affliated to user's site and project by @shonibare in #9399
- [user_accounts] Made Site & Project multiselect expandable by @ridz1208 in #9562
- Add Project Affiliations Menu to Main Interface by @NadaElmasry in #9417
- [imaging_uploader] Site&Project check with config setting and permission by @ridz1208 in #9533
- [dataquery] (demographics) Include missing fields from deprecated CouchDB_Import_Demographics. by @racostas in #9566
- [dashboard] Improve visual styling for a more modern look by @GeorgeMurad in #9734
- [battery_manager] Add required DDE selection by @skarya22 in #9741
- [JSX] Refactor Modal Component to Support Conditional Form Wrapping by @HenriRabalais in #9516
- Add the MRI variables in the imaging_browser's query engine by @nicolasbrossard in #9824
- [candidate_parameters] Add hasAccess to module class #9834 by @kongtiaowang in #9843
- [dataquery] Add 'PSCID' as a default field by @jeffersoncasimir in #9845
Optimizations
- [dataquery] Optimize filtering of valid candidates for large datasets by @driusan in #9344
- [Optmization] Replace bulkLoadInstanceData with generator by @driusan in #9347
- [Utility] Cache getVisitList result by @driusan in #9346
- [Utility] Remove unnecessary joins in queries by @driusan in #9369
- [bugfix] Cleanup TestName->TestID transition by @skarya22 in #9387
- [server_processes_manager] Monitor incomplete processes only by @jeffersoncasimir in #9725
- [redcap] new module by @regisoc in #9474
- [dashboard] Optimize statistics queries by @skarya22 in #9793
- [instruments] Add view permission by @adamdaudrich in #9762
Bug Fixes
- [issue_tracker] Fix inactive user query by @CamilleBeau in #8904
- [instrument_list] Fix deprecation warning (24.1) by @regisoc in #9053
- StaticDataTable mixed column types sorting by @regisoc in #9120
- [tools] Fix SQL error for duplicate rows by @GeorgeMurad in #9007
- Defining default decimal point for non JSON table LINST instruments by @regisoc in #9277
- [acknowledgements] Remove "Present" column from database and dynamically calculate by @driusan in #8339
- [User Account] Checkbox alignments by @laemtl in #9352
- Update Typescript by @maximemulder in #9394
- [User_Accounts] Fix examiner always pending & bugfix by @skarya22 in #9409
- Replace DoB/EDC with 'Derived Age'/'EDC Age' by @GeorgeMurad in #8990
- [Conflict_resolver] Show examiner name by @skarya22 in #9404
- [NDB_BVL_Instrument] Fix for clearing instrument by @skarya22 in #9411
- [document_repository] Error for filenames with comma by @victori444 in #9461
- [Tools] assign_missing_instruments.php - fix wrong type by @kongtiaowang in #9484
- [NDB_Page] Add default maxYear for date elements by @skarya22 in #9498
- [issue_tracker] 'My Issues' filter for users with no issues by @CamilleBeau in #9483
- [conflict_resolver] Replace 'Value 1 & 2' with 'Incorrect Answer' by @victori444 in #9506
- [NDB_BVL_Instrument] Fix addHourMinElement being never required by @victori444 in #9482
- [media] Fix download of filenames with commas by @victori444 in #9510
- Fixing the display of the Entity Type options in the Imaging Browser by @GeorgeMurad in #9542
- [issue_tracker] Fixes in permission when own user editing. by @racostas in #9546
- [Core] fix timeout redirect location by @ridz1208 in #9534
- Fix user singleton when an argument is passed. by @driusan in #9572
- [Examiner] Fix loading of edit examiner page by @driusan in #9607
- [issue_tracker] Fix bug that prevents new issue creation by @shonibare in #9643
- [publication] Fix edit PI issue by @victori444 in #9492
- Server process manager now displays updated process information by @nicolasbrossard in #9685
- [webpack] Fix incorrect module overwrite by @jeffersoncasimir in #9653
- [survey] - fix can't add or email a survey by @kongtiaowang in #9639
- [configuration] Few bugs found in this module #9599 -fix by @kongtiaowang in #9659
- [Timepoint List] Fix Timepoint List Access Issue when User have access_all_profiles Permission by @sruthymathew123 in #9686
- [mri_violations] Cannot access module with "Own sites" permission #9603 -fix by @kongtiaowang in #9660
- [candidate_parameters] Fixes Notice errors returned by getData. by @racostas in #9690
- [NDB_BVL_Instrument] addHourMin Warning by @skarya22 in #9555
- [NDB_BVL_Instrument_LINST] Add Metadata Fields after adding to dictionary by @skarya22 in #9667
- [dictionary] Fix out of order cols by @skarya22 in #9669
- [electrophysiology_browser] Fix webpack + css references + HED schema payload by @jeffersoncasimir in #9688
- [NDB_BVL_Instrument] Set dateOptions for addDateElement too by @skarya22 in #9641
- [imaging_browser] Fix visit level feedback cannot be saved by @nicolasbrossard in #9720
- [tools] Replace 'annotation' references in tools with 'events' by @jeffersoncasimir in #9697
- [imaging_browser] Fix bugs in imaging browser's MRI feedback popup by @nicolasbrossard in #9716
- [tools] error in data_integrity/update_candidate_latest_diagnosis.php #9710 by @kongtiaowang in #9718
- [SQL] add missing openID tables into default schema by @kongtiaowang in #9775
- [imaging_uploader] ID fix not displaying by @ridz1208 in #9777
- [schedule_module] fix can't add new appointment without set time by @kongtiaowang in #9766
- [instrument] fix can't save linst file by @kongtiaowang in #9769
- [Behavioural_QC] Incomplete Forms Data Entry Type by @skarya22 in #9745
- [dataquery] fix "Selected Fields" panel width. by @racostas in #9798
- [genomic_browser] Solve the issues by @skarya22 in #9773
- [dataquerytool] fix Numeric value out of range: 1264 Out of range value for column 'CandID' at row by @kongtiaowang in #9832
- [next_stage] adding missing CohotID php/libraries/NDB_BVL_Battery.class.inc by @kongtiaowang in #9791
- [jsx - document_repository] Add disabledLabel to ButtonElement by @jeffersoncasimir in #9790
- [dictionary] Fixes description field been populated with the latest select option, not the actual field name. by @racostas in #9855
- [issue_tracker] Fix permissions by @CamilleBeau in #9842
- [dataquery] Return 0 results when a query is partially built (#9853) by @driusan in #9861
- [document repository] multiple issues with categories, and upload/downloads #9614 -fix by @kongtiaowang in #9662
- [dataquery] Page crashes when syncing with any visit #9859 by @kongtiaowang in #9862
- [dataquery] Fix reset selected field for new Category by @GeorgeMurad in #9867
- [Publication Module] Duplicate Lead Investigator Email Issue by @sruthymathew123 in #9719
- [issue_tracker] Fix typo by @CamilleBeau in #9757
- [instrument] - Visit_Label - fix typo by @kongtiaowang in #9866
- [smarty] Allow instrument tables to expand off-screen by @skarya22 in #9820
- [dataquery - jsx/Modal] Add 'name' attribute to FormElement by @jeffersoncasimir in #9869
- [imaging_browser] Fix invalid query in imaging browser's query engine by @nicolasbrossard in #9874
- [dataquery] Changes to table dataquery_queries are not saved in the history table anymore by @nicolasbrossard in #9875
New Contributors
- @NadaElmasry made their first contribution in #9417
- @MaximeBICMTL made their first contribution in #9841
Full Changelog: v26.0.4...v27.0.0