@uxland/primary-shell 5.3.3 → 5.3.4

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 (47) hide show
  1. package/dist/index.js +6321 -6227
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.umd.cjs +444 -435
  4. package/dist/index.umd.cjs.map +1 -1
  5. package/dist/primary/shell/src/UI/internal-views/lower-nav-menu-views.d.ts +1 -0
  6. package/dist/primary/shell/src/UI/internal-views/upper-nav-views.d.ts +1 -0
  7. package/dist/primary/shell/src/features/get-user-info/backend-adapter.d.ts +1 -0
  8. package/dist/primary/shell/src/features/visit/finalize-visit/bootstrapper.d.ts +4 -0
  9. package/dist/primary/shell/src/features/visit/finalize-visit/component/finalize-visit-button.d.ts +9 -0
  10. package/dist/primary/shell/src/features/visit/finalize-visit/component/template.d.ts +3 -0
  11. package/dist/primary/shell/src/features/visit/finalize-visit/handler.d.ts +8 -0
  12. package/dist/primary/shell/src/features/visit/finalize-visit/request.d.ts +4 -0
  13. package/dist/primary/shell/src/features/visit/get-visit-id/bootstrapper.d.ts +4 -0
  14. package/dist/primary/shell/src/features/visit/get-visit-id/handler.d.ts +9 -0
  15. package/dist/primary/shell/src/features/visit/get-visit-id/request.d.ts +2 -0
  16. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/business-rules.d.ts +2 -1
  17. package/dist/primary/shell/src/internal-plugins/activity-history/activity-history-item/domain/model.d.ts +9 -1
  18. package/dist/primary/shell/src/locales.d.ts +1 -0
  19. package/package.json +4 -4
  20. package/src/UI/bootstrapper.ts +2 -0
  21. package/src/UI/components/bootstrapper.ts +2 -0
  22. package/src/UI/components/primaria-shell/shell-header/template.ts +2 -1
  23. package/src/UI/internal-views/handle-views.ts +13 -0
  24. package/src/UI/internal-views/lower-nav-menu-views.ts +19 -0
  25. package/src/UI/internal-views/upper-nav-views.ts +200 -0
  26. package/src/bootstrapper.ts +0 -2
  27. package/src/features/bootstrapper.ts +6 -0
  28. package/src/features/get-user-info/backend-adapter.ts +14 -3
  29. package/src/features/visit/finalize-visit/bootstrapper.ts +17 -0
  30. package/src/features/visit/finalize-visit/component/finalize-visit-button.ts +36 -0
  31. package/src/features/visit/finalize-visit/component/template.ts +9 -0
  32. package/src/features/visit/finalize-visit/handler.ts +18 -0
  33. package/src/features/visit/finalize-visit/request.ts +3 -0
  34. package/src/features/visit/get-visit-id/bootstrapper.ts +17 -0
  35. package/src/features/visit/get-visit-id/handler.ts +27 -0
  36. package/src/features/visit/get-visit-id/request.ts +1 -0
  37. package/src/internal-plugins/activity-history/activity-history-item/domain/business-rules.ts +25 -1
  38. package/src/internal-plugins/activity-history/activity-history-item/domain/is-valid-history-item/is-valid-history-item.test.ts +48 -6
  39. package/src/internal-plugins/activity-history/activity-history-item/domain/is-valid-history-item/is-valid-history-item.ts +13 -7
  40. package/src/internal-plugins/activity-history/activity-history-item/domain/model.ts +10 -1
  41. package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/activity-history-timeline.ts +20 -3
  42. package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/styles.css +8 -4
  43. package/src/internal-plugins/activity-history/activity-history-item/list/UI/timeline/template.ts +10 -10
  44. package/src/internal-plugins/activity-history/activity-history-item/list/group-history-items/group-history-items.ts +7 -4
  45. package/src/locales.ts +1 -0
  46. package/src/handle-views.ts +0 -255
  47. /package/dist/primary/shell/src/{handle-views.d.ts → UI/internal-views/handle-views.d.ts} +0 -0
