@ampath/esm-dha-workflow-app 4.0.0-next.34 → 4.0.0-next.340

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 (754) hide show
  1. package/README.md +19 -0
  2. package/dist/1149.js +1 -0
  3. package/dist/1149.js.map +1 -0
  4. package/dist/1197.js +1 -0
  5. package/dist/1277.js +1 -0
  6. package/dist/1277.js.map +1 -0
  7. package/dist/1362.js +1 -0
  8. package/dist/1362.js.map +1 -0
  9. package/dist/1551.js +1 -0
  10. package/dist/1551.js.map +1 -0
  11. package/dist/1556.js +1 -0
  12. package/dist/1556.js.map +1 -0
  13. package/dist/1925.js +1 -0
  14. package/dist/1925.js.map +1 -0
  15. package/dist/1927.js +1 -0
  16. package/dist/1927.js.map +1 -0
  17. package/dist/203.js +1 -0
  18. package/dist/203.js.map +1 -0
  19. package/dist/2054.js +1 -0
  20. package/dist/2054.js.map +1 -0
  21. package/dist/2093.js +1 -0
  22. package/dist/2093.js.map +1 -0
  23. package/dist/2177.js +2 -0
  24. package/dist/2177.js.map +1 -0
  25. package/dist/2200.js +1 -0
  26. package/dist/2200.js.map +1 -0
  27. package/dist/2230.js +1 -0
  28. package/dist/2230.js.map +1 -0
  29. package/dist/2493.js +1 -0
  30. package/dist/2493.js.map +1 -0
  31. package/dist/2914.js +1 -0
  32. package/dist/2914.js.map +1 -0
  33. package/dist/2936.js +1 -0
  34. package/dist/2936.js.map +1 -0
  35. package/dist/2988.js +1 -0
  36. package/dist/2988.js.map +1 -0
  37. package/dist/3041.js +1 -0
  38. package/dist/3041.js.map +1 -0
  39. package/dist/307.js +1 -0
  40. package/dist/307.js.map +1 -0
  41. package/dist/3099.js +1 -0
  42. package/dist/3184.js +2 -0
  43. package/dist/3184.js.map +1 -0
  44. package/dist/3202.js +1 -0
  45. package/dist/3202.js.map +1 -0
  46. package/dist/3222.js +1 -0
  47. package/dist/3222.js.map +1 -0
  48. package/dist/347.js +1 -0
  49. package/dist/347.js.map +1 -0
  50. package/dist/4003.js +1 -0
  51. package/dist/4003.js.map +1 -0
  52. package/dist/4008.js +1 -0
  53. package/dist/4008.js.map +1 -0
  54. package/dist/4055.js +1 -0
  55. package/dist/4205.js +1 -0
  56. package/dist/4205.js.map +1 -0
  57. package/dist/4225.js +1 -0
  58. package/dist/4225.js.map +1 -0
  59. package/dist/4231.js +1 -0
  60. package/dist/4231.js.map +1 -0
  61. package/dist/4300.js +1 -0
  62. package/dist/4335.js +1 -0
  63. package/dist/4353.js +1 -0
  64. package/dist/4353.js.map +1 -0
  65. package/dist/4431.js +1 -0
  66. package/dist/4431.js.map +1 -0
  67. package/dist/4454.js +1 -0
  68. package/dist/4454.js.map +1 -0
  69. package/dist/4457.js +2 -0
  70. package/dist/4457.js.LICENSE.txt +282 -0
  71. package/dist/4457.js.map +1 -0
  72. package/dist/446.js +1 -0
  73. package/dist/446.js.map +1 -0
  74. package/dist/4605.js +1 -0
  75. package/dist/4605.js.map +1 -0
  76. package/dist/4611.js +1 -0
  77. package/dist/4611.js.map +1 -0
  78. package/dist/4652.js +1 -0
  79. package/dist/4674.js +1 -0
  80. package/dist/4674.js.map +1 -0
  81. package/dist/4755.js +1 -0
  82. package/dist/4755.js.map +1 -0
  83. package/dist/4986.js +1 -0
  84. package/dist/4986.js.map +1 -0
  85. package/dist/5097.js +1 -0
  86. package/dist/5097.js.map +1 -0
  87. package/dist/5119.js +1 -0
  88. package/dist/5119.js.map +1 -0
  89. package/dist/5167.js +1 -0
  90. package/dist/5167.js.map +1 -0
  91. package/dist/5380.js +1 -0
  92. package/dist/5380.js.map +1 -0
  93. package/dist/5422.js +1 -0
  94. package/dist/5422.js.map +1 -0
  95. package/dist/5576.js +1 -0
  96. package/dist/5576.js.map +1 -0
  97. package/dist/5851.js +1 -0
  98. package/dist/5851.js.map +1 -0
  99. package/dist/5961.js +1 -0
  100. package/dist/5961.js.map +1 -0
  101. package/dist/6177.js +1 -0
  102. package/dist/6177.js.map +1 -0
  103. package/dist/6264.js +1 -0
  104. package/dist/6264.js.map +1 -0
  105. package/dist/6540.js +2 -0
  106. package/dist/6540.js.map +1 -0
  107. package/dist/6606.js +1 -0
  108. package/dist/6606.js.map +1 -0
  109. package/dist/6720.js +1 -0
  110. package/dist/6720.js.map +1 -0
  111. package/dist/6824.js +1 -0
  112. package/dist/6824.js.map +1 -0
  113. package/dist/6942.js +1 -0
  114. package/dist/6942.js.map +1 -0
  115. package/dist/71.js +1 -0
  116. package/dist/71.js.map +1 -0
  117. package/dist/7207.js +1 -0
  118. package/dist/7207.js.map +1 -0
  119. package/dist/7240.js +1 -0
  120. package/dist/7240.js.map +1 -0
  121. package/dist/7255.js +1 -0
  122. package/dist/7255.js.map +1 -0
  123. package/dist/7420.js +1 -0
  124. package/dist/7420.js.map +1 -0
  125. package/dist/7521.js +1 -0
  126. package/dist/7521.js.map +1 -0
  127. package/dist/7557.js +1 -0
  128. package/dist/7557.js.map +1 -0
  129. package/dist/7717.js +1 -0
  130. package/dist/7717.js.map +1 -0
  131. package/dist/7830.js +2 -0
  132. package/dist/7830.js.map +1 -0
  133. package/dist/7941.js +1 -0
  134. package/dist/7941.js.map +1 -0
  135. package/dist/8091.js +1 -0
  136. package/dist/8091.js.map +1 -0
  137. package/dist/810.js +1 -2
  138. package/dist/810.js.map +1 -1
  139. package/dist/8558.js +1 -0
  140. package/dist/8558.js.map +1 -0
  141. package/dist/8733.js +1 -0
  142. package/dist/8733.js.map +1 -0
  143. package/dist/874.js +1 -0
  144. package/dist/874.js.map +1 -0
  145. package/dist/8895.js +1 -0
  146. package/dist/8895.js.map +1 -0
  147. package/dist/9070.js +1 -0
  148. package/dist/9070.js.map +1 -0
  149. package/dist/9091.js +1 -0
  150. package/dist/9091.js.map +1 -0
  151. package/dist/9093.js +1 -0
  152. package/dist/9093.js.map +1 -0
  153. package/dist/9338.js +1 -0
  154. package/dist/9338.js.map +1 -0
  155. package/dist/9418.js +2 -0
  156. package/dist/9418.js.LICENSE.txt +1 -0
  157. package/dist/9418.js.map +1 -0
  158. package/dist/9428.js +1 -0
  159. package/dist/9428.js.map +1 -0
  160. package/dist/9583.js +2 -0
  161. package/dist/9583.js.map +1 -0
  162. package/dist/esm-dha-workflow-app.js +1 -1
  163. package/dist/esm-dha-workflow-app.js.buildmanifest.json +1627 -214
  164. package/dist/esm-dha-workflow-app.js.map +1 -1
  165. package/dist/main.js +1 -1
  166. package/dist/main.js.map +1 -1
  167. package/dist/routes.json +1 -1
  168. package/local-config.json +5 -0
  169. package/package.json +16 -6
  170. package/src/admissions/admission-request-list/admission-request-list.scss +0 -0
  171. package/src/admissions/admission-request-list/admission-request-list.tsx +263 -0
  172. package/src/admissions/admissions-dashboard.component.scss +15 -0
  173. package/src/admissions/admissions-dashboard.component.tsx +277 -0
  174. package/src/admissions/admissions.resource.ts +233 -0
  175. package/src/admissions/admitted-list/admitted-patients-list.tsx +206 -0
  176. package/src/admissions/awaiting-discharge-list/awaiting-discharge-list.tsx +197 -0
  177. package/src/admissions/bed-assigment-request/bed-assignment-request-list.tsx +134 -0
  178. package/src/admissions/constants/index.ts +33 -0
  179. package/src/admissions/discharged-list/discharged-list.scss +0 -0
  180. package/src/admissions/discharged-list/discharged-list.tsx +67 -0
  181. package/src/admissions/form-entry-workspace/form-entry-workspace.tsx +62 -0
  182. package/src/admissions/inpatient/admission-history/patient-admission-history.tsx +76 -0
  183. package/src/admissions/inpatient/admission-requests/patient-admission-requests.scss +19 -0
  184. package/src/admissions/inpatient/admission-requests/patient-admission-requests.tsx +72 -0
  185. package/src/admissions/inpatient/inpatient-admissions.component.scss +7 -0
  186. package/src/admissions/inpatient/inpatient-admissions.component.tsx +46 -0
  187. package/src/admissions/modal/add-bill-items/add-bill-items.modal.scss +17 -0
  188. package/src/admissions/modal/add-bill-items/add-bill-items.modal.tsx +233 -0
  189. package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.scss +23 -0
  190. package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.tsx +156 -0
  191. package/src/admissions/modal/admit-patient/admit-patient.modal.scss +0 -0
  192. package/src/admissions/modal/admit-patient/admit-patient.modal.tsx +111 -0
  193. package/src/admissions/modal/bed-swap/bed-swap.modal.scss +0 -0
  194. package/src/admissions/modal/bed-swap/bed-swap.modal.tsx +102 -0
  195. package/src/admissions/modal/cancel-admission-request/cancel-admission-request.scss +11 -0
  196. package/src/admissions/modal/cancel-admission-request/cancel-admission-request.tsx +105 -0
  197. package/src/admissions/modal/discharge/discharge-patient.modal.scss +13 -0
  198. package/src/admissions/modal/discharge/discharge-patient.modal.tsx +86 -0
  199. package/src/admissions/types/index.ts +263 -0
  200. package/src/appointments/appointments.component.scss +6 -0
  201. package/src/appointments/appointments.component.tsx +8 -1
  202. package/src/billing/api/billing.api.ts +139 -0
  203. package/src/billing/billing-claims.resource.ts +900 -0
  204. package/src/billing/billing-dashboard-link.component.tsx +31 -0
  205. package/src/billing/billing-dashboard-reset.ts +27 -0
  206. package/src/billing/billing-root.tsx +42 -0
  207. package/src/billing/dashboard/billingDashboard.component.scss +0 -0
  208. package/src/billing/dashboard/billingDashboard.component.tsx +25 -0
  209. package/src/billing/dashboard/v2/active-visits/active-visits.component.tsx +257 -0
  210. package/src/billing/dashboard/v2/active-visits/active-visits.resource.ts +85 -0
  211. package/src/billing/dashboard/v2/active-visits/active-visits.scss +15 -0
  212. package/src/billing/dashboard/v2/active-visits.component.tsx +102 -0
  213. package/src/billing/dashboard/v2/admissions/admission-requests-tab.component.tsx +79 -0
  214. package/src/billing/dashboard/v2/billing-claims-dashboard.component.scss +209 -0
  215. package/src/billing/dashboard/v2/billing-claims-dashboard.component.tsx +347 -0
  216. package/src/billing/dashboard/v2/cash-checklist/bill-document.component.scss +90 -0
  217. package/src/billing/dashboard/v2/cash-checklist/bill-document.component.tsx +101 -0
  218. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.scss +199 -0
  219. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.tsx +361 -0
  220. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.resource.ts +239 -0
  221. package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.scss +246 -0
  222. package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.tsx +182 -0
  223. package/src/billing/dashboard/v2/claim-statuses.ts +143 -0
  224. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
  225. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +35 -0
  226. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.scss +67 -0
  227. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.tsx +90 -0
  228. package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.scss +28 -0
  229. package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.tsx +36 -0
  230. package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.scss +119 -0
  231. package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.tsx +198 -0
  232. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.scss +5 -0
  233. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +160 -0
  234. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.scss +105 -0
  235. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.tsx +184 -0
  236. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.scss +161 -0
  237. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.tsx +328 -0
  238. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +96 -0
  239. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-document.component.tsx +236 -0
  240. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.scss +98 -0
  241. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.tsx +292 -0
  242. package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +133 -0
  243. package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +217 -0
  244. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-by-token.component.tsx +150 -0
  245. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.scss +13 -0
  246. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.tsx +116 -0
  247. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.scss +338 -0
  248. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.tsx +616 -0
  249. package/src/billing/dashboard/v2/claim-visits/claim-visits.component.scss +5 -0
  250. package/src/billing/dashboard/v2/claim-visits/claim-visits.component.tsx +133 -0
  251. package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
  252. package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
  253. package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +17 -0
  254. package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +56 -0
  255. package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
  256. package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
  257. package/src/billing/dashboard/v2/claim-visits/modal/submit-claim/submit-claim.modal.tsx +204 -0
  258. package/src/billing/dashboard/v2/claim-visits/shared/_empty-state.scss +28 -0
  259. package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.scss +298 -0
  260. package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.tsx +252 -0
  261. package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.scss +42 -0
  262. package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.tsx +54 -0
  263. package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.scss +61 -0
  264. package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.tsx +150 -0
  265. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
  266. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
  267. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.tsx +648 -0
  268. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.scss +595 -0
  269. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.tsx +810 -0
  270. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.resource.ts +282 -0
  271. package/src/billing/dashboard/v2/claims-accounting/bill-utils.ts +134 -0
  272. package/src/billing/dashboard/v2/claims-accounting/claim-detail.component.tsx +346 -0
  273. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.scss +546 -0
  274. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.tsx +206 -0
  275. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.resource.ts +337 -0
  276. package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.scss +90 -0
  277. package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.tsx +90 -0
  278. package/src/billing/dashboard/v2/claims-accounting/remittances.component.tsx +169 -0
  279. package/src/billing/dashboard/v2/claims-accounting/remittances.resource.ts +46 -0
  280. package/src/billing/dashboard/v2/claims-accounting/status-meta.ts +25 -0
  281. package/src/billing/dashboard/v2/clearance/cash-patients.scss +18 -0
  282. package/src/billing/dashboard/v2/clearance/cash.component.tsx +149 -0
  283. package/src/billing/dashboard/v2/clearance/clearance.component.scss +84 -0
  284. package/src/billing/dashboard/v2/clearance/clearance.component.tsx +225 -0
  285. package/src/billing/dashboard/v2/clearance/pay-cash.component.tsx +176 -0
  286. package/src/billing/dashboard/v2/clearance/pay-cash.scss +28 -0
  287. package/src/billing/dashboard/v2/clearance/prepaid-services.component.tsx +112 -0
  288. package/src/billing/dashboard/v2/facility-bills/claim-status.ts +249 -0
  289. package/src/billing/dashboard/v2/facility-bills/facility-bills.component.scss +140 -0
  290. package/src/billing/dashboard/v2/facility-bills/facility-bills.component.tsx +687 -0
  291. package/src/billing/dashboard/v2/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
  292. package/src/billing/dashboard/v2/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +267 -0
  293. package/src/billing/dashboard/v2/facility-bills/preauths.component.tsx +124 -0
  294. package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.scss +22 -0
  295. package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.tsx +389 -0
  296. package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.scss +0 -0
  297. package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.tsx +0 -0
  298. package/src/billing/dashboard/v2/new-facility-bills/bills-table.component.tsx +78 -0
  299. package/src/billing/dashboard/v2/new-facility-bills/bills-table.scss +18 -0
  300. package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.component.tsx +64 -0
  301. package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.scss +146 -0
  302. package/src/billing/dashboard/v2/patient-bill-details/attachments/add-attachments.component.tsx +223 -0
  303. package/src/billing/dashboard/v2/patient-bill-details/attachments/attachment.component.tsx +157 -0
  304. package/src/billing/dashboard/v2/patient-bill-details/attachments/attachments.scss +92 -0
  305. package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
  306. package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.tsx +326 -0
  307. package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
  308. package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +269 -0
  309. package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
  310. package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +124 -0
  311. package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.component.tsx +152 -0
  312. package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.scss +225 -0
  313. package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
  314. package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +173 -0
  315. package/src/billing/dashboard/v2/patient-bill-details/attachments/generate-attachments.component.tsx +360 -0
  316. package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.component.tsx +151 -0
  317. package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.scss +225 -0
  318. package/src/billing/dashboard/v2/patient-bill-details/attachments/type.ts +44 -0
  319. package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.scss +107 -0
  320. package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.tsx +508 -0
  321. package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.scss +30 -0
  322. package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.tsx +94 -0
  323. package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.scss +89 -0
  324. package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.tsx +53 -0
  325. package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.scss +32 -0
  326. package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.tsx +215 -0
  327. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
  328. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
  329. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +186 -0
  330. package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.scss +153 -0
  331. package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.tsx +458 -0
  332. package/src/billing/dashboard/v2/patient-bill-details/payment-mode.ts +124 -0
  333. package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.scss +27 -0
  334. package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.tsx +222 -0
  335. package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.scss +27 -0
  336. package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.tsx +109 -0
  337. package/src/billing/dashboard/v2/preauth/preauth-attachments.component.tsx +389 -0
  338. package/src/billing/dashboard/v2/preauth/preauth-list.component.scss +38 -0
  339. package/src/billing/dashboard/v2/preauth/preauth-list.component.tsx +226 -0
  340. package/src/billing/dashboard/v2/preauth/preauth-status-tag.component.tsx +75 -0
  341. package/src/billing/dashboard/v2/preauth/preauth-typed-fields.md +125 -0
  342. package/src/billing/dashboard/v2/preauth/preauth.resource.ts +1067 -0
  343. package/src/billing/dashboard/v2/preauth/preauth.workspace.scss +91 -0
  344. package/src/billing/dashboard/v2/preauth/preauth.workspace.tsx +1802 -0
  345. package/src/billing/dashboard/v2/preauth/preauthorizations-tab.component.tsx +45 -0
  346. package/src/billing/dashboard/v2/sha-claims/sha-claims-table.component.tsx +36 -0
  347. package/src/billing/dashboard/v2/sha-claims/sha-claims.component.tsx +60 -0
  348. package/src/billing/dashboard/v2/sha-claims/sha-claims.scss +8 -0
  349. package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.scss +17 -0
  350. package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.tsx +15 -0
  351. package/src/billing/dashboard/v2/shared/empty-state.component.scss +24 -0
  352. package/src/billing/dashboard/v2/shared/empty-state.component.tsx +13 -0
  353. package/src/billing/dashboard/v2/shared/scroll-to-top.component.scss +54 -0
  354. package/src/billing/dashboard/v2/shared/scroll-to-top.component.tsx +54 -0
  355. package/src/billing/dashboard/v2/shared/table-toolbar.component.scss +77 -0
  356. package/src/billing/dashboard/v2/shared/table-toolbar.component.tsx +48 -0
  357. package/src/billing/dashboard/v2/types/index.ts +507 -0
  358. package/src/billing/dashboard/v3/active-visits/active-visits.component.tsx +256 -0
  359. package/src/billing/dashboard/v3/active-visits/active-visits.resource.ts +57 -0
  360. package/src/billing/dashboard/v3/active-visits/active-visits.scss +15 -0
  361. package/src/billing/dashboard/v3/cash-checklist/bill-document.component.scss +90 -0
  362. package/src/billing/dashboard/v3/cash-checklist/bill-document.component.tsx +101 -0
  363. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.scss +199 -0
  364. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.tsx +361 -0
  365. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.resource.ts +240 -0
  366. package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.scss +246 -0
  367. package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.tsx +182 -0
  368. package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
  369. package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +44 -0
  370. package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.scss +5 -0
  371. package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.tsx +42 -0
  372. package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.scss +10 -0
  373. package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.tsx +25 -0
  374. package/src/billing/dashboard/v3/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +223 -0
  375. package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.scss +6 -0
  376. package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +85 -0
  377. package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +0 -0
  378. package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +109 -0
  379. package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.scss +97 -0
  380. package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.tsx +346 -0
  381. package/src/billing/dashboard/v3/claim-visits/claim-visits.component.scss +5 -0
  382. package/src/billing/dashboard/v3/claim-visits/claim-visits.component.tsx +139 -0
  383. package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
  384. package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
  385. package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.scss +7 -0
  386. package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.tsx +35 -0
  387. package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +6 -0
  388. package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +33 -0
  389. package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
  390. package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
  391. package/src/billing/dashboard/v3/claim-visits/modal/submit-claim/submit-claim.modal.tsx +204 -0
  392. package/src/billing/dashboard/v3/claim-visits/payer-preview/index.scss +140 -0
  393. package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-tile.component.tsx +55 -0
  394. package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-workspace.component.tsx +157 -0
  395. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-doctors.component.tsx +54 -0
  396. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-lines.component.tsx +48 -0
  397. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-notes.component.tsx +47 -0
  398. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-diagnoses.component.tsx +44 -0
  399. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-interventions.component.tsx +44 -0
  400. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
  401. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
  402. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.tsx +648 -0
  403. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.scss +595 -0
  404. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.tsx +810 -0
  405. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.resource.ts +282 -0
  406. package/src/billing/dashboard/v3/claims-accounting/bill-utils.ts +134 -0
  407. package/src/billing/dashboard/v3/claims-accounting/claim-detail.component.tsx +346 -0
  408. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.scss +546 -0
  409. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.tsx +206 -0
  410. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.resource.ts +337 -0
  411. package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.scss +90 -0
  412. package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.tsx +90 -0
  413. package/src/billing/dashboard/v3/claims-accounting/remittances.component.tsx +169 -0
  414. package/src/billing/dashboard/v3/claims-accounting/remittances.resource.ts +46 -0
  415. package/src/billing/dashboard/v3/claims-accounting/status-meta.ts +25 -0
  416. package/src/billing/dashboard/v3/clearance/clearance.component.scss +100 -0
  417. package/src/billing/dashboard/v3/clearance/clearance.component.tsx +0 -0
  418. package/src/billing/dashboard/v3/clearance/prepaid-services.component.tsx +112 -0
  419. package/src/billing/dashboard/v3/facility-bills/claim-status.ts +243 -0
  420. package/src/billing/dashboard/v3/facility-bills/facility-bills.component.scss +9 -0
  421. package/src/billing/dashboard/v3/facility-bills/facility-bills.component.tsx +172 -0
  422. package/src/billing/dashboard/v3/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
  423. package/src/billing/dashboard/v3/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +232 -0
  424. package/src/billing/dashboard/v3/facility-bills/preauths.component.tsx +124 -0
  425. package/src/billing/dashboard/v3/patient-bill-details/attachments/add-attachments.component.tsx +223 -0
  426. package/src/billing/dashboard/v3/patient-bill-details/attachments/attachment.component.tsx +157 -0
  427. package/src/billing/dashboard/v3/patient-bill-details/attachments/attachments.scss +92 -0
  428. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary-helper.ts +58 -0
  429. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
  430. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.tsx +273 -0
  431. package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
  432. package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +314 -0
  433. package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
  434. package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +126 -0
  435. package/src/billing/dashboard/v3/patient-bill-details/attachments/final-bill.component.tsx +75 -0
  436. package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
  437. package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +253 -0
  438. package/src/billing/dashboard/v3/patient-bill-details/attachments/generate-attachments.component.tsx +343 -0
  439. package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.component.tsx +150 -0
  440. package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.scss +225 -0
  441. package/src/billing/dashboard/v3/patient-bill-details/attachments/type.ts +259 -0
  442. package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.scss +13 -0
  443. package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.tsx +235 -0
  444. package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.scss +0 -0
  445. package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.tsx +69 -0
  446. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
  447. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
  448. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.scss +14 -0
  449. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +111 -0
  450. package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.scss +6 -0
  451. package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.tsx +139 -0
  452. package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.scss +85 -0
  453. package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.tsx +342 -0
  454. package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.scss +0 -0
  455. package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.tsx +92 -0
  456. package/src/billing/dashboard/v3/preauth/preauth-attachments.component.tsx +389 -0
  457. package/src/billing/dashboard/v3/preauth/preauth-list.component.scss +34 -0
  458. package/src/billing/dashboard/v3/preauth/preauth-list.component.tsx +281 -0
  459. package/src/billing/dashboard/v3/preauth/preauth-status-tag.component.tsx +75 -0
  460. package/src/billing/dashboard/v3/preauth/preauth-typed-fields.md +125 -0
  461. package/src/billing/dashboard/v3/preauth/preauth.resource.ts +1072 -0
  462. package/src/billing/dashboard/v3/preauth/preauth.workspace.scss +91 -0
  463. package/src/billing/dashboard/v3/preauth/preauth.workspace.tsx +1806 -0
  464. package/src/billing/dashboard/v3/preauth/preauthorizations-tab.component.tsx +45 -0
  465. package/src/billing/dashboard/v3/shared/empty-state.component.scss +25 -0
  466. package/src/billing/dashboard/v3/shared/empty-state.component.tsx +13 -0
  467. package/src/billing/dashboard/v3/shared/table-toolbar.component.scss +64 -0
  468. package/src/billing/dashboard/v3/shared/table-toolbar.component.tsx +48 -0
  469. package/src/billing/dashboard/v3/types/index.ts +381 -0
  470. package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.extension.tsx +55 -0
  471. package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.scss +16 -0
  472. package/src/billing/extensions/visit-billing/visit-billing.extension.scss +0 -0
  473. package/src/billing/extensions/visit-billing/visit-billing.extension.tsx +509 -0
  474. package/src/billing/invoice/bill.resource.ts +47 -0
  475. package/src/billing/invoice/invoice-header/header-card/header-card.scss +17 -0
  476. package/src/billing/invoice/invoice-header/header-card/header-card.tsx +21 -0
  477. package/src/billing/invoice/invoice.scss +113 -0
  478. package/src/billing/invoice/invoice.tsx +1441 -0
  479. package/src/billing/invoice/line-items/line-items.scss +0 -0
  480. package/src/billing/invoice/line-items/line-items.tsx +120 -0
  481. package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.scss +23 -0
  482. package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.tsx +114 -0
  483. package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.scss +0 -0
  484. package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.tsx +122 -0
  485. package/src/billing/invoice/payment-details/payment-details.scss +0 -0
  486. package/src/billing/invoice/payment-details/payment-details.tsx +43 -0
  487. package/src/billing/invoice/print-invoice/print-receipt.component.tsx +44 -0
  488. package/src/billing/invoice/print-invoice/print-receipt.scss +14 -0
  489. package/src/billing/maternity-discharge.resource.ts +21 -0
  490. package/src/billing/types/index.ts +354 -0
  491. package/src/billing/utils/index.ts +17 -0
  492. package/src/billing/widgets/billingTotalsRow.component.scss +0 -0
  493. package/src/billing/widgets/billingTotalsRow.component.tsx +712 -0
  494. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.resource.ts +130 -0
  495. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.scss +58 -0
  496. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.workspace.tsx +645 -0
  497. package/src/billing/workspaces/create-order-bill-form-workspace/schema.ts +12 -0
  498. package/src/bookings/bookings.component.scss +7 -0
  499. package/src/bookings/bookings.component.tsx +35 -0
  500. package/src/bookings/daily/daily-bookings.resource.ts +2 -1
  501. package/src/case-summary/case-summary.extension.scss +13 -0
  502. package/src/case-summary/case-summary.extension.tsx +40 -0
  503. package/src/case-summary/case-summary.resource.test.ts +69 -0
  504. package/src/case-summary/case-summary.resource.ts +52 -0
  505. package/src/case-summary/components/case-summary-printable.component.scss +174 -0
  506. package/src/case-summary/components/case-summary-printable.component.tsx +288 -0
  507. package/src/case-summary/components/case-summary-printable.utils.ts +51 -0
  508. package/src/case-summary/types/case-summary.types.ts +152 -0
  509. package/src/claims/claims.component.scss +70 -0
  510. package/src/claims/claims.component.tsx +713 -0
  511. package/src/claims/claims.resource.ts +1274 -0
  512. package/src/claims/index.ts +340 -0
  513. package/src/claims/interventions.resource.ts +131 -0
  514. package/src/claims/utils.ts +64 -0
  515. package/src/config-schema.ts +119 -1
  516. package/src/context/patient-context.tsx +27 -0
  517. package/src/createDashboardLink.tsx +9 -0
  518. package/src/dashboard/charts/chart.component.scss +24 -0
  519. package/src/dashboard/charts/chart.component.tsx +56 -0
  520. package/src/dashboard/dashboard.component.scss +48 -3
  521. package/src/dashboard/dashboard.component.tsx +26 -36
  522. package/src/dashboard/overview/overview.component.scss +40 -59
  523. package/src/dashboard/overview/overview.component.tsx +53 -41
  524. package/src/dashboard-meta/accounting-dashboard.meta.ts +6 -0
  525. package/src/dashboard-meta/admissions-dashboard.meta.ts +6 -0
  526. package/src/dashboard-meta/billing-dashboard.meta.ts +6 -0
  527. package/src/dashboard-meta/bookings-dashboard.meta.ts +6 -0
  528. package/src/dashboard-meta/case-summary.meta.ts +6 -0
  529. package/src/dashboard-meta/consultation-dashboard.meta.ts +6 -0
  530. package/src/dashboard-meta/dha-workflow-dashboard.meta.ts +6 -0
  531. package/src/dashboard-meta/inpatient-admissions.meta.ts +6 -0
  532. package/src/dashboard-meta/maternity-dashboard.meta.ts +6 -0
  533. package/src/dashboard-meta/mch-dashboard.meta.ts +6 -0
  534. package/src/dashboard-meta/pharmacy-dashboard.meta.ts +6 -0
  535. package/src/dashboard-meta/queue-dashboard.meta.ts +6 -0
  536. package/src/dashboard-meta/registers-dashboard.meta.ts +6 -0
  537. package/src/dashboard-meta/registry-dashboard.meta.ts +6 -0
  538. package/src/dashboard-meta/service-queue-admin.meta.ts +6 -0
  539. package/src/dashboard-meta/specialized-clinics-dashboard.meta.ts +6 -0
  540. package/src/dashboard-meta/triage-dashboard.meta.ts +6 -0
  541. package/src/index.ts +177 -6
  542. package/src/mnch/maternity/maternity-queues.component.scss +7 -0
  543. package/src/mnch/maternity/maternity-queues.component.tsx +32 -0
  544. package/src/mnch/maternity/queues/triage/maternity-triage.tsx +15 -0
  545. package/src/mnch/mch/mch-queues.component.scss +10 -0
  546. package/src/mnch/mch/mch-queues.component.tsx +36 -0
  547. package/src/mnch/mch/queues/consultation/mch-consultation.tsx +18 -0
  548. package/src/mnch/mch/queues/triage/mch-triage.tsx +15 -0
  549. package/src/mnch/mnch-root.tsx +17 -0
  550. package/src/mortuary/mortuary.component.tsx +13 -0
  551. package/src/pharmacy/pharmacy.component.scss +16 -0
  552. package/src/pharmacy/pharmacy.component.tsx +11 -6
  553. package/src/registers/registers.component.tsx +8 -0
  554. package/src/registry/drawer/emr-compare.component.scss +263 -0
  555. package/src/registry/drawer/emr-compare.component.tsx +302 -0
  556. package/src/registry/drawer/emr-compare.resource.ts +181 -0
  557. package/src/registry/drawer/emr-create-preview.component.tsx +123 -0
  558. package/src/registry/drawer/otp-verification-step.component.tsx +398 -0
  559. package/src/registry/drawer/pomsf-balance.util.test.ts +177 -0
  560. package/src/registry/drawer/pomsf-balance.util.ts +79 -0
  561. package/src/registry/drawer/verification.resource.ts +60 -0
  562. package/src/registry/drawer/workflow-drawer.component.scss +1242 -0
  563. package/src/registry/drawer/workflow-drawer.component.tsx +1476 -0
  564. package/src/registry/eligibility/eligibility-details/eligibility-details.scss +38 -0
  565. package/src/registry/eligibility/eligibility-details/eligibility-details.tsx +101 -0
  566. package/src/registry/eligibility/eliigibility-tags/eligibility-tags.scss +16 -0
  567. package/src/registry/eligibility/eliigibility-tags/eligibility-tags.tsx +120 -0
  568. package/src/registry/eligibility/modal/eligibility-details.modal.scss +0 -0
  569. package/src/registry/eligibility/modal/eligibility-details.modal.tsx +45 -0
  570. package/src/registry/hie.resource.ts +408 -0
  571. package/src/registry/hie.types.ts +57 -0
  572. package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.scss +277 -0
  573. package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.tsx +218 -0
  574. package/src/registry/modal/biometrics-verification-modal/type.ts +39 -0
  575. package/src/registry/modal/client-details-modal/client-details-modal.tsx +65 -29
  576. package/src/registry/modal/otp-modal/otp-whitlisting-modal.component.tsx +809 -0
  577. package/src/registry/modal/otp-modal/otp-whitlisting-modal.scss +354 -0
  578. package/src/registry/modal/otp-modal/otp-whitlisting.scss +0 -0
  579. package/src/registry/modal/otp-verification-modal/claims-consent.scss +72 -0
  580. package/src/registry/modal/otp-verification-modal/claims-consent.tsx +135 -0
  581. package/src/registry/modal/otp-verification-modal/extension/claims-consent.extension.tsx +124 -0
  582. package/src/registry/modal/otp-verification-modal/otp-verification-modal.scss +30 -0
  583. package/src/registry/modal/otp-verification-modal/otp-verification-modal.tsx +154 -54
  584. package/src/registry/modal/send-to-triage/payment-details.tsx +120 -0
  585. package/src/registry/modal/send-to-triage/payment-method.component.tsx +54 -0
  586. package/src/registry/modal/send-to-triage/send-to-queue.modal.tsx +980 -0
  587. package/src/registry/modal/send-to-triage/send-to-triage.modal.scss +156 -3
  588. package/src/registry/modal/send-to-triage/send-to-triage.modal.tsx +1101 -131
  589. package/src/registry/modal/start-patient-visit/start-patient-visit.modal.scss +34 -0
  590. package/src/registry/modal/start-patient-visit/start-patient-visit.modal.tsx +231 -0
  591. package/src/registry/payment-details/payment-options/payment-options.scss +13 -0
  592. package/src/registry/payment-details/payment-options/payment-options.tsx +61 -14
  593. package/src/registry/registration-list/registration-list.component.scss +32 -0
  594. package/src/registry/registration-list/registration-list.component.tsx +103 -0
  595. package/src/registry/registry-entry.tsx +11 -0
  596. package/src/registry/registry.component.scss +402 -78
  597. package/src/registry/registry.component.tsx +547 -221
  598. package/src/registry/registry.resource.ts +22 -3
  599. package/src/registry/types/index.ts +118 -9
  600. package/src/registry/utils/error-handler.ts +54 -0
  601. package/src/registry/utils/format-dependant-display-data.ts +1 -1
  602. package/src/registry/utils/hie-client-adapter.ts +6 -3
  603. package/src/registry/utils/mask-data.ts +40 -0
  604. package/src/registry/utils/phone-number-formatter.ts +11 -0
  605. package/src/resources/dashboard.resource.ts +20 -0
  606. package/src/resources/identifier-types.ts +2 -0
  607. package/src/resources/patient-resource.ts +6 -1
  608. package/src/resources/queue.resource.ts +24 -1
  609. package/src/resources/superset.resource.ts +21 -0
  610. package/src/resources/visit.resource.ts +19 -1
  611. package/src/root.component.tsx +8 -5
  612. package/src/routes.json +417 -23
  613. package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.scss +31 -0
  614. package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.tsx +153 -0
  615. package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.scss +0 -0
  616. package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.tsx +182 -0
  617. package/src/service-queues/admin/queue/queue-list/queue-list.scss +33 -0
  618. package/src/service-queues/admin/queue/queue-list/queue-list.tsx +113 -0
  619. package/src/service-queues/admin/queue-entry/queue-entry-list.component.scss +6 -0
  620. package/src/service-queues/admin/queue-entry/queue-entry-list.component.tsx +137 -0
  621. package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.scss +31 -0
  622. package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.tsx +137 -0
  623. package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.scss +0 -0
  624. package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.tsx +146 -0
  625. package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.scss +22 -0
  626. package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.tsx +120 -0
  627. package/src/service-queues/admin/service-queue-admin-dashboard.component.scss +6 -0
  628. package/src/service-queues/admin/service-queue-admin-dashboard.component.tsx +34 -0
  629. package/src/service-queues/consultation/consultation.component.tsx +9 -0
  630. package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.scss +30 -0
  631. package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.tsx +108 -0
  632. package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.scss +26 -0
  633. package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.tsx +110 -0
  634. package/src/service-queues/modals/move/move-patient.component.scss +1 -1
  635. package/src/service-queues/modals/move/move-patient.component.tsx +31 -17
  636. package/src/service-queues/queue-list/check-in.service.ts +26 -0
  637. package/src/service-queues/queue-list/queue-list.component.scss +37 -0
  638. package/src/service-queues/queue-list/queue-list.component.tsx +256 -56
  639. package/src/service-queues/service-queue/service-queue.component.tsx +151 -8
  640. package/src/service-queues/service-queue/stats/stat-details/stat-details.component.scss +5 -0
  641. package/src/service-queues/service-queue/stats/stat-details/stat-details.component.tsx +36 -7
  642. package/src/service-queues/service-queue.tsx +22 -16
  643. package/src/service-queues/service-queues.resource.ts +197 -1
  644. package/src/service-queues/service.resource.ts +1 -1
  645. package/src/shared/constants/concepts.ts +50 -0
  646. package/src/shared/constants/patient-category.ts +6 -0
  647. package/src/shared/constants/patient-type.ts +10 -0
  648. package/src/shared/constants/visit-types.ts +7 -0
  649. package/src/shared/services/billing.resource.ts +75 -0
  650. package/src/shared/services/claims.resource.ts +47 -0
  651. package/src/shared/services/client-payment-mode.resource.ts +27 -0
  652. package/src/shared/services/client-payment.resource.ts +17 -0
  653. package/src/shared/services/consultation-clearance.resource.ts +210 -0
  654. package/src/shared/services/eligibility.resource.ts +20 -0
  655. package/src/shared/services/encounters.resource.ts +33 -0
  656. package/src/shared/services/location.resource.ts +9 -0
  657. package/src/shared/types/index.ts +156 -0
  658. package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.scss +42 -0
  659. package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.tsx +42 -0
  660. package/src/shared/ui/confirm-modal/confirm.modal.scss +18 -0
  661. package/src/shared/ui/confirm-modal/confirm.modal.tsx +38 -0
  662. package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.scss +39 -0
  663. package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.tsx +19 -0
  664. package/src/shared/ui/otp-input/otp-input.component.scss +14 -0
  665. package/src/shared/ui/otp-input/otp-input.component.tsx +97 -0
  666. package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.tsx +6 -3
  667. package/src/shared/ui/timer/timer.component.scss +5 -0
  668. package/src/shared/ui/timer/timer.component.tsx +40 -0
  669. package/src/shared/utils/get-base-url.ts +10 -0
  670. package/src/shared/utils/get-tag-type.ts +75 -0
  671. package/src/side-nav-menu/mnch-nav-link-config.ts +16 -0
  672. package/src/side-nav-menu/mnch-nav-links.tsx +42 -0
  673. package/src/side-nav-menu/nav-link-config.ts +1 -5
  674. package/src/side-nav-menu/specialized-clinics-nav-link-config.ts +36 -0
  675. package/src/side-nav-menu/specialized-clinics-nav-links.tsx +42 -0
  676. package/src/specialized-clinics/critital-care-unit/critical-care-unit-queues.component.scss +7 -0
  677. package/src/specialized-clinics/critital-care-unit/critical-care-unit-queues.component.tsx +36 -0
  678. package/src/specialized-clinics/critital-care-unit/queues/consultation/critical-care-unit-consultation.tsx +15 -0
  679. package/src/specialized-clinics/critital-care-unit/queues/triage/critical-care-unit-triage.tsx +15 -0
  680. package/src/specialized-clinics/dental/dental-queues.component.scss +7 -0
  681. package/src/specialized-clinics/dental/dental-queues.component.tsx +36 -0
  682. package/src/specialized-clinics/dental/queues/consultation/dental-consultation.tsx +15 -0
  683. package/src/specialized-clinics/dental/queues/triage/dental-triage.tsx +15 -0
  684. package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.scss +7 -0
  685. package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.tsx +36 -0
  686. package/src/specialized-clinics/diagnostic-and-imaging/queues/consultation/diagnosis-and-imaging-consultation.tsx +15 -0
  687. package/src/specialized-clinics/diagnostic-and-imaging/queues/triage/diagnosis-and-imaging-triage.tsx +15 -0
  688. package/src/specialized-clinics/oncology/oncology-queues.component.scss +7 -0
  689. package/src/specialized-clinics/oncology/oncology-queues.component.tsx +36 -0
  690. package/src/specialized-clinics/oncology/queues/consultation/oncology-consultation.tsx +15 -0
  691. package/src/specialized-clinics/oncology/queues/triage/oncology-triage.tsx +15 -0
  692. package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.scss +7 -0
  693. package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.tsx +36 -0
  694. package/src/specialized-clinics/ophthalmology/queues/consultation/ophthalmology-consultation.tsx +15 -0
  695. package/src/specialized-clinics/ophthalmology/queues/triage/ophthalmology-triage.tsx +15 -0
  696. package/src/specialized-clinics/psychiatry/psychiatry-queues.component.scss +7 -0
  697. package/src/specialized-clinics/psychiatry/psychiatry-queues.component.tsx +36 -0
  698. package/src/specialized-clinics/psychiatry/queues/consultation/psychiatry-consultation.tsx +15 -0
  699. package/src/specialized-clinics/psychiatry/queues/triage/psychiatry-triage.tsx +15 -0
  700. package/src/specialized-clinics/renal/queues/consultation/dialysis-consultation.tsx +15 -0
  701. package/src/specialized-clinics/renal/queues/triage/renal-triage.tsx +15 -0
  702. package/src/specialized-clinics/renal/renal-queues.component.scss +7 -0
  703. package/src/specialized-clinics/renal/renal-queues.component.tsx +36 -0
  704. package/src/specialized-clinics/specialized-clinics-root.tsx +27 -0
  705. package/src/triage/triage.component.scss +6 -0
  706. package/src/triage/triage.component.tsx +4 -0
  707. package/src/types/types.ts +56 -1
  708. package/webpack.config.js +54 -1
  709. package/dist/104.js +0 -2
  710. package/dist/104.js.map +0 -1
  711. package/dist/15.js +0 -1
  712. package/dist/15.js.map +0 -1
  713. package/dist/184.js +0 -2
  714. package/dist/184.js.map +0 -1
  715. package/dist/197.js +0 -1
  716. package/dist/255.js +0 -1
  717. package/dist/255.js.map +0 -1
  718. package/dist/300.js +0 -1
  719. package/dist/335.js +0 -1
  720. package/dist/339.js +0 -1
  721. package/dist/339.js.map +0 -1
  722. package/dist/353.js +0 -1
  723. package/dist/353.js.map +0 -1
  724. package/dist/420.js +0 -1
  725. package/dist/420.js.map +0 -1
  726. package/dist/540.js +0 -2
  727. package/dist/540.js.map +0 -1
  728. package/dist/55.js +0 -1
  729. package/dist/652.js +0 -1
  730. package/dist/709.js +0 -1
  731. package/dist/709.js.map +0 -1
  732. package/dist/710.js +0 -2
  733. package/dist/710.js.map +0 -1
  734. package/dist/729.js +0 -1
  735. package/dist/729.js.map +0 -1
  736. package/dist/752.js +0 -1
  737. package/dist/752.js.map +0 -1
  738. package/dist/833.js +0 -1
  739. package/dist/833.js.map +0 -1
  740. package/dist/907.js +0 -1
  741. package/dist/907.js.map +0 -1
  742. package/dist/91.js +0 -1
  743. package/dist/91.js.map +0 -1
  744. package/dist/93.js +0 -1
  745. package/dist/93.js.map +0 -1
  746. package/dist/943.js +0 -1
  747. package/dist/943.js.map +0 -1
  748. package/dist/99.js +0 -1
  749. /package/dist/{104.js.LICENSE.txt → 2177.js.LICENSE.txt} +0 -0
  750. /package/dist/{184.js.LICENSE.txt → 3184.js.LICENSE.txt} +0 -0
  751. /package/dist/{540.js.LICENSE.txt → 6540.js.LICENSE.txt} +0 -0
  752. /package/dist/{710.js.LICENSE.txt → 7830.js.LICENSE.txt} +0 -0
  753. /package/dist/{810.js.LICENSE.txt → 9583.js.LICENSE.txt} +0 -0
  754. /package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.scss +0 -0
