@ampath/esm-dha-workflow-app 4.0.0-next.44 → 4.0.0-next.448

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 (941) hide show
  1. package/README.md +47 -0
  2. package/dist/1100.js +1 -0
  3. package/dist/1100.js.map +1 -0
  4. package/dist/{197.js → 1197.js} +1 -1
  5. package/dist/1371.js +2 -0
  6. package/dist/1371.js.LICENSE.txt +282 -0
  7. package/dist/1371.js.map +1 -0
  8. package/dist/1435.js +1 -0
  9. package/dist/1435.js.map +1 -0
  10. package/dist/1673.js +1 -0
  11. package/dist/1673.js.map +1 -0
  12. package/dist/1843.js +1 -0
  13. package/dist/1843.js.map +1 -0
  14. package/dist/1931.js +1 -0
  15. package/dist/1931.js.map +1 -0
  16. package/dist/2272.js +2 -0
  17. package/dist/2272.js.map +1 -0
  18. package/dist/2383.js +1 -0
  19. package/dist/2383.js.map +1 -0
  20. package/dist/2439.js +1 -0
  21. package/dist/2439.js.map +1 -0
  22. package/dist/2535.js +1 -0
  23. package/dist/2535.js.map +1 -0
  24. package/dist/2592.js +1 -0
  25. package/dist/2592.js.map +1 -0
  26. package/dist/2632.js +1 -0
  27. package/dist/2632.js.map +1 -0
  28. package/dist/2635.js +1 -0
  29. package/dist/2635.js.map +1 -0
  30. package/dist/2663.js +1 -0
  31. package/dist/2663.js.map +1 -0
  32. package/dist/2687.js +1 -0
  33. package/dist/2687.js.map +1 -0
  34. package/dist/2802.js +1 -0
  35. package/dist/2802.js.map +1 -0
  36. package/dist/2808.js +1 -0
  37. package/dist/2808.js.map +1 -0
  38. package/dist/282.js +1 -1
  39. package/dist/282.js.LICENSE.txt +3 -3
  40. package/dist/282.js.map +1 -1
  41. package/dist/2848.js +1 -0
  42. package/dist/2848.js.map +1 -0
  43. package/dist/3.js +1 -0
  44. package/dist/3.js.map +1 -0
  45. package/dist/3016.js +1 -0
  46. package/dist/3016.js.map +1 -0
  47. package/dist/3041.js +1 -0
  48. package/dist/3041.js.map +1 -0
  49. package/dist/3099.js +1 -0
  50. package/dist/3182.js +1 -0
  51. package/dist/3182.js.map +1 -0
  52. package/dist/3184.js +2 -0
  53. package/dist/3184.js.map +1 -0
  54. package/dist/3196.js +1 -0
  55. package/dist/3196.js.map +1 -0
  56. package/dist/3242.js +1 -0
  57. package/dist/3242.js.map +1 -0
  58. package/dist/3270.js +1 -0
  59. package/dist/3270.js.map +1 -0
  60. package/dist/3288.js +1 -0
  61. package/dist/3288.js.map +1 -0
  62. package/dist/3311.js +2 -0
  63. package/dist/3311.js.LICENSE.txt +9 -0
  64. package/dist/3311.js.map +1 -0
  65. package/dist/3558.js +1 -0
  66. package/dist/3558.js.map +1 -0
  67. package/dist/3612.js +1 -0
  68. package/dist/3612.js.map +1 -0
  69. package/dist/3636.js +1 -0
  70. package/dist/3636.js.map +1 -0
  71. package/dist/3654.js +1 -0
  72. package/dist/3654.js.map +1 -0
  73. package/dist/3794.js +1 -0
  74. package/dist/3794.js.map +1 -0
  75. package/dist/3816.js +1 -0
  76. package/dist/3816.js.map +1 -0
  77. package/dist/3897.js +1 -0
  78. package/dist/3897.js.map +1 -0
  79. package/dist/3949.js +1 -0
  80. package/dist/3949.js.map +1 -0
  81. package/dist/4055.js +1 -0
  82. package/dist/408.js +1 -0
  83. package/dist/408.js.map +1 -0
  84. package/dist/409.js +1 -0
  85. package/dist/409.js.map +1 -0
  86. package/dist/411.js +1 -0
  87. package/dist/411.js.map +1 -0
  88. package/dist/4225.js +1 -0
  89. package/dist/4225.js.map +1 -0
  90. package/dist/4300.js +1 -0
  91. package/dist/{335.js → 4335.js} +1 -1
  92. package/dist/4353.js +1 -0
  93. package/dist/4353.js.map +1 -0
  94. package/dist/4399.js +1 -0
  95. package/dist/4399.js.map +1 -0
  96. package/dist/4569.js +1 -0
  97. package/dist/4569.js.map +1 -0
  98. package/dist/{652.js → 4652.js} +1 -1
  99. package/dist/474.js +1 -0
  100. package/dist/474.js.map +1 -0
  101. package/dist/4993.js +1 -0
  102. package/dist/4993.js.map +1 -0
  103. package/dist/5006.js +1 -0
  104. package/dist/5006.js.map +1 -0
  105. package/dist/5119.js +1 -0
  106. package/dist/5119.js.map +1 -0
  107. package/dist/5138.js +1 -0
  108. package/dist/5138.js.map +1 -0
  109. package/dist/5179.js +1 -0
  110. package/dist/5179.js.map +1 -0
  111. package/dist/5244.js +1 -0
  112. package/dist/5244.js.map +1 -0
  113. package/dist/5353.js +1 -0
  114. package/dist/5353.js.map +1 -0
  115. package/dist/5377.js +1 -0
  116. package/dist/5377.js.map +1 -0
  117. package/dist/5413.js +1 -0
  118. package/dist/5413.js.map +1 -0
  119. package/dist/5422.js +1 -0
  120. package/dist/5422.js.map +1 -0
  121. package/dist/5500.js +1 -0
  122. package/dist/5500.js.map +1 -0
  123. package/dist/5754.js +1 -0
  124. package/dist/5754.js.map +1 -0
  125. package/dist/5805.js +1 -0
  126. package/dist/5805.js.map +1 -0
  127. package/dist/6048.js +1 -0
  128. package/dist/6048.js.map +1 -0
  129. package/dist/6055.js +1 -0
  130. package/dist/6055.js.map +1 -0
  131. package/dist/6206.js +1 -0
  132. package/dist/6206.js.map +1 -0
  133. package/dist/6279.js +1 -0
  134. package/dist/6279.js.map +1 -0
  135. package/dist/6399.js +1 -0
  136. package/dist/6399.js.map +1 -0
  137. package/dist/6540.js +2 -0
  138. package/dist/6540.js.map +1 -0
  139. package/dist/6606.js +1 -0
  140. package/dist/6606.js.map +1 -0
  141. package/dist/6682.js +1 -0
  142. package/dist/6682.js.map +1 -0
  143. package/dist/6802.js +1 -0
  144. package/dist/6802.js.map +1 -0
  145. package/dist/7024.js +1 -0
  146. package/dist/7024.js.map +1 -0
  147. package/dist/72.js +1 -0
  148. package/dist/72.js.map +1 -0
  149. package/dist/7269.js +1 -0
  150. package/dist/7269.js.map +1 -0
  151. package/dist/7332.js +1 -0
  152. package/dist/7332.js.map +1 -0
  153. package/dist/7369.js +1 -0
  154. package/dist/7369.js.map +1 -0
  155. package/dist/7593.js +1 -0
  156. package/dist/7593.js.map +1 -0
  157. package/dist/7694.js +1 -0
  158. package/dist/7694.js.map +1 -0
  159. package/dist/7698.js +1 -0
  160. package/dist/7698.js.map +1 -0
  161. package/dist/7734.js +1 -0
  162. package/dist/7734.js.map +1 -0
  163. package/dist/774.js +1 -0
  164. package/dist/774.js.map +1 -0
  165. package/dist/7852.js +1 -0
  166. package/dist/7852.js.map +1 -0
  167. package/dist/7949.js +2 -0
  168. package/dist/{246.js.LICENSE.txt → 7949.js.LICENSE.txt} +1 -10
  169. package/dist/7949.js.map +1 -0
  170. package/dist/7958.js +1 -0
  171. package/dist/7958.js.map +1 -0
  172. package/dist/8137.js +1 -0
  173. package/dist/8137.js.map +1 -0
  174. package/dist/8167.js +1 -0
  175. package/dist/8167.js.map +1 -0
  176. package/dist/818.js +1 -0
  177. package/dist/818.js.map +1 -0
  178. package/dist/8250.js +1 -0
  179. package/dist/8250.js.map +1 -0
  180. package/dist/8308.js +1 -0
  181. package/dist/8308.js.map +1 -0
  182. package/dist/8735.js +1 -0
  183. package/dist/8735.js.map +1 -0
  184. package/dist/8947.js +1 -0
  185. package/dist/8947.js.map +1 -0
  186. package/dist/8961.js +1 -0
  187. package/dist/8961.js.map +1 -0
  188. package/dist/902.js +1 -0
  189. package/dist/902.js.map +1 -0
  190. package/dist/9062.js +1 -0
  191. package/dist/9062.js.map +1 -0
  192. package/dist/9134.js +1 -0
  193. package/dist/9134.js.map +1 -0
  194. package/dist/9249.js +1 -0
  195. package/dist/9249.js.map +1 -0
  196. package/dist/9418.js +2 -0
  197. package/dist/9418.js.LICENSE.txt +1 -0
  198. package/dist/9418.js.map +1 -0
  199. package/dist/9429.js +1 -0
  200. package/dist/9429.js.map +1 -0
  201. package/dist/9442.js +1 -0
  202. package/dist/9442.js.map +1 -0
  203. package/dist/961.js +1 -1
  204. package/dist/961.js.map +1 -1
  205. package/dist/968.js +1 -0
  206. package/dist/968.js.map +1 -0
  207. package/dist/9709.js +1 -0
  208. package/dist/9709.js.map +1 -0
  209. package/dist/9768.js +1 -0
  210. package/dist/9768.js.map +1 -0
  211. package/dist/9770.js +1 -0
  212. package/dist/9770.js.map +1 -0
  213. package/dist/9879.js +1 -0
  214. package/dist/9879.js.map +1 -0
  215. package/dist/9974.js +1 -0
  216. package/dist/9974.js.map +1 -0
  217. package/dist/esm-dha-workflow-app.js +1 -1
  218. package/dist/esm-dha-workflow-app.js.buildmanifest.json +2249 -224
  219. package/dist/esm-dha-workflow-app.js.map +1 -1
  220. package/dist/main.js +1 -1
  221. package/dist/main.js.map +1 -1
  222. package/dist/routes.json +1 -1
  223. package/jest.config.js +4 -0
  224. package/local-config.json +9 -0
  225. package/package.json +29 -11
  226. package/src/admissions/admission-request-list/admission-request-list.scss +0 -0
  227. package/src/admissions/admission-request-list/admission-request-list.tsx +263 -0
  228. package/src/admissions/admissions-dashboard.component.scss +15 -0
  229. package/src/admissions/admissions-dashboard.component.tsx +277 -0
  230. package/src/admissions/admissions.resource.ts +233 -0
  231. package/src/admissions/admitted-list/admitted-patients-list.tsx +268 -0
  232. package/src/admissions/awaiting-discharge-list/awaiting-discharge-list.tsx +197 -0
  233. package/src/admissions/bed-assigment-request/bed-assignment-request-list.tsx +134 -0
  234. package/src/admissions/constants/index.ts +33 -0
  235. package/src/admissions/discharged-list/discharged-list.scss +0 -0
  236. package/src/admissions/discharged-list/discharged-list.tsx +67 -0
  237. package/src/admissions/form-entry-workspace/form-entry-workspace.tsx +62 -0
  238. package/src/admissions/inpatient/admission-history/patient-admission-history.tsx +76 -0
  239. package/src/admissions/inpatient/admission-requests/patient-admission-requests.scss +19 -0
  240. package/src/admissions/inpatient/admission-requests/patient-admission-requests.tsx +72 -0
  241. package/src/admissions/inpatient/inpatient-admissions.component.scss +7 -0
  242. package/src/admissions/inpatient/inpatient-admissions.component.tsx +46 -0
  243. package/src/admissions/modal/add-bill-items/add-bill-items.modal.scss +17 -0
  244. package/src/admissions/modal/add-bill-items/add-bill-items.modal.tsx +220 -0
  245. package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.scss +23 -0
  246. package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.tsx +156 -0
  247. package/src/admissions/modal/admit-patient/admit-patient.modal.scss +0 -0
  248. package/src/admissions/modal/admit-patient/admit-patient.modal.tsx +111 -0
  249. package/src/admissions/modal/bed-swap/bed-swap.modal.scss +0 -0
  250. package/src/admissions/modal/bed-swap/bed-swap.modal.tsx +102 -0
  251. package/src/admissions/modal/cancel-admission-request/cancel-admission-request.scss +11 -0
  252. package/src/admissions/modal/cancel-admission-request/cancel-admission-request.tsx +105 -0
  253. package/src/admissions/modal/discharge/discharge-patient.modal.scss +13 -0
  254. package/src/admissions/modal/discharge/discharge-patient.modal.tsx +86 -0
  255. package/src/admissions/types/index.ts +263 -0
  256. package/src/appointments/appointments.component.scss +6 -0
  257. package/src/appointments/appointments.component.tsx +8 -1
  258. package/src/billing/admin/claims/claims-list.component.scss +13 -0
  259. package/src/billing/admin/claims/claims-list.component.tsx +163 -0
  260. package/src/billing/admin/claims-admin-dashboard.component.scss +0 -0
  261. package/src/billing/admin/claims-admin-dashboard.component.tsx +32 -0
  262. package/src/billing/api/billing.api.ts +139 -0
  263. package/src/billing/billing-claims.resource.ts +1112 -0
  264. package/src/billing/billing-dashboard-link.component.tsx +31 -0
  265. package/src/billing/billing-dashboard-reset.ts +27 -0
  266. package/src/billing/billing-root.tsx +37 -0
  267. package/src/billing/dashboard/billingDashboard.component.scss +0 -0
  268. package/src/billing/dashboard/billingDashboard.component.tsx +25 -0
  269. package/src/billing/dashboard/v2/active-visits/active-visits.component.tsx +257 -0
  270. package/src/billing/dashboard/v2/active-visits/active-visits.resource.ts +85 -0
  271. package/src/billing/dashboard/v2/active-visits/active-visits.scss +15 -0
  272. package/src/billing/dashboard/v2/active-visits.component.tsx +102 -0
  273. package/src/billing/dashboard/v2/admissions/admission-requests-tab.component.tsx +79 -0
  274. package/src/billing/dashboard/v2/billing-and-claims-patient-chart.component.tsx +52 -0
  275. package/src/billing/dashboard/v2/billing-claims-dashboard.component.scss +221 -0
  276. package/src/billing/dashboard/v2/billing-claims-dashboard.component.tsx +342 -0
  277. package/src/billing/dashboard/v2/cash-checklist/bill-document.component.scss +90 -0
  278. package/src/billing/dashboard/v2/cash-checklist/bill-document.component.tsx +101 -0
  279. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.scss +199 -0
  280. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.tsx +361 -0
  281. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.resource.ts +239 -0
  282. package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.scss +246 -0
  283. package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.tsx +182 -0
  284. package/src/billing/dashboard/v2/claim-statuses.ts +143 -0
  285. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
  286. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +35 -0
  287. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.scss +67 -0
  288. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.tsx +90 -0
  289. package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.scss +28 -0
  290. package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.tsx +36 -0
  291. package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.scss +119 -0
  292. package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.tsx +198 -0
  293. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.scss +5 -0
  294. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +160 -0
  295. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.scss +105 -0
  296. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.tsx +184 -0
  297. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.scss +161 -0
  298. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.tsx +328 -0
  299. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +96 -0
  300. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-document.component.tsx +236 -0
  301. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.scss +98 -0
  302. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.tsx +293 -0
  303. package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +133 -0
  304. package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +217 -0
  305. package/src/billing/dashboard/v2/claim-visits/claim-list/claim-visits.component.scss +28 -0
  306. package/src/billing/dashboard/v2/claim-visits/claim-list/claim-visits.component.tsx +315 -0
  307. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-by-token.component.tsx +150 -0
  308. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.scss +13 -0
  309. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.tsx +116 -0
  310. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.scss +338 -0
  311. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.tsx +616 -0
  312. package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
  313. package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
  314. package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +17 -0
  315. package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +56 -0
  316. package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
  317. package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
  318. package/src/billing/dashboard/v2/claim-visits/modal/submit-claim/submit-claim.modal.tsx +280 -0
  319. package/src/billing/dashboard/v2/claim-visits/shared/_empty-state.scss +28 -0
  320. package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.scss +298 -0
  321. package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.tsx +252 -0
  322. package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.scss +42 -0
  323. package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.tsx +67 -0
  324. package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.scss +61 -0
  325. package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.tsx +150 -0
  326. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
  327. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
  328. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.tsx +660 -0
  329. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.scss +595 -0
  330. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.tsx +810 -0
  331. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.resource.ts +282 -0
  332. package/src/billing/dashboard/v2/claims-accounting/bill-utils.ts +134 -0
  333. package/src/billing/dashboard/v2/claims-accounting/claim-detail.component.tsx +346 -0
  334. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.scss +546 -0
  335. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.tsx +206 -0
  336. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.resource.ts +337 -0
  337. package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.scss +90 -0
  338. package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.tsx +90 -0
  339. package/src/billing/dashboard/v2/claims-accounting/remittances.component.tsx +169 -0
  340. package/src/billing/dashboard/v2/claims-accounting/remittances.resource.ts +46 -0
  341. package/src/billing/dashboard/v2/claims-accounting/status-meta.ts +25 -0
  342. package/src/billing/dashboard/v2/clearance/cash-patients.scss +18 -0
  343. package/src/billing/dashboard/v2/clearance/cash.component.tsx +145 -0
  344. package/src/billing/dashboard/v2/clearance/clearance.component.scss +84 -0
  345. package/src/billing/dashboard/v2/clearance/clearance.component.tsx +225 -0
  346. package/src/billing/dashboard/v2/clearance/pay-cash.component.tsx +199 -0
  347. package/src/billing/dashboard/v2/clearance/pay-cash.scss +28 -0
  348. package/src/billing/dashboard/v2/clearance/prepaid-services.component.tsx +112 -0
  349. package/src/billing/dashboard/v2/facility-bills/claim-status.ts +249 -0
  350. package/src/billing/dashboard/v2/facility-bills/facility-bills.component.scss +140 -0
  351. package/src/billing/dashboard/v2/facility-bills/facility-bills.component.tsx +688 -0
  352. package/src/billing/dashboard/v2/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
  353. package/src/billing/dashboard/v2/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +267 -0
  354. package/src/billing/dashboard/v2/facility-bills/preauths.component.tsx +130 -0
  355. package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.scss +22 -0
  356. package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.tsx +382 -0
  357. package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.scss +0 -0
  358. package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.tsx +0 -0
  359. package/src/billing/dashboard/v2/new-facility-bills/bills-table.component.tsx +78 -0
  360. package/src/billing/dashboard/v2/new-facility-bills/bills-table.scss +18 -0
  361. package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.component.tsx +64 -0
  362. package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.scss +146 -0
  363. package/src/billing/dashboard/v2/patient-bill-details/attachments/add-attachments.component.tsx +234 -0
  364. package/src/billing/dashboard/v2/patient-bill-details/attachments/attachment.component.tsx +157 -0
  365. package/src/billing/dashboard/v2/patient-bill-details/attachments/attachments.scss +92 -0
  366. package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
  367. package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.tsx +326 -0
  368. package/src/billing/dashboard/v2/patient-bill-details/attachments/death-notification.component.tsx +162 -0
  369. package/src/billing/dashboard/v2/patient-bill-details/attachments/death-notification.resource.ts +112 -0
  370. package/src/billing/dashboard/v2/patient-bill-details/attachments/death-notification.scss +88 -0
  371. package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
  372. package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +269 -0
  373. package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
  374. package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +124 -0
  375. package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.component.tsx +152 -0
  376. package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.scss +225 -0
  377. package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
  378. package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +173 -0
  379. package/src/billing/dashboard/v2/patient-bill-details/attachments/generate-attachments.component.tsx +450 -0
  380. package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.component.tsx +151 -0
  381. package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.scss +225 -0
  382. package/src/billing/dashboard/v2/patient-bill-details/attachments/type.ts +44 -0
  383. package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.scss +107 -0
  384. package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.tsx +508 -0
  385. package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.scss +30 -0
  386. package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.tsx +94 -0
  387. package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.scss +89 -0
  388. package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.tsx +53 -0
  389. package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.scss +32 -0
  390. package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.tsx +215 -0
  391. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
  392. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
  393. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +187 -0
  394. package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.scss +153 -0
  395. package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.tsx +458 -0
  396. package/src/billing/dashboard/v2/patient-bill-details/payment-mode.ts +124 -0
  397. package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.scss +27 -0
  398. package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.tsx +234 -0
  399. package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.scss +27 -0
  400. package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.tsx +123 -0
  401. package/src/billing/dashboard/v2/preauth/preauth-attachments.component.tsx +389 -0
  402. package/src/billing/dashboard/v2/preauth/preauth-list.component.scss +38 -0
  403. package/src/billing/dashboard/v2/preauth/preauth-list.component.tsx +241 -0
  404. package/src/billing/dashboard/v2/preauth/preauth-status-tag.component.tsx +75 -0
  405. package/src/billing/dashboard/v2/preauth/preauth-typed-fields.md +125 -0
  406. package/src/billing/dashboard/v2/preauth/preauth.resource.ts +1032 -0
  407. package/src/billing/dashboard/v2/preauth/preauth.workspace.scss +91 -0
  408. package/src/billing/dashboard/v2/preauth/preauth.workspace.tsx +1802 -0
  409. package/src/billing/dashboard/v2/preauth/preauthorizations-tab.component.tsx +53 -0
  410. package/src/billing/dashboard/v2/sha-claims/sha-claims-table.component.tsx +36 -0
  411. package/src/billing/dashboard/v2/sha-claims/sha-claims.component.tsx +60 -0
  412. package/src/billing/dashboard/v2/sha-claims/sha-claims.scss +8 -0
  413. package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.scss +17 -0
  414. package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.tsx +15 -0
  415. package/src/billing/dashboard/v2/shared/empty-state.component.scss +24 -0
  416. package/src/billing/dashboard/v2/shared/empty-state.component.tsx +13 -0
  417. package/src/billing/dashboard/v2/shared/scroll-to-top.component.scss +54 -0
  418. package/src/billing/dashboard/v2/shared/scroll-to-top.component.tsx +54 -0
  419. package/src/billing/dashboard/v2/shared/table-toolbar.component.scss +77 -0
  420. package/src/billing/dashboard/v2/shared/table-toolbar.component.tsx +48 -0
  421. package/src/billing/dashboard/v2/types/index.ts +534 -0
  422. package/src/billing/dashboard/v3/active-visits/active-visits.component.tsx +256 -0
  423. package/src/billing/dashboard/v3/active-visits/active-visits.resource.ts +57 -0
  424. package/src/billing/dashboard/v3/active-visits/active-visits.scss +15 -0
  425. package/src/billing/dashboard/v3/cash-checklist/bill-document.component.scss +90 -0
  426. package/src/billing/dashboard/v3/cash-checklist/bill-document.component.tsx +101 -0
  427. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.scss +199 -0
  428. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.tsx +361 -0
  429. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.resource.ts +240 -0
  430. package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.scss +246 -0
  431. package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.tsx +182 -0
  432. package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
  433. package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +44 -0
  434. package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.scss +5 -0
  435. package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.tsx +40 -0
  436. package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.scss +10 -0
  437. package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.tsx +25 -0
  438. package/src/billing/dashboard/v3/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +268 -0
  439. package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.scss +6 -0
  440. package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +85 -0
  441. package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +0 -0
  442. package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +109 -0
  443. package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.scss +103 -0
  444. package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.tsx +519 -0
  445. package/src/billing/dashboard/v3/claim-visits/claim-visits.component.scss +5 -0
  446. package/src/billing/dashboard/v3/claim-visits/claim-visits.component.tsx +139 -0
  447. package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
  448. package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
  449. package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.scss +7 -0
  450. package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.tsx +35 -0
  451. package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +6 -0
  452. package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +33 -0
  453. package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
  454. package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
  455. package/src/billing/dashboard/v3/claim-visits/modal/identify-emergency-unknown-patient/identify-emergencu-unknown-patient.scss +407 -0
  456. package/src/billing/dashboard/v3/claim-visits/modal/identify-emergency-unknown-patient/identify-emergency-unknown-patient.component.tsx +523 -0
  457. package/src/billing/dashboard/v3/claim-visits/modal/identify-emergency-unknown-patient/identify-patient-helper.ts +77 -0
  458. package/src/billing/dashboard/v3/claim-visits/modal/submit-claim/submit-claim.modal.tsx +280 -0
  459. package/src/billing/dashboard/v3/claim-visits/modal/submit-emergency-claim/submit-emergency-claim.component.tsx +91 -0
  460. package/src/billing/dashboard/v3/claim-visits/modal/submit-emergency-claim/submit-emergency.scss +14 -0
  461. package/src/billing/dashboard/v3/claim-visits/payer-preview/index.scss +140 -0
  462. package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-tile.component.tsx +55 -0
  463. package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-workspace.component.tsx +171 -0
  464. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-doctors.component.tsx +54 -0
  465. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-lines.component.tsx +48 -0
  466. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-notes.component.tsx +47 -0
  467. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-diagnoses.component.tsx +44 -0
  468. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-interventions.component.tsx +44 -0
  469. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
  470. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
  471. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.tsx +644 -0
  472. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.scss +595 -0
  473. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.tsx +810 -0
  474. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.resource.ts +282 -0
  475. package/src/billing/dashboard/v3/claims-accounting/bill-utils.ts +134 -0
  476. package/src/billing/dashboard/v3/claims-accounting/claim-detail.component.tsx +346 -0
  477. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.scss +546 -0
  478. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.tsx +206 -0
  479. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.resource.ts +337 -0
  480. package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.scss +90 -0
  481. package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.tsx +90 -0
  482. package/src/billing/dashboard/v3/claims-accounting/remittances.component.tsx +169 -0
  483. package/src/billing/dashboard/v3/claims-accounting/remittances.resource.ts +46 -0
  484. package/src/billing/dashboard/v3/claims-accounting/status-meta.ts +25 -0
  485. package/src/billing/dashboard/v3/claims-stats-dashboard/claim-stat/claim-stat.component.scss +27 -0
  486. package/src/billing/dashboard/v3/claims-stats-dashboard/claim-stat/claim-stat.component.tsx +41 -0
  487. package/src/billing/dashboard/v3/claims-stats-dashboard/claims-stats-dashboard.component.scss +16 -0
  488. package/src/billing/dashboard/v3/claims-stats-dashboard/claims-stats-dashboard.component.tsx +184 -0
  489. package/src/billing/dashboard/v3/claims-stats-dashboard/modal/claim-stats-list/claim-stats-list.modal.scss +0 -0
  490. package/src/billing/dashboard/v3/claims-stats-dashboard/modal/claim-stats-list/claim-stats-list.modal.tsx +27 -0
  491. package/src/billing/dashboard/v3/clearance/clearance.component.scss +100 -0
  492. package/src/billing/dashboard/v3/clearance/clearance.component.tsx +0 -0
  493. package/src/billing/dashboard/v3/clearance/prepaid-services.component.tsx +112 -0
  494. package/src/billing/dashboard/v3/facility-bills/claim-status.ts +243 -0
  495. package/src/billing/dashboard/v3/facility-bills/facility-bills.component.scss +92 -0
  496. package/src/billing/dashboard/v3/facility-bills/facility-bills.component.tsx +306 -0
  497. package/src/billing/dashboard/v3/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
  498. package/src/billing/dashboard/v3/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +232 -0
  499. package/src/billing/dashboard/v3/facility-bills/preauths.component.tsx +127 -0
  500. package/src/billing/dashboard/v3/patient-bill-details/attachments/add-attachments.component.tsx +228 -0
  501. package/src/billing/dashboard/v3/patient-bill-details/attachments/attachment.component.tsx +157 -0
  502. package/src/billing/dashboard/v3/patient-bill-details/attachments/attachments.scss +92 -0
  503. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary-helper.ts +58 -0
  504. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
  505. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.tsx +287 -0
  506. package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
  507. package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +352 -0
  508. package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-helper.ts +117 -0
  509. package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
  510. package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +126 -0
  511. package/src/billing/dashboard/v3/patient-bill-details/attachments/final-bill.component.tsx +75 -0
  512. package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
  513. package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +253 -0
  514. package/src/billing/dashboard/v3/patient-bill-details/attachments/generate-attachments.component.tsx +450 -0
  515. package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.component.tsx +151 -0
  516. package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.scss +225 -0
  517. package/src/billing/dashboard/v3/patient-bill-details/attachments/lab-results/lab-orders.component.tsx +198 -0
  518. package/src/billing/dashboard/v3/patient-bill-details/attachments/lab-results/lab-orders.scss +227 -0
  519. package/src/billing/dashboard/v3/patient-bill-details/attachments/medical-report/medical-report.component.tsx +346 -0
  520. package/src/billing/dashboard/v3/patient-bill-details/attachments/medical-report/medical-report.scss +265 -0
  521. package/src/billing/dashboard/v3/patient-bill-details/attachments/proforma-invoice/proforma-invoice.component.tsx +347 -0
  522. package/src/billing/dashboard/v3/patient-bill-details/attachments/proforma-invoice/proforma-invoice.scss +285 -0
  523. package/src/billing/dashboard/v3/patient-bill-details/attachments/type.ts +280 -0
  524. package/src/billing/dashboard/v3/patient-bill-details/attachments/ultrasound-report/ultrasound-report.scss +273 -0
  525. package/src/billing/dashboard/v3/patient-bill-details/attachments/ultrasound-report/utlrasound-report.component.tsx +435 -0
  526. package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.scss +17 -0
  527. package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.tsx +377 -0
  528. package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.scss +0 -0
  529. package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.tsx +71 -0
  530. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
  531. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
  532. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.scss +14 -0
  533. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +156 -0
  534. package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.scss +6 -0
  535. package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.tsx +137 -0
  536. package/src/billing/dashboard/v3/patient-bill-details/modals/claim-details/claim-details.modal.scss +28 -0
  537. package/src/billing/dashboard/v3/patient-bill-details/modals/claim-details/claim-details.modal.tsx +170 -0
  538. package/src/billing/dashboard/v3/patient-bill-details/modals/pomsf/pomsf-scheme-balance.util.test.ts +56 -0
  539. package/src/billing/dashboard/v3/patient-bill-details/modals/pomsf/pomsf-scheme-balance.util.ts +27 -0
  540. package/src/billing/dashboard/v3/patient-bill-details/modals/pomsf/set-effective-pomsf-coverage.component.tsx +128 -0
  541. package/src/billing/dashboard/v3/patient-bill-details/modals/pomsf/set-effective-pomsf-coverage.scss +27 -0
  542. package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.scss +85 -0
  543. package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.tsx +363 -0
  544. package/src/billing/dashboard/v3/patient-bill-details/patient-visit-details.tsx +256 -0
  545. package/src/billing/dashboard/v3/patient-bill-details/patient-visit.scss +9 -0
  546. package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.scss +0 -0
  547. package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.tsx +102 -0
  548. package/src/billing/dashboard/v3/preauth/elective/elective-authorize.resource.ts +284 -0
  549. package/src/billing/dashboard/v3/preauth/elective/elective-preauth-request.workspace.scss +125 -0
  550. package/src/billing/dashboard/v3/preauth/elective/elective-preauth-request.workspace.tsx +1184 -0
  551. package/src/billing/dashboard/v3/preauth/elective/elective-preauth.component.scss +15 -0
  552. package/src/billing/dashboard/v3/preauth/elective/elective-preauth.component.tsx +377 -0
  553. package/src/billing/dashboard/v3/preauth/elective/elective-preauth.resource.ts +1378 -0
  554. package/src/billing/dashboard/v3/preauth/elective/elective-requests-list.component.tsx +357 -0
  555. package/src/billing/dashboard/v3/preauth/preauth-attachments.component.tsx +388 -0
  556. package/src/billing/dashboard/v3/preauth/preauth-list.component.scss +34 -0
  557. package/src/billing/dashboard/v3/preauth/preauth-list.component.tsx +300 -0
  558. package/src/billing/dashboard/v3/preauth/preauth-status-tag.component.tsx +75 -0
  559. package/src/billing/dashboard/v3/preauth/preauth-typed-fields.md +125 -0
  560. package/src/billing/dashboard/v3/preauth/preauth.resource.ts +1549 -0
  561. package/src/billing/dashboard/v3/preauth/preauth.workspace.scss +176 -0
  562. package/src/billing/dashboard/v3/preauth/preauth.workspace.tsx +2458 -0
  563. package/src/billing/dashboard/v3/preauth/preauthorizations-tab.component.tsx +55 -0
  564. package/src/billing/dashboard/v3/shared/empty-state.component.scss +25 -0
  565. package/src/billing/dashboard/v3/shared/empty-state.component.tsx +13 -0
  566. package/src/billing/dashboard/v3/shared/table-toolbar.component.scss +64 -0
  567. package/src/billing/dashboard/v3/shared/table-toolbar.component.tsx +48 -0
  568. package/src/billing/dashboard/v3/types/index.ts +450 -0
  569. package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.extension.tsx +55 -0
  570. package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.scss +16 -0
  571. package/src/billing/extensions/visit-billing/visit-billing.extension.scss +0 -0
  572. package/src/billing/extensions/visit-billing/visit-billing.extension.tsx +514 -0
  573. package/src/billing/invoice/bill.resource.ts +47 -0
  574. package/src/billing/invoice/invoice-header/header-card/header-card.scss +17 -0
  575. package/src/billing/invoice/invoice-header/header-card/header-card.tsx +21 -0
  576. package/src/billing/invoice/invoice.scss +113 -0
  577. package/src/billing/invoice/invoice.tsx +1441 -0
  578. package/src/billing/invoice/line-items/line-items.scss +0 -0
  579. package/src/billing/invoice/line-items/line-items.tsx +120 -0
  580. package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.scss +23 -0
  581. package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.tsx +114 -0
  582. package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.scss +0 -0
  583. package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.tsx +122 -0
  584. package/src/billing/invoice/payment-details/payment-details.scss +0 -0
  585. package/src/billing/invoice/payment-details/payment-details.tsx +43 -0
  586. package/src/billing/invoice/print-invoice/print-receipt.component.tsx +44 -0
  587. package/src/billing/invoice/print-invoice/print-receipt.scss +14 -0
  588. package/src/billing/maternity-discharge.resource.ts +21 -0
  589. package/src/billing/reports/billing-and-claims-reports-dashboard.scss +40 -0
  590. package/src/billing/reports/billing-and-claims-reports-dashboard.tsx +32 -0
  591. package/src/billing/reports/claims/claims-report-dashboard.scss +55 -0
  592. package/src/billing/reports/claims/claims-report-dashboard.tsx +136 -0
  593. package/src/billing/reports/claims/summary-data/summary-data.scss +24 -0
  594. package/src/billing/reports/claims/summary-data/summary-data.tsx +184 -0
  595. package/src/billing/types/index.ts +411 -0
  596. package/src/billing/utils/index.ts +17 -0
  597. package/src/billing/widgets/billingTotalsRow.component.scss +0 -0
  598. package/src/billing/widgets/billingTotalsRow.component.tsx +712 -0
  599. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.resource.ts +223 -0
  600. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.scss +58 -0
  601. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.workspace.tsx +874 -0
  602. package/src/billing/workspaces/create-order-bill-form-workspace/schema.ts +20 -0
  603. package/src/billing/workspaces/create-order-bill-form-workspace/types.ts +49 -0
  604. package/src/bookings/bookings.component.scss +7 -0
  605. package/src/bookings/bookings.component.tsx +35 -0
  606. package/src/bookings/daily/daily-bookings.resource.ts +2 -1
  607. package/src/case-summary/case-summary.extension.scss +13 -0
  608. package/src/case-summary/case-summary.extension.tsx +40 -0
  609. package/src/case-summary/case-summary.resource.test.ts +69 -0
  610. package/src/case-summary/case-summary.resource.ts +52 -0
  611. package/src/case-summary/components/case-summary-printable.component.scss +174 -0
  612. package/src/case-summary/components/case-summary-printable.component.tsx +288 -0
  613. package/src/case-summary/components/case-summary-printable.utils.ts +51 -0
  614. package/src/case-summary/types/case-summary.types.ts +152 -0
  615. package/src/claims/claims.component.scss +70 -0
  616. package/src/claims/claims.component.tsx +743 -0
  617. package/src/claims/claims.resource.ts +1855 -0
  618. package/src/claims/index.ts +365 -0
  619. package/src/claims/interventions.resource.ts +131 -0
  620. package/src/claims/utils.ts +64 -0
  621. package/src/config-schema.ts +264 -0
  622. package/src/context/patient-context.tsx +27 -0
  623. package/src/critical-care-unit/critical-care-root.tsx +23 -0
  624. package/src/critical-care-unit/hdu/hdu-queues.component.scss +7 -0
  625. package/src/critical-care-unit/hdu/hdu-queues.component.tsx +31 -0
  626. package/src/critical-care-unit/hdu/queues/consultation/hdu-consultation.tsx +18 -0
  627. package/src/critical-care-unit/icu/icu-queues.component.scss +7 -0
  628. package/src/critical-care-unit/icu/icu-queues.component.tsx +31 -0
  629. package/src/critical-care-unit/icu/queues/consultation/icu-consultation.tsx +17 -0
  630. package/src/critical-care-unit/icu-burns/icu-burns-queues.component.scss +7 -0
  631. package/src/critical-care-unit/icu-burns/icu-burns-queues.component.tsx +30 -0
  632. package/src/critical-care-unit/icu-burns/queues/consultation/icu-burns-consultation.tsx +17 -0
  633. package/src/critical-care-unit/nicu/nicu-queues.component.scss +7 -0
  634. package/src/critical-care-unit/nicu/nicu-queues.component.tsx +31 -0
  635. package/src/critical-care-unit/nicu/queues/consultation/nicu-consultation.tsx +17 -0
  636. package/src/critical-care-unit/picu/picu-queues.component.scss +7 -0
  637. package/src/critical-care-unit/picu/picu-queues.component.tsx +31 -0
  638. package/src/critical-care-unit/picu/queues/consultation/picu-consultation.tsx +17 -0
  639. package/src/dashboard/charts/chart.component.scss +24 -0
  640. package/src/dashboard/charts/chart.component.tsx +56 -0
  641. package/src/dashboard/dashboard.component.scss +48 -3
  642. package/src/dashboard/dashboard.component.tsx +29 -38
  643. package/src/dashboard/overview/overview.component.scss +40 -59
  644. package/src/dashboard/overview/overview.component.tsx +55 -41
  645. package/src/dashboard-meta/accounting-dashboard.meta.ts +6 -0
  646. package/src/dashboard-meta/admissions-dashboard.meta.ts +6 -0
  647. package/src/dashboard-meta/billing-dashboard.meta.ts +6 -0
  648. package/src/dashboard-meta/bookings-dashboard.meta.ts +6 -0
  649. package/src/dashboard-meta/case-summary.meta.ts +6 -0
  650. package/src/dashboard-meta/claims-admin.meta.ts +6 -0
  651. package/src/dashboard-meta/consultation-dashboard.meta.ts +6 -0
  652. package/src/dashboard-meta/dha-workflow-dashboard.meta.ts +6 -0
  653. package/src/dashboard-meta/elective-preauth.meta.ts +6 -0
  654. package/src/dashboard-meta/emt-dashboard.meta.ts +6 -0
  655. package/src/dashboard-meta/inpatient-admissions.meta.ts +6 -0
  656. package/src/dashboard-meta/maternity-dashboard.meta.ts +6 -0
  657. package/src/dashboard-meta/mch-dashboard.meta.ts +6 -0
  658. package/src/dashboard-meta/registers-dashboard.meta.ts +6 -0
  659. package/src/{registry-dashboard.meta.ts → dashboard-meta/registry-dashboard.meta.ts} +2 -2
  660. package/src/dashboard-meta/service-queue-admin.meta.ts +6 -0
  661. package/src/dashboard-meta/shr-dashboard.meta.ts +19 -0
  662. package/src/dashboard-meta/specialized-clinics-dashboard.meta.ts +6 -0
  663. package/src/dashboard-meta/telemedicine-dashboard.meta.ts +6 -0
  664. package/src/dashboard-meta/telemedicine-patient-chart.meta.ts +6 -0
  665. package/src/death-reporting/death-reporting-form-button.component.tsx +50 -0
  666. package/src/death-reporting/death-reporting-form-button.resource.ts +64 -0
  667. package/src/emt/cr-lookup.resource.test.ts +88 -0
  668. package/src/emt/cr-lookup.resource.ts +42 -0
  669. package/src/emt/emt-queue.component.test.tsx +353 -0
  670. package/src/emt/emt-queue.component.tsx +463 -0
  671. package/src/emt/emt-queue.scss +85 -0
  672. package/src/emt/emt.resource.test.ts +247 -0
  673. package/src/emt/emt.resource.ts +150 -0
  674. package/src/emt/handover-modal/handover-modal.component.test.tsx +273 -0
  675. package/src/emt/handover-modal/handover-modal.component.tsx +538 -0
  676. package/src/emt/handover-modal/handover-modal.scss +113 -0
  677. package/src/emt/types/emt.types.ts +137 -0
  678. package/src/index.ts +232 -11
  679. package/src/mnch/maternity/maternity-queues.component.scss +7 -0
  680. package/src/mnch/maternity/maternity-queues.component.tsx +32 -0
  681. package/src/mnch/maternity/queues/triage/maternity-triage.tsx +15 -0
  682. package/src/mnch/mch/mch-queues.component.scss +10 -0
  683. package/src/mnch/mch/mch-queues.component.tsx +36 -0
  684. package/src/{mch → mnch/mch}/queues/consultation/mch-consultation.tsx +2 -2
  685. package/src/{mch → mnch/mch}/queues/triage/mch-triage.tsx +2 -2
  686. package/src/mnch/mnch-root.tsx +17 -0
  687. package/src/mortuary/mortuary.component.tsx +2 -2
  688. package/src/pharmacy/pharmacy.component.scss +16 -0
  689. package/src/pharmacy/pharmacy.component.tsx +11 -6
  690. package/src/registers/registers.component.tsx +8 -0
  691. package/src/registry/drawer/emr-compare.component.scss +263 -0
  692. package/src/registry/drawer/emr-compare.component.tsx +302 -0
  693. package/src/registry/drawer/emr-compare.resource.ts +181 -0
  694. package/src/registry/drawer/emr-create-preview.component.tsx +123 -0
  695. package/src/registry/drawer/otp-verification-step.component.tsx +398 -0
  696. package/src/registry/drawer/pomsf-balance.util.test.ts +177 -0
  697. package/src/registry/drawer/pomsf-balance.util.ts +116 -0
  698. package/src/registry/drawer/verification.resource.ts +60 -0
  699. package/src/registry/drawer/workflow-drawer.component.scss +1242 -0
  700. package/src/registry/drawer/workflow-drawer.component.tsx +1542 -0
  701. package/src/registry/eligibility/eligibility-details/eligibility-details.scss +38 -0
  702. package/src/registry/eligibility/eligibility-details/eligibility-details.tsx +101 -0
  703. package/src/registry/eligibility/eliigibility-tags/eligibility-tags.scss +16 -0
  704. package/src/registry/eligibility/eliigibility-tags/eligibility-tags.tsx +120 -0
  705. package/src/registry/eligibility/modal/eligibility-details.modal.scss +0 -0
  706. package/src/registry/eligibility/modal/eligibility-details.modal.tsx +45 -0
  707. package/src/registry/emergency/emergency-extension.component.tsx +599 -0
  708. package/src/registry/emergency/emergency-helper.ts +47 -0
  709. package/src/registry/emergency/emergency.resource.ts +291 -0
  710. package/src/registry/emergency/emergency.scss +123 -0
  711. package/src/registry/emergency/otp-component.tsx +289 -0
  712. package/src/registry/emergency/type/index.ts +77 -0
  713. package/src/registry/emergency/unidentified/unidentified-registration.component.tsx +154 -0
  714. package/src/registry/emergency/unidentified/unidentified-registration.scss +0 -0
  715. package/src/registry/emergency/unidentified/unidentified.component.tsx +376 -0
  716. package/src/registry/emergency/unidentified/unidentified.scss +0 -0
  717. package/src/registry/hie.resource.ts +481 -0
  718. package/src/registry/hie.types.ts +63 -0
  719. package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.scss +277 -0
  720. package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.tsx +218 -0
  721. package/src/registry/modal/biometrics-verification-modal/type.ts +39 -0
  722. package/src/registry/modal/client-details-modal/client-details-modal.tsx +65 -29
  723. package/src/registry/modal/otp-modal/otp-whitlisting-modal.component.tsx +809 -0
  724. package/src/registry/modal/otp-modal/otp-whitlisting-modal.scss +354 -0
  725. package/src/registry/modal/otp-modal/otp-whitlisting.scss +0 -0
  726. package/src/registry/modal/otp-verification-modal/claims-consent.scss +72 -0
  727. package/src/registry/modal/otp-verification-modal/claims-consent.tsx +135 -0
  728. package/src/registry/modal/otp-verification-modal/extension/claims-consent.extension.tsx +130 -0
  729. package/src/registry/modal/otp-verification-modal/otp-verification-modal.scss +15 -3
  730. package/src/registry/modal/otp-verification-modal/otp-verification-modal.tsx +136 -44
  731. package/src/registry/modal/send-to-triage/payment-details.tsx +120 -0
  732. package/src/registry/modal/send-to-triage/payment-method.component.tsx +54 -0
  733. package/src/registry/modal/send-to-triage/send-to-queue.modal.tsx +991 -0
  734. package/src/registry/modal/send-to-triage/send-to-queue.workspace.tsx +24 -0
  735. package/src/registry/modal/send-to-triage/send-to-triage.modal.scss +156 -3
  736. package/src/registry/modal/send-to-triage/send-to-triage.modal.tsx +1086 -130
  737. package/src/registry/modal/start-patient-visit/start-patient-visit.modal.scss +34 -0
  738. package/src/registry/modal/start-patient-visit/start-patient-visit.modal.tsx +231 -0
  739. package/src/registry/payment-details/payment-options/payment-options.scss +13 -0
  740. package/src/registry/payment-details/payment-options/payment-options.tsx +61 -14
  741. package/src/registry/registration-list/registration-list.component.scss +32 -0
  742. package/src/registry/registration-list/registration-list.component.tsx +103 -0
  743. package/src/registry/registry-entry.tsx +11 -0
  744. package/src/registry/registry.component.scss +402 -78
  745. package/src/registry/registry.component.tsx +732 -220
  746. package/src/registry/registry.resource.ts +22 -3
  747. package/src/registry/types/index.ts +126 -9
  748. package/src/registry/utils/error-handler.ts +54 -0
  749. package/src/registry/utils/format-dependant-display-data.ts +1 -1
  750. package/src/registry/utils/hie-client-adapter.ts +7 -4
  751. package/src/registry/utils/mask-data.ts +40 -0
  752. package/src/registry/utils/phone-number-formatter.ts +11 -0
  753. package/src/resources/dashboard.resource.ts +20 -0
  754. package/src/resources/identifier-types.ts +2 -0
  755. package/src/resources/patient-resource.ts +7 -2
  756. package/src/resources/queue.resource.ts +3 -3
  757. package/src/resources/superset.resource.ts +41 -0
  758. package/src/resources/visit.resource.ts +19 -1
  759. package/src/root.component.tsx +9 -7
  760. package/src/routes.json +651 -40
  761. package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.scss +31 -0
  762. package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.tsx +193 -0
  763. package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.scss +0 -0
  764. package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.tsx +201 -0
  765. package/src/service-queues/admin/queue/queue-list/queue-list.scss +33 -0
  766. package/src/service-queues/admin/queue/queue-list/queue-list.tsx +113 -0
  767. package/src/service-queues/admin/queue-entry/queue-entry-list.component.scss +6 -0
  768. package/src/service-queues/admin/queue-entry/queue-entry-list.component.tsx +137 -0
  769. package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.scss +31 -0
  770. package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.tsx +137 -0
  771. package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.scss +0 -0
  772. package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.tsx +146 -0
  773. package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.scss +22 -0
  774. package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.tsx +120 -0
  775. package/src/service-queues/admin/service-queue-admin-dashboard.component.scss +6 -0
  776. package/src/service-queues/admin/service-queue-admin-dashboard.component.tsx +35 -0
  777. package/src/service-queues/consultation/consultation.component.tsx +9 -0
  778. package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.scss +30 -0
  779. package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.tsx +108 -0
  780. package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.scss +26 -0
  781. package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.tsx +110 -0
  782. package/src/service-queues/modals/move/move-patient.component.scss +1 -1
  783. package/src/service-queues/modals/move/move-patient.component.tsx +31 -17
  784. package/src/service-queues/queue-list/check-in.service.ts +26 -0
  785. package/src/service-queues/queue-list/queue-list.component.scss +37 -0
  786. package/src/service-queues/queue-list/queue-list.component.tsx +296 -60
  787. package/src/service-queues/service-queue/service-queue.component.tsx +151 -8
  788. package/src/service-queues/service-queue/stats/stat-details/stat-details.component.scss +5 -0
  789. package/src/service-queues/service-queue/stats/stat-details/stat-details.component.tsx +36 -7
  790. package/src/service-queues/service-queue.tsx +22 -16
  791. package/src/service-queues/service-queues.resource.ts +293 -2
  792. package/src/service-queues/service.resource.ts +1 -1
  793. package/src/shared/constants/concepts.ts +70 -0
  794. package/src/shared/constants/patient-category.ts +6 -0
  795. package/src/shared/constants/patient-type.ts +10 -0
  796. package/src/shared/constants/visit-types.ts +9 -0
  797. package/src/shared/services/billable-service.resource.ts +121 -0
  798. package/src/shared/services/billing.resource.ts +112 -0
  799. package/src/shared/services/claims.resource.ts +47 -0
  800. package/src/shared/services/client-payment-mode.resource.ts +27 -0
  801. package/src/shared/services/client-payment.resource.ts +17 -0
  802. package/src/shared/services/consultation-clearance.resource.ts +210 -0
  803. package/src/shared/services/eligibility.resource.ts +20 -0
  804. package/src/shared/services/encounters.resource.ts +33 -0
  805. package/src/shared/types/index.ts +156 -0
  806. package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.scss +42 -0
  807. package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.tsx +42 -0
  808. package/src/shared/ui/confirm-modal/confirm.modal.scss +18 -0
  809. package/src/shared/ui/confirm-modal/confirm.modal.tsx +38 -0
  810. package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.scss +39 -0
  811. package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.tsx +19 -0
  812. package/src/shared/ui/otp-input/otp-input.component.scss +12 -12
  813. package/src/shared/ui/otp-input/otp-input.component.tsx +13 -6
  814. package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.tsx +6 -3
  815. package/src/shared/utils/format-title-case.ts +8 -0
  816. package/src/shared/utils/get-base-url.ts +15 -0
  817. package/src/shared/utils/get-tag-type.ts +75 -0
  818. package/src/shr/shr-close-visit-form.component.tsx +102 -0
  819. package/src/shr/shr-code-systems.json +363 -0
  820. package/src/shr/shr-terminology.resource.test.ts +66 -0
  821. package/src/shr/shr-terminology.resource.ts +64 -0
  822. package/src/shr/shr-viewer/shr-categories.test.ts +241 -0
  823. package/src/shr/shr-viewer/shr-categories.ts +209 -0
  824. package/src/shr/shr-viewer/shr-presentation.test.ts +511 -0
  825. package/src/shr/shr-viewer/shr-presentation.ts +883 -0
  826. package/src/shr/shr-viewer/shr-viewer.component.test.tsx +176 -0
  827. package/src/shr/shr-viewer/shr-viewer.component.tsx +432 -0
  828. package/src/shr/shr-viewer/shr-viewer.scss +239 -0
  829. package/src/shr/shr-visit-sync.test.ts +88 -0
  830. package/src/shr/shr-visit-sync.ts +62 -0
  831. package/src/shr/shr.component.tsx +730 -0
  832. package/src/shr/shr.resource.test.ts +737 -0
  833. package/src/shr/shr.resource.ts +463 -0
  834. package/src/shr/shr.scss +114 -0
  835. package/src/shr/shr.types.ts +682 -0
  836. package/src/shr/workspaces/shr-consent-workspace/schema.ts +53 -0
  837. package/src/shr/workspaces/shr-consent-workspace/shr-consent.scss +71 -0
  838. package/src/shr/workspaces/shr-consent-workspace/shr-consent.workspace.tsx +686 -0
  839. package/src/side-nav-menu/accounting-nav-link-config.ts +16 -0
  840. package/src/side-nav-menu/accounting-nav-links.tsx +42 -0
  841. package/src/side-nav-menu/critical-care-nav-links.tsx +42 -0
  842. package/src/side-nav-menu/critical-care-unit-nav-link-config.ts +28 -0
  843. package/src/side-nav-menu/mnch-nav-link-config.ts +16 -0
  844. package/src/side-nav-menu/mnch-nav-links.tsx +42 -0
  845. package/src/side-nav-menu/nav-link-config.ts +5 -5
  846. package/src/side-nav-menu/specialized-clinics-nav-link-config.ts +32 -0
  847. package/src/side-nav-menu/specialized-clinics-nav-links.tsx +42 -0
  848. package/src/specialized-clinics/dental/dental-queues.component.scss +7 -0
  849. package/src/specialized-clinics/dental/dental-queues.component.tsx +36 -0
  850. package/src/specialized-clinics/dental/queues/consultation/dental-consultation.tsx +15 -0
  851. package/src/specialized-clinics/dental/queues/triage/dental-triage.tsx +15 -0
  852. package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.scss +7 -0
  853. package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.tsx +36 -0
  854. package/src/specialized-clinics/diagnostic-and-imaging/queues/consultation/diagnosis-and-imaging-consultation.tsx +15 -0
  855. package/src/specialized-clinics/diagnostic-and-imaging/queues/triage/diagnosis-and-imaging-triage.tsx +15 -0
  856. package/src/specialized-clinics/oncology/oncology-queues.component.scss +7 -0
  857. package/src/specialized-clinics/oncology/oncology-queues.component.tsx +36 -0
  858. package/src/specialized-clinics/oncology/queues/consultation/oncology-consultation.tsx +15 -0
  859. package/src/specialized-clinics/oncology/queues/triage/oncology-triage.tsx +15 -0
  860. package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.scss +7 -0
  861. package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.tsx +36 -0
  862. package/src/specialized-clinics/ophthalmology/queues/consultation/ophthalmology-consultation.tsx +15 -0
  863. package/src/specialized-clinics/ophthalmology/queues/triage/ophthalmology-triage.tsx +15 -0
  864. package/src/specialized-clinics/psychiatry/psychiatry-queues.component.scss +7 -0
  865. package/src/specialized-clinics/psychiatry/psychiatry-queues.component.tsx +36 -0
  866. package/src/specialized-clinics/psychiatry/queues/consultation/psychiatry-consultation.tsx +15 -0
  867. package/src/specialized-clinics/psychiatry/queues/triage/psychiatry-triage.tsx +15 -0
  868. package/src/specialized-clinics/renal/queues/consultation/dialysis-consultation.tsx +15 -0
  869. package/src/specialized-clinics/renal/queues/triage/renal-triage.tsx +15 -0
  870. package/src/specialized-clinics/renal/renal-queues.component.scss +7 -0
  871. package/src/specialized-clinics/renal/renal-queues.component.tsx +36 -0
  872. package/src/specialized-clinics/specialized-clinics-root.tsx +25 -0
  873. package/src/telemedicine/telemedicine-patient-chart.component.test.tsx +123 -0
  874. package/src/telemedicine/telemedicine-patient-chart.component.tsx +131 -0
  875. package/src/telemedicine/telemedicine.component.test.tsx +113 -0
  876. package/src/telemedicine/telemedicine.component.tsx +310 -0
  877. package/src/telemedicine/telemedicine.resource.test.ts +171 -0
  878. package/src/telemedicine/telemedicine.resource.ts +125 -0
  879. package/src/telemedicine/telemedicine.scss +91 -0
  880. package/src/triage/triage.component.scss +6 -0
  881. package/src/triage/triage.component.tsx +4 -0
  882. package/src/types/types.ts +56 -1
  883. package/tools/fetch-shr-code-systems.mjs +135 -0
  884. package/tools/strip-openmrs-declaration-maps.mjs +44 -0
  885. package/tools/update-openmrs-deps.mjs +36 -5
  886. package/translations/en.json +135 -0
  887. package/tsconfig.json +7 -4
  888. package/webpack.config.js +74 -1
  889. package/dist/104.js +0 -2
  890. package/dist/104.js.map +0 -1
  891. package/dist/145.js +0 -1
  892. package/dist/145.js.map +0 -1
  893. package/dist/15.js +0 -1
  894. package/dist/15.js.map +0 -1
  895. package/dist/184.js +0 -2
  896. package/dist/184.js.map +0 -1
  897. package/dist/246.js +0 -2
  898. package/dist/246.js.map +0 -1
  899. package/dist/255.js +0 -1
  900. package/dist/255.js.map +0 -1
  901. package/dist/28.js +0 -1
  902. package/dist/28.js.map +0 -1
  903. package/dist/300.js +0 -1
  904. package/dist/321.js +0 -1
  905. package/dist/321.js.map +0 -1
  906. package/dist/327.js +0 -1
  907. package/dist/327.js.map +0 -1
  908. package/dist/339.js +0 -1
  909. package/dist/339.js.map +0 -1
  910. package/dist/353.js +0 -1
  911. package/dist/353.js.map +0 -1
  912. package/dist/420.js +0 -1
  913. package/dist/420.js.map +0 -1
  914. package/dist/540.js +0 -2
  915. package/dist/540.js.map +0 -1
  916. package/dist/55.js +0 -1
  917. package/dist/709.js +0 -1
  918. package/dist/709.js.map +0 -1
  919. package/dist/710.js +0 -2
  920. package/dist/710.js.LICENSE.txt +0 -14
  921. package/dist/710.js.map +0 -1
  922. package/dist/717.js +0 -1
  923. package/dist/717.js.map +0 -1
  924. package/dist/729.js +0 -1
  925. package/dist/729.js.map +0 -1
  926. package/dist/752.js +0 -1
  927. package/dist/752.js.map +0 -1
  928. package/dist/833.js +0 -1
  929. package/dist/833.js.map +0 -1
  930. package/dist/93.js +0 -1
  931. package/dist/93.js.map +0 -1
  932. package/dist/964.js +0 -1
  933. package/dist/964.js.map +0 -1
  934. package/dist/99.js +0 -1
  935. /package/dist/{104.js.LICENSE.txt → 2272.js.LICENSE.txt} +0 -0
  936. /package/dist/{184.js.LICENSE.txt → 3184.js.LICENSE.txt} +0 -0
  937. /package/dist/{540.js.LICENSE.txt → 6540.js.LICENSE.txt} +0 -0
  938. /package/src/{pharmacy-dashboard.meta.ts → dashboard-meta/pharmacy-dashboard.meta.ts} +0 -0
  939. /package/src/{queue-dashboard.meta.ts → dashboard-meta/queue-dashboard.meta.ts} +0 -0
  940. /package/src/{triage-dashboard.meta.ts → dashboard-meta/triage-dashboard.meta.ts} +0 -0
  941. /package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.scss +0 -0
