New Data Model Design

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.

/// 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.

groupName: <String> // not empty, unique description: <String> // no requirement member: < [UserRef] > // no duplicate items   /// UserRef: objId: <ObjectId> // user document id username: <String> // username