Database functions
Warning: Directly interacting with the database can carry some risk. Please read the documentation carefully.
These functions provide a way to directly interact with a LAMP MongoDB database and add some functionality that is not currently present in the LAMP API, such as restoring deleted activities or participants. Deleting a patient or activity through the mindLAMP dashboard does not actually erase their data from a server. Rather, it applies the 'delete' FLAG to them at a database level. As such, these functions include safeguards that should prevent unintended consequences, but directly interacting with the database can carry some risk, so please read the documentation for these functions carefully before using them. Please report any issues to community.lamp.digital.
Please note: if you are using an older version of LAMP, e.g. one using CouchDB, these functions may not work.
utils.db.change_parent
​
Change a LAMP element's parent - e.g. move a participant from one study to another, a study from a researcher to another, or an activity from study to study.
Args​
target
: the target's LAMP idoriginal_parent
: the LAMP id of the original parent of the targettarget_parent
: the LAMP id of the parent the target should be moved todb
: the database this will happen in (usually 'LAMP')client_url
: a valid mongodb URL w/ login info (one of this orclient
is required, but not both)client
: a valid pymongo client
Example​
import cortex
MONGO_URL = "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]"
cortex.utils.db.change_parent('U0591253803','dynp0g0530xkahnzh0xc','ef0b54h281vfmhc0515d',client_url=MONGO_URL)
Result
U0591253803 updated. Moved participant from study Second Study - (dynp0g0530xkahnzh0xc) to study LAMP Testing (Internal - Luke) - (ef0b54h281vfmhc0515d)
utils.db.get_survey_names
​
Get the survey names and specs for all ActivityEvents for a participant. Use the database to get deleted survey ids as well.
Args​
participant_id
: (string) the participant id.db
: (string, default: 'LAMP') the database.client_url
: (string) a valid mongodb URL with login info.client
: (object) a valid pymongo client
Returns​
A dataframe containing the ActivityEvent data for this participant with two additional columns: "name" and "spec".
Example​
YOUR_MONGO_URL = "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]"
utils.db.get_survey_names("U1234567890", client_url=YOUR_MONGO_URL)
Output:
utils.db.list_deleted_activities
​
Returns a list of dictionaries, each reflecting a deleted activity, with an id
and name
key.
Args​
study_id
: the study to examinedb
: the database this will happen in (usually 'LAMP')client_url
: a valid mongodb URL w/ login infoclient
: a valid pymongo client
Example​
import cortex
MONGO_URL = "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]"
cortex.utils.db.list_deleted_activities('dynp0g0530xkahnzh0xc',client_url=MONGO_URL)
Result
[{'id': 'qa0k8arrv8cx1brp724d', 'name': 'Jewels A testing'},
{'id': 'fgqyjzspc92n2nwb8d7d', 'name': 'Test Survey'}]
utils.db.list_deleted_participants
​
Returns a list of dictionaries, each reflecting a deleted participant, with an id
key.
Args​
study_id
: the study to examinedb
: the database this will happen in (usually 'LAMP')client_url
: a valid mongodb URL w/ login infoclient
: a valid pymongo client
Example​
import cortex
MONGO_URL = "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]"
print(LAMP.Study.all_by_researcher('ffmz65mn1gtav5fq3bhq')['data'])
cortex.utils.db.list_deleted_participants('ef0b54h281vfmhc0515d',client_url=MONGO_URL)
Result
[{'id': 'ef0b54h281vfmhc0515d', 'name': 'LAMP Testing (Internal - Luke)'}, {'id': 'dynp0g0530xkahnzh0xc', 'name': 'Second Study'}]
[{'id': 'U4942710066'}]
utils.db.restore_activities
​
Restores activities given one or more activity ids
Args​
activity_id
: string or list of the LAMP IDs of the activity(s) to restoredb
: the database this will happen in (usually 'LAMP')client_url
: a valid mongodb URL w/ login infoclient
: a valid pymongo clientrestore_tags
: Whether to restore any tags created on a activity
Example​
import cortex
MONGO_URL = "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]"
deleted = [x['id'] for x in cortex.utils.db.list_deleted_activities('dynp0g0530xkahnzh0xc',client_url=MONGO_URL)]
cortex.utils.db.restore_activities(deleted,client_url=MONGO_URL)
Result
Restoring qa0k8arrv8cx1brp724d...
Restoring fgqyjzspc92n2nwb8d7d...
utils.db.restore_participant
​
Restores participants given one or more participant ids
Args​
participant_id
: string or list of the LAMP IDs of the participant(s) to restoredb
: the database this will happen in (usually 'LAMP')client_url
: a valid mongodb URL w/ login infoclient
: a valid pymongo clientrestore_tags
: Whether to restore any tags created on a activity
Example​
import cortex
MONGO_URL = "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]"
cortex.utils.db.restore_participant(['U4942710066'],client_url=MONGO_URL)
Result
Restoring U4942710066...
utils.db.restore_activities_manually
​
Prompts the user to enter a list of activities to undelete them
Args​
study_id
: the study_id to restore activities toodb
: the database this will happen in (usually 'LAMP')client_url
: a valid mongodb URL w/ login infoclient
: a valid pymongo client
Example​
import cortex
MONGO_URL = "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]"
print(LAMP.Study.all_by_researcher('ffmz65mn1gtav5fq3bhq')['data'])
cortex.utils.db.restore_activities_manually('dynp0g0530xkahnzh0xc',client_url=MONGO_URL)
Result
[{'id': 'ef0b54h281vfmhc0515d', 'name': 'LAMP Testing (Internal - Luke)'}, {'id': 'dynp0g0530xkahnzh0xc', 'name': 'Second Study'}]
The following activities are deleted
0:Jewels A testing:qa0k8arrv8cx1brp724d
1:Jewels B Testing:4at12eky0manz92bvhbj
2:Test Survey:fgqyjzspc92n2nwb8d7d
3:Scratch Card:8z9vcgewqt1j9vknm48d
Please input, comma-seperated, the numbers of the activity you would like to restore. (e.g. 1,4)
1,3
All done. As of now:
The following activities are deleted
0:Jewels A testing:qa0k8arrv8cx1brp724d
1:Test Survey:fgqyjzspc92n2nwb8d7d