@argusoft/medplat-core 1.0.23 → 1.0.24

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/AddMenuConfiguration-m3R8FDhj.js +5570 -0
  2. package/dist/AddMenuConfiguration-m3R8FDhj.js.map +1 -0
  3. package/dist/AddMenuConfiguration.css +1 -1
  4. package/dist/{ChangePasswordModalCore-DONyFFlx.js → ChangePasswordModalCore-Czu7OZe6.js} +954 -951
  5. package/dist/ChangePasswordModalCore-Czu7OZe6.js.map +1 -0
  6. package/dist/{ConditionConfig-C3rF2wXU.js → ConditionConfig-BECSbvY2.js} +2 -2
  7. package/dist/{ConditionConfig-C3rF2wXU.js.map → ConditionConfig-BECSbvY2.js.map} +1 -1
  8. package/dist/FhirRawResourceList-ZZFd7gTX.js +550 -0
  9. package/dist/FhirRawResourceList-ZZFd7gTX.js.map +1 -0
  10. package/dist/FhirServerList-Dkq7Kbes.js +116 -0
  11. package/dist/FhirServerList-Dkq7Kbes.js.map +1 -0
  12. package/dist/FhirServerProfile-CUOwC6Wb.js +253 -0
  13. package/dist/FhirServerProfile-CUOwC6Wb.js.map +1 -0
  14. package/dist/FhirServerWizard-Db6Hm4bQ.js +161 -0
  15. package/dist/FhirServerWizard-Db6Hm4bQ.js.map +1 -0
  16. package/dist/{ImmunizationConfigurationBase-CTBoSuSz.js → ImmunizationConfigurationBase-BevKZx_l.js} +386 -302
  17. package/dist/ImmunizationConfigurationBase-BevKZx_l.js.map +1 -0
  18. package/dist/{ManageEventConfiguration-BntUc_YI.js → ManageEventConfiguration-CBi2KMB1.js} +4 -4
  19. package/dist/{ManageEventConfiguration-BntUc_YI.js.map → ManageEventConfiguration-CBi2KMB1.js.map} +1 -1
  20. package/dist/{ManageUser-Gv38VHMu.js → ManageUser-BnEPFSPT.js} +110 -110
  21. package/dist/{ManageUser-Gv38VHMu.js.map → ManageUser-BnEPFSPT.js.map} +1 -1
  22. package/dist/{MobileMenuManagement-CV6QCeos.js → MobileMenuManagement-CVAKyKDa.js} +33 -32
  23. package/dist/MobileMenuManagement-CVAKyKDa.js.map +1 -0
  24. package/dist/{MobileTypeEventConfigModal-BNjZ8pnq.js → MobileTypeEventConfigModal-C34AN-IJ.js} +2 -2
  25. package/dist/{MobileTypeEventConfigModal-BNjZ8pnq.js.map → MobileTypeEventConfigModal-C34AN-IJ.js.map} +1 -1
  26. package/dist/{OtherTypeEventConfigModal-DiVhWDpG.js → OtherTypeEventConfigModal-BYjMFl0-.js} +93 -93
  27. package/dist/OtherTypeEventConfigModal-BYjMFl0-.js.map +1 -0
  28. package/dist/ServerFormFields-SLghoZ2z.js +136 -0
  29. package/dist/ServerFormFields-SLghoZ2z.js.map +1 -0
  30. package/dist/SyncDialog-BRGpHOE4.js +130 -0
  31. package/dist/SyncDialog-BRGpHOE4.js.map +1 -0
  32. package/dist/{TypeConfiguration-CupQxH9Y.js → TypeConfiguration-Bs5WkIa2.js} +2 -2
  33. package/dist/{TypeConfiguration-CupQxH9Y.js.map → TypeConfiguration-Bs5WkIa2.js.map} +1 -1
  34. package/dist/dashboardLayoutUtils-Bt5HA96J.js +265 -0
  35. package/dist/dashboardLayoutUtils-Bt5HA96J.js.map +1 -0
  36. package/dist/index.css +1 -1
  37. package/dist/index.js +190 -134
  38. package/dist/index.js.map +1 -1
  39. package/dist/permissions-DEWACxJN.js +308 -0
  40. package/dist/permissions-DEWACxJN.js.map +1 -0
  41. package/package.json +1 -1
  42. package/dist/AddMenuConfiguration-DsnY0Rws.js +0 -2237
  43. package/dist/AddMenuConfiguration-DsnY0Rws.js.map +0 -1
  44. package/dist/ChangePasswordModalCore-DONyFFlx.js.map +0 -1
  45. package/dist/ImmunizationConfigurationBase-CTBoSuSz.js.map +0 -1
  46. package/dist/MobileMenuManagement-CV6QCeos.js.map +0 -1
  47. package/dist/OtherTypeEventConfigModal-DiVhWDpG.js.map +0 -1