@@ -1,79 +1,238 @@
1
1
  import {
2
+ Breadcrumb,
3
+ BreadcrumbItem,
2
4
  Button,
3
5
  Dropdown,
4
- InlineLoading,
6
+ Layer,
7
+ Loading,
5
8
  RadioButton,
6
- RadioButtonGroup,
7
- Table,
8
- TableBody,
9
- TableCell,
10
- TableHead,
11
- TableHeader,
12
- TableRow,
9
+ Tag,
13
10
  TextInput,
14
11
  } from '@carbon/react';
15
- import React, { useState } from 'react';
12
+ import {
13
+ Search,
14
+ SearchLocate,
15
+ WarningAlt,
16
+ WarningAltFilled,
17
+ UserMultiple,
18
+ Identification,
19
+ CheckmarkOutline,
20
+ Close,
21
+ } from '@carbon/react/icons';
22
+ import React, { useEffect, useRef, useState } from 'react';
16
23
  import styles from './registry.component.scss';
17
- import { type HieClient, IDENTIFIER_TYPES, type IdentifierType, type RequestCustomOtpDto } from './types';
24
+ import {
25
+ type ClientRegistrySearchRequest,
26
+ type CreateVisitDto,
27
+ type HieClient,
28
+ HieIdentificationType,
29
+ IDENTIFIER_TYPES,
30
+ type IdentifierType,
31
+ type QueueEntryDto,
32
+ type RequestCustomOtpDto,
33
+ type VisitAttribute,
34
+ } from './types';
35
+ import { createVisit } from '../resources/visit.resource';
36
+ import { createQueueEntry } from '../resources/queue.resource';
37
+ import { createBill, createOrderBillInHie, fetchBillableServices } from '../shared/services/billing.resource';
38
+ import { type CreateBillDto, type BillableService } from '../shared/types';
39
+ import { createOrderEncounter, getOrder } from '../shared/services/encounters.resource';
40
+ import { QUEUE_PRIORITIES_UUIDS, QUEUE_STATUS_UUIDS } from '../shared/constants/concepts';
41
+ import { VisitTypeUuids } from '../shared/constants/visit-types';
42
+ import {
43
+ createConsultationClearance,
44
+ findOpenPrepaidService,
45
+ fulfillPrepaidService,
46
+ } from '../shared/services/consultation-clearance.resource';
18
47
  import { fetchClientRegistryData } from './registry.resource';
