@acorex-platform/module-health-core-client 0.0.30 → 0.0.33

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 (66) hide show
  1. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-blood-type.mjs +222 -0
  2. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-blood-type.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-body-part.mjs +169 -0
  4. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-body-part.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-disability-status.mjs +222 -0
  6. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-disability-status.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-condition-type.mjs +242 -0
  8. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-condition-type.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-condition.mjs +450 -0
  10. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-condition.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-event.mjs +458 -0
  12. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-event.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-profile.mjs +462 -0
  14. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-profile.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-record-type.mjs +199 -0
  16. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-record-type.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-restriction.mjs +189 -0
  18. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-health-restriction.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-injury-type.mjs +169 -0
  20. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-injury-type.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-vaccination-type.mjs +169 -0
  22. package/fesm2022/acorex-platform-module-health-core-client-contracts-entities-vaccination-type.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-acorex-platform-module-health-core-client-contracts-entity-catalog-DDEtVb1s.mjs +128 -0
  24. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-acorex-platform-module-health-core-client-contracts-entity-catalog-DDEtVb1s.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-blood-type.entity-p2zIcAHU.mjs +123 -0
  26. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-blood-type.entity-p2zIcAHU.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-body-part.entity-DjkZjrxE.mjs +70 -0
  28. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-body-part.entity-DjkZjrxE.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-disability-status.entity-qJAaog7k.mjs +123 -0
  30. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-disability-status.entity-qJAaog7k.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-condition-type.entity-KXSdNV9C.mjs +143 -0
  32. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-condition-type.entity-KXSdNV9C.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-condition.entity-CWaIy5Km.mjs +272 -0
  34. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-condition.entity-CWaIy5Km.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-event.entity-CtfvxfTO.mjs +280 -0
  36. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-event.entity-CtfvxfTO.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-profile.entity-1jLe_zQB.mjs +284 -0
  38. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-profile.entity-1jLe_zQB.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-record-type.entity-3PXrfa-P.mjs +100 -0
  40. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-record-type.entity-3PXrfa-P.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-restriction.entity-Cd-Ntuzb.mjs +90 -0
  42. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-restriction.entity-Cd-Ntuzb.mjs.map +1 -0
  43. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-subject-form-layout.utils-BOm1lGPF.mjs +84 -0
  44. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-subject-form-layout.utils-BOm1lGPF.mjs.map +1 -0
  45. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-injury-type.entity-D75KtQB2.mjs +70 -0
  46. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-injury-type.entity-D75KtQB2.mjs.map +1 -0
  47. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-vaccination-type.entity-BetHc463.mjs +70 -0
  48. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-vaccination-type.entity-BetHc463.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog.mjs +2 -0
  50. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog.mjs.map +1 -0
  51. package/fesm2022/acorex-platform-module-health-core-client-local-entities.mjs +39 -0
  52. package/fesm2022/acorex-platform-module-health-core-client-local-entities.mjs.map +1 -0
  53. package/package.json +54 -2
  54. package/types/acorex-platform-module-health-core-client-contracts-entities-blood-type.d.ts +5 -0
  55. package/types/acorex-platform-module-health-core-client-contracts-entities-body-part.d.ts +5 -0
  56. package/types/acorex-platform-module-health-core-client-contracts-entities-disability-status.d.ts +5 -0
  57. package/types/acorex-platform-module-health-core-client-contracts-entities-health-condition-type.d.ts +5 -0
  58. package/types/acorex-platform-module-health-core-client-contracts-entities-health-condition.d.ts +5 -0
  59. package/types/acorex-platform-module-health-core-client-contracts-entities-health-event.d.ts +5 -0
  60. package/types/acorex-platform-module-health-core-client-contracts-entities-health-profile.d.ts +5 -0
  61. package/types/acorex-platform-module-health-core-client-contracts-entities-health-record-type.d.ts +5 -0
  62. package/types/acorex-platform-module-health-core-client-contracts-entities-health-restriction.d.ts +5 -0
  63. package/types/acorex-platform-module-health-core-client-contracts-entities-injury-type.d.ts +5 -0
  64. package/types/acorex-platform-module-health-core-client-contracts-entities-vaccination-type.d.ts +5 -0
  65. package/types/acorex-platform-module-health-core-client-contracts-entity-catalog.d.ts +10 -0
  66. package/types/acorex-platform-module-health-core-client-local-entities.d.ts +12 -0
