@burdenoff/microfe-mybodyshield 2026.511.1
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/README.md +12 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +18199 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +43046 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/mybodyshield/MyBodyShieldRoot.d.ts +5 -0
- package/dist/mybodyshield/MyBodyShieldRoot.d.ts.map +1 -0
- package/dist/mybodyshield/MyBodyShieldRoot.js +364 -0
- package/dist/mybodyshield/MyBodyShieldRoot.js.map +1 -0
- package/dist/mybodyshield/MyBodyShieldRoutes.d.ts +2 -0
- package/dist/mybodyshield/MyBodyShieldRoutes.d.ts.map +1 -0
- package/dist/mybodyshield/MyBodyShieldRoutes.js +199 -0
- package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -0
- package/dist/mybodyshield/index.d.ts +5 -0
- package/dist/mybodyshield/index.d.ts.map +1 -0
- package/dist/mybodyshield/index.js +3 -0
- package/dist/mybodyshield/pages/AdminAiinsightsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/AdminAiinsightsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/AdminAiinsightsPage.js +161 -0
- package/dist/mybodyshield/pages/AdminAiinsightsPage.js.map +1 -0
- package/dist/mybodyshield/pages/AdminAnalyticsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/AdminAnalyticsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/AdminAnalyticsPage.js +193 -0
- package/dist/mybodyshield/pages/AdminAnalyticsPage.js.map +1 -0
- package/dist/mybodyshield/pages/AdminComplianceReportsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/AdminComplianceReportsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/AdminComplianceReportsPage.js +214 -0
- package/dist/mybodyshield/pages/AdminComplianceReportsPage.js.map +1 -0
- package/dist/mybodyshield/pages/AdminDashboardPage.d.ts +2 -0
- package/dist/mybodyshield/pages/AdminDashboardPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/AdminDashboardPage.js +186 -0
- package/dist/mybodyshield/pages/AdminDashboardPage.js.map +1 -0
- package/dist/mybodyshield/pages/AdminOrganizationManagementPage.d.ts +2 -0
- package/dist/mybodyshield/pages/AdminOrganizationManagementPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/AdminOrganizationManagementPage.js +252 -0
- package/dist/mybodyshield/pages/AdminOrganizationManagementPage.js.map +1 -0
- package/dist/mybodyshield/pages/AdminSystemSettingsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/AdminSystemSettingsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/AdminSystemSettingsPage.js +159 -0
- package/dist/mybodyshield/pages/AdminSystemSettingsPage.js.map +1 -0
- package/dist/mybodyshield/pages/AdminUserManagementPage.d.ts +2 -0
- package/dist/mybodyshield/pages/AdminUserManagementPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/AdminUserManagementPage.js +208 -0
- package/dist/mybodyshield/pages/AdminUserManagementPage.js.map +1 -0
- package/dist/mybodyshield/pages/FitnessAssessmentsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/FitnessAssessmentsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/FitnessAssessmentsPage.js +194 -0
- package/dist/mybodyshield/pages/FitnessAssessmentsPage.js.map +1 -0
- package/dist/mybodyshield/pages/FitnessClientDetailsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/FitnessClientDetailsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/FitnessClientDetailsPage.js +192 -0
- package/dist/mybodyshield/pages/FitnessClientDetailsPage.js.map +1 -0
- package/dist/mybodyshield/pages/FitnessClientManagementPage.d.ts +2 -0
- package/dist/mybodyshield/pages/FitnessClientManagementPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/FitnessClientManagementPage.js +128 -0
- package/dist/mybodyshield/pages/FitnessClientManagementPage.js.map +1 -0
- package/dist/mybodyshield/pages/FitnessDashboardPage.d.ts +2 -0
- package/dist/mybodyshield/pages/FitnessDashboardPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/FitnessDashboardPage.js +156 -0
- package/dist/mybodyshield/pages/FitnessDashboardPage.js.map +1 -0
- package/dist/mybodyshield/pages/FitnessReportsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/FitnessReportsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/FitnessReportsPage.js +138 -0
- package/dist/mybodyshield/pages/FitnessReportsPage.js.map +1 -0
- package/dist/mybodyshield/pages/FitnessWorkoutPlansPage.d.ts +2 -0
- package/dist/mybodyshield/pages/FitnessWorkoutPlansPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/FitnessWorkoutPlansPage.js +176 -0
- package/dist/mybodyshield/pages/FitnessWorkoutPlansPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientAppointmentsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientAppointmentsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientAppointmentsPage.js +132 -0
- package/dist/mybodyshield/pages/PatientAppointmentsPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientDashboardPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientDashboardPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientDashboardPage.js +190 -0
- package/dist/mybodyshield/pages/PatientDashboardPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientFitnessTrackingPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientFitnessTrackingPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientFitnessTrackingPage.js +137 -0
- package/dist/mybodyshield/pages/PatientFitnessTrackingPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientHealthGoalsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientHealthGoalsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientHealthGoalsPage.js +131 -0
- package/dist/mybodyshield/pages/PatientHealthGoalsPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientHealthOverviewPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientHealthOverviewPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientHealthOverviewPage.js +273 -0
- package/dist/mybodyshield/pages/PatientHealthOverviewPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientLabResultsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientLabResultsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientLabResultsPage.js +133 -0
- package/dist/mybodyshield/pages/PatientLabResultsPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientMedicationsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientMedicationsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientMedicationsPage.js +158 -0
- package/dist/mybodyshield/pages/PatientMedicationsPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientMentalHealthPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientMentalHealthPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientMentalHealthPage.js +152 -0
- package/dist/mybodyshield/pages/PatientMentalHealthPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientNutritionTrackingPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientNutritionTrackingPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientNutritionTrackingPage.js +141 -0
- package/dist/mybodyshield/pages/PatientNutritionTrackingPage.js.map +1 -0
- package/dist/mybodyshield/pages/PatientVitalSignsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/PatientVitalSignsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/PatientVitalSignsPage.js +160 -0
- package/dist/mybodyshield/pages/PatientVitalSignsPage.js.map +1 -0
- package/dist/mybodyshield/pages/ProviderCalendarPage.d.ts +2 -0
- package/dist/mybodyshield/pages/ProviderCalendarPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/ProviderCalendarPage.js +127 -0
- package/dist/mybodyshield/pages/ProviderCalendarPage.js.map +1 -0
- package/dist/mybodyshield/pages/ProviderCarePlansPage.d.ts +2 -0
- package/dist/mybodyshield/pages/ProviderCarePlansPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/ProviderCarePlansPage.js +153 -0
- package/dist/mybodyshield/pages/ProviderCarePlansPage.js.map +1 -0
- package/dist/mybodyshield/pages/ProviderClinicalToolsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/ProviderClinicalToolsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/ProviderClinicalToolsPage.js +174 -0
- package/dist/mybodyshield/pages/ProviderClinicalToolsPage.js.map +1 -0
- package/dist/mybodyshield/pages/ProviderDashboardPage.d.ts +2 -0
- package/dist/mybodyshield/pages/ProviderDashboardPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/ProviderDashboardPage.js +154 -0
- package/dist/mybodyshield/pages/ProviderDashboardPage.js.map +1 -0
- package/dist/mybodyshield/pages/ProviderPatientDetailsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/ProviderPatientDetailsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/ProviderPatientDetailsPage.js +295 -0
- package/dist/mybodyshield/pages/ProviderPatientDetailsPage.js.map +1 -0
- package/dist/mybodyshield/pages/ProviderPatientManagementPage.d.ts +2 -0
- package/dist/mybodyshield/pages/ProviderPatientManagementPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/ProviderPatientManagementPage.js +133 -0
- package/dist/mybodyshield/pages/ProviderPatientManagementPage.js.map +1 -0
- package/dist/mybodyshield/pages/ProviderPrescriptionsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/ProviderPrescriptionsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/ProviderPrescriptionsPage.js +138 -0
- package/dist/mybodyshield/pages/ProviderPrescriptionsPage.js.map +1 -0
- package/dist/mybodyshield/pages/ProviderReportsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/ProviderReportsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/ProviderReportsPage.js +149 -0
- package/dist/mybodyshield/pages/ProviderReportsPage.js.map +1 -0
- package/dist/mybodyshield/pages/SharedAppointmentsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/SharedAppointmentsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/SharedAppointmentsPage.js +129 -0
- package/dist/mybodyshield/pages/SharedAppointmentsPage.js.map +1 -0
- package/dist/mybodyshield/pages/SharedCommunityPage.d.ts +2 -0
- package/dist/mybodyshield/pages/SharedCommunityPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/SharedCommunityPage.js +152 -0
- package/dist/mybodyshield/pages/SharedCommunityPage.js.map +1 -0
- package/dist/mybodyshield/pages/SharedEmergencyAlertsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/SharedEmergencyAlertsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/SharedEmergencyAlertsPage.js +165 -0
- package/dist/mybodyshield/pages/SharedEmergencyAlertsPage.js.map +1 -0
- package/dist/mybodyshield/pages/SharedEmergencyPage.d.ts +2 -0
- package/dist/mybodyshield/pages/SharedEmergencyPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/SharedEmergencyPage.js +183 -0
- package/dist/mybodyshield/pages/SharedEmergencyPage.js.map +1 -0
- package/dist/mybodyshield/pages/SharedHealthAnalyticsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/SharedHealthAnalyticsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/SharedHealthAnalyticsPage.js +159 -0
- package/dist/mybodyshield/pages/SharedHealthAnalyticsPage.js.map +1 -0
- package/dist/mybodyshield/pages/SharedMarketplacePage.d.ts +2 -0
- package/dist/mybodyshield/pages/SharedMarketplacePage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/SharedMarketplacePage.js +193 -0
- package/dist/mybodyshield/pages/SharedMarketplacePage.js.map +1 -0
- package/dist/mybodyshield/pages/SharedMessagesPage.d.ts +2 -0
- package/dist/mybodyshield/pages/SharedMessagesPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/SharedMessagesPage.js +156 -0
- package/dist/mybodyshield/pages/SharedMessagesPage.js.map +1 -0
- package/dist/mybodyshield/pages/WellnessAssessmentsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/WellnessAssessmentsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/WellnessAssessmentsPage.js +147 -0
- package/dist/mybodyshield/pages/WellnessAssessmentsPage.js.map +1 -0
- package/dist/mybodyshield/pages/WellnessClientsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/WellnessClientsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/WellnessClientsPage.js +182 -0
- package/dist/mybodyshield/pages/WellnessClientsPage.js.map +1 -0
- package/dist/mybodyshield/pages/WellnessDashboardPage.d.ts +2 -0
- package/dist/mybodyshield/pages/WellnessDashboardPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/WellnessDashboardPage.js +136 -0
- package/dist/mybodyshield/pages/WellnessDashboardPage.js.map +1 -0
- package/dist/mybodyshield/pages/WellnessProgramsPage.d.ts +2 -0
- package/dist/mybodyshield/pages/WellnessProgramsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/WellnessProgramsPage.js +140 -0
- package/dist/mybodyshield/pages/WellnessProgramsPage.js.map +1 -0
- package/dist/mybodyshield/providers/MyBodyShieldProvider.d.ts +6 -0
- package/dist/mybodyshield/providers/MyBodyShieldProvider.d.ts.map +1 -0
- package/dist/mybodyshield/providers/MyBodyShieldProvider.js +27 -0
- package/dist/mybodyshield/providers/MyBodyShieldProvider.js.map +1 -0
- package/dist/mybodyshield/store/mybodyshieldStore.d.ts +197 -0
- package/dist/mybodyshield/store/mybodyshieldStore.d.ts.map +1 -0
- package/dist/mybodyshield/store/mybodyshieldStore.js +710 -0
- package/dist/mybodyshield/store/mybodyshieldStore.js.map +1 -0
- package/dist/mybodyshield/types/index.d.ts +51 -0
- package/dist/mybodyshield/types/index.d.ts.map +1 -0
- package/dist/mybodyshield/utils/cn.d.ts +4 -0
- package/dist/mybodyshield/utils/cn.d.ts.map +1 -0
- package/dist/mybodyshield/utils/navigation.d.ts +2 -0
- package/dist/mybodyshield/utils/navigation.d.ts.map +1 -0
- package/dist/mybodyshield/utils/navigation.js +8 -0
- package/dist/mybodyshield/utils/navigation.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { useMyBodyShieldStore as e } from "../store/mybodyshieldStore.js";
|
|
2
|
+
import { Activity as t, AlertCircle as n, Calendar as r, Droplets as i, FlaskConical as a, Heart as o, Pill as s, User as c } from "lucide-react";
|
|
3
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
4
|
+
import { Card as d, CardContent as f, CardHeader as p, CardTitle as m } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
//#region src/mybodyshield/pages/ProviderPatientDetailsPage.tsx
|
|
6
|
+
function h() {
|
|
7
|
+
let { patients: h, vitalSigns: g, medications: _, labResults: v } = e(), y = h[0], b = g[0], x = _.filter((e) => e.patientId === y?.id && e.isActive), S = v.filter((e) => e.patientId === y?.id);
|
|
8
|
+
return y ? /* @__PURE__ */ u("div", {
|
|
9
|
+
className: "space-y-6 p-6",
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("h1", {
|
|
12
|
+
className: "text-2xl font-semibold",
|
|
13
|
+
children: "Patient Details"
|
|
14
|
+
}), /* @__PURE__ */ u("p", {
|
|
15
|
+
className: "text-sm text-muted-foreground",
|
|
16
|
+
children: [
|
|
17
|
+
y.firstName,
|
|
18
|
+
" ",
|
|
19
|
+
y.lastName,
|
|
20
|
+
" — Complete clinical profile"
|
|
21
|
+
]
|
|
22
|
+
})] }),
|
|
23
|
+
/* @__PURE__ */ u("div", {
|
|
24
|
+
className: "grid gap-4 md:grid-cols-4",
|
|
25
|
+
children: [
|
|
26
|
+
/* @__PURE__ */ u(d, { children: [/* @__PURE__ */ u(p, {
|
|
27
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
28
|
+
children: [/* @__PURE__ */ l(m, {
|
|
29
|
+
className: "text-sm font-medium",
|
|
30
|
+
children: "Blood Type"
|
|
31
|
+
}), /* @__PURE__ */ l(i, { className: "h-4 w-4 text-red-500" })]
|
|
32
|
+
}), /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l("div", {
|
|
33
|
+
className: "text-2xl font-bold",
|
|
34
|
+
children: y.bloodType
|
|
35
|
+
}), /* @__PURE__ */ u("p", {
|
|
36
|
+
className: "text-xs text-muted-foreground",
|
|
37
|
+
children: [
|
|
38
|
+
y.gender,
|
|
39
|
+
", DOB: ",
|
|
40
|
+
y.dateOfBirth
|
|
41
|
+
]
|
|
42
|
+
})] })] }),
|
|
43
|
+
/* @__PURE__ */ u(d, { children: [/* @__PURE__ */ u(p, {
|
|
44
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
45
|
+
children: [/* @__PURE__ */ l(m, {
|
|
46
|
+
className: "text-sm font-medium",
|
|
47
|
+
children: "Allergies"
|
|
48
|
+
}), /* @__PURE__ */ l(n, { className: "h-4 w-4 text-orange-500" })]
|
|
49
|
+
}), /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l("div", {
|
|
50
|
+
className: "text-2xl font-bold",
|
|
51
|
+
children: y.allergies.length
|
|
52
|
+
}), /* @__PURE__ */ l("p", {
|
|
53
|
+
className: "text-xs text-muted-foreground",
|
|
54
|
+
children: y.allergies.join(", ") || "None"
|
|
55
|
+
})] })] }),
|
|
56
|
+
/* @__PURE__ */ u(d, { children: [/* @__PURE__ */ u(p, {
|
|
57
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
58
|
+
children: [/* @__PURE__ */ l(m, {
|
|
59
|
+
className: "text-sm font-medium",
|
|
60
|
+
children: "Conditions"
|
|
61
|
+
}), /* @__PURE__ */ l(o, { className: "h-4 w-4 text-purple-500" })]
|
|
62
|
+
}), /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l("div", {
|
|
63
|
+
className: "text-2xl font-bold",
|
|
64
|
+
children: y.conditions.length
|
|
65
|
+
}), /* @__PURE__ */ l("p", {
|
|
66
|
+
className: "text-xs text-muted-foreground",
|
|
67
|
+
children: "Active diagnoses"
|
|
68
|
+
})] })] }),
|
|
69
|
+
/* @__PURE__ */ u(d, { children: [/* @__PURE__ */ u(p, {
|
|
70
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
71
|
+
children: [/* @__PURE__ */ l(m, {
|
|
72
|
+
className: "text-sm font-medium",
|
|
73
|
+
children: "Last Visit"
|
|
74
|
+
}), /* @__PURE__ */ l(r, { className: "h-4 w-4 text-blue-500" })]
|
|
75
|
+
}), /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l("div", {
|
|
76
|
+
className: "text-2xl font-bold text-base",
|
|
77
|
+
children: y.lastVisit
|
|
78
|
+
}), /* @__PURE__ */ l("p", {
|
|
79
|
+
className: "text-xs text-muted-foreground",
|
|
80
|
+
children: y.insuranceProvider
|
|
81
|
+
})] })] })
|
|
82
|
+
]
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ u("div", {
|
|
85
|
+
className: "grid gap-4 md:grid-cols-3",
|
|
86
|
+
children: [
|
|
87
|
+
/* @__PURE__ */ u(d, { children: [/* @__PURE__ */ l(p, { children: /* @__PURE__ */ u(m, {
|
|
88
|
+
className: "flex items-center gap-2",
|
|
89
|
+
children: [/* @__PURE__ */ l(c, { className: "h-5 w-5" }), "Profile"]
|
|
90
|
+
}) }), /* @__PURE__ */ l(f, { children: /* @__PURE__ */ u("div", {
|
|
91
|
+
className: "space-y-2 text-sm",
|
|
92
|
+
children: [
|
|
93
|
+
/* @__PURE__ */ u("div", {
|
|
94
|
+
className: "flex justify-between",
|
|
95
|
+
children: [/* @__PURE__ */ l("span", {
|
|
96
|
+
className: "text-muted-foreground",
|
|
97
|
+
children: "Name"
|
|
98
|
+
}), /* @__PURE__ */ u("span", {
|
|
99
|
+
className: "font-medium",
|
|
100
|
+
children: [
|
|
101
|
+
y.firstName,
|
|
102
|
+
" ",
|
|
103
|
+
y.lastName
|
|
104
|
+
]
|
|
105
|
+
})]
|
|
106
|
+
}),
|
|
107
|
+
/* @__PURE__ */ u("div", {
|
|
108
|
+
className: "flex justify-between",
|
|
109
|
+
children: [/* @__PURE__ */ l("span", {
|
|
110
|
+
className: "text-muted-foreground",
|
|
111
|
+
children: "Gender"
|
|
112
|
+
}), /* @__PURE__ */ l("span", {
|
|
113
|
+
className: "font-medium",
|
|
114
|
+
children: y.gender
|
|
115
|
+
})]
|
|
116
|
+
}),
|
|
117
|
+
/* @__PURE__ */ u("div", {
|
|
118
|
+
className: "flex justify-between",
|
|
119
|
+
children: [/* @__PURE__ */ l("span", {
|
|
120
|
+
className: "text-muted-foreground",
|
|
121
|
+
children: "DOB"
|
|
122
|
+
}), /* @__PURE__ */ l("span", {
|
|
123
|
+
className: "font-medium",
|
|
124
|
+
children: y.dateOfBirth
|
|
125
|
+
})]
|
|
126
|
+
}),
|
|
127
|
+
/* @__PURE__ */ u("div", {
|
|
128
|
+
className: "flex justify-between",
|
|
129
|
+
children: [/* @__PURE__ */ l("span", {
|
|
130
|
+
className: "text-muted-foreground",
|
|
131
|
+
children: "Blood Type"
|
|
132
|
+
}), /* @__PURE__ */ l("span", {
|
|
133
|
+
className: "font-medium",
|
|
134
|
+
children: y.bloodType
|
|
135
|
+
})]
|
|
136
|
+
}),
|
|
137
|
+
/* @__PURE__ */ u("div", {
|
|
138
|
+
className: "flex justify-between",
|
|
139
|
+
children: [/* @__PURE__ */ l("span", {
|
|
140
|
+
className: "text-muted-foreground",
|
|
141
|
+
children: "Emergency"
|
|
142
|
+
}), /* @__PURE__ */ l("span", {
|
|
143
|
+
className: "font-medium text-xs",
|
|
144
|
+
children: y.emergencyContact
|
|
145
|
+
})]
|
|
146
|
+
}),
|
|
147
|
+
/* @__PURE__ */ u("div", {
|
|
148
|
+
className: "mt-2",
|
|
149
|
+
children: [/* @__PURE__ */ l("p", {
|
|
150
|
+
className: "text-xs text-muted-foreground mb-1",
|
|
151
|
+
children: "Conditions"
|
|
152
|
+
}), /* @__PURE__ */ l("div", {
|
|
153
|
+
className: "flex gap-1 flex-wrap",
|
|
154
|
+
children: y.conditions.map((e, t) => /* @__PURE__ */ l("span", {
|
|
155
|
+
className: "text-xs px-2 py-0.5 rounded-full bg-orange-100 text-orange-700",
|
|
156
|
+
children: e
|
|
157
|
+
}, t))
|
|
158
|
+
})]
|
|
159
|
+
})
|
|
160
|
+
]
|
|
161
|
+
}) })] }),
|
|
162
|
+
b && /* @__PURE__ */ u(d, { children: [/* @__PURE__ */ l(p, { children: /* @__PURE__ */ u(m, {
|
|
163
|
+
className: "flex items-center gap-2",
|
|
164
|
+
children: [/* @__PURE__ */ l(t, { className: "h-5 w-5" }), "Latest Vitals"]
|
|
165
|
+
}) }), /* @__PURE__ */ l(f, { children: /* @__PURE__ */ u("div", {
|
|
166
|
+
className: "space-y-3",
|
|
167
|
+
children: [
|
|
168
|
+
/* @__PURE__ */ u("div", {
|
|
169
|
+
className: "flex justify-between p-2 rounded bg-muted/50",
|
|
170
|
+
children: [/* @__PURE__ */ l("span", {
|
|
171
|
+
className: "text-sm text-muted-foreground",
|
|
172
|
+
children: "Blood Pressure"
|
|
173
|
+
}), /* @__PURE__ */ u("span", {
|
|
174
|
+
className: "text-sm font-medium",
|
|
175
|
+
children: [
|
|
176
|
+
b.bloodPressureSystolic,
|
|
177
|
+
"/",
|
|
178
|
+
b.bloodPressureDiastolic
|
|
179
|
+
]
|
|
180
|
+
})]
|
|
181
|
+
}),
|
|
182
|
+
/* @__PURE__ */ u("div", {
|
|
183
|
+
className: "flex justify-between p-2 rounded bg-muted/50",
|
|
184
|
+
children: [/* @__PURE__ */ l("span", {
|
|
185
|
+
className: "text-sm text-muted-foreground",
|
|
186
|
+
children: "Heart Rate"
|
|
187
|
+
}), /* @__PURE__ */ u("span", {
|
|
188
|
+
className: "text-sm font-medium",
|
|
189
|
+
children: [b.heartRate, " bpm"]
|
|
190
|
+
})]
|
|
191
|
+
}),
|
|
192
|
+
/* @__PURE__ */ u("div", {
|
|
193
|
+
className: "flex justify-between p-2 rounded bg-muted/50",
|
|
194
|
+
children: [/* @__PURE__ */ l("span", {
|
|
195
|
+
className: "text-sm text-muted-foreground",
|
|
196
|
+
children: "Temperature"
|
|
197
|
+
}), /* @__PURE__ */ u("span", {
|
|
198
|
+
className: "text-sm font-medium",
|
|
199
|
+
children: [b.temperature, "°F"]
|
|
200
|
+
})]
|
|
201
|
+
}),
|
|
202
|
+
/* @__PURE__ */ u("div", {
|
|
203
|
+
className: "flex justify-between p-2 rounded bg-muted/50",
|
|
204
|
+
children: [/* @__PURE__ */ l("span", {
|
|
205
|
+
className: "text-sm text-muted-foreground",
|
|
206
|
+
children: "SpO2"
|
|
207
|
+
}), /* @__PURE__ */ u("span", {
|
|
208
|
+
className: "text-sm font-medium",
|
|
209
|
+
children: [b.oxygenSaturation, "%"]
|
|
210
|
+
})]
|
|
211
|
+
}),
|
|
212
|
+
/* @__PURE__ */ u("div", {
|
|
213
|
+
className: "flex justify-between p-2 rounded bg-muted/50",
|
|
214
|
+
children: [/* @__PURE__ */ l("span", {
|
|
215
|
+
className: "text-sm text-muted-foreground",
|
|
216
|
+
children: "Weight / BMI"
|
|
217
|
+
}), /* @__PURE__ */ u("span", {
|
|
218
|
+
className: "text-sm font-medium",
|
|
219
|
+
children: [
|
|
220
|
+
b.weight,
|
|
221
|
+
" kg / ",
|
|
222
|
+
b.bmi
|
|
223
|
+
]
|
|
224
|
+
})]
|
|
225
|
+
})
|
|
226
|
+
]
|
|
227
|
+
}) })] }),
|
|
228
|
+
/* @__PURE__ */ u("div", {
|
|
229
|
+
className: "space-y-4",
|
|
230
|
+
children: [/* @__PURE__ */ u(d, { children: [/* @__PURE__ */ l(p, { children: /* @__PURE__ */ u(m, {
|
|
231
|
+
className: "flex items-center gap-2",
|
|
232
|
+
children: [
|
|
233
|
+
/* @__PURE__ */ l(s, { className: "h-5 w-5" }),
|
|
234
|
+
"Medications (",
|
|
235
|
+
x.length,
|
|
236
|
+
")"
|
|
237
|
+
]
|
|
238
|
+
}) }), /* @__PURE__ */ l(f, { children: /* @__PURE__ */ l("div", {
|
|
239
|
+
className: "space-y-2",
|
|
240
|
+
children: x.map((e) => /* @__PURE__ */ u("div", {
|
|
241
|
+
className: "text-sm",
|
|
242
|
+
children: [
|
|
243
|
+
/* @__PURE__ */ l("span", {
|
|
244
|
+
className: "font-medium",
|
|
245
|
+
children: e.name
|
|
246
|
+
}),
|
|
247
|
+
" ",
|
|
248
|
+
/* @__PURE__ */ u("span", {
|
|
249
|
+
className: "text-muted-foreground",
|
|
250
|
+
children: [
|
|
251
|
+
e.dosage,
|
|
252
|
+
" ",
|
|
253
|
+
e.frequency
|
|
254
|
+
]
|
|
255
|
+
})
|
|
256
|
+
]
|
|
257
|
+
}, e.id))
|
|
258
|
+
}) })] }), /* @__PURE__ */ u(d, { children: [/* @__PURE__ */ l(p, { children: /* @__PURE__ */ u(m, {
|
|
259
|
+
className: "flex items-center gap-2",
|
|
260
|
+
children: [
|
|
261
|
+
/* @__PURE__ */ l(a, { className: "h-5 w-5" }),
|
|
262
|
+
"Recent Labs (",
|
|
263
|
+
S.length,
|
|
264
|
+
")"
|
|
265
|
+
]
|
|
266
|
+
}) }), /* @__PURE__ */ l(f, { children: /* @__PURE__ */ l("div", {
|
|
267
|
+
className: "space-y-2",
|
|
268
|
+
children: S.map((e) => /* @__PURE__ */ u("div", {
|
|
269
|
+
className: "flex justify-between text-sm",
|
|
270
|
+
children: [/* @__PURE__ */ l("span", { children: e.testName }), /* @__PURE__ */ u("span", {
|
|
271
|
+
className: `font-medium ${e.status === "normal" ? "text-green-600" : "text-orange-600"}`,
|
|
272
|
+
children: [
|
|
273
|
+
e.value,
|
|
274
|
+
" ",
|
|
275
|
+
e.unit
|
|
276
|
+
]
|
|
277
|
+
})]
|
|
278
|
+
}, e.id))
|
|
279
|
+
}) })] })]
|
|
280
|
+
})
|
|
281
|
+
]
|
|
282
|
+
})
|
|
283
|
+
]
|
|
284
|
+
}) : /* @__PURE__ */ l("div", {
|
|
285
|
+
className: "p-6",
|
|
286
|
+
children: /* @__PURE__ */ l("p", {
|
|
287
|
+
className: "text-muted-foreground",
|
|
288
|
+
children: "No patient selected"
|
|
289
|
+
})
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
//#endregion
|
|
293
|
+
export { h as ProviderPatientDetailsPage };
|
|
294
|
+
|
|
295
|
+
//# sourceMappingURL=ProviderPatientDetailsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderPatientDetailsPage.js","names":[],"sources":["../../../src/mybodyshield/pages/ProviderPatientDetailsPage.tsx"],"sourcesContent":["import { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport {\n User,\n Droplets,\n AlertCircle,\n Calendar,\n Heart,\n Activity,\n Pill,\n FlaskConical,\n} from 'lucide-react';\nimport { useMyBodyShieldStore } from '../store/mybodyshieldStore';\n\nexport function ProviderPatientDetailsPage() {\n const { patients, vitalSigns, medications, labResults } = useMyBodyShieldStore();\n const patient = patients[0];\n const latestVital = vitalSigns[0];\n const patientMeds = medications.filter((m) => m.patientId === patient?.id && m.isActive);\n const patientLabs = labResults.filter((l) => l.patientId === patient?.id);\n\n if (!patient)\n return (\n <div className=\"p-6\">\n <p className=\"text-muted-foreground\">No patient selected</p>\n </div>\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Patient Details</h1>\n <p className=\"text-sm text-muted-foreground\">\n {patient.firstName} {patient.lastName} — Complete clinical profile\n </p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Blood Type</CardTitle>\n <Droplets className=\"h-4 w-4 text-red-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{patient.bloodType}</div>\n <p className=\"text-xs text-muted-foreground\">\n {patient.gender}, DOB: {patient.dateOfBirth}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Allergies</CardTitle>\n <AlertCircle className=\"h-4 w-4 text-orange-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{patient.allergies.length}</div>\n <p className=\"text-xs text-muted-foreground\">\n {patient.allergies.join(', ') || 'None'}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Conditions</CardTitle>\n <Heart className=\"h-4 w-4 text-purple-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{patient.conditions.length}</div>\n <p className=\"text-xs text-muted-foreground\">Active diagnoses</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Last Visit</CardTitle>\n <Calendar className=\"h-4 w-4 text-blue-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold text-base\">{patient.lastVisit}</div>\n <p className=\"text-xs text-muted-foreground\">{patient.insuranceProvider}</p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <User className=\"h-5 w-5\" />\n Profile\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Name</span>\n <span className=\"font-medium\">\n {patient.firstName} {patient.lastName}\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Gender</span>\n <span className=\"font-medium\">{patient.gender}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">DOB</span>\n <span className=\"font-medium\">{patient.dateOfBirth}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Blood Type</span>\n <span className=\"font-medium\">{patient.bloodType}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Emergency</span>\n <span className=\"font-medium text-xs\">{patient.emergencyContact}</span>\n </div>\n <div className=\"mt-2\">\n <p className=\"text-xs text-muted-foreground mb-1\">Conditions</p>\n <div className=\"flex gap-1 flex-wrap\">\n {patient.conditions.map((c, i) => (\n <span\n key={i}\n className=\"text-xs px-2 py-0.5 rounded-full bg-orange-100 text-orange-700\"\n >\n {c}\n </span>\n ))}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n {latestVital && (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Activity className=\"h-5 w-5\" />\n Latest Vitals\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n <div className=\"flex justify-between p-2 rounded bg-muted/50\">\n <span className=\"text-sm text-muted-foreground\">Blood Pressure</span>\n <span className=\"text-sm font-medium\">\n {latestVital.bloodPressureSystolic}/{latestVital.bloodPressureDiastolic}\n </span>\n </div>\n <div className=\"flex justify-between p-2 rounded bg-muted/50\">\n <span className=\"text-sm text-muted-foreground\">Heart Rate</span>\n <span className=\"text-sm font-medium\">{latestVital.heartRate} bpm</span>\n </div>\n <div className=\"flex justify-between p-2 rounded bg-muted/50\">\n <span className=\"text-sm text-muted-foreground\">Temperature</span>\n <span className=\"text-sm font-medium\">{latestVital.temperature}°F</span>\n </div>\n <div className=\"flex justify-between p-2 rounded bg-muted/50\">\n <span className=\"text-sm text-muted-foreground\">SpO2</span>\n <span className=\"text-sm font-medium\">{latestVital.oxygenSaturation}%</span>\n </div>\n <div className=\"flex justify-between p-2 rounded bg-muted/50\">\n <span className=\"text-sm text-muted-foreground\">Weight / BMI</span>\n <span className=\"text-sm font-medium\">\n {latestVital.weight} kg / {latestVital.bmi}\n </span>\n </div>\n </div>\n </CardContent>\n </Card>\n )}\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Pill className=\"h-5 w-5\" />\n Medications ({patientMeds.length})\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n {patientMeds.map((m) => (\n <div key={m.id} className=\"text-sm\">\n <span className=\"font-medium\">{m.name}</span>{' '}\n <span className=\"text-muted-foreground\">\n {m.dosage} {m.frequency}\n </span>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FlaskConical className=\"h-5 w-5\" />\n Recent Labs ({patientLabs.length})\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n {patientLabs.map((l) => (\n <div key={l.id} className=\"flex justify-between text-sm\">\n <span>{l.testName}</span>\n <span\n className={`font-medium ${l.status === 'normal' ? 'text-green-600' : 'text-orange-600'}`}\n >\n {l.value} {l.unit}\n </span>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderPatientManagementPage.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/pages/ProviderPatientManagementPage.tsx"],"names":[],"mappings":"AAIA,wBAAgB,6BAA6B,4CAwG5C"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { useMyBodyShieldStore as e } from "../store/mybodyshieldStore.js";
|
|
2
|
+
import { AlertCircle as t, Clock as n, UserPlus as r, Users as i } from "lucide-react";
|
|
3
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
4
|
+
import { Card as s, CardContent as c, CardHeader as l, CardTitle as u } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
//#region src/mybodyshield/pages/ProviderPatientManagementPage.tsx
|
|
6
|
+
function d() {
|
|
7
|
+
let { patients: d } = e();
|
|
8
|
+
return /* @__PURE__ */ o("div", {
|
|
9
|
+
className: "space-y-6 p-6",
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
|
|
12
|
+
className: "text-2xl font-semibold",
|
|
13
|
+
children: "Patient Management"
|
|
14
|
+
}), /* @__PURE__ */ a("p", {
|
|
15
|
+
className: "text-sm text-muted-foreground",
|
|
16
|
+
children: "Manage your patient roster and clinical records"
|
|
17
|
+
})] }),
|
|
18
|
+
/* @__PURE__ */ o("div", {
|
|
19
|
+
className: "grid gap-4 md:grid-cols-4",
|
|
20
|
+
children: [
|
|
21
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ o(l, {
|
|
22
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
23
|
+
children: [/* @__PURE__ */ a(u, {
|
|
24
|
+
className: "text-sm font-medium",
|
|
25
|
+
children: "Total Patients"
|
|
26
|
+
}), /* @__PURE__ */ a(i, { className: "h-4 w-4 text-blue-500" })]
|
|
27
|
+
}), /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a("div", {
|
|
28
|
+
className: "text-2xl font-bold",
|
|
29
|
+
children: d.length
|
|
30
|
+
}), /* @__PURE__ */ a("p", {
|
|
31
|
+
className: "text-xs text-muted-foreground",
|
|
32
|
+
children: "In your panel"
|
|
33
|
+
})] })] }),
|
|
34
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ o(l, {
|
|
35
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
36
|
+
children: [/* @__PURE__ */ a(u, {
|
|
37
|
+
className: "text-sm font-medium",
|
|
38
|
+
children: "New This Month"
|
|
39
|
+
}), /* @__PURE__ */ a(r, { className: "h-4 w-4 text-green-500" })]
|
|
40
|
+
}), /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a("div", {
|
|
41
|
+
className: "text-2xl font-bold",
|
|
42
|
+
children: "2"
|
|
43
|
+
}), /* @__PURE__ */ a("p", {
|
|
44
|
+
className: "text-xs text-muted-foreground",
|
|
45
|
+
children: "Recently onboarded"
|
|
46
|
+
})] })] }),
|
|
47
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ o(l, {
|
|
48
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
49
|
+
children: [/* @__PURE__ */ a(u, {
|
|
50
|
+
className: "text-sm font-medium",
|
|
51
|
+
children: "Requires Follow-up"
|
|
52
|
+
}), /* @__PURE__ */ a(n, { className: "h-4 w-4 text-orange-500" })]
|
|
53
|
+
}), /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a("div", {
|
|
54
|
+
className: "text-2xl font-bold",
|
|
55
|
+
children: "3"
|
|
56
|
+
}), /* @__PURE__ */ a("p", {
|
|
57
|
+
className: "text-xs text-muted-foreground",
|
|
58
|
+
children: "Overdue for visit"
|
|
59
|
+
})] })] }),
|
|
60
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ o(l, {
|
|
61
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
62
|
+
children: [/* @__PURE__ */ a(u, {
|
|
63
|
+
className: "text-sm font-medium",
|
|
64
|
+
children: "High Risk"
|
|
65
|
+
}), /* @__PURE__ */ a(t, { className: "h-4 w-4 text-red-500" })]
|
|
66
|
+
}), /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a("div", {
|
|
67
|
+
className: "text-2xl font-bold",
|
|
68
|
+
children: "1"
|
|
69
|
+
}), /* @__PURE__ */ a("p", {
|
|
70
|
+
className: "text-xs text-muted-foreground",
|
|
71
|
+
children: "Elevated risk score"
|
|
72
|
+
})] })] })
|
|
73
|
+
]
|
|
74
|
+
}),
|
|
75
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ a(l, { children: /* @__PURE__ */ a(u, { children: "Patient Roster" }) }), /* @__PURE__ */ a(c, { children: /* @__PURE__ */ a("div", {
|
|
76
|
+
className: "space-y-3",
|
|
77
|
+
children: d.map((e) => /* @__PURE__ */ o("div", {
|
|
78
|
+
className: "flex items-center justify-between p-3 rounded-lg bg-muted/50",
|
|
79
|
+
children: [/* @__PURE__ */ o("div", {
|
|
80
|
+
className: "flex items-center gap-3",
|
|
81
|
+
children: [/* @__PURE__ */ a("div", {
|
|
82
|
+
className: "h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center",
|
|
83
|
+
children: /* @__PURE__ */ o("span", {
|
|
84
|
+
className: "text-sm font-medium text-primary",
|
|
85
|
+
children: [e.firstName[0], e.lastName[0]]
|
|
86
|
+
})
|
|
87
|
+
}), /* @__PURE__ */ o("div", { children: [
|
|
88
|
+
/* @__PURE__ */ o("p", {
|
|
89
|
+
className: "text-sm font-medium",
|
|
90
|
+
children: [
|
|
91
|
+
e.firstName,
|
|
92
|
+
" ",
|
|
93
|
+
e.lastName
|
|
94
|
+
]
|
|
95
|
+
}),
|
|
96
|
+
/* @__PURE__ */ o("p", {
|
|
97
|
+
className: "text-xs text-muted-foreground",
|
|
98
|
+
children: [
|
|
99
|
+
e.gender,
|
|
100
|
+
" · ",
|
|
101
|
+
e.bloodType,
|
|
102
|
+
" ·",
|
|
103
|
+
" ",
|
|
104
|
+
e.insuranceProvider
|
|
105
|
+
]
|
|
106
|
+
}),
|
|
107
|
+
/* @__PURE__ */ a("div", {
|
|
108
|
+
className: "flex gap-1 flex-wrap mt-1",
|
|
109
|
+
children: e.conditions.map((e, t) => /* @__PURE__ */ a("span", {
|
|
110
|
+
className: "text-xs px-1.5 py-0.5 rounded-full bg-orange-100 text-orange-700",
|
|
111
|
+
children: e
|
|
112
|
+
}, t))
|
|
113
|
+
})
|
|
114
|
+
] })]
|
|
115
|
+
}), /* @__PURE__ */ o("div", {
|
|
116
|
+
className: "text-right",
|
|
117
|
+
children: [/* @__PURE__ */ a("p", {
|
|
118
|
+
className: "text-xs text-muted-foreground",
|
|
119
|
+
children: "Last visit"
|
|
120
|
+
}), /* @__PURE__ */ a("p", {
|
|
121
|
+
className: "text-sm font-medium",
|
|
122
|
+
children: e.lastVisit
|
|
123
|
+
})]
|
|
124
|
+
})]
|
|
125
|
+
}, e.id))
|
|
126
|
+
}) })] })
|
|
127
|
+
]
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
131
|
+
export { d as ProviderPatientManagementPage };
|
|
132
|
+
|
|
133
|
+
//# sourceMappingURL=ProviderPatientManagementPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderPatientManagementPage.js","names":[],"sources":["../../../src/mybodyshield/pages/ProviderPatientManagementPage.tsx"],"sourcesContent":["import { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { Users, UserPlus, AlertCircle, Clock } from 'lucide-react';\nimport { useMyBodyShieldStore } from '../store/mybodyshieldStore';\n\nexport function ProviderPatientManagementPage() {\n const { patients } = useMyBodyShieldStore();\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Patient Management</h1>\n <p className=\"text-sm text-muted-foreground\">\n Manage your patient roster and clinical records\n </p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Patients</CardTitle>\n <Users className=\"h-4 w-4 text-blue-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{patients.length}</div>\n <p className=\"text-xs text-muted-foreground\">In your panel</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">New This Month</CardTitle>\n <UserPlus className=\"h-4 w-4 text-green-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">2</div>\n <p className=\"text-xs text-muted-foreground\">Recently onboarded</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Requires Follow-up</CardTitle>\n <Clock className=\"h-4 w-4 text-orange-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">3</div>\n <p className=\"text-xs text-muted-foreground\">Overdue for visit</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">High Risk</CardTitle>\n <AlertCircle className=\"h-4 w-4 text-red-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">1</div>\n <p className=\"text-xs text-muted-foreground\">Elevated risk score</p>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Patient Roster</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {patients.map((patient) => (\n <div\n key={patient.id}\n className=\"flex items-center justify-between p-3 rounded-lg bg-muted/50\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center\">\n <span className=\"text-sm font-medium text-primary\">\n {patient.firstName[0]}\n {patient.lastName[0]}\n </span>\n </div>\n <div>\n <p className=\"text-sm font-medium\">\n {patient.firstName} {patient.lastName}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {patient.gender} · {patient.bloodType} ·{' '}\n {patient.insuranceProvider}\n </p>\n <div className=\"flex gap-1 flex-wrap mt-1\">\n {patient.conditions.map((c, i) => (\n <span\n key={i}\n className=\"text-xs px-1.5 py-0.5 rounded-full bg-orange-100 text-orange-700\"\n >\n {c}\n </span>\n ))}\n </div>\n </div>\n </div>\n <div className=\"text-right\">\n <p className=\"text-xs text-muted-foreground\">Last visit</p>\n <p className=\"text-sm font-medium\">{patient.lastVisit}</p>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderPrescriptionsPage.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/pages/ProviderPrescriptionsPage.tsx"],"names":[],"mappings":"AAUA,wBAAgB,yBAAyB,4CAmGxC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { useMyBodyShieldStore as e } from "../store/mybodyshieldStore.js";
|
|
2
|
+
import { AlertTriangle as t, CheckCircle as n, FileText as r, XCircle as i } from "lucide-react";
|
|
3
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
4
|
+
import { Card as s, CardContent as c, CardHeader as l, CardTitle as u } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
//#region src/mybodyshield/pages/ProviderPrescriptionsPage.tsx
|
|
6
|
+
var d = {
|
|
7
|
+
active: "bg-green-100 text-green-700",
|
|
8
|
+
expired: "bg-yellow-100 text-yellow-700",
|
|
9
|
+
cancelled: "bg-red-100 text-red-700"
|
|
10
|
+
};
|
|
11
|
+
function f() {
|
|
12
|
+
let { prescriptions: f } = e(), p = f.filter((e) => e.status === "active").length;
|
|
13
|
+
f.filter((e) => e.status === "expired").length;
|
|
14
|
+
let m = f.filter((e) => e.status === "cancelled").length, h = f.reduce((e, t) => e + t.refillsUsed, 0);
|
|
15
|
+
return /* @__PURE__ */ o("div", {
|
|
16
|
+
className: "space-y-6 p-6",
|
|
17
|
+
children: [
|
|
18
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
|
|
19
|
+
className: "text-2xl font-semibold",
|
|
20
|
+
children: "Prescriptions"
|
|
21
|
+
}), /* @__PURE__ */ a("p", {
|
|
22
|
+
className: "text-sm text-muted-foreground",
|
|
23
|
+
children: "Manage patient prescriptions and refill authorizations"
|
|
24
|
+
})] }),
|
|
25
|
+
/* @__PURE__ */ o("div", {
|
|
26
|
+
className: "grid gap-4 md:grid-cols-4",
|
|
27
|
+
children: [
|
|
28
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ o(l, {
|
|
29
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
30
|
+
children: [/* @__PURE__ */ a(u, {
|
|
31
|
+
className: "text-sm font-medium",
|
|
32
|
+
children: "Active Prescriptions"
|
|
33
|
+
}), /* @__PURE__ */ a(n, { className: "h-4 w-4 text-green-500" })]
|
|
34
|
+
}), /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a("div", {
|
|
35
|
+
className: "text-2xl font-bold",
|
|
36
|
+
children: p
|
|
37
|
+
}), /* @__PURE__ */ a("p", {
|
|
38
|
+
className: "text-xs text-muted-foreground",
|
|
39
|
+
children: "Currently valid"
|
|
40
|
+
})] })] }),
|
|
41
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ o(l, {
|
|
42
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
43
|
+
children: [/* @__PURE__ */ a(u, {
|
|
44
|
+
className: "text-sm font-medium",
|
|
45
|
+
children: "Expiring Soon"
|
|
46
|
+
}), /* @__PURE__ */ a(t, { className: "h-4 w-4 text-orange-500" })]
|
|
47
|
+
}), /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a("div", {
|
|
48
|
+
className: "text-2xl font-bold",
|
|
49
|
+
children: "1"
|
|
50
|
+
}), /* @__PURE__ */ a("p", {
|
|
51
|
+
className: "text-xs text-muted-foreground",
|
|
52
|
+
children: "Within 30 days"
|
|
53
|
+
})] })] }),
|
|
54
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ o(l, {
|
|
55
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
56
|
+
children: [/* @__PURE__ */ a(u, {
|
|
57
|
+
className: "text-sm font-medium",
|
|
58
|
+
children: "Total Refills Used"
|
|
59
|
+
}), /* @__PURE__ */ a(r, { className: "h-4 w-4 text-blue-500" })]
|
|
60
|
+
}), /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a("div", {
|
|
61
|
+
className: "text-2xl font-bold",
|
|
62
|
+
children: h
|
|
63
|
+
}), /* @__PURE__ */ a("p", {
|
|
64
|
+
className: "text-xs text-muted-foreground",
|
|
65
|
+
children: "Across all prescriptions"
|
|
66
|
+
})] })] }),
|
|
67
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ o(l, {
|
|
68
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
69
|
+
children: [/* @__PURE__ */ a(u, {
|
|
70
|
+
className: "text-sm font-medium",
|
|
71
|
+
children: "Cancelled"
|
|
72
|
+
}), /* @__PURE__ */ a(i, { className: "h-4 w-4 text-red-500" })]
|
|
73
|
+
}), /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a("div", {
|
|
74
|
+
className: "text-2xl font-bold",
|
|
75
|
+
children: m
|
|
76
|
+
}), /* @__PURE__ */ a("p", {
|
|
77
|
+
className: "text-xs text-muted-foreground",
|
|
78
|
+
children: "Discontinued"
|
|
79
|
+
})] })] })
|
|
80
|
+
]
|
|
81
|
+
}),
|
|
82
|
+
/* @__PURE__ */ o(s, { children: [/* @__PURE__ */ a(l, { children: /* @__PURE__ */ a(u, { children: "Prescription List" }) }), /* @__PURE__ */ a(c, { children: /* @__PURE__ */ a("div", {
|
|
83
|
+
className: "space-y-3",
|
|
84
|
+
children: f.map((e) => /* @__PURE__ */ o("div", {
|
|
85
|
+
className: "flex items-center justify-between p-3 rounded-lg bg-muted/50",
|
|
86
|
+
children: [/* @__PURE__ */ o("div", { children: [
|
|
87
|
+
/* @__PURE__ */ a("p", {
|
|
88
|
+
className: "text-sm font-medium",
|
|
89
|
+
children: e.medicationName
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ o("p", {
|
|
92
|
+
className: "text-xs text-muted-foreground",
|
|
93
|
+
children: [
|
|
94
|
+
e.patientName,
|
|
95
|
+
" · ",
|
|
96
|
+
e.dosage,
|
|
97
|
+
" ",
|
|
98
|
+
e.frequency
|
|
99
|
+
]
|
|
100
|
+
}),
|
|
101
|
+
/* @__PURE__ */ o("p", {
|
|
102
|
+
className: "text-xs text-muted-foreground",
|
|
103
|
+
children: [
|
|
104
|
+
"Prescribed: ",
|
|
105
|
+
e.prescribedDate,
|
|
106
|
+
" · Expires: ",
|
|
107
|
+
e.expiryDate
|
|
108
|
+
]
|
|
109
|
+
})
|
|
110
|
+
] }), /* @__PURE__ */ o("div", {
|
|
111
|
+
className: "flex items-center gap-3",
|
|
112
|
+
children: [/* @__PURE__ */ o("div", {
|
|
113
|
+
className: "text-right",
|
|
114
|
+
children: [/* @__PURE__ */ a("p", {
|
|
115
|
+
className: "text-xs text-muted-foreground",
|
|
116
|
+
children: "Refills"
|
|
117
|
+
}), /* @__PURE__ */ o("p", {
|
|
118
|
+
className: "text-sm font-medium",
|
|
119
|
+
children: [
|
|
120
|
+
e.refillsUsed,
|
|
121
|
+
"/",
|
|
122
|
+
e.refillsAllowed
|
|
123
|
+
]
|
|
124
|
+
})]
|
|
125
|
+
}), /* @__PURE__ */ a("span", {
|
|
126
|
+
className: `text-xs font-medium px-2 py-0.5 rounded-full ${d[e.status]}`,
|
|
127
|
+
children: e.status
|
|
128
|
+
})]
|
|
129
|
+
})]
|
|
130
|
+
}, e.id))
|
|
131
|
+
}) })] })
|
|
132
|
+
]
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
//#endregion
|
|
136
|
+
export { f as ProviderPrescriptionsPage };
|
|
137
|
+
|
|
138
|
+
//# sourceMappingURL=ProviderPrescriptionsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderPrescriptionsPage.js","names":[],"sources":["../../../src/mybodyshield/pages/ProviderPrescriptionsPage.tsx"],"sourcesContent":["import { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { FileText, CheckCircle, AlertTriangle, XCircle } from 'lucide-react';\nimport { useMyBodyShieldStore } from '../store/mybodyshieldStore';\n\nconst statusColors: Record<string, string> = {\n active: 'bg-green-100 text-green-700',\n expired: 'bg-yellow-100 text-yellow-700',\n cancelled: 'bg-red-100 text-red-700',\n};\n\nexport function ProviderPrescriptionsPage() {\n const { prescriptions } = useMyBodyShieldStore();\n const active = prescriptions.filter((p) => p.status === 'active').length;\n const expired = prescriptions.filter((p) => p.status === 'expired').length;\n const cancelled = prescriptions.filter((p) => p.status === 'cancelled').length;\n const totalRefillsUsed = prescriptions.reduce((a, p) => a + p.refillsUsed, 0);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Prescriptions</h1>\n <p className=\"text-sm text-muted-foreground\">\n Manage patient prescriptions and refill authorizations\n </p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Active Prescriptions</CardTitle>\n <CheckCircle className=\"h-4 w-4 text-green-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{active}</div>\n <p className=\"text-xs text-muted-foreground\">Currently valid</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Expiring Soon</CardTitle>\n <AlertTriangle className=\"h-4 w-4 text-orange-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">1</div>\n <p className=\"text-xs text-muted-foreground\">Within 30 days</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Refills Used</CardTitle>\n <FileText className=\"h-4 w-4 text-blue-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{totalRefillsUsed}</div>\n <p className=\"text-xs text-muted-foreground\">Across all prescriptions</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Cancelled</CardTitle>\n <XCircle className=\"h-4 w-4 text-red-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{cancelled}</div>\n <p className=\"text-xs text-muted-foreground\">Discontinued</p>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Prescription List</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {prescriptions.map((rx) => (\n <div\n key={rx.id}\n className=\"flex items-center justify-between p-3 rounded-lg bg-muted/50\"\n >\n <div>\n <p className=\"text-sm font-medium\">{rx.medicationName}</p>\n <p className=\"text-xs text-muted-foreground\">\n {rx.patientName} · {rx.dosage} {rx.frequency}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n Prescribed: {rx.prescribedDate} · Expires: {rx.expiryDate}\n </p>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"text-right\">\n <p className=\"text-xs text-muted-foreground\">Refills</p>\n <p className=\"text-sm font-medium\">\n {rx.refillsUsed}/{rx.refillsAllowed}\n </p>\n </div>\n <span\n className={`text-xs font-medium px-2 py-0.5 rounded-full ${statusColors[rx.status]}`}\n >\n {rx.status}\n </span>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,IAAM,IAAuC;CAC3C,QAAQ;CACR,SAAS;CACT,WAAW;CACZ;AAED,SAAgB,IAA4B;CAC1C,IAAM,EAAE,qBAAkB,GAAsB,EAC1C,IAAS,EAAc,QAAQ,MAAM,EAAE,WAAW,SAAS,CAAC;AAClD,GAAc,QAAQ,MAAM,EAAE,WAAW,UAAU,CAAC;CACpE,IAAM,IAAY,EAAc,QAAQ,MAAM,EAAE,WAAW,YAAY,CAAC,QAClE,IAAmB,EAAc,QAAQ,GAAG,MAAM,IAAI,EAAE,aAAa,EAAE;AAE7E,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAAyB;IAAkB,CAAA,EACzD,kBAAC,KAAD;IAAG,WAAU;cAAgC;IAEzC,CAAA,CACA,EAAA,CAAA;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MAAY,WAAU;gBAAtB,CACE,kBAAC,GAAD;OAAW,WAAU;iBAAsB;OAAgC,CAAA,EAC3E,kBAAC,GAAD,EAAa,WAAU,0BAA2B,CAAA,CACvC;SACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAsB;MAAa,CAAA,EAClD,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAmB,CAAA,CACpD,EAAA,CAAA,CACT,EAAA,CAAA;KACP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MAAY,WAAU;gBAAtB,CACE,kBAAC,GAAD;OAAW,WAAU;iBAAsB;OAAyB,CAAA,EACpE,kBAAC,GAAD,EAAe,WAAU,2BAA4B,CAAA,CAC1C;SACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAqB;MAAO,CAAA,EAC3C,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAkB,CAAA,CACnD,EAAA,CAAA,CACT,EAAA,CAAA;KACP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MAAY,WAAU;gBAAtB,CACE,kBAAC,GAAD;OAAW,WAAU;iBAAsB;OAA8B,CAAA,EACzE,kBAAC,GAAD,EAAU,WAAU,yBAA0B,CAAA,CACnC;SACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAsB;MAAuB,CAAA,EAC5D,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAA4B,CAAA,CAC7D,EAAA,CAAA,CACT,EAAA,CAAA;KACP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MAAY,WAAU;gBAAtB,CACE,kBAAC,GAAD;OAAW,WAAU;iBAAsB;OAAqB,CAAA,EAChE,kBAAC,GAAD,EAAS,WAAU,wBAAyB,CAAA,CACjC;SACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAsB;MAAgB,CAAA,EACrD,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAgB,CAAA,CACjD,EAAA,CAAA,CACT,EAAA,CAAA;KACH;;GAEN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,qBAA6B,CAAA,EAC7B,CAAA,EACb,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAc,KAAK,MAClB,kBAAC,OAAD;KAEE,WAAU;eAFZ,CAIE,kBAAC,OAAD,EAAA,UAAA;MACE,kBAAC,KAAD;OAAG,WAAU;iBAAuB,EAAG;OAAmB,CAAA;MAC1D,kBAAC,KAAD;OAAG,WAAU;iBAAb;QACG,EAAG;QAAY;QAAW,EAAG;QAAO;QAAE,EAAG;QACxC;;MACJ,kBAAC,KAAD;OAAG,WAAU;iBAAb;QAA6C;QAC9B,EAAG;QAAe;QAAoB,EAAG;QACpD;;MACA,EAAA,CAAA,EACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAgC;QAAW,CAAA,EACxD,kBAAC,KAAD;QAAG,WAAU;kBAAb;SACG,EAAG;SAAY;SAAE,EAAG;SACnB;UACA;UACN,kBAAC,QAAD;OACE,WAAW,gDAAgD,EAAa,EAAG;iBAE1E,EAAG;OACC,CAAA,CACH;QACF;OAzBC,EAAG,GAyBJ,CACN;IACE,CAAA,EACM,CAAA,CACT,EAAA,CAAA;GACH"}
|