@acorex-platform/module-health-core-client 0.0.32 → 0.0.37

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 (78) 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-ChOQtTh6.mjs +128 -0
  24. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-acorex-platform-module-health-core-client-contracts-entity-catalog-ChOQtTh6.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-blood-type.entity-Ctb-5t-D.mjs +123 -0
  26. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-blood-type.entity-Ctb-5t-D.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-body-part.entity-DVSkMY6m.mjs +70 -0
  28. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-body-part.entity-DVSkMY6m.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-disability-status.entity-CJEwjeD6.mjs +123 -0
  30. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-disability-status.entity-CJEwjeD6.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-condition-type.entity-nMvpgBZN.mjs +143 -0
  32. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-condition-type.entity-nMvpgBZN.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-condition.entity-WsD5JyJg.mjs +272 -0
  34. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-condition.entity-WsD5JyJg.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-event.entity-CqqtU3qo.mjs +280 -0
  36. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-event.entity-CqqtU3qo.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-profile.entity-qqN4ZIIb.mjs +284 -0
  38. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-profile.entity-qqN4ZIIb.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-record-type.entity-Dgq6FTVR.mjs +100 -0
  40. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-record-type.entity-Dgq6FTVR.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-restriction.entity-CE1oWLLW.mjs +90 -0
  42. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-health-restriction.entity-CE1oWLLW.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-tYDRX6YY.mjs +70 -0
  46. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-injury-type.entity-tYDRX6YY.mjs.map +1 -0
  47. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-vaccination-type.entity-Cj0alpZ1.mjs +70 -0
  48. package/fesm2022/acorex-platform-module-health-core-client-contracts-entity-catalog-vaccination-type.entity-Cj0alpZ1.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-contracts.mjs.map +1 -1
  52. package/fesm2022/acorex-platform-module-health-core-client-list-alcohol-consumption-options.query-CFQk6mlY.mjs.map +1 -1
  53. package/fesm2022/acorex-platform-module-health-core-client-list-allergy-severity-options.query-BmdEP1TK.mjs.map +1 -1
  54. package/fesm2022/acorex-platform-module-health-core-client-list-chronic-condition-status-options.query-QgsQCqLm.mjs.map +1 -1
  55. package/fesm2022/acorex-platform-module-health-core-client-list-health-risk-level-options.query-BtJdBZVT.mjs.map +1 -1
  56. package/fesm2022/acorex-platform-module-health-core-client-list-injury-mechanism-options.query-D7Tjl7eC.mjs.map +1 -1
  57. package/fesm2022/acorex-platform-module-health-core-client-list-pain-rate-options.query-C9sGCRmk.mjs.map +1 -1
  58. package/fesm2022/acorex-platform-module-health-core-client-list-smoking-status-options.query-EUVhlNLW.mjs.map +1 -1
  59. package/fesm2022/acorex-platform-module-health-core-client-list-work-capacity-options.query-YQ6BW3kG.mjs.map +1 -1
  60. package/fesm2022/acorex-platform-module-health-core-client-local-entities.mjs +39 -0
  61. package/fesm2022/acorex-platform-module-health-core-client-local-entities.mjs.map +1 -0
  62. package/fesm2022/acorex-platform-module-health-core-client-start-health-record-flow.command-BsB-MPmu.mjs.map +1 -1
  63. package/fesm2022/acorex-platform-module-health-core-client.mjs.map +1 -1
  64. package/package.json +54 -2
  65. package/types/acorex-platform-module-health-core-client-contracts-entities-blood-type.d.ts +5 -0
  66. package/types/acorex-platform-module-health-core-client-contracts-entities-body-part.d.ts +5 -0
  67. package/types/acorex-platform-module-health-core-client-contracts-entities-disability-status.d.ts +5 -0
  68. package/types/acorex-platform-module-health-core-client-contracts-entities-health-condition-type.d.ts +5 -0
  69. package/types/acorex-platform-module-health-core-client-contracts-entities-health-condition.d.ts +5 -0
  70. package/types/acorex-platform-module-health-core-client-contracts-entities-health-event.d.ts +5 -0
  71. package/types/acorex-platform-module-health-core-client-contracts-entities-health-profile.d.ts +5 -0
  72. package/types/acorex-platform-module-health-core-client-contracts-entities-health-record-type.d.ts +5 -0
  73. package/types/acorex-platform-module-health-core-client-contracts-entities-health-restriction.d.ts +5 -0
  74. package/types/acorex-platform-module-health-core-client-contracts-entities-injury-type.d.ts +5 -0
  75. package/types/acorex-platform-module-health-core-client-contracts-entities-vaccination-type.d.ts +5 -0
  76. package/types/acorex-platform-module-health-core-client-contracts-entity-catalog.d.ts +10 -0
  77. package/types/acorex-platform-module-health-core-client-contracts.d.ts +2 -1
  78. package/types/acorex-platform-module-health-core-client-local-entities.d.ts +12 -0
