moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
122 lines • 10.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Base } from './base';
import { format, startOfToday, differenceInYears } from 'date-fns';
/**
* Person, each project can extend this person class
* NPM package dependencies:
* a) moment
*/
export class Person extends Base {
constructor() {
super(...arguments);
/**
* Format to display birthdate
*/
this.dobFormat = 'yyyy/MM/dd';
this.apiDobFormat = 'yyyyMMdd';
}
/**
* Returns DoB in YYYYMMDD format, used by API.
* @return {?}
*/
get dateOfBirthShort() {
return this.dateOfBirth ? format(this.dateOfBirth, this.apiDobFormat) : null;
}
/**
* Returns DoB in dobFormat (default: YYYY/MM/DD), for display purposes
* @return {?}
*/
get formatDateOfBirth() {
return this.dateOfBirth ? format(this.dateOfBirth, this.dobFormat) : null;
}
/**
* Concatenates the first and last name together
* @return {?}
*/
get name() {
/** @type {?} */
let _name = null;
if (this.firstName) {
_name = this.firstName;
}
if (this.lastName) {
_name = _name ? _name.concat(' ' + this.lastName) : this.lastName;
}
return _name;
}
/**
* Sets the full name for the person (first, middle and last names)
* NOTE: Just for development with dummy data and unit tests
* @param {?} fullName
* @return {?}
*/
set name(fullName) {
/** @type {?} */
const names = fullName.split(' ');
this.firstName = names[0];
if (names.length === 2) {
this.lastName = names[1];
}
else if (names.length === 3) {
this.middleName = names[1];
this.lastName = names[2];
}
}
/**
* Returns the person's full name - first middle last name concatenated together
* @return {?}
*/
get fullname() {
/** @type {?} */
let _name = null;
if (this.firstName) {
_name = this.firstName;
}
if (this.middleName) {
_name = _name ? _name.concat(' ' + this.middleName) : this.middleName;
}
if (this.lastName) {
_name = _name ? _name.concat(' ' + this.lastName) : this.lastName;
}
return _name;
}
/**
* Calculates the age from date of birth
* @return {?}
*/
getAge() {
return differenceInYears(this.dateOfBirth, startOfToday());
}
/* Copy function */
/**
* @param {?} object
* @return {?}
*/
copy(object) {
this.firstName = object.firstName;
this.middleName = object.middleName;
this.lastName = object.lastName;
this.dateOfBirth = object.dateOfBirth;
}
}
if (false) {
/** @type {?} */
Person.prototype.firstName;
/** @type {?} */
Person.prototype.middleName;
/** @type {?} */
Person.prototype.lastName;
/**
* Format to display birthdate
* @type {?}
*/
Person.prototype.dobFormat;
/** @type {?} */
Person.prototype.apiDobFormat;
/** @type {?} */
Person.prototype.dateOfBirth;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL3BlcnNvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBT25FLE1BQU0sT0FBTyxNQUFPLFNBQVEsSUFBSTtJQUFoQzs7Ozs7UUFRUyxjQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ3pCLGlCQUFZLEdBQUcsVUFBVSxDQUFDO0lBOEVuQyxDQUFDOzs7OztJQXhFQyxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pGLENBQUM7Ozs7O0lBR0QsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5RSxDQUFDOzs7OztJQUdELElBQUksSUFBSTs7WUFDRixLQUFLLEdBQUcsSUFBSTtRQUVoQixJQUFLLElBQUksQ0FBQyxTQUFTLEVBQUc7WUFDcEIsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDeEI7UUFFRCxJQUFLLElBQUksQ0FBQyxRQUFRLEVBQUc7WUFDbkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3JFO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7O0lBTUQsSUFBSSxJQUFJLENBQUUsUUFBZ0I7O2NBRWxCLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxQixJQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFHO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCO2FBQU0sSUFBSyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7Ozs7O0lBR0QsSUFBSSxRQUFROztZQUNOLEtBQUssR0FBRyxJQUFJO1FBRWhCLElBQUssSUFBSSxDQUFDLFNBQVMsRUFBRztZQUNwQixLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN4QjtRQUVELElBQUssSUFBSSxDQUFDLFVBQVUsRUFBRztZQUNyQixLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekU7UUFFRCxJQUFLLElBQUksQ0FBQyxRQUFRLEVBQUc7WUFDbkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3JFO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7OztJQUdELE1BQU07UUFDSixPQUFPLGlCQUFpQixDQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUUsQ0FBQztJQUMvRCxDQUFDOzs7Ozs7SUFHRCxJQUFJLENBQUUsTUFBYztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztDQUNGOzs7SUFwRkMsMkJBQXlCOztJQUN6Qiw0QkFBMEI7O0lBQzFCLDBCQUF3Qjs7Ozs7SUFHeEIsMkJBQWdDOztJQUNoQyw4QkFBaUM7O0lBR2pDLDZCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcclxuaW1wb3J0IHsgZm9ybWF0LCBzdGFydE9mVG9kYXksIGRpZmZlcmVuY2VJblllYXJzIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5cclxuLyoqXHJcbiAqIFBlcnNvbiwgZWFjaCBwcm9qZWN0IGNhbiBleHRlbmQgdGhpcyBwZXJzb24gY2xhc3NcclxuICogTlBNIHBhY2thZ2UgZGVwZW5kZW5jaWVzOlxyXG4gKiAgYSkgbW9tZW50XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGVyc29uIGV4dGVuZHMgQmFzZSB7XHJcblxyXG4gIC8vIFBhcnRzIG9mIGEgcGVyc29uJ3MgbmFtZVxyXG4gIHB1YmxpYyBmaXJzdE5hbWU6IHN0cmluZztcclxuICBwdWJsaWMgbWlkZGxlTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBsYXN0TmFtZTogc3RyaW5nO1xyXG5cclxuICAvKiogRm9ybWF0IHRvIGRpc3BsYXkgYmlydGhkYXRlICovXHJcbiAgcHVibGljIGRvYkZvcm1hdCA9ICd5eXl5L01NL2RkJztcclxuICBwdWJsaWMgYXBpRG9iRm9ybWF0ID0gJ3l5eXlNTWRkJztcclxuXHJcbiAgLy8gSW5pdGlhbGl6ZSBkb2IgdG8gbnVsbHMgLSBUbyBiZSByZW1vdmVkXHJcbiAgcHVibGljIGRhdGVPZkJpcnRoOiBEYXRlO1xyXG5cclxuICAvKiogUmV0dXJucyBEb0IgaW4gWVlZWU1NREQgZm9ybWF0LCB1c2VkIGJ5IEFQSS4gKi9cclxuICBnZXQgZGF0ZU9mQmlydGhTaG9ydCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZU9mQmlydGggPyBmb3JtYXQoIHRoaXMuZGF0ZU9mQmlydGgsIHRoaXMuYXBpRG9iRm9ybWF0ICkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgRG9CIGluIGRvYkZvcm1hdCAoZGVmYXVsdDogWVlZWS9NTS9ERCksIGZvciBkaXNwbGF5IHB1cnBvc2VzICovXHJcbiAgZ2V0IGZvcm1hdERhdGVPZkJpcnRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlT2ZCaXJ0aCA/IGZvcm1hdCggdGhpcy5kYXRlT2ZCaXJ0aCwgdGhpcy5kb2JGb3JtYXQgKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKiogQ29uY2F0ZW5hdGVzIHRoZSBmaXJzdCBhbmQgbGFzdCBuYW1lIHRvZ2V0aGVyICovXHJcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIGxldCBfbmFtZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKCB0aGlzLmZpcnN0TmFtZSApIHtcclxuICAgICAgX25hbWUgPSB0aGlzLmZpcnN0TmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIHRoaXMubGFzdE5hbWUgKSB7XHJcbiAgICAgIF9uYW1lID0gX25hbWUgPyBfbmFtZS5jb25jYXQoICcgJyArIHRoaXMubGFzdE5hbWUgKSA6IHRoaXMubGFzdE5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIF9uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZnVsbCBuYW1lIGZvciB0aGUgcGVyc29uIChmaXJzdCwgbWlkZGxlIGFuZCBsYXN0IG5hbWVzKVxyXG4gICAqIE5PVEU6IEp1c3QgZm9yIGRldmVsb3BtZW50IHdpdGggZHVtbXkgZGF0YSBhbmQgdW5pdCB0ZXN0c1xyXG4gICAqL1xyXG4gIHNldCBuYW1lKCBmdWxsTmFtZTogc3RyaW5nICkge1xyXG5cclxuICAgIGNvbnN0IG5hbWVzID0gZnVsbE5hbWUuc3BsaXQoICcgJykgO1xyXG4gICAgdGhpcy5maXJzdE5hbWUgPSBuYW1lc1swXTtcclxuXHJcbiAgICBpZiAoIG5hbWVzLmxlbmd0aCA9PT0gMiApIHtcclxuICAgICAgdGhpcy5sYXN0TmFtZSA9IG5hbWVzWzFdO1xyXG4gICAgfSBlbHNlIGlmICggbmFtZXMubGVuZ3RoID09PSAzICkge1xyXG4gICAgICB0aGlzLm1pZGRsZU5hbWUgPSBuYW1lc1sxXTtcclxuICAgICAgdGhpcy5sYXN0TmFtZSA9IG5hbWVzWzJdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdGhlIHBlcnNvbidzIGZ1bGwgbmFtZSAtIGZpcnN0IG1pZGRsZSBsYXN0IG5hbWUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyICovXHJcbiAgZ2V0IGZ1bGxuYW1lKCkge1xyXG4gICAgbGV0IF9uYW1lID0gbnVsbDtcclxuXHJcbiAgICBpZiAoIHRoaXMuZmlyc3ROYW1lICkge1xyXG4gICAgICBfbmFtZSA9IHRoaXMuZmlyc3ROYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICggdGhpcy5taWRkbGVOYW1lICkge1xyXG4gICAgICBfbmFtZSA9IF9uYW1lID8gX25hbWUuY29uY2F0KCAnICcgKyB0aGlzLm1pZGRsZU5hbWUgKSA6IHRoaXMubWlkZGxlTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIHRoaXMubGFzdE5hbWUgKSB7XHJcbiAgICAgIF9uYW1lID0gX25hbWUgPyBfbmFtZS5jb25jYXQoICcgJyArIHRoaXMubGFzdE5hbWUgKSA6IHRoaXMubGFzdE5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIF9uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqIENhbGN1bGF0ZXMgdGhlIGFnZSBmcm9tIGRhdGUgb2YgYmlydGggKi9cclxuICBnZXRBZ2UoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBkaWZmZXJlbmNlSW5ZZWFycyggdGhpcy5kYXRlT2ZCaXJ0aCwgc3RhcnRPZlRvZGF5KCkgKTtcclxuICB9XHJcblxyXG4gIC8qIENvcHkgZnVuY3Rpb24gKi9cclxuICBjb3B5KCBvYmplY3Q6IFBlcnNvbiApIHtcclxuICAgIHRoaXMuZmlyc3ROYW1lID0gb2JqZWN0LmZpcnN0TmFtZTtcclxuICAgIHRoaXMubWlkZGxlTmFtZSA9IG9iamVjdC5taWRkbGVOYW1lO1xyXG4gICAgdGhpcy5sYXN0TmFtZSA9IG9iamVjdC5sYXN0TmFtZTtcclxuICAgIHRoaXMuZGF0ZU9mQmlydGggPSBvYmplY3QuZGF0ZU9mQmlydGg7XHJcbiAgfVxyXG59XHJcbiJdfQ==