@@ -1,5 +1,29 @@
1
- import { IActivityHistoryItem } from "./model";
1
+ import { IActivityHistoryItem, IActivityHistoryItemWithComponent } from "./model";
2
2
 
3
3
  export function shouldShowRole(item: IActivityHistoryItem): boolean {
4
4
  return !item.professional.speciality.description;
5
5
  }
6
+
7
+ export const hasItemDivider = (
8
+ item: IActivityHistoryItemWithComponent,
9
+ items: IActivityHistoryItemWithComponent[],
10
+ ): boolean => {
11
+ const currentIndex = items.findIndex((i) => i.id === item.id);
12
+
13
+ if (currentIndex === -1) {
14
+ // Item no encontrado, por seguridad
15
+ return false;
16
+ }
17
+
18
+ if (currentIndex === items.length - 1) {
19
+ // Es el último elemento
20
+ return true;
21
+ }
22
+
23
+ const currentDate = new Date(item.date).getTime();
24
+ const nextDate = new Date(items[currentIndex + 1].date).getTime();
25
+
26
+ const diffMinutes = Math.abs(nextDate - currentDate) / (1000 * 60);
27
+
28
+ return diffMinutes > 15;
29
+ };
@@ -13,7 +13,7 @@ describe("isValidActivityHistoryItem", () => {
13
13
  role: { id: "role-1", description: "Lead Doctor" },
14
14
  },
15
15
  relevant: true,
16
- diagnostics: [{ id: "diag-1", description: "High Blood Pressure" }],
16
+ diagnostics: [{ codi: "diag-1", cataleg: "001", descripcio: "High Blood Pressure" }],
17
17
  center: { id: "center-1", description: "Main Hospital" },
18
18
  up: { id: "up-1", description: "Unit A" },
19
19
  ep: { id: "ep-1", description: "Emergency Room" },
@@ -33,7 +33,7 @@ describe("isValidActivityHistoryItem", () => {
33
33
  role: { id: "role-1", description: "Lead Doctor" },
34
34
  },
35
35
  relevant: true,
36
- diagnostics: [{ id: "diag-1", description: "High Blood Pressure" }],
36
+ diagnostics: [{ codi: "diag-1", cataleg: "001", descripcio: "High Blood Pressure" }],
37
37
  center: { id: "center-1", description: "Main Hospital" },
38
38
  up: { id: "up-1", description: "Unit A" },
39
39
  ep: { id: "ep-1", description: "Emergency Room" },
@@ -53,7 +53,7 @@ describe("isValidActivityHistoryItem", () => {
53
53
  role: { id: "role-1", description: "Lead Doctor" },
54
54
  },
55
55
  relevant: true,
56
- diagnostics: [{ id: "diag-1", description: "High Blood Pressure" }],
56
+ diagnostics: [{ codi: "diag-1", cataleg: "001", descripcio: "High Blood Pressure" }],
57
57
  center: { id: "center-1", description: "Main Hospital" },
58
58
  up: { id: "up-1", description: "Unit A" },
59
59
  ep: { id: "ep-1", description: "Emergency Room" },
@@ -74,7 +74,7 @@ describe("isValidActivityHistoryItem", () => {
74
74
  role: { id: "role-1", description: "Lead Doctor" },
75
75
  },
76
76
  relevant: true,
77
- diagnostics: [{ id: "diag-1", description: "High Blood Pressure" }],
77
+ diagnostics: [{ codi: "diag-1", cataleg: "001", descripcio: "High Blood Pressure" }],
78
78
  center: { id: "center-1", description: "Main Hospital" },
79
79
  up: { id: "up-1", description: "Unit A" },
80
80
  ep: { id: "ep-1", description: "Emergency Room" },
@@ -105,6 +105,48 @@ describe("isValidActivityHistoryItem", () => {
105
105
  expect(isValidActivityHistoryItem(invalidItem)).toBe(false);
106
106
  });
107
107
 
108
+ it('should return true if "diagnostics" is null', () => {
109
+ const validItem = {
110
+ id: "123",
111
+ date: "2023-10-07",
112
+ professional: {
113
+ id: "prof-1",
114
+ name: "Dr. John Doe",
115
+ speciality: { id: "spec-1", description: "Cardiology" },
116
+ role: { id: "role-1", description: "Lead Doctor" },
117
+ },
118
+ relevant: true,
119
+ diagnostics: null,
120
+ center: { id: "center-1", description: "Main Hospital" },
121
+ up: { id: "up-1", description: "Unit A" },
122
+ ep: { id: "ep-1", description: "Emergency Room" },
123
+ service: { id: "service-1", description: "Cardiac Service" },
124
+ };
125
+
126
+ expect(isValidActivityHistoryItem(validItem)).toBe(true);
127
+ });
128
+
129
+ it('should return false if "diagnostics" are invalid', () => {
130
+ const invalidItem = {
131
+ id: "123",
132
+ date: "2023-10-07",
133
+ professional: {
134
+ id: "prof-1",
135
+ name: "Dr. John Doe",
136
+ speciality: { id: "spec-1", description: "Cardiology" },
137
+ role: { id: "role-1", description: "Lead Doctor" },
138
+ },
139
+ relevant: true,
140
+ diagnostics: [{ codi: null, cataleg: "001", descripcio: "High Blood Pressure" }],
141
+ center: { id: "center-1", description: "Main Hospital" },
142
+ up: { id: "up-1", description: "Unit A" },
143
+ ep: { id: "ep-1", description: "Emergency Room" },
144
+ service: { id: "service-1", description: "Cardiac Service" },
145
+ };
146
+
147
+ expect(isValidActivityHistoryItem(invalidItem)).toBe(false);
148
+ });
149
+
108
150
  it('should return false if "relevant" is not a boolean', () => {
109
151
  const invalidItem = {
110
152
  id: "123",
@@ -116,7 +158,7 @@ describe("isValidActivityHistoryItem", () => {
116
158
  role: { id: "role-1", description: "Lead Doctor" },
117
159
  },
118
160
  relevant: "not a boolean", // Should be boolean
119
- diagnostics: [{ id: "diag-1", description: "High Blood Pressure" }],
161
+ diagnostics: [{ codi: "diag-1", cataleg: "001", descripcio: "High Blood Pressure" }],
120
162
  center: { id: "center-1", description: "Main Hospital" },
121
163
  up: { id: "up-1", description: "Unit A" },
122
164
  ep: { id: "ep-1", description: "Emergency Room" },
@@ -136,7 +178,7 @@ describe("isValidActivityHistoryItem", () => {
136
178
  role: { id: "role-1", description: "Lead Doctor" },
137
179
  },
138
180
  relevant: true,
139
- diagnostics: [{ id: "diag-1", description: "High Blood Pressure" }],
181
+ diagnostics: [{ codi: "diag-1", cataleg: "001", descripcio: "High Blood Pressure" }],
140
182
  center: { id: "center-1", description: "Main Hospital" },
141
183
  up: { id: "up-1", description: "Unit A" },
142
184
  ep: { id: "ep-1", description: "Emergency Room" },
@@ -23,14 +23,20 @@ export const isValidActivityHistoryItem = (obj: IActivityHistoryItem) => {
23
23
 
24
24
  // Comprueba las propiedades de un diagnóstico
25
25
  const hasValidDiagnostics = (diagnostics) => {
26
+ if (diagnostics === null || diagnostics === undefined) {
27
+ return true;
28
+ }
29
+
26
30
  return (
27
- (diagnostics === null || isArray(diagnostics)) && // null or array
28
- (diagnostics === null ||
29
- diagnostics.every(
30
- (diagnostic) =>
31
- diagnostic === null ||
32
- (diagnostic && isString(diagnostic.id) && isString(diagnostic.description)), // Permite que un diagnóstico sea null o tenga id y description válidos
33
- ))
31
+ Array.isArray(diagnostics) &&
32
+ diagnostics.every(
33
+ (diagnostic) =>
34
+ diagnostic !== null &&
35
+ diagnostic !== undefined &&
36
+ typeof diagnostic.codi === "string" &&
37
+ typeof diagnostic.cataleg === "string" &&
38
+ typeof diagnostic.descripcio === "string",
39
+ )
34
40
  );
35
41
  };
36
42
 
@@ -14,12 +14,21 @@ export type TSearchActivityHistoryItemPredicate = (
14
14
  item: IActivityHistoryItem,
15
15
  ) => boolean;
16
16
 
17
+ export interface IActivityHistoryDiagnostic {
18
+ codi: string;
19
+ cataleg: string;
20
+ descripcio: string;
21
+ idEcap: string;
22
+ idCipds: string;
23
+ idCdr: string;
24
+ }
25
+
17
26
  export interface IActivityHistoryItem {
18
27
  id: string;
19
28
  date: string;
20
29
  professional: IOwner;
21
30
  relevant: boolean;
22
- diagnostics: IEntityDescription[];
31
+ diagnostics: IActivityHistoryDiagnostic[];
23
32
  center: IEntityDescription;
24
33
  up: IEntityDescription;
25
34
  ep: IEntityDescription;
@@ -1,4 +1,4 @@
1
- import { LitElement, css, html, unsafeCSS } from "lit";
1
+ import { LitElement, PropertyValues, css, html, unsafeCSS } from "lit";
2
2
  import { customElement } from "lit/decorators.js";
3
3
  import { connectedProperty } from "../../../../infrastructure/state/connected-property";
4
4
  import { IActivityHistoryGroup } from "../../../domain/model";
@@ -12,11 +12,27 @@ import styles from "./styles.css?inline";
12
12
  import { template } from "./template";
13
13
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
14
14
 
15
+ const createZIndexStyles = (max: number) => {
16
+ let styles = "";
17
+ for (let i = 0; i <= max; i++) {
18
+ styles += `.zIndex${i} { z-index: ${i} !important; }\n`;
19
+ }
20
+ return styles;
21
+ };
22
+
15
23
  //@ts-ignore
16
24
  @customElement("activity-history-timeline")
17
25
  export class ActivityHistoryTimeline extends LitElement {
18
26
  render() {
19
- return html`${template(this)}`;
27
+ const maxIndex = this.historyGroups?.length ?? 0;
28
+ const dynamicStyles = createZIndexStyles(maxIndex);
29
+
30
+ return html`
31
+ <style>
32
+ ${unsafeCSS(dynamicStyles)}
33
+ </style>
34
+ ${template(this)}
35
+ `;
20
36
  }
21
37
 
22
38
  static styles = css`
@@ -37,7 +53,8 @@ export class ActivityHistoryTimeline extends LitElement {
37
53
 
38
54
  _hasUpdatedOnce = false;
39
55
 
40
- firstUpdated() {
56
+ firstUpdated(_changeProps: PropertyValues) {
57
+ super.firstUpdated(_changeProps);
41
58
  this._hasUpdatedOnce = true;
42
59
  }
43
60
 
@@ -60,8 +60,8 @@
60
60
  display: flex;
61
61
  flex-direction: column;
62
62
  gap: 16px;
63
- .item {
64
- border-bottom: var(--dss-border-width-sm) solid va(--color-neutral-200);
63
+ .item[has-divider] {
64
+ border-bottom: var(--dss-border-width-sm) solid var(--color-neutral-200);
65
65
  &:last-of-type {
66
66
  border: none;
67
67
  }
@@ -71,6 +71,10 @@
71
71
  display: flex;
72
72
  flex-direction: column;
73
73
  gap: 16px;
74
+ border-bottom: var(--dss-border-width-sm) solid var(--color-neutral-200);
75
+ &:last-of-type {
76
+ border: none;
77
+ }
74
78
  .diagnostics__header {
75
79
  display: flex;
76
80
  flex-direction: row;
@@ -80,8 +84,8 @@
80
84
  .diagnostics__items {
81
85
  display: flex;
82
86
  flex-direction: column;
83
- .item {
84
- border-bottom: var(--dss-border-width-sm) solid va(--color-neutral-200);
87
+ .item[has-divider] {
88
+ border-bottom: var(--dss-border-width-sm) solid var(--color-neutral-200);
85
89
  &:last-of-type {
86
90
  border: none;
87
91
  }
@@ -1,11 +1,11 @@
1
1
  import { html, nothing } from "lit";
2
2
  import { ActivityHistoryTimeline } from "./activity-history-timeline";
3
3
  import { repeat } from "lit/directives/repeat.js";
4
- import { IEntityDescription } from "@primaria/plugins-core";
5
4
  import { format } from "date-fns";
6
5
  import notFound from "../../../../../../UI/images/not-found.svg";
7
6
  import { ifDefined } from "lit/directives/if-defined.js";
8
7
  import {
8
+ IActivityHistoryDiagnostic,
9
9
  IActivityHistoryGroup,
10
10
  IActivityHistoryItem,
11
11
  IActivityHistoryItemWithComponent,
@@ -13,7 +13,7 @@ import {
13
13
  } from "../../../domain/model";
14
14
  import { translate } from "../../../../localization";
15
15
  import { virtualize } from "@lit-labs/virtualizer/virtualize.js";
16
- import { shouldShowRole } from "../../../domain/business-rules";
16
+ import { hasItemDivider, shouldShowRole } from "../../../domain/business-rules";
17
17
 
18
18
  export const template = (props: ActivityHistoryTimeline) => {
19
19
  if (!props._hasUpdatedOnce) {
@@ -27,15 +27,15 @@ export const template = (props: ActivityHistoryTimeline) => {
27
27
  <div class="virtualizer">
28
28
  ${virtualize({
29
29
  items: props.historyGroups,
30
- renderItem: (itemGroup: IActivityHistoryGroup) => html`
31
- <div class="visit" data-date=${ifDefined(itemGroup.items[0]?.date || itemGroup.subGroups[0]?.items[0]?.date)}>
30
+ renderItem: (itemGroup: IActivityHistoryGroup, index: number) => html`
31
+ <div class="visit zIndex${props.historyGroups.length - index}" data-date=${ifDefined(itemGroup.items[0]?.date || itemGroup.subGroups[0]?.items[0]?.date)}>
32
32
  ${visitHeaderTemplate(props, itemGroup.items[0] || itemGroup.subGroups[0]?.items[0])}
33
33
  <div class="visit__items">
34
34
  ${repeat(
35
35
  itemGroup.items,
36
36
  (item) => item.id,
37
37
  (item: IActivityHistoryItemWithComponent) =>
38
- html`<div class="item">${item.component}</div> `,
38
+ html`<div class="item" ?has-divider=${hasItemDivider(item, itemGroup.items as IActivityHistoryItemWithComponent[])}>${item.component}</div> `,
39
39
  )}
40
40
  ${repeat(
41
41
  itemGroup.subGroups,
@@ -47,7 +47,7 @@ export const template = (props: ActivityHistoryTimeline) => {
47
47
  subGroup.items,
48
48
  (item) => item.id,
49
49
  (item: IActivityHistoryItemWithComponent) =>
50
- html`<div class="item">${item?.component}</div>`,
50
+ html`<div class="item" ?has-divider=${hasItemDivider(item, subGroup.items as IActivityHistoryItemWithComponent[])}>${item?.component}</div>`,
51
51
  )}
52
52
  </div>
53
53
  </div>
@@ -114,13 +114,13 @@ const diagnosticHeaderTemplate = (item: IActivityHistoryItem | undefined) =>
114
114
 
115
115
  ${item.diagnostics
116
116
  .filter(
117
- (diagnostic: IEntityDescription) =>
118
- diagnostic.description != null && diagnostic.description.trim() !== "",
117
+ (diagnostic: IActivityHistoryDiagnostic) =>
118
+ diagnostic.descripcio != null && diagnostic.descripcio.trim() !== "",
119
119
  )
120
120
  .map(
121
- (diagnostic: IEntityDescription) =>
121
+ (diagnostic: IActivityHistoryDiagnostic) =>
122
122
  html`<dss-badge text=${
123
- diagnostic.description?.toUpperCase() as string
123
+ diagnostic.descripcio?.toUpperCase() as string
124
124
  } state="info" size="sm" outlined></dss-badge>`,
125
125
  )}
126
126
  </div>
@@ -1,8 +1,8 @@
1
- import { IEntityDescription } from "@primaria/plugins-core";
2
1
  import {
3
2
  IActivityHistoryItem,
4
3
  IActivityHistoryGroup,
5
4
  IActivityHistorySubGroup,
5
+ IActivityHistoryDiagnostic,
6
6
  } from "../../domain/model";
7
7
 
8
8
  const isSameVisit = (item1: IActivityHistoryItem, item2: IActivityHistoryItem): boolean => {
@@ -26,13 +26,16 @@ const withinEightHours = (date1: Date, date2: Date): boolean => {
26
26
  return timeDifference <= 8 * 60 * 60 * 1000; // 8 hours in milliseconds
27
27
  };
28
28
 
29
- const areSameDiagnostics = (diag1: IEntityDescription[], diag2: IEntityDescription[]): boolean => {
29
+ const areSameDiagnostics = (
30
+ diag1: IActivityHistoryDiagnostic[],
31
+ diag2: IActivityHistoryDiagnostic[],
32
+ ): boolean => {
30
33
  if (diag1.length !== diag2.length) {
31
34
  return false;
32
35
  }
33
36
 
34
- const sortedDiag1 = diag1.map((d) => d.id).sort();
35
- const sortedDiag2 = diag2.map((d) => d.id).sort();
37
+ const sortedDiag1 = diag1.map((d) => d.codi).sort();
38
+ const sortedDiag2 = diag2.map((d) => d.codi).sort();
36
39
 
37
40
  return sortedDiag1.every((id, index) => id === sortedDiag2[index]);
38
41
  };
package/src/locales.ts CHANGED
@@ -36,6 +36,7 @@ export const locales = {
36
36
  toggleMenuClose: "Tancar menú",
37
37
  toggleMenuOpen: "Expandir menú",
38
38
  askExit: "Atenció, vols sortir igualment?",
39
+ finalizeVisit: "Finalitzar visita",
39
40
  },
40
41
  clinicalMonitoring: {
41
42
  title: "Seguiment clínic",
@@ -1,255 +0,0 @@
1
- import { shellApi } from "./api/api";
2
- import { registerPDFVisorMainView } from "./api/pdf-viewer-manager/handle-views";
3
- import { shellRegions } from "./api/region-manager/regions";
4
- import { pocTestEventsId } from "./constants";
5
- import { ExitShell } from "./features/exit/request";
6
- import { getPatientCip } from "./features/get-patient-cip/action";
7
- import { navigateToEcapWithoutClosingWithCip } from "./features/navigate-to-ecap/navigate-without-closing-and-with-cip";
8
- import { PrimariaNavItem } from "./UI/shared-components/primaria-nav-item/primaria-nav-item";
9
- import { PrimariaNavTreeMenu } from "./UI/shared-components/primaria-nav-tree-menu/primaria-nav-tree-menu";
10
-
11
- const registerUpperNavMenuViews = () => {
12
- shellApi.regionManager.registerView(shellRegions.navigationMenu, {
13
- id: "landing",
14
- factory: () => {
15
- const menuItem = new PrimariaNavItem({
16
- icon: "home",
17
- label: "Pàgina inici",
18
- callbackFn: () => {
19
- shellApi.broker.send(new ExitShell());
20
- },
21
- });
22
- return Promise.resolve(menuItem);
23
- },
24
- sortHint: "0010",
25
- });
26
-
27
- shellApi.regionManager.registerView(shellRegions.navigationMenu, {
28
- id: "processes",
29
- factory: () => {
30
- const menuItem = new PrimariaNavTreeMenu({
31
- icon: "account_tree",
32
- label: "Vies clíniques",
33
- actionMenuItems: [
34
- {
35
- icon: "open_in_new",
36
- label: "ARES",
37
- callbackFn: async () => {
38
- navigateToEcapWithoutClosingWithCip("PROCES_ATENCIO");
39
- },
40
- },
41
- {
42
- icon: "open_in_new",
43
- label: "Procés Obstètric",
44
- callbackFn: (): void => {},
45
- },
46
- {
47
- icon: "open_in_new",
48
- label: "Nen sa",
49
- callbackFn: async () => {
50
- navigateToEcapWithoutClosingWithCip("NEN_SA");
51
- },
52
- },
53
- {
54
- icon: "open_in_new",
55
- label: "Odontologia",
56
- callbackFn: async () => {
57
- navigateToEcapWithoutClosingWithCip("ODONTOLOGO");
58
- },
59
- },
60
- {
61
- icon: "open_in_new",
62
- label: "Situació d'especial cura",
63
- callbackFn: async () => {
64
- navigateToEcapWithoutClosingWithCip("SIT_ESPEC_CURA_DEV");
65
- },
66
- },
67
- ],
68
- });
69
- return Promise.resolve(menuItem);
70
- },
71
- sortHint: "0040",
72
- });
73
- shellApi.regionManager.registerView(shellRegions.navigationMenu, {
74
- id: "unique-petition",
75
- factory: () => {
76
- const menuItem = new PrimariaNavTreeMenu({
77
- icon: "playlist_add",
78
- label: "Petitori",
79
- actionMenuItems: [
80
- {
81
- icon: "open_in_new",
82
- label: "Analítiques",
83
- callbackFn: async (): Promise<void> => {
84
- navigateToEcapWithoutClosingWithCip("LABORATORI");
85
- },
86
- },
87
- {
88
- icon: "open_in_new",
89
- label: "Ordres Clíniques",
90
- callbackFn: async (): Promise<void> => {
91
- navigateToEcapWithoutClosingWithCip("RESULT_OC");
92
- },
93
- },
94
- {
95
- icon: "open_in_new",
96
- label: "OC Exprés",
97
- callbackFn: async (): Promise<void> => {
98
- navigateToEcapWithoutClosingWithCip("OC_EXPRES");
99
- },
100
- },
101
- {
102
- icon: "open_in_new",
103
- label: "Sol·licitud de trasllat",
104
- callbackFn: async (): Promise<void> => {
105
- navigateToEcapWithoutClosingWithCip("TRANSPORT");
106
- },
107
- },
108
- ],
109
- });
110
- return Promise.resolve(menuItem);
111
- },
112
- sortHint: "0050",
113
- });
114
- shellApi.regionManager.registerView(shellRegions.navigationMenu, {
115
- id: "results-reports",
116
- factory: () => {
117
- const menuItem = new PrimariaNavTreeMenu({
118
- icon: "folder_shared",
119
- label: "Documents",
120
- actionMenuItems: [
121
- {
122
- icon: "open_in_new",
123
- label: "Resultats i informes ECAP",
124
- callbackFn: (): void => {},
125
- },
126
- {
127
- icon: "open_in_new",
128
- label: "Documents usuari",
129
- callbackFn: async (): Promise<void> => {
130
- setTimeout(() => {
131
- navigateToEcapWithoutClosingWithCip("CRIDA_DOCS_USU");
132
- }, 0);
133
- },
134
- },
135
- ],
136
- });
137
- return Promise.resolve(menuItem);
138
- },
139
- sortHint: "0070",
140
- });
141
- shellApi.regionManager.registerView(shellRegions.navigationMenu, {
142
- id: "communication",
143
- factory: () => {
144
- const menuItem = new PrimariaNavTreeMenu({
145
- icon: "3p",
146
- label: "Comunicació",
147
- actionMenuItems: [
148
- {
149
- icon: "open_in_new",
150
- label: "SMS",
151
- callbackFn: async (): Promise<void> => {
152
- const CIP = await getPatientCip(shellApi);
153
- shellApi.ecapEventManager.publish("MISSATGES_DEV", "NO_TANCAR", {
154
- CIP: CIP || "",
155
- TipusMissatge: "SMS",
156
- });
157
- },
158
- },
159
- {
160
- icon: "open_in_new",
161
- label: "Econsulta",
162
- callbackFn: (): void => {},
163
- },
164
- {
165
- icon: "open_in_new",
166
- label: "Mail",
167
- callbackFn: (): void => {},
168
- },
169
- {
170
- icon: "open_in_new",
171
- label: "Veu IP",
172
- callbackFn: async (): Promise<void> => {
173
- navigateToEcapWithoutClosingWithCip("VOIP");
174
- },
175
- },
176
- {
177
- icon: "open_in_new",
178
- label: "Videoconsulta",
179
- callbackFn: (): void => {},
180
- },
181
- ],
182
- });
183
- return Promise.resolve(menuItem);
184
- },
185
- sortHint: "0120",
186
- });
187
- shellApi.regionManager.registerView(shellRegions.navigationMenu, {
188
- id: "visits",
189
- factory: () => {
190
- const menuItem = new PrimariaNavItem({
191
- icon: "event",
192
- label: "Visites",
193
- callbackFn: async (): Promise<void> => {
194
- navigateToEcapWithoutClosingWithCip("CONSULTA_VISITES");
195
- },
196
- });
197
- return Promise.resolve(menuItem);
198
- },
199
- sortHint: "0130",
200
- });
201
-
202
- shellApi.regionManager.registerView(shellRegions.navigationMenu, {
203
- id: "it",
204
- factory: () => {
205
- const menuItem = new PrimariaNavItem({
206
- icon: "add_box",
207
- label: "IT",
208
- callbackFn: async (): Promise<void> => {
209
- navigateToEcapWithoutClosingWithCip("REV_IT");
210
- },
211
- });
212
- return Promise.resolve(menuItem);
213
- },
214
- });
215
-
216
- shellApi.regionManager.registerView(shellRegions.navigationMenu, {
217
- id: "variable activities",
218
- factory: () => {
219
- const menuItem = new PrimariaNavItem({
220
- icon: "add_box",
221
- label: "Activitats variables",
222
- callbackFn: async () => {
223
- navigateToEcapWithoutClosingWithCip("SIA_DEV");
224
- },
225
- });
226
- return Promise.resolve(menuItem);
227
- },
228
- });
229
- };
230
-
231
- const registerLowerNavMenuViews = () => {
232
- shellApi.regionManager.registerView(shellRegions.navigationLowerLeftMenu, {
233
- id: "configuration-center",
234
- factory: () => {
235
- const menuItem = new PrimariaNavItem({
236
- icon: "settings",
237
- label: "Centre de configuració",
238
- callbackFn: () => {
239
- // shellApi.regionManager.activateView(shellRegions.main, "");
240
- },
241
- });
242
- return Promise.resolve(menuItem);
243
- },
244
- });
245
- };
246
-
247
- const registerMainViews = () => {
248
- registerPDFVisorMainView();
249
- };
250
-
251
- export const useInternalViews = () => {
252
- registerMainViews();
253
- registerUpperNavMenuViews();
254
- registerLowerNavMenuViews();
255
- };