@@ -0,0 +1,450 @@
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 ---- Repeater children ----
183
+ const RESTRICTIONS_REPEATER_CHILDREN = [
184
+ {
185
+ type: AXPWidgetsList.Layouts.GridLayout,
186
+ mode: 'edit',
187
+ name: 'restrictionRow',
188
+ options: {
189
+ grid: {
190
+ default: {
191
+ columns: 12,
192
+ gap: '1rem',
193
+ },
194
+ },
195
+ },
196
+ children: [
197
+ {
198
+ type: AXPWidgetsList.Layouts.GridItemLayout,
199
+ mode: 'edit',
200
+ options: { colSpan: 6 },
201
+ children: [
202
+ {
203
+ type: AXPWidgetsList.Layouts.FormField,
204
+ mode: 'edit',
205
+ options: {
206
+ label: '@health-core:health-conditions.entities.health-condition.fields.restriction-id',
207
+ showLabel: true,
208
+ },
209
+ children: [
210
+ {
211
+ type: AXPWidgetsList.Editors.LookupBox,
212
+ mode: 'edit',
213
+ path: 'restrictionId',
214
+ name: 'restrictionId',
215
+ options: {
216
+ entity: `${RootConfig.module.name}.${RootConfig.entities.healthRestriction.name}`,
217
+ textField: 'title',
218
+ valueField: 'id',
219
+ look: 'select',
220
+ columns: ['title', 'description'],
221
+ expose: [
222
+ { source: 'id', target: 'restriction.id' },
223
+ { source: 'title', target: 'restriction.title' },
224
+ ],
225
+ validations: [{ rule: 'required' }],
226
+ },
227
+ },
228
+ ],
229
+ },
230
+ ],
231
+ },
232
+ {
233
+ type: AXPWidgetsList.Layouts.GridItemLayout,
234
+ mode: 'edit',
235
+ options: { colSpan: 3 },
236
+ children: [
237
+ {
238
+ type: AXPWidgetsList.Layouts.FormField,
239
+ mode: 'edit',
240
+ options: {
241
+ label: '@health-core:health-conditions.entities.health-condition.fields.start-date',
242
+ showLabel: true,
243
+ },
244
+ children: [
245
+ {
246
+ type: AXPWidgetsList.Editors.DateTimeBox,
247
+ mode: 'edit',
248
+ path: 'startDate',
249
+ name: 'startDate',
250
+ options: {},
251
+ },
252
+ ],
253
+ },
254
+ ],
255
+ },
256
+ {
257
+ type: AXPWidgetsList.Layouts.GridItemLayout,
258
+ mode: 'edit',
259
+ options: { colSpan: 3 },
260
+ children: [
261
+ {
262
+ type: AXPWidgetsList.Layouts.FormField,
263
+ mode: 'edit',
264
+ options: {
265
+ label: '@health-core:health-conditions.entities.health-condition.fields.end-date',
266
+ showLabel: true,
267
+ },
268
+ children: [
269
+ {
270
+ type: AXPWidgetsList.Editors.DateTimeBox,
271
+ mode: 'edit',
272
+ path: 'endDate',
273
+ name: 'endDate',
274
+ options: {},
275
+ },
276
+ ],
277
+ },
278
+ ],
279
+ },
280
+ ],
281
+ },
282
+ ];
283
+ //#endregion
284
+ //#region ---- Entity Factory ----
285
+ async function healthConditionFactory() {
286
+ const sections = [
287
+ { id: 'condition-details', layout: { positions: { lg: { colSpan: 12 } } } },
288
+ { id: 'restrictions', order: 3, layout: { positions: { lg: { colSpan: 12 } } } },
289
+ ];
290
+ const restrictionsPropertyLayout = {
291
+ name: 'restrictions',
292
+ layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } },
293
+ };
294
+ const viewPropertyLayouts = [
295
+ { name: 'subject.id', layout: { positions: { lg: { colSpan: 12 } } } },
296
+ { name: 'conditionTypeId', layout: { positions: { lg: { colSpan: 6 } } } },
297
+ { name: 'diagnosedDate', layout: { positions: { lg: { colSpan: 6 } } } },
298
+ { name: 'notes', layout: { positions: { lg: { colSpan: 12 } } } },
299
+ restrictionsPropertyLayout,
300
+ ];
301
+ const editPropertyLayouts = omitHealthSubjectFromEditLayouts(viewPropertyLayouts);
302
+ const entityDef = {
303
+ module: RootConfig.module.name,
304
+ name: RootConfig.entities.healthCondition.name,
305
+ title: RootConfig.entities.healthCondition.title,
306
+ icon: RootConfig.entities.healthCondition.icon,
307
+ plugins: [
308
+ { name: 'history' },
309
+ { name: 'reports' },
310
+ {
311
+ name: 'meta-data-form',
312
+ options: {
313
+ title: '@health-core:health-conditions.entities.health-condition.groups.more-information',
314
+ path: 'conditionTypeId',
315
+ display: {
316
+ section: {
317
+ order: 2,
318
+ },
319
+ },
320
+ },
321
+ },
322
+ ],
323
+ formats: {
324
+ individual: RootConfig.entities.healthCondition.title,
325
+ plural: RootConfig.entities.healthCondition.titlePlural,
326
+ searchResult: {
327
+ title: '{{ context.eval("conditionType.title", { pipes: ["translate"] }) }}',
328
+ description: '{{ context.eval("subject.title", { pipes: ["translate"] }) }}',
329
+ },
330
+ },
331
+ groups: [
332
+ {
333
+ id: 'condition-details',
334
+ title: '@health-core:health-conditions.entities.health-condition.groups.condition-details',
335
+ },
336
+ {
337
+ id: 'restrictions',
338
+ title: '@health-core:health-conditions.entities.health-condition.groups.restrictions',
339
+ },
340
+ ],
341
+ properties: [
342
+ {
343
+ name: 'id',
344
+ title: '@general:terms.common.id',
345
+ groupId: 'condition-details',
346
+ schema: { dataType: 'uuid', visible: false, readonly: true, unique: { enabled: true } },
347
+ },
348
+ createHealthSubjectLookupProperty('condition-details', { readonly: true }),
349
+ {
350
+ name: 'conditionTypeId',
351
+ title: '@health-core:health-conditions.entities.health-condition.fields.condition-type-id',
352
+ groupId: 'condition-details',
353
+ options: {
354
+ sort: { enabled: true },
355
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
356
+ },
357
+ schema: {
358
+ dataType: 'string',
359
+ interface: {
360
+ type: AXPWidgetsList.Editors.LookupBox,
361
+ options: {
362
+ entity: `${RootConfig.module.name}.${RootConfig.entities.healthConditionType.name}`,
363
+ textField: 'title',
364
+ valueField: 'id',
365
+ look: 'select',
366
+ columns: ['title', 'kind'],
367
+ expose: [
368
+ { source: 'id', target: 'conditionType.id' },
369
+ { source: 'title', target: 'conditionType.title' },
370
+ { source: 'kind', target: 'conditionType.kind' },
371
+ ],
372
+ },
373
+ },
374
+ },
375
+ validations: [{ rule: 'required' }],
376
+ },
377
+ {
378
+ name: 'diagnosedDate',
379
+ title: '@health-core:health-conditions.entities.health-condition.fields.diagnosed-date',
380
+ groupId: 'condition-details',
381
+ options: {
382
+ sort: { enabled: true },
383
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
384
+ },
385
+ schema: {
386
+ dataType: 'date',
387
+ interface: { type: AXPWidgetsList.Editors.DateTimeBox },
388
+ },
389
+ },
390
+ {
391
+ name: 'restrictions',
392
+ title: '@health-core:health-conditions.entities.health-condition.fields.restrictions.title',
393
+ groupId: 'restrictions',
394
+ schema: {
395
+ defaultValue: [],
396
+ dataType: 'array',
397
+ interface: {
398
+ type: AXPWidgetsList.Layouts.RepeaterLayout,
399
+ options: { hasControls: true },
400
+ children: [...RESTRICTIONS_REPEATER_CHILDREN],
401
+ },
402
+ },
403
+ },
404
+ {
405
+ name: 'notes',
406
+ title: '@general:terms.common.notes',
407
+ groupId: 'condition-details',
408
+ options: {
409
+ sort: { enabled: false },
410
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
411
+ },
412
+ schema: {
413
+ dataType: 'string',
414
+ interface: { type: AXPWidgetsList.Editors.LargeTextBox, options: { rows: 2 } },
415
+ },
416
+ },
417
+ ],
418
+ columns: [
419
+ { name: 'conditionTypeId', options: { dataPath: 'conditionType.title', width: '300px' } },
420
+ { name: 'diagnosedDate', options: { width: '150px' } },
421
+ { name: 'restrictions', options: { width: '280px' } },
422
+ { name: 'notes', options: { width: '300px' } },
423
+ ],
424
+ interfaces: {
425
+ master: {
426
+ create: { sections, properties: editPropertyLayouts },
427
+ update: { sections, properties: editPropertyLayouts },
428
+ single: {
429
+ title: '{{ context.eval("conditionType.title", { pipes: ["translate"] }) }}',
430
+ sections,
431
+ properties: viewPropertyLayouts,
432
+ actions: [...entityMasterRecordActions()],
433
+ },
434
+ list: {
435
+ actions: [...entityMasterCrudActions()],
436
+ views: [createAllQueryView({ sorts: [{ name: 'diagnosedDate', dir: 'desc' }] })],
437
+ },
438
+ },
439
+ },
440
+ };
441
+ return entityDef;
442
+ }
443
+ //#endregion
444
+
445
+ /**
446
+ * Generated bundle index. Do not edit.
447
+ */
448
+
449
+ export { healthConditionFactory };
450
+ //# sourceMappingURL=acorex-platform-module-health-core-client-contracts-entities-health-condition.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-health-core-client-contracts-entities-health-condition.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-condition/health-condition.entity.ts","../../../../libs/modules/health-core/contracts/src/acorex-platform-module-health-core-client-contracts-entities-health-condition.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 ---- Repeater children ----\n\nconst RESTRICTIONS_REPEATER_CHILDREN = [\n {\n type: AXPWidgetsList.Layouts.GridLayout,\n mode: 'edit' as const,\n name: 'restrictionRow',\n options: {\n grid: {\n default: {\n columns: 12,\n gap: '1rem',\n },\n },\n },\n children: [\n {\n type: AXPWidgetsList.Layouts.GridItemLayout,\n mode: 'edit' as const,\n options: { colSpan: 6 },\n children: [\n {\n type: AXPWidgetsList.Layouts.FormField,\n mode: 'edit' as const,\n options: {\n label: '@health-core:health-conditions.entities.health-condition.fields.restriction-id',\n showLabel: true,\n },\n children: [\n {\n type: AXPWidgetsList.Editors.LookupBox,\n mode: 'edit' as const,\n path: 'restrictionId',\n name: 'restrictionId',\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.healthRestriction.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n columns: ['title', 'description'],\n expose: [\n { source: 'id', target: 'restriction.id' },\n { source: 'title', target: 'restriction.title' },\n ],\n validations: [{ rule: 'required' }],\n },\n },\n ],\n },\n ],\n },\n {\n type: AXPWidgetsList.Layouts.GridItemLayout,\n mode: 'edit' as const,\n options: { colSpan: 3 },\n children: [\n {\n type: AXPWidgetsList.Layouts.FormField,\n mode: 'edit' as const,\n options: {\n label: '@health-core:health-conditions.entities.health-condition.fields.start-date',\n showLabel: true,\n },\n children: [\n {\n type: AXPWidgetsList.Editors.DateTimeBox,\n mode: 'edit' as const,\n path: 'startDate',\n name: 'startDate',\n options: {},\n },\n ],\n },\n ],\n },\n {\n type: AXPWidgetsList.Layouts.GridItemLayout,\n mode: 'edit' as const,\n options: { colSpan: 3 },\n children: [\n {\n type: AXPWidgetsList.Layouts.FormField,\n mode: 'edit' as const,\n options: {\n label: '@health-core:health-conditions.entities.health-condition.fields.end-date',\n showLabel: true,\n },\n children: [\n {\n type: AXPWidgetsList.Editors.DateTimeBox,\n mode: 'edit' as const,\n path: 'endDate',\n name: 'endDate',\n options: {},\n },\n ],\n },\n ],\n },\n ],\n },\n];\n\n//#endregion\n\n//#region ---- Entity Factory ----\n\nexport async function healthConditionFactory(): Promise<AXPEntity> {\n const sections = [\n { id: 'condition-details', layout: { positions: { lg: { colSpan: 12 } } } },\n { id: 'restrictions', order: 3, layout: { positions: { lg: { colSpan: 12 } } } },\n ];\n\n const restrictionsPropertyLayout = {\n name: 'restrictions',\n layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } },\n };\n\n const viewPropertyLayouts = [\n { name: 'subject.id', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'conditionTypeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'diagnosedDate', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'notes', layout: { positions: { lg: { colSpan: 12 } } } },\n restrictionsPropertyLayout,\n ];\n const editPropertyLayouts = omitHealthSubjectFromEditLayouts(viewPropertyLayouts);\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.healthCondition.name,\n title: RootConfig.entities.healthCondition.title,\n icon: RootConfig.entities.healthCondition.icon,\n plugins: [\n { name: 'history' },\n { name: 'reports' },\n {\n name: 'meta-data-form',\n options: {\n title: '@health-core:health-conditions.entities.health-condition.groups.more-information',\n path: 'conditionTypeId',\n display: {\n section: {\n order: 2,\n },\n },\n },\n },\n ],\n formats: {\n individual: RootConfig.entities.healthCondition.title,\n plural: RootConfig.entities.healthCondition.titlePlural,\n searchResult: {\n title: '{{ context.eval(\"conditionType.title\", { pipes: [\"translate\"] }) }}',\n description: '{{ context.eval(\"subject.title\", { pipes: [\"translate\"] }) }}',\n },\n },\n groups: [\n {\n id: 'condition-details',\n title: '@health-core:health-conditions.entities.health-condition.groups.condition-details',\n },\n {\n id: 'restrictions',\n title: '@health-core:health-conditions.entities.health-condition.groups.restrictions',\n },\n ],\n properties: [\n {\n name: 'id',\n title: '@general:terms.common.id',\n groupId: 'condition-details',\n schema: { dataType: 'uuid', visible: false, readonly: true, unique: { enabled: true } },\n },\n createHealthSubjectLookupProperty('condition-details', { readonly: true }),\n {\n name: 'conditionTypeId',\n title: '@health-core:health-conditions.entities.health-condition.fields.condition-type-id',\n groupId: 'condition-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.healthConditionType.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n columns: ['title', 'kind'],\n expose: [\n { source: 'id', target: 'conditionType.id' },\n { source: 'title', target: 'conditionType.title' },\n { source: 'kind', target: 'conditionType.kind' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'diagnosedDate',\n title: '@health-core:health-conditions.entities.health-condition.fields.diagnosed-date',\n groupId: 'condition-details',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsList.Editors.DateTimeBox },\n },\n },\n {\n name: 'restrictions',\n title: '@health-core:health-conditions.entities.health-condition.fields.restrictions.title',\n groupId: 'restrictions',\n schema: {\n defaultValue: [],\n dataType: 'array',\n interface: {\n type: AXPWidgetsList.Layouts.RepeaterLayout,\n options: { hasControls: true },\n children: [...RESTRICTIONS_REPEATER_CHILDREN],\n },\n },\n },\n {\n name: 'notes',\n title: '@general:terms.common.notes',\n groupId: 'condition-details',\n options: {\n sort: { enabled: false },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsList.Editors.LargeTextBox, options: { rows: 2 } },\n },\n },\n ],\n columns: [\n { name: 'conditionTypeId', options: { dataPath: 'conditionType.title', width: '300px' } },\n { name: 'diagnosedDate', options: { width: '150px' } },\n { name: 'restrictions', options: { width: '280px' } },\n { name: 'notes', options: { width: '300px' } },\n ],\n interfaces: {\n master: {\n create: { sections, properties: editPropertyLayouts },\n update: { sections, properties: editPropertyLayouts },\n single: {\n title: '{{ context.eval(\"conditionType.title\", { pipes: [\"translate\"] }) }}',\n sections,\n properties: viewPropertyLayouts,\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView({ sorts: [{ name: 'diagnosedDate', 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-condition';\n"],"names":[],"mappings":"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"}