@@ -0,0 +1,298 @@
1
+ .cards {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 0.75rem;
5
+ }
6
+
7
+ /* Compact records lay out horizontally, at most THREE across, and GROW to fill the row:
8
+ one card spans the full width, two split it in half, three take a third each. Each
9
+ column's minimum is the larger of 15rem or a third of the row (minus the two 0.75rem
10
+ gaps), so a 4th column never fits, while narrow panels still drop to 2 then 1. */
11
+ .cardsGrid {
12
+ display: grid;
13
+ /* Each column is at least half the row (50% minus its share of the single 0.75rem
14
+ gap), so at most TWO fit; 15rem takes over on narrow panels to drop to 1. */
15
+ grid-template-columns: repeat(auto-fit, minmax(max(15rem, calc(50% - 0.375rem)), 1fr));
16
+ grid-auto-flow: row;
17
+ align-items: stretch;
18
+ }
19
+
20
+ /* auto-fill keeps empty column tracks, so a lone card stays at its ~half width and two
21
+ flow side by side, instead of one card stretching across the whole row. */
22
+ .cardsGridFill {
23
+ grid-template-columns: repeat(auto-fill, minmax(max(15rem, calc(50% - 0.375rem)), 1fr));
24
+ }
25
+
26
+ /* Opt-in THREE-across variant: each column is at least a third of the row (33.333%
27
+ minus its share of the two 0.75rem gaps), so up to three fit and grow to fill the
28
+ row; 14rem takes over on narrow panels to drop to 2 then 1. */
29
+ .cardsGridThree {
30
+ grid-template-columns: repeat(auto-fit, minmax(max(14rem, calc(33.333% - 0.5rem)), 1fr));
31
+ }
32
+
33
+ /* Per-section tints. Each tone sets the card fill, its border and a matching left
34
+ accent, so every section reads as its own coloured group while text stays dark on a
35
+ pale wash. Defaults (no tone) fall back to a plain white tile. */
36
+ .toneTeal {
37
+ --card-bg: #eefaf9;
38
+ --card-border: #7fd1cb;
39
+ --card-accent: #007d79;
40
+ }
41
+ .toneBlue {
42
+ --card-bg: #eff5ff;
43
+ --card-border: #a6c8ff;
44
+ --card-accent: #0f62fe;
45
+ }
46
+ .tonePurple {
47
+ --card-bg: #f6f2ff;
48
+ --card-border: #d0bcf3;
49
+ --card-accent: #8a3ffc;
50
+ }
51
+ .toneGreen {
52
+ --card-bg: #eefbf1;
53
+ --card-border: #a7dfb5;
54
+ --card-accent: #24a148;
55
+ }
56
+ .toneAmber {
57
+ --card-bg: #fff8ec;
58
+ --card-border: #f3d7a4;
59
+ --card-accent: #d2a106;
60
+ }
61
+ .toneGray {
62
+ --card-bg: #f5f6f7;
63
+ --card-border: #d0d3d6;
64
+ --card-accent: #697077;
65
+ }
66
+
67
+ .card {
68
+ display: flex;
69
+ flex-direction: column;
70
+ border: 1px solid var(--card-border, #c6c6c6);
71
+ border-left: 3px solid var(--card-accent, #c6c6c6);
72
+ border-radius: 8px;
73
+ /* Tinted tile lifted off the panel with a soft shadow, so cards stay distinct on a
74
+ white or a tinted background. */
75
+ background: var(--card-bg, #ffffff);
76
+ box-shadow: 0 1px 2px rgba(22, 22, 22, 0.06), 0 2px 6px rgba(22, 22, 22, 0.08);
77
+ padding: 0.875rem 1rem;
78
+ }
79
+
80
+ .cardHead {
81
+ display: flex;
82
+ align-items: flex-start;
83
+ justify-content: space-between;
84
+ gap: 0.75rem;
85
+ margin-bottom: 0.625rem;
86
+ padding-bottom: 0.5rem;
87
+ border-bottom: 1px solid rgba(22, 22, 22, 0.09);
88
+ }
89
+
90
+ .cardHeadText {
91
+ display: flex;
92
+ flex-direction: column;
93
+ gap: 0.25rem;
94
+ min-width: 0;
95
+ }
96
+
97
+ /* Eyebrow naming the record's kind (e.g. BILL ITEM / DIAGNOSIS). Uses the card's
98
+ accent colour and a matching pale pill so bills and diagnoses never get confused
99
+ even when they share one grid. */
100
+ .cardKind {
101
+ align-self: flex-start;
102
+ padding: 0.0625rem 0.4375rem;
103
+ border-radius: 999px;
104
+ background: var(--card-accent, #6f6f6f);
105
+ color: #ffffff;
106
+ font-size: 0.625rem;
107
+ font-weight: 700;
108
+ letter-spacing: 0.04em;
109
+ text-transform: uppercase;
110
+ white-space: nowrap;
111
+ }
112
+
113
+ .cardHeadMain {
114
+ display: flex;
115
+ align-items: center;
116
+ gap: 0.5rem;
117
+ min-width: 0;
118
+ }
119
+
120
+ .indexChip {
121
+ display: inline-flex;
122
+ align-items: center;
123
+ justify-content: center;
124
+ flex-shrink: 0;
125
+ min-width: 1.25rem;
126
+ height: 1.25rem;
127
+ padding: 0 0.375rem;
128
+ border-radius: 999px;
129
+ background: #e0e0e0;
130
+ color: #393939;
131
+ font-size: 0.6875rem;
132
+ font-weight: 600;
133
+ }
134
+
135
+ .cardTitle {
136
+ font-size: 0.875rem;
137
+ font-weight: 600;
138
+ color: #161616;
139
+ overflow-wrap: anywhere;
140
+ }
141
+
142
+ .cardBadge {
143
+ flex-shrink: 0;
144
+ }
145
+
146
+ /* The heart of it: labelled cells that wrap onto as many rows as needed, so every
147
+ field stays visible instead of running off the right edge of a wide table. */
148
+ .fieldGrid {
149
+ display: grid;
150
+ grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
151
+ gap: 0.625rem 1.25rem;
152
+ margin: 0;
153
+ }
154
+
155
+ /* Inside a compact card each field is a neat label-left / value-right row. The rows
156
+ pack into as many columns as the card is wide — one column in a third-width card,
157
+ several across a full-width lone card — so the content always fills its card. */
158
+ .cardsGrid .fieldGrid {
159
+ grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
160
+ column-gap: 1.5rem;
161
+ row-gap: 0;
162
+ }
163
+
164
+ .cardsGrid .field {
165
+ flex-direction: row;
166
+ align-items: baseline;
167
+ justify-content: space-between;
168
+ gap: 0.75rem;
169
+ padding: 0.375rem 0;
170
+ border-bottom: 1px solid rgba(22, 22, 22, 0.07);
171
+ }
172
+
173
+ .cardsGrid .fieldValue {
174
+ text-align: right;
175
+ font-weight: 600;
176
+ }
177
+
178
+ .cardsGrid .fieldFull {
179
+ flex-direction: column;
180
+ align-items: stretch;
181
+
182
+ .fieldValue {
183
+ text-align: left;
184
+ font-weight: 400;
185
+ }
186
+ }
187
+
188
+ .field {
189
+ display: flex;
190
+ flex-direction: column;
191
+ gap: 2px;
192
+ min-width: 0;
193
+ }
194
+
195
+ .fieldFull {
196
+ grid-column: 1 / -1;
197
+ }
198
+
199
+ .fieldLabel {
200
+ font-size: 0.6875rem;
201
+ font-weight: 600;
202
+ text-transform: uppercase;
203
+ letter-spacing: 0.02em;
204
+ color: #6f6f6f;
205
+ }
206
+
207
+ .fieldValue {
208
+ margin: 0;
209
+ font-size: 0.875rem;
210
+ color: #161616;
211
+ overflow-wrap: anywhere;
212
+ }
213
+
214
+ .cardActions {
215
+ display: flex;
216
+ flex-wrap: wrap;
217
+ gap: 0.5rem;
218
+ /* margin-top:auto pushes the footer to the card's bottom edge so footers align
219
+ across a row of unequal-height cards. */
220
+ margin-top: auto;
221
+ padding-top: 0.5rem;
222
+ border-top: 1px solid rgba(22, 22, 22, 0.09);
223
+
224
+ /* Full-width, evenly split action buttons read as a tidy footer bar. */
225
+ :global(.cds--btn) {
226
+ flex: 1 1 auto;
227
+ justify-content: center;
228
+ }
229
+ }
230
+
231
+ /* Collapsible detail region (e.g. invoice lines) under the fields. */
232
+ .expandSection {
233
+ margin-top: 0.625rem;
234
+ padding-top: 0.5rem;
235
+ border-top: 1px solid rgba(22, 22, 22, 0.09);
236
+ }
237
+
238
+ .expandToggle {
239
+ display: inline-flex;
240
+ align-items: center;
241
+ gap: 0.375rem;
242
+ padding: 0;
243
+ border: none;
244
+ background: none;
245
+ cursor: pointer;
246
+ color: var(--card-accent, #0f62fe);
247
+ font-size: 0.8125rem;
248
+ font-weight: 600;
249
+ }
250
+
251
+ .expandChevron {
252
+ transition: transform 0.15s ease;
253
+ }
254
+ .expandChevronOpen {
255
+ transform: rotate(180deg);
256
+ }
257
+
258
+ /* Full-bleed on all sides: cancel the card's padding (1rem sides, 0.875rem bottom) so
259
+ the expanded detail reaches the card's border with no inset, separated only by a top
260
+ divider line. The nested cards are squared off to sit flush. */
261
+ .expandContent {
262
+ margin-top: 0.5rem;
263
+ margin-inline: -1rem;
264
+ margin-bottom: -0.875rem;
265
+ overflow-x: auto;
266
+ border-top: 1px solid rgba(22, 22, 22, 0.09);
267
+
268
+ .card {
269
+ border-radius: 0;
270
+ }
271
+ }
272
+
273
+ .tagRow {
274
+ display: flex;
275
+ flex-wrap: wrap;
276
+ gap: 0.25rem;
277
+ }
278
+
279
+ /* Neat placeholder shown when a category has no records. */
280
+ .empty {
281
+ display: flex;
282
+ flex-direction: column;
283
+ align-items: center;
284
+ justify-content: center;
285
+ gap: 0.5rem;
286
+ margin: 0;
287
+ padding: 1.5rem 1rem;
288
+ text-align: center;
289
+ border: 1px dashed #d0d0d0;
290
+ border-radius: 8px;
291
+ background: #fafafa;
292
+ font-size: 0.8125rem;
293
+ color: #6f6f6f;
294
+ }
295
+
296
+ .emptyIcon {
297
+ color: #a8a8a8;
298
+ }
@@ -0,0 +1,252 @@
1
+ import React, { useState } from 'react';
2
+ import { SkeletonText, Tag } from '@carbon/react';
3
+ import { ChevronDown, DocumentBlank } from '@carbon/react/icons';
4
+ import styles from './record-cards.component.scss';
5
+
6
+ /** A compact yes/no indicator for the many boolean flags on a claim record. */
7
+ export const YesNo: React.FC<{ value: boolean }> = ({ value }) => (
8
+ <Tag size="sm" type={value ? 'green' : 'gray'}>
9
+ {value ? 'Yes' : 'No'}
10
+ </Tag>
11
+ );
12
+
13
+ /** Wraps a set of string values as tags, e.g. required document types. */
14
+ export const TagRow: React.FC<{ items: string[]; type?: 'green' | 'blue' | 'teal' | 'gray' }> = ({
15
+ items,
16
+ type = 'blue',
17
+ }) => {
18
+ if (!items || items.length === 0) {
19
+ return <>—</>;
20
+ }
21
+ return (
22
+ <div className={styles.tagRow}>
23
+ {items.map((item, i) => (
24
+ <Tag size="sm" type={type} key={`${item}-${i}`}>
25
+ {item}
26
+ </Tag>
27
+ ))}
28
+ </div>
29
+ );
30
+ };
31
+
32
+ export interface RecordField {
33
+ label: string;
34
+ value: React.ReactNode;
35
+ /** Let a long value (document lists, names) span the whole card width. */
36
+ full?: boolean;
37
+ }
38
+
39
+ export type CardTone = 'teal' | 'blue' | 'purple' | 'green' | 'amber' | 'gray';
40
+
41
+ export interface RecordCardModel {
42
+ /** Small eyebrow above the title naming the record's kind, e.g. "Bill item". Lets
43
+ the reader tell mixed cards apart when several kinds share one grid. */
44
+ kind?: React.ReactNode;
45
+ /** Left side of the card header, e.g. an intervention name. */
46
+ title?: React.ReactNode;
47
+ /** Right side of the card header, typically a status tag. */
48
+ badge?: React.ReactNode;
49
+ fields: RecordField[];
50
+ /** Buttons rendered in a footer row, e.g. Pay / Add claim line. */
51
+ actions?: React.ReactNode;
52
+ /** A collapsible detail region (e.g. invoice lines) with a show/hide toggle, shown
53
+ under the fields. Starts collapsed. */
54
+ expandable?: {
55
+ /** Toggle text. Pass a function to vary it by open state, e.g.
56
+ `(open) => open ? 'Hide lines' : 'Show lines'`. */
57
+ label: React.ReactNode | ((open: boolean) => React.ReactNode);
58
+ content: React.ReactNode;
59
+ /** Start expanded instead of collapsed. */
60
+ defaultOpen?: boolean;
61
+ };
62
+ /** Per-card tint; overrides the grid-level `tone` so mixed kinds can share a grid. */
63
+ tone?: CardTone;
64
+ /**
65
+ * A purpose-built rendering of this record for the side panel, used in place of the
66
+ * generic card when the record has a shape the labelled-field grid reads poorly — an
67
+ * invoice, where the money wants grouping and the lines want listing. The card grid
68
+ * ignores it, so `fields` stays the fallback and the row columns still read from there.
69
+ */
70
+ panel?: React.ReactNode;
71
+ }
72
+
73
+ interface RecordCardsProps {
74
+ records: RecordCardModel[];
75
+ emptyMessage: string;
76
+ /** Adds a "1", "2"… index chip to each card header when there is more than one. */
77
+ numbered?: boolean;
78
+ /**
79
+ * 'stack' (default) lays cards out one under another — best for records with many
80
+ * fields. 'grid' flows compact cards into up to three responsive columns so a short
81
+ * list doesn't stretch the page down its full height.
82
+ */
83
+ layout?: 'stack' | 'grid';
84
+ /**
85
+ * Grid fill mode. 'fit' (default) lets cards grow to fill the row when there are only
86
+ * a few. 'fill' keeps each card at its column width (~a third) even when there's just
87
+ * one, so a lone card doesn't stretch across the whole row.
88
+ */
89
+ gridFill?: 'fit' | 'fill';
90
+ /**
91
+ * Maximum columns for a 'grid' layout: 2 (default) or 3. Only cards with enough room
92
+ * reach the cap — narrow panels still step down to fewer columns.
93
+ */
94
+ columns?: 2 | 3;
95
+ /** Section tint, so each section reads as its own group. Defaults to a plain tile. */
96
+ tone?: CardTone;
97
+ }
98
+
99
+ const toneClass: Record<CardTone, string> = {
100
+ teal: styles.toneTeal,
101
+ blue: styles.toneBlue,
102
+ purple: styles.tonePurple,
103
+ green: styles.toneGreen,
104
+ amber: styles.toneAmber,
105
+ gray: styles.toneGray,
106
+ };
107
+
108
+ const hasContent = (value: React.ReactNode): boolean =>
109
+ !(value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0));
110
+
111
+ /**
112
+ * Renders a list of records as labelled tiles instead of a wide table. Each field
113
+ * keeps its label beside its value, so nothing is lost off the right edge the way it
114
+ * is when a 15-plus-column table scrolls horizontally.
115
+ */
116
+ const RecordCards: React.FC<RecordCardsProps> = ({ records, emptyMessage, numbered, layout = 'stack', gridFill = 'fit', columns = 2, tone }) => {
117
+ const [expanded, setExpanded] = useState<Set<number>>(
118
+ () => new Set(records.map((r, i) => (r.expandable?.defaultOpen ? i : -1)).filter((i) => i >= 0)),
119
+ );
120
+ const toggleExpanded = (index: number) =>
121
+ setExpanded((prev) => {
122
+ const next = new Set(prev);
123
+ next.has(index) ? next.delete(index) : next.add(index);
124
+ return next;
125
+ });
126
+
127
+ if (!records || records.length === 0) {
128
+ return (
129
+ <div className={styles.empty}>
130
+ <DocumentBlank size={24} className={styles.emptyIcon} />
131
+ <span>{emptyMessage}</span>
132
+ </div>
133
+ );
134
+ }
135
+
136
+ return (
137
+ <div
138
+ className={`${styles.cards} ${layout === 'grid' ? styles.cardsGrid : ''} ${
139
+ layout === 'grid' && gridFill === 'fill' ? styles.cardsGridFill : ''
140
+ } ${layout === 'grid' && columns === 3 ? styles.cardsGridThree : ''}`}
141
+ >
142
+ {records.map((record, index) => {
143
+ const cardTone = record.tone ?? tone;
144
+ const isOpen = expanded.has(index);
145
+ return (
146
+ <article className={`${styles.card} ${cardTone ? toneClass[cardTone] : ''}`} key={index}>
147
+ {(record.kind || record.title || record.badge || (numbered && records.length > 1)) && (
148
+ <header className={styles.cardHead}>
149
+ <div className={styles.cardHeadText}>
150
+ {record.kind && <span className={styles.cardKind}>{record.kind}</span>}
151
+ <div className={styles.cardHeadMain}>
152
+ {numbered && records.length > 1 && <span className={styles.indexChip}>{index + 1}</span>}
153
+ {record.title && <span className={styles.cardTitle}>{record.title}</span>}
154
+ </div>
155
+ </div>
156
+ {record.badge && <div className={styles.cardBadge}>{record.badge}</div>}
157
+ </header>
158
+ )}
159
+ <dl className={styles.fieldGrid}>
160
+ {record.fields.filter((f) => hasContent(f.value)).map((field, i) => (
161
+ <div className={`${styles.field} ${field.full ? styles.fieldFull : ''}`} key={i}>
162
+ <dt className={styles.fieldLabel}>{field.label}</dt>
163
+ <dd className={styles.fieldValue}>{field.value}</dd>
164
+ </div>
165
+ ))}
166
+ </dl>
167
+ {record.expandable ? (
168
+ <div className={styles.expandSection}>
169
+ <button
170
+ type="button"
171
+ className={styles.expandToggle}
172
+ aria-expanded={isOpen}
173
+ onClick={() => toggleExpanded(index)}
174
+ >
175
+ <ChevronDown className={`${styles.expandChevron} ${isOpen ? styles.expandChevronOpen : ''}`} />
176
+ {typeof record.expandable.label === 'function' ? record.expandable.label(isOpen) : record.expandable.label}
177
+ </button>
178
+ {isOpen ? <div className={styles.expandContent}>{record.expandable.content}</div> : null}
179
+ </div>
180
+ ) : null}
181
+ {record.actions && <footer className={styles.cardActions}>{record.actions}</footer>}
182
+ </article>
183
+ );
184
+ })}
185
+ </div>
186
+ );
187
+ };
188
+
189
+ export default RecordCards;
190
+
191
+ interface RecordCardsSkeletonProps {
192
+ /** Placeholder cards to draw. Pick roughly what the section usually holds. */
193
+ count?: number;
194
+ /** Field rows per card. */
195
+ fields?: number;
196
+ /** Match the RecordCards call this stands in for, so the grid lines up. */
197
+ layout?: 'stack' | 'grid';
198
+ gridFill?: 'fit' | 'fill';
199
+ columns?: 2 | 3;
200
+ tone?: CardTone;
201
+ }
202
+
203
+ /**
204
+ * Loading placeholder for a RecordCards section. It reuses the same grid, card and
205
+ * field classes as the real thing, so the section reserves the layout it will settle
206
+ * into instead of swapping a differently-shaped block for a card grid once loaded.
207
+ */
208
+ export const RecordCardsSkeleton: React.FC<RecordCardsSkeletonProps> = ({
209
+ count = 3,
210
+ fields = 4,
211
+ layout = 'grid',
212
+ gridFill = 'fit',
213
+ columns = 2,
214
+ tone,
215
+ }) => (
216
+ <div
217
+ className={`${styles.cards} ${layout === 'grid' ? styles.cardsGrid : ''} ${
218
+ layout === 'grid' && gridFill === 'fill' ? styles.cardsGridFill : ''
219
+ } ${layout === 'grid' && columns === 3 ? styles.cardsGridThree : ''}`}
220
+ aria-busy="true"
221
+ aria-label="Loading records"
222
+ >
223
+ {Array.from({ length: count }).map((_, index) => (
224
+ <article className={`${styles.card} ${tone ? toneClass[tone] : ''}`} key={index}>
225
+ <header className={styles.cardHead}>
226
+ <div className={styles.cardHeadText}>
227
+ <span className={styles.cardKind}>
228
+ <SkeletonText width="4rem" />
229
+ </span>
230
+ <div className={styles.cardHeadMain}>
231
+ <span className={styles.cardTitle}>
232
+ <SkeletonText width="9rem" />
233
+ </span>
234
+ </div>
235
+ </div>
236
+ </header>
237
+ <dl className={styles.fieldGrid}>
238
+ {Array.from({ length: fields }).map((__, field) => (
239
+ <div className={styles.field} key={field}>
240
+ <dt className={styles.fieldLabel}>
241
+ <SkeletonText width="70%" />
242
+ </dt>
243
+ <dd className={styles.fieldValue}>
244
+ <SkeletonText width="85%" />
245
+ </dd>
246
+ </div>
247
+ ))}
248
+ </dl>
249
+ </article>
250
+ ))}
251
+ </div>
252
+ );
@@ -0,0 +1,42 @@
1
+ @use '@carbon/layout';
2
+ @use '@openmrs/esm-styleguide/src/vars' as *;
3
+
4
+ /* The workspace frame supplies the panel, its header and its close control, so this is
5
+ only the contents: the record card, scrolling if it outgrows the panel. */
6
+ .workspace {
7
+ display: flex;
8
+ flex-direction: column;
9
+ height: 100%;
10
+ }
11
+
12
+ .body {
13
+ flex: 1 1 auto;
14
+ overflow-y: auto;
15
+ padding: layout.$spacing-05;
16
+ }
17
+
18
+ /* The record's own actions, pinned to the foot of the panel the way every other O3
19
+ workspace ends. Sits outside the scrolling body, so it stays in reach however long the
20
+ details run. */
21
+ .actionBar {
22
+ flex: 0 0 auto;
23
+ display: flex;
24
+ gap: layout.$spacing-03;
25
+ padding: layout.$spacing-04 layout.$spacing-05;
26
+ border-top: 1px solid $ui-03;
27
+ background-color: $ui-02;
28
+
29
+ /* Share the width between however many actions the record has, matching the button
30
+ row the workspaces in this app close with. */
31
+ :global(.cds--btn) {
32
+ flex: 1 1 0;
33
+ max-width: none;
34
+ }
35
+ }
36
+
37
+ .empty {
38
+ margin: 0;
39
+ padding: layout.$spacing-05;
40
+ font-size: 0.875rem;
41
+ color: #6f6f6f;
42
+ }
@@ -0,0 +1,54 @@
1
+ import React, { useMemo } from 'react';
2
+ import { type DefaultWorkspaceProps } from '@openmrs/esm-framework';
3
+ import RecordCards, { type RecordCardModel } from './record-cards.component';
4
+ import styles from './record-details.workspace.scss';
5
+
6
+ /** Registration name, shared with whoever opens or closes this panel. */
7
+ export const RECORD_DETAILS_WORKSPACE = 'record-details-workspace';
8
+
9
+ interface RecordDetailsWorkspaceProps extends DefaultWorkspaceProps {
10
+ /** The record the table row stands for — the same model the row was rendered from. */
11
+ record: RecordCardModel;
12
+ }
13
+
14
+ /**
15
+ * Everything a record's table row left out, shown in the OpenMRS workspace — the app's
16
+ * own right-hand panel.
17
+ *
18
+ * The body is the record card the page used to show inline, rendered by the same
19
+ * component: its kind and title, every field with its label, and the collapsible region
20
+ * (invoice lines, required documents) with its own Show/Hide toggle. Only where it is
21
+ * shown has changed — the table row carries the few fields that tell records apart, and
22
+ * this is the rest of it.
23
+ *
24
+ * The record's own actions are lifted out of the card and pinned to the foot of the
25
+ * panel, where every other O3 workspace puts them, so they stay put and in reach however
26
+ * far the details scroll. Actions belonging to something *inside* the record — removing
27
+ * one invoice line — stay with the line they act on, since there is one per line and the
28
+ * foot of the panel couldn't say which.
29
+ */
30
+ const RecordDetailsWorkspace: React.FC<RecordDetailsWorkspaceProps> = ({ record }) => {
31
+ // The card renders everything but the buttons; they are rendered below instead.
32
+ const cardWithoutActions = useMemo(() => (record ? { ...record, actions: undefined } : record), [record]);
33
+
34
+ if (!record) {
35
+ return <p className={styles.empty}>No record to show.</p>;
36
+ }
37
+
38
+ return (
39
+ <div className={styles.workspace}>
40
+ <div className={styles.body}>
41
+ {/* A record that brings its own panel rendering uses it; the rest fall back to
42
+ the card the page used to show inline. */}
43
+ {record.panel ?? (
44
+ <RecordCards records={[cardWithoutActions]} emptyMessage="No record to show." layout="stack" />
45
+ )}
46
+ </div>
47
+ {/* A record with its own panel rendering brings its own footer with it, so the
48
+ generic bar would be a second copy of the same buttons. */}
49
+ {record.actions && !record.panel ? <div className={styles.actionBar}>{record.actions}</div> : null}
50
+ </div>
51
+ );
52
+ };
53
+
54
+ export default RecordDetailsWorkspace;
@@ -0,0 +1,61 @@
1
+ @use './empty-state' as empty;
2
+
3
+ /* ---- Table ---- */
4
+ /* A scroll container only: the table's own row rules carry the structure. */
5
+ .tableCard {
6
+ overflow-x: auto;
7
+ }
8
+
9
+ .row {
10
+ cursor: pointer;
11
+ }
12
+
13
+ /* The index and the trailing details button only need their own width. */
14
+ .indexCol {
15
+ width: 3rem;
16
+ }
17
+
18
+ .actionCol {
19
+ width: 3rem;
20
+ text-align: right;
21
+ }
22
+
23
+ .visuallyHidden {
24
+ position: absolute;
25
+ width: 1px;
26
+ height: 1px;
27
+ padding: 0;
28
+ margin: -1px;
29
+ overflow: hidden;
30
+ clip: rect(0, 0, 0, 0);
31
+ white-space: nowrap;
32
+ border: 0;
33
+ }
34
+
35
+ /* ---- Empty state ---- */
36
+ /* A plain line of text where the rows would have been, not a boxed placeholder. */
37
+ .empty {
38
+ display: flex;
39
+ align-items: center;
40
+ gap: 0.5rem;
41
+ margin: 0;
42
+ padding: 0.75rem 0;
43
+ font-size: 0.8125rem;
44
+ color: #6f6f6f;
45
+ }
46
+
47
+ .emptyIcon {
48
+ color: #a8a8a8;
49
+ flex-shrink: 0;
50
+ }
51
+
52
+ /* An absence that is blocking something, rather than a section that happens to be
53
+ unused: filled and ruled so it is found by scanning the page rather than by reading
54
+ every empty line to work out which one matters. */
55
+ .emptyDanger {
56
+ @include empty.blocking-callout;
57
+ }
58
+
59
+ .emptyDangerIcon {
60
+ @include empty.blocking-callout-icon;
61
+ }