@bahmni/home-app 0.0.1-dev.312 → 0.0.1-dev.315

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.
@@ -1,5 +1,5 @@
1
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-BPWfnVa5.js";
2
+ import { n as G, u as W, o as Y, j as J, a as X, g as Z, O as ee, h as te } from "./index-D-1eXGIV.js";
3
3
  import { useQuery as ae } from "@tanstack/react-query";
4
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 = {
@@ -34,17 +34,17 @@ const Te = [
34
34
  "uploadedOn",
35
35
  "uploadedBy"
36
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(
37
+ const [s, w] = l(!1), [o, M] = l(
38
38
  null
39
39
  ), [$, D] = l(
40
40
  /* @__PURE__ */ new Set()
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());
41
+ ), E = G(), { t: n } = W(), { addNotification: U } = Y(), k = Number(a?.pageSize) || 5, [I, C] = l(1), [u, V] = l(k), [F, A] = l(void 0), L = _((e) => {
42
+ M(e), w(!0);
43
+ }, []), j = _(() => {
44
+ w(!1), M(null), D(/* @__PURE__ */ new Set());
45
45
  }, []), v = _((e) => {
46
46
  D((t) => new Set(t).add(e));
47
- }, []), { data: i, isLoading: q, isError: b, error: y } = ae({
47
+ }, []), { data: i, isLoading: H, isError: b, error: y } = ae({
48
48
  queryKey: [
49
49
  "documents",
50
50
  E,
@@ -65,12 +65,12 @@ const Te = [
65
65
  }, [i]), N(() => {
66
66
  C(1), A(void 0);
67
67
  }, [E]), N(() => {
68
- b && M({
68
+ b && U({
69
69
  title: n("ERROR_DEFAULT_TITLE"),
70
70
  message: y?.message ?? "",
71
71
  type: "error"
72
72
  });
73
- }, [b, y, M, n]), N(() => {
73
+ }, [b, y, U, n]), N(() => {
74
74
  const e = new AbortController();
75
75
  return (async () => {
76
76
  if (!s || !o) return;
@@ -89,7 +89,7 @@ const Te = [
89
89
  e.signal.aborted || D(t);
90
90
  })(), () => e.abort();
91
91
  }, [s, o]);
92
- const j = _(
92
+ const q = _(
93
93
  (e, t) => {
94
94
  t !== u ? (V(t), C(1), A(void 0)) : C(e);
95
95
  },
@@ -144,7 +144,7 @@ const Te = [
144
144
  headers: z,
145
145
  ariaLabel: n("DOCUMENTS_TABLE_HEADING"),
146
146
  rows: P,
147
- loading: q,
147
+ loading: H,
148
148
  errorStateMessage: b ? y?.message : null,
149
149
  sortable: K,
150
150
  emptyStateMessage: n("DOCUMENTS_NO_RECORDS"),
@@ -154,7 +154,7 @@ const Te = [
154
154
  pageSize: u,
155
155
  totalItems: F,
156
156
  page: I,
157
- onPageChange: j
157
+ onPageChange: q
158
158
  }
159
159
  ) }),
160
160
  s && o && /* @__PURE__ */ r(
@@ -163,7 +163,7 @@ const Te = [
163
163
  id: "modalIdForActionAreaLayout",
164
164
  portalId: "main-display-area",
165
165
  open: s,
166
- onRequestClose: H,
166
+ onRequestClose: j,
167
167
  modalHeading: o.documentIdentifier,
168
168
  passiveModal: !0,
169
169
  size: "lg",
@@ -0,0 +1,234 @@
1
+ import { jsx as i, jsxs as re, Fragment as oe } from "react/jsx-runtime";
2
+ import { u as ae, n as se, x as te, F as ne, P as de, B as ie, Z as le, b as ue, D as q, g as me, a as ce, O as w, w as fe, v as ye, h as he, Q as be, $ as ge } from "./index-D-1eXGIV.js";
3
+ import { useQueryClient as pe, useQuery as h } from "@tanstack/react-query";
4
+ import { useState as k, 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 === ge
10
+ )?.valueString : void 0, Te = ({
11
+ episodeOfCareUuids: m,
12
+ encounterUuids: l,
13
+ config: x
14
+ }) => {
15
+ const { t: n } = ae(), c = se(), [f, F] = k(!1), [s, v] = k(null), {
16
+ numberOfVisits: $,
17
+ hideThumbnail: H = !1,
18
+ forms: y
19
+ } = x ?? {}, I = te(
20
+ m,
21
+ l
22
+ ), K = pe(), {
23
+ data: T = [],
24
+ isLoading: B,
25
+ isError: E,
26
+ error: Q,
27
+ refetch: V
28
+ } = h({
29
+ queryKey: ["forms", c, m],
30
+ queryFn: () => ne(c, void 0, $),
31
+ enabled: !!c && !I
32
+ }), D = d(() => {
33
+ let e = T;
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((o) => o.toLowerCase() === r.formName.toLowerCase())
38
+ )), e;
39
+ }, [T, l, y]), { data: L = [] } = h({
40
+ queryKey: ["observationForms"],
41
+ queryFn: () => de()
42
+ }), S = b(
43
+ (e) => L.find((r) => r.name === e)?.uuid,
44
+ [L]
45
+ ), g = d(() => {
46
+ if (s)
47
+ return S(s.formName);
48
+ }, [s, S]), {
49
+ data: u,
50
+ isLoading: j,
51
+ isError: z,
52
+ error: p
53
+ } = h({
54
+ queryKey: ["formMetadata", g],
55
+ queryFn: () => ie(g),
56
+ enabled: !!g && f
57
+ }), {
58
+ data: N,
59
+ isLoading: G,
60
+ isError: P,
61
+ error: O
62
+ } = h({
63
+ queryKey: ["formsEncounterFHIR", s?.encounterUuid],
64
+ queryFn: () => le(s.encounterUuid),
65
+ enabled: !!s?.encounterUuid && f
66
+ });
67
+ ue(
68
+ (e) => {
69
+ e.patientUUID === c && e.updatedConcepts.size > 0 && (V(), K.invalidateQueries({ queryKey: ["formsEncounterFHIR"] }));
70
+ },
71
+ [c]
72
+ );
73
+ const Z = d(() => !N?.entry || !s?.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(s.formName);
76
+ }), [N, s?.formName]), Y = d(() => {
77
+ if (!u?.schema) return;
78
+ const e = [], r = (o) => {
79
+ (o ?? []).forEach((t) => {
80
+ const a = t;
81
+ a.id != null && e.push(String(a.id)), a.controls && r(a.controls);
82
+ });
83
+ };
84
+ return r(
85
+ u.schema.controls ?? []
86
+ ), e.length > 0 ? e : void 0;
87
+ }, [u]), J = d(() => {
88
+ if (!u?.schema) return;
89
+ const e = {}, r = (o, t) => {
90
+ for (const a of o)
91
+ if (a.type === "section") {
92
+ const A = a.label?.value ?? "Section";
93
+ r(a.controls ?? [], A);
94
+ } else
95
+ a.id != null && t && (e[String(a.id)] = t), a.controls && r(a.controls, t);
96
+ };
97
+ return r(
98
+ u.schema.controls ?? [],
99
+ null
100
+ ), Object.keys(e).length > 0 ? e : void 0;
101
+ }, [u]), W = d(() => {
102
+ if (p)
103
+ return q(p).message;
104
+ if (O)
105
+ return q(O).message;
106
+ }, [p, O]), _ = d(
107
+ () => [
108
+ { key: "recordedOn", header: n("RECORDED_ON") },
109
+ { key: "recordedBy", header: n("RECORDED_BY") }
110
+ ],
111
+ [n]
112
+ ), X = d(
113
+ () => [
114
+ { key: "recordedOn", sortable: !0 },
115
+ { key: "recordedBy", sortable: !0 }
116
+ ],
117
+ []
118
+ ), C = d(() => {
119
+ const e = D.reduce(
120
+ (r, o) => {
121
+ const t = o.formName;
122
+ r[t] ??= [];
123
+ const a = o.providers.map((A) => A.providerName).filter(Boolean).join(", ");
124
+ return r[t].push({
125
+ id: o.encounterUuid,
126
+ formName: o.formName,
127
+ recordedOn: me(o.encounterDateTime, n, !0).formattedResult,
128
+ recordedBy: a ?? "--",
129
+ encounterDateTime: o.encounterDateTime,
130
+ encounterUuid: o.encounterUuid
131
+ }), r;
132
+ },
133
+ {}
134
+ );
135
+ return Object.entries(e).map(
136
+ ([r, o]) => ({
137
+ formName: r,
138
+ records: o.sort(
139
+ (t, a) => a.encounterDateTime - t.encounterDateTime
140
+ )
141
+ })
142
+ ).sort((r, o) => r.formName.localeCompare(o.formName));
143
+ }, [D, n]), R = b((e) => {
144
+ v(e), F(!0);
145
+ }, []), ee = b(() => {
146
+ F(!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(oe, { children: [
161
+ /* @__PURE__ */ i("div", { id: "forms-table", "data-testid": "forms-table", children: B || E || C.length === 0 || I ? /* @__PURE__ */ i(
162
+ w,
163
+ {
164
+ headers: _,
165
+ ariaLabel: n("FORMS_HEADING"),
166
+ rows: [],
167
+ loading: B,
168
+ errorStateMessage: E ? Q?.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: o, records: t } = e;
176
+ return /* @__PURE__ */ i(
177
+ ye,
178
+ {
179
+ title: o,
180
+ className: M.customAccordianItem,
181
+ testId: `accordian-title-${o}`,
182
+ open: r === 0,
183
+ children: /* @__PURE__ */ i(
184
+ w,
185
+ {
186
+ headers: _,
187
+ ariaLabel: n("FORMS_HEADING"),
188
+ rows: t,
189
+ loading: !1,
190
+ errorStateMessage: "",
191
+ sortable: X,
192
+ emptyStateMessage: n("FORMS_UNAVAILABLE"),
193
+ renderCell: U,
194
+ className: M.formsTableBody,
195
+ dataTestId: `forms-table-${o}`
196
+ }
197
+ )
198
+ },
199
+ o
200
+ );
201
+ }) }) }),
202
+ f && s && /* @__PURE__ */ i(
203
+ he,
204
+ {
205
+ id: "modalIdForActionAreaLayout",
206
+ portalId: "main-display-area",
207
+ open: f,
208
+ onRequestClose: ee,
209
+ modalHeading: s.formName,
210
+ modalLabel: `${s.recordedOn} | ${s.recordedBy}`,
211
+ passiveModal: !0,
212
+ size: "md",
213
+ testId: "form-details-modal",
214
+ children: /* @__PURE__ */ i(
215
+ be,
216
+ {
217
+ observations: Z,
218
+ isLoading: j || G,
219
+ isError: z || P,
220
+ errorMessage: W,
221
+ emptyStateMessage: n("NO_FORM_DATA_AVAILABLE"),
222
+ testIdPrefix: s.formName,
223
+ hideThumbnail: H,
224
+ controlOrder: Y,
225
+ sectionMap: J
226
+ }
227
+ )
228
+ }
229
+ )
230
+ ] });
231
+ };
232
+ export {
233
+ Te as default
234
+ };
@@ -1,5 +1,5 @@
1
- import { c, T as l, P as m, a as u, D as v, Q as i } from "./YPM2AS64-CwPKOZhi.js";
2
- import { R as d, T as f, V as e } from "./index-BPWfnVa5.js";
1
+ import { c, T as l, P as m, a as u, D as v, Q as i } from "./YPM2AS64-BJtfTJL1.js";
2
+ import { T as d, U as f, V as e } from "./index-D-1eXGIV.js";
3
3
  var p = (a) => {
4
4
  const [r, t] = c({
5
5
  prefix: "TanstackQueryDevtools"
@@ -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-CwPKOZhi.js";
2
- import { R as v, T as C, V as e } from "./index-BPWfnVa5.js";
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-BJtfTJL1.js";
2
+ import { T as v, U as C, V as e } from "./index-D-1eXGIV.js";
3
3
  var h = (t) => {
4
4
  const [r, o] = s({
5
5
  prefix: "TanstackQueryDevtools"
@@ -1,12 +1,12 @@
1
- import { jsxs as I, jsx as u } from "react/jsx-runtime";
2
- import { n as K, o as q, u as N, $ as G, Z as Q, b as k, J as w, X as x, c as z, d as H, O as J, G as Y, E as M, Y as j, e as P, f as X, M as Z, S as W, z as ee } from "./index-BPWfnVa5.js";
1
+ import { jsxs as S, jsx as u } from "react/jsx-runtime";
2
+ import { n as V, o as k, u as N, I as q, k as G, b as Q, Y as x, J as z, X as w, c as H, O as J, K as Y, d as M, G as j, e as P, f as X, M as W, S as Z, z as ee } from "./index-D-1eXGIV.js";
3
3
  import { useQueries as te, useQuery as ae } from "@tanstack/react-query";
4
- import { useRef as se, useEffect as _, useMemo as O } from "react";
4
+ import { useRef as se, useEffect as $, useMemo as O } from "react";
5
5
  const D = (t, n, d, l, b, r) => {
6
6
  const a = j(t, n, b), s = a.value, o = P(s);
7
7
  let i = s;
8
8
  o === "Image" && (i = /* @__PURE__ */ u(
9
- Z,
9
+ W,
10
10
  {
11
11
  imageSrc: s,
12
12
  alt: s,
@@ -14,7 +14,7 @@ const D = (t, n, d, l, b, r) => {
14
14
  hideThumbnail: r
15
15
  }
16
16
  )), o === "Video" && (i = /* @__PURE__ */ u(
17
- W,
17
+ Z,
18
18
  {
19
19
  id: `${s}-video`,
20
20
  videoSrc: s,
@@ -23,7 +23,7 @@ const D = (t, n, d, l, b, r) => {
23
23
  )), o === "PDF" && (i = /* @__PURE__ */ u(ee, { id: `${s}-pdf`, src: s }));
24
24
  const m = b("OBSERVATIONS_RECORDED_BY", {
25
25
  provider: a.provider
26
- }), p = t.display, y = t.observationValue?.isAbnormal ? "abnormal-obs" : "obs", c = l ? `${l}-${y}-${p}-${d}-${n}` : `${y}-${p}-${d}-${n}`;
26
+ }), p = t.display, v = t.observationValue?.isAbnormal ? "abnormal-obs" : "obs", c = l ? `${l}-${v}-${p}-${d}-${n}` : `${v}-${p}-${d}-${n}`;
27
27
  return /* @__PURE__ */ u(
28
28
  X,
29
29
  {
@@ -61,7 +61,7 @@ const D = (t, n, d, l, b, r) => {
61
61
  }) => {
62
62
  const { t: l } = N(), b = (r, a, s) => {
63
63
  const o = Y(r.encounterDetails, l);
64
- return /* @__PURE__ */ I(
64
+ return /* @__PURE__ */ S(
65
65
  M,
66
66
  {
67
67
  title: o,
@@ -105,7 +105,7 @@ const D = (t, n, d, l, b, r) => {
105
105
  )
106
106
  }
107
107
  );
108
- }, ie = "Observations-module_observations__RKSyo", ne = "Observations-module_title__TJL3z", S = {
108
+ }, ie = "Observations-module_observations__RKSyo", ne = "Observations-module_title__TJL3z", I = {
109
109
  observations: ie,
110
110
  title: ne
111
111
  }, de = (t) => ["conceptUuid", t], le = (t, n) => ["observations", t, ...n], pe = ({ config: t }) => {
@@ -113,81 +113,81 @@ const D = (t, n, d, l, b, r) => {
113
113
  conceptNames: d = [],
114
114
  conceptUuid: l = [],
115
115
  hideThumbnail: b = !1
116
- } = n, r = se(/* @__PURE__ */ new Set()), a = K(), { addNotification: s } = q(), { t: o } = N(), i = te({
116
+ } = n, r = se(/* @__PURE__ */ new Set()), a = V(), { addNotification: s } = k(), { t: o } = N(), i = te({
117
117
  queries: d.map((e) => ({
118
118
  queryKey: de(e),
119
- queryFn: () => G(e),
119
+ queryFn: () => q(e),
120
120
  enabled: !!e
121
121
  }))
122
122
  });
123
- _(() => {
123
+ $(() => {
124
124
  i.forEach((e, h) => {
125
125
  if (e.isError && !r.current.has(h)) {
126
- const V = d[h];
126
+ const B = d[h];
127
127
  s({
128
128
  title: o("ERROR_DEFAULT_TITLE"),
129
- message: o("ERROR_FETCHING_CONCEPT", { conceptName: V }),
129
+ message: o("ERROR_FETCHING_CONCEPT", { conceptName: B }),
130
130
  type: "error"
131
131
  }), r.current.add(h);
132
132
  } else e.isError || r.current.delete(h);
133
133
  });
134
134
  }, [i, d]);
135
- const m = O(() => i.map((e) => e.data?.uuid).filter((e) => !!e), [i]), p = O(() => [.../* @__PURE__ */ new Set([...m, ...l])], [m, l]), y = O(() => d.length === 0 ? !0 : i.every((e) => !e.isLoading), [i, d.length]), {
135
+ const m = O(() => i.map((e) => e.data?.uuid).filter((e) => !!e), [i]), p = O(() => [.../* @__PURE__ */ new Set([...m, ...l])], [m, l]), v = O(() => d.length === 0 ? !0 : i.every((e) => !e.isLoading), [i, d.length]), {
136
136
  data: c,
137
137
  isLoading: F,
138
138
  isError: R,
139
139
  refetch: T
140
140
  } = ae({
141
141
  queryKey: le(a, p),
142
- queryFn: () => Q(a, p),
143
- enabled: !!a && p.length > 0 && y
142
+ queryFn: () => G(a, p),
143
+ enabled: !!a && p.length > 0 && v
144
144
  });
145
- k(
145
+ Q(
146
146
  (e) => {
147
147
  e.patientUUID === a && e.updatedConcepts.size > 0 && [...e.updatedConcepts.keys()].some(
148
148
  (h) => p.includes(h)
149
149
  ) && T();
150
150
  },
151
151
  [a, T]
152
- ), _(() => {
152
+ ), $(() => {
153
153
  R && s({
154
154
  title: o("ERROR_DEFAULT_TITLE"),
155
155
  message: o("ERROR_FETCHING_OBSERVATIONS"),
156
156
  type: "error"
157
157
  });
158
158
  }, [R]);
159
- const $ = O(() => {
159
+ const f = O(() => {
160
160
  if (!c) return [];
161
- const e = w(c), h = x(e);
162
- return z(h);
161
+ const e = x(c), h = z(e);
162
+ return w(h);
163
163
  }, [c]), L = [
164
164
  { key: "name", header: "name" },
165
165
  { key: "value", header: "value" },
166
166
  { key: "form", header: "form" }
167
- ], f = F || !y, g = R && y, A = (!c || c.entry?.length === 0 || p.length === 0) && y, C = g ? o("ERROR_FETCHING_OBSERVATIONS") : null, U = A ? o("NO_OBSERVATIONS_FOUND") : void 0, B = $.length > 0 && !f && !g, E = n.titleTranslationKey, v = E ? o(E) : "";
168
- return /* @__PURE__ */ I(
167
+ ], g = F || !v, _ = R && v, A = (!c || c.entry?.length === 0 || p.length === 0) && v, C = _ ? o("ERROR_FETCHING_OBSERVATIONS") : null, K = A ? o("NO_OBSERVATIONS_FOUND") : void 0, U = f.length > 0 && !g && !_, E = n.titleTranslationKey, y = E ? o(E) : "";
168
+ return /* @__PURE__ */ S(
169
169
  "div",
170
170
  {
171
171
  id: "observations",
172
- "data-testid": E ? `observations-${v}` : "observations",
172
+ "data-testid": E ? `observations-${y}` : "observations",
173
173
  "aria-label": "observations-aria-label",
174
- className: S.observations,
174
+ className: I.observations,
175
175
  children: [
176
176
  /* @__PURE__ */ u(
177
177
  H,
178
178
  {
179
179
  id: "observations-title",
180
- testId: E ? `observations-title-${v}` : "observations-title",
181
- title: v,
182
- className: S.title,
183
- children: /* @__PURE__ */ u("p", { children: v })
180
+ testId: E ? `observations-title-${y}` : "observations-title",
181
+ title: y,
182
+ className: I.title,
183
+ children: /* @__PURE__ */ u("p", { children: y })
184
184
  }
185
185
  ),
186
- B ? /* @__PURE__ */ u(
186
+ U ? /* @__PURE__ */ u(
187
187
  oe,
188
188
  {
189
- groupedData: $,
190
- title: v,
189
+ groupedData: f,
190
+ title: y,
191
191
  hideThumbnail: b
192
192
  }
193
193
  ) : /* @__PURE__ */ u(
@@ -196,9 +196,9 @@ const D = (t, n, d, l, b, r) => {
196
196
  headers: L,
197
197
  rows: [],
198
198
  ariaLabel: o("OBSERVATIONS"),
199
- loading: f,
199
+ loading: g,
200
200
  errorStateMessage: C,
201
- emptyStateMessage: U,
201
+ emptyStateMessage: K,
202
202
  dataTestId: "observations-table"
203
203
  }
204
204
  )