@ampath/esm-dha-workflow-app 4.0.0-next.33 → 4.0.0-next.331

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 (758) hide show
  1. package/README.md +19 -0
  2. package/dist/1149.js +1 -0
  3. package/dist/1149.js.map +1 -0
  4. package/dist/1197.js +1 -0
  5. package/dist/1362.js +1 -0
  6. package/dist/1362.js.map +1 -0
  7. package/dist/1551.js +1 -0
  8. package/dist/1551.js.map +1 -0
  9. package/dist/1925.js +1 -0
  10. package/dist/1925.js.map +1 -0
  11. package/dist/1927.js +1 -0
  12. package/dist/1927.js.map +1 -0
  13. package/dist/203.js +1 -0
  14. package/dist/203.js.map +1 -0
  15. package/dist/2054.js +1 -0
  16. package/dist/2054.js.map +1 -0
  17. package/dist/2093.js +1 -0
  18. package/dist/2093.js.map +1 -0
  19. package/dist/2177.js +2 -0
  20. package/dist/2177.js.map +1 -0
  21. package/dist/2200.js +1 -0
  22. package/dist/2200.js.map +1 -0
  23. package/dist/2230.js +1 -0
  24. package/dist/2230.js.map +1 -0
  25. package/dist/2493.js +1 -0
  26. package/dist/2493.js.map +1 -0
  27. package/dist/262.js +2 -0
  28. package/dist/262.js.map +1 -0
  29. package/dist/2914.js +1 -0
  30. package/dist/2914.js.map +1 -0
  31. package/dist/2936.js +1 -0
  32. package/dist/2936.js.map +1 -0
  33. package/dist/2988.js +1 -0
  34. package/dist/2988.js.map +1 -0
  35. package/dist/3041.js +1 -0
  36. package/dist/3041.js.map +1 -0
  37. package/dist/307.js +1 -0
  38. package/dist/307.js.map +1 -0
  39. package/dist/3099.js +1 -0
  40. package/dist/3184.js +2 -0
  41. package/dist/3184.js.map +1 -0
  42. package/dist/3202.js +1 -0
  43. package/dist/3202.js.map +1 -0
  44. package/dist/3222.js +1 -0
  45. package/dist/3222.js.map +1 -0
  46. package/dist/3406.js +1 -0
  47. package/dist/3406.js.map +1 -0
  48. package/dist/347.js +1 -0
  49. package/dist/347.js.map +1 -0
  50. package/dist/3654.js +1 -0
  51. package/dist/3654.js.map +1 -0
  52. package/dist/4003.js +1 -0
  53. package/dist/4003.js.map +1 -0
  54. package/dist/4008.js +1 -0
  55. package/dist/4008.js.map +1 -0
  56. package/dist/4055.js +1 -0
  57. package/dist/4205.js +1 -0
  58. package/dist/4205.js.map +1 -0
  59. package/dist/4225.js +1 -0
  60. package/dist/4225.js.map +1 -0
  61. package/dist/4231.js +1 -0
  62. package/dist/4231.js.map +1 -0
  63. package/dist/4300.js +1 -0
  64. package/dist/4335.js +1 -0
  65. package/dist/4353.js +1 -0
  66. package/dist/4353.js.map +1 -0
  67. package/dist/4431.js +1 -0
  68. package/dist/4431.js.map +1 -0
  69. package/dist/4454.js +1 -0
  70. package/dist/4454.js.map +1 -0
  71. package/dist/4457.js +2 -0
  72. package/dist/4457.js.LICENSE.txt +282 -0
  73. package/dist/4457.js.map +1 -0
  74. package/dist/446.js +1 -0
  75. package/dist/446.js.map +1 -0
  76. package/dist/4611.js +1 -0
  77. package/dist/4611.js.map +1 -0
  78. package/dist/4652.js +1 -0
  79. package/dist/4674.js +1 -0
  80. package/dist/4674.js.map +1 -0
  81. package/dist/4755.js +1 -0
  82. package/dist/4755.js.map +1 -0
  83. package/dist/4986.js +1 -0
  84. package/dist/4986.js.map +1 -0
  85. package/dist/5097.js +1 -0
  86. package/dist/5097.js.map +1 -0
  87. package/dist/5119.js +1 -0
  88. package/dist/5119.js.map +1 -0
  89. package/dist/5167.js +1 -0
  90. package/dist/5167.js.map +1 -0
  91. package/dist/5380.js +1 -0
  92. package/dist/5380.js.map +1 -0
  93. package/dist/5422.js +1 -0
  94. package/dist/5422.js.map +1 -0
  95. package/dist/5576.js +1 -0
  96. package/dist/5576.js.map +1 -0
  97. package/dist/5851.js +1 -0
  98. package/dist/5851.js.map +1 -0
  99. package/dist/5961.js +1 -0
  100. package/dist/5961.js.map +1 -0
  101. package/dist/6264.js +1 -0
  102. package/dist/6264.js.map +1 -0
  103. package/dist/6540.js +2 -0
  104. package/dist/6540.js.map +1 -0
  105. package/dist/6606.js +1 -0
  106. package/dist/6606.js.map +1 -0
  107. package/dist/6720.js +1 -0
  108. package/dist/6720.js.map +1 -0
  109. package/dist/6824.js +1 -0
  110. package/dist/6824.js.map +1 -0
  111. package/dist/6942.js +1 -0
  112. package/dist/6942.js.map +1 -0
  113. package/dist/71.js +1 -0
  114. package/dist/71.js.map +1 -0
  115. package/dist/7207.js +1 -0
  116. package/dist/7207.js.map +1 -0
  117. package/dist/7240.js +1 -0
  118. package/dist/7240.js.map +1 -0
  119. package/dist/7255.js +1 -0
  120. package/dist/7255.js.map +1 -0
  121. package/dist/7271.js +1 -0
  122. package/dist/7271.js.map +1 -0
  123. package/dist/7420.js +1 -0
  124. package/dist/7420.js.map +1 -0
  125. package/dist/7521.js +1 -0
  126. package/dist/7521.js.map +1 -0
  127. package/dist/7557.js +1 -0
  128. package/dist/7557.js.map +1 -0
  129. package/dist/7717.js +1 -0
  130. package/dist/7717.js.map +1 -0
  131. package/dist/7830.js +2 -0
  132. package/dist/7830.js.map +1 -0
  133. package/dist/7879.js +1 -0
  134. package/dist/7879.js.map +1 -0
  135. package/dist/7941.js +1 -0
  136. package/dist/7941.js.map +1 -0
  137. package/dist/8091.js +1 -0
  138. package/dist/8091.js.map +1 -0
  139. package/dist/810.js +1 -2
  140. package/dist/810.js.map +1 -1
  141. package/dist/8558.js +1 -0
  142. package/dist/8558.js.map +1 -0
  143. package/dist/8733.js +1 -0
  144. package/dist/8733.js.map +1 -0
  145. package/dist/874.js +1 -0
  146. package/dist/874.js.map +1 -0
  147. package/dist/8895.js +1 -0
  148. package/dist/8895.js.map +1 -0
  149. package/dist/9070.js +1 -0
  150. package/dist/9070.js.map +1 -0
  151. package/dist/9091.js +1 -0
  152. package/dist/9091.js.map +1 -0
  153. package/dist/9093.js +1 -0
  154. package/dist/9093.js.map +1 -0
  155. package/dist/9249.js +1 -0
  156. package/dist/9249.js.map +1 -0
  157. package/dist/9338.js +1 -0
  158. package/dist/9338.js.map +1 -0
  159. package/dist/9418.js +2 -0
  160. package/dist/9418.js.LICENSE.txt +1 -0
  161. package/dist/9418.js.map +1 -0
  162. package/dist/9428.js +1 -0
  163. package/dist/9428.js.map +1 -0
  164. package/dist/9721.js +1 -0
  165. package/dist/9721.js.map +1 -0
  166. package/dist/esm-dha-workflow-app.js +1 -1
  167. package/dist/esm-dha-workflow-app.js.buildmanifest.json +1675 -210
  168. package/dist/esm-dha-workflow-app.js.map +1 -1
  169. package/dist/main.js +1 -1
  170. package/dist/main.js.map +1 -1
  171. package/dist/routes.json +1 -1
  172. package/local-config.json +5 -0
  173. package/package.json +16 -6
  174. package/src/admissions/admission-request-list/admission-request-list.scss +0 -0
  175. package/src/admissions/admission-request-list/admission-request-list.tsx +263 -0
  176. package/src/admissions/admissions-dashboard.component.scss +15 -0
  177. package/src/admissions/admissions-dashboard.component.tsx +277 -0
  178. package/src/admissions/admissions.resource.ts +233 -0
  179. package/src/admissions/admitted-list/admitted-patients-list.tsx +206 -0
  180. package/src/admissions/awaiting-discharge-list/awaiting-discharge-list.tsx +197 -0
  181. package/src/admissions/bed-assigment-request/bed-assignment-request-list.tsx +134 -0
  182. package/src/admissions/constants/index.ts +33 -0
  183. package/src/admissions/discharged-list/discharged-list.scss +0 -0
  184. package/src/admissions/discharged-list/discharged-list.tsx +67 -0
  185. package/src/admissions/form-entry-workspace/form-entry-workspace.tsx +62 -0
  186. package/src/admissions/inpatient/admission-history/patient-admission-history.tsx +76 -0
  187. package/src/admissions/inpatient/admission-requests/patient-admission-requests.scss +19 -0
  188. package/src/admissions/inpatient/admission-requests/patient-admission-requests.tsx +72 -0
  189. package/src/admissions/inpatient/inpatient-admissions.component.scss +7 -0
  190. package/src/admissions/inpatient/inpatient-admissions.component.tsx +46 -0
  191. package/src/admissions/modal/add-bill-items/add-bill-items.modal.scss +17 -0
  192. package/src/admissions/modal/add-bill-items/add-bill-items.modal.tsx +233 -0
  193. package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.scss +23 -0
  194. package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.tsx +156 -0
  195. package/src/admissions/modal/admit-patient/admit-patient.modal.scss +0 -0
  196. package/src/admissions/modal/admit-patient/admit-patient.modal.tsx +111 -0
  197. package/src/admissions/modal/bed-swap/bed-swap.modal.scss +0 -0
  198. package/src/admissions/modal/bed-swap/bed-swap.modal.tsx +102 -0
  199. package/src/admissions/modal/cancel-admission-request/cancel-admission-request.scss +11 -0
  200. package/src/admissions/modal/cancel-admission-request/cancel-admission-request.tsx +105 -0
  201. package/src/admissions/modal/discharge/discharge-patient.modal.scss +13 -0
  202. package/src/admissions/modal/discharge/discharge-patient.modal.tsx +86 -0
  203. package/src/admissions/types/index.ts +263 -0
  204. package/src/appointments/appointments.component.scss +6 -0
  205. package/src/appointments/appointments.component.tsx +8 -1
  206. package/src/billing/api/billing.api.ts +139 -0
  207. package/src/billing/billing-claims.resource.ts +900 -0
  208. package/src/billing/billing-dashboard-link.component.tsx +31 -0
  209. package/src/billing/billing-dashboard-reset.ts +27 -0
  210. package/src/billing/billing-root.tsx +42 -0
  211. package/src/billing/dashboard/billingDashboard.component.scss +0 -0
  212. package/src/billing/dashboard/billingDashboard.component.tsx +25 -0
  213. package/src/billing/dashboard/v2/active-visits/active-visits.component.tsx +257 -0
  214. package/src/billing/dashboard/v2/active-visits/active-visits.resource.ts +85 -0
  215. package/src/billing/dashboard/v2/active-visits/active-visits.scss +15 -0
  216. package/src/billing/dashboard/v2/active-visits.component.tsx +102 -0
  217. package/src/billing/dashboard/v2/admissions/admission-requests-tab.component.tsx +79 -0
  218. package/src/billing/dashboard/v2/billing-claims-dashboard.component.scss +209 -0
  219. package/src/billing/dashboard/v2/billing-claims-dashboard.component.tsx +347 -0
  220. package/src/billing/dashboard/v2/cash-checklist/bill-document.component.scss +90 -0
  221. package/src/billing/dashboard/v2/cash-checklist/bill-document.component.tsx +101 -0
  222. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.scss +199 -0
  223. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.tsx +361 -0
  224. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.resource.ts +239 -0
  225. package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.scss +246 -0
  226. package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.tsx +182 -0
  227. package/src/billing/dashboard/v2/claim-statuses.ts +143 -0
  228. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
  229. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +35 -0
  230. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.scss +67 -0
  231. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.tsx +90 -0
  232. package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.scss +28 -0
  233. package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.tsx +36 -0
  234. package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.scss +119 -0
  235. package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.tsx +198 -0
  236. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.scss +5 -0
  237. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +160 -0
  238. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.scss +105 -0
  239. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.tsx +184 -0
  240. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.scss +161 -0
  241. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.tsx +328 -0
  242. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +96 -0
  243. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-document.component.tsx +236 -0
  244. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.scss +98 -0
  245. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.tsx +292 -0
  246. package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +133 -0
  247. package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +217 -0
  248. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-by-token.component.tsx +150 -0
  249. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.scss +13 -0
  250. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.tsx +116 -0
  251. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.scss +338 -0
  252. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.tsx +616 -0
  253. package/src/billing/dashboard/v2/claim-visits/claim-visits.component.scss +5 -0
  254. package/src/billing/dashboard/v2/claim-visits/claim-visits.component.tsx +133 -0
  255. package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
  256. package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
  257. package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +17 -0
  258. package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +56 -0
  259. package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
  260. package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
  261. package/src/billing/dashboard/v2/claim-visits/modal/submit-claim/submit-claim.modal.tsx +204 -0
  262. package/src/billing/dashboard/v2/claim-visits/shared/_empty-state.scss +28 -0
  263. package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.scss +298 -0
  264. package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.tsx +252 -0
  265. package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.scss +42 -0
  266. package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.tsx +54 -0
  267. package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.scss +61 -0
  268. package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.tsx +150 -0
  269. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
  270. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
  271. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.tsx +648 -0
  272. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.scss +595 -0
  273. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.tsx +810 -0
  274. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.resource.ts +282 -0
  275. package/src/billing/dashboard/v2/claims-accounting/bill-utils.ts +134 -0
  276. package/src/billing/dashboard/v2/claims-accounting/claim-detail.component.tsx +346 -0
  277. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.scss +546 -0
  278. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.tsx +206 -0
  279. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.resource.ts +337 -0
  280. package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.scss +90 -0
  281. package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.tsx +90 -0
  282. package/src/billing/dashboard/v2/claims-accounting/remittances.component.tsx +169 -0
  283. package/src/billing/dashboard/v2/claims-accounting/remittances.resource.ts +46 -0
  284. package/src/billing/dashboard/v2/claims-accounting/status-meta.ts +25 -0
  285. package/src/billing/dashboard/v2/clearance/cash-patients.scss +18 -0
  286. package/src/billing/dashboard/v2/clearance/cash.component.tsx +149 -0
  287. package/src/billing/dashboard/v2/clearance/clearance.component.scss +84 -0
  288. package/src/billing/dashboard/v2/clearance/clearance.component.tsx +225 -0
  289. package/src/billing/dashboard/v2/clearance/pay-cash.component.tsx +176 -0
  290. package/src/billing/dashboard/v2/clearance/pay-cash.scss +28 -0
  291. package/src/billing/dashboard/v2/clearance/prepaid-services.component.tsx +112 -0
  292. package/src/billing/dashboard/v2/facility-bills/claim-status.ts +249 -0
  293. package/src/billing/dashboard/v2/facility-bills/facility-bills.component.scss +140 -0
  294. package/src/billing/dashboard/v2/facility-bills/facility-bills.component.tsx +687 -0
  295. package/src/billing/dashboard/v2/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
  296. package/src/billing/dashboard/v2/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +267 -0
  297. package/src/billing/dashboard/v2/facility-bills/preauths.component.tsx +124 -0
  298. package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.scss +22 -0
  299. package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.tsx +389 -0
  300. package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.scss +0 -0
  301. package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.tsx +0 -0
  302. package/src/billing/dashboard/v2/new-facility-bills/bills-table.component.tsx +78 -0
  303. package/src/billing/dashboard/v2/new-facility-bills/bills-table.scss +18 -0
  304. package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.component.tsx +64 -0
  305. package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.scss +146 -0
  306. package/src/billing/dashboard/v2/patient-bill-details/attachments/add-attachments.component.tsx +223 -0
  307. package/src/billing/dashboard/v2/patient-bill-details/attachments/attachment.component.tsx +157 -0
  308. package/src/billing/dashboard/v2/patient-bill-details/attachments/attachments.scss +92 -0
  309. package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
  310. package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.tsx +326 -0
  311. package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
  312. package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +269 -0
  313. package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
  314. package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +124 -0
  315. package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.component.tsx +152 -0
  316. package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.scss +225 -0
  317. package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
  318. package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +173 -0
  319. package/src/billing/dashboard/v2/patient-bill-details/attachments/generate-attachments.component.tsx +360 -0
  320. package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.component.tsx +151 -0
  321. package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.scss +225 -0
  322. package/src/billing/dashboard/v2/patient-bill-details/attachments/type.ts +44 -0
  323. package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.scss +107 -0
  324. package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.tsx +508 -0
  325. package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.scss +30 -0
  326. package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.tsx +94 -0
  327. package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.scss +89 -0
  328. package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.tsx +53 -0
  329. package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.scss +32 -0
  330. package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.tsx +215 -0
  331. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
  332. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
  333. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +186 -0
  334. package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.scss +153 -0
  335. package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.tsx +458 -0
  336. package/src/billing/dashboard/v2/patient-bill-details/payment-mode.ts +124 -0
  337. package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.scss +27 -0
  338. package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.tsx +222 -0
  339. package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.scss +27 -0
  340. package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.tsx +109 -0
  341. package/src/billing/dashboard/v2/preauth/preauth-attachments.component.tsx +389 -0
  342. package/src/billing/dashboard/v2/preauth/preauth-list.component.scss +38 -0
  343. package/src/billing/dashboard/v2/preauth/preauth-list.component.tsx +226 -0
  344. package/src/billing/dashboard/v2/preauth/preauth-status-tag.component.tsx +75 -0
  345. package/src/billing/dashboard/v2/preauth/preauth-typed-fields.md +125 -0
  346. package/src/billing/dashboard/v2/preauth/preauth.resource.ts +1067 -0
  347. package/src/billing/dashboard/v2/preauth/preauth.workspace.scss +91 -0
  348. package/src/billing/dashboard/v2/preauth/preauth.workspace.tsx +1802 -0
  349. package/src/billing/dashboard/v2/preauth/preauthorizations-tab.component.tsx +45 -0
  350. package/src/billing/dashboard/v2/sha-claims/sha-claims-table.component.tsx +36 -0
  351. package/src/billing/dashboard/v2/sha-claims/sha-claims.component.tsx +60 -0
  352. package/src/billing/dashboard/v2/sha-claims/sha-claims.scss +8 -0
  353. package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.scss +17 -0
  354. package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.tsx +15 -0
  355. package/src/billing/dashboard/v2/shared/empty-state.component.scss +24 -0
  356. package/src/billing/dashboard/v2/shared/empty-state.component.tsx +13 -0
  357. package/src/billing/dashboard/v2/shared/scroll-to-top.component.scss +54 -0
  358. package/src/billing/dashboard/v2/shared/scroll-to-top.component.tsx +54 -0
  359. package/src/billing/dashboard/v2/shared/table-toolbar.component.scss +77 -0
  360. package/src/billing/dashboard/v2/shared/table-toolbar.component.tsx +48 -0
  361. package/src/billing/dashboard/v2/types/index.ts +507 -0
  362. package/src/billing/dashboard/v3/active-visits/active-visits.component.tsx +256 -0
  363. package/src/billing/dashboard/v3/active-visits/active-visits.resource.ts +57 -0
  364. package/src/billing/dashboard/v3/active-visits/active-visits.scss +15 -0
  365. package/src/billing/dashboard/v3/cash-checklist/bill-document.component.scss +90 -0
  366. package/src/billing/dashboard/v3/cash-checklist/bill-document.component.tsx +101 -0
  367. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.scss +199 -0
  368. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.tsx +361 -0
  369. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.resource.ts +240 -0
  370. package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.scss +246 -0
  371. package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.tsx +182 -0
  372. package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
  373. package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +44 -0
  374. package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.scss +5 -0
  375. package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.tsx +42 -0
  376. package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.scss +10 -0
  377. package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.tsx +25 -0
  378. package/src/billing/dashboard/v3/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +223 -0
  379. package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.scss +6 -0
  380. package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +85 -0
  381. package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +0 -0
  382. package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +109 -0
  383. package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.scss +104 -0
  384. package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.tsx +336 -0
  385. package/src/billing/dashboard/v3/claim-visits/claim-visits.component.scss +5 -0
  386. package/src/billing/dashboard/v3/claim-visits/claim-visits.component.tsx +139 -0
  387. package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
  388. package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
  389. package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.scss +7 -0
  390. package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.tsx +35 -0
  391. package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +6 -0
  392. package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +33 -0
  393. package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
  394. package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
  395. package/src/billing/dashboard/v3/claim-visits/modal/submit-claim/submit-claim.modal.tsx +204 -0
  396. package/src/billing/dashboard/v3/claim-visits/payer-preview/index.scss +140 -0
  397. package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-tile.component.tsx +55 -0
  398. package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-workspace.component.tsx +157 -0
  399. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-doctors.component.tsx +54 -0
  400. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-lines.component.tsx +48 -0
  401. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-notes.component.tsx +47 -0
  402. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-diagnoses.component.tsx +44 -0
  403. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-interventions.component.tsx +44 -0
  404. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
  405. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
  406. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.tsx +648 -0
  407. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.scss +595 -0
  408. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.tsx +810 -0
  409. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.resource.ts +282 -0
  410. package/src/billing/dashboard/v3/claims-accounting/bill-utils.ts +134 -0
  411. package/src/billing/dashboard/v3/claims-accounting/claim-detail.component.tsx +346 -0
  412. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.scss +546 -0
  413. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.tsx +206 -0
  414. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.resource.ts +337 -0
  415. package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.scss +90 -0
  416. package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.tsx +90 -0
  417. package/src/billing/dashboard/v3/claims-accounting/remittances.component.tsx +169 -0
  418. package/src/billing/dashboard/v3/claims-accounting/remittances.resource.ts +46 -0
  419. package/src/billing/dashboard/v3/claims-accounting/status-meta.ts +25 -0
  420. package/src/billing/dashboard/v3/clearance/clearance.component.scss +100 -0
  421. package/src/billing/dashboard/v3/clearance/clearance.component.tsx +0 -0
  422. package/src/billing/dashboard/v3/clearance/prepaid-services.component.tsx +112 -0
  423. package/src/billing/dashboard/v3/facility-bills/claim-status.ts +243 -0
  424. package/src/billing/dashboard/v3/facility-bills/facility-bills.component.scss +9 -0
  425. package/src/billing/dashboard/v3/facility-bills/facility-bills.component.tsx +172 -0
  426. package/src/billing/dashboard/v3/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
  427. package/src/billing/dashboard/v3/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +232 -0
  428. package/src/billing/dashboard/v3/facility-bills/preauths.component.tsx +124 -0
  429. package/src/billing/dashboard/v3/patient-bill-details/attachments/add-attachments.component.tsx +223 -0
  430. package/src/billing/dashboard/v3/patient-bill-details/attachments/attachment.component.tsx +157 -0
  431. package/src/billing/dashboard/v3/patient-bill-details/attachments/attachments.scss +92 -0
  432. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary-helper.ts +58 -0
  433. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
  434. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.tsx +273 -0
  435. package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
  436. package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +314 -0
  437. package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
  438. package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +126 -0
  439. package/src/billing/dashboard/v3/patient-bill-details/attachments/final-bill.component.tsx +75 -0
  440. package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
  441. package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +253 -0
  442. package/src/billing/dashboard/v3/patient-bill-details/attachments/generate-attachments.component.tsx +343 -0
  443. package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.component.tsx +150 -0
  444. package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.scss +225 -0
  445. package/src/billing/dashboard/v3/patient-bill-details/attachments/type.ts +259 -0
  446. package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.scss +13 -0
  447. package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.tsx +205 -0
  448. package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.scss +0 -0
  449. package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.tsx +61 -0
  450. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
  451. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
  452. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.scss +14 -0
  453. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +111 -0
  454. package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.scss +6 -0
  455. package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.tsx +139 -0
  456. package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.scss +20 -0
  457. package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.tsx +254 -0
  458. package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.scss +0 -0
  459. package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.tsx +80 -0
  460. package/src/billing/dashboard/v3/preauth/preauth-attachments.component.tsx +389 -0
  461. package/src/billing/dashboard/v3/preauth/preauth-list.component.scss +34 -0
  462. package/src/billing/dashboard/v3/preauth/preauth-list.component.tsx +281 -0
  463. package/src/billing/dashboard/v3/preauth/preauth-status-tag.component.tsx +75 -0
  464. package/src/billing/dashboard/v3/preauth/preauth-typed-fields.md +125 -0
  465. package/src/billing/dashboard/v3/preauth/preauth.resource.ts +1072 -0
  466. package/src/billing/dashboard/v3/preauth/preauth.workspace.scss +91 -0
  467. package/src/billing/dashboard/v3/preauth/preauth.workspace.tsx +1806 -0
  468. package/src/billing/dashboard/v3/preauth/preauthorizations-tab.component.tsx +45 -0
  469. package/src/billing/dashboard/v3/shared/empty-state.component.scss +25 -0
  470. package/src/billing/dashboard/v3/shared/empty-state.component.tsx +13 -0
  471. package/src/billing/dashboard/v3/shared/table-toolbar.component.scss +64 -0
  472. package/src/billing/dashboard/v3/shared/table-toolbar.component.tsx +48 -0
  473. package/src/billing/dashboard/v3/types/index.ts +381 -0
  474. package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.extension.tsx +55 -0
  475. package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.scss +16 -0
  476. package/src/billing/extensions/visit-billing/visit-billing.extension.scss +0 -0
  477. package/src/billing/extensions/visit-billing/visit-billing.extension.tsx +509 -0
  478. package/src/billing/invoice/bill.resource.ts +47 -0
  479. package/src/billing/invoice/invoice-header/header-card/header-card.scss +17 -0
  480. package/src/billing/invoice/invoice-header/header-card/header-card.tsx +21 -0
  481. package/src/billing/invoice/invoice.scss +113 -0
  482. package/src/billing/invoice/invoice.tsx +1441 -0
  483. package/src/billing/invoice/line-items/line-items.scss +0 -0
  484. package/src/billing/invoice/line-items/line-items.tsx +120 -0
  485. package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.scss +23 -0
  486. package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.tsx +114 -0
  487. package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.scss +0 -0
  488. package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.tsx +122 -0
  489. package/src/billing/invoice/payment-details/payment-details.scss +0 -0
  490. package/src/billing/invoice/payment-details/payment-details.tsx +43 -0
  491. package/src/billing/invoice/print-invoice/print-receipt.component.tsx +44 -0
  492. package/src/billing/invoice/print-invoice/print-receipt.scss +14 -0
  493. package/src/billing/maternity-discharge.resource.ts +21 -0
  494. package/src/billing/types/index.ts +354 -0
  495. package/src/billing/utils/index.ts +17 -0
  496. package/src/billing/widgets/billingTotalsRow.component.scss +0 -0
  497. package/src/billing/widgets/billingTotalsRow.component.tsx +712 -0
  498. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.resource.ts +130 -0
  499. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.scss +58 -0
  500. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.workspace.tsx +645 -0
  501. package/src/billing/workspaces/create-order-bill-form-workspace/schema.ts +12 -0
  502. package/src/bookings/bookings.component.scss +7 -0
  503. package/src/bookings/bookings.component.tsx +35 -0
  504. package/src/bookings/daily/daily-bookings.resource.ts +2 -1
  505. package/src/case-summary/case-summary.extension.scss +13 -0
  506. package/src/case-summary/case-summary.extension.tsx +40 -0
  507. package/src/case-summary/case-summary.resource.test.ts +69 -0
  508. package/src/case-summary/case-summary.resource.ts +52 -0
  509. package/src/case-summary/components/case-summary-printable.component.scss +174 -0
  510. package/src/case-summary/components/case-summary-printable.component.tsx +288 -0
  511. package/src/case-summary/components/case-summary-printable.utils.ts +51 -0
  512. package/src/case-summary/types/case-summary.types.ts +152 -0
  513. package/src/claims/claims.component.scss +70 -0
  514. package/src/claims/claims.component.tsx +713 -0
  515. package/src/claims/claims.resource.ts +1274 -0
  516. package/src/claims/index.ts +340 -0
  517. package/src/claims/interventions.resource.ts +131 -0
  518. package/src/claims/utils.ts +64 -0
  519. package/src/config-schema.ts +114 -1
  520. package/src/context/patient-context.tsx +27 -0
  521. package/src/createDashboardLink.tsx +9 -0
  522. package/src/dashboard/charts/chart.component.scss +24 -0
  523. package/src/dashboard/charts/chart.component.tsx +56 -0
  524. package/src/dashboard/dashboard.component.scss +48 -3
  525. package/src/dashboard/dashboard.component.tsx +26 -36
  526. package/src/dashboard/overview/overview.component.scss +40 -59
  527. package/src/dashboard/overview/overview.component.tsx +53 -41
  528. package/src/dashboard-meta/accounting-dashboard.meta.ts +6 -0
  529. package/src/dashboard-meta/admissions-dashboard.meta.ts +6 -0
  530. package/src/dashboard-meta/billing-dashboard.meta.ts +6 -0
  531. package/src/dashboard-meta/bookings-dashboard.meta.ts +6 -0
  532. package/src/dashboard-meta/case-summary.meta.ts +6 -0
  533. package/src/dashboard-meta/consultation-dashboard.meta.ts +6 -0
  534. package/src/dashboard-meta/dha-workflow-dashboard.meta.ts +6 -0
  535. package/src/dashboard-meta/inpatient-admissions.meta.ts +6 -0
  536. package/src/dashboard-meta/maternity-dashboard.meta.ts +6 -0
  537. package/src/dashboard-meta/mch-dashboard.meta.ts +6 -0
  538. package/src/dashboard-meta/pharmacy-dashboard.meta.ts +6 -0
  539. package/src/dashboard-meta/queue-dashboard.meta.ts +6 -0
  540. package/src/dashboard-meta/registers-dashboard.meta.ts +6 -0
  541. package/src/dashboard-meta/registry-dashboard.meta.ts +6 -0
  542. package/src/dashboard-meta/service-queue-admin.meta.ts +6 -0
  543. package/src/dashboard-meta/specialized-clinics-dashboard.meta.ts +6 -0
  544. package/src/dashboard-meta/triage-dashboard.meta.ts +6 -0
  545. package/src/index.ts +177 -6
  546. package/src/mnch/maternity/maternity-queues.component.scss +7 -0
  547. package/src/mnch/maternity/maternity-queues.component.tsx +32 -0
  548. package/src/mnch/maternity/queues/triage/maternity-triage.tsx +15 -0
  549. package/src/mnch/mch/mch-queues.component.scss +10 -0
  550. package/src/mnch/mch/mch-queues.component.tsx +36 -0
  551. package/src/mnch/mch/queues/consultation/mch-consultation.tsx +18 -0
  552. package/src/mnch/mch/queues/triage/mch-triage.tsx +15 -0
  553. package/src/mnch/mnch-root.tsx +17 -0
  554. package/src/mortuary/mortuary.component.tsx +13 -0
  555. package/src/pharmacy/pharmacy.component.scss +16 -0
  556. package/src/pharmacy/pharmacy.component.tsx +11 -6
  557. package/src/registers/registers.component.tsx +8 -0
  558. package/src/registry/drawer/emr-compare.component.scss +263 -0
  559. package/src/registry/drawer/emr-compare.component.tsx +302 -0
  560. package/src/registry/drawer/emr-compare.resource.ts +181 -0
  561. package/src/registry/drawer/emr-create-preview.component.tsx +123 -0
  562. package/src/registry/drawer/otp-verification-step.component.tsx +398 -0
  563. package/src/registry/drawer/pomsf-balance.util.test.ts +177 -0
  564. package/src/registry/drawer/pomsf-balance.util.ts +79 -0
  565. package/src/registry/drawer/verification.resource.ts +60 -0
  566. package/src/registry/drawer/workflow-drawer.component.scss +1242 -0
  567. package/src/registry/drawer/workflow-drawer.component.tsx +1476 -0
  568. package/src/registry/eligibility/eligibility-details/eligibility-details.scss +38 -0
  569. package/src/registry/eligibility/eligibility-details/eligibility-details.tsx +101 -0
  570. package/src/registry/eligibility/eliigibility-tags/eligibility-tags.scss +16 -0
  571. package/src/registry/eligibility/eliigibility-tags/eligibility-tags.tsx +120 -0
  572. package/src/registry/eligibility/modal/eligibility-details.modal.scss +0 -0
  573. package/src/registry/eligibility/modal/eligibility-details.modal.tsx +45 -0
  574. package/src/registry/hie.resource.ts +408 -0
  575. package/src/registry/hie.types.ts +57 -0
  576. package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.scss +277 -0
  577. package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.tsx +218 -0
  578. package/src/registry/modal/biometrics-verification-modal/type.ts +39 -0
  579. package/src/registry/modal/client-details-modal/client-details-modal.tsx +65 -29
  580. package/src/registry/modal/otp-modal/otp-whitlisting-modal.component.tsx +815 -0
  581. package/src/registry/modal/otp-modal/otp-whitlisting-modal.scss +354 -0
  582. package/src/registry/modal/otp-modal/otp-whitlisting.scss +0 -0
  583. package/src/registry/modal/otp-verification-modal/claims-consent.scss +72 -0
  584. package/src/registry/modal/otp-verification-modal/claims-consent.tsx +135 -0
  585. package/src/registry/modal/otp-verification-modal/extension/claims-consent.extension.tsx +124 -0
  586. package/src/registry/modal/otp-verification-modal/otp-verification-modal.scss +30 -0
  587. package/src/registry/modal/otp-verification-modal/otp-verification-modal.tsx +154 -54
  588. package/src/registry/modal/send-to-triage/payment-details.tsx +120 -0
  589. package/src/registry/modal/send-to-triage/payment-method.component.tsx +54 -0
  590. package/src/registry/modal/send-to-triage/send-to-queue.modal.tsx +980 -0
  591. package/src/registry/modal/send-to-triage/send-to-triage.modal.scss +156 -3
  592. package/src/registry/modal/send-to-triage/send-to-triage.modal.tsx +1101 -131
  593. package/src/registry/modal/start-patient-visit/start-patient-visit.modal.scss +34 -0
  594. package/src/registry/modal/start-patient-visit/start-patient-visit.modal.tsx +231 -0
  595. package/src/registry/payment-details/payment-options/payment-options.scss +13 -0
  596. package/src/registry/payment-details/payment-options/payment-options.tsx +61 -14
  597. package/src/registry/registration-list/registration-list.component.scss +32 -0
  598. package/src/registry/registration-list/registration-list.component.tsx +103 -0
  599. package/src/registry/registry-entry.tsx +11 -0
  600. package/src/registry/registry.component.scss +402 -78
  601. package/src/registry/registry.component.tsx +547 -221
  602. package/src/registry/registry.resource.ts +22 -3
  603. package/src/registry/types/index.ts +117 -8
  604. package/src/registry/utils/error-handler.ts +54 -0
  605. package/src/registry/utils/format-dependant-display-data.ts +1 -1
  606. package/src/registry/utils/hie-client-adapter.ts +6 -3
  607. package/src/registry/utils/mask-data.ts +40 -0
  608. package/src/registry/utils/phone-number-formatter.ts +11 -0
  609. package/src/resources/dashboard.resource.ts +20 -0
  610. package/src/resources/identifier-types.ts +2 -0
  611. package/src/resources/patient-resource.ts +6 -1
  612. package/src/resources/queue.resource.ts +24 -1
  613. package/src/resources/superset.resource.ts +21 -0
  614. package/src/resources/visit.resource.ts +19 -1
  615. package/src/root.component.tsx +8 -5
  616. package/src/routes.json +417 -23
  617. package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.scss +31 -0
  618. package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.tsx +153 -0
  619. package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.scss +0 -0
  620. package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.tsx +182 -0
  621. package/src/service-queues/admin/queue/queue-list/queue-list.scss +33 -0
  622. package/src/service-queues/admin/queue/queue-list/queue-list.tsx +113 -0
  623. package/src/service-queues/admin/queue-entry/queue-entry-list.component.scss +6 -0
  624. package/src/service-queues/admin/queue-entry/queue-entry-list.component.tsx +137 -0
  625. package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.scss +31 -0
  626. package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.tsx +137 -0
  627. package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.scss +0 -0
  628. package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.tsx +146 -0
  629. package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.scss +22 -0
  630. package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.tsx +120 -0
  631. package/src/service-queues/admin/service-queue-admin-dashboard.component.scss +6 -0
  632. package/src/service-queues/admin/service-queue-admin-dashboard.component.tsx +34 -0
  633. package/src/service-queues/consultation/consultation.component.tsx +9 -0
  634. package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.scss +30 -0
  635. package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.tsx +108 -0
  636. package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.scss +26 -0
  637. package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.tsx +110 -0
  638. package/src/service-queues/modals/move/move-patient.component.scss +1 -1
  639. package/src/service-queues/modals/move/move-patient.component.tsx +31 -17
  640. package/src/service-queues/queue-list/check-in.service.ts +26 -0
  641. package/src/service-queues/queue-list/queue-list.component.scss +37 -0
  642. package/src/service-queues/queue-list/queue-list.component.tsx +256 -56
  643. package/src/service-queues/service-queue/service-queue.component.tsx +151 -8
  644. package/src/service-queues/service-queue/stats/stat-details/stat-details.component.scss +5 -0
  645. package/src/service-queues/service-queue/stats/stat-details/stat-details.component.tsx +36 -7
  646. package/src/service-queues/service-queue.tsx +22 -16
  647. package/src/service-queues/service-queues.resource.ts +197 -1
  648. package/src/service-queues/service.resource.ts +1 -1
  649. package/src/shared/constants/concepts.ts +50 -0
  650. package/src/shared/constants/patient-category.ts +6 -0
  651. package/src/shared/constants/patient-type.ts +10 -0
  652. package/src/shared/constants/visit-types.ts +7 -0
  653. package/src/shared/services/billing.resource.ts +75 -0
  654. package/src/shared/services/claims.resource.ts +47 -0
  655. package/src/shared/services/client-payment-mode.resource.ts +27 -0
  656. package/src/shared/services/client-payment.resource.ts +17 -0
  657. package/src/shared/services/consultation-clearance.resource.ts +210 -0
  658. package/src/shared/services/eligibility.resource.ts +20 -0
  659. package/src/shared/services/encounters.resource.ts +33 -0
  660. package/src/shared/services/location.resource.ts +9 -0
  661. package/src/shared/types/index.ts +156 -0
  662. package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.scss +42 -0
  663. package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.tsx +42 -0
  664. package/src/shared/ui/confirm-modal/confirm.modal.scss +18 -0
  665. package/src/shared/ui/confirm-modal/confirm.modal.tsx +38 -0
  666. package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.scss +39 -0
  667. package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.tsx +19 -0
  668. package/src/shared/ui/otp-input/otp-input.component.scss +14 -0
  669. package/src/shared/ui/otp-input/otp-input.component.tsx +97 -0
  670. package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.tsx +6 -3
  671. package/src/shared/ui/timer/timer.component.scss +5 -0
  672. package/src/shared/ui/timer/timer.component.tsx +40 -0
  673. package/src/shared/utils/get-base-url.ts +10 -0
  674. package/src/shared/utils/get-tag-type.ts +75 -0
  675. package/src/side-nav-menu/mnch-nav-link-config.ts +16 -0
  676. package/src/side-nav-menu/mnch-nav-links.tsx +42 -0
  677. package/src/side-nav-menu/nav-link-config.ts +1 -5
  678. package/src/side-nav-menu/specialized-clinics-nav-link-config.ts +36 -0
  679. package/src/side-nav-menu/specialized-clinics-nav-links.tsx +42 -0
  680. package/src/specialized-clinics/critital-care-unit/critical-care-unit-queues.component.scss +7 -0
  681. package/src/specialized-clinics/critital-care-unit/critical-care-unit-queues.component.tsx +36 -0
  682. package/src/specialized-clinics/critital-care-unit/queues/consultation/critical-care-unit-consultation.tsx +15 -0
  683. package/src/specialized-clinics/critital-care-unit/queues/triage/critical-care-unit-triage.tsx +15 -0
  684. package/src/specialized-clinics/dental/dental-queues.component.scss +7 -0
  685. package/src/specialized-clinics/dental/dental-queues.component.tsx +36 -0
  686. package/src/specialized-clinics/dental/queues/consultation/dental-consultation.tsx +15 -0
  687. package/src/specialized-clinics/dental/queues/triage/dental-triage.tsx +15 -0
  688. package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.scss +7 -0
  689. package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.tsx +36 -0
  690. package/src/specialized-clinics/diagnostic-and-imaging/queues/consultation/diagnosis-and-imaging-consultation.tsx +15 -0
  691. package/src/specialized-clinics/diagnostic-and-imaging/queues/triage/diagnosis-and-imaging-triage.tsx +15 -0
  692. package/src/specialized-clinics/oncology/oncology-queues.component.scss +7 -0
  693. package/src/specialized-clinics/oncology/oncology-queues.component.tsx +36 -0
  694. package/src/specialized-clinics/oncology/queues/consultation/oncology-consultation.tsx +15 -0
  695. package/src/specialized-clinics/oncology/queues/triage/oncology-triage.tsx +15 -0
  696. package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.scss +7 -0
  697. package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.tsx +36 -0
  698. package/src/specialized-clinics/ophthalmology/queues/consultation/ophthalmology-consultation.tsx +15 -0
  699. package/src/specialized-clinics/ophthalmology/queues/triage/ophthalmology-triage.tsx +15 -0
  700. package/src/specialized-clinics/psychiatry/psychiatry-queues.component.scss +7 -0
  701. package/src/specialized-clinics/psychiatry/psychiatry-queues.component.tsx +36 -0
  702. package/src/specialized-clinics/psychiatry/queues/consultation/psychiatry-consultation.tsx +15 -0
  703. package/src/specialized-clinics/psychiatry/queues/triage/psychiatry-triage.tsx +15 -0
  704. package/src/specialized-clinics/renal/queues/consultation/dialysis-consultation.tsx +15 -0
  705. package/src/specialized-clinics/renal/queues/triage/renal-triage.tsx +15 -0
  706. package/src/specialized-clinics/renal/renal-queues.component.scss +7 -0
  707. package/src/specialized-clinics/renal/renal-queues.component.tsx +36 -0
  708. package/src/specialized-clinics/specialized-clinics-root.tsx +27 -0
  709. package/src/triage/triage.component.scss +6 -0
  710. package/src/triage/triage.component.tsx +4 -0
  711. package/src/types/types.ts +56 -1
  712. package/webpack.config.js +54 -1
  713. package/dist/104.js +0 -2
  714. package/dist/104.js.map +0 -1
  715. package/dist/15.js +0 -1
  716. package/dist/15.js.map +0 -1
  717. package/dist/184.js +0 -2
  718. package/dist/184.js.map +0 -1
  719. package/dist/197.js +0 -1
  720. package/dist/255.js +0 -1
  721. package/dist/255.js.map +0 -1
  722. package/dist/300.js +0 -1
  723. package/dist/335.js +0 -1
  724. package/dist/339.js +0 -1
  725. package/dist/339.js.map +0 -1
  726. package/dist/353.js +0 -1
  727. package/dist/353.js.map +0 -1
  728. package/dist/420.js +0 -1
  729. package/dist/420.js.map +0 -1
  730. package/dist/540.js +0 -2
  731. package/dist/540.js.map +0 -1
  732. package/dist/55.js +0 -1
  733. package/dist/652.js +0 -1
  734. package/dist/709.js +0 -1
  735. package/dist/709.js.map +0 -1
  736. package/dist/710.js +0 -2
  737. package/dist/710.js.map +0 -1
  738. package/dist/729.js +0 -1
  739. package/dist/729.js.map +0 -1
  740. package/dist/752.js +0 -1
  741. package/dist/752.js.map +0 -1
  742. package/dist/833.js +0 -1
  743. package/dist/833.js.map +0 -1
  744. package/dist/907.js +0 -1
  745. package/dist/907.js.map +0 -1
  746. package/dist/91.js +0 -1
  747. package/dist/91.js.map +0 -1
  748. package/dist/93.js +0 -1
  749. package/dist/93.js.map +0 -1
  750. package/dist/943.js +0 -1
  751. package/dist/943.js.map +0 -1
  752. package/dist/99.js +0 -1
  753. /package/dist/{104.js.LICENSE.txt → 2177.js.LICENSE.txt} +0 -0
  754. /package/dist/{810.js.LICENSE.txt → 262.js.LICENSE.txt} +0 -0
  755. /package/dist/{184.js.LICENSE.txt → 3184.js.LICENSE.txt} +0 -0
  756. /package/dist/{540.js.LICENSE.txt → 6540.js.LICENSE.txt} +0 -0
  757. /package/dist/{710.js.LICENSE.txt → 7830.js.LICENSE.txt} +0 -0
  758. /package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.scss +0 -0