19
- import { type Patient, showSnackbar, useSession } from '@openmrs/esm-framework';
20
- import OtpVerificationModal from './modal/otp-verification-modal/otp-verification-modal';
21
- import { maskExceptFirstAndLast, maskValue } from './utils/mask-data';
22
- import ClientDetailsModal from './modal/client-details-modal/client-details-modal';
48
+ import { type Patient, showSnackbar, useConfig, useSession } from '@openmrs/esm-framework';
49
+ import { maskCrNumber, maskExceptFirstAndLast } from './utils/mask-data';
23
50
  import { searchPatientByCrNumber } from '../resources/patient-search.resource';
24
51
  import SendToTriageModal from './modal/send-to-triage/send-to-triage.modal';
25
- import { formatDependantDisplayData } from './utils/format-dependant-display-data';
52
+ import WorkflowDrawer from './drawer/workflow-drawer.component';
26
53
  import { registerHieClientInAmrs } from '../resources/hie-amrs-automatic-registration.service';
27
- import { getErrorMessages } from './utils/error-handler';
54
+ import { getErrorMessages, getReadableErrorMessage } from './utils/error-handler';
55
+ import { IdentifierTypesUuids } from '../resources/identifier-types';
56
+ import { formatPhoneNumberForOTP } from './utils/phone-number-formatter';
57
+ import { usePatient } from '../context/patient-context';
58
+ import FacilityAndWorkerSlot from '../shared/ui/facility-worker-slot/facility-worker.component-slot.component';
59
+ import RegistrationList from './registration-list/registration-list.component';
60
+ import { type ConfigObject } from '../config-schema';
61
+ import { type ClaimResult, type Intervention } from 'src/claims';
62
+ import UnidentifiedRegistrationComponent from './emergency/unidentified/unidentified-registration.component';
28
63
 
