Open
Conversation
…enabled in the specimen tree configuration (CP workflows JSON). The derived specimen is hidden only if a) hideDerivatives = true b) has one or more children and all of them are aliquots This means the derived specimen is displayed if it has no aliquots or no children
…ion statements...
Instruct the API, the input is UDN and not name.
1. When site based access is enabled then the user should have received access rights on one of the CP sites and one of the participant's MRN sites (if available) 2. When site based access is disabled then the user should have received access rights on one of the CP sites.
(missed to add the change in the last commit)
Support for managing pick lists within specimen carts. 1. Users can shortlist specimens for distribution, shipping, or other processes, and group them into specimen carts. 2. From a cart, users can create one or more pick lists to track specimens retrieved from storage (e.g., freezers) for specific actions. 3. Each pick list displays progress with two views: Unpicked and Picked. 4. Users can move specimens from Unpicked to Picked by scanning barcodes using supported devices (tablet cameras, handheld scanners, or box scanners). Updates are tracked in real time. 5. Pick lists can be created and accessed by any user who has access to the underlying cart. 6. Unused or inactive pick lists are automatically deleted as part of periodic cleanup.
1) Added specimen actions in the "picked specimens" view of the pick lists. 2) Added specimen type column in the picked and unpicked specimens view 3) Added filters to search specimens by CP and type as well
…shipment notification emails.
…array or actual list. This ensure the iteration will not crash with null access errors...
… results view 1. Added plugin hooks on query results page. Plugins can register their views for dislay on the query results toolbar using the following keys: page="query-results" and view="toolbar". The plugin views receive the query object as input. 2. Exposed query (UI) services for use by the plugin views/components.
… results view 1. Added plugin hooks on query results page. Plugins can register their views for dislay on the query results toolbar using the following keys: page="query-results" and view="toolbar". The plugin views receive the query object as input. 2. Exposed query (UI) services for use by the plugin views/components.
Updated distribution label printing function as follows: 1. When users clicks on Print button without selecting any specimens, the distribution labels for all specimens within the order are printed. Users are asked for confirmation before proceeding with this action to prevent surprises, reduce unwanted carbon footprint... 2. When users select one or more specimens and then click on the Print button, the distribution labels for only the selected specimens are printed.
Updated distribution label printing function as follows: 1. When users clicks on Print button without selecting any specimens, the distribution labels for all specimens within the order are printed. Users are asked for confirmation before proceeding with this action to prevent surprises, reduce unwanted carbon footprint... 2. When users select one or more specimens and then click on the Print button, the distribution labels for only the selected specimens are printed.
…re selected and printed.
…t user. Applies only when the record is being created.
gracefully to prevent crashes during domain-to-interaction object conversion.
1) Switched from static table to expand/collapse accordion style table.
Fixed the accordion table to handle all types of fields.
2) Displayed registration details when users click on one of the matched
participant registration.
Turned the table into clickable cards. When a matching card is clicked,
a new card with participant registration details appear.
3) Displayed matching participant details using the dictionary configured
for the registration CP.
4) Added ability to configure widgets within the matched participant details card.
Implemented AQL backed tables.
When no widgets are configured, the matched participant details card
defaults to displaying collected specimens and aliquots count tables.
Example configuration:
{
"name": "matching-participants",
"data": {
"detail-widgets": [
{
"title": "Primary Specimens",
"aql": "select Specimen.type, Specimen.tissueSite, Specimen.spmnCollRecvDetails.collContainer, Specimen.availableQty where Specimen.lineage = \"New\" and Specimen.collectionStatus = \"Collected\" and Participant.id = :cprId",
"params": {
"dynamic": {
"cprId": "cpr.id"
}
}
},
...
]
}
}
… keep the linter happy.
As soon as the file was selected, the file uploader was unmounted. However, the uploader runs the code assuming the file input is still present in the view. As a result, the UI thread crashes with error and no file is uploaded to the backend.
…tly parse the multi-valued parameters cpShortTitle and dpShortTitle into an array. For example dpShortTile=A,B&dpShortTitle=C is translated to ["A,B", "C"] Earlier it was translated to ["A", "B", "C"]
(Accidentally committed the changes to master instead of VP_AI_EMBEDDINGS) This reverts commit 22ef7f4.
…gning algorithm. Problem: The logout request and the signature were encoded and sent as SAMLRequest. SAMLRequest=<Logout Request + Signature on Logout Request> Further, the URL also didn't specify the algorithm used to sign. The required format is: SAMLRequest=<Logout Request>&SigAlg=<Signing Algorithm>&Signature=<Covers both the Logout Request and signing algo> Fixed the logout URL to conform to the above format.
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 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