openchs-models 1.32.54 → 1.32.56

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.
package/dist/Concept.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.MediaType = exports.default = void 0;
6
+ exports.default = void 0;
7
7
 
8
8
  var _BaseEntity = _interopRequireDefault(require("./BaseEntity"));
9
9
 
@@ -17,8 +17,6 @@ var _SingleCodedValue = _interopRequireDefault(require("./observation/SingleCode
17
17
 
18
18
  var _PrimitiveValue = _interopRequireDefault(require("./observation/PrimitiveValue"));
19
19
 
20
- var _Duration = _interopRequireDefault(require("./Duration"));
21
-
22
20
  var _CompositeDuration = _interopRequireDefault(require("./CompositeDuration"));
23
21
 
24
22
  var _KeyValue = _interopRequireDefault(require("./application/KeyValue"));
@@ -33,6 +31,8 @@ var _RepeatableQuestionGroup = _interopRequireDefault(require("./observation/Rep
33
31
 
34
32
  var _ConceptAnswer = _interopRequireDefault(require("./ConceptAnswer"));
35
33
 
34
+ var _ConceptMedia = _interopRequireDefault(require("./ConceptMedia"));
35
+
36
36
  var _SchemaNames = _interopRequireDefault(require("./SchemaNames"));
37
37
 
38
38
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -84,20 +84,30 @@ class Concept extends _BaseEntity.default {
84
84
  this.that.unit = x;
85
85
  }
86
86
 
87
- get mediaUrl() {
88
- return this.that.mediaUrl;
87
+ getImageMedia() {
88
+ return this.media.filter(m => m.isImage());
89
+ }
90
+
91
+ getVideoMedia() {
92
+ return this.media.filter(m => m.isVideo());
89
93
  }
90
94
 
91
- set mediaUrl(x) {
92
- this.that.mediaUrl = x;
95
+ hasImage() {
96
+ return this.getImageMedia().length > 0;
93
97
  }
94
98
 
95
- get mediaType() {
96
- return this.that.mediaType;
99
+ hasVideo() {
100
+ return this.getVideoMedia().length > 0;
97
101
  }
98
102
 
99
- set mediaType(x) {
100
- this.that.mediaType = x;
103
+ getImageUrl() {
104
+ const imageMedia = this.getImageMedia();
105
+ return imageMedia.length > 0 ? imageMedia[0].url : null;
106
+ }
107
+
108
+ getVideoUrl() {
109
+ const videoMedia = this.getVideoMedia();
110
+ return videoMedia.length > 0 ? videoMedia[0].url : null;
101
111
  }
102
112
 
103
113
  get name() {
@@ -132,6 +142,14 @@ class Concept extends _BaseEntity.default {
132
142
  this.that.keyValues = this.fromEntityList(x);
133
143
  }
134
144
 
145
+ get media() {
146
+ return this.toEntityList("media", _ConceptMedia.default);
147
+ }
148
+
149
+ set media(x) {
150
+ this.that.media = this.fromEntityList(x);
151
+ }
152
+
135
153
  static fromResource(conceptResource, entityService) {
136
154
  const concept = new Concept();
137
155
  concept.name = conceptResource.name;
@@ -144,9 +162,12 @@ class Concept extends _BaseEntity.default {
144
162
  concept.unit = conceptResource.unit;
145
163
  concept.voided = conceptResource.voided || false; //This change should be independently deployable irrespective of server
146
164
 
147
- concept.keyValues = _lodash.default.map(conceptResource.keyValues, _KeyValue.default.fromResource);
148
- concept.mediaUrl = conceptResource.mediaUrl;
149
- concept.mediaType = conceptResource.mediaType;
165
+ concept.keyValues = _lodash.default.map(conceptResource.keyValues, _KeyValue.default.fromResource); // Handle media array format from server
166
+
167
+ if (conceptResource.media) {
168
+ concept.media = _lodash.default.map(conceptResource.media, _ConceptMedia.default.fromResource);
169
+ }
170
+
150
171
  return concept;
151
172
  }
152
173
 
@@ -351,24 +372,12 @@ class Concept extends _BaseEntity.default {
351
372
  return keyValue === _KeyValue.default.ContactYesValue;
352
373
  }
353
374
 
354
- isMediaTypeImage() {
355
- return this.mediaType === MediaType.Image;
356
- }
357
-
358
- hasMediaType() {
359
- return !_lodash.default.isNil(this.mediaType);
360
- }
361
-
362
- hasMediaUrl() {
363
- return !_lodash.default.isNil(this.mediaUrl) && this.mediaUrl !== '';
364
- }
365
-
366
375
  hasAnswersWithMedia() {
367
- return _lodash.default.some(this.answers, answer => answer.concept.hasMediaUrl() || answer.concept.hasMediaType());
376
+ return _lodash.default.some(this.answers, answer => answer.concept.hasMedia());
368
377
  }
369
378
 
370
379
  hasMedia() {
371
- return this.hasMediaUrl() || this.hasMediaType() || this.hasAnswersWithMedia();
380
+ return this.media.length > 0 || this.hasAnswersWithMedia();
372
381
  }
373
382
 
374
383
  }
@@ -419,13 +428,10 @@ _defineProperty(Concept, "schema", {
419
428
  type: "bool",
420
429
  default: false
421
430
  },
422
- mediaUrl: {
423
- type: "string",
424
- optional: true
425
- },
426
- mediaType: {
427
- type: "string",
428
- optional: true
431
+ media: {
432
+ type: "list",
433
+ objectType: "ConceptMedia",
434
+ default: []
429
435
  }
430
436
  }
431
437
  });
@@ -474,9 +480,4 @@ _defineProperty(Concept, "dataType", {
474
480
 
475
481
  });
476
482
 
477
- _defineProperty(Concept, "merge", () => _BaseEntity.default.mergeOn("answers"));
478
-
479
- const MediaType = {
480
- Image: "Image"
481
- };
482
- exports.MediaType = MediaType;
483
+ _defineProperty(Concept, "merge", () => _BaseEntity.default.mergeOn("answers"));
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _BaseEntity = _interopRequireDefault(require("./BaseEntity"));
9
+
10
+ var _General = _interopRequireDefault(require("./utility/General"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ 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; }
15
+
16
+ class ConceptMedia extends _BaseEntity.default {
17
+ constructor(that = null) {
18
+ super(that);
19
+ }
20
+
21
+ get url() {
22
+ return this.that.url;
23
+ }
24
+
25
+ set url(x) {
26
+ this.that.url = x;
27
+ }
28
+
29
+ get type() {
30
+ return this.that.type;
31
+ }
32
+
33
+ set type(x) {
34
+ this.that.type = x;
35
+ }
36
+
37
+ static fromResource(resource) {
38
+ const conceptMedia = new ConceptMedia();
39
+ conceptMedia.uuid = resource.uuid || _General.default.randomUUID();
40
+ conceptMedia.url = resource.url;
41
+ conceptMedia.type = resource.type;
42
+ return conceptMedia;
43
+ }
44
+
45
+ isImage() {
46
+ return this.type === 'Image';
47
+ }
48
+
49
+ isVideo() {
50
+ return this.type === 'Video';
51
+ }
52
+
53
+ }
54
+
55
+ exports.default = ConceptMedia;
56
+
57
+ _defineProperty(ConceptMedia, "schema", {
58
+ name: "ConceptMedia",
59
+ embedded: true,
60
+ primaryKey: "uuid",
61
+ properties: {
62
+ uuid: "string",
63
+ url: {
64
+ type: "string",
65
+ optional: true
66
+ },
67
+ type: {
68
+ type: "string",
69
+ optional: true
70
+ }
71
+ }
72
+ });
package/dist/Schema.js CHANGED
@@ -13,6 +13,8 @@ var _Concept = _interopRequireDefault(require("./Concept"));
13
13
 
14
14
  var _ConceptAnswer = _interopRequireDefault(require("./ConceptAnswer"));
15
15
 
16
+ var _ConceptMedia = _interopRequireDefault(require("./ConceptMedia"));
17
+
16
18
  var _Individual = _interopRequireDefault(require("./Individual"));
17
19
 
18
20
  var _Family = _interopRequireDefault(require("./Family"));
@@ -193,7 +195,7 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
193
195
 
194
196
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
195
197
 
196
- const entities = [_ReportCardResult.default, _NestedReportCardResult.default, _DashboardFilter.default, _LocaleMapping.default, _Settings.default, _ConceptAnswer.default, _Concept.default, _EncounterType.default, _Gender.default, _AddressLevel.LocationMapping, _AddressLevel.default, _KeyValue.default, _Form.default, _FormMapping.default, _FormElementGroup.default, _FormElement.default, _SubjectType.default, _Individual.default, _Program.default, _ProgramEnrolment.default, _Observation.default, _ProgramEncounter.default, _Encounter.default, _EntitySyncStatus.default, _EntityQueue.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];
198
+ const entities = [_ReportCardResult.default, _NestedReportCardResult.default, _DashboardFilter.default, _LocaleMapping.default, _Settings.default, _ConceptAnswer.default, _ConceptMedia.default, _Concept.default, _EncounterType.default, _Gender.default, _AddressLevel.LocationMapping, _AddressLevel.default, _KeyValue.default, _Form.default, _FormMapping.default, _FormElementGroup.default, _FormElement.default, _SubjectType.default, _Individual.default, _Program.default, _ProgramEnrolment.default, _Observation.default, _ProgramEncounter.default, _Encounter.default, _EntitySyncStatus.default, _EntityQueue.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];
197
199
 
198
200
  function migrateObjectTypeFieldToEmbedded(newDB, oldDB, schemaName, field, creatorFn) {
199
201
  console.log(`schema: ${schemaName}, field: ${field}`);
@@ -283,7 +285,7 @@ function createRealmConfig() {
283
285
  return doCompact;
284
286
  },
285
287
  //order is important, should be arranged according to the dependency
286
- schemaVersion: 203,
288
+ schemaVersion: 204,
287
289
  onMigration: function (oldDB, newDB) {
288
290
  console.log("[AvniModels.Schema]", `Running migration with old schema version: ${oldDB.schemaVersion} and new schema version: ${newDB.schemaVersion}`);
289
291
  if (oldDB.schemaVersion === VersionWithEmbeddedMigrationProblem) throw new Error(`Update from schema version ${VersionWithEmbeddedMigrationProblem} is not allowed. Please uninstall and install app.`);
@@ -994,6 +996,21 @@ function createRealmConfig() {
994
996
  }
995
997
  });
996
998
  }
999
+
1000
+ if (oldDB.schemaVersion < 204) {
1001
+ _lodash.default.forEach(newDB.objects(_Concept.default.schema.name), concept => {
1002
+ if (!concept.media) {
1003
+ concept.media = [];
1004
+ }
1005
+ }); // Reset EntitySyncStatus for Concept to refetch media URLs
1006
+
1007
+
1008
+ _lodash.default.forEach(newDB.objects(_EntitySyncStatus.default.schema.name), ess => {
1009
+ if (ess.entityName === 'Concept') {
1010
+ ess.loadedSince = _EntitySyncStatus.default.REALLY_OLD_DATE;
1011
+ }
1012
+ });
1013
+ }
997
1014
  }
998
1015
  };
999
1016
  }
@@ -89,6 +89,8 @@ _defineProperty(SchemaNames, "Comment", "Comment");
89
89
 
90
90
  _defineProperty(SchemaNames, "Concept", "Concept");
91
91
 
92
+ _defineProperty(SchemaNames, "ConceptMedia", "ConceptMedia");
93
+
92
94
  _defineProperty(SchemaNames, "EntityApprovalStatus", "EntityApprovalStatus");
93
95
 
94
96
  _defineProperty(SchemaNames, "Point", "Point");
package/dist/index.js CHANGED
@@ -75,6 +75,12 @@ Object.defineProperty(exports, "ConceptAnswer", {
75
75
  return _ConceptAnswer.default;
76
76
  }
77
77
  });
78
+ Object.defineProperty(exports, "ConceptMedia", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _ConceptMedia.default;
82
+ }
83
+ });
78
84
  Object.defineProperty(exports, "Duration", {
79
85
  enumerable: true,
80
86
  get: function () {
@@ -842,6 +848,8 @@ var _Concept = _interopRequireDefault(require("./Concept"));
842
848
 
843
849
  var _ConceptAnswer = _interopRequireDefault(require("./ConceptAnswer"));
844
850
 
851
+ var _ConceptMedia = _interopRequireDefault(require("./ConceptMedia"));
852
+
845
853
  var _Duration = _interopRequireDefault(require("./Duration"));
846
854
 
847
855
  var _Encounter = _interopRequireDefault(require("./Encounter"));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "openchs-models",
3
3
  "description": "OpenCHS data model to be used by front end clients",
4
- "version": "1.32.54",
4
+ "version": "1.32.56",
5
5
  "private": false,
6
6
  "repository": {
7
7
  "type": "git",