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 orclientis 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