@bahmni/clinical-app 0.0.1-dev.311 → 0.0.1-dev.312

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/App.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAUA,OAAO,KAA8B,MAAM,OAAO,CAAC;AASnD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EA2CxB,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA8B,MAAM,OAAO,CAAC;AASnD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EA6CxB,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
- import { jsx as r, jsxs as _, Fragment as x } from "react/jsx-runtime";
2
- import { r as G, u as W, n as Y, C as J, D as X, m as Z, _ as ee, a as te } from "./index-dSsHmnAx.js";
1
+ import { jsx as r, jsxs as h, Fragment as x } from "react/jsx-runtime";
2
+ import { n as G, u as W, o as Y, U as J, a as X, g as Z, O as ee, h as te } from "./index-b8sno1-Q.js";
3
3
  import { useQuery as ae } from "@tanstack/react-query";
4
- import { useState as l, useCallback as h, useEffect as N, useMemo as p } from "react";
4
+ import { useState as l, useCallback as _, useEffect as N, useMemo as p } from "react";
5
5
  const ne = "DocumentsTable-module_documentsTableBody__6iR3w", oe = "DocumentsTable-module_viewAttachmentsLink__aQ1on", re = "DocumentsTable-module_documentViewerContainer__F5m8D", de = "DocumentsTable-module_attachmentItem__17KA7", se = "DocumentsTable-module_attachmentCounter__WFiI3", me = "DocumentsTable-module_attachmentError__RI4U2", ce = "DocumentsTable-module_documentIframe__ptq5I", le = "DocumentsTable-module_documentImage__KQVgS", d = {
6
6
  documentsTableBody: ne,
7
7
  viewAttachmentsLink: oe,
@@ -33,17 +33,17 @@ const Te = [
33
33
  "attachments",
34
34
  "uploadedOn",
35
35
  "uploadedBy"
36
- ], _e = /\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i, B = (a) => a.attachments.length > 0 ? a.attachments : a.documentUrl ? [{ url: a.documentUrl, contentType: a.contentType }] : [], De = ({ config: a, encounterUuids: g }) => {
37
- const [s, w] = l(!1), [o, U] = l(
36
+ ], he = /\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i, B = (a) => a.attachments.length > 0 ? a.attachments : a.documentUrl ? [{ url: a.documentUrl, contentType: a.contentType }] : [], Oe = ({ config: a, encounterUuids: g }) => {
37
+ const [s, U] = l(!1), [o, w] = l(
38
38
  null
39
- ), [$, C] = l(
39
+ ), [$, D] = l(
40
40
  /* @__PURE__ */ new Set()
41
- ), E = G(), { t: n } = W(), { addNotification: L } = Y(), k = Number(a?.pageSize) || 5, [I, O] = l(1), [u, V] = l(k), [F, A] = l(void 0), M = h((e) => {
42
- U(e), w(!0);
43
- }, []), H = h(() => {
44
- w(!1), U(null), C(/* @__PURE__ */ new Set());
45
- }, []), v = h((e) => {
46
- C((t) => new Set(t).add(e));
41
+ ), E = G(), { t: n } = W(), { addNotification: M } = Y(), k = Number(a?.pageSize) || 5, [I, C] = l(1), [u, V] = l(k), [F, A] = l(void 0), L = _((e) => {
42
+ w(e), U(!0);
43
+ }, []), H = _(() => {
44
+ U(!1), w(null), D(/* @__PURE__ */ new Set());
45
+ }, []), v = _((e) => {
46
+ D((t) => new Set(t).add(e));
47
47
  }, []), { data: i, isLoading: q, isError: b, error: y } = ae({
48
48
  queryKey: [
49
49
  "documents",
@@ -63,14 +63,14 @@ const Te = [
63
63
  N(() => {
64
64
  i && A(i.total);
65
65
  }, [i]), N(() => {
66
- O(1), A(void 0);
66
+ C(1), A(void 0);
67
67
  }, [E]), N(() => {
68
- b && L({
68
+ b && M({
69
69
  title: n("ERROR_DEFAULT_TITLE"),
70
70
  message: y?.message ?? "",
71
71
  type: "error"
72
72
  });
73
- }, [b, y, L, n]), N(() => {
73
+ }, [b, y, M, n]), N(() => {
74
74
  const e = new AbortController();
75
75
  return (async () => {
76
76
  if (!s || !o) return;
@@ -86,27 +86,27 @@ const Te = [
86
86
  f instanceof Error && f.name !== "AbortError" && t.add(c);
87
87
  }
88
88
  }
89
- e.signal.aborted || C(t);
89
+ e.signal.aborted || D(t);
90
90
  })(), () => e.abort();
91
91
  }, [s, o]);
92
- const j = h(
92
+ const j = _(
93
93
  (e, t) => {
94
- t !== u ? (V(t), O(1), A(void 0)) : O(e);
94
+ t !== u ? (V(t), C(1), A(void 0)) : C(e);
95
95
  },
96
96
  [u]
97
- ), D = p(
97
+ ), O = p(
98
98
  () => a?.fields ?? Te,
99
99
  [a?.fields]
100
- ), P = p(() => [...i?.documents ?? []].sort((e, t) => !e.uploadedOn && !t.uploadedOn ? 0 : e.uploadedOn ? t.uploadedOn ? new Date(t.uploadedOn).getTime() - new Date(e.uploadedOn).getTime() : -1 : 1), [i]), z = p(() => ie(D, n), [D, n]), K = p(
101
- () => D.map((e) => ({
100
+ ), P = p(() => [...i?.documents ?? []].sort((e, t) => !e.uploadedOn && !t.uploadedOn ? 0 : e.uploadedOn ? t.uploadedOn ? new Date(t.uploadedOn).getTime() - new Date(e.uploadedOn).getTime() : -1 : 1), [i]), z = p(() => ie(O, n), [O, n]), K = p(
101
+ () => O.map((e) => ({
102
102
  key: e,
103
103
  sortable: e !== "attachments"
104
104
  })),
105
- [D]
105
+ [O]
106
106
  ), T = p(
107
107
  () => o ? B(o) : [],
108
108
  [o]
109
- ), Q = h(
109
+ ), Q = _(
110
110
  (e, t) => {
111
111
  switch (t) {
112
112
  case "documentIdentifier":
@@ -125,7 +125,7 @@ const Te = [
125
125
  return e.attachments.length > 0 || e.documentUrl ? /* @__PURE__ */ r(
126
126
  X,
127
127
  {
128
- onClick: () => M(e),
128
+ onClick: () => L(e),
129
129
  className: d.viewAttachmentsLink,
130
130
  "data-testid": `view-attachments-${e.id}`,
131
131
  children: n("DOCUMENTS_VIEW_ATTACHMENTS")
@@ -135,9 +135,9 @@ const Te = [
135
135
  return null;
136
136
  }
137
137
  },
138
- [M, n]
138
+ [L, n]
139
139
  );
140
- return /* @__PURE__ */ _(x, { children: [
140
+ return /* @__PURE__ */ h(x, { children: [
141
141
  /* @__PURE__ */ r("div", { "data-testid": "documents-table", children: /* @__PURE__ */ r(
142
142
  ee,
143
143
  {
@@ -169,14 +169,14 @@ const Te = [
169
169
  size: "lg",
170
170
  testId: "document-view-modal",
171
171
  children: /* @__PURE__ */ r("div", { className: d.documentViewerContainer, children: T.map((e, t) => {
172
- const m = R(e.url), c = e.contentType?.toLowerCase().includes("pdf"), S = (e.contentType?.toLowerCase().includes("image") ?? !1) || _e.test(e.url ?? ""), f = $.has(t);
173
- return m === "#" || f ? /* @__PURE__ */ _(
172
+ const m = R(e.url), c = e.contentType?.toLowerCase().includes("pdf"), S = (e.contentType?.toLowerCase().includes("image") ?? !1) || he.test(e.url ?? ""), f = $.has(t);
173
+ return m === "#" || f ? /* @__PURE__ */ h(
174
174
  "div",
175
175
  {
176
176
  className: d.attachmentError,
177
177
  "data-testid": `attachment-error-${t}`,
178
178
  children: [
179
- T.length > 1 && /* @__PURE__ */ _("p", { className: d.attachmentCounter, children: [
179
+ T.length > 1 && /* @__PURE__ */ h("p", { className: d.attachmentCounter, children: [
180
180
  t + 1,
181
181
  "/",
182
182
  T.length
@@ -185,13 +185,13 @@ const Te = [
185
185
  ]
186
186
  },
187
187
  `${o.id}-${e.url}`
188
- ) : /* @__PURE__ */ _(
188
+ ) : /* @__PURE__ */ h(
189
189
  "div",
190
190
  {
191
191
  className: d.attachmentItem,
192
192
  "data-testid": `attachment-item-${t}`,
193
193
  children: [
194
- T.length > 1 && /* @__PURE__ */ _("p", { className: d.attachmentCounter, children: [
194
+ T.length > 1 && /* @__PURE__ */ h("p", { className: d.attachmentCounter, children: [
195
195
  t + 1,
196
196
  "/",
197
197
  T.length
@@ -223,5 +223,5 @@ const Te = [
223
223
  ] });
224
224
  };
225
225
  export {
226
- De as default
226
+ Oe as default
227
227
  };
@@ -0,0 +1,234 @@
1
+ import { jsx as i, jsxs as re, Fragment as ae } from "react/jsx-runtime";
2
+ import { u as te, n as oe, x as se, j as ne, B as de, F as ie, P as le, b as ue, D as q, g as me, a as ce, O as k, w as fe, v as ye, h as he, Q as be, k as pe } from "./index-b8sno1-Q.js";
3
+ import { useQueryClient as ge, useQuery as h } from "@tanstack/react-query";
4
+ import { useState as j, useMemo as d, useCallback as b } from "react";
5
+ const Ne = "FormsTable-module_formsTableBody__SvGha", Oe = "FormsTable-module_customAccordianItem__isszs", M = {
6
+ formsTableBody: Ne,
7
+ customAccordianItem: Oe
8
+ }, Ae = (m) => m ? m.extension?.find(
9
+ (l) => l.url === pe
10
+ )?.valueString : void 0, Ie = ({
11
+ episodeOfCareUuids: m,
12
+ encounterUuids: l,
13
+ config: w
14
+ }) => {
15
+ const { t: n } = te(), c = oe(), [f, T] = j(!1), [o, v] = j(null), {
16
+ numberOfVisits: x,
17
+ hideThumbnail: K = !1,
18
+ forms: y
19
+ } = w ?? {}, F = se(
20
+ m,
21
+ l
22
+ ), Q = ge(), {
23
+ data: I = [],
24
+ isLoading: B,
25
+ isError: E,
26
+ error: V,
27
+ refetch: H
28
+ } = h({
29
+ queryKey: ["forms", c, m],
30
+ queryFn: () => ne(c, void 0, x),
31
+ enabled: !!c && !F
32
+ }), L = d(() => {
33
+ let e = I;
34
+ return l && l.length > 0 && (e = e.filter(
35
+ (r) => l.includes(r.encounterUuid)
36
+ )), Array.isArray(y) && y.length > 0 && (e = e.filter(
37
+ (r) => y.some((a) => a.toLowerCase() === r.formName.toLowerCase())
38
+ )), e;
39
+ }, [I, l, y]), { data: D = [] } = h({
40
+ queryKey: ["observationForms"],
41
+ queryFn: () => de()
42
+ }), S = b(
43
+ (e) => D.find((r) => r.name === e)?.uuid,
44
+ [D]
45
+ ), p = d(() => {
46
+ if (o)
47
+ return S(o.formName);
48
+ }, [o, S]), {
49
+ data: u,
50
+ isLoading: $,
51
+ isError: z,
52
+ error: g
53
+ } = h({
54
+ queryKey: ["formMetadata", p],
55
+ queryFn: () => ie(p),
56
+ enabled: !!p && f
57
+ }), {
58
+ data: N,
59
+ isLoading: G,
60
+ isError: P,
61
+ error: O
62
+ } = h({
63
+ queryKey: ["formsEncounterFHIR", o?.encounterUuid],
64
+ queryFn: () => le(o.encounterUuid),
65
+ enabled: !!o?.encounterUuid && f
66
+ });
67
+ ue(
68
+ (e) => {
69
+ e.patientUUID === c && e.updatedConcepts.size > 0 && (H(), Q.invalidateQueries({ queryKey: ["formsEncounterFHIR"] }));
70
+ },
71
+ [c]
72
+ );
73
+ const Y = d(() => !N?.entry || !o?.formName ? [] : N.entry.filter((e) => e.resource?.resourceType === "Observation").map((e) => e.resource).filter((e) => {
74
+ const r = Ae(e);
75
+ return !r || r.includes(o.formName);
76
+ }), [N, o?.formName]), J = d(() => {
77
+ if (!u?.schema) return;
78
+ const e = [], r = (a) => {
79
+ (a ?? []).forEach((s) => {
80
+ const t = s;
81
+ t.id != null && e.push(String(t.id)), t.controls && r(t.controls);
82
+ });
83
+ };
84
+ return r(
85
+ u.schema.controls ?? []
86
+ ), e.length > 0 ? e : void 0;
87
+ }, [u]), W = d(() => {
88
+ if (!u?.schema) return;
89
+ const e = {}, r = (a, s) => {
90
+ for (const t of a)
91
+ if (t.type === "section") {
92
+ const A = t.label?.value ?? "Section";
93
+ r(t.controls ?? [], A);
94
+ } else
95
+ t.id != null && s && (e[String(t.id)] = s), t.controls && r(t.controls, s);
96
+ };
97
+ return r(
98
+ u.schema.controls ?? [],
99
+ null
100
+ ), Object.keys(e).length > 0 ? e : void 0;
101
+ }, [u]), X = d(() => {
102
+ if (g)
103
+ return q(g).message;
104
+ if (O)
105
+ return q(O).message;
106
+ }, [g, O]), _ = d(
107
+ () => [
108
+ { key: "recordedOn", header: n("RECORDED_ON") },
109
+ { key: "recordedBy", header: n("RECORDED_BY") }
110
+ ],
111
+ [n]
112
+ ), Z = d(
113
+ () => [
114
+ { key: "recordedOn", sortable: !0 },
115
+ { key: "recordedBy", sortable: !0 }
116
+ ],
117
+ []
118
+ ), C = d(() => {
119
+ const e = L.reduce(
120
+ (r, a) => {
121
+ const s = a.formName;
122
+ r[s] ??= [];
123
+ const t = a.providers.map((A) => A.providerName).filter(Boolean).join(", ");
124
+ return r[s].push({
125
+ id: a.encounterUuid,
126
+ formName: a.formName,
127
+ recordedOn: me(a.encounterDateTime, n, !0).formattedResult,
128
+ recordedBy: t ?? "--",
129
+ encounterDateTime: a.encounterDateTime,
130
+ encounterUuid: a.encounterUuid
131
+ }), r;
132
+ },
133
+ {}
134
+ );
135
+ return Object.entries(e).map(
136
+ ([r, a]) => ({
137
+ formName: r,
138
+ records: a.sort(
139
+ (s, t) => t.encounterDateTime - s.encounterDateTime
140
+ )
141
+ })
142
+ ).sort((r, a) => r.formName.localeCompare(a.formName));
143
+ }, [L, n]), R = b((e) => {
144
+ v(e), T(!0);
145
+ }, []), ee = b(() => {
146
+ T(!1), v(null);
147
+ }, []), U = b(
148
+ (e, r) => {
149
+ switch (r) {
150
+ case "recordedOn":
151
+ return /* @__PURE__ */ i(ce, { onClick: () => R(e), children: e.recordedOn });
152
+ case "recordedBy":
153
+ return e.recordedBy;
154
+ default:
155
+ return null;
156
+ }
157
+ },
158
+ [R]
159
+ );
160
+ return /* @__PURE__ */ re(ae, { children: [
161
+ /* @__PURE__ */ i("div", { id: "forms-table", "data-testid": "forms-table", children: B || E || C.length === 0 || F ? /* @__PURE__ */ i(
162
+ k,
163
+ {
164
+ headers: _,
165
+ ariaLabel: n("FORMS_HEADING"),
166
+ rows: [],
167
+ loading: B,
168
+ errorStateMessage: E ? V?.message : void 0,
169
+ emptyStateMessage: n("FORMS_UNAVAILABLE"),
170
+ renderCell: U,
171
+ className: M.formsTableBody,
172
+ dataTestId: "forms-table"
173
+ }
174
+ ) : /* @__PURE__ */ i(fe, { align: "start", children: C.map((e, r) => {
175
+ const { formName: a, records: s } = e;
176
+ return /* @__PURE__ */ i(
177
+ ye,
178
+ {
179
+ title: a,
180
+ className: M.customAccordianItem,
181
+ testId: `accordian-title-${a}`,
182
+ open: r === 0,
183
+ children: /* @__PURE__ */ i(
184
+ k,
185
+ {
186
+ headers: _,
187
+ ariaLabel: n("FORMS_HEADING"),
188
+ rows: s,
189
+ loading: !1,
190
+ errorStateMessage: "",
191
+ sortable: Z,
192
+ emptyStateMessage: n("FORMS_UNAVAILABLE"),
193
+ renderCell: U,
194
+ className: M.formsTableBody,
195
+ dataTestId: `forms-table-${a}`
196
+ }
197
+ )
198
+ },
199
+ a
200
+ );
201
+ }) }) }),
202
+ f && o && /* @__PURE__ */ i(
203
+ he,
204
+ {
205
+ id: "modalIdForActionAreaLayout",
206
+ portalId: "main-display-area",
207
+ open: f,
208
+ onRequestClose: ee,
209
+ modalHeading: o.formName,
210
+ modalLabel: `${o.recordedOn} | ${o.recordedBy}`,
211
+ passiveModal: !0,
212
+ size: "md",
213
+ testId: "form-details-modal",
214
+ children: /* @__PURE__ */ i(
215
+ be,
216
+ {
217
+ observations: Y,
218
+ isLoading: $ || G,
219
+ isError: z || P,
220
+ errorMessage: X,
221
+ emptyStateMessage: n("NO_FORM_DATA_AVAILABLE"),
222
+ testIdPrefix: o.formName,
223
+ hideThumbnail: K,
224
+ controlOrder: J,
225
+ sectionMap: W
226
+ }
227
+ )
228
+ }
229
+ )
230
+ ] });
231
+ };
232
+ export {
233
+ Ie as default
234
+ };
@@ -1,25 +1,25 @@
1
- import { c, T as l, P as m, a as u, D as v, Q as i } from "./YPM2AS64-yTXx0rtu.js";
2
- import { j as d, k as f, o as e } from "./index-dSsHmnAx.js";
1
+ import { c, T as l, P as m, a as i, D as u, Q as v } from "./YPM2AS64-CIinz4Bh.js";
2
+ import { i as d, l as f, m as e } from "./index-b8sno1-Q.js";
3
3
  var p = (a) => {
4
- const [r, o] = c({
4
+ const [r, t] = c({
5
5
  prefix: "TanstackQueryDevtools"
6
6
  }), n = d(), s = f(() => {
7
- const t = r.theme_preference || l;
8
- return t !== "system" ? t : n();
7
+ const o = r.theme_preference || l;
8
+ return o !== "system" ? o : n();
9
9
  });
10
- return e(i.Provider, {
10
+ return e(v.Provider, {
11
11
  value: a,
12
12
  get children() {
13
13
  return e(m, {
14
14
  localStore: r,
15
- setLocalStore: o,
15
+ setLocalStore: t,
16
16
  get children() {
17
- return e(u.Provider, {
17
+ return e(i.Provider, {
18
18
  value: s,
19
19
  get children() {
20
- return e(v, {
20
+ return e(u, {
21
21
  localStore: r,
22
- setLocalStore: o
22
+ setLocalStore: t
23
23
  });
24
24
  }
25
25
  });
@@ -1,5 +1,5 @@
1
- import { c as s, T as c, P as u, a as i, b as m, C as P, Q as d } from "./YPM2AS64-yTXx0rtu.js";
2
- import { j as v, k as C, o as e } from "./index-dSsHmnAx.js";
1
+ import { c as s, T as c, P as i, a as u, b as m, C as P, Q as d } from "./YPM2AS64-CIinz4Bh.js";
2
+ import { i as v, l as C, m as e } from "./index-b8sno1-Q.js";
3
3
  var h = (t) => {
4
4
  const [r, o] = s({
5
5
  prefix: "TanstackQueryDevtools"
@@ -10,12 +10,12 @@ var h = (t) => {
10
10
  return e(d.Provider, {
11
11
  value: t,
12
12
  get children() {
13
- return e(u, {
13
+ return e(i, {
14
14
  disabled: !0,
15
15
  localStore: r,
16
16
  setLocalStore: o,
17
17
  get children() {
18
- return e(i.Provider, {
18
+ return e(u.Provider, {
19
19
  value: l,
20
20
  get children() {
21
21
  return e(m, {