Abstract
This page mainly covers the design of the new data models of the Dashboard under Mongoose. This new model should provide a more extendable data storage for the OpenMRS ID.
The goals for this data model is in-line with the Dashboard, that is to provide a one-site service.
For now they're only the most basic one that could cover the old data.
Will Be Updated
User
I'll simply just write some specifications here.
Code Block | ||
---|---|---|
| ||
/// user Schema
username: <String> // not empty, unique, only contain number and characters, currently at least has a length of 2
firstName: <String> // no requirement
lastName: <String> // no requirement
displayName: <String> // no requirement,
primaryEmail: <String> // not empty, unique, valid email address, one of emailList
displayEmail: <String> // valid email address
emailList: < [String] > // array of valid email address, not empty, all members are unique
password: <String> // not empty, a hashed String
groups: < [String] > // no duplicates in the Array, items in this array must be in Groups collection. could only be edited by admin user.
locked: <Boolean> // not empty
extra: <Mixed> // any JSON form data
/// additionally all email should be in lowercase
/// and username as well
/// special flag used to sync with LDAP
inLDAP: <Boolean> // if false, then store it in LDAP, if true then sync the modifications
skipLDAP: <Boolean> // used to skip the sync procedure
createdAt: <Date> // It is only used to expire(delete) this user, if it is not verified for a long time. |
Groups
This model describes user groups.
Code Block |
---|
groupName: <String> // not empty, unique
description: <String> // no requirement
member: < [UserRef] > // no duplicate items
///
UserRef:
objId: <ObjectId> // user document id
username: <String> // username |