29
64
  interface RegistryComponentProps {}
30
65
  const RegistryComponent: React.FC<RegistryComponentProps> = () => {
31
66
  const [identifierType, setIdentifierType] = useState<IdentifierType>('National ID');
32
67
  const [identifierValue, setIdentifierValue] = useState('');
68
+ const [validationError, setValidationError] = useState<string>('');
69
+ const [notFound, setNotFound] = useState<boolean>(false);
70
+ const [fetchError, setFetchError] = useState<string>('');
33
71
  const [loading, setLoading] = useState<boolean>(false);
34
72
  const [principal, setPrincipal] = useState<HieClient>();
35
- const [selectedDependant, setSelectedDependant] = useState<HieClient>();
36
73
  const [amrsPatients, setAmrsPatients] = useState<Patient[]>([]);
74
+ const [amrsChecked, setAmrsChecked] = useState<boolean>(false);
75
+ const [syncingAmrs, setSyncingAmrs] = useState<boolean>(false);
37
76
  const [selectedPatient, setSelectedPatient] = useState<string>('principal');
38
77
  const [displayOtpModal, setDisplayOtpModal] = useState<boolean>(false);
39
78
  const [displayClientDetailsModal, setDisplayClientDetailsModal] = useState<boolean>(false);
40
- const [displaytriageModal, setDisplaytriageModal] = useState<boolean>(false);
79
+ const [displaytStartVisitModal, setdisplaytStartVisitModal] = useState<boolean>(false);
80
+ const [displayDrawer, setDisplayDrawer] = useState<boolean>(false);
41
81
  const [requestCustomOtpDto, setRequestCustomOtpDto] = useState<RequestCustomOtpDto>();
42
82
  const session = useSession();
43
- const locationUuid = session.sessionLocation.uuid;
83
+ const locationUuid = session?.sessionLocation?.uuid;
84
+ const { setPatient } = usePatient();
85
+ const {
86
+ cashPaymentModeUuid,
87
+ shaPaymentModeUuid,
88
+ outPatientCareSettingUuid,
89
+ orderEncounterTypeUuid,
90
+ emergencyConceptUuid,
91
+ } = useConfig<ConfigObject>();
92
+ const emtHandoffConsumed = useRef(false);
93
+ const [modalOpen, setModalOpen] = useState(false);
94
+
95
+ // Arriving from an EMT handover (`?emtCrId=...`): skip straight to the
96
+ // found-patient view instead of making staff re-search by an identifier
97
+ // type this form doesn't even offer (CR id isn't one of IDENTIFIER_TYPES
98
+ // here). This component is mounted as a bare extension with no React
99
+ // Router ancestor, so the handoff travels via a plain URL query param —
100
+ // not router `state` — and is read via `window.location`, not `useLocation`.
101
+ useEffect(() => {
102
+ if (emtHandoffConsumed.current || !locationUuid) {
103
+ return;
104
+ }
105
+ const crId = new URLSearchParams(window.location.search).get('emtCrId');
106
+ if (!crId) {
107
+ return;
108
+ }
109
+ emtHandoffConsumed.current = true;
110
+ // Drop the param so a later refresh of this screen doesn't repeat the fetch.
111
+ window.history.replaceState(null, '', window.location.pathname);
112
+ (async () => {
113
+ try {
114
+ const results = await fetchClientRegistryData({
115
+ identificationNumber: crId,
116
+ identificationType: HieIdentificationType.Cr,
117
+ locationUuid,
118
+ });
119
+ const handoffClient = Array.isArray(results) && results.length > 0 ? (results[0] as HieClient) : null;
120
+ if (handoffClient) {
121
+ setPatient(handoffClient);
122
+ setPrincipal(handoffClient);
123
+ setSelectedPatient('principal');
124
+ } else {
125
+ showSnackbar({
126
+ kind: 'warning',
127
+ title: 'Could not locate handed-over patient',
128
+ subtitle: `CR ${crId} was not found in the Client Registry — search manually to continue.`,
129
+ });
130
+ }
131
+ } catch {
132
+ showSnackbar({
133
+ kind: 'warning',
134
+ title: 'Could not locate handed-over patient',
135
+ subtitle: `We couldn't reach the Client Registry for CR ${crId} — search manually to continue.`,
136
+ });
137
+ }
138
+ })();
139
+ }, [locationUuid, setPatient]);
140
+
141
+ const validateForm = (): string => {
142
+ const value = identifierValue.trim();
143
+ if (!value) {
144
+ return `${identifierType} value is required`;
145
+ }
146
+ if (value.length < 4) {
147
+ return `Enter a valid ${identifierType.toLowerCase()} (minimum 4 characters)`;
148
+ }
149
+ if (identifierType === 'National ID' && !/^\d+$/.test(value)) {
150
+ return 'National ID must contain digits only';
151
+ }
152
+ if (!locationUuid) {
153
+ return 'No default location selected. Please set your session location.';
154
+ }
155
+ return '';
156
+ };
44
157
 
45
158
  const handleSearchPatient = async () => {
159
+ const error = validateForm();
160
+ if (error) {
161
+ setValidationError(error);
162
+ return;
163
+ }
164
+ setValidationError('');
165
+ setNotFound(false);
166
+ setFetchError('');
46
167
  setLoading(true);
47
168
  try {
48
- const payload = {
49
- identificationNumber: identifierValue,
50
- identificationType: identifierType,
51
- locationUuid,
52
- };
53
-
54
- if (!isValidCustomSmsPayload(payload)) return false;
169
+ const searchClientPayload = getSearchClientDto();
55
170
 
56
- setRequestCustomOtpDto(payload);
171
+ if (!isValidSeatchClientPayload(searchClientPayload)) return false;
57
172
 
58
- const result = await fetchClientRegistryData(payload);
173
+ const result = await fetchClientRegistryData(searchClientPayload);
59
174
  const patients = Array.isArray(result) ? result : [];
60
175
 
61
176
  if (patients.length === 0) {
62
- handleCancel();
63
- throw new Error('No matching patient found in Client Registry.');
177
+ setPrincipal(null);
178
+ setNotFound(true);
179
+ return;
64
180
  }
65
181
 
66
182
  const patient = patients[0];
183
+ setPatient(patient);
67
184
  setPrincipal(patient);
68
- showAlert('success', 'Client Data Loaded', 'Patient fetched successfully');
185
+ // Auto-select the principal by default so the worker can proceed immediately.
186
+ setSelectedPatient('principal');
69
187
  } catch (err: any) {
70
- const errorMessage = err.message || 'Failed to fetch client data';
71
- handleCancel();
72
- showAlert('error', 'Fetch Failed', errorMessage);
188
+ // Communicate the failure on the page (keep the worker's input so they can retry).
189
+ const errorMessage = getReadableErrorMessage(err, 'We couldn’t reach the Client Registry.');
190
+ setPrincipal(null);
191
+ setFetchError(errorMessage);
73
192
  } finally {
74
193
  setLoading(false);
75
194
  }
76
195
  };
196
+
197
+ const getSearchClientDto = (): ClientRegistrySearchRequest => {
198
+ return {
199
+ identificationNumber: identifierValue.trim(),
200
+ identificationType: identifierType,
201
+ locationUuid,
202
+ };
203
+ };
204
+
205
+ const isValidSeatchClientPayload = (payload: ClientRegistrySearchRequest): boolean => {
206
+ if (!payload.identificationNumber) {
207
+ showAlert('error', 'Please enter a valid identification number', '');
208
+ return false;
209
+ }
210
+ if (!payload.identificationType) {
211
+ showAlert('error', 'Please enter a valid identification type', '');
212
+ return false;
213
+ }
214
+ if (!payload.locationUuid) {
215
+ showAlert('error', 'No default location selected', '');
216
+ return false;
217
+ }
218
+ return true;
219
+ };
220
+
221
+ const generateCustomSmsPayload = (): RequestCustomOtpDto => {
222
+ // Manual search always populates identifierValue/identifierType. The EMT-handoff
223
+ // path (see the `emtCrId` effect above) skips that form entirely, so identifierValue
224
+ // stays blank — fall back to the CR id, which is always present, rather than sending
225
+ // an empty identifier and blocking the request downstream.
226
+ const identificationNumber = identifierValue.trim() || principal?.id || '';
227
+ const identificationType = identifierValue.trim() ? identifierType : HieIdentificationType.Cr;
228
+ return {
229
+ identificationNumber,
230
+ identificationType,
231
+ locationUuid,
232
+ phoneNumber: principal?.phone ? formatPhoneNumberForOTP(principal.phone ?? '') : '',
233
+ };
234
+ };
235
+
77
236
  const isValidCustomSmsPayload = (payload: RequestCustomOtpDto): boolean => {
78
237
  if (!payload.identificationNumber) {
79
238
  showAlert('error', 'Please enter a valid identification number', '');
@@ -87,9 +246,13 @@ const RegistryComponent: React.FC<RegistryComponentProps> = () => {
87
246
  showAlert('error', 'No default location selected', '');
88
247
  return false;
89
248
  }
249
+ // No hard block on a missing phone number: biometric verification (the first step
250
+ // in the workflow drawer) doesn't need one, and if the flow does fall through to
251
+ // OTP, the OTP step already offers an "alternative phone number" override with a
252
+ // "Patient has no phone" reason — this gate was pre-empting that path entirely.
90
253
  return true;
91
254
  };
92
- const showAlert = (alertType: 'error' | 'success', title: string, subtitle: string) => {
255
+ const showAlert = (alertType: 'error' | 'success' | 'info' | 'warning', title: string, subtitle: string) => {
93
256
  showSnackbar({
94
257
  kind: alertType,
95
258
  title: title,
@@ -99,70 +262,100 @@ const RegistryComponent: React.FC<RegistryComponentProps> = () => {
99
262
  const handleSelectedPatient = (sp: string) => {
100
263
  setSelectedPatient(sp);
101
264
  };
102
- const handleOtpVerification = () => {
103
- setDisplayOtpModal(true);
265
+ // Open the registration workflow drawer, which handles biometric + OTP verification,
266
+ // consent and starting the visit inline (replacing the old OTP/client-details modals).
267
+ const handleOtpVerification = async () => {
268
+ const smsPayload = generateCustomSmsPayload();
269
+ if (!isValidCustomSmsPayload(smsPayload)) {
270
+ return;
271
+ }
272
+ setRequestCustomOtpDto(smsPayload);
273
+ const client = getPatient();
274
+ if (client?.id) {
275
+ await searchAmrsPatient(client.id);
276
+ }
277
+ setDisplayDrawer(true);
278
+ };
279
+ const handleClearIdentifier = () => {
280
+ setIdentifierValue('');
281
+ setValidationError('');
282
+ setNotFound(false);
104
283
  };
105
284
  const handleModelClose = () => {
106
285
  setDisplayOtpModal(false);
107
286
  };
108
287
  const onClientDetailsModalClose = () => {
288
+ onClientDetailsModalClose();
109
289
  setDisplayClientDetailsModal(false);
110
290
  };
111
- const handleClientDetailsSubmit = () => {
112
- return;
291
+ const handleClientDetailsSubmit = async (crId: string) => {
292
+ setDisplayClientDetailsModal(false);
293
+ await searchAmrsPatient(crId);
294
+ setDisplayDrawer(true);
113
295
  };
114
296
  const handleEmergencyRegistration = () => {
115
- window.location.href = `${window.spaBase}/patient-registration`;
297
+ // window.location.href = `${window.spaBase}/patient-registration`;
298
+ setModalOpen(true);
299
+ };
300
+ const handleCloseModal = () => {
301
+ setModalOpen(false);
116
302
  };
117
303
  const handleManualRegistration = () => {
118
- setDisplaytriageModal(false);
304
+ setdisplaytStartVisitModal(false);
119
305
  handleEmergencyRegistration();
120
306
  };
121
- const handleSendClientToTriage = async (crId: string) => {
122
- onClientDetailsModalClose();
307
+ // Look the client up in the EMR. The found / not-found result is surfaced in the
308
+ // workflow drawer (see amrsPatients / amrsChecked) so the user can decide whether to
309
+ // create the patient in the EMR or sync an existing record.
310
+ const searchAmrsPatient = async (crId: string) => {
311
+ setAmrsChecked(false);
123
312
  const resp = await searchPatientByCrNumber(crId);
124
313
  if (resp.totalCount > 0) {
125
- showAlert(
126
- 'success',
127
- `${resp.totalCount} ${resp.totalCount > 0 ? 'Patients' : 'Patient'} found in the system with ${crId}`,
128
- '',
129
- );
130
- setAmrsPatients(resp.results);
131
- setDisplaytriageModal(true);
314
+ const validPatients = validateAmrsPatient(crId, resp.results ?? []);
315
+ setAmrsPatients(validPatients);
132
316
  } else {
133
- showAlert('error', 'Patient not found in the system', '');
134
317
  setAmrsPatients([]);
135
- setDisplaytriageModal(true);
318
+ }
319
+ setAmrsChecked(true);
320
+ };
321
+ // Refresh the matched EMR record so the latest state is used for the visit.
322
+ const syncAmrsPatient = async () => {
323
+ const client = getPatient();
324
+ if (!client?.id) {
325
+ return;
326
+ }
327
+ setSyncingAmrs(true);
328
+ try {
329
+ await searchAmrsPatient(client.id);
330
+ showAlert('success', 'EMR record refreshed', '');
331
+ } catch (e) {
332
+ showAlert('error', 'Could not sync the EMR record', '');
333
+ } finally {
334
+ setSyncingAmrs(false);
136
335
  }
137
336
  };
337
+ const validateAmrsPatient = (crNo: string, patients: Patient[]) => {
338
+ return patients.filter((p) => {
339
+ return p.identifiers.some((id) => {
340
+ return id.identifier === crNo && id.identifierType.uuid === IdentifierTypesUuids.CLIENT_REGISTRY_NO_UUID;
341
+ });
342
+ });
343
+ };
138
344
  const onSendToTriageModalClose = (modalCloseResp?: { success: boolean }) => {
139
- setDisplaytriageModal(false);
345
+ setdisplaytStartVisitModal(false);
140
346
  if (modalCloseResp && modalCloseResp.success) {
141
347
  window.location.href = `${window.spaBase}/home/triage`;
142
348
  }
143
349
  };
144
350
  const handleSendToTriageModalSubmit = () => {};
145
351
  const getPatient = (): HieClient => {
146
- if (selectedPatient === 'principal') {
352
+ if (!principal || selectedPatient === 'principal') {
147
353
  return principal;
148
- } else if (selectedPatient === 'dependants') {
149
- return selectedDependant;
150
- } else {
151
- return principal;
152
- }
153
- };
154
- const handleSelectedDependant = (dependantId: string) => {
155
- const dependants = principal.dependants;
156
- if (dependants.length > 0) {
157
- const dependant = dependants.find((d) => {
158
- return d.result[0].id === dependantId;
159
- });
160
- if (dependant) {
161
- setSelectedDependant(dependant.result[0] as unknown as HieClient);
162
- }
163
354
  }
355
+ const match = principal.dependants?.find((d) => d.result[0].id === selectedPatient);
356
+ return match ? (match.result[0] as unknown as HieClient) : principal;
164
357
  };
165
- const createAmrsPatient = async () => {
358
+ const createAmrsPatient = async (): Promise<Patient | undefined> => {
166
359
  const patient = getPatient();
167
360
  if (!patient) {
168
361
  showAlert('error', 'Principal or dependant not selected', '');
@@ -173,6 +366,7 @@ const RegistryComponent: React.FC<RegistryComponentProps> = () => {
173
366
  if (resp) {
174
367
  showAlert('success', 'Patient created succesfully', '');
175
368
  setAmrsPatients([resp]);
369
+ return resp;
176
370
  }
177
371
  } catch (e) {
178
372
  const errorResp = e['responseBody'] ?? e.message;
@@ -185,211 +379,529 @@ const RegistryComponent: React.FC<RegistryComponentProps> = () => {
185
379
  }
186
380
  }
187
381
  };
382
+ // Create the AMRS visit for the verified client once the workflow drawer is submitted,
383
+ // add them to the selected triage queue, and raise the consultation clearance so they
384
+ // wait "Awaiting clearance" until Accounting settles the fee (exempt patients auto-clear).
385
+ const getVisitAttributes = (
386
+ paymentMethod: 'cash' | 'insurance',
387
+ insurance: string,
388
+ emergencyResponse?: ClaimResult,
389
+ ) => {
390
+ const attributes: VisitAttribute[] = [];
391
+ if (paymentMethod) {
392
+ attributes.push({
393
+ attributeType: '8553afa0-bdb9-4d3c-8a98-05fa9350aa85',
394
+ value: paymentMethod === 'cash' ? cashPaymentModeUuid : shaPaymentModeUuid, // /sha|shif/i.test(insurance) ? shaPaymentModeUuid : "",
395
+ });
396
+ }
397
+ if (emergencyResponse && Object.keys(emergencyResponse).length !== 0) {
398
+ attributes.push({
399
+ attributeType: '4962a633-c4f8-474c-857c-5c68c72fbbe3',
400
+ value: emergencyResponse.authorization_code,
401
+ });
402
+
403
+ // scheme code
404
+ attributes.push({
405
+ attributeType: '79072572-80c0-4a38-9da0-afe207e3ef2d',
406
+ value: emergencyResponse.scheme_code,
407
+ });
408
+
409
+ // service type
410
+ attributes.push({
411
+ attributeType: '97d892fe-38a4-4cfb-bdf7-2a03dff6e7cf',
412
+ value: emergencyResponse.service_type,
413
+ });
414
+ }
415
+ return attributes;
416
+ };
417
+ const startVisitForClient = async (details: {
418
+ patientCategory: string;
419
+ room: string;
420
+ roomUuid: string;
421
+ visitType: string;
422
+ method?: 'cash' | 'insurance';
423
+ insurance?: string;
424
+ emergencyResponse?: ClaimResult;
425
+ emergencyServicePriceUuid?: string;
426
+ emergencyCashPointUuid?: string;
427
+ emergencyIntervention?: Intervention;
428
+ protocolCode?: string;
429
+ }) => {
430
+ // Ensure the client exists in AMRS before starting a visit.
431
+ let amrsPatient = amrsPatients[0];
432
+ if (!amrsPatient) {
433
+ amrsPatient = await createAmrsPatient();
434
+ }
435
+ if (!amrsPatient?.uuid) {
436
+ showAlert('error', 'No patient available to start a visit for', '');
437
+ return;
438
+ }
439
+ if (!details.roomUuid) {
440
+ showAlert('error', 'Selected triage room could not be resolved to a queue', '');
441
+ return;
442
+ }
443
+ const visitType =
444
+ details.visitType === 'Inpatient'
445
+ ? VisitTypeUuids.INPATIENT_VISIT_TYPE_UUID
446
+ : details.visitType === 'Emergency'
447
+ ? VisitTypeUuids.EMERGENCY_VISIT_TYPE_UUID
448
+ : VisitTypeUuids.OPD_VISIT_TYPE_UUID;
449
+ const visitDto: CreateVisitDto = {
450
+ visitType,
451
+ location: locationUuid ?? '',
452
+ startDatetime: null,
453
+ stopDatetime: null,
454
+ patient: amrsPatient.uuid,
455
+ };
456
+ const visitAttributes = getVisitAttributes(
457
+ details.method,
458
+ details.insurance,
459
+ details.emergencyResponse ? details.emergencyResponse : undefined,
460
+ );
461
+ if (visitAttributes.length > 0) {
462
+ visitDto['attributes'] = visitAttributes;
463
+ }
464
+ try {
465
+ const visit = await createVisit(visitDto);
466
+ if (!visit?.uuid) {
467
+ showAlert('error', 'Error creating visit', '');
468
+ return;
469
+ }
470
+
471
+ // Place the patient in the selected triage queue (Waiting / Normal priority).
472
+ const queueEntryDto: QueueEntryDto = {
473
+ visit: { uuid: visit.uuid },
474
+ queueEntry: {
475
+ status: { uuid: QUEUE_STATUS_UUIDS.WAITING_UUID },
476
+ priority: { uuid: QUEUE_PRIORITIES_UUIDS.NORMAL_PRIORITY_UUID },
477
+ queue: { uuid: details.roomUuid },
478
+ patient: { uuid: amrsPatient.uuid },
479
+ startedAt: visit.startDatetime ?? new Date().toISOString(),
480
+ sortWeight: 0,
481
+ },
482
+ };
483
+ await createQueueEntry(queueEntryDto);
484
+
485
+ if (details.emergencyResponse && details.emergencyCashPointUuid && details.emergencyServicePriceUuid) {
486
+ const billDto: CreateBillDto = {
487
+ lineItems: [
488
+ {
489
+ quantity: 1,
490
+ priceUuid: details.emergencyServicePriceUuid,
491
+ },
492
+ ],
493
+ cashPoint: details.emergencyCashPointUuid,
494
+ patient: amrsPatient.uuid,
495
+ visit: visit.uuid,
496
+ status: 'PENDING',
497
+ payments: [],
498
+ };
499
+ const bill = await createBill(billDto);
500
+ if (!bill) {
501
+ throw new Error('Error creating emergency bill');
502
+ }
503
+
504
+ const orderEncounter = await createOrderEncounter({
505
+ patient: amrsPatient.uuid,
506
+ location: locationUuid ?? '',
507
+ encounterType: orderEncounterTypeUuid,
508
+ visit: visit.uuid,
509
+ obs: [],
510
+ orders: [
511
+ {
512
+ action: 'NEW',
513
+ type: 'order',
514
+ patient: amrsPatient.uuid,
515
+ careSetting: outPatientCareSettingUuid,
516
+ orderer: session.currentProvider?.uuid ?? 'pd25871c-1359-11df-a1f1-0026b9348838',
517
+ concept: emergencyConceptUuid,
518
+ urgency: 'ROUTINE',
519
+ },
520
+ ],
521
+ });
522
+
523
+ const orderUuid = orderEncounter?.orders?.[0]?.uuid;
524
+ const order = orderUuid ? await getOrder(orderUuid) : undefined;
525
+ const emergencyResponse = details.emergencyResponse;
526
+ const interventionResult = details.emergencyIntervention;
527
+ const electivePreauth =
528
+ interventionResult?.requiresOncologyPreauth ||
529
+ interventionResult?.requiresOpticalPreauth ||
530
+ interventionResult?.requiresRadiologyPreauth ||
531
+ interventionResult?.requiresRenalPreauth ||
532
+ interventionResult?.requiresSurgicalPreauth;
533
+ const requiresPreauth = interventionResult?.needsPreauth;
534
+ const requiredPreauthDocumentTypes = interventionResult?.requiredPreauthDocumentTypes ?? [];
535
+ const applicableDocumentTypes = interventionResult?.applicableDocumentTypes ?? [];
536
+ const billOrderDto = {
537
+ bill_uuid: bill.uuid,
538
+ order_no: order?.orderNumber ?? '',
539
+ line_item_uuid: bill.lineItems?.[0]?.uuid ?? '',
540
+ intervention_code: interventionResult?.code ?? emergencyResponse.initial_intervention ?? '',
541
+ consent_token: emergencyResponse.authorization_code ?? '',
542
+ service_type: emergencyResponse.service_type ?? 'EMERGENCY',
543
+ requires_preauth: requiresPreauth,
544
+ normal_preauth: requiresPreauth && !electivePreauth,
545
+ elective_preauth: Boolean(interventionResult?.needsManualPreauthApproval && electivePreauth),
546
+ patient_uuid: amrsPatient?.uuid,
547
+ ...(details?.protocolCode && {
548
+ protocal_code: details.protocolCode,
549
+ }),
550
+ ...(applicableDocumentTypes.length > 0 && {
551
+ applicable_document_types: applicableDocumentTypes.join(','),
552
+ }),
553
+ ...(requiredPreauthDocumentTypes.length > 0 && {
554
+ required_preauth_document_types: requiredPreauthDocumentTypes.join(','),
555
+ }),
556
+ };
557
+ await createOrderBillInHie(billOrderDto);
558
+ showAlert('success', 'Bill successfully created', '');
559
+ }
560
+
561
+ // Raise the consultation clearance for CASH patients only — they sit
562
+ // "Awaiting payment" in the Accounting dashboard until the fee is settled.
563
+ // SHA/insurance patients are cleared through the SHA claim (their real
564
+ // active visit is the source of truth under "Pending clearance"), so we
565
+ // don't raise a cash clearance record for them.
566
+ /*
567
+ const client = getPatient();
568
+ const isCash = details.method !== 'insurance';
569
+ if (isCash) {
570
+ // A patient who prepaid on an earlier visit clears without a new fee.
571
+ const prepaid = client?.id ? findOpenPrepaidService(client.id) : undefined;
572
+ createConsultationClearance({
573
+ patientName: [client?.first_name, client?.middle_name, client?.last_name].filter(Boolean).join(' '),
574
+ crNumber: client?.id ?? '',
575
+ locationUuid: locationUuid ?? '',
576
+ queue: details.room,
577
+ visitType: details.visitType,
578
+ payer: 'Cash',
579
+ exempt: false,
580
+ preCleared: !!prepaid,
581
+ amountOverride: prepaid?.amount,
582
+ });
583
+ if (prepaid) {
584
+ fulfillPrepaidService(prepaid.id);
585
+ }
586
+ }
587
+ */
588
+
589
+ showAlert('success', 'Patient sent to the triage queue, awaiting clearance', '');
590
+ // Land on the accounting Pending clearance section so the new patient can be cleared.
591
+ // window.location.href = `${window.spaBase}/home/billing`;
592
+ } catch (e) {
593
+ const errorResp = e['responseBody'] ?? e.message;
594
+ showAlert('error', 'Error creating visit', '');
595
+ const errors = getErrorMessages(errorResp);
596
+ if (errors && errors.length > 0) {
597
+ for (let error of errors) {
598
+ showAlert('error', error, '');
599
+ }
600
+ }
601
+ }
602
+ };
188
603
  const handleCancel = () => {
189
604
  setPrincipal(null);
190
- setSelectedDependant(null);
191
605
  setAmrsPatients([]);
192
606
  setSelectedPatient(null);
193
607
  setIdentifierValue('');
608
+ setValidationError('');
609
+ setNotFound(false);
610
+ setFetchError('');
194
611
  setIdentifierType('National ID');
195
612
  setDisplayClientDetailsModal(false);
196
613
  setDisplayOtpModal(false);
197
- setDisplaytriageModal(false);
614
+ setdisplaytStartVisitModal(false);
198
615
  setSelectedPatient('principal');
199
616
  };
200
617
  const handleOtpSuccessfullVerification = () => {
201
618
  setDisplayOtpModal(false);
202
619
  setDisplayClientDetailsModal(true);
203
620
  };
204
- const registerOnAfyaYangu = () => {
205
- window.open('https://afyayangu.go.ke/', '_blank');
206
- };
207
621
  return (
208
622
  <>
209
623
  <div className={styles.registryLayout}>
624
+ <div className={styles.headerSection}>
625
+ <FacilityAndWorkerSlot />
626
+ </div>
210
627
  <div className={styles.mainContent}>
211
628
  <div className={styles.registryHeader}>
212
- <h4>Client Registry</h4>
629
+ <h4>Registration</h4>
213
630
  <p>Please enter identification number to begin</p>
214
631
  </div>
215
632
  <div className={styles.registryContent}>
216
- <div className={styles.formRow}>
217
- <div className={styles.formControl}>
633
+ <Layer className={styles.card}>
634
+ <div className={styles.sectionHeader}>
635
+ <Identification size={20} className={styles.sectionIcon} />
636
+ <h5 className={styles.sectionTitle}>Search client</h5>
637
+ </div>
638
+ <p className={styles.formIntro}>Search the national Client Registry by identification number to begin.</p>
639
+ <div className={styles.formGrid}>
218
640
  <Dropdown
219
641
  id="identifier-type-dropdown"
220
- label="Identifier Type"
221
- titleText="Select Identifier Type"
642
+ label="Select identifier type"
643
+ titleText={
644
+ <span className={styles.fieldLabel}>
645
+ Identifier type<span className={styles.required}>*</span>
646
+ </span>
647
+ }
222
648
  items={IDENTIFIER_TYPES}
223
649
  selectedItem={identifierType}
224
- onChange={({ selectedItem }) => setIdentifierType(selectedItem as IdentifierType)}
650
+ onChange={({ selectedItem }) => {
651
+ const nextType = selectedItem as IdentifierType;
652
+ setIdentifierType(nextType);
653
+ if (!identifierValue.trim()) {
654
+ setValidationError(`${nextType} number is required`);
655
+ } else {
656
+ setValidationError('');
657
+ }
658
+ }}
225
659
  />
660
+ <div className={styles.clearableInput}>
661
+ <TextInput
662
+ id="identifier-value"
663
+ labelText={
664
+ <span className={styles.fieldLabel}>
665
+ {identifierType} number<span className={styles.required}>*</span>
666
+ </span>
667
+ }
668
+ value={identifierValue}
669
+ onChange={(e) => {
670
+ setIdentifierValue(e.target.value);
671
+ if (validationError) {
672
+ setValidationError('');
673
+ }
674
+ if (notFound) {
675
+ setNotFound(false);
676
+ }
677
+ }}
678
+ onBlur={() => {
679
+ if (!identifierValue.trim()) {
680
+ setValidationError(`${identifierType} number is required`);
681
+ }
682
+ }}
683
+ onKeyDown={(e) => {
684
+ if (e.key === 'Enter') {
685
+ handleSearchPatient();
686
+ }
687
+ }}
688
+ invalid={!!validationError}
689
+ invalidText={validationError}
690
+ placeholder={`e.g. enter ${identifierType.toLowerCase()} number`}
691
+ />
692
+ {identifierValue && !validationError ? (
693
+ <button
694
+ type="button"
695
+ className={styles.clearBtn}
696
+ onClick={handleClearIdentifier}
697
+ aria-label="Clear field"
698
+ >
699
+ <Close size={16} />
700
+ </button>
701
+ ) : null}
702
+ </div>
226
703
  </div>
227
-
228
- <div className={styles.formControl}>
229
- <TextInput
230
- id="identifier-value"
231
- labelText={`${identifierType} Value`}
232
- value={identifierValue}
233
- onChange={(e) => setIdentifierValue(e.target.value)}
234
- placeholder={`Enter ${identifierType.toLowerCase()} value`}
235
- />
704
+ <div className={styles.formBtn}>
705
+ <Button
706
+ className={styles.searchButton}
707
+ size="sm"
708
+ kind="primary"
709
+ renderIcon={loading ? undefined : Search}
710
+ onClick={handleSearchPatient}
711
+ disabled={loading || !identifierValue.trim()}
712
+ >
713
+ {loading ? (
714
+ <span className={styles.btnLoading}>
715
+ <Loading small withOverlay={false} className={styles.btnSpinner} description="Searching" />
716
+ Searching…
717
+ </span>
718
+ ) : (
719
+ 'Search'
720
+ )}
721
+ </Button>
722
+ <Button size="sm" kind="secondary" renderIcon={WarningAlt} onClick={handleEmergencyRegistration}>
723
+ Emergency Registration
724
+ </Button>
725
+ <UnidentifiedRegistrationComponent open={modalOpen} onClose={handleCloseModal} />
236
726
  </div>
237
- </div>
238
- <div className={styles.formRow}>
239
- <div className={styles.formControl}>
240
- <div className={styles.formBtn}>
241
- <Button
242
- className={styles.registrySearchBtn}
243
- kind="primary"
244
- onClick={handleSearchPatient}
245
- disabled={loading}
246
- >
247
- {loading ? <InlineLoading description="Searching..." /> : 'Search'}
248
- </Button>
249
- <Button className={styles.registrySearchBtn} kind="secondary" onClick={handleEmergencyRegistration}>
250
- Emergency Registration
251
- </Button>
252
- <Button className={styles.registrySearchBtn} kind="tertiary" onClick={registerOnAfyaYangu}>
253
- Register on Afya Yangu
254
- </Button>
727
+ </Layer>
728
+ {notFound ? (
729
+ <div className={styles.emptyState}>
730
+ <div className={styles.emptyIcon}>
731
+ <SearchLocate size={24} />
732
+ </div>
733
+ <div>
734
+ <h5 className={styles.emptyTitle}>No match found</h5>
735
+ <p className={styles.emptyText}>
736
+ No client matching that <strong>{identifierType}</strong> was found in the Client Registry. Ask the
737
+ patient to register on the{' '}
738
+ <a href="https://afyayangu.go.ke/" target="_blank" rel="noopener noreferrer">
739
+ Afya Yangu portal
740
+ </a>{' '}
741
+ first, then search again — or use <strong>Emergency Registration</strong>.
742
+ </p>
255
743
  </div>
256
744
  </div>
257
- </div>
745
+ ) : (
746
+ <></>
747
+ )}
748
+ {fetchError ? (
749
+ <div className={styles.errorState}>
750
+ <div className={styles.errorStateIcon}>
751
+ <WarningAltFilled size={24} />
752
+ </div>
753
+ <div>
754
+ <h5 className={styles.errorStateTitle}>Couldn&apos;t complete the search</h5>
755
+ <p className={styles.errorStateText}>{fetchError} Please check your connection and try again.</p>
756
+ </div>
757
+ </div>
758
+ ) : (
759
+ <></>
760
+ )}
258
761
  {principal ? (
259
- <div className={styles.formRow}>
762
+ <Layer className={styles.card}>
260
763
  <div className={styles.hieData}>
764
+ <div className={styles.sectionHeader}>
765
+ <UserMultiple size={20} className={styles.sectionIcon} />
766
+ <h5 className={styles.sectionTitle}>Principal &amp; dependants</h5>
767
+ </div>
768
+ <p className={styles.formIntro}>
769
+ Select the patient to proceed with, then ask them to share the OTP sent to their phone.
770
+ </p>
261
771
  <div className={styles.selectionHeader}>
262
- <h5>Please select one patient and request patient to share the OTP sent</h5>
772
+ <p className={styles.summaryLine}>
773
+ <span className={styles.summaryPrincipal} />1 principal
774
+ <span className={styles.summaryDot} />
775
+ <span className={styles.summaryDependant} />
776
+ {principal.dependants?.length ?? 0}{' '}
777
+ {(principal.dependants?.length ?? 0) === 1 ? 'dependant' : 'dependants'}
778
+ </p>
263
779
  </div>
264
- <div className={styles.patientSelect}>
265
- <div className={styles.patientSelectRadio}>
266
- <RadioButtonGroup
267
- defaultSelected="principal"
268
- legendText="Patient"
269
- onChange={(v) => handleSelectedPatient(v as string)}
270
- name="radio-button-default-group"
780
+ <div className={styles.principalDependantSection}>
781
+ <div className={styles.optionList}>
782
+ <div
783
+ className={`${styles.optionCard} ${styles.principalOption} ${
784
+ selectedPatient === 'principal' ? styles.optionSelected : ''
785
+ }`}
786
+ onClick={() => handleSelectedPatient('principal')}
271
787
  >
272
- <RadioButton id="principal" labelText="Principal" value="principal" />
273
- <RadioButton id="dependants" labelText="Dependants" value="dependants" />
274
- </RadioButtonGroup>
788
+ <RadioButton
789
+ id="select-principal"
790
+ name="patient-selection"
791
+ labelText=""
792
+ value="principal"
793
+ checked={selectedPatient === 'principal'}
794
+ onChange={() => handleSelectedPatient('principal')}
795
+ />
796
+ <div className={styles.optionBody}>
797
+ <div className={styles.optionTopline}>
798
+ <span className={styles.optionName}>
799
+ {maskExceptFirstAndLast(principal.first_name)}{' '}
800
+ {maskExceptFirstAndLast(principal.middle_name)}{' '}
801
+ {maskExceptFirstAndLast(principal.last_name)}
802
+ </span>
803
+ <Tag type="blue" size="sm">
804
+ Principal
805
+ </Tag>
806
+ </div>
807
+ <span className={styles.optionCr}>CR {maskCrNumber(principal.id)}</span>
808
+ </div>
809
+ </div>
810
+ {principal.dependants
811
+ ?.filter((d) => d?.result?.[0])
812
+ .map((d) => {
813
+ const dependant = d.result[0];
814
+ const relationship = d.relationship;
815
+ return (
816
+ <div
817
+ key={dependant.id}
818
+ className={`${styles.optionCard} ${styles.dependantOption} ${
819
+ selectedPatient === dependant.id ? styles.optionSelected : ''
820
+ }`}
821
+ onClick={() => handleSelectedPatient(dependant.id)}
822
+ >
823
+ <RadioButton
824
+ id={`select-${dependant.id}`}
825
+ name="patient-selection"
826
+ labelText=""
827
+ value={dependant.id}
828
+ checked={selectedPatient === dependant.id}
829
+ onChange={() => handleSelectedPatient(dependant.id)}
830
+ />
831
+ <div className={styles.optionBody}>
832
+ <div className={styles.optionTopline}>
833
+ <span className={styles.optionName}>
834
+ {maskExceptFirstAndLast(dependant.first_name)}{' '}
835
+ {maskExceptFirstAndLast(dependant.middle_name)}{' '}
836
+ {maskExceptFirstAndLast(dependant.last_name)}
837
+
838
+ </span>
839
+ <span className={styles.optionName}>
840
+ {
841
+ dependant?.date_of_birth && <>({dependant?.date_of_birth ?? ''})</>
842
+ }
843
+
844
+ </span>
845
+ <Tag type="teal" size="sm">
846
+ {relationship || 'Dependant'}
847
+ </Tag>
848
+ </div>
849
+ <span className={styles.optionCr}>CR {maskCrNumber(dependant.id)}</span>
850
+ </div>
851
+ </div>
852
+ );
853
+ })}
275
854
  </div>
276
855
  <div className={styles.patientConfirmSelection}>
277
856
  <div className={styles.btnContainer}>
278
- <Button kind="primary" onClick={handleOtpVerification}>
857
+ <Button kind="primary" size="sm" onClick={handleOtpVerification}>
279
858
  {' '}
280
859
  Confirm
281
860
  </Button>
282
861
  </div>
283
862
  <div className={styles.btnContainer}>
284
- <Button kind="secondary" onClick={handleCancel}>
863
+ <Button kind="secondary" size="sm" onClick={handleCancel}>
285
864
  Cancel
286
865
  </Button>
287
866
  </div>
288
867
  </div>
289
- </div>
290
- <div className={styles.principalDependantSection}>
291
- {selectedPatient === 'principal' ? (
292
- <>
293
- <Table>
294
- <TableHead>
295
- <TableRow>
296
- <TableHeader>Name</TableHeader>
297
- <TableHeader>CR</TableHeader>
298
- <TableHeader>Phone No</TableHeader>
299
- <TableHeader>ID No</TableHeader>
300
- </TableRow>
301
- </TableHead>
302
- <TableBody>
303
- <TableRow>
304
- <TableCell>
305
- {principal.first_name} {maskExceptFirstAndLast(principal.middle_name)}{' '}
306
- {maskExceptFirstAndLast(principal.last_name)}
307
- </TableCell>
308
- <TableCell>{maskValue(principal.id)}</TableCell>
309
- <TableCell>{maskValue(principal.phone)}</TableCell>
310
- <TableCell>{maskValue(principal.identification_number)}</TableCell>
311
- </TableRow>
312
- </TableBody>
313
- </Table>
314
- </>
315
- ) : (
316
- <></>
317
- )}
318
- {selectedPatient === 'dependants' ? (
319
- <>
320
- <RadioButtonGroup
321
- defaultSelected=""
322
- helperText=""
323
- invalidText=""
324
- legendText=""
325
- name="dependant-group"
326
- onChange={(dependantId) => handleSelectedDependant(dependantId as string)}
327
- >
328
- {principal.dependants.map((d) => {
329
- const dependant = d.result[0];
330
- const relationship = d.relationship;
331
- return (
332
- <RadioButton
333
- id={dependant.id}
334
- labelText={formatDependantDisplayData(dependant, relationship)}
335
- value={dependant.id}
336
- />
337
- );
338
- })}
339
- </RadioButtonGroup>
340
- </>
341
- ) : (
342
- <></>
343
- )}
344
-
345
- {displayOtpModal ? (
346
- <OtpVerificationModal
347
- requestCustomOtpDto={requestCustomOtpDto}
348
- phoneNumber={principal.phone}
349
- open={displayOtpModal}
350
- onModalClose={handleModelClose}
351
- onOtpSuccessfullVerification={handleOtpSuccessfullVerification}
352
- />
353
- ) : (
354
- <></>
355
- )}
356
868
 
357
- {principal && displayClientDetailsModal ? (
358
- <>
359
- <ClientDetailsModal
360
- client={getPatient()}
361
- open={displayClientDetailsModal}
362
- onModalClose={onClientDetailsModalClose}
363
- onSubmit={handleClientDetailsSubmit}
364
- onSendClientToTriage={handleSendClientToTriage}
365
- />{' '}
366
- </>
367
- ) : (
368
- <></>
369
- )}
370
-
371
- {principal && displaytriageModal ? (
372
- <>
373
- <SendToTriageModal
374
- client={getPatient()}
375
- patients={amrsPatients}
376
- open={displaytriageModal}
377
- onModalClose={onSendToTriageModalClose}
378
- onSubmit={handleSendToTriageModalSubmit}
379
- onCreateAmrsPatient={createAmrsPatient}
380
- onManualRegistration={handleManualRegistration}
381
- />
382
- </>
383
- ) : (
384
- <></>
385
- )}
869
+ <WorkflowDrawer
870
+ open={displayDrawer}
871
+ client={getPatient()}
872
+ clientType={
873
+ selectedPatient === 'principal'
874
+ ? 'Principal'
875
+ : principal.dependants?.find((d) => d.result[0]?.id === selectedPatient)?.relationship ||
876
+ 'Dependant'
877
+ }
878
+ locationUuid={locationUuid}
879
+ requestCustomOtpDto={generateCustomSmsPayload()}
880
+ phoneNumber={principal.phone ? formatPhoneNumberForOTP(principal.phone) : ''}
881
+ amrsPatient={amrsPatients[0] ?? null}
882
+ amrsChecked={amrsChecked}
883
+ syncingAmrs={syncingAmrs}
884
+ onCreatePatient={createAmrsPatient}
885
+ onSyncPatient={syncAmrsPatient}
886
+ onClose={() => {
887
+ setDisplayDrawer(false);
888
+ setAmrsChecked(false);
889
+ }}
890
+ onStartVisit={async (details) => {
891
+ await startVisitForClient(details);
892
+ setDisplayDrawer(false);
893
+ }}
894
+ />
386
895
  </div>
387
896
  </div>
388
- </div>
897
+ </Layer>
389
898
  ) : (
390
899
  <></>
391
900
  )}
392
901
  </div>
902
+ <div className={styles.registeredPatientsSection}>
903
+ <RegistrationList />
904
+ </div>
393
905
  </div>
394
906
  </div>
395
907
  </>