@@ -0,0 +1,161 @@
1
+ import { jsx as e, jsxs as n, Fragment as Z } from "react/jsx-runtime";
2
+ import { useState as c } from "react";
3
+ import { useNavigate as ee } from "react-router";
4
+ import { Box as g, Stack as i, Tooltip as te, IconButton as re, Stepper as ne, Step as se, StepLabel as ae, Button as l, CircularProgress as oe, Typography as p, Alert as H, Chip as S, Divider as N, FormControlLabel as R, Checkbox as F } from "@mui/material";
5
+ import ie from "@mui/icons-material/ArrowBackRounded";
6
+ import ce from "@mui/icons-material/CheckCircleRounded";
7
+ import le from "@mui/icons-material/CloudSyncRounded";
8
+ import { showToast as f } from "@/common/toaster/toaster";
9
+ import { F as de, b as pe, a as he, c as E, d as ue, e as ye, f as me, s as ge } from "./permissions-DEWACxJN.js";
10
+ import { S as Se, v as fe } from "./ServerFormFields-SLghoZ2z.js";
11
+ const Ce = ["Server Details", "Discover Capability", "Sync Resources"], be = ["ValueSet", "CodeSystem", "Organization", "Location", "HealthcareService"];
12
+ function Ae() {
13
+ var L, U, z, G;
14
+ const C = ee(), [y, b] = c(0), [x, M] = c({ name: "", baseUrl: "", authType: "NONE", isActive: !0 }), [V, Y] = c({}), [t, T] = c(null), [d, m] = c(!1), [v, k] = c("idle"), [_, P] = c(""), [h, I] = c({}), [A, q] = c(!0), [j, W] = c(null), $ = () => C("/ui/medplat/admin/fhirResource"), J = async () => {
15
+ var a, s;
16
+ const r = fe(x);
17
+ if (Y(r), !Object.keys(r).length) {
18
+ m(!0);
19
+ try {
20
+ const o = await ye(x);
21
+ T(o.data), b(1), B(o.data.id);
22
+ } catch (o) {
23
+ f({ type: "error", message: ((s = (a = o == null ? void 0 : o.response) == null ? void 0 : a.data) == null ? void 0 : s.message) ?? "Failed to create server." });
24
+ } finally {
25
+ m(!1);
26
+ }
27
+ }
28
+ }, B = async (r) => {
29
+ var a, s;
30
+ k("loading"), P("");
31
+ try {
32
+ const o = await me(r);
33
+ T(o.data), k("done");
34
+ } catch (o) {
35
+ k("error"), P(((s = (a = o == null ? void 0 : o.response) == null ? void 0 : a.data) == null ? void 0 : s.message) ?? "Could not reach the server's /metadata endpoint.");
36
+ }
37
+ }, u = (L = t == null ? void 0 : t.supportedResources) != null && L.length ? t.supportedResources : be, w = Object.keys(h).filter((r) => h[r]), D = u.length > 0 && u.every((r) => h[r]), K = u.some((r) => h[r]), Q = (r) => {
38
+ I(Object.fromEntries(u.map((a) => [a, r])));
39
+ }, X = async () => {
40
+ var r, a;
41
+ if (w.length === 0) {
42
+ f({ type: "error", message: "Select at least one resource type, or skip this step." });
43
+ return;
44
+ }
45
+ m(!0);
46
+ try {
47
+ const s = await ge(t.id, w, {
48
+ alsoProcess: A,
49
+ onProgress: W
50
+ });
51
+ f({ type: "success", message: `Synced ${s} resource(s).` }), C(`/ui/medplat/admin/fhirResource/${t.id}`);
52
+ } catch (s) {
53
+ f({ type: "error", message: ((a = (r = s == null ? void 0 : s.response) == null ? void 0 : r.data) == null ? void 0 : a.message) ?? "Sync failed." });
54
+ } finally {
55
+ m(!1), W(null);
56
+ }
57
+ }, O = () => C(`/ui/medplat/admin/fhirResource/${t.id}`);
58
+ return /* @__PURE__ */ e(de, { perm: pe.MANAGE, children: /* @__PURE__ */ n(g, { sx: { p: { xs: 2, md: 3 } }, children: [
59
+ /* @__PURE__ */ e(
60
+ he,
61
+ {
62
+ title: /* @__PURE__ */ n(i, { direction: "row", alignItems: "center", spacing: 1, children: [
63
+ /* @__PURE__ */ e(te, { title: "Back to servers", children: /* @__PURE__ */ e(re, { size: "small", onClick: $, children: /* @__PURE__ */ e(ie, { fontSize: "small" }) }) }),
64
+ /* @__PURE__ */ e("span", { children: "Connect a FHIR Server" })
65
+ ] }),
66
+ subtitle: "Register a server by its base URL, discover what it supports, and optionally sync resources — all in a few guided steps."
67
+ }
68
+ ),
69
+ /* @__PURE__ */ e(ne, { activeStep: y, alternativeLabel: !0, sx: { mb: 3 }, children: Ce.map((r) => /* @__PURE__ */ e(se, { children: /* @__PURE__ */ e(ae, { children: r }) }, r)) }),
70
+ y === 0 && /* @__PURE__ */ e(E, { title: "Server Details", subtitle: "Where to connect and how to authenticate", children: /* @__PURE__ */ n(g, { sx: { maxWidth: 560 }, children: [
71
+ /* @__PURE__ */ e(Se, { value: x, onChange: M, errors: V }),
72
+ /* @__PURE__ */ n(i, { direction: "row", spacing: 1, justifyContent: "flex-end", sx: { mt: 3 }, children: [
73
+ /* @__PURE__ */ e(l, { onClick: $, disabled: d, children: "Cancel" }),
74
+ /* @__PURE__ */ e(l, { variant: "contained", onClick: J, disabled: d, children: d ? "Creating…" : "Create & Continue" })
75
+ ] })
76
+ ] }) }),
77
+ y === 1 && /* @__PURE__ */ n(E, { title: "Discover Capability", subtitle: "Reading GET /metadata to learn what this server supports", children: [
78
+ v === "loading" && /* @__PURE__ */ n(i, { alignItems: "center", spacing: 2, sx: { py: 5 }, children: [
79
+ /* @__PURE__ */ e(oe, {}),
80
+ /* @__PURE__ */ n(p, { variant: "body2", color: "text.secondary", children: [
81
+ "Contacting ",
82
+ t == null ? void 0 : t.baseUrl,
83
+ "…"
84
+ ] })
85
+ ] }),
86
+ v === "error" && /* @__PURE__ */ n(i, { spacing: 2, sx: { py: 2 }, children: [
87
+ /* @__PURE__ */ e(H, { severity: "error", children: _ }),
88
+ /* @__PURE__ */ e(p, { variant: "body2", color: "text.secondary", children: "The server was saved. You can retry capability discovery, or continue and try later from the server profile." }),
89
+ /* @__PURE__ */ n(i, { direction: "row", spacing: 1, justifyContent: "flex-end", children: [
90
+ /* @__PURE__ */ e(l, { onClick: () => B(t.id), startIcon: /* @__PURE__ */ e(le, {}), children: "Retry" }),
91
+ /* @__PURE__ */ e(l, { variant: "contained", onClick: () => b(2), children: "Continue anyway" })
92
+ ] })
93
+ ] }),
94
+ v === "done" && /* @__PURE__ */ n(i, { spacing: 2, sx: { py: 1 }, children: [
95
+ /* @__PURE__ */ n(i, { direction: "row", spacing: 1, alignItems: "center", children: [
96
+ /* @__PURE__ */ e(ce, { color: "success" }),
97
+ /* @__PURE__ */ e(p, { variant: "subtitle1", sx: { fontWeight: 700 }, children: "Capability discovered" })
98
+ ] }),
99
+ /* @__PURE__ */ n(i, { direction: "row", spacing: 1.5, flexWrap: "wrap", useFlexGap: !0, children: [
100
+ /* @__PURE__ */ e(S, { label: `FHIR ${(t == null ? void 0 : t.fhirVersion) ?? "?"}`, color: "primary", variant: "outlined" }),
101
+ /* @__PURE__ */ e(S, { label: `${((U = t == null ? void 0 : t.supportedResources) == null ? void 0 : U.length) ?? 0} resource types`, variant: "outlined" }),
102
+ /* @__PURE__ */ e(S, { label: t != null && t.supportsExpand ? "$expand supported" : "no $expand", color: t != null && t.supportsExpand ? "success" : "default", variant: "outlined" })
103
+ ] }),
104
+ (z = t == null ? void 0 : t.supportedResources) != null && z.length ? /* @__PURE__ */ n(g, { children: [
105
+ /* @__PURE__ */ e(p, { variant: "caption", color: "text.secondary", sx: { fontWeight: 700 }, children: "SUPPORTED RESOURCES" }),
106
+ /* @__PURE__ */ e(i, { direction: "row", spacing: 0.75, flexWrap: "wrap", useFlexGap: !0, sx: { mt: 0.75 }, children: t.supportedResources.map((r) => /* @__PURE__ */ e(S, { size: "small", label: r }, r)) })
107
+ ] }) : null,
108
+ /* @__PURE__ */ e(N, {}),
109
+ /* @__PURE__ */ n(i, { direction: "row", spacing: 1, justifyContent: "flex-end", children: [
110
+ /* @__PURE__ */ e(l, { onClick: O, children: "Finish (sync later)" }),
111
+ /* @__PURE__ */ e(l, { variant: "contained", onClick: () => b(2), children: "Continue to Sync" })
112
+ ] })
113
+ ] })
114
+ ] }),
115
+ y === 2 && /* @__PURE__ */ e(E, { title: "Sync Resources", subtitle: "Choose what to sync now — you can always sync more later", children: /* @__PURE__ */ n(g, { sx: { maxWidth: 560 }, children: [
116
+ d && j ? /* @__PURE__ */ e(ue, { progress: j }) : /* @__PURE__ */ n(Z, { children: [
117
+ !((G = t == null ? void 0 : t.supportedResources) != null && G.length) && /* @__PURE__ */ e(H, { severity: "info", sx: { mb: 2 }, children: "Capability wasn't discovered — showing common resource types." }),
118
+ /* @__PURE__ */ e(
119
+ R,
120
+ {
121
+ control: /* @__PURE__ */ e(
122
+ F,
123
+ {
124
+ checked: D,
125
+ indeterminate: K && !D,
126
+ onChange: (r) => Q(r.target.checked)
127
+ }
128
+ ),
129
+ label: /* @__PURE__ */ e(p, { variant: "body2", sx: { fontWeight: 700 }, children: "Select All" }),
130
+ sx: { mb: 0.5 }
131
+ }
132
+ ),
133
+ /* @__PURE__ */ e(N, { sx: { mb: 1 } }),
134
+ /* @__PURE__ */ e(i, { children: u.map((r) => /* @__PURE__ */ e(
135
+ R,
136
+ {
137
+ control: /* @__PURE__ */ e(F, { checked: !!h[r], onChange: (a) => I((s) => ({ ...s, [r]: a.target.checked })) }),
138
+ label: r
139
+ },
140
+ r
141
+ )) }),
142
+ /* @__PURE__ */ e(
143
+ R,
144
+ {
145
+ sx: { mt: 1 },
146
+ control: /* @__PURE__ */ e(F, { checked: A, onChange: (r) => q(r.target.checked) }),
147
+ label: /* @__PURE__ */ e(p, { variant: "body2", children: "Process into the system after sync" })
148
+ }
149
+ )
150
+ ] }),
151
+ /* @__PURE__ */ n(i, { direction: "row", spacing: 1, justifyContent: "flex-end", sx: { mt: 3 }, children: [
152
+ !d && /* @__PURE__ */ e(l, { onClick: O, children: "Skip" }),
153
+ /* @__PURE__ */ e(l, { variant: "contained", onClick: X, disabled: d, children: d ? "Syncing…" : `Sync ${w.length || ""} Selected` })
154
+ ] })
155
+ ] }) })
156
+ ] }) });
157
+ }
158
+ export {
159
+ Ae as default
160
+ };
161
+ //# sourceMappingURL=FhirServerWizard-Db6Hm4bQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FhirServerWizard-Db6Hm4bQ.js","sources":["../src/views/FhirResource/FhirServerWizard.jsx"],"sourcesContent":["import { useState } from \"react\";\nimport { useNavigate } from \"react-router\";\nimport {\n Box, Button, Stack, Typography, Stepper, Step, StepLabel, Paper,\n CircularProgress, Alert, Chip, FormControlLabel, Checkbox, Divider, IconButton, Tooltip,\n} from \"@mui/material\";\nimport ArrowBackRoundedIcon from \"@mui/icons-material/ArrowBackRounded\";\nimport CheckCircleRoundedIcon from \"@mui/icons-material/CheckCircleRounded\";\nimport CloudSyncRoundedIcon from \"@mui/icons-material/CloudSyncRounded\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport {\n createServer, refreshCapability, syncTypesSequentially,\n} from \"../../services/FhirResource\";\nimport { FhirPageHeader, SectionCard, SyncProgress } from \"./components/FhirUi\";\nimport { FhirGuard, FHIR_PERMS } from \"./components/permissions\";\nimport ServerFormFields, { validateServerForm } from \"./components/ServerFormFields\";\n\nconst STEPS = [\"Server Details\", \"Discover Capability\", \"Sync Resources\"];\nconst DEFAULT_TYPES = [\"ValueSet\", \"CodeSystem\", \"Organization\", \"Location\", \"HealthcareService\"];\n\nfunction FhirServerWizard() {\n const navigate = useNavigate();\n const [activeStep, setActiveStep] = useState(0);\n\n const [form, setForm] = useState({ name: \"\", baseUrl: \"\", authType: \"NONE\", isActive: true });\n const [errors, setErrors] = useState({});\n const [server, setServer] = useState(null); // created server (with id + capability)\n const [busy, setBusy] = useState(false);\n\n // capability step\n const [capState, setCapState] = useState(\"idle\"); // idle | loading | done | error\n const [capError, setCapError] = useState(\"\");\n\n // sync step\n const [selected, setSelected] = useState({});\n const [alsoProcess, setAlsoProcess] = useState(true);\n const [progress, setProgress] = useState(null);\n\n const goToServers = () => navigate(\"/ui/medplat/admin/fhirResource\");\n\n // ---- Step 0: create the server ----\n const handleCreate = async () => {\n const errs = validateServerForm(form);\n setErrors(errs);\n if (Object.keys(errs).length) return;\n setBusy(true);\n try {\n const res = await createServer(form);\n setServer(res.data);\n setActiveStep(1);\n runCapability(res.data.id);\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Failed to create server.\" });\n } finally {\n setBusy(false);\n }\n };\n\n // ---- Step 1: discover capability ----\n const runCapability = async (serverId) => {\n setCapState(\"loading\");\n setCapError(\"\");\n try {\n const res = await refreshCapability(serverId);\n setServer(res.data);\n setCapState(\"done\");\n } catch (err) {\n setCapState(\"error\");\n setCapError(err?.response?.data?.message ?? \"Could not reach the server's /metadata endpoint.\");\n }\n };\n\n const availableTypes = server?.supportedResources?.length ? server.supportedResources : DEFAULT_TYPES;\n const checkedTypes = Object.keys(selected).filter((t) => selected[t]);\n const allSelected = availableTypes.length > 0 && availableTypes.every((t) => selected[t]);\n const someSelected = availableTypes.some((t) => selected[t]);\n\n const toggleSelectAll = (checked) => {\n setSelected(Object.fromEntries(availableTypes.map((t) => [t, checked])));\n };\n\n // ---- Step 2: sync ----\n const handleSync = async () => {\n if (checkedTypes.length === 0) {\n showToast({ type: \"error\", message: \"Select at least one resource type, or skip this step.\" });\n return;\n }\n setBusy(true);\n try {\n const total = await syncTypesSequentially(server.id, checkedTypes, {\n alsoProcess,\n onProgress: setProgress,\n });\n showToast({ type: \"success\", message: `Synced ${total} resource(s).` });\n navigate(`/ui/medplat/admin/fhirResource/${server.id}`);\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Sync failed.\" });\n } finally {\n setBusy(false);\n setProgress(null);\n }\n };\n\n const finishSkip = () => navigate(`/ui/medplat/admin/fhirResource/${server.id}`);\n\n return (\n <FhirGuard perm={FHIR_PERMS.MANAGE}>\n <Box sx={{ p: { xs: 2, md: 3 } }}>\n <FhirPageHeader\n title={\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Tooltip title=\"Back to servers\">\n <IconButton size=\"small\" onClick={goToServers}><ArrowBackRoundedIcon fontSize=\"small\" /></IconButton>\n </Tooltip>\n <span>Connect a FHIR Server</span>\n </Stack>\n }\n subtitle=\"Register a server by its base URL, discover what it supports, and optionally sync resources — all in a few guided steps.\"\n />\n\n <Stepper activeStep={activeStep} alternativeLabel sx={{ mb: 3 }}>\n {STEPS.map((label) => (\n <Step key={label}><StepLabel>{label}</StepLabel></Step>\n ))}\n </Stepper>\n\n {/* Step 0 */}\n {activeStep === 0 && (\n <SectionCard title=\"Server Details\" subtitle=\"Where to connect and how to authenticate\">\n <Box sx={{ maxWidth: 560 }}>\n <ServerFormFields value={form} onChange={setForm} errors={errors} />\n <Stack direction=\"row\" spacing={1} justifyContent=\"flex-end\" sx={{ mt: 3 }}>\n <Button onClick={goToServers} disabled={busy}>Cancel</Button>\n <Button variant=\"contained\" onClick={handleCreate} disabled={busy}>\n {busy ? \"Creating…\" : \"Create & Continue\"}\n </Button>\n </Stack>\n </Box>\n </SectionCard>\n )}\n\n {/* Step 1 */}\n {activeStep === 1 && (\n <SectionCard title=\"Discover Capability\" subtitle=\"Reading GET /metadata to learn what this server supports\">\n {capState === \"loading\" && (\n <Stack alignItems=\"center\" spacing={2} sx={{ py: 5 }}>\n <CircularProgress />\n <Typography variant=\"body2\" color=\"text.secondary\">Contacting {server?.baseUrl}…</Typography>\n </Stack>\n )}\n\n {capState === \"error\" && (\n <Stack spacing={2} sx={{ py: 2 }}>\n <Alert severity=\"error\">{capError}</Alert>\n <Typography variant=\"body2\" color=\"text.secondary\">\n The server was saved. You can retry capability discovery, or continue and try later from the server profile.\n </Typography>\n <Stack direction=\"row\" spacing={1} justifyContent=\"flex-end\">\n <Button onClick={() => runCapability(server.id)} startIcon={<CloudSyncRoundedIcon />}>Retry</Button>\n <Button variant=\"contained\" onClick={() => setActiveStep(2)}>Continue anyway</Button>\n </Stack>\n </Stack>\n )}\n\n {capState === \"done\" && (\n <Stack spacing={2} sx={{ py: 1 }}>\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <CheckCircleRoundedIcon color=\"success\" />\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 700 }}>Capability discovered</Typography>\n </Stack>\n <Stack direction=\"row\" spacing={1.5} flexWrap=\"wrap\" useFlexGap>\n <Chip label={`FHIR ${server?.fhirVersion ?? \"?\"}`} color=\"primary\" variant=\"outlined\" />\n <Chip label={`${server?.supportedResources?.length ?? 0} resource types`} variant=\"outlined\" />\n <Chip label={server?.supportsExpand ? \"$expand supported\" : \"no $expand\"} color={server?.supportsExpand ? \"success\" : \"default\"} variant=\"outlined\" />\n </Stack>\n {server?.supportedResources?.length ? (\n <Box>\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ fontWeight: 700 }}>SUPPORTED RESOURCES</Typography>\n <Stack direction=\"row\" spacing={0.75} flexWrap=\"wrap\" useFlexGap sx={{ mt: 0.75 }}>\n {server.supportedResources.map((r) => <Chip key={r} size=\"small\" label={r} />)}\n </Stack>\n </Box>\n ) : null}\n <Divider />\n <Stack direction=\"row\" spacing={1} justifyContent=\"flex-end\">\n <Button onClick={finishSkip}>Finish (sync later)</Button>\n <Button variant=\"contained\" onClick={() => setActiveStep(2)}>Continue to Sync</Button>\n </Stack>\n </Stack>\n )}\n </SectionCard>\n )}\n\n {/* Step 2 */}\n {activeStep === 2 && (\n <SectionCard title=\"Sync Resources\" subtitle=\"Choose what to sync now — you can always sync more later\">\n <Box sx={{ maxWidth: 560 }}>\n {busy && progress ? (\n <SyncProgress progress={progress} />\n ) : (\n <>\n {!server?.supportedResources?.length && (\n <Alert severity=\"info\" sx={{ mb: 2 }}>\n Capability wasn't discovered — showing common resource types.\n </Alert>\n )}\n <FormControlLabel\n control={\n <Checkbox\n checked={allSelected}\n indeterminate={someSelected && !allSelected}\n onChange={(e) => toggleSelectAll(e.target.checked)}\n />\n }\n label={<Typography variant=\"body2\" sx={{ fontWeight: 700 }}>Select All</Typography>}\n sx={{ mb: 0.5 }}\n />\n <Divider sx={{ mb: 1 }} />\n <Stack>\n {availableTypes.map((t) => (\n <FormControlLabel\n key={t}\n control={<Checkbox checked={Boolean(selected[t])} onChange={(e) => setSelected((s) => ({ ...s, [t]: e.target.checked }))} />}\n label={t}\n />\n ))}\n </Stack>\n <FormControlLabel\n sx={{ mt: 1 }}\n control={<Checkbox checked={alsoProcess} onChange={(e) => setAlsoProcess(e.target.checked)} />}\n label={<Typography variant=\"body2\">Process into the system after sync</Typography>}\n />\n </>\n )}\n <Stack direction=\"row\" spacing={1} justifyContent=\"flex-end\" sx={{ mt: 3 }}>\n {/* While syncing the user can only watch progress — no skip/cancel. */}\n {!busy && <Button onClick={finishSkip}>Skip</Button>}\n <Button variant=\"contained\" onClick={handleSync} disabled={busy}>\n {busy ? \"Syncing…\" : `Sync ${checkedTypes.length || \"\"} Selected`}\n </Button>\n </Stack>\n </Box>\n </SectionCard>\n )}\n </Box>\n </FhirGuard>\n );\n}\n\nexport default FhirServerWizard;\n"],"names":["STEPS","DEFAULT_TYPES","FhirServerWizard","navigate","useNavigate","activeStep","setActiveStep","useState","form","setForm","errors","setErrors","server","setServer","busy","setBusy","capState","setCapState","capError","setCapError","selected","setSelected","alsoProcess","setAlsoProcess","progress","setProgress","goToServers","handleCreate","errs","validateServerForm","res","createServer","runCapability","err","showToast","_b","_a","serverId","refreshCapability","availableTypes","checkedTypes","t","allSelected","someSelected","toggleSelectAll","checked","handleSync","total","syncTypesSequentially","finishSkip","FhirGuard","FHIR_PERMS","Box","jsx","FhirPageHeader","Stack","Tooltip","IconButton","ArrowBackRoundedIcon","Stepper","label","Step","StepLabel","SectionCard","jsxs","ServerFormFields","Button","CircularProgress","Typography","Alert","CloudSyncRoundedIcon","CheckCircleRoundedIcon","Chip","_c","Divider","SyncProgress","Fragment","_d","FormControlLabel","Checkbox","e"],"mappings":"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"}