@@ -0,0 +1,508 @@
1
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
2
+ import { type PatientPayment, type PatientFacilityBillDetails } from '../../types';
3
+ import styles from './bill-details.scss';
4
+ import {
5
+ Button,
6
+ DataTableSkeleton,
7
+ Table,
8
+ TableBody,
9
+ TableCell,
10
+ TableHead,
11
+ TableHeader,
12
+ TableRow,
13
+ Tag,
14
+ } from '@carbon/react';
15
+ import { Add, Money } from '@carbon/react/icons';
16
+ import { formatDate, launchWorkspace, parseDate } from '@openmrs/esm-framework';
17
+ import { type AmrsVisitDiagnosis } from '../../../../types';
18
+ import AddClaimDiagnosisModal from '../modals/add-claim-diagnosis/add-claim-diagnosis.modal';
19
+ import { addClaimDiagnosis, useInvalidateProviderClaimPreview, useProviderClaimPreview } from '../../../../billing-claims.resource';
20
+ import EmptyState from '../../shared/empty-state.component';
21
+ import { canEditClaimContent } from '../../claim-statuses';
22
+
23
+ // One money format across the page, so a total and the line it came from line up.
24
+ const money = (n: number | string): string => `Ksh ${Number(n ?? 0).toLocaleString('en-KE', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
25
+ // Stable key for a patient diagnosis, used to track its claim-add attempt/state.
26
+ const diagnosisKey = (d: AmrsVisitDiagnosis): string => d.uuid ?? `${d.encounter_id}-${d.icd11_code}`;
27
+
28
+ // Whether a patient diagnosis has already been added to the claim: the claim carries
29
+ // each diagnosis by its ICD code, which is the AMRS diagnosis' icd11_code.
30
+ type DiagnosisState = 'added' | 'adding' | 'error' | 'checking' | 'locked';
31
+
32
+ // Sentence-case a value for uniform display, e.g. "AWAITING CLAIM" -> "Awaiting claim".
33
+ const toSentence = (s: string): string => {
34
+ const v = (s ?? '').trim();
35
+ return v ? v.charAt(0).toUpperCase() + v.slice(1).toLowerCase() : '';
36
+ };
37
+
38
+ // Muted em dash for values the backend left blank, so a sparse row still reads as a row.
39
+ const dash = (value?: string | null): React.ReactNode => {
40
+ const v = (value ?? '').trim();
41
+ return v ? v : <span className={styles.missingValue}>—</span>;
42
+ };
43
+
44
+ // Some line items come back with no billable_service; fall back to the intervention
45
+ // code so the row is still identifiable rather than an empty cell.
46
+ const billItemName = (b: PatientFacilityBillDetails): React.ReactNode =>
47
+ dash(b.billable_service ?? b.intervention_code);
48
+
49
+ // Uniform status colours across Paid / Pending / Awaiting claim.
50
+ const statusTagType = (status: string): 'green' | 'blue' | 'gray' | 'teal' => {
51
+ const s = (status ?? '').trim().toUpperCase();
52
+ if (s === 'PAID') return 'green';
53
+ if (s === 'AWAITING CLAIM') return 'blue';
54
+ if (s === 'POSTED' || s.includes('PARTIAL')) return 'teal';
55
+ return 'gray'; // PENDING and anything else
56
+ };
57
+
58
+ interface billDetailsProps {
59
+ patientBillDetails: PatientFacilityBillDetails[];
60
+ patientPayments: PatientPayment[];
61
+ amrsVisitDiagnosis: AmrsVisitDiagnosis[];
62
+ consentToken: string;
63
+ locationUuid: string;
64
+ billLoading?: boolean;
65
+ diagnosisLoading?: boolean;
66
+ /** Bumped by "Reload Bills"; clears the record of past auto-add attempts so a
67
+ reload retries any diagnosis that previously failed to reach the claim. */
68
+ refreshToken?: number;
69
+ }
70
+ const BillDetails: React.FC<billDetailsProps> = ({ patientBillDetails, patientPayments, amrsVisitDiagnosis, consentToken, locationUuid, billLoading, diagnosisLoading, refreshToken }) => {
71
+ const setDiagnosisInterventionCode = useMemo(()=>getConsultationBillIntervantionCode(),[patientBillDetails]);
72
+ const invalidateProviderClaimPreview = useInvalidateProviderClaimPreview();
73
+ const [selectedDiagnosis, setSelectedDiagnosis] = useState<AmrsVisitDiagnosis | null>(null);
74
+ const [showAddClaimDiagnosisModal, setShowAddClaimDiagnosisModal] = useState<boolean>(false);
75
+ // Per-diagnosis add progress. A diagnosis already in the claim isn't tracked here —
76
+ // that's read live from the claim preview below.
77
+ const [diagnosisAddState, setDiagnosisAddState] = useState<Record<string, 'adding' | 'error'>>({});
78
+ const autoAddAttempted = useRef<Set<string>>(new Set());
79
+
80
+ // The live claim, so we can tell which patient diagnoses are already on it. SWR
81
+ // shares this request with the Claim Details section, so it's not a second fetch.
82
+ const { claimVisit, isLoading: claimLoading } = useProviderClaimPreview(consentToken, locationUuid);
83
+ const claimDiagnosisCodes = useMemo(
84
+ () => new Set((claimVisit?.claim_diagnoses ?? []).map((cd) => cd.diagnosis_code).filter(Boolean)),
85
+ [claimVisit],
86
+ );
87
+ // Diagnoses and billing lines are the claim's content, so they follow the content
88
+ // window grouped in ../../claim-statuses: DRAFT, plus DRAFT_RESUBMIT once a claim has
89
+ // been pulled back to answer a payer clarification. Anything else — submitted,
90
+ // dispatched, closed — is read-only and the backend would refuse the write.
91
+ const isClaimDraft = canEditClaimContent(claimVisit?.workflow_state);
92
+
93
+ // Until the claim has actually arrived its state is unknown, and the permissive
94
+ // default above would offer actions that vanish the moment it resolves to SUBMITTED.
95
+ // Withhold them until we know. A bill carrying no consent token has no claim to wait
96
+ // on, so it isn't held back by this.
97
+ const claimPending = Boolean(consentToken) && (claimLoading || !claimVisit);
98
+ const canActOnClaim = !claimPending && isClaimDraft;
99
+
100
+ // Each diagnosis is auto-added at most once, so a failed attempt would otherwise stay
101
+ // failed for as long as this stays mounted. "Reload Bills" is an explicit ask for a
102
+ // fresh attempt: forget which ones were tried and drop the recorded errors, and the
103
+ // effect below picks them up again once the reloaded diagnoses arrive.
104
+ useEffect(() => {
105
+ if (refreshToken) {
106
+ autoAddAttempted.current.clear();
107
+ setDiagnosisAddState({});
108
+ }
109
+ }, [refreshToken]);
110
+
111
+ // On load, push any patient diagnosis that isn't on the claim yet — each attempted
112
+ // once. Failures surface a manual "Add to claim" button; successes refresh the claim
113
+ // so the card flips to "Added".
114
+ useEffect(() => {
115
+ if (!claimVisit || !isClaimDraft || !consentToken || !setDiagnosisInterventionCode) {
116
+ return;
117
+ }
118
+ (amrsVisitDiagnosis ?? []).forEach((d) => {
119
+ const key = diagnosisKey(d);
120
+ if (!d.icd11_code || claimDiagnosisCodes.has(d.icd11_code) || autoAddAttempted.current.has(key)) {
121
+ return;
122
+ }
123
+ autoAddAttempted.current.add(key);
124
+ setDiagnosisAddState((prev) => ({ ...prev, [key]: 'adding' }));
125
+ addClaimDiagnosis({
126
+ consentToken,
127
+ interventionCode: setDiagnosisInterventionCode,
128
+ locationUuid,
129
+ icdCode: d.icd11_code,
130
+ practitionerIdentificationNumber: d.practioner_nat_id,
131
+ practitionerIdentificationType: d.practitioner_identifier_type,
132
+ practitionerRegulationBody: d.practitioner_body,
133
+ })
134
+ .then((resp) => {
135
+ if (resp && resp['error']) {
136
+ setDiagnosisAddState((prev) => ({ ...prev, [key]: 'error' }));
137
+ } else {
138
+ setDiagnosisAddState((prev) => {
139
+ const next = { ...prev };
140
+ delete next[key];
141
+ return next;
142
+ });
143
+ invalidateProviderClaimPreview();
144
+ }
145
+ })
146
+ .catch(() => setDiagnosisAddState((prev) => ({ ...prev, [key]: 'error' })));
147
+ });
148
+ // eslint-disable-next-line react-hooks/exhaustive-deps
149
+ }, [claimVisit, isClaimDraft, amrsVisitDiagnosis, consentToken, locationUuid, setDiagnosisInterventionCode]);
150
+
151
+ function diagnosisState(d: AmrsVisitDiagnosis): DiagnosisState {
152
+ if (d.icd11_code && claimDiagnosisCodes.has(d.icd11_code)) {
153
+ return 'added';
154
+ }
155
+ if (!claimVisit) {
156
+ return 'checking';
157
+ }
158
+ // Only a draft claim can take a diagnosis — so neither the auto-add nor the manual
159
+ // "Add to claim" button is offered once the claim is submitted/authorised, even if
160
+ // an earlier draft-time attempt left an error recorded.
161
+ if (!isClaimDraft) {
162
+ return 'locked';
163
+ }
164
+ const tracked = diagnosisAddState[diagnosisKey(d)];
165
+ if (tracked === 'error') {
166
+ return 'error';
167
+ }
168
+ if (tracked === 'adding') {
169
+ return 'adding';
170
+ }
171
+ // Nothing to add with, or no intervention to file it under — offer the manual path.
172
+ if (!d.icd11_code || !setDiagnosisInterventionCode) {
173
+ return 'error';
174
+ }
175
+ return 'adding';
176
+ }
177
+
178
+ if (!patientBillDetails && !patientPayments) {
179
+ return <>No Data</>;
180
+ }
181
+ function handleAddClaimDiagnosis(diagnosis: AmrsVisitDiagnosis) {
182
+ // Only a draft claim accepts a diagnosis; the backend rejects the rest outright.
183
+ if (!isClaimDraft) {
184
+ return;
185
+ }
186
+ setSelectedDiagnosis(diagnosis);
187
+ setShowAddClaimDiagnosisModal(true);
188
+ }
189
+ function handleCloseClaimDiagnosisModal() {
190
+ setShowAddClaimDiagnosisModal(false);
191
+ }
192
+ function onClaimDiagnosisSuccess() {
193
+ handleCloseClaimDiagnosisModal();
194
+ invalidateProviderClaimPreview();
195
+ }
196
+ function handleBillItemPayment(patientBillDetail: PatientFacilityBillDetails){
197
+ if (!isClaimDraft) {
198
+ return;
199
+ }
200
+ launchWorkspace('bill-item-payment-workspace', {
201
+ billItem: patientBillDetail,
202
+ onPay: invalidateProviderClaimPreview,
203
+ });
204
+ }
205
+ function handleClaimLineAddition(patientBillDetail: PatientFacilityBillDetails){
206
+ if (!isClaimDraft) {
207
+ return;
208
+ }
209
+ launchWorkspace('add-claim-line-workspace', {
210
+ billItem: patientBillDetail,
211
+ locationUuid,
212
+ consentToken: consentToken || patientBillDetail.consent_token || '',
213
+ onSuccess: invalidateProviderClaimPreview,
214
+ });
215
+ }
216
+ function getConsultationBillIntervantionCode(){
217
+ if(!patientBillDetails || patientBillDetails.length === 0){
218
+ return '';
219
+ }
220
+ const consultationBill = patientBillDetails.find((b)=>{
221
+ return (b.billable_service ?? '').toLocaleLowerCase().trim().includes('consultation');
222
+ });
223
+ if(consultationBill){
224
+ return consultationBill.intervention_code;
225
+ }else{
226
+ return patientBillDetails[0].intervention_code ?? '';
227
+ }
228
+ }
229
+ // Every action on this page settles against a claim that is still being assembled, so
230
+ // all of them follow the one rule: offered while the claim is a draft, withdrawn once
231
+ // it has been submitted or closed and the backend will only refuse them.
232
+ function canPay(b: PatientFacilityBillDetails): boolean {
233
+ return canActOnClaim && b.payment_status !== 'PAID';
234
+ }
235
+ function canAddClaimLine(b: PatientFacilityBillDetails): boolean {
236
+ return canActOnClaim && Boolean(b.intervention_code) && b.has_claim_line === 0;
237
+ }
238
+ // SHA items aren't paid in cash — they're settled via the SHA claim. Default a
239
+ // sensible status when the backend leaves it blank.
240
+ function billItemStatus(b: PatientFacilityBillDetails): string {
241
+ if (b.payment_status && b.payment_status.trim()) {
242
+ return b.payment_status;
243
+ }
244
+ const payer = (b.payment_scheme ?? '').trim().toUpperCase();
245
+ if (payer === 'SHA') {
246
+ return 'AWAITING CLAIM';
247
+ }
248
+ return b.payment_status ?? '';
249
+ }
250
+ // A single flag saying where a diagnosis stands with the claim.
251
+ function diagnosisFlag(state: DiagnosisState): React.ReactNode {
252
+ if (state === 'added') {
253
+ return (
254
+ <Tag size="sm" type="green">
255
+ Added to claim
256
+ </Tag>
257
+ );
258
+ }
259
+ if (state === 'error') {
260
+ return (
261
+ <Tag size="sm" type="red">
262
+ Not added
263
+ </Tag>
264
+ );
265
+ }
266
+ if (state === 'locked') {
267
+ return (
268
+ <Tag size="sm" type="gray">
269
+ Not on claim
270
+ </Tag>
271
+ );
272
+ }
273
+ return (
274
+ <Tag size="sm" type="blue">
275
+ {state === 'checking' ? 'Checking…' : 'Adding…'}
276
+ </Tag>
277
+ );
278
+ }
279
+
280
+ // What the visit came to, and how much of it has been settled. The figures were only
281
+ // ever readable by adding the lines up by eye, which is what the summary does here.
282
+ const totalBilled = (patientBillDetails ?? []).reduce((sum, b) => sum + Number(b.item_total_price ?? 0), 0);
283
+ const totalPaid = (patientPayments ?? []).reduce((sum, p) => sum + Number(p.amount ?? 0), 0);
284
+ const balance = totalBilled - totalPaid;
285
+ // Every line item settled through the claim rather than at the cash point, so a
286
+ // balance here would be read as money the patient still owes.
287
+ const anyCashLine = (patientBillDetails ?? []).some(
288
+ (b) => (b.payment_scheme ?? '').trim().toUpperCase() !== 'SHA',
289
+ );
290
+ const showActionsColumn = (patientBillDetails ?? []).some((b) => canPay(b) || canAddClaimLine(b));
291
+
292
+ return (
293
+ <>
294
+ <div className={styles.billDetailsLayout}>
295
+ {/* The visit's money, up front: what was charged, what came in, what is left. */}
296
+ {billLoading ? null : (
297
+ <dl className={styles.summary}>
298
+ <div className={styles.summaryItem}>
299
+ <dt>Bill items</dt>
300
+ <dd>{patientBillDetails?.length ?? 0}</dd>
301
+ </div>
302
+ <div className={styles.summaryItem}>
303
+ <dt>Total billed</dt>
304
+ <dd>{money(totalBilled)}</dd>
305
+ </div>
306
+ <div className={styles.summaryItem}>
307
+ <dt>Paid</dt>
308
+ <dd>{money(totalPaid)}</dd>
309
+ </div>
310
+ {anyCashLine ? (
311
+ <div className={styles.summaryItem}>
312
+ <dt>Balance</dt>
313
+ <dd className={balance > 0 ? styles.summaryDue : styles.summaryClear}>{money(Math.max(0, balance))}</dd>
314
+ </div>
315
+ ) : null}
316
+ </dl>
317
+ )}
318
+
319
+ {/* Each category is its own section: one plain table, every field in a column,
320
+ with the actions that apply to a row at the end of it. */}
321
+ <section className={styles.billRow}>
322
+ <h6 className={styles.sectionTitle}>Bill items</h6>
323
+ {billLoading ? (
324
+ <DataTableSkeleton role="progressbar" showHeader={false} showToolbar={false} rowCount={3} columnCount={7} />
325
+ ) : (patientBillDetails ?? []).length === 0 ? (
326
+ <EmptyState message="No bill items for this patient." />
327
+ ) : (
328
+ <div className={styles.tableCard}>
329
+ <Table aria-label="bill items" size="sm" useZebraStyles>
330
+ <TableHead>
331
+ <TableRow>
332
+ <TableHeader className={styles.numCol}>#</TableHeader>
333
+ <TableHeader>Service</TableHeader>
334
+ <TableHeader>Service type</TableHeader>
335
+ <TableHeader>Payer</TableHeader>
336
+ <TableHeader className={styles.numeric}>Qty</TableHeader>
337
+ <TableHeader className={styles.numeric}>Unit price</TableHeader>
338
+ <TableHeader className={styles.numeric}>Total</TableHeader>
339
+ <TableHeader>Status</TableHeader>
340
+ {showActionsColumn ? <TableHeader>Actions</TableHeader> : null}
341
+ </TableRow>
342
+ </TableHead>
343
+ <TableBody>
344
+ {patientBillDetails.map((b, index) => (
345
+ <TableRow key={b.cashier_bill_line_item_uuid ?? b.bill_line_item_id ?? index}>
346
+ <TableCell className={styles.numCol}>{index + 1}</TableCell>
347
+ <TableCell>{billItemName(b)}</TableCell>
348
+ <TableCell>{dash(b.service_type)}</TableCell>
349
+ <TableCell>{dash(b.payment_scheme)}</TableCell>
350
+ <TableCell className={styles.numeric}>{b.item_quantity}</TableCell>
351
+ <TableCell className={styles.numeric}>{money(b.item_price)}</TableCell>
352
+ <TableCell className={styles.numeric}>{money(b.item_total_price)}</TableCell>
353
+ <TableCell>
354
+ {billItemStatus(b) ? (
355
+ <Tag size="sm" type={statusTagType(billItemStatus(b))}>
356
+ {toSentence(billItemStatus(b))}
357
+ </Tag>
358
+ ) : (
359
+ dash('')
360
+ )}
361
+ </TableCell>
362
+ {showActionsColumn ? (
363
+ <TableCell>
364
+ <div className={styles.rowActions}>
365
+ {canPay(b) && (
366
+ <Button kind="primary" size="sm" renderIcon={Money} onClick={() => handleBillItemPayment(b)}>
367
+ Pay
368
+ </Button>
369
+ )}
370
+ {canAddClaimLine(b) && (
371
+ <Button kind="tertiary" size="sm" renderIcon={Add} onClick={() => handleClaimLineAddition(b)}>
372
+ Add claim line
373
+ </Button>
374
+ )}
375
+ </div>
376
+ </TableCell>
377
+ ) : null}
378
+ </TableRow>
379
+ ))}
380
+ <TableRow className={styles.totalRow}>
381
+ <TableCell colSpan={6}>Total billed</TableCell>
382
+ <TableCell className={styles.numeric}>{money(totalBilled)}</TableCell>
383
+ <TableCell colSpan={showActionsColumn ? 2 : 1} />
384
+ </TableRow>
385
+ </TableBody>
386
+ </Table>
387
+ </div>
388
+ )}
389
+ </section>
390
+
391
+ <section className={styles.billRow}>
392
+ <h6 className={styles.sectionTitle}>Patient diagnosis</h6>
393
+ {diagnosisLoading ? (
394
+ <DataTableSkeleton role="progressbar" showHeader={false} showToolbar={false} rowCount={2} columnCount={6} />
395
+ ) : (amrsVisitDiagnosis ?? []).length === 0 ? (
396
+ <EmptyState message="No diagnosis recorded for this visit." />
397
+ ) : (
398
+ <div className={styles.tableCard}>
399
+ <Table aria-label="patient diagnosis" size="sm" useZebraStyles>
400
+ <TableHead>
401
+ <TableRow>
402
+ <TableHeader className={styles.numCol}>#</TableHeader>
403
+ <TableHeader>Encounter</TableHeader>
404
+ <TableHeader>Code</TableHeader>
405
+ <TableHeader>Coding system</TableHeader>
406
+ <TableHeader>Recorded</TableHeader>
407
+ <TableHeader>On claim</TableHeader>
408
+ <TableHeader>Action</TableHeader>
409
+ </TableRow>
410
+ </TableHead>
411
+ <TableBody>
412
+ {amrsVisitDiagnosis.map((d, index) => {
413
+ const state = diagnosisState(d);
414
+ return (
415
+ <TableRow key={diagnosisKey(d)}>
416
+ <TableCell className={styles.numCol}>{index + 1}</TableCell>
417
+ <TableCell>{dash(d.encounter_type)}</TableCell>
418
+ <TableCell>
419
+ {d.icd11_code ? (
420
+ <Tag size="sm" type="blue">
421
+ {d.icd11_code}
422
+ </Tag>
423
+ ) : (
424
+ dash(d.icd11_code)
425
+ )}
426
+ </TableCell>
427
+ <TableCell>{dash(d.concept_source_name)}</TableCell>
428
+ <TableCell>
429
+ {d.encounter_datetime ? formatDate(parseDate(d.encounter_datetime)) : dash('')}
430
+ </TableCell>
431
+ <TableCell>{diagnosisFlag(state)}</TableCell>
432
+ <TableCell>
433
+ {/* Every diagnosis is mirrored onto the claim automatically; the
434
+ button is the fallback for the ones that didn't make it. Only
435
+ 'error' qualifies, and only a draft claim can reach it — past
436
+ draft a diagnosis resolves to 'locked', where there is nothing
437
+ the user could do but be refused by the backend. */}
438
+ {state === 'error' ? (
439
+ <Button kind="tertiary" size="sm" renderIcon={Add} onClick={() => handleAddClaimDiagnosis(d)}>
440
+ Add to claim
441
+ </Button>
442
+ ) : (
443
+ dash('')
444
+ )}
445
+ </TableCell>
446
+ </TableRow>
447
+ );
448
+ })}
449
+ </TableBody>
450
+ </Table>
451
+ </div>
452
+ )}
453
+ </section>
454
+
455
+ <section className={styles.billRow}>
456
+ <h6 className={styles.sectionTitle}>Bill payments</h6>
457
+ {patientPayments.length === 0 ? (
458
+ <EmptyState message="No payments received for this visit." />
459
+ ) : (
460
+ <div className={styles.tableCard}>
461
+ <Table aria-label="bill payments" size="sm" useZebraStyles>
462
+ <TableHead>
463
+ <TableRow>
464
+ <TableHeader className={styles.numCol}>#</TableHeader>
465
+ <TableHeader>Payment type</TableHeader>
466
+ <TableHeader>Receipt</TableHeader>
467
+ <TableHeader className={styles.numeric}>Amount</TableHeader>
468
+ <TableHeader className={styles.numeric}>Amount tendered</TableHeader>
469
+ <TableHeader>Date / time</TableHeader>
470
+ </TableRow>
471
+ </TableHead>
472
+ <TableBody>
473
+ {patientPayments.map((p, index) => (
474
+ <TableRow key={p.cashier_bill_payment_uuid}>
475
+ <TableCell className={styles.numCol}>{index + 1}</TableCell>
476
+ <TableCell>{dash(p.payment_mode)}</TableCell>
477
+ <TableCell>{dash(p.receipt_number)}</TableCell>
478
+ <TableCell className={styles.numeric}>{money(p.amount)}</TableCell>
479
+ <TableCell className={styles.numeric}>{money(p.amount_tendered)}</TableCell>
480
+ <TableCell>{p.payment_time ? formatDate(parseDate(p.payment_time)) : dash('')}</TableCell>
481
+ </TableRow>
482
+ ))}
483
+ <TableRow className={styles.totalRow}>
484
+ <TableCell colSpan={3}>Total paid</TableCell>
485
+ <TableCell className={styles.numeric}>{money(totalPaid)}</TableCell>
486
+ <TableCell colSpan={2} />
487
+ </TableRow>
488
+ </TableBody>
489
+ </Table>
490
+ </div>
491
+ )}
492
+ </section>
493
+ </div>
494
+ {showAddClaimDiagnosisModal && selectedDiagnosis && (
495
+ <AddClaimDiagnosisModal
496
+ consentToken={consentToken}
497
+ amrsVisitDiagnosis={selectedDiagnosis}
498
+ locationUuid={locationUuid}
499
+ interventionCode={setDiagnosisInterventionCode}
500
+ open={showAddClaimDiagnosisModal}
501
+ onClose={handleCloseClaimDiagnosisModal}
502
+ onSuccess={onClaimDiagnosisSuccess}
503
+ />
504
+ )}
505
+ </>
506
+ );
507
+ };
508
+ export default BillDetails;
@@ -0,0 +1,30 @@
1
+ @use '@carbon/layout';
2
+ @use '@openmrs/esm-styleguide/src/vars' as *;
3
+
4
+ /* The payer tag and the reload button share the right of the breadcrumb row. */
5
+ .headerActions {
6
+ display: flex;
7
+ align-items: center;
8
+ gap: layout.$spacing-05;
9
+ flex-shrink: 0;
10
+ }
11
+
12
+ .payer {
13
+ display: inline-flex;
14
+ align-items: center;
15
+ gap: layout.$spacing-03;
16
+ min-width: 0;
17
+
18
+ /* Carbon tags carry their own margin, which would knock the tag out of line with the
19
+ scheme name beside it. */
20
+ :global(.cds--tag) {
21
+ margin: 0;
22
+ }
23
+ }
24
+
25
+ /* The scheme's full name, at a lower weight than the tag it qualifies. */
26
+ .payerScheme {
27
+ font-size: 0.8125rem;
28
+ color: $text-02;
29
+ overflow-wrap: anywhere;
30
+ }
@@ -0,0 +1,94 @@
1
+ import React, { useState } from 'react';
2
+ import { useNavigate, useParams } from 'react-router-dom';
3
+ import { Breadcrumb, BreadcrumbItem, Button, Tag } from '@carbon/react';
4
+ import { Renew } from '@carbon/react/icons';
5
+ import { useSession } from '@openmrs/esm-framework';
6
+ import PatientBillDetails from './patient-bill-details';
7
+ import EmptyState from '../shared/empty-state.component';
8
+ import { rememberedBillingDate } from '../billing-claims-dashboard.component';
9
+ import { type PaymentModeDescriptor } from './payment-mode';
10
+ import styles from '../facility-bills/facility-bills.component.scss';
11
+ import pageStyles from '../claim-visits/claim-visit-details/claim-details-page.component.scss';
12
+ import ownStyles from './bill-details-page.component.scss';
13
+
14
+ /**
15
+ * A patient's bill on its own page, addressed by their uuid.
16
+ *
17
+ * Opening a bill used to swap the Facility bills tab's contents in place, which left the
18
+ * bill unreachable by URL and made Back leave billing altogether. This is the same move
19
+ * the claim details page made, and deliberately the same shape — breadcrumb, reload,
20
+ * then the details — so a bill and a claim are read the same way.
21
+ *
22
+ * What differs between one bill and the next is who is paying for it. That is resolved by
23
+ * `paymentModeOf` rather than being decided here, so the cash, SHA, co-pay and other
24
+ * insurance cases are one page reading a descriptor rather than four pages.
25
+ */
26
+ const BillDetailsPage: React.FC = () => {
27
+ const { patientUuid } = useParams<{ patientUuid: string }>();
28
+ const navigate = useNavigate();
29
+ const session = useSession();
30
+ const locationUuid = session?.sessionLocation?.uuid ?? '';
31
+ const [refresh, setRefresh] = useState(0);
32
+ // What the bill turns out to be paid by, reported up from the details once its lines
33
+ // have loaded — the page can't know before then, since the payer is a property of the
34
+ // lines rather than of the patient.
35
+ const [mode, setMode] = useState<PaymentModeDescriptor | null>(null);
36
+
37
+ // Uuids are path-encoded on the way in; a raw one would break on any reserved character.
38
+ const uuid = decodeURIComponent(patientUuid ?? '').trim();
39
+ // The day the list was filtered to, so the bill opens on the same day it was picked
40
+ // from. A cold open — a pasted link — falls back to today inside the details.
41
+ const billingDate = rememberedBillingDate() ?? new Date().toLocaleDateString('en-CA');
42
+
43
+ return (
44
+ <div className={`${pageStyles.page} ${styles.detailsView}`}>
45
+ <div className={styles.detailsHeader}>
46
+ <Breadcrumb noTrailingSlash className={styles.breadcrumb}>
47
+ <BreadcrumbItem>
48
+ {/* Back to the dashboard, which reopens on the tab the bill was picked from. */}
49
+ <button type="button" className={styles.breadcrumbLink} onClick={() => navigate('/')}>
50
+ Facility bills
51
+ </button>
52
+ </BreadcrumbItem>
53
+ <BreadcrumbItem isCurrentPage>Bill details</BreadcrumbItem>
54
+ </Breadcrumb>
55
+ <div className={ownStyles.headerActions}>
56
+ {/* Who is paying, stated on the page itself rather than left to be inferred from
57
+ which figures happen to be filled in. */}
58
+ {mode ? (
59
+ <span className={ownStyles.payer}>
60
+ <Tag size="sm" type={mode.tagType}>
61
+ {mode.label}
62
+ </Tag>
63
+ {mode.schemeName && mode.schemeName.toUpperCase() !== mode.label.toUpperCase() ? (
64
+ <span className={ownStyles.payerScheme}>{mode.schemeName}</span>
65
+ ) : null}
66
+ </span>
67
+ ) : null}
68
+ <Button
69
+ kind="tertiary"
70
+ size="sm"
71
+ renderIcon={Renew}
72
+ iconDescription="Reload"
73
+ onClick={() => setRefresh((n) => n + 1)}
74
+ >
75
+ Reload Bills
76
+ </Button>
77
+ </div>
78
+ </div>
79
+ {uuid ? (
80
+ <PatientBillDetails
81
+ locationUuid={locationUuid}
82
+ billingDate={billingDate}
83
+ patientUuid={uuid}
84
+ refreshToken={refresh}
85
+ onPaymentModeResolved={setMode}
86
+ />
87
+ ) : (
88
+ <EmptyState message="No patient was named in this address." />
89
+ )}
90
+ </div>
91
+ );
92
+ };
93
+
94
+ export default BillDetailsPage;