@acorex-platform/module-health-core-client 0.0.32 → 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,462 @@
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 ---- Form layouts ----
183
+ const profilePropertyLayouts = [
184
+ { name: 'subject.id', layout: { positions: { lg: { colSpan: 12 } } } },
185
+ // Row 1: 4 + 4 + 4
186
+ { name: 'disabilityStatusId', layout: { positions: { lg: { colSpan: 4, colStart: 1 } } } },
187
+ { name: 'smokingStatus', layout: { positions: { lg: { colSpan: 4, colStart: 5 } } } },
188
+ { name: 'alcoholConsumption', layout: { positions: { lg: { colSpan: 4, colStart: 9 } } } },
189
+ // Row 2: 4 + 4
190
+ { name: 'bloodTypeId', layout: { positions: { lg: { colSpan: 4, colStart: 1 } } } },
191
+ { name: 'healthRiskLevel', layout: { positions: { lg: { colSpan: 4, colStart: 5 } } } },
192
+ // Row 3: 4 + 4
193
+ { name: 'doctorName', layout: { positions: { lg: { colSpan: 4, colStart: 1 } } } },
194
+ { name: 'doctorNumber', layout: { positions: { lg: { colSpan: 4, colStart: 5 } } } },
195
+ // Row 4: 4 + 4 + 4
196
+ { name: 'emergencyContactName', layout: { positions: { lg: { colSpan: 4, colStart: 1 } } } },
197
+ { name: 'emergencyContactPhone', layout: { positions: { lg: { colSpan: 4, colStart: 5 } } } },
198
+ { name: 'emergencyContactEmail', layout: { positions: { lg: { colSpan: 4, colStart: 9 } } } },
199
+ // Row 5: 12
200
+ { name: 'notes', layout: { positions: { lg: { colSpan: 12, colStart: 1 } } } },
201
+ ];
202
+ //#endregion
203
+ //#region ---- Entity Factory ----
204
+ async function healthProfileFactory() {
205
+ const sections = [{ id: 'profile-details', layout: { positions: { lg: { colSpan: 12 } } } }];
206
+ const propertyLayouts = omitHealthSubjectFromEditLayouts(profilePropertyLayouts);
207
+ const entityDef = {
208
+ module: RootConfig.module.name,
209
+ name: RootConfig.entities.healthProfile.name,
210
+ title: RootConfig.entities.healthProfile.title,
211
+ icon: RootConfig.entities.healthProfile.icon,
212
+ formats: {
213
+ individual: RootConfig.entities.healthProfile.title,
214
+ plural: RootConfig.entities.healthProfile.titlePlural,
215
+ searchResult: { title: '{{ subject.title }}', description: RootConfig.module.title },
216
+ },
217
+ plugins: [{ name: 'history' }, { name: 'reports' }],
218
+ groups: [
219
+ {
220
+ id: 'profile-details',
221
+ title: '@health-core:health-profiles.entities.health-profile.groups.profile-details',
222
+ },
223
+ ],
224
+ properties: [
225
+ {
226
+ name: 'id',
227
+ title: '@general:terms.common.id',
228
+ groupId: 'profile-details',
229
+ schema: { dataType: 'uuid', visible: false, readonly: true, unique: { enabled: true } },
230
+ },
231
+ createHealthSubjectLookupProperty('profile-details', { readonly: true }),
232
+ {
233
+ name: 'disabilityStatusId',
234
+ title: '@health-core:health-profiles.entities.health-profile.fields.disability-status-id',
235
+ groupId: 'profile-details',
236
+ options: {
237
+ sort: { enabled: true },
238
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
239
+ },
240
+ schema: {
241
+ dataType: 'string',
242
+ interface: {
243
+ type: AXPWidgetsList.Editors.LookupBox,
244
+ options: {
245
+ entity: `${RootConfig.module.name}.${RootConfig.entities.disabilityStatus.name}`,
246
+ textField: 'title',
247
+ valueField: 'id',
248
+ look: 'select',
249
+ expose: [
250
+ { source: 'id', target: 'disabilityStatus.id' },
251
+ { source: 'title', target: 'disabilityStatus.title' },
252
+ ],
253
+ },
254
+ },
255
+ },
256
+ },
257
+ {
258
+ name: 'smokingStatus',
259
+ title: '@health-core:health-profiles.entities.health-profile.fields.smoking-status',
260
+ groupId: 'profile-details',
261
+ options: {
262
+ sort: { enabled: true },
263
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
264
+ },
265
+ schema: {
266
+ dataType: 'string',
267
+ interface: {
268
+ type: AXPWidgetsList.Editors.SelectBox,
269
+ options: {
270
+ dataSource: 'HealthCore:ListSmokingStatusOptions',
271
+ valueField: 'value',
272
+ textField: 'title',
273
+ },
274
+ },
275
+ },
276
+ },
277
+ {
278
+ name: 'alcoholConsumption',
279
+ title: '@health-core:health-profiles.entities.health-profile.fields.alcohol-consumption',
280
+ groupId: 'profile-details',
281
+ options: {
282
+ sort: { enabled: true },
283
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
284
+ },
285
+ schema: {
286
+ dataType: 'string',
287
+ interface: {
288
+ type: AXPWidgetsList.Editors.SelectBox,
289
+ options: {
290
+ dataSource: 'HealthCore:ListAlcoholConsumptionOptions',
291
+ valueField: 'value',
292
+ textField: 'title',
293
+ },
294
+ },
295
+ },
296
+ },
297
+ {
298
+ name: 'bloodTypeId',
299
+ title: '@health-core:health-profiles.entities.health-profile.fields.blood-type-id',
300
+ groupId: 'profile-details',
301
+ options: {
302
+ sort: { enabled: true },
303
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
304
+ },
305
+ schema: {
306
+ dataType: 'string',
307
+ interface: {
308
+ type: AXPWidgetsList.Editors.LookupBox,
309
+ options: {
310
+ entity: `${RootConfig.module.name}.${RootConfig.entities.bloodType.name}`,
311
+ textField: 'title',
312
+ valueField: 'id',
313
+ look: 'select',
314
+ expose: [
315
+ { source: 'id', target: 'bloodType.id' },
316
+ { source: 'title', target: 'bloodType.title' },
317
+ ],
318
+ },
319
+ },
320
+ },
321
+ },
322
+ {
323
+ name: 'healthRiskLevel',
324
+ title: '@health-core:health-profiles.entities.health-profile.fields.health-risk-level',
325
+ groupId: 'profile-details',
326
+ options: {
327
+ sort: { enabled: true },
328
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
329
+ },
330
+ schema: {
331
+ dataType: 'string',
332
+ interface: {
333
+ type: AXPWidgetsList.Editors.SelectBox,
334
+ options: {
335
+ dataSource: 'HealthCore:ListHealthRiskLevelOptions',
336
+ valueField: 'value',
337
+ textField: 'title',
338
+ },
339
+ },
340
+ },
341
+ },
342
+ {
343
+ name: 'doctorName',
344
+ title: '@health-core:health-profiles.entities.health-profile.fields.doctor-name',
345
+ groupId: 'profile-details',
346
+ options: {
347
+ sort: { enabled: true },
348
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
349
+ },
350
+ schema: {
351
+ dataType: 'string',
352
+ interface: { type: AXPWidgetsList.Editors.TextBox },
353
+ },
354
+ },
355
+ {
356
+ name: 'doctorNumber',
357
+ title: '@health-core:health-profiles.entities.health-profile.fields.doctor-number',
358
+ groupId: 'profile-details',
359
+ options: {
360
+ sort: { enabled: true },
361
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
362
+ },
363
+ schema: {
364
+ dataType: 'string',
365
+ interface: {
366
+ type: AXPWidgetsList.Editors.ContactBox,
367
+ options: { type: 'phone', hasLabel: false, hasIcon: true },
368
+ },
369
+ },
370
+ },
371
+ {
372
+ name: 'emergencyContactName',
373
+ title: '@health-core:health-profiles.entities.health-profile.fields.emergency-contact-name',
374
+ groupId: 'profile-details',
375
+ options: {
376
+ sort: { enabled: true },
377
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
378
+ },
379
+ schema: {
380
+ dataType: 'string',
381
+ interface: { type: AXPWidgetsList.Editors.TextBox },
382
+ },
383
+ },
384
+ {
385
+ name: 'emergencyContactPhone',
386
+ title: '@health-core:health-profiles.entities.health-profile.fields.emergency-contact-phone',
387
+ groupId: 'profile-details',
388
+ options: {
389
+ sort: { enabled: true },
390
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
391
+ },
392
+ schema: {
393
+ dataType: 'string',
394
+ interface: {
395
+ type: AXPWidgetsList.Editors.ContactBox,
396
+ options: { type: 'phone', hasLabel: false, hasIcon: true },
397
+ },
398
+ },
399
+ },
400
+ {
401
+ name: 'emergencyContactEmail',
402
+ title: '@health-core:health-profiles.entities.health-profile.fields.emergency-contact-email',
403
+ groupId: 'profile-details',
404
+ options: {
405
+ sort: { enabled: true },
406
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
407
+ },
408
+ schema: {
409
+ dataType: 'string',
410
+ interface: {
411
+ type: AXPWidgetsList.Editors.ContactBox,
412
+ options: { type: 'email', hasLabel: false, hasIcon: true },
413
+ },
414
+ },
415
+ },
416
+ {
417
+ name: 'notes',
418
+ title: '@general:terms.common.notes',
419
+ groupId: 'profile-details',
420
+ options: {
421
+ sort: { enabled: false },
422
+ filter: { advance: { enabled: true }, inline: { enabled: false } },
423
+ },
424
+ schema: {
425
+ dataType: 'string',
426
+ interface: { type: AXPWidgetsList.Editors.LargeTextBox, options: { rows: 3 } },
427
+ },
428
+ },
429
+ ],
430
+ columns: [
431
+ { name: 'subject.id', options: { dataPath: 'subject.title' } },
432
+ { name: 'bloodTypeId', options: { dataPath: 'bloodType.title' } },
433
+ { name: 'disabilityStatusId', options: { dataPath: 'disabilityStatus.title' } },
434
+ { name: 'healthRiskLevel' },
435
+ ],
436
+ interfaces: {
437
+ master: {
438
+ create: { sections, properties: propertyLayouts },
439
+ update: { sections, properties: propertyLayouts },
440
+ single: {
441
+ title: '{{ subject.title }}',
442
+ sections,
443
+ properties: propertyLayouts,
444
+ actions: [...entityMasterRecordActions()],
445
+ },
446
+ list: {
447
+ actions: [...entityMasterCrudActions()],
448
+ views: [createAllQueryView({ sorts: [{ name: 'subject.id', dir: 'asc' }] })],
449
+ },
450
+ },
451
+ },
452
+ };
453
+ return entityDef;
454
+ }
455
+ //#endregion
456
+
457
+ /**
458
+ * Generated bundle index. Do not edit.
459
+ */
460
+
461
+ export { healthProfileFactory };
462
+ //# sourceMappingURL=acorex-platform-module-health-core-client-contracts-entities-health-profile.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-health-core-client-contracts-entities-health-profile.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-profile/health-profile.entity.ts","../../../../libs/modules/health-core/contracts/src/acorex-platform-module-health-core-client-contracts-entities-health-profile.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 ---- Form layouts ----\n\nconst profilePropertyLayouts = [\n { name: 'subject.id', layout: { positions: { lg: { colSpan: 12 } } } },\n // Row 1: 4 + 4 + 4\n { name: 'disabilityStatusId', layout: { positions: { lg: { colSpan: 4, colStart: 1 } } } },\n { name: 'smokingStatus', layout: { positions: { lg: { colSpan: 4, colStart: 5 } } } },\n { name: 'alcoholConsumption', layout: { positions: { lg: { colSpan: 4, colStart: 9 } } } },\n // Row 2: 4 + 4\n { name: 'bloodTypeId', layout: { positions: { lg: { colSpan: 4, colStart: 1 } } } },\n { name: 'healthRiskLevel', layout: { positions: { lg: { colSpan: 4, colStart: 5 } } } },\n // Row 3: 4 + 4\n { name: 'doctorName', layout: { positions: { lg: { colSpan: 4, colStart: 1 } } } },\n { name: 'doctorNumber', layout: { positions: { lg: { colSpan: 4, colStart: 5 } } } },\n // Row 4: 4 + 4 + 4\n { name: 'emergencyContactName', layout: { positions: { lg: { colSpan: 4, colStart: 1 } } } },\n { name: 'emergencyContactPhone', layout: { positions: { lg: { colSpan: 4, colStart: 5 } } } },\n { name: 'emergencyContactEmail', layout: { positions: { lg: { colSpan: 4, colStart: 9 } } } },\n // Row 5: 12\n { name: 'notes', layout: { positions: { lg: { colSpan: 12, colStart: 1 } } } },\n];\n\n//#endregion\n\n//#region ---- Entity Factory ----\n\nexport async function healthProfileFactory(): Promise<AXPEntity> {\n const sections = [{ id: 'profile-details', layout: { positions: { lg: { colSpan: 12 } } } }];\n const propertyLayouts = omitHealthSubjectFromEditLayouts(profilePropertyLayouts);\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.healthProfile.name,\n title: RootConfig.entities.healthProfile.title,\n icon: RootConfig.entities.healthProfile.icon,\n formats: {\n individual: RootConfig.entities.healthProfile.title,\n plural: RootConfig.entities.healthProfile.titlePlural,\n searchResult: { title: '{{ subject.title }}', description: RootConfig.module.title },\n },\n plugins: [{ name: 'history' }, { name: 'reports' }],\n groups: [\n {\n id: 'profile-details',\n title: '@health-core:health-profiles.entities.health-profile.groups.profile-details',\n },\n ],\n properties: [\n {\n name: 'id',\n title: '@general:terms.common.id',\n groupId: 'profile-details',\n schema: { dataType: 'uuid', visible: false, readonly: true, unique: { enabled: true } },\n },\n createHealthSubjectLookupProperty('profile-details', { readonly: true }),\n\n {\n name: 'disabilityStatusId',\n title: '@health-core:health-profiles.entities.health-profile.fields.disability-status-id',\n groupId: 'profile-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.disabilityStatus.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'disabilityStatus.id' },\n { source: 'title', target: 'disabilityStatus.title' },\n ],\n },\n },\n },\n },\n {\n name: 'smokingStatus',\n title: '@health-core:health-profiles.entities.health-profile.fields.smoking-status',\n groupId: 'profile-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.SelectBox,\n options: {\n dataSource: 'HealthCore:ListSmokingStatusOptions',\n valueField: 'value',\n textField: 'title',\n },\n },\n },\n },\n {\n name: 'alcoholConsumption',\n title: '@health-core:health-profiles.entities.health-profile.fields.alcohol-consumption',\n groupId: 'profile-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.SelectBox,\n options: {\n dataSource: 'HealthCore:ListAlcoholConsumptionOptions',\n valueField: 'value',\n textField: 'title',\n },\n },\n },\n },\n {\n name: 'bloodTypeId',\n title: '@health-core:health-profiles.entities.health-profile.fields.blood-type-id',\n groupId: 'profile-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.bloodType.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'bloodType.id' },\n { source: 'title', target: 'bloodType.title' },\n ],\n },\n },\n },\n },\n {\n name: 'healthRiskLevel',\n title: '@health-core:health-profiles.entities.health-profile.fields.health-risk-level',\n groupId: 'profile-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.SelectBox,\n options: {\n dataSource: 'HealthCore:ListHealthRiskLevelOptions',\n valueField: 'value',\n textField: 'title',\n },\n },\n },\n },\n {\n name: 'doctorName',\n title: '@health-core:health-profiles.entities.health-profile.fields.doctor-name',\n groupId: 'profile-details',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsList.Editors.TextBox },\n },\n },\n {\n name: 'doctorNumber',\n title: '@health-core:health-profiles.entities.health-profile.fields.doctor-number',\n groupId: 'profile-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.ContactBox,\n options: { type: 'phone', hasLabel: false, hasIcon: true },\n },\n },\n },\n {\n name: 'emergencyContactName',\n title: '@health-core:health-profiles.entities.health-profile.fields.emergency-contact-name',\n groupId: 'profile-details',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsList.Editors.TextBox },\n },\n },\n {\n name: 'emergencyContactPhone',\n title: '@health-core:health-profiles.entities.health-profile.fields.emergency-contact-phone',\n groupId: 'profile-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.ContactBox,\n options: { type: 'phone', hasLabel: false, hasIcon: true },\n },\n },\n },\n {\n name: 'emergencyContactEmail',\n title: '@health-core:health-profiles.entities.health-profile.fields.emergency-contact-email',\n groupId: 'profile-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.ContactBox,\n options: { type: 'email', hasLabel: false, hasIcon: true },\n },\n },\n },\n {\n name: 'notes',\n title: '@general:terms.common.notes',\n groupId: 'profile-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 columns: [\n { name: 'subject.id', options: { dataPath: 'subject.title' } },\n { name: 'bloodTypeId', options: { dataPath: 'bloodType.title' } },\n { name: 'disabilityStatusId', options: { dataPath: 'disabilityStatus.title' } },\n { name: 'healthRiskLevel' },\n ],\n interfaces: {\n master: {\n create: { sections, properties: propertyLayouts },\n update: { sections, properties: propertyLayouts },\n single: {\n title: '{{ subject.title }}',\n sections,\n properties: propertyLayouts,\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView({ sorts: [{ name: 'subject.id', dir: 'asc' }] })],\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-profile';\n"],"names":[],"mappings":"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"}