Update Openspecimen to 6.3RC8 - #1
Open
ChristianMUG wants to merge 3536 commits into
Open
Conversation
Request managers can now be specified at the catalog or CP level.
… of all the input objects identified by comma-separated names (labels, ppids, visit names, etc) The problem with the earlier implementation was the names was fed into the query but the output were limited to first 100 form records. The fix is to divide the input names into chunks of 100 names. Iterate through each chunk to query and fetch all records, append the records to the CSV file. Care has been taken to ensure the looping does not break if any of the chunks return no records.
… job. Earlier approach: A single query computed collected, missed, not collected, pending specimen counts for every participant in the database. The output was subsequently used to create a new stats table. While this approach worked well for databases with smaller number of participants and specimens, it started failing on larger databases due to large transaction size and connection timeouts. Redesign: In view of the above, the the job is redesigned to populate the stats in chunks. By default, participants are divided in chunks of 10K. The job iterates through each chunk to compute and insert the stats sequentially. While this might not significantly reduce the execution time, it keeps the transaction sizes in check and avoids connection timeouts. Users (super admin) can fine tune the right chunk size for their database by specifying a numeric value in the "Fixed Parameters" text box of the add/edit job UI form.
…ield names wherever relevant.
specimen stats for every registered participant across all CPs.
1. Added many-to-one association of CP with CPG. Removed the intermediary OS_CP_GROUP_CPS table. 2. Fixed CP add/edit APIs to add / remove to / from group 3. Fixed CPG list API to return the CPs list in chunks / pages instead of all the CPs. 4. Added APIs to add / remove bulk CPs to / from CPG 5. Updated the CP APIs to update CP - CPG association in bulk using CSV import / export 6. Audit association of CP - CPG 7. Modified permissions: Users can add / remove CP to / from group provided they have CP update rights. This is different than earlier approach, which required users to have update rights on all group CPs. 8. Other access restrictions continue AS IS. (At no point in time, all CPs of the group are materialised/fetched into memory unless the selected page size is large)
Replaces the inline save button with a manual modal dialog to ensure signature is saved. The modal persists until the user explicitly selects 'Done' or 'Cancel'. Why auto-save was not implemented? Auto saving signatures introduces technical and reliability debt: a) Stroke Detection: Hard to determine when a user is actually finished. b) Concurrency: Out of sequence HTTP requests c) Debouncing: Perceived lag and inconsistent state. Underlying principle is always to keep things simple.
…rm records. 1) Send Survey: Added a button to the record overview that triggers an email/SMS link to participants for remote completion. 2) Survey Mode: Provides an UI toggle for users to enter form data using the survey interface.
… including the IDs. This helps the exported JSON to be reusable across multiple DB instances as long as the names match or remain consistent.
This will ensure the data model is in sync with the object model.
This ensures the same older label generator and print rules work without any modification.
Replaced error() => catch() for handling errors.
…ap for use in the calculated attributes.
- Move to Spring 7.x (Jakarta/EE 11 baseline) - Upgrade Hibernate to 7.x - Fix compile/runtime issues introduced by the upgrade - Run basic smoke tests
…r optimisations... (Optimisations will be enabled later... For now getting the platform ready to jump to ...)
which URL placeholders map to the function arguments/parameters.
Replaced row-based field alignment with a column-based layout. Fields populate the first column, then move to the second and third, ensuring better organisation for dense data sets. (A.k.a - newspaper layout for improved readability)
inserts after Hibernate 7 migration. Positions are persisted via the container side of the relationship.
…lity Updated permitAll() endpoints to use explicit, absolute paths. Spring 7.x has removed support for lenient path matching (That is, suffix matching and certain Ant-style wildcards). Updated - /forgot-password to /users/forgot-password - /reset-password to /users/reset-password - /sign-up to /users/sign-up
… management Problem: AbstractDao.saveOrUpdate is restricted to Identifiable types. The Lock entity (used by Audit Service) lacks this interface, causing a type mismatch error inspite of being a valid persistent entity. Solution: - Added save and update methods in Dao/AbstractDao to allow persistence of non-Identifiable entities. - Updated AuditService to use save() to acquire locks and update() for releasing locks after retrieval. This helps resolve the audit API crash while maintaining the legacy saveOrUpdate logic for other existing service flows.
Binding between URL placeholders and method parameters is now explicit. This addresses issues where Spring no longer discovers parameter names via reflection/debug symbols, a common requirement in Spring 7.x and Java 17+ envs.
…in Raise Query dialog Problem: The fields dropdown was appearing empty because the collection & received events are removed. This resulted in breaking of the data source for rendering the UI dropdown component. Solution: Updated the plugin hook properties to pass the collection & received event dictionaries. This allows the Raise Query dialog to correctly resolve and render the available fields.
…tion of positions and enforced slot uniqueness 1) Reduced memory footprint by avoiding eager materialisation of occupiedPositions using cached ordinals. 2) Switched add/remove position ops to direct DB writes and also keeping ordinals cache in sync. 3) Added queries for occupied ordinals, specific position lookup, reservation lookup, and capacity checks. 4) Reworked block/unblock APIs to operate on in‑memory positions for correct bulk location updates. 5) Updated empty‑positions report to use cached ordinals instead of full position entities. 6) Enforced unique slot occupancy with DB constraints. 7) Refined assignPositions API to use two‑pass vacate/assign with flush, while ensuring a single transfer event per specimen by reusing SpecimenTransferEvent.
…d Checkboxes. Hide the newer PV-based Radio and Checkboxes. Rename the PV based "Dropdown" to "Permissible Value" Reason: Having many PV based fields means the query module would have to join with the PV table for each field appearing in the query either a filter, or select field, or grouping category. There's a hard limit of 61 joins imposed by MySQL. In view of this, we are taking one step back to ensure users are not impacted by this and solve the query problem before moving to PV based fields.
Allow radio buttons, checkboxes, single-select dropdowns, and multi-select dropdowns to be converted to PV-based dropdown fields. Users can select an existing PV attribute or create a new form-scoped attribute using the field's existing options. Migrate existing data by renaming the value column, creating a new column for PV IDs, and resolving stored option values to the corresponding PV IDs. Restore schema changes and delete newly created PV attributes when the conversion fails.
Set the existing user ID on the updated user instance to prevent a TransientPropertyValueException while adding the auto login audit log. Partial updates were unaffected because UserFactory already assigns the existing user ID to the updated instance.
…rotocol Report that the collection protocol ID or short title may be missing or invalid when the domain (CPR/Visit/Specimen) object has no resolved collection protocol.
Reject checkout when the container is already checked out or has a blocked checkout position. This prevents duplicate transfer events and retains the container's valid checkout state.
1. Repair missing object type and ID values from v12.2.x upgrades 2. Associate legacy form files immediately after MigrateFormFiles populates them.
Rename the reserved "file" alias to "dfile" in the Liquibase and Java migration SQL to prevent the ORA-02012 missing USING keyword error.
Make the renamed legacy value column nullable to allow new records to be saved after conversion. Replace the existing unique index with one on the PV value and record ID, and add a separate index on the record ID for efficient lookups.
…() funcion for use in queries. Usage: To query specimens created in last 15 minutes, use the following calculated field/filter. minutes_between(current_timestamp(), Specimen.createdOn) < 15 DE Commit: 7ba58153f9e11628a5976e3a382012e6235c93c8
Update MySQL and Oracle specimen stats procedures to source collection and received details from OS_SPMN_COLL_RECV_DETAILS using the specimen's PRIMARY_SPECIMEN_ID.
Update MySQL and Oracle specimen stats procedures to source collection and received details from OS_SPMN_COLL_RECV_DETAILS using the specimen's PRIMARY_SPECIMEN_ID.
Ensure ACL rows are inserted and removed from the same database used to execute the query. When the reporting database is configured, use it for ACL insertion and cleanup. Otherwise, use the operational database for all operations.
Read collection and received details from the specimen table and use the specimen hierarchy to propagate primary specimen details to its descendants.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Getting the newest branch from openspecimen