openchs-models 1.31.35 → 1.31.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.circleci/config.yml +1 -0
  2. package/.editorconfig +1 -1
  3. package/Makefile +4 -0
  4. package/dist/AbstractEncounter.js +53 -0
  5. package/dist/AddressLevel.js +1 -1
  6. package/dist/Checklist.js +41 -2
  7. package/dist/ChecklistItem.js +43 -5
  8. package/dist/ChecklistItemDetail.js +1 -1
  9. package/dist/ChecklistItemStatus.js +3 -2
  10. package/dist/Comment.js +41 -2
  11. package/dist/Concept.js +9 -13
  12. package/dist/DashboardCache.js +21 -37
  13. package/dist/Encounter.js +22 -10
  14. package/dist/EntityApprovalStatus.js +41 -2
  15. package/dist/EntityMetaData.js +5 -1
  16. package/dist/Family.js +2 -2
  17. package/dist/GroupSubject.js +41 -2
  18. package/dist/IdentifierAssignment.js +41 -2
  19. package/dist/Individual.js +44 -6
  20. package/dist/Observation.js +8 -3
  21. package/dist/ObservationsHolder.js +42 -76
  22. package/dist/ProgramEncounter.js +22 -8
  23. package/dist/ProgramEnrolment.js +46 -8
  24. package/dist/ReportCard.js +63 -6
  25. package/dist/Schema.js +173 -6
  26. package/dist/SchemaNames.js +12 -4
  27. package/dist/SubjectMigration.js +41 -2
  28. package/dist/SubjectType.js +5 -3
  29. package/dist/UserInfo.js +13 -0
  30. package/dist/application/DashboardCacheFilter.js +80 -0
  31. package/dist/application/FormElement.js +4 -6
  32. package/dist/application/Format.js +1 -0
  33. package/dist/application/KeyValue.js +2 -1
  34. package/dist/application/StringKeyNumericValue.js +1 -0
  35. package/dist/assignment/UserSubjectAssignment.js +41 -2
  36. package/dist/draft/DraftEncounter.js +6 -6
  37. package/dist/draft/DraftSubject.js +2 -2
  38. package/dist/framework/RealmProxy.js +9 -1
  39. package/dist/framework/RealmResultsProxy.js +8 -0
  40. package/dist/geo/Point.js +2 -1
  41. package/dist/index.js +9 -23
  42. package/dist/program/SubjectProgramEligibility.js +42 -3
  43. package/dist/relationship/IndividualRelationship.js +42 -7
  44. package/dist/service/MetaDataService.js +80 -5
  45. package/dist/task/Task.js +43 -4
  46. package/dist/task/TaskUnAssignment.js +41 -2
  47. package/dist/utility/AuditUtil.js +39 -0
  48. package/dist/utility/ResourceUtil.js +4 -0
  49. package/package.json +1 -1
  50. package/dist/VisitScheduleConfig.js +0 -73
  51. package/dist/VisitScheduleInterval.js +0 -71
@@ -25,8 +25,14 @@ var _SchemaNames = _interopRequireDefault(require("./SchemaNames"));
25
25
 
26
26
  var _BaseEntity = _interopRequireDefault(require("./BaseEntity"));
27
27
 
28
+ var _AuditUtil = require("./utility/AuditUtil");
29
+
28
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
31
 
32
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
33
+
34
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
+
30
36
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
37
 
