@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.
Files changed (210) hide show
  1. package/README.md +12 -0
  2. package/dist/dev/main.d.ts +2 -0
  3. package/dist/dev/main.d.ts.map +1 -0
  4. package/dist/generated/global-operations.d.ts +2 -0
  5. package/dist/generated/global-operations.d.ts.map +1 -0
  6. package/dist/generated/global-types.d.ts +18199 -0
  7. package/dist/generated/global-types.d.ts.map +1 -0
  8. package/dist/generated/wspace-operations.d.ts +2 -0
  9. package/dist/generated/wspace-operations.d.ts.map +1 -0
  10. package/dist/generated/wspace-types.d.ts +43046 -0
  11. package/dist/generated/wspace-types.d.ts.map +1 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +5 -0
  15. package/dist/mybodyshield/MyBodyShieldRoot.d.ts +5 -0
  16. package/dist/mybodyshield/MyBodyShieldRoot.d.ts.map +1 -0
  17. package/dist/mybodyshield/MyBodyShieldRoot.js +364 -0
  18. package/dist/mybodyshield/MyBodyShieldRoot.js.map +1 -0
  19. package/dist/mybodyshield/MyBodyShieldRoutes.d.ts +2 -0
  20. package/dist/mybodyshield/MyBodyShieldRoutes.d.ts.map +1 -0
  21. package/dist/mybodyshield/MyBodyShieldRoutes.js +199 -0
  22. package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -0
  23. package/dist/mybodyshield/index.d.ts +5 -0
  24. package/dist/mybodyshield/index.d.ts.map +1 -0
  25. package/dist/mybodyshield/index.js +3 -0
  26. package/dist/mybodyshield/pages/AdminAiinsightsPage.d.ts +2 -0
  27. package/dist/mybodyshield/pages/AdminAiinsightsPage.d.ts.map +1 -0
  28. package/dist/mybodyshield/pages/AdminAiinsightsPage.js +161 -0
  29. package/dist/mybodyshield/pages/AdminAiinsightsPage.js.map +1 -0
  30. package/dist/mybodyshield/pages/AdminAnalyticsPage.d.ts +2 -0
  31. package/dist/mybodyshield/pages/AdminAnalyticsPage.d.ts.map +1 -0
  32. package/dist/mybodyshield/pages/AdminAnalyticsPage.js +193 -0
  33. package/dist/mybodyshield/pages/AdminAnalyticsPage.js.map +1 -0
  34. package/dist/mybodyshield/pages/AdminComplianceReportsPage.d.ts +2 -0
  35. package/dist/mybodyshield/pages/AdminComplianceReportsPage.d.ts.map +1 -0
  36. package/dist/mybodyshield/pages/AdminComplianceReportsPage.js +214 -0
  37. package/dist/mybodyshield/pages/AdminComplianceReportsPage.js.map +1 -0
  38. package/dist/mybodyshield/pages/AdminDashboardPage.d.ts +2 -0
  39. package/dist/mybodyshield/pages/AdminDashboardPage.d.ts.map +1 -0
  40. package/dist/mybodyshield/pages/AdminDashboardPage.js +186 -0
  41. package/dist/mybodyshield/pages/AdminDashboardPage.js.map +1 -0
  42. package/dist/mybodyshield/pages/AdminOrganizationManagementPage.d.ts +2 -0
  43. package/dist/mybodyshield/pages/AdminOrganizationManagementPage.d.ts.map +1 -0
  44. package/dist/mybodyshield/pages/AdminOrganizationManagementPage.js +252 -0
  45. package/dist/mybodyshield/pages/AdminOrganizationManagementPage.js.map +1 -0
  46. package/dist/mybodyshield/pages/AdminSystemSettingsPage.d.ts +2 -0
  47. package/dist/mybodyshield/pages/AdminSystemSettingsPage.d.ts.map +1 -0
  48. package/dist/mybodyshield/pages/AdminSystemSettingsPage.js +159 -0
  49. package/dist/mybodyshield/pages/AdminSystemSettingsPage.js.map +1 -0
  50. package/dist/mybodyshield/pages/AdminUserManagementPage.d.ts +2 -0
  51. package/dist/mybodyshield/pages/AdminUserManagementPage.d.ts.map +1 -0
  52. package/dist/mybodyshield/pages/AdminUserManagementPage.js +208 -0
  53. package/dist/mybodyshield/pages/AdminUserManagementPage.js.map +1 -0
  54. package/dist/mybodyshield/pages/FitnessAssessmentsPage.d.ts +2 -0
  55. package/dist/mybodyshield/pages/FitnessAssessmentsPage.d.ts.map +1 -0
  56. package/dist/mybodyshield/pages/FitnessAssessmentsPage.js +194 -0
  57. package/dist/mybodyshield/pages/FitnessAssessmentsPage.js.map +1 -0
  58. package/dist/mybodyshield/pages/FitnessClientDetailsPage.d.ts +2 -0
  59. package/dist/mybodyshield/pages/FitnessClientDetailsPage.d.ts.map +1 -0
  60. package/dist/mybodyshield/pages/FitnessClientDetailsPage.js +192 -0
  61. package/dist/mybodyshield/pages/FitnessClientDetailsPage.js.map +1 -0
  62. package/dist/mybodyshield/pages/FitnessClientManagementPage.d.ts +2 -0
  63. package/dist/mybodyshield/pages/FitnessClientManagementPage.d.ts.map +1 -0
  64. package/dist/mybodyshield/pages/FitnessClientManagementPage.js +128 -0
  65. package/dist/mybodyshield/pages/FitnessClientManagementPage.js.map +1 -0
  66. package/dist/mybodyshield/pages/FitnessDashboardPage.d.ts +2 -0
  67. package/dist/mybodyshield/pages/FitnessDashboardPage.d.ts.map +1 -0
  68. package/dist/mybodyshield/pages/FitnessDashboardPage.js +156 -0
  69. package/dist/mybodyshield/pages/FitnessDashboardPage.js.map +1 -0
  70. package/dist/mybodyshield/pages/FitnessReportsPage.d.ts +2 -0
  71. package/dist/mybodyshield/pages/FitnessReportsPage.d.ts.map +1 -0
  72. package/dist/mybodyshield/pages/FitnessReportsPage.js +138 -0
  73. package/dist/mybodyshield/pages/FitnessReportsPage.js.map +1 -0
  74. package/dist/mybodyshield/pages/FitnessWorkoutPlansPage.d.ts +2 -0
  75. package/dist/mybodyshield/pages/FitnessWorkoutPlansPage.d.ts.map +1 -0
  76. package/dist/mybodyshield/pages/FitnessWorkoutPlansPage.js +176 -0
  77. package/dist/mybodyshield/pages/FitnessWorkoutPlansPage.js.map +1 -0
  78. package/dist/mybodyshield/pages/PatientAppointmentsPage.d.ts +2 -0
  79. package/dist/mybodyshield/pages/PatientAppointmentsPage.d.ts.map +1 -0
  80. package/dist/mybodyshield/pages/PatientAppointmentsPage.js +132 -0
  81. package/dist/mybodyshield/pages/PatientAppointmentsPage.js.map +1 -0
  82. package/dist/mybodyshield/pages/PatientDashboardPage.d.ts +2 -0
  83. package/dist/mybodyshield/pages/PatientDashboardPage.d.ts.map +1 -0
  84. package/dist/mybodyshield/pages/PatientDashboardPage.js +190 -0
  85. package/dist/mybodyshield/pages/PatientDashboardPage.js.map +1 -0
  86. package/dist/mybodyshield/pages/PatientFitnessTrackingPage.d.ts +2 -0
  87. package/dist/mybodyshield/pages/PatientFitnessTrackingPage.d.ts.map +1 -0
  88. package/dist/mybodyshield/pages/PatientFitnessTrackingPage.js +137 -0
  89. package/dist/mybodyshield/pages/PatientFitnessTrackingPage.js.map +1 -0
  90. package/dist/mybodyshield/pages/PatientHealthGoalsPage.d.ts +2 -0
  91. package/dist/mybodyshield/pages/PatientHealthGoalsPage.d.ts.map +1 -0
  92. package/dist/mybodyshield/pages/PatientHealthGoalsPage.js +131 -0
  93. package/dist/mybodyshield/pages/PatientHealthGoalsPage.js.map +1 -0
  94. package/dist/mybodyshield/pages/PatientHealthOverviewPage.d.ts +2 -0
  95. package/dist/mybodyshield/pages/PatientHealthOverviewPage.d.ts.map +1 -0
  96. package/dist/mybodyshield/pages/PatientHealthOverviewPage.js +273 -0
  97. package/dist/mybodyshield/pages/PatientHealthOverviewPage.js.map +1 -0
  98. package/dist/mybodyshield/pages/PatientLabResultsPage.d.ts +2 -0
  99. package/dist/mybodyshield/pages/PatientLabResultsPage.d.ts.map +1 -0
  100. package/dist/mybodyshield/pages/PatientLabResultsPage.js +133 -0
  101. package/dist/mybodyshield/pages/PatientLabResultsPage.js.map +1 -0
  102. package/dist/mybodyshield/pages/PatientMedicationsPage.d.ts +2 -0
  103. package/dist/mybodyshield/pages/PatientMedicationsPage.d.ts.map +1 -0
  104. package/dist/mybodyshield/pages/PatientMedicationsPage.js +158 -0
  105. package/dist/mybodyshield/pages/PatientMedicationsPage.js.map +1 -0
  106. package/dist/mybodyshield/pages/PatientMentalHealthPage.d.ts +2 -0
  107. package/dist/mybodyshield/pages/PatientMentalHealthPage.d.ts.map +1 -0
  108. package/dist/mybodyshield/pages/PatientMentalHealthPage.js +152 -0
  109. package/dist/mybodyshield/pages/PatientMentalHealthPage.js.map +1 -0
  110. package/dist/mybodyshield/pages/PatientNutritionTrackingPage.d.ts +2 -0
  111. package/dist/mybodyshield/pages/PatientNutritionTrackingPage.d.ts.map +1 -0
  112. package/dist/mybodyshield/pages/PatientNutritionTrackingPage.js +141 -0
  113. package/dist/mybodyshield/pages/PatientNutritionTrackingPage.js.map +1 -0
  114. package/dist/mybodyshield/pages/PatientVitalSignsPage.d.ts +2 -0
  115. package/dist/mybodyshield/pages/PatientVitalSignsPage.d.ts.map +1 -0
  116. package/dist/mybodyshield/pages/PatientVitalSignsPage.js +160 -0
  117. package/dist/mybodyshield/pages/PatientVitalSignsPage.js.map +1 -0
  118. package/dist/mybodyshield/pages/ProviderCalendarPage.d.ts +2 -0
  119. package/dist/mybodyshield/pages/ProviderCalendarPage.d.ts.map +1 -0
  120. package/dist/mybodyshield/pages/ProviderCalendarPage.js +127 -0
  121. package/dist/mybodyshield/pages/ProviderCalendarPage.js.map +1 -0
  122. package/dist/mybodyshield/pages/ProviderCarePlansPage.d.ts +2 -0
  123. package/dist/mybodyshield/pages/ProviderCarePlansPage.d.ts.map +1 -0
  124. package/dist/mybodyshield/pages/ProviderCarePlansPage.js +153 -0
  125. package/dist/mybodyshield/pages/ProviderCarePlansPage.js.map +1 -0
  126. package/dist/mybodyshield/pages/ProviderClinicalToolsPage.d.ts +2 -0
  127. package/dist/mybodyshield/pages/ProviderClinicalToolsPage.d.ts.map +1 -0
  128. package/dist/mybodyshield/pages/ProviderClinicalToolsPage.js +174 -0
  129. package/dist/mybodyshield/pages/ProviderClinicalToolsPage.js.map +1 -0
  130. package/dist/mybodyshield/pages/ProviderDashboardPage.d.ts +2 -0
  131. package/dist/mybodyshield/pages/ProviderDashboardPage.d.ts.map +1 -0
  132. package/dist/mybodyshield/pages/ProviderDashboardPage.js +154 -0
  133. package/dist/mybodyshield/pages/ProviderDashboardPage.js.map +1 -0
  134. package/dist/mybodyshield/pages/ProviderPatientDetailsPage.d.ts +2 -0
  135. package/dist/mybodyshield/pages/ProviderPatientDetailsPage.d.ts.map +1 -0
  136. package/dist/mybodyshield/pages/ProviderPatientDetailsPage.js +295 -0
  137. package/dist/mybodyshield/pages/ProviderPatientDetailsPage.js.map +1 -0
  138. package/dist/mybodyshield/pages/ProviderPatientManagementPage.d.ts +2 -0
  139. package/dist/mybodyshield/pages/ProviderPatientManagementPage.d.ts.map +1 -0
  140. package/dist/mybodyshield/pages/ProviderPatientManagementPage.js +133 -0
  141. package/dist/mybodyshield/pages/ProviderPatientManagementPage.js.map +1 -0
  142. package/dist/mybodyshield/pages/ProviderPrescriptionsPage.d.ts +2 -0
  143. package/dist/mybodyshield/pages/ProviderPrescriptionsPage.d.ts.map +1 -0
  144. package/dist/mybodyshield/pages/ProviderPrescriptionsPage.js +138 -0
  145. package/dist/mybodyshield/pages/ProviderPrescriptionsPage.js.map +1 -0
  146. package/dist/mybodyshield/pages/ProviderReportsPage.d.ts +2 -0
  147. package/dist/mybodyshield/pages/ProviderReportsPage.d.ts.map +1 -0
  148. package/dist/mybodyshield/pages/ProviderReportsPage.js +149 -0
  149. package/dist/mybodyshield/pages/ProviderReportsPage.js.map +1 -0
  150. package/dist/mybodyshield/pages/SharedAppointmentsPage.d.ts +2 -0
  151. package/dist/mybodyshield/pages/SharedAppointmentsPage.d.ts.map +1 -0
  152. package/dist/mybodyshield/pages/SharedAppointmentsPage.js +129 -0
  153. package/dist/mybodyshield/pages/SharedAppointmentsPage.js.map +1 -0
  154. package/dist/mybodyshield/pages/SharedCommunityPage.d.ts +2 -0
  155. package/dist/mybodyshield/pages/SharedCommunityPage.d.ts.map +1 -0
  156. package/dist/mybodyshield/pages/SharedCommunityPage.js +152 -0
  157. package/dist/mybodyshield/pages/SharedCommunityPage.js.map +1 -0
  158. package/dist/mybodyshield/pages/SharedEmergencyAlertsPage.d.ts +2 -0
  159. package/dist/mybodyshield/pages/SharedEmergencyAlertsPage.d.ts.map +1 -0
  160. package/dist/mybodyshield/pages/SharedEmergencyAlertsPage.js +165 -0
  161. package/dist/mybodyshield/pages/SharedEmergencyAlertsPage.js.map +1 -0
  162. package/dist/mybodyshield/pages/SharedEmergencyPage.d.ts +2 -0
  163. package/dist/mybodyshield/pages/SharedEmergencyPage.d.ts.map +1 -0
  164. package/dist/mybodyshield/pages/SharedEmergencyPage.js +183 -0
  165. package/dist/mybodyshield/pages/SharedEmergencyPage.js.map +1 -0
  166. package/dist/mybodyshield/pages/SharedHealthAnalyticsPage.d.ts +2 -0
  167. package/dist/mybodyshield/pages/SharedHealthAnalyticsPage.d.ts.map +1 -0
  168. package/dist/mybodyshield/pages/SharedHealthAnalyticsPage.js +159 -0
  169. package/dist/mybodyshield/pages/SharedHealthAnalyticsPage.js.map +1 -0
  170. package/dist/mybodyshield/pages/SharedMarketplacePage.d.ts +2 -0
  171. package/dist/mybodyshield/pages/SharedMarketplacePage.d.ts.map +1 -0
  172. package/dist/mybodyshield/pages/SharedMarketplacePage.js +193 -0
  173. package/dist/mybodyshield/pages/SharedMarketplacePage.js.map +1 -0
  174. package/dist/mybodyshield/pages/SharedMessagesPage.d.ts +2 -0
  175. package/dist/mybodyshield/pages/SharedMessagesPage.d.ts.map +1 -0
  176. package/dist/mybodyshield/pages/SharedMessagesPage.js +156 -0
  177. package/dist/mybodyshield/pages/SharedMessagesPage.js.map +1 -0
  178. package/dist/mybodyshield/pages/WellnessAssessmentsPage.d.ts +2 -0
  179. package/dist/mybodyshield/pages/WellnessAssessmentsPage.d.ts.map +1 -0
  180. package/dist/mybodyshield/pages/WellnessAssessmentsPage.js +147 -0
  181. package/dist/mybodyshield/pages/WellnessAssessmentsPage.js.map +1 -0
  182. package/dist/mybodyshield/pages/WellnessClientsPage.d.ts +2 -0
  183. package/dist/mybodyshield/pages/WellnessClientsPage.d.ts.map +1 -0
  184. package/dist/mybodyshield/pages/WellnessClientsPage.js +182 -0
  185. package/dist/mybodyshield/pages/WellnessClientsPage.js.map +1 -0
  186. package/dist/mybodyshield/pages/WellnessDashboardPage.d.ts +2 -0
  187. package/dist/mybodyshield/pages/WellnessDashboardPage.d.ts.map +1 -0
  188. package/dist/mybodyshield/pages/WellnessDashboardPage.js +136 -0
  189. package/dist/mybodyshield/pages/WellnessDashboardPage.js.map +1 -0
  190. package/dist/mybodyshield/pages/WellnessProgramsPage.d.ts +2 -0
  191. package/dist/mybodyshield/pages/WellnessProgramsPage.d.ts.map +1 -0
  192. package/dist/mybodyshield/pages/WellnessProgramsPage.js +140 -0
  193. package/dist/mybodyshield/pages/WellnessProgramsPage.js.map +1 -0
  194. package/dist/mybodyshield/providers/MyBodyShieldProvider.d.ts +6 -0
  195. package/dist/mybodyshield/providers/MyBodyShieldProvider.d.ts.map +1 -0
  196. package/dist/mybodyshield/providers/MyBodyShieldProvider.js +27 -0
  197. package/dist/mybodyshield/providers/MyBodyShieldProvider.js.map +1 -0
  198. package/dist/mybodyshield/store/mybodyshieldStore.d.ts +197 -0
  199. package/dist/mybodyshield/store/mybodyshieldStore.d.ts.map +1 -0
  200. package/dist/mybodyshield/store/mybodyshieldStore.js +710 -0
  201. package/dist/mybodyshield/store/mybodyshieldStore.js.map +1 -0
  202. package/dist/mybodyshield/types/index.d.ts +51 -0
  203. package/dist/mybodyshield/types/index.d.ts.map +1 -0
  204. package/dist/mybodyshield/utils/cn.d.ts +4 -0
  205. package/dist/mybodyshield/utils/cn.d.ts.map +1 -0
  206. package/dist/mybodyshield/utils/navigation.d.ts +2 -0
  207. package/dist/mybodyshield/utils/navigation.d.ts.map +1 -0
  208. package/dist/mybodyshield/utils/navigation.js +8 -0
  209. package/dist/mybodyshield/utils/navigation.js.map +1 -0
  210. 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}&deg;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,2 @@
1
+ export declare function ProviderPatientManagementPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProviderPatientManagementPage.d.ts.map
@@ -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} &middot; {patient.bloodType} &middot;{' '}\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,2 @@
1
+ export declare function ProviderPrescriptionsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProviderPrescriptionsPage.d.ts.map
@@ -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} &middot; {rx.dosage} {rx.frequency}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n Prescribed: {rx.prescribedDate} &middot; 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":"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"}