@@ -0,0 +1,458 @@
1
+ import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';
2
+ import { createAllQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';
3
+
4
+ //#region ---- Imports ----
5
+ //#endregion
6
+ //#region ---- Subject filter helpers ----
7
+ /** Person subject type for health records shared between My Profile and employee detail. */
8
+ const HEALTH_PERSON_SUBJECT_TYPE = 'PersonCore.Person';
9
+ /** Filters child health records by polymorphic subject on a parent entity detail context. */
10
+ function healthSubjectReferenceConditions(subjectType) {
11
+ return [
12
+ {
13
+ name: 'subject.type',
14
+ operator: { type: 'equal' },
15
+ value: subjectType,
16
+ },
17
+ {
18
+ name: 'subject.id',
19
+ operator: { type: 'equal' },
20
+ value: '{{context.eval("id")}}',
21
+ },
22
+ ];
23
+ }
24
+ /**
25
+ * Filters health records for an employee's linked person (`personId` on employee context).
26
+ * Use for all person-scoped health records on employee detail so data matches My Profile.
27
+ */
28
+ function healthPersonSubjectReferenceConditions(personIdExpression = '{{context.eval("personId")}}') {
29
+ return [
30
+ {
31
+ name: 'subject.type',
32
+ operator: { type: 'equal' },
33
+ value: HEALTH_PERSON_SUBJECT_TYPE,
34
+ },
35
+ {
36
+ name: 'subject.id',
37
+ operator: { type: 'equal' },
38
+ value: personIdExpression,
39
+ },
40
+ ];
41
+ }
42
+ //#endregion
43
+ //#region ---- Subject lookup property ----
44
+ /** Single polymorphic subject lookup (assessment-case `subjectRef.id` pattern). */
45
+ function createHealthSubjectLookupProperty(groupId, options = {}) {
46
+ const readonly = options.readonly ?? false;
47
+ return {
48
+ name: 'subject.id',
49
+ title: '@health-core:terms.subject.title',
50
+ groupId,
51
+ options: readonly
52
+ ? { sort: { enabled: false }, filter: { advance: { enabled: false }, inline: { enabled: false } } }
53
+ : undefined,
54
+ schema: {
55
+ dataType: 'string',
56
+ readonly,
57
+ interface: {
58
+ type: AXPWidgetsList.Editors.LookupBox,
59
+ options: {
60
+ readonly,
61
+ entity: "{{ context.eval('subject.type') }}",
62
+ valueField: 'id',
63
+ expose: [
64
+ { source: 'id', target: 'subject.id' },
65
+ { source: 'title', target: 'subject.title' },
66
+ ],
67
+ },
68
+ },
69
+ },
70
+ validations: [{ rule: 'required' }],
71
+ };
72
+ }
73
+ //#endregion
74
+
75
+ //#region ---- Subject form layout helpers ----
76
+ /** Subject lookup field omitted from create/update when injected from parent context. */
77
+ const HEALTH_SUBJECT_PROPERTY_NAMES = ['subject.id'];
78
+ /** Omits subject lookup from master create/update layouts (subject is injected from context). */
79
+ function omitHealthSubjectFromEditLayouts(layouts) {
80
+ return layouts.filter((layout) => !HEALTH_SUBJECT_PROPERTY_NAMES.includes(layout.name));
81
+ }
82
+ //#endregion
83
+
84
+ const config = {
85
+ i18n: 'health-core',
86
+ module: 'HealthCore',
87
+ };
88
+ const RootConfig = {
89
+ config,
90
+ module: {
91
+ name: config.module,
92
+ title: `@${config.i18n}:module.title`,
93
+ icon: 'fa-light fa-heart-pulse',
94
+ },
95
+ entities: {
96
+ bloodType: {
97
+ name: 'BloodType',
98
+ title: `@${config.i18n}:blood-types.entities.blood-type.title`,
99
+ titlePlural: `@${config.i18n}:blood-types.entities.blood-type.plural`,
100
+ icon: 'fa-light fa-droplet',
101
+ },
102
+ bodyPart: {
103
+ name: 'BodyPart',
104
+ title: `@${config.i18n}:body-parts.entities.body-part.title`,
105
+ titlePlural: `@${config.i18n}:body-parts.entities.body-part.plural`,
106
+ icon: 'fa-light fa-person',
107
+ },
108
+ disabilityStatus: {
109
+ name: 'DisabilityStatus',
110
+ title: `@${config.i18n}:disability-statuses.entities.disability-status.title`,
111
+ titlePlural: `@${config.i18n}:disability-statuses.entities.disability-status.plural`,
112
+ icon: 'fa-light fa-wheelchair',
113
+ },
114
+ injuryType: {
115
+ name: 'InjuryType',
116
+ title: `@${config.i18n}:injury-types.entities.injury-type.title`,
117
+ titlePlural: `@${config.i18n}:injury-types.entities.injury-type.plural`,
118
+ icon: 'fa-light fa-bandage',
119
+ },
120
+ vaccinationType: {
121
+ name: 'VaccinationType',
122
+ title: `@${config.i18n}:vaccination-types.entities.vaccination-type.title`,
123
+ titlePlural: `@${config.i18n}:vaccination-types.entities.vaccination-type.plural`,
124
+ icon: 'fa-light fa-syringe',
125
+ },
126
+ healthConditionType: {
127
+ name: 'HealthConditionType',
128
+ title: `@${config.i18n}:health-condition-types.entities.health-condition-type.title`,
129
+ titlePlural: `@${config.i18n}:health-condition-types.entities.health-condition-type.plural`,
130
+ icon: 'fa-light fa-file-medical',
131
+ },
132
+ healthRestriction: {
133
+ name: 'HealthRestriction',
134
+ title: `@${config.i18n}:health-restrictions.entities.health-restriction.title`,
135
+ titlePlural: `@${config.i18n}:health-restrictions.entities.health-restriction.plural`,
136
+ icon: 'fa-light fa-ban',
137
+ },
138
+ healthRecordType: {
139
+ name: 'HealthRecordType',
140
+ title: `@${config.i18n}:health-record-types.entities.health-record-type.title`,
141
+ titlePlural: `@${config.i18n}:health-record-types.entities.health-record-type.plural`,
142
+ icon: 'fa-light fa-notes-medical',
143
+ },
144
+ healthEvent: {
145
+ name: 'HealthEvent',
146
+ title: `@${config.i18n}:health-events.entities.health-event.title`,
147
+ titlePlural: `@${config.i18n}:health-events.entities.health-event.plural`,
148
+ icon: 'fa-light fa-file-medical',
149
+ },
150
+ healthProfile: {
151
+ name: 'HealthProfile',
152
+ title: `@${config.i18n}:health-profiles.entities.health-profile.title`,
153
+ titlePlural: `@${config.i18n}:health-profiles.entities.health-profile.plural`,
154
+ icon: 'fa-light fa-heart-pulse',
155
+ },
156
+ healthCondition: {
157
+ name: 'HealthCondition',
158
+ title: `@${config.i18n}:health-conditions.entities.health-condition.title`,
159
+ titlePlural: `@${config.i18n}:health-conditions.entities.health-condition.plural`,
160
+ icon: 'fa-light fa-file-medical',
161
+ },
162
+ },
163
+ queries: {
164
+ reports: {
165
+ getHealthEventsByType: `${config.module}:Reports:GetHealthEventsByType`,
166
+ getWorkplaceInjuries: `${config.module}:Reports:GetWorkplaceInjuries`,
167
+ getActiveWorkRestrictions: `${config.module}:Reports:GetActiveWorkRestrictions`,
168
+ getFitnessForWorkStatus: `${config.module}:Reports:GetFitnessForWorkStatus`,
169
+ getVaccinationCoverage: `${config.module}:Reports:GetVaccinationCoverage`,
170
+ getHealthRiskDistribution: `${config.module}:Reports:GetHealthRiskDistribution`,
171
+ getIncompleteHealthProfiles: `${config.module}:Reports:GetIncompleteHealthProfiles`,
172
+ getIncompleteHealthProfileEmployees: `${config.module}:Reports:GetIncompleteHealthProfileEmployees`,
173
+ },
174
+ dashboard: {
175
+ healthEventsTrendLine: `${config.module}:Dashboard:HealthEventsTrendLine`,
176
+ },
177
+ },
178
+ };
179
+
180
+ //#region ---- Imports ----
181
+ //#endregion
182
+ //#region ---- Shared property layouts ----
183
+ const eventDetailsViewProperties = [
184
+ { name: 'subject.id', layout: { positions: { lg: { colSpan: 12, order: 1 } } } },
185
+ { name: 'recordTypeId', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
186
+ { name: 'occurredDate', layout: { positions: { lg: { colSpan: 6, order: 3 } } } },
187
+ { name: 'endDate', layout: { positions: { lg: { colSpan: 6, order: 4 } } } },
188
+ { name: 'provider', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
189
+ { name: 'facility', layout: { positions: { lg: { colSpan: 6, order: 6 } } } },
190
+ { name: 'notes', layout: { positions: { lg: { colSpan: 12, order: 7 } } } },
191
+ { name: 'employeeSignature', layout: { positions: { lg: { colSpan: 6 } } } },
192
+ { name: 'employeeSignedAt', layout: { positions: { lg: { colSpan: 6 } } } },
193
+ { name: 'managerSignature', layout: { positions: { lg: { colSpan: 6 } } } },
194
+ { name: 'managerSignedAt', layout: { positions: { lg: { colSpan: 6 } } } },
195
+ ];
196
+ const eventDetailsEditProperties = omitHealthSubjectFromEditLayouts(eventDetailsViewProperties);
197
+ //#endregion
198
+ //#region ---- Entity Factory ----
199
+ async function healthEventFactory() {
200
+ const entityDef = {
201
+ module: RootConfig.module.name,
202
+ name: RootConfig.entities.healthEvent.name,
203
+ title: RootConfig.entities.healthEvent.title,
204
+ icon: RootConfig.entities.healthEvent.icon,
205
+ plugins: [
206
+ { name: 'history' },
207
+ { name: 'reports' },
208
+ {
209
+ name: 'attachments',
210
+ options: {
211
+ showListAction: false,
212
+ },
213
+ },
214
+ {
215
+ name: 'workflow-run',
216
+ options: {
217
+ list: {
218
+ mode: 'workflow-run',
219
+ },
220
+ },
221
+ },
222
+ {
223
+ name: 'status',
224
+ options: {
225
+ field: 'statusId',
226
+ definition: 'health-core.status.health-event',
227
+ },
228
+ },
229
+ {
230
+ name: 'meta-data-form',
231
+ options: {
232
+ title: '@health-core:health-events.entities.health-event.groups.more-information',
233
+ path: 'recordTypeId',
234
+ display: 'section',
235
+ },
236
+ },
237
+ ],
238
+ formats: {
239
+ individual: RootConfig.entities.healthEvent.title,
240
+ plural: RootConfig.entities.healthEvent.titlePlural,
241
+ searchResult: {
242
+ title: '{{ context.eval("recordType.title", { pipes: ["translate"] }) }}',
243
+ description: '{{ context.eval("subject.title", { pipes: ["translate"] }) }}',
244
+ },
245
+ },
246
+ groups: [
247
+ {
248
+ id: 'event-details',
249
+ title: '@health-core:health-events.entities.health-event.groups.event-details',
250
+ },
251
+ {
252
+ id: 'sign-off',
253
+ title: '@health-core:health-events.entities.health-event.groups.sign-off',
254
+ },
255
+ ],
256
+ properties: [
257
+ {
258
+ name: 'id',
259
+ title: 'ID',
260
+ groupId: 'event-details',
261
+ schema: { dataType: 'uuid', visible: false, nullable: false, readonly: true, unique: { enabled: true } },
262
+ },
263
+ createHealthSubjectLookupProperty('event-details', { readonly: true }),
264
+ {
265
+ name: 'recordTypeId',
266
+ title: '@health-core:health-events.entities.health-event.fields.record-type-id',
267
+ groupId: 'event-details',
268
+ options: {
269
+ sort: { enabled: true },
270
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
271
+ },
272
+ schema: {
273
+ dataType: 'string',
274
+ interface: {
275
+ type: AXPWidgetsList.Editors.LookupBox,
276
+ options: {
277
+ entity: `${RootConfig.module.name}.${RootConfig.entities.healthRecordType.name}`,
278
+ textField: 'title',
279
+ valueField: 'id',
280
+ look: 'select',
281
+ columns: ['title'],
282
+ expose: [
283
+ { source: 'id', target: 'recordType.id' },
284
+ { source: 'title', target: 'recordType.title' },
285
+ ],
286
+ },
287
+ },
288
+ },
289
+ validations: [{ rule: 'required' }],
290
+ },
291
+ {
292
+ name: 'occurredDate',
293
+ title: '@health-core:health-events.entities.health-event.fields.occurred-date',
294
+ groupId: 'event-details',
295
+ options: {
296
+ sort: { enabled: true },
297
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
298
+ },
299
+ schema: {
300
+ dataType: 'date',
301
+ defaultValue: '{{ date.today() }}',
302
+ interface: { type: AXPWidgetsList.Editors.DateTimeBox },
303
+ },
304
+ validations: [{ rule: 'required' }],
305
+ },
306
+ {
307
+ name: 'endDate',
308
+ title: '@health-core:health-events.entities.health-event.fields.end-date',
309
+ groupId: 'event-details',
310
+ options: {
311
+ sort: { enabled: true },
312
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
313
+ },
314
+ schema: {
315
+ dataType: 'date',
316
+ nullable: true,
317
+ interface: { type: AXPWidgetsList.Editors.DateTimeBox },
318
+ },
319
+ },
320
+ {
321
+ name: 'provider',
322
+ title: '@health-core:health-events.entities.health-event.fields.provider.title',
323
+ groupId: 'event-details',
324
+ options: {
325
+ sort: { enabled: true },
326
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
327
+ },
328
+ schema: {
329
+ dataType: 'string',
330
+ interface: {
331
+ type: AXPWidgetsList.Editors.TextBox,
332
+ options: {
333
+ placeholder: '@health-core:health-events.entities.health-event.fields.provider.placeholder',
334
+ },
335
+ },
336
+ },
337
+ },
338
+ {
339
+ name: 'facility',
340
+ title: '@health-core:health-events.entities.health-event.fields.facility.title',
341
+ groupId: 'event-details',
342
+ options: {
343
+ sort: { enabled: true },
344
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
345
+ },
346
+ schema: {
347
+ dataType: 'string',
348
+ interface: {
349
+ type: AXPWidgetsList.Editors.TextBox,
350
+ options: {
351
+ placeholder: '@health-core:health-events.entities.health-event.fields.facility.placeholder',
352
+ },
353
+ },
354
+ },
355
+ },
356
+ {
357
+ name: 'notes',
358
+ title: '@general:terms.common.notes',
359
+ groupId: 'event-details',
360
+ options: {
361
+ sort: { enabled: false },
362
+ filter: { advance: { enabled: true }, inline: { enabled: false } },
363
+ },
364
+ schema: {
365
+ dataType: 'string',
366
+ interface: { type: AXPWidgetsList.Editors.LargeTextBox, options: { rows: 3 } },
367
+ },
368
+ },
369
+ {
370
+ name: 'employeeSignature',
371
+ title: '@health-core:health-events.entities.health-event.fields.employee-signature',
372
+ groupId: 'sign-off',
373
+ schema: {
374
+ dataType: 'string',
375
+ nullable: true,
376
+ readonly: true,
377
+ interface: { type: AXPWidgetsList.Editors.SignatureBox },
378
+ },
379
+ },
380
+ {
381
+ name: 'employeeSignedAt',
382
+ title: '@health-core:health-events.entities.health-event.fields.employee-signed-at',
383
+ groupId: 'sign-off',
384
+ schema: {
385
+ dataType: 'date',
386
+ nullable: true,
387
+ readonly: true,
388
+ interface: { type: AXPWidgetsList.Editors.DateTimeBox },
389
+ },
390
+ },
391
+ {
392
+ name: 'managerSignature',
393
+ title: '@health-core:health-events.entities.health-event.fields.manager-signature',
394
+ groupId: 'sign-off',
395
+ schema: {
396
+ dataType: 'string',
397
+ nullable: true,
398
+ readonly: true,
399
+ interface: { type: AXPWidgetsList.Editors.SignatureBox },
400
+ },
401
+ },
402
+ {
403
+ name: 'managerSignedAt',
404
+ title: '@health-core:health-events.entities.health-event.fields.manager-signed-at',
405
+ groupId: 'sign-off',
406
+ schema: {
407
+ dataType: 'date',
408
+ nullable: true,
409
+ readonly: true,
410
+ interface: { type: AXPWidgetsList.Editors.DateTimeBox },
411
+ },
412
+ },
413
+ ],
414
+ columns: [
415
+ { name: 'recordTypeId', options: { dataPath: 'recordType.title' } },
416
+ { name: 'occurredDate' },
417
+ { name: 'endDate' },
418
+ { name: 'provider' },
419
+ { name: 'statusId' },
420
+ { name: 'subject.id', options: { dataPath: 'subject.title' } },
421
+ ],
422
+ relatedEntities: [],
423
+ interfaces: {
424
+ master: {
425
+ create: {
426
+ sections: [{ id: 'event-details' }],
427
+ properties: eventDetailsEditProperties,
428
+ },
429
+ update: {
430
+ sections: [{ id: 'event-details' }],
431
+ properties: eventDetailsEditProperties,
432
+ },
433
+ single: {
434
+ title: '{{ context.eval("subject.title", { pipes: ["translate"] }) + " - " + context.eval("recordType.title", { pipes: ["translate"] }) + " - " + context.eval("occurredDate", { pipes: ["date"] }) }}',
435
+ sections: [
436
+ { id: 'event-details', order: 1 },
437
+ { id: 'sign-off', order: 2 },
438
+ ],
439
+ properties: eventDetailsViewProperties,
440
+ actions: entityMasterRecordActions(),
441
+ },
442
+ list: {
443
+ actions: [...entityMasterCrudActions({ create: false, delete: false, view: false })],
444
+ views: [createAllQueryView({ sorts: [{ name: 'occurredDate', dir: 'desc' }] })],
445
+ },
446
+ },
447
+ },
448
+ };
449
+ return entityDef;
450
+ }
451
+ //#endregion
452
+
453
+ /**
454
+ * Generated bundle index. Do not edit.
455
+ */
456
+
457
+ export { healthEventFactory };
458
+ //# sourceMappingURL=acorex-platform-module-health-core-client-contracts-entities-health-event.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-health-core-client-contracts-entities-health-event.mjs","sources":["../../../../libs/modules/health-core/contracts/src/health-subject.utils.ts","../../../../libs/modules/health-core/contracts/src/health-subject-form-layout.utils.ts","../../../../libs/modules/health-core/contracts/src/root-config.ts","../../../../libs/modules/health-core/contracts/src/entities/health-event/health-event.entity.ts","../../../../libs/modules/health-core/contracts/src/acorex-platform-module-health-core-client-contracts-entities-health-event.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntityProperty, AXPQueryFilter } from '@acorex-platform/framework-shared/entity';\n\n//#endregion\n\n//#region ---- Subject filter helpers ----\n\n/** Person subject type for health records shared between My Profile and employee detail. */\nexport const HEALTH_PERSON_SUBJECT_TYPE = 'PersonCore.Person';\n\n/** Filters child health records by polymorphic subject on a parent entity detail context. */\nexport function healthSubjectReferenceConditions(subjectType: string): AXPQueryFilter[] {\n return [\n {\n name: 'subject.type',\n operator: { type: 'equal' },\n value: subjectType,\n },\n {\n name: 'subject.id',\n operator: { type: 'equal' },\n value: '{{context.eval(\"id\")}}',\n },\n ];\n}\n\n/**\n * Filters health records for an employee's linked person (`personId` on employee context).\n * Use for all person-scoped health records on employee detail so data matches My Profile.\n */\nexport function healthPersonSubjectReferenceConditions(\n personIdExpression = '{{context.eval(\"personId\")}}',\n): AXPQueryFilter[] {\n return [\n {\n name: 'subject.type',\n operator: { type: 'equal' },\n value: HEALTH_PERSON_SUBJECT_TYPE,\n },\n {\n name: 'subject.id',\n operator: { type: 'equal' },\n value: personIdExpression,\n },\n ];\n}\n\n//#endregion\n\n//#region ---- Subject lookup property ----\n\n/** Single polymorphic subject lookup (assessment-case `subjectRef.id` pattern). */\nexport function createHealthSubjectLookupProperty(\n groupId: string,\n options: { readonly?: boolean } = {},\n): AXPEntityProperty {\n const readonly = options.readonly ?? false;\n\n return {\n name: 'subject.id',\n title: '@health-core:terms.subject.title',\n groupId,\n options: readonly\n ? { sort: { enabled: false }, filter: { advance: { enabled: false }, inline: { enabled: false } } }\n : undefined,\n schema: {\n dataType: 'string',\n readonly,\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n readonly,\n entity: \"{{ context.eval('subject.type') }}\",\n valueField: 'id',\n expose: [\n { source: 'id', target: 'subject.id' },\n { source: 'title', target: 'subject.title' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n };\n}\n\n//#endregion\n","//#region ---- Subject form layout helpers ----\n\n/** Subject lookup field omitted from create/update when injected from parent context. */\nexport const HEALTH_SUBJECT_PROPERTY_NAMES = ['subject.id'] as const;\n\ntype PropertyLayoutRef = { name: string; layout?: Record<string, unknown> };\n\n/** Omits subject lookup from master create/update layouts (subject is injected from context). */\nexport function omitHealthSubjectFromEditLayouts<T extends PropertyLayoutRef>(layouts: T[]): T[] {\n return layouts.filter(\n (layout) => !HEALTH_SUBJECT_PROPERTY_NAMES.includes(layout.name as (typeof HEALTH_SUBJECT_PROPERTY_NAMES)[number]),\n );\n}\n\n//#endregion\n","const config = {\n i18n: 'health-core',\n module: 'HealthCore',\n};\n\nexport const RootConfig = {\n config,\n module: {\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-heart-pulse',\n },\n entities: {\n bloodType: {\n name: 'BloodType',\n title: `@${config.i18n}:blood-types.entities.blood-type.title`,\n titlePlural: `@${config.i18n}:blood-types.entities.blood-type.plural`,\n icon: 'fa-light fa-droplet',\n },\n bodyPart: {\n name: 'BodyPart',\n title: `@${config.i18n}:body-parts.entities.body-part.title`,\n titlePlural: `@${config.i18n}:body-parts.entities.body-part.plural`,\n icon: 'fa-light fa-person',\n },\n disabilityStatus: {\n name: 'DisabilityStatus',\n title: `@${config.i18n}:disability-statuses.entities.disability-status.title`,\n titlePlural: `@${config.i18n}:disability-statuses.entities.disability-status.plural`,\n icon: 'fa-light fa-wheelchair',\n },\n injuryType: {\n name: 'InjuryType',\n title: `@${config.i18n}:injury-types.entities.injury-type.title`,\n titlePlural: `@${config.i18n}:injury-types.entities.injury-type.plural`,\n icon: 'fa-light fa-bandage',\n },\n vaccinationType: {\n name: 'VaccinationType',\n title: `@${config.i18n}:vaccination-types.entities.vaccination-type.title`,\n titlePlural: `@${config.i18n}:vaccination-types.entities.vaccination-type.plural`,\n icon: 'fa-light fa-syringe',\n },\n healthConditionType: {\n name: 'HealthConditionType',\n title: `@${config.i18n}:health-condition-types.entities.health-condition-type.title`,\n titlePlural: `@${config.i18n}:health-condition-types.entities.health-condition-type.plural`,\n icon: 'fa-light fa-file-medical',\n },\n healthRestriction: {\n name: 'HealthRestriction',\n title: `@${config.i18n}:health-restrictions.entities.health-restriction.title`,\n titlePlural: `@${config.i18n}:health-restrictions.entities.health-restriction.plural`,\n icon: 'fa-light fa-ban',\n },\n healthRecordType: {\n name: 'HealthRecordType',\n title: `@${config.i18n}:health-record-types.entities.health-record-type.title`,\n titlePlural: `@${config.i18n}:health-record-types.entities.health-record-type.plural`,\n icon: 'fa-light fa-notes-medical',\n },\n healthEvent: {\n name: 'HealthEvent',\n title: `@${config.i18n}:health-events.entities.health-event.title`,\n titlePlural: `@${config.i18n}:health-events.entities.health-event.plural`,\n icon: 'fa-light fa-file-medical',\n },\n healthProfile: {\n name: 'HealthProfile',\n title: `@${config.i18n}:health-profiles.entities.health-profile.title`,\n titlePlural: `@${config.i18n}:health-profiles.entities.health-profile.plural`,\n icon: 'fa-light fa-heart-pulse',\n },\n healthCondition: {\n name: 'HealthCondition',\n title: `@${config.i18n}:health-conditions.entities.health-condition.title`,\n titlePlural: `@${config.i18n}:health-conditions.entities.health-condition.plural`,\n icon: 'fa-light fa-file-medical',\n },\n },\n queries: {\n reports: {\n getHealthEventsByType: `${config.module}:Reports:GetHealthEventsByType`,\n getWorkplaceInjuries: `${config.module}:Reports:GetWorkplaceInjuries`,\n getActiveWorkRestrictions: `${config.module}:Reports:GetActiveWorkRestrictions`,\n getFitnessForWorkStatus: `${config.module}:Reports:GetFitnessForWorkStatus`,\n getVaccinationCoverage: `${config.module}:Reports:GetVaccinationCoverage`,\n getHealthRiskDistribution: `${config.module}:Reports:GetHealthRiskDistribution`,\n getIncompleteHealthProfiles: `${config.module}:Reports:GetIncompleteHealthProfiles`,\n getIncompleteHealthProfileEmployees: `${config.module}:Reports:GetIncompleteHealthProfileEmployees`,\n },\n dashboard: {\n healthEventsTrendLine: `${config.module}:Dashboard:HealthEventsTrendLine`,\n },\n },\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity, createAllQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';\n\nimport { createHealthSubjectLookupProperty } from '../../health-subject.utils';\nimport { omitHealthSubjectFromEditLayouts } from '../../health-subject-form-layout.utils';\nimport { RootConfig } from '../../root-config';\n\n//#endregion\n\n//#region ---- Shared property layouts ----\n\nconst eventDetailsViewProperties = [\n { name: 'subject.id', layout: { positions: { lg: { colSpan: 12, order: 1 } } } },\n { name: 'recordTypeId', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },\n { name: 'occurredDate', layout: { positions: { lg: { colSpan: 6, order: 3 } } } },\n { name: 'endDate', layout: { positions: { lg: { colSpan: 6, order: 4 } } } },\n { name: 'provider', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },\n { name: 'facility', layout: { positions: { lg: { colSpan: 6, order: 6 } } } },\n { name: 'notes', layout: { positions: { lg: { colSpan: 12, order: 7 } } } },\n { name: 'employeeSignature', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'employeeSignedAt', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'managerSignature', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'managerSignedAt', layout: { positions: { lg: { colSpan: 6 } } } },\n];\n\nconst eventDetailsEditProperties = omitHealthSubjectFromEditLayouts(eventDetailsViewProperties);\n\n//#endregion\n\n//#region ---- Entity Factory ----\n\nexport async function healthEventFactory(): Promise<AXPEntity> {\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.healthEvent.name,\n title: RootConfig.entities.healthEvent.title,\n icon: RootConfig.entities.healthEvent.icon,\n plugins: [\n { name: 'history' },\n { name: 'reports' },\n {\n name: 'attachments',\n options: {\n showListAction: false,\n },\n },\n {\n name: 'workflow-run',\n options: {\n list: {\n mode: 'workflow-run',\n },\n },\n },\n {\n name: 'status',\n options: {\n field: 'statusId',\n definition: 'health-core.status.health-event',\n },\n },\n {\n name: 'meta-data-form',\n options: {\n title: '@health-core:health-events.entities.health-event.groups.more-information',\n path: 'recordTypeId',\n display: 'section',\n },\n },\n ],\n formats: {\n individual: RootConfig.entities.healthEvent.title,\n plural: RootConfig.entities.healthEvent.titlePlural,\n searchResult: {\n title: '{{ context.eval(\"recordType.title\", { pipes: [\"translate\"] }) }}',\n description: '{{ context.eval(\"subject.title\", { pipes: [\"translate\"] }) }}',\n },\n },\n groups: [\n {\n id: 'event-details',\n title: '@health-core:health-events.entities.health-event.groups.event-details',\n },\n {\n id: 'sign-off',\n title: '@health-core:health-events.entities.health-event.groups.sign-off',\n },\n ],\n properties: [\n {\n name: 'id',\n title: 'ID',\n groupId: 'event-details',\n schema: { dataType: 'uuid', visible: false, nullable: false, readonly: true, unique: { enabled: true } },\n },\n createHealthSubjectLookupProperty('event-details', { readonly: true }),\n {\n name: 'recordTypeId',\n title: '@health-core:health-events.entities.health-event.fields.record-type-id',\n groupId: 'event-details',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.healthRecordType.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n columns: ['title'],\n expose: [\n { source: 'id', target: 'recordType.id' },\n { source: 'title', target: 'recordType.title' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'occurredDate',\n title: '@health-core:health-events.entities.health-event.fields.occurred-date',\n groupId: 'event-details',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'date',\n defaultValue: '{{ date.today() }}',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'endDate',\n title: '@health-core:health-events.entities.health-event.fields.end-date',\n groupId: 'event-details',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'date',\n nullable: true,\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n },\n {\n name: 'provider',\n title: '@health-core:health-events.entities.health-event.fields.provider.title',\n groupId: 'event-details',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TextBox,\n options: {\n placeholder: '@health-core:health-events.entities.health-event.fields.provider.placeholder',\n },\n },\n },\n },\n {\n name: 'facility',\n title: '@health-core:health-events.entities.health-event.fields.facility.title',\n groupId: 'event-details',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TextBox,\n options: {\n placeholder: '@health-core:health-events.entities.health-event.fields.facility.placeholder',\n },\n },\n },\n },\n {\n name: 'notes',\n title: '@general:terms.common.notes',\n groupId: 'event-details',\n options: {\n sort: { enabled: false },\n filter: { advance: { enabled: true }, inline: { enabled: false } },\n },\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsList.Editors.LargeTextBox, options: { rows: 3 } },\n },\n },\n {\n name: 'employeeSignature',\n title: '@health-core:health-events.entities.health-event.fields.employee-signature',\n groupId: 'sign-off',\n schema: {\n dataType: 'string',\n nullable: true,\n readonly: true,\n interface: { type: AXPWidgetsList.Editors.SignatureBox },\n },\n },\n {\n name: 'employeeSignedAt',\n title: '@health-core:health-events.entities.health-event.fields.employee-signed-at',\n groupId: 'sign-off',\n schema: {\n dataType: 'date',\n nullable: true,\n readonly: true,\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n },\n {\n name: 'managerSignature',\n title: '@health-core:health-events.entities.health-event.fields.manager-signature',\n groupId: 'sign-off',\n schema: {\n dataType: 'string',\n nullable: true,\n readonly: true,\n interface: { type: AXPWidgetsList.Editors.SignatureBox },\n },\n },\n {\n name: 'managerSignedAt',\n title: '@health-core:health-events.entities.health-event.fields.manager-signed-at',\n groupId: 'sign-off',\n schema: {\n dataType: 'date',\n nullable: true,\n readonly: true,\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n },\n ],\n columns: [\n { name: 'recordTypeId', options: { dataPath: 'recordType.title' } },\n { name: 'occurredDate' },\n { name: 'endDate' },\n { name: 'provider' },\n { name: 'statusId' },\n { name: 'subject.id', options: { dataPath: 'subject.title' } },\n ],\n relatedEntities: [],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'event-details' }],\n properties: eventDetailsEditProperties,\n },\n update: {\n sections: [{ id: 'event-details' }],\n properties: eventDetailsEditProperties,\n },\n single: {\n title:\n '{{ context.eval(\"subject.title\", { pipes: [\"translate\"] }) + \" - \" + context.eval(\"recordType.title\", { pipes: [\"translate\"] }) + \" - \" + context.eval(\"occurredDate\", { pipes: [\"date\"] }) }}',\n sections: [\n { id: 'event-details', order: 1 },\n { id: 'sign-off', order: 2 },\n ],\n properties: eventDetailsViewProperties,\n actions: entityMasterRecordActions(),\n },\n list: {\n actions: [...entityMasterCrudActions({ create: false, delete: false, view: false })],\n views: [createAllQueryView({ sorts: [{ name: 'occurredDate', dir: 'desc' }] })],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.health-event';\n"],"names":[],"mappings":"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"}