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 id
- original_parent: the LAMP id of the original parent of the target
- target_parent: the LAMP id of the parent the target should be moved to
- db: the database this will happen in (usually 'LAMP')
- client_url: a valid mongodb URL w/ login info (one of this or- clientis 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 examine
- db: the database this will happen in (usually 'LAMP')
- client_url: a valid mongodb URL w/ login info
- client: 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 examine
- db: the database this will happen in (usually 'LAMP')
- client_url: a valid mongodb URL w/ login info
- client: 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 restore
- db: the database this will happen in (usually 'LAMP')
- client_url: a valid mongodb URL w/ login info
- client: a valid pymongo client
- restore_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 restore
- db: the database this will happen in (usually 'LAMP')
- client_url: a valid mongodb URL w/ login info
- client: a valid pymongo client
- restore_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 too
- db: the database this will happen in (usually 'LAMP')
- client_url: a valid mongodb URL w/ login info
- client: 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