32
38
  class ProgramEncounter extends _AbstractEncounter.default {
@@ -164,7 +170,7 @@ _defineProperty(ProgramEncounter, "validationKeys", {
164
170
  _defineProperty(ProgramEncounter, "schema", {
165
171
  name: _SchemaNames.default.ProgramEncounter,
166
172
  primaryKey: "uuid",
167
- properties: {
173
+ properties: _objectSpread({
168
174
  uuid: {
169
175
  type: "string"
170
176
  },
@@ -190,7 +196,7 @@ _defineProperty(ProgramEncounter, "schema", {
190
196
  programEnrolment: _SchemaNames.default.ProgramEnrolment,
191
197
  observations: {
192
198
  type: "list",
193
- objectType: "Observation"
199
+ objectType: "EmbeddedObservation"
194
200
  },
195
201
  cancelDateTime: {
196
202
  type: "date",
@@ -198,14 +204,14 @@ _defineProperty(ProgramEncounter, "schema", {
198
204
  },
199
205
  cancelObservations: {
200
206
  type: "list",
201
- objectType: "Observation"
207
+ objectType: "EmbeddedObservation"
202
208
  },
203
209
  encounterLocation: {
204
- type: "Point",
210
+ type: _SchemaNames.default.EmbeddedPoint,
205
211
  optional: true
206
212
  },
207
213
  cancelLocation: {
208
- type: "Point",
214
+ type: _SchemaNames.default.EmbeddedPoint,
209
215
  optional: true
210
216
  },
211
217
  voided: {
@@ -219,9 +225,17 @@ _defineProperty(ProgramEncounter, "schema", {
219
225
  latestEntityApprovalStatus: {
220
226
  type: "EntityApprovalStatus",
221
227
  optional: true
222
- } //Reporting purposes
223
-
224
- }
228
+ }
229
+ }, _AuditUtil.AuditFields, {
230
+ filledBy: {
231
+ type: "string",
232
+ optional: true
233
+ },
234
+ filledByUUID: {
235
+ type: "string",
236
+ optional: true
237
+ }
238
+ })
225
239
  });
226
240
 
227
241
  var _default = ProgramEncounter;
@@ -41,8 +41,14 @@ var _SchemaNames = _interopRequireDefault(require("./SchemaNames"));
41
41
 
42
42
  var _MergeUtil = _interopRequireDefault(require("./utility/MergeUtil"));
43
43
 
44
+ var _AuditUtil = require("./utility/AuditUtil");
45
+
44
46
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
45
47
 
48
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
49
+
50
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
51
+
46
52
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
47
53
 
48
54
  const mergeMap = new Map([[_SchemaNames.default.ProgramEncounter, "encounters"], [_SchemaNames.default.Checklist, "checklists"], [_SchemaNames.default.EntityApprovalStatus, "approvalStatuses"]]);
@@ -152,6 +158,38 @@ class ProgramEnrolment extends _BaseEntity.default {
152
158
  this.that.approvalStatuses = this.fromEntityList(x);
153
159
  }
154
160
 
161
+ get createdBy() {
162
+ return this.that.createdBy;
163
+ }
164
+
165
+ set createdBy(x) {
166
+ this.that.createdBy = x;
167
+ }
168
+
169
+ get lastModifiedBy() {
170
+ return this.that.lastModifiedBy;
171
+ }
172
+
173
+ set lastModifiedBy(x) {
174
+ this.that.lastModifiedBy = x;
175
+ }
176
+
177
+ get createdByUUID() {
178
+ return this.that.createdByUUID;
179
+ }
180
+
181
+ set createdByUUID(x) {
182
+ this.that.createdByUUID = x;
183
+ }
184
+
185
+ get lastModifiedByUUID() {
186
+ return this.that.lastModifiedByUUID;
187
+ }
188
+
189
+ set lastModifiedByUUID(x) {
190
+ this.that.lastModifiedByUUID = x;
191
+ }
192
+
155
193
  static createEmptyInstance({
156
194
  individual,
157
195
  program
@@ -220,6 +258,7 @@ class ProgramEnrolment extends _BaseEntity.default {
220
258
 
221
259
  if (!_lodash.default.isNil(resource.enrolmentLocation)) programEnrolment.enrolmentLocation = _Point.default.fromResource(resource.enrolmentLocation);
222
260
  if (!_lodash.default.isNil(resource.exitLocation)) programEnrolment.exitLocation = _Point.default.fromResource(resource.exitLocation);
261
+ (0, _AuditUtil.mapAuditFields)(programEnrolment, resource);
223
262
  return programEnrolment;
224
263
  }
225
264
 
@@ -636,13 +675,13 @@ class ProgramEnrolment extends _BaseEntity.default {
636
675
  _defineProperty(ProgramEnrolment, "schema", {
637
676
  name: _SchemaNames.default.ProgramEnrolment,
638
677
  primaryKey: "uuid",
639
- properties: {
678
+ properties: _objectSpread({
640
679
  uuid: "string",
641
680
  program: "Program",
642
681
  enrolmentDateTime: "date",
643
682
  observations: {
644
683
  type: "list",
645
- objectType: "Observation"
684
+ objectType: "EmbeddedObservation"
646
685
  },
647
686
  programExitDateTime: {
648
687
  type: "date",
@@ -650,7 +689,7 @@ _defineProperty(ProgramEnrolment, "schema", {
650
689
  },
651
690
  programExitObservations: {
652
691
  type: "list",
653
- objectType: "Observation"
692
+ objectType: "EmbeddedObservation"
654
693
  },
655
694
  programOutcome: {
656
695
  type: "ProgramOutcome",
@@ -666,11 +705,11 @@ _defineProperty(ProgramEnrolment, "schema", {
666
705
  },
667
706
  individual: "Individual",
668
707
  enrolmentLocation: {
669
- type: "Point",
708
+ type: _SchemaNames.default.EmbeddedPoint,
670
709
  optional: true
671
710
  },
672
711
  exitLocation: {
673
- type: "Point",
712
+ type: _SchemaNames.default.EmbeddedPoint,
674
713
  optional: true
675
714
  },
676
715
  voided: {
@@ -684,9 +723,8 @@ _defineProperty(ProgramEnrolment, "schema", {
684
723
  latestEntityApprovalStatus: {
685
724
  type: "EntityApprovalStatus",
686
725
  optional: true
687
- } //Reporting purposes
688
-
689
- }
726
+ }
727
+ }, _AuditUtil.AuditFields)
690
728
  });
691
729
 
692
730
  _defineProperty(ProgramEnrolment, "merge", childEntityName => _MergeUtil.default.getMergeFunction(childEntityName, mergeMap));
@@ -13,10 +13,16 @@ var _ResourceUtil = _interopRequireDefault(require("./utility/ResourceUtil"));
13
13
 
14
14
  var _StandardReportCardType = _interopRequireDefault(require("./StandardReportCardType"));
15
15
 
16
+ var _lodash = _interopRequireDefault(require("lodash"));
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
18
20
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
21
 
22
+ function throwInvalidIndexError(index, reportCardsLength) {
23
+ throw new Error(`Invalid index ${index} specified for reportCard with length ${reportCardsLength}`);
24
+ }
25
+
20
26
  class ReportCard extends _BaseEntity.default {
21
27
  constructor(that = null) {
22
28
  super(that);
@@ -62,28 +68,68 @@ class ReportCard extends _BaseEntity.default {
62
68
  this.that.colour = x;
63
69
  }
64
70
 
71
+ get nested() {
72
+ return this.that.nested;
73
+ }
74
+
75
+ set nested(x) {
76
+ this.that.nested = x;
77
+ }
78
+
79
+ get countOfCards() {
80
+ return this.that.countOfCards;
81
+ }
82
+
83
+ set countOfCards(x) {
84
+ this.that.countOfCards = x;
85
+ }
86
+
65
87
  get iconName() {
66
88
  //TODO: right now not syncing the icon name uploaded from app designer.
67
- return _.isNil(this.standardReportCardType) ? null : this.standardReportCardType.iconName;
89
+ return _lodash.default.isNil(this.standardReportCardType) ? null : this.standardReportCardType.iconName;
68
90
  }
69
91
 
70
92
  get cardColor() {
71
- return _.isNil(this.standardReportCardType) ? this.colour : this.standardReportCardType.cardColor;
93
+ return _lodash.default.isNil(this.standardReportCardType) ? this.colour : this.standardReportCardType.cardColor;
72
94
  }
73
95
 
74
96
  get textColor() {
75
- return _.isNil(this.standardReportCardType) ? '#ffffff' : this.standardReportCardType.textColor;
97
+ return _lodash.default.isNil(this.standardReportCardType) ? '#ffffff' : this.standardReportCardType.textColor;
98
+ }
99
+ /**
100
+ * Helper method used to generate unique key value for Nested Report Cards using UUID and Index of the Report Card.
101
+ * The Nested Report Card's query responses would be mapped to the corresponding Dashboard Report cards using the UUID and Index.
102
+ *
103
+ * @param index
104
+ * @returns {string}
105
+ */
106
+
107
+
108
+ getCardId(index = 0) {
109
+ return this.uuid + '#' + index;
110
+ }
111
+
112
+ getCardName(response, index = 0) {
113
+ return _lodash.default.get(response, `reportCards[${index}].name`) || this.name;
114
+ }
115
+
116
+ getCardColor(response, index = 0) {
117
+ return _lodash.default.get(response, `reportCards[${index}].cardColor`) || this.cardColor;
118
+ }
119
+
120
+ getTextColor(response, index = 0) {
121
+ return _lodash.default.get(response, `reportCards[${index}].textColor`) || this.textColor;
76
122
  }
77
123
 
78
124
  static fromResource(resource, entityService) {
79
- const reportCard = _General.default.assignFields(resource, new ReportCard(), ["uuid", "name", "query", "description", "colour", "voided"]);
125
+ const reportCard = _General.default.assignFields(resource, new ReportCard(), ["uuid", "name", "query", "description", "colour", "voided", "nested", "countOfCards"]);
80
126
 
81
127
  reportCard.standardReportCardType = entityService.findByKey("uuid", _ResourceUtil.default.getUUIDFor(resource, "standardReportCardUUID"), _StandardReportCardType.default.schema.name);
82
128
  return reportCard;
83
129
  }
84
130
 
85
131
  isStandardTaskType() {
86
- return _.isNil(this.standardReportCardType) ? false : this.standardReportCardType.isTaskType();
132
+ return _lodash.default.isNil(this.standardReportCardType) ? false : this.standardReportCardType.isTaskType();
87
133
  }
88
134
 
89
135
  }
@@ -110,7 +156,18 @@ _defineProperty(ReportCard, "schema", {
110
156
  voided: {
111
157
  type: "bool",
112
158
  default: false
113
- }
159
+ },
160
+ nested: {
161
+ type: "bool",
162
+ default: false,
163
+ optional: true
164
+ },
165
+ countOfCards: {
166
+ type: "int",
167
+ default: 1,
168
+ optional: true
169
+ } //Used only by nested ReportCards
170
+
114
171
  }
115
172
  });
116
173
 
package/dist/Schema.js CHANGED
@@ -71,10 +71,6 @@ var _UserInfo = _interopRequireDefault(require("./UserInfo"));
71
71
 
72
72
  var _StringKeyNumericValue = _interopRequireDefault(require("./application/StringKeyNumericValue"));
73
73
 
74
- var _VisitScheduleInterval = _interopRequireDefault(require("./VisitScheduleInterval"));
75
-
76
- var _VisitScheduleConfig = _interopRequireDefault(require("./VisitScheduleConfig"));
77
-
78
74
  var _IndividualRelation = _interopRequireDefault(require("./relationship/IndividualRelation"));
79
75
 
80
76
  var _IndividualRelationship = _interopRequireDefault(require("./relationship/IndividualRelationship"));
@@ -191,18 +187,165 @@ var _DefinedObjectSchema = _interopRequireDefault(require("./framework/DefinedOb
191
187
 
192
188
  var _MigrationsHelper = _interopRequireDefault(require("./MigrationsHelper"));
193
189
 
190
+ var _MetaDataService = _interopRequireDefault(require("./service/MetaDataService"));
191
+
194
192
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
195
193
 
196
194
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
197
195
 
198
196
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
199
197
 
200
- const entities = [_DashboardFilter.default, _LocaleMapping.default, _Settings.default, _ConceptAnswer.default, _Concept.default, _EncounterType.default, _Gender.default, _UserDefinedIndividualProperty.default, _AddressLevel.LocationMapping, _AddressLevel.default, _KeyValue.default, _Form.default, _FormMapping.default, _FormElementGroup.default, _FormElement.default, _SubjectType.default, _Individual.default, _ProgramOutcome.default, _Program.default, _ProgramEnrolment.default, _Observation.default, _ProgramEncounter.default, _Encounter.default, _EntitySyncStatus.default, _EntityQueue.default, _ConfigFile.default, _Checklist.default, _ChecklistItem.default, _Format.default, _UserInfo.default, _StringKeyNumericValue.default, _VisitScheduleInterval.default, _VisitScheduleConfig.default, _Family.default, _IndividualRelation.default, _IndividualRelationGenderMapping.default, _IndividualRelationshipType.default, _IndividualRelationship.default, _RuleDependency.default, _Rule.default, _ChecklistItemStatus.default, _ChecklistDetail.default, _ChecklistItemDetail.default, _VideoTelemetric.default, _Video.default, _MediaQueue.default, _Point.default, _SyncTelemetry.default, _IdentifierSource.default, _IdentifierAssignment.default, _RuleFailureTelemetry.default, _BeneficiaryModePin.default, _OrganisationConfig.default, _PlatformTranslation.default, _Translation.default, _Groups.default, _MyGroups.default, _GroupPrivileges.default, _Privilege.default, _GroupRole.default, _GroupSubject.default, _DashboardCache.default, _CustomDashboardCache.default, _LocationHierarchy.default, _ReportCard.default, _Dashboard.default, _DashboardSectionCardMapping.default, _DraftSubject.default, _StandardReportCardType.default, _ApprovalStatus.default, _EntityApprovalStatus.default, _GroupDashboard.default, _DashboardSection.default, _News.default, _Comment.default, _CommentThread.default, _Extension.default, _SubjectMigration.default, _ResetSync.default, _Documentation.default, _DocumentationItem.default, _TaskType.default, _TaskStatus.default, _Task.default, _TaskUnAssignment.default, _DraftEncounter.default, _SubjectProgramEligibility.default, _MenuItem.default, _UserSubjectAssignment.default];
198
+ const entities = [_DashboardFilter.default, _LocaleMapping.default, _Settings.default, _ConceptAnswer.default, _Concept.default, _EncounterType.default, _Gender.default, _UserDefinedIndividualProperty.default, _AddressLevel.LocationMapping, _AddressLevel.default, _KeyValue.default, _Form.default, _FormMapping.default, _FormElementGroup.default, _FormElement.default, _SubjectType.default, _Individual.default, _ProgramOutcome.default, _Program.default, _ProgramEnrolment.default, _Observation.default, _ProgramEncounter.default, _Encounter.default, _EntitySyncStatus.default, _EntityQueue.default, _ConfigFile.default, _Checklist.default, _ChecklistItem.default, _Format.default, _UserInfo.default, _StringKeyNumericValue.default, _Family.default, _IndividualRelation.default, _IndividualRelationGenderMapping.default, _IndividualRelationshipType.default, _IndividualRelationship.default, _RuleDependency.default, _Rule.default, _ChecklistItemStatus.default, _ChecklistDetail.default, _ChecklistItemDetail.default, _VideoTelemetric.default, _Video.default, _MediaQueue.default, _Point.default, _SyncTelemetry.default, _IdentifierSource.default, _IdentifierAssignment.default, _RuleFailureTelemetry.default, _BeneficiaryModePin.default, _OrganisationConfig.default, _PlatformTranslation.default, _Translation.default, _Groups.default, _MyGroups.default, _GroupPrivileges.default, _Privilege.default, _GroupRole.default, _GroupSubject.default, _DashboardCache.default, _CustomDashboardCache.default, _LocationHierarchy.default, _ReportCard.default, _Dashboard.default, _DashboardSectionCardMapping.default, _DraftSubject.default, _StandardReportCardType.default, _ApprovalStatus.default, _EntityApprovalStatus.default, _GroupDashboard.default, _DashboardSection.default, _News.default, _Comment.default, _CommentThread.default, _Extension.default, _SubjectMigration.default, _ResetSync.default, _Documentation.default, _DocumentationItem.default, _TaskType.default, _TaskStatus.default, _Task.default, _TaskUnAssignment.default, _DraftEncounter.default, _SubjectProgramEligibility.default, _MenuItem.default, _UserSubjectAssignment.default];
199
+
200
+ function migrateObjectTypeFieldToEmbedded(newDB, oldDB, schemaName, field, creatorFn) {
201
+ console.log(`schema: ${schemaName}, field: ${field}`);
202
+ newDB.objects(schemaName).forEach(newDbParentEntity => {
203
+ const oldFieldValue = oldDB.objects(schemaName).filtered(`uuid = "${newDbParentEntity.uuid}"`)[0][field];
204
+
205
+ if (!_lodash.default.isNil(oldFieldValue)) {
206
+ newDbParentEntity[field] = creatorFn(oldFieldValue);
207
+ }
208
+ });
209
+ }
210
+
211
+ function migrateListTypeFieldToEmbedded(newDB, oldDB, schemaName, field, creatorFn) {
212
+ console.log(`schema: ${schemaName}, field: ${field}`);
213
+ newDB.objects(schemaName).forEach(newDbParentEntity => {
214
+ const newList = [];
215
+ const oldFieldValues = oldDB.objects(schemaName).filtered(`uuid = "${newDbParentEntity.uuid}"`)[0][field];
216
+ oldFieldValues.forEach(oldFieldValue => {
217
+ newList.push(creatorFn(oldFieldValue));
218
+ });
219
+ newDbParentEntity[field] = newList;
220
+ });
221
+ }
222
+
223
+ function migrateEmbeddedObjects(oldDB, newDB) {
224
+ _MetaDataService.default.forEachFormatField((field, schemaName) => {
225
+ migrateObjectTypeFieldToEmbedded(newDB, oldDB, schemaName, field, old => {
226
+ return {
227
+ regex: old.regex,
228
+ descriptionKey: old.descriptionKey
229
+ };
230
+ });
231
+ });
232
+
233
+ newDB.deleteModel("Format");
234
+
235
+ _MetaDataService.default.forEachKeyValueField((field, schemaName) => {
236
+ migrateListTypeFieldToEmbedded(newDB, oldDB, schemaName, field, old => {
237
+ return {
238
+ key: old.key,
239
+ value: old.value
240
+ };
241
+ });
242
+ });
243
+
244
+ newDB.deleteModel("KeyValue");
245
+
246
+ _MetaDataService.default.forEachChecklistItemStatusField((field, schemaName) => {
247
+ migrateListTypeFieldToEmbedded(newDB, oldDB, schemaName, field, old => {
248
+ return {
249
+ state: old.state,
250
+ from: {
251
+ key: old.from.key,
252
+ value: old.from.value
253
+ },
254
+ to: {
255
+ key: old.to.key,
256
+ value: old.to.value
257
+ },
258
+ color: old.color,
259
+ displayOrder: old.displayOrder,
260
+ start: old.start,
261
+ end: old.end
262
+ };
263
+ });
264
+ });
265
+
266
+ console.log(`deleting model: ChecklistItemStatus`);
267
+ newDB.deleteModel("ChecklistItemStatus");
268
+ console.log(`deleting model: ProgramConfig`);
269
+ newDB.deleteModel("ProgramConfig");
270
+ console.log(`deleting model: VisitScheduleConfig`);
271
+ newDB.deleteModel("VisitScheduleConfig");
272
+ console.log(`deleting model: VisitScheduleInterval`);
273
+ newDB.deleteModel("VisitScheduleInterval");
274
+ console.log(`deleting model: StringKeyNumericValue`);
275
+ newDB.deleteModel("StringKeyNumericValue");
276
+ }
277
+
278
+ function flush(db) {
279
+ db.commitTransaction();
280
+ db.beginTransaction();
281
+ }
282
+
283
+ function shouldFlush(numberOfRecords) {
284
+ const batchSize = 100;
285
+ return numberOfRecords % batchSize === batchSize - 1;
286
+ }
287
+
288
+ function migrateGeoLocation(oldDB, newDB) {
289
+ flush(newDB);
290
+ let recordCounter = 0;
291
+
292
+ _MetaDataService.default.forEachPointField((field, schemaName) => {
293
+ console.log(`schema: ${schemaName}, field: ${field}`);
294
+ newDB.objects(schemaName).forEach(newDbParentEntity => {
295
+ if (shouldFlush(recordCounter)) {
296
+ flush(newDB);
297
+ }
298
+
299
+ const oldFieldValue = oldDB.objects(schemaName).filtered(`uuid = "${newDbParentEntity.uuid}"`)[0][field];
300
+
301
+ if (!_lodash.default.isNil(oldFieldValue)) {
302
+ newDbParentEntity[field] = {
303
+ x: oldFieldValue.x,
304
+ y: oldFieldValue.y
305
+ };
306
+ }
307
+
308
+ recordCounter++;
309
+ });
310
+ });
311
+
312
+ flush(newDB);
313
+ newDB.deleteModel("Point");
314
+ }
315
+
316
+ function migrateObservationsToEmbedded(oldDB, newDB) {
317
+ flush(newDB);
318
+ let recordCounter = 0;
319
+
320
+ _MetaDataService.default.forEachObservationField((observationField, schemaName) => {
321
+ console.log(`schema: ${schemaName}, field: ${observationField}`);
322
+ newDB.objects(schemaName).forEach(newDbParentEntity => {
323
+ if (shouldFlush(recordCounter)) {
324
+ flush(newDB);
325
+ }
326
+
327
+ const newList = [];
328
+ const oldFieldValues = oldDB.objects(schemaName).filtered(`uuid = "${newDbParentEntity.uuid}"`)[0][observationField];
329
+ oldFieldValues.forEach(oldFieldValue => {
330
+ const newConcept = newDB.objects("Concept").filtered(`uuid = "${oldFieldValue.concept.uuid}"`)[0];
331
+ newList.push({
332
+ concept: newConcept,
333
+ valueJSON: oldFieldValue.valueJSON
334
+ });
335
+ });
336
+ newDbParentEntity[observationField] = newList;
337
+ recordCounter++;
338
+ });
339
+ });
340
+
341
+ flush(newDB);
342
+ newDB.deleteModel("Observation");
343
+ }
201
344
 
202
345
  function createRealmConfig() {
203
346
  return {
204
347
  //order is important, should be arranged according to the dependency
205
- schemaVersion: 181,
348
+ schemaVersion: 186,
206
349
  onMigration: function (oldDB, newDB) {
207
350
  console.log("[AvniModels.Schema]", `Running migration with old schema version: ${oldDB.schemaVersion} and new schema version: ${newDB.schemaVersion}`);
208
351
 
@@ -798,6 +941,30 @@ function createRealmConfig() {
798
941
  rft.entityId = null;
799
942
  });
800
943
  }
944
+
945
+ if (oldDB.schemaVersion < 182) {
946
+ _lodash.default.forEach(newDB.objects(_ReportCard.default.schema.name), rc => {
947
+ rc.nested = false;
948
+ rc.countOfCards = 1;
949
+ });
950
+ }
951
+
952
+ if (newDB.schemaVersion < 183) {
953
+ const newObjects = newDB.objects("DashboardCache");
954
+ newDB.delete(newObjects);
955
+ }
956
+
957
+ if (oldDB.schemaVersion < 184) {
958
+ migrateEmbeddedObjects(oldDB, newDB);
959
+ }
960
+
961
+ if (oldDB.schemaVersion < 185) {
962
+ migrateGeoLocation(oldDB, newDB);
963
+ }
964
+
965
+ if (oldDB.schemaVersion < 186) {
966
+ migrateObservationsToEmbedded(oldDB, newDB);
967
+ }
801
968
  }
802
969
  };
803
970
  }
@@ -9,6 +9,12 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
9
9
 
10
10
  class SchemaNames {}
11
11
 
12
+ _defineProperty(SchemaNames, "Family", "Family");
13
+
14
+ _defineProperty(SchemaNames, "AddressLevel", "AddressLevel");
15
+
16
+ _defineProperty(SchemaNames, "DraftEncounter", "DraftEncounter");
17
+
12
18
  _defineProperty(SchemaNames, "EntitySyncStatus", "EntitySyncStatus");
13
19
 
14
20
  _defineProperty(SchemaNames, "Individual", "Individual");
@@ -27,7 +33,7 @@ _defineProperty(SchemaNames, "Identifier", "Identifier");
27
33
 
28
34
  _defineProperty(SchemaNames, "Form", "Form");
29
35
 
30
- _defineProperty(SchemaNames, "Format", "Format");
36
+ _defineProperty(SchemaNames, "Format", "EmbeddedFormat");
31
37
 
32
38
  _defineProperty(SchemaNames, "FormElement", "FormElement");
33
39
 
@@ -35,11 +41,11 @@ _defineProperty(SchemaNames, "FormElementGroup", "FormElementGroup");
35
41
 
36
42
  _defineProperty(SchemaNames, "FormMapping", "FormMapping");
37
43
 
38
- _defineProperty(SchemaNames, "KeyValue", "KeyValue");
44
+ _defineProperty(SchemaNames, "KeyValue", "EmbeddedKeyValue");
39
45
 
40
46
  _defineProperty(SchemaNames, "MenuItem", "MenuItem");
41
47
 
42
- _defineProperty(SchemaNames, "StringKeyNumericValue", "StringKeyNumericValue");
48
+ _defineProperty(SchemaNames, "StringKeyNumericValue", "EmbeddedStringKeyNumericValue");
43
49
 
44
50
  _defineProperty(SchemaNames, "UserSubjectAssignment", "UserSubjectAssignment");
45
51
 
@@ -77,7 +83,7 @@ _defineProperty(SchemaNames, "ChecklistDetail", "ChecklistDetail");
77
83
 
78
84
  _defineProperty(SchemaNames, "ChecklistItemDetail", "ChecklistItemDetail");
79
85
 
80
- _defineProperty(SchemaNames, "ChecklistItemStatus", "ChecklistItemStatus");
86
+ _defineProperty(SchemaNames, "ChecklistItemStatus", "EmbeddedChecklistItemStatus");
81
87
 
82
88
  _defineProperty(SchemaNames, "Comment", "Comment");
83
89
 
@@ -85,5 +91,7 @@ _defineProperty(SchemaNames, "Concept", "Concept");
85
91
 
86
92
  _defineProperty(SchemaNames, "EntityApprovalStatus", "EntityApprovalStatus");
87
93
 
94
+ _defineProperty(SchemaNames, "EmbeddedPoint", "EmbeddedPoint");
95
+
88
96
  var _default = SchemaNames;
89
97
  exports.default = _default;
@@ -11,8 +11,14 @@ var _BaseEntity = _interopRequireDefault(require("./BaseEntity"));
11
11
 
12
12
  var _ResourceUtil = _interopRequireDefault(require("./utility/ResourceUtil"));
13
13
 
14
+ var _AuditUtil = require("./utility/AuditUtil");
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
 
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
+
16
22
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
23
 
18
24
  class SubjectMigration extends _BaseEntity.default {
@@ -92,6 +98,38 @@ class SubjectMigration extends _BaseEntity.default {
92
98
  this.that.hasMigrated = x;
93
99
  }
94
100
 
101
+ get createdBy() {
102
+ return this.that.createdBy;
103
+ }
104
+
105
+ set createdBy(x) {
106
+ this.that.createdBy = x;
107
+ }
108
+
109
+ get lastModifiedBy() {
110
+ return this.that.lastModifiedBy;
111
+ }
112
+
113
+ set lastModifiedBy(x) {
114
+ this.that.lastModifiedBy = x;
115
+ }
116
+
117
+ get createdByUUID() {
118
+ return this.that.createdByUUID;
119
+ }
120
+
121
+ set createdByUUID(x) {
122
+ this.that.createdByUUID = x;
123
+ }
124
+
125
+ get lastModifiedByUUID() {
126
+ return this.that.lastModifiedByUUID;
127
+ }
128
+
129
+ set lastModifiedByUUID(x) {
130
+ this.that.lastModifiedByUUID = x;
131
+ }
132
+
95
133
  static create(subjectUUID, oldAddressLevelUUID, newAddressLevelUUID, oldSyncConcept1Value, newSyncConcept1Value, oldSyncConcept2Value, newSyncConcept2Value, subjectTypeUUID) {
96
134
  let subjectMigration = new SubjectMigration();
97
135
  subjectMigration.uuid = _General.default.randomUUID();
@@ -117,6 +155,7 @@ class SubjectMigration extends _BaseEntity.default {
117
155
  subjectMigration.newSyncConcept1Value = resource.newSyncConcept1Value;
118
156
  subjectMigration.oldSyncConcept2Value = resource.oldSyncConcept2Value;
119
157
  subjectMigration.newSyncConcept2Value = resource.newSyncConcept2Value;
158
+ (0, _AuditUtil.mapAuditFields)(subjectMigration, resource);
120
159
  return subjectMigration;
121
160
  }
122
161
 
@@ -140,7 +179,7 @@ class SubjectMigration extends _BaseEntity.default {
140
179
  _defineProperty(SubjectMigration, "schema", {
141
180
  name: 'SubjectMigration',
142
181
  primaryKey: 'uuid',
143
- properties: {
182
+ properties: _objectSpread({
144
183
  uuid: 'string',
145
184
  subjectUUID: 'string',
146
185
  oldAddressLevelUUID: {
@@ -172,7 +211,7 @@ _defineProperty(SubjectMigration, "schema", {
172
211
  type: 'bool',
173
212
  default: false
174
213
  }
175
- }
214
+ }, _AuditUtil.AuditFields)
176
215
  });
177
216
 
178
217
  var _default = SubjectMigration;
@@ -13,6 +13,8 @@ var _Format = _interopRequireDefault(require("./application/Format"));
13
13
 
14
14
  var _ResourceUtil = _interopRequireDefault(require("./utility/ResourceUtil"));
15
15
 
16
+ var _SchemaNames = _interopRequireDefault(require("./SchemaNames"));
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
18
20
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -300,15 +302,15 @@ _defineProperty(SubjectType, "schema", {
300
302
  default: false
301
303
  },
302
304
  validFirstNameFormat: {
303
- type: "Format",
305
+ type: _SchemaNames.default.Format,
304
306
  optional: true
305
307
  },
306
308
  validMiddleNameFormat: {
307
- type: "Format",
309
+ type: _SchemaNames.default.Format,
308
310
  optional: true
309
311
  },
310
312
  validLastNameFormat: {
311
- type: "Format",
313
+ type: _SchemaNames.default.Format,
312
314
  optional: true
313
315
  },
314
316
  iconFileS3Key: {