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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (754) hide show
  1. package/README.md +19 -0
  2. package/dist/1149.js +1 -0
  3. package/dist/1149.js.map +1 -0
  4. package/dist/1197.js +1 -0
  5. package/dist/1277.js +1 -0
  6. package/dist/1277.js.map +1 -0
  7. package/dist/1362.js +1 -0
  8. package/dist/1362.js.map +1 -0
  9. package/dist/1551.js +1 -0
  10. package/dist/1551.js.map +1 -0
  11. package/dist/1556.js +1 -0
  12. package/dist/1556.js.map +1 -0
  13. package/dist/1925.js +1 -0
  14. package/dist/1925.js.map +1 -0
  15. package/dist/1927.js +1 -0
  16. package/dist/1927.js.map +1 -0
  17. package/dist/203.js +1 -0
  18. package/dist/203.js.map +1 -0
  19. package/dist/2054.js +1 -0
  20. package/dist/2054.js.map +1 -0
  21. package/dist/2093.js +1 -0
  22. package/dist/2093.js.map +1 -0
  23. package/dist/2177.js +2 -0
  24. package/dist/2177.js.map +1 -0
  25. package/dist/2200.js +1 -0
  26. package/dist/2200.js.map +1 -0
  27. package/dist/2230.js +1 -0
  28. package/dist/2230.js.map +1 -0
  29. package/dist/2493.js +1 -0
  30. package/dist/2493.js.map +1 -0
  31. package/dist/2914.js +1 -0
  32. package/dist/2914.js.map +1 -0
  33. package/dist/2936.js +1 -0
  34. package/dist/2936.js.map +1 -0
  35. package/dist/2988.js +1 -0
  36. package/dist/2988.js.map +1 -0
  37. package/dist/3041.js +1 -0
  38. package/dist/3041.js.map +1 -0
  39. package/dist/307.js +1 -0
  40. package/dist/307.js.map +1 -0
  41. package/dist/3099.js +1 -0
  42. package/dist/3184.js +2 -0
  43. package/dist/3184.js.map +1 -0
  44. package/dist/3202.js +1 -0
  45. package/dist/3202.js.map +1 -0
  46. package/dist/3222.js +1 -0
  47. package/dist/3222.js.map +1 -0
  48. package/dist/347.js +1 -0
  49. package/dist/347.js.map +1 -0
  50. package/dist/4003.js +1 -0
  51. package/dist/4003.js.map +1 -0
  52. package/dist/4008.js +1 -0
  53. package/dist/4008.js.map +1 -0
  54. package/dist/4055.js +1 -0
  55. package/dist/4205.js +1 -0
  56. package/dist/4205.js.map +1 -0
  57. package/dist/4225.js +1 -0
  58. package/dist/4225.js.map +1 -0
  59. package/dist/4231.js +1 -0
  60. package/dist/4231.js.map +1 -0
  61. package/dist/4300.js +1 -0
  62. package/dist/4335.js +1 -0
  63. package/dist/4353.js +1 -0
  64. package/dist/4353.js.map +1 -0
  65. package/dist/4431.js +1 -0
  66. package/dist/4431.js.map +1 -0
  67. package/dist/4454.js +1 -0
  68. package/dist/4454.js.map +1 -0
  69. package/dist/4457.js +2 -0
  70. package/dist/4457.js.LICENSE.txt +282 -0
  71. package/dist/4457.js.map +1 -0
  72. package/dist/446.js +1 -0
  73. package/dist/446.js.map +1 -0
  74. package/dist/4605.js +1 -0
  75. package/dist/4605.js.map +1 -0
  76. package/dist/4611.js +1 -0
  77. package/dist/4611.js.map +1 -0
  78. package/dist/4652.js +1 -0
  79. package/dist/4674.js +1 -0
  80. package/dist/4674.js.map +1 -0
  81. package/dist/4755.js +1 -0
  82. package/dist/4755.js.map +1 -0
  83. package/dist/4986.js +1 -0
  84. package/dist/4986.js.map +1 -0
  85. package/dist/5097.js +1 -0
  86. package/dist/5097.js.map +1 -0
  87. package/dist/5119.js +1 -0
  88. package/dist/5119.js.map +1 -0
  89. package/dist/5167.js +1 -0
  90. package/dist/5167.js.map +1 -0
  91. package/dist/5380.js +1 -0
  92. package/dist/5380.js.map +1 -0
  93. package/dist/5422.js +1 -0
  94. package/dist/5422.js.map +1 -0
  95. package/dist/5576.js +1 -0
  96. package/dist/5576.js.map +1 -0
  97. package/dist/5851.js +1 -0
  98. package/dist/5851.js.map +1 -0
  99. package/dist/5961.js +1 -0
  100. package/dist/5961.js.map +1 -0
  101. package/dist/6177.js +1 -0
  102. package/dist/6177.js.map +1 -0
  103. package/dist/6264.js +1 -0
  104. package/dist/6264.js.map +1 -0
  105. package/dist/6540.js +2 -0
  106. package/dist/6540.js.map +1 -0
  107. package/dist/6606.js +1 -0
  108. package/dist/6606.js.map +1 -0
  109. package/dist/6720.js +1 -0
  110. package/dist/6720.js.map +1 -0
  111. package/dist/6824.js +1 -0
  112. package/dist/6824.js.map +1 -0
  113. package/dist/6942.js +1 -0
  114. package/dist/6942.js.map +1 -0
  115. package/dist/71.js +1 -0
  116. package/dist/71.js.map +1 -0
  117. package/dist/7207.js +1 -0
  118. package/dist/7207.js.map +1 -0
  119. package/dist/7240.js +1 -0
  120. package/dist/7240.js.map +1 -0
  121. package/dist/7255.js +1 -0
  122. package/dist/7255.js.map +1 -0
  123. package/dist/7420.js +1 -0
  124. package/dist/7420.js.map +1 -0
  125. package/dist/7521.js +1 -0
  126. package/dist/7521.js.map +1 -0
  127. package/dist/7557.js +1 -0
  128. package/dist/7557.js.map +1 -0
  129. package/dist/7717.js +1 -0
  130. package/dist/7717.js.map +1 -0
  131. package/dist/7830.js +2 -0
  132. package/dist/7830.js.map +1 -0
  133. package/dist/7941.js +1 -0
  134. package/dist/7941.js.map +1 -0
  135. package/dist/8091.js +1 -0
  136. package/dist/8091.js.map +1 -0
  137. package/dist/810.js +1 -2
  138. package/dist/810.js.map +1 -1
  139. package/dist/8558.js +1 -0
  140. package/dist/8558.js.map +1 -0
  141. package/dist/8733.js +1 -0
  142. package/dist/8733.js.map +1 -0
  143. package/dist/874.js +1 -0
  144. package/dist/874.js.map +1 -0
  145. package/dist/8895.js +1 -0
  146. package/dist/8895.js.map +1 -0
  147. package/dist/9070.js +1 -0
  148. package/dist/9070.js.map +1 -0
  149. package/dist/9091.js +1 -0
  150. package/dist/9091.js.map +1 -0
  151. package/dist/9093.js +1 -0
  152. package/dist/9093.js.map +1 -0
  153. package/dist/9338.js +1 -0
  154. package/dist/9338.js.map +1 -0
  155. package/dist/9418.js +2 -0
  156. package/dist/9418.js.LICENSE.txt +1 -0
  157. package/dist/9418.js.map +1 -0
  158. package/dist/9428.js +1 -0
  159. package/dist/9428.js.map +1 -0
  160. package/dist/9583.js +2 -0
  161. package/dist/9583.js.map +1 -0
  162. package/dist/esm-dha-workflow-app.js +1 -1
  163. package/dist/esm-dha-workflow-app.js.buildmanifest.json +1627 -214
  164. package/dist/esm-dha-workflow-app.js.map +1 -1
  165. package/dist/main.js +1 -1
  166. package/dist/main.js.map +1 -1
  167. package/dist/routes.json +1 -1
  168. package/local-config.json +5 -0
  169. package/package.json +16 -6
  170. package/src/admissions/admission-request-list/admission-request-list.scss +0 -0
  171. package/src/admissions/admission-request-list/admission-request-list.tsx +263 -0
  172. package/src/admissions/admissions-dashboard.component.scss +15 -0
  173. package/src/admissions/admissions-dashboard.component.tsx +277 -0
  174. package/src/admissions/admissions.resource.ts +233 -0
  175. package/src/admissions/admitted-list/admitted-patients-list.tsx +206 -0
  176. package/src/admissions/awaiting-discharge-list/awaiting-discharge-list.tsx +197 -0
  177. package/src/admissions/bed-assigment-request/bed-assignment-request-list.tsx +134 -0
  178. package/src/admissions/constants/index.ts +33 -0
  179. package/src/admissions/discharged-list/discharged-list.scss +0 -0
  180. package/src/admissions/discharged-list/discharged-list.tsx +67 -0
  181. package/src/admissions/form-entry-workspace/form-entry-workspace.tsx +62 -0
  182. package/src/admissions/inpatient/admission-history/patient-admission-history.tsx +76 -0
  183. package/src/admissions/inpatient/admission-requests/patient-admission-requests.scss +19 -0
  184. package/src/admissions/inpatient/admission-requests/patient-admission-requests.tsx +72 -0
  185. package/src/admissions/inpatient/inpatient-admissions.component.scss +7 -0
  186. package/src/admissions/inpatient/inpatient-admissions.component.tsx +46 -0
  187. package/src/admissions/modal/add-bill-items/add-bill-items.modal.scss +17 -0
  188. package/src/admissions/modal/add-bill-items/add-bill-items.modal.tsx +233 -0
  189. package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.scss +23 -0
  190. package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.tsx +156 -0
  191. package/src/admissions/modal/admit-patient/admit-patient.modal.scss +0 -0
  192. package/src/admissions/modal/admit-patient/admit-patient.modal.tsx +111 -0
  193. package/src/admissions/modal/bed-swap/bed-swap.modal.scss +0 -0
  194. package/src/admissions/modal/bed-swap/bed-swap.modal.tsx +102 -0
  195. package/src/admissions/modal/cancel-admission-request/cancel-admission-request.scss +11 -0
  196. package/src/admissions/modal/cancel-admission-request/cancel-admission-request.tsx +105 -0
  197. package/src/admissions/modal/discharge/discharge-patient.modal.scss +13 -0
  198. package/src/admissions/modal/discharge/discharge-patient.modal.tsx +86 -0
  199. package/src/admissions/types/index.ts +263 -0
  200. package/src/appointments/appointments.component.scss +6 -0
  201. package/src/appointments/appointments.component.tsx +8 -1
  202. package/src/billing/api/billing.api.ts +139 -0
  203. package/src/billing/billing-claims.resource.ts +900 -0
  204. package/src/billing/billing-dashboard-link.component.tsx +31 -0
  205. package/src/billing/billing-dashboard-reset.ts +27 -0
  206. package/src/billing/billing-root.tsx +42 -0
  207. package/src/billing/dashboard/billingDashboard.component.scss +0 -0
  208. package/src/billing/dashboard/billingDashboard.component.tsx +25 -0
  209. package/src/billing/dashboard/v2/active-visits/active-visits.component.tsx +257 -0
  210. package/src/billing/dashboard/v2/active-visits/active-visits.resource.ts +85 -0
  211. package/src/billing/dashboard/v2/active-visits/active-visits.scss +15 -0
  212. package/src/billing/dashboard/v2/active-visits.component.tsx +102 -0
  213. package/src/billing/dashboard/v2/admissions/admission-requests-tab.component.tsx +79 -0
  214. package/src/billing/dashboard/v2/billing-claims-dashboard.component.scss +209 -0
  215. package/src/billing/dashboard/v2/billing-claims-dashboard.component.tsx +347 -0
  216. package/src/billing/dashboard/v2/cash-checklist/bill-document.component.scss +90 -0
  217. package/src/billing/dashboard/v2/cash-checklist/bill-document.component.tsx +101 -0
  218. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.scss +199 -0
  219. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.tsx +361 -0
  220. package/src/billing/dashboard/v2/cash-checklist/cash-checklist.resource.ts +239 -0
  221. package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.scss +246 -0
  222. package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.tsx +182 -0
  223. package/src/billing/dashboard/v2/claim-statuses.ts +143 -0
  224. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
  225. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +35 -0
  226. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.scss +67 -0
  227. package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.tsx +90 -0
  228. package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.scss +28 -0
  229. package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.tsx +36 -0
  230. package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.scss +119 -0
  231. package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.tsx +198 -0
  232. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.scss +5 -0
  233. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +160 -0
  234. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.scss +105 -0
  235. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.tsx +184 -0
  236. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.scss +161 -0
  237. package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.tsx +328 -0
  238. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +96 -0
  239. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-document.component.tsx +236 -0
  240. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.scss +98 -0
  241. package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.tsx +292 -0
  242. package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +133 -0
  243. package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +217 -0
  244. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-by-token.component.tsx +150 -0
  245. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.scss +13 -0
  246. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.tsx +116 -0
  247. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.scss +338 -0
  248. package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.tsx +616 -0
  249. package/src/billing/dashboard/v2/claim-visits/claim-visits.component.scss +5 -0
  250. package/src/billing/dashboard/v2/claim-visits/claim-visits.component.tsx +133 -0
  251. package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
  252. package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
  253. package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +17 -0
  254. package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +56 -0
  255. package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
  256. package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
  257. package/src/billing/dashboard/v2/claim-visits/modal/submit-claim/submit-claim.modal.tsx +204 -0
  258. package/src/billing/dashboard/v2/claim-visits/shared/_empty-state.scss +28 -0
  259. package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.scss +298 -0
  260. package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.tsx +252 -0
  261. package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.scss +42 -0
  262. package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.tsx +54 -0
  263. package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.scss +61 -0
  264. package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.tsx +150 -0
  265. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
  266. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
  267. package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.tsx +648 -0
  268. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.scss +595 -0
  269. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.tsx +810 -0
  270. package/src/billing/dashboard/v2/claim-workspace/claim-workspace.resource.ts +282 -0
  271. package/src/billing/dashboard/v2/claims-accounting/bill-utils.ts +134 -0
  272. package/src/billing/dashboard/v2/claims-accounting/claim-detail.component.tsx +346 -0
  273. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.scss +546 -0
  274. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.tsx +206 -0
  275. package/src/billing/dashboard/v2/claims-accounting/claims-accounting.resource.ts +337 -0
  276. package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.scss +90 -0
  277. package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.tsx +90 -0
  278. package/src/billing/dashboard/v2/claims-accounting/remittances.component.tsx +169 -0
  279. package/src/billing/dashboard/v2/claims-accounting/remittances.resource.ts +46 -0
  280. package/src/billing/dashboard/v2/claims-accounting/status-meta.ts +25 -0
  281. package/src/billing/dashboard/v2/clearance/cash-patients.scss +18 -0
  282. package/src/billing/dashboard/v2/clearance/cash.component.tsx +149 -0
  283. package/src/billing/dashboard/v2/clearance/clearance.component.scss +84 -0
  284. package/src/billing/dashboard/v2/clearance/clearance.component.tsx +225 -0
  285. package/src/billing/dashboard/v2/clearance/pay-cash.component.tsx +176 -0
  286. package/src/billing/dashboard/v2/clearance/pay-cash.scss +28 -0
  287. package/src/billing/dashboard/v2/clearance/prepaid-services.component.tsx +112 -0
  288. package/src/billing/dashboard/v2/facility-bills/claim-status.ts +249 -0
  289. package/src/billing/dashboard/v2/facility-bills/facility-bills.component.scss +140 -0
  290. package/src/billing/dashboard/v2/facility-bills/facility-bills.component.tsx +687 -0
  291. package/src/billing/dashboard/v2/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
  292. package/src/billing/dashboard/v2/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +267 -0
  293. package/src/billing/dashboard/v2/facility-bills/preauths.component.tsx +124 -0
  294. package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.scss +22 -0
  295. package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.tsx +389 -0
  296. package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.scss +0 -0
  297. package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.tsx +0 -0
  298. package/src/billing/dashboard/v2/new-facility-bills/bills-table.component.tsx +78 -0
  299. package/src/billing/dashboard/v2/new-facility-bills/bills-table.scss +18 -0
  300. package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.component.tsx +64 -0
  301. package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.scss +146 -0
  302. package/src/billing/dashboard/v2/patient-bill-details/attachments/add-attachments.component.tsx +223 -0
  303. package/src/billing/dashboard/v2/patient-bill-details/attachments/attachment.component.tsx +157 -0
  304. package/src/billing/dashboard/v2/patient-bill-details/attachments/attachments.scss +92 -0
  305. package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
  306. package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.tsx +326 -0
  307. package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
  308. package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +269 -0
  309. package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
  310. package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +124 -0
  311. package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.component.tsx +152 -0
  312. package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.scss +225 -0
  313. package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
  314. package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +173 -0
  315. package/src/billing/dashboard/v2/patient-bill-details/attachments/generate-attachments.component.tsx +360 -0
  316. package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.component.tsx +151 -0
  317. package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.scss +225 -0
  318. package/src/billing/dashboard/v2/patient-bill-details/attachments/type.ts +44 -0
  319. package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.scss +107 -0
  320. package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.tsx +508 -0
  321. package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.scss +30 -0
  322. package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.tsx +94 -0
  323. package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.scss +89 -0
  324. package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.tsx +53 -0
  325. package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.scss +32 -0
  326. package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.tsx +215 -0
  327. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
  328. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
  329. package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +186 -0
  330. package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.scss +153 -0
  331. package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.tsx +458 -0
  332. package/src/billing/dashboard/v2/patient-bill-details/payment-mode.ts +124 -0
  333. package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.scss +27 -0
  334. package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.tsx +222 -0
  335. package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.scss +27 -0
  336. package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.tsx +109 -0
  337. package/src/billing/dashboard/v2/preauth/preauth-attachments.component.tsx +389 -0
  338. package/src/billing/dashboard/v2/preauth/preauth-list.component.scss +38 -0
  339. package/src/billing/dashboard/v2/preauth/preauth-list.component.tsx +226 -0
  340. package/src/billing/dashboard/v2/preauth/preauth-status-tag.component.tsx +75 -0
  341. package/src/billing/dashboard/v2/preauth/preauth-typed-fields.md +125 -0
  342. package/src/billing/dashboard/v2/preauth/preauth.resource.ts +1067 -0
  343. package/src/billing/dashboard/v2/preauth/preauth.workspace.scss +91 -0
  344. package/src/billing/dashboard/v2/preauth/preauth.workspace.tsx +1802 -0
  345. package/src/billing/dashboard/v2/preauth/preauthorizations-tab.component.tsx +45 -0
  346. package/src/billing/dashboard/v2/sha-claims/sha-claims-table.component.tsx +36 -0
  347. package/src/billing/dashboard/v2/sha-claims/sha-claims.component.tsx +60 -0
  348. package/src/billing/dashboard/v2/sha-claims/sha-claims.scss +8 -0
  349. package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.scss +17 -0
  350. package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.tsx +15 -0
  351. package/src/billing/dashboard/v2/shared/empty-state.component.scss +24 -0
  352. package/src/billing/dashboard/v2/shared/empty-state.component.tsx +13 -0
  353. package/src/billing/dashboard/v2/shared/scroll-to-top.component.scss +54 -0
  354. package/src/billing/dashboard/v2/shared/scroll-to-top.component.tsx +54 -0
  355. package/src/billing/dashboard/v2/shared/table-toolbar.component.scss +77 -0
  356. package/src/billing/dashboard/v2/shared/table-toolbar.component.tsx +48 -0
  357. package/src/billing/dashboard/v2/types/index.ts +507 -0
  358. package/src/billing/dashboard/v3/active-visits/active-visits.component.tsx +256 -0
  359. package/src/billing/dashboard/v3/active-visits/active-visits.resource.ts +57 -0
  360. package/src/billing/dashboard/v3/active-visits/active-visits.scss +15 -0
  361. package/src/billing/dashboard/v3/cash-checklist/bill-document.component.scss +90 -0
  362. package/src/billing/dashboard/v3/cash-checklist/bill-document.component.tsx +101 -0
  363. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.scss +199 -0
  364. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.tsx +361 -0
  365. package/src/billing/dashboard/v3/cash-checklist/cash-checklist.resource.ts +240 -0
  366. package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.scss +246 -0
  367. package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.tsx +182 -0
  368. package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
  369. package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +44 -0
  370. package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.scss +5 -0
  371. package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.tsx +42 -0
  372. package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.scss +10 -0
  373. package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.tsx +25 -0
  374. package/src/billing/dashboard/v3/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +223 -0
  375. package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.scss +6 -0
  376. package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +85 -0
  377. package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +0 -0
  378. package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +109 -0
  379. package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.scss +97 -0
  380. package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.tsx +346 -0
  381. package/src/billing/dashboard/v3/claim-visits/claim-visits.component.scss +5 -0
  382. package/src/billing/dashboard/v3/claim-visits/claim-visits.component.tsx +139 -0
  383. package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
  384. package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
  385. package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.scss +7 -0
  386. package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.tsx +35 -0
  387. package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +6 -0
  388. package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +33 -0
  389. package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
  390. package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
  391. package/src/billing/dashboard/v3/claim-visits/modal/submit-claim/submit-claim.modal.tsx +204 -0
  392. package/src/billing/dashboard/v3/claim-visits/payer-preview/index.scss +140 -0
  393. package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-tile.component.tsx +55 -0
  394. package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-workspace.component.tsx +157 -0
  395. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-doctors.component.tsx +54 -0
  396. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-lines.component.tsx +48 -0
  397. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-notes.component.tsx +47 -0
  398. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-diagnoses.component.tsx +44 -0
  399. package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-interventions.component.tsx +44 -0
  400. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
  401. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
  402. package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.tsx +648 -0
  403. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.scss +595 -0
  404. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.tsx +810 -0
  405. package/src/billing/dashboard/v3/claim-workspace/claim-workspace.resource.ts +282 -0
  406. package/src/billing/dashboard/v3/claims-accounting/bill-utils.ts +134 -0
  407. package/src/billing/dashboard/v3/claims-accounting/claim-detail.component.tsx +346 -0
  408. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.scss +546 -0
  409. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.tsx +206 -0
  410. package/src/billing/dashboard/v3/claims-accounting/claims-accounting.resource.ts +337 -0
  411. package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.scss +90 -0
  412. package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.tsx +90 -0
  413. package/src/billing/dashboard/v3/claims-accounting/remittances.component.tsx +169 -0
  414. package/src/billing/dashboard/v3/claims-accounting/remittances.resource.ts +46 -0
  415. package/src/billing/dashboard/v3/claims-accounting/status-meta.ts +25 -0
  416. package/src/billing/dashboard/v3/clearance/clearance.component.scss +100 -0
  417. package/src/billing/dashboard/v3/clearance/clearance.component.tsx +0 -0
  418. package/src/billing/dashboard/v3/clearance/prepaid-services.component.tsx +112 -0
  419. package/src/billing/dashboard/v3/facility-bills/claim-status.ts +243 -0
  420. package/src/billing/dashboard/v3/facility-bills/facility-bills.component.scss +9 -0
  421. package/src/billing/dashboard/v3/facility-bills/facility-bills.component.tsx +172 -0
  422. package/src/billing/dashboard/v3/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
  423. package/src/billing/dashboard/v3/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +232 -0
  424. package/src/billing/dashboard/v3/facility-bills/preauths.component.tsx +124 -0
  425. package/src/billing/dashboard/v3/patient-bill-details/attachments/add-attachments.component.tsx +223 -0
  426. package/src/billing/dashboard/v3/patient-bill-details/attachments/attachment.component.tsx +157 -0
  427. package/src/billing/dashboard/v3/patient-bill-details/attachments/attachments.scss +92 -0
  428. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary-helper.ts +58 -0
  429. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
  430. package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.tsx +273 -0
  431. package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
  432. package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +314 -0
  433. package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
  434. package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +126 -0
  435. package/src/billing/dashboard/v3/patient-bill-details/attachments/final-bill.component.tsx +75 -0
  436. package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
  437. package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +253 -0
  438. package/src/billing/dashboard/v3/patient-bill-details/attachments/generate-attachments.component.tsx +343 -0
  439. package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.component.tsx +150 -0
  440. package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.scss +225 -0
  441. package/src/billing/dashboard/v3/patient-bill-details/attachments/type.ts +259 -0
  442. package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.scss +13 -0
  443. package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.tsx +235 -0
  444. package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.scss +0 -0
  445. package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.tsx +69 -0
  446. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
  447. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
  448. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.scss +14 -0
  449. package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +111 -0
  450. package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.scss +6 -0
  451. package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.tsx +139 -0
  452. package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.scss +85 -0
  453. package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.tsx +342 -0
  454. package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.scss +0 -0
  455. package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.tsx +92 -0
  456. package/src/billing/dashboard/v3/preauth/preauth-attachments.component.tsx +389 -0
  457. package/src/billing/dashboard/v3/preauth/preauth-list.component.scss +34 -0
  458. package/src/billing/dashboard/v3/preauth/preauth-list.component.tsx +281 -0
  459. package/src/billing/dashboard/v3/preauth/preauth-status-tag.component.tsx +75 -0
  460. package/src/billing/dashboard/v3/preauth/preauth-typed-fields.md +125 -0
  461. package/src/billing/dashboard/v3/preauth/preauth.resource.ts +1072 -0
  462. package/src/billing/dashboard/v3/preauth/preauth.workspace.scss +91 -0
  463. package/src/billing/dashboard/v3/preauth/preauth.workspace.tsx +1806 -0
  464. package/src/billing/dashboard/v3/preauth/preauthorizations-tab.component.tsx +45 -0
  465. package/src/billing/dashboard/v3/shared/empty-state.component.scss +25 -0
  466. package/src/billing/dashboard/v3/shared/empty-state.component.tsx +13 -0
  467. package/src/billing/dashboard/v3/shared/table-toolbar.component.scss +64 -0
  468. package/src/billing/dashboard/v3/shared/table-toolbar.component.tsx +48 -0
  469. package/src/billing/dashboard/v3/types/index.ts +381 -0
  470. package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.extension.tsx +55 -0
  471. package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.scss +16 -0
  472. package/src/billing/extensions/visit-billing/visit-billing.extension.scss +0 -0
  473. package/src/billing/extensions/visit-billing/visit-billing.extension.tsx +509 -0
  474. package/src/billing/invoice/bill.resource.ts +47 -0
  475. package/src/billing/invoice/invoice-header/header-card/header-card.scss +17 -0
  476. package/src/billing/invoice/invoice-header/header-card/header-card.tsx +21 -0
  477. package/src/billing/invoice/invoice.scss +113 -0
  478. package/src/billing/invoice/invoice.tsx +1441 -0
  479. package/src/billing/invoice/line-items/line-items.scss +0 -0
  480. package/src/billing/invoice/line-items/line-items.tsx +120 -0
  481. package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.scss +23 -0
  482. package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.tsx +114 -0
  483. package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.scss +0 -0
  484. package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.tsx +122 -0
  485. package/src/billing/invoice/payment-details/payment-details.scss +0 -0
  486. package/src/billing/invoice/payment-details/payment-details.tsx +43 -0
  487. package/src/billing/invoice/print-invoice/print-receipt.component.tsx +44 -0
  488. package/src/billing/invoice/print-invoice/print-receipt.scss +14 -0
  489. package/src/billing/maternity-discharge.resource.ts +21 -0
  490. package/src/billing/types/index.ts +354 -0
  491. package/src/billing/utils/index.ts +17 -0
  492. package/src/billing/widgets/billingTotalsRow.component.scss +0 -0
  493. package/src/billing/widgets/billingTotalsRow.component.tsx +712 -0
  494. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.resource.ts +130 -0
  495. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.scss +58 -0
  496. package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.workspace.tsx +645 -0
  497. package/src/billing/workspaces/create-order-bill-form-workspace/schema.ts +12 -0
  498. package/src/bookings/bookings.component.scss +7 -0
  499. package/src/bookings/bookings.component.tsx +35 -0
  500. package/src/bookings/daily/daily-bookings.resource.ts +2 -1
  501. package/src/case-summary/case-summary.extension.scss +13 -0
  502. package/src/case-summary/case-summary.extension.tsx +40 -0
  503. package/src/case-summary/case-summary.resource.test.ts +69 -0
  504. package/src/case-summary/case-summary.resource.ts +52 -0
  505. package/src/case-summary/components/case-summary-printable.component.scss +174 -0
  506. package/src/case-summary/components/case-summary-printable.component.tsx +288 -0
  507. package/src/case-summary/components/case-summary-printable.utils.ts +51 -0
  508. package/src/case-summary/types/case-summary.types.ts +152 -0
  509. package/src/claims/claims.component.scss +70 -0
  510. package/src/claims/claims.component.tsx +713 -0
  511. package/src/claims/claims.resource.ts +1274 -0
  512. package/src/claims/index.ts +340 -0
  513. package/src/claims/interventions.resource.ts +131 -0
  514. package/src/claims/utils.ts +64 -0
  515. package/src/config-schema.ts +119 -1
  516. package/src/context/patient-context.tsx +27 -0
  517. package/src/createDashboardLink.tsx +9 -0
  518. package/src/dashboard/charts/chart.component.scss +24 -0
  519. package/src/dashboard/charts/chart.component.tsx +56 -0
  520. package/src/dashboard/dashboard.component.scss +48 -3
  521. package/src/dashboard/dashboard.component.tsx +26 -36
  522. package/src/dashboard/overview/overview.component.scss +40 -59
  523. package/src/dashboard/overview/overview.component.tsx +53 -41
  524. package/src/dashboard-meta/accounting-dashboard.meta.ts +6 -0
  525. package/src/dashboard-meta/admissions-dashboard.meta.ts +6 -0
  526. package/src/dashboard-meta/billing-dashboard.meta.ts +6 -0
  527. package/src/dashboard-meta/bookings-dashboard.meta.ts +6 -0
  528. package/src/dashboard-meta/case-summary.meta.ts +6 -0
  529. package/src/dashboard-meta/consultation-dashboard.meta.ts +6 -0
  530. package/src/dashboard-meta/dha-workflow-dashboard.meta.ts +6 -0
  531. package/src/dashboard-meta/inpatient-admissions.meta.ts +6 -0
  532. package/src/dashboard-meta/maternity-dashboard.meta.ts +6 -0
  533. package/src/dashboard-meta/mch-dashboard.meta.ts +6 -0
  534. package/src/dashboard-meta/pharmacy-dashboard.meta.ts +6 -0
  535. package/src/dashboard-meta/queue-dashboard.meta.ts +6 -0
  536. package/src/dashboard-meta/registers-dashboard.meta.ts +6 -0
  537. package/src/dashboard-meta/registry-dashboard.meta.ts +6 -0
  538. package/src/dashboard-meta/service-queue-admin.meta.ts +6 -0
  539. package/src/dashboard-meta/specialized-clinics-dashboard.meta.ts +6 -0
  540. package/src/dashboard-meta/triage-dashboard.meta.ts +6 -0
  541. package/src/index.ts +177 -6
  542. package/src/mnch/maternity/maternity-queues.component.scss +7 -0
  543. package/src/mnch/maternity/maternity-queues.component.tsx +32 -0
  544. package/src/mnch/maternity/queues/triage/maternity-triage.tsx +15 -0
  545. package/src/mnch/mch/mch-queues.component.scss +10 -0
  546. package/src/mnch/mch/mch-queues.component.tsx +36 -0
  547. package/src/mnch/mch/queues/consultation/mch-consultation.tsx +18 -0
  548. package/src/mnch/mch/queues/triage/mch-triage.tsx +15 -0
  549. package/src/mnch/mnch-root.tsx +17 -0
  550. package/src/mortuary/mortuary.component.tsx +13 -0
  551. package/src/pharmacy/pharmacy.component.scss +16 -0
  552. package/src/pharmacy/pharmacy.component.tsx +11 -6
  553. package/src/registers/registers.component.tsx +8 -0
  554. package/src/registry/drawer/emr-compare.component.scss +263 -0
  555. package/src/registry/drawer/emr-compare.component.tsx +302 -0
  556. package/src/registry/drawer/emr-compare.resource.ts +181 -0
  557. package/src/registry/drawer/emr-create-preview.component.tsx +123 -0
  558. package/src/registry/drawer/otp-verification-step.component.tsx +398 -0
  559. package/src/registry/drawer/pomsf-balance.util.test.ts +177 -0
  560. package/src/registry/drawer/pomsf-balance.util.ts +79 -0
  561. package/src/registry/drawer/verification.resource.ts +60 -0
  562. package/src/registry/drawer/workflow-drawer.component.scss +1242 -0
  563. package/src/registry/drawer/workflow-drawer.component.tsx +1476 -0
  564. package/src/registry/eligibility/eligibility-details/eligibility-details.scss +38 -0
  565. package/src/registry/eligibility/eligibility-details/eligibility-details.tsx +101 -0
  566. package/src/registry/eligibility/eliigibility-tags/eligibility-tags.scss +16 -0
  567. package/src/registry/eligibility/eliigibility-tags/eligibility-tags.tsx +120 -0
  568. package/src/registry/eligibility/modal/eligibility-details.modal.scss +0 -0
  569. package/src/registry/eligibility/modal/eligibility-details.modal.tsx +45 -0
  570. package/src/registry/hie.resource.ts +408 -0
  571. package/src/registry/hie.types.ts +57 -0
  572. package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.scss +277 -0
  573. package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.tsx +218 -0
  574. package/src/registry/modal/biometrics-verification-modal/type.ts +39 -0
  575. package/src/registry/modal/client-details-modal/client-details-modal.tsx +65 -29
  576. package/src/registry/modal/otp-modal/otp-whitlisting-modal.component.tsx +809 -0
  577. package/src/registry/modal/otp-modal/otp-whitlisting-modal.scss +354 -0
  578. package/src/registry/modal/otp-modal/otp-whitlisting.scss +0 -0
  579. package/src/registry/modal/otp-verification-modal/claims-consent.scss +72 -0
  580. package/src/registry/modal/otp-verification-modal/claims-consent.tsx +135 -0
  581. package/src/registry/modal/otp-verification-modal/extension/claims-consent.extension.tsx +124 -0
  582. package/src/registry/modal/otp-verification-modal/otp-verification-modal.scss +30 -0
  583. package/src/registry/modal/otp-verification-modal/otp-verification-modal.tsx +154 -54
  584. package/src/registry/modal/send-to-triage/payment-details.tsx +120 -0
  585. package/src/registry/modal/send-to-triage/payment-method.component.tsx +54 -0
  586. package/src/registry/modal/send-to-triage/send-to-queue.modal.tsx +980 -0
  587. package/src/registry/modal/send-to-triage/send-to-triage.modal.scss +156 -3
  588. package/src/registry/modal/send-to-triage/send-to-triage.modal.tsx +1101 -131
  589. package/src/registry/modal/start-patient-visit/start-patient-visit.modal.scss +34 -0
  590. package/src/registry/modal/start-patient-visit/start-patient-visit.modal.tsx +231 -0
  591. package/src/registry/payment-details/payment-options/payment-options.scss +13 -0
  592. package/src/registry/payment-details/payment-options/payment-options.tsx +61 -14
  593. package/src/registry/registration-list/registration-list.component.scss +32 -0
  594. package/src/registry/registration-list/registration-list.component.tsx +103 -0
  595. package/src/registry/registry-entry.tsx +11 -0
  596. package/src/registry/registry.component.scss +402 -78
  597. package/src/registry/registry.component.tsx +547 -221
  598. package/src/registry/registry.resource.ts +22 -3
  599. package/src/registry/types/index.ts +118 -9
  600. package/src/registry/utils/error-handler.ts +54 -0
  601. package/src/registry/utils/format-dependant-display-data.ts +1 -1
  602. package/src/registry/utils/hie-client-adapter.ts +6 -3
  603. package/src/registry/utils/mask-data.ts +40 -0
  604. package/src/registry/utils/phone-number-formatter.ts +11 -0
  605. package/src/resources/dashboard.resource.ts +20 -0
  606. package/src/resources/identifier-types.ts +2 -0
  607. package/src/resources/patient-resource.ts +6 -1
  608. package/src/resources/queue.resource.ts +24 -1
  609. package/src/resources/superset.resource.ts +21 -0
  610. package/src/resources/visit.resource.ts +19 -1
  611. package/src/root.component.tsx +8 -5
  612. package/src/routes.json +417 -23
  613. package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.scss +31 -0
  614. package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.tsx +153 -0
  615. package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.scss +0 -0
  616. package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.tsx +182 -0
  617. package/src/service-queues/admin/queue/queue-list/queue-list.scss +33 -0
  618. package/src/service-queues/admin/queue/queue-list/queue-list.tsx +113 -0
  619. package/src/service-queues/admin/queue-entry/queue-entry-list.component.scss +6 -0
  620. package/src/service-queues/admin/queue-entry/queue-entry-list.component.tsx +137 -0
  621. package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.scss +31 -0
  622. package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.tsx +137 -0
  623. package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.scss +0 -0
  624. package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.tsx +146 -0
  625. package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.scss +22 -0
  626. package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.tsx +120 -0
  627. package/src/service-queues/admin/service-queue-admin-dashboard.component.scss +6 -0
  628. package/src/service-queues/admin/service-queue-admin-dashboard.component.tsx +34 -0
  629. package/src/service-queues/consultation/consultation.component.tsx +9 -0
  630. package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.scss +30 -0
  631. package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.tsx +108 -0
  632. package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.scss +26 -0
  633. package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.tsx +110 -0
  634. package/src/service-queues/modals/move/move-patient.component.scss +1 -1
  635. package/src/service-queues/modals/move/move-patient.component.tsx +31 -17
  636. package/src/service-queues/queue-list/check-in.service.ts +26 -0
  637. package/src/service-queues/queue-list/queue-list.component.scss +37 -0
  638. package/src/service-queues/queue-list/queue-list.component.tsx +256 -56
  639. package/src/service-queues/service-queue/service-queue.component.tsx +151 -8
  640. package/src/service-queues/service-queue/stats/stat-details/stat-details.component.scss +5 -0
  641. package/src/service-queues/service-queue/stats/stat-details/stat-details.component.tsx +36 -7
  642. package/src/service-queues/service-queue.tsx +22 -16
  643. package/src/service-queues/service-queues.resource.ts +197 -1
  644. package/src/service-queues/service.resource.ts +1 -1
  645. package/src/shared/constants/concepts.ts +50 -0
  646. package/src/shared/constants/patient-category.ts +6 -0
  647. package/src/shared/constants/patient-type.ts +10 -0
  648. package/src/shared/constants/visit-types.ts +7 -0
  649. package/src/shared/services/billing.resource.ts +75 -0
  650. package/src/shared/services/claims.resource.ts +47 -0
  651. package/src/shared/services/client-payment-mode.resource.ts +27 -0
  652. package/src/shared/services/client-payment.resource.ts +17 -0
  653. package/src/shared/services/consultation-clearance.resource.ts +210 -0
  654. package/src/shared/services/eligibility.resource.ts +20 -0
  655. package/src/shared/services/encounters.resource.ts +33 -0
  656. package/src/shared/services/location.resource.ts +9 -0
  657. package/src/shared/types/index.ts +156 -0
  658. package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.scss +42 -0
  659. package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.tsx +42 -0
  660. package/src/shared/ui/confirm-modal/confirm.modal.scss +18 -0
  661. package/src/shared/ui/confirm-modal/confirm.modal.tsx +38 -0
  662. package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.scss +39 -0
  663. package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.tsx +19 -0
  664. package/src/shared/ui/otp-input/otp-input.component.scss +14 -0
  665. package/src/shared/ui/otp-input/otp-input.component.tsx +97 -0
  666. package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.tsx +6 -3
  667. package/src/shared/ui/timer/timer.component.scss +5 -0
  668. package/src/shared/ui/timer/timer.component.tsx +40 -0
  669. package/src/shared/utils/get-base-url.ts +10 -0
  670. package/src/shared/utils/get-tag-type.ts +75 -0
  671. package/src/side-nav-menu/mnch-nav-link-config.ts +16 -0
  672. package/src/side-nav-menu/mnch-nav-links.tsx +42 -0
  673. package/src/side-nav-menu/nav-link-config.ts +1 -5
  674. package/src/side-nav-menu/specialized-clinics-nav-link-config.ts +36 -0
  675. package/src/side-nav-menu/specialized-clinics-nav-links.tsx +42 -0
  676. package/src/specialized-clinics/critital-care-unit/critical-care-unit-queues.component.scss +7 -0
  677. package/src/specialized-clinics/critital-care-unit/critical-care-unit-queues.component.tsx +36 -0
  678. package/src/specialized-clinics/critital-care-unit/queues/consultation/critical-care-unit-consultation.tsx +15 -0
  679. package/src/specialized-clinics/critital-care-unit/queues/triage/critical-care-unit-triage.tsx +15 -0
  680. package/src/specialized-clinics/dental/dental-queues.component.scss +7 -0
  681. package/src/specialized-clinics/dental/dental-queues.component.tsx +36 -0
  682. package/src/specialized-clinics/dental/queues/consultation/dental-consultation.tsx +15 -0
  683. package/src/specialized-clinics/dental/queues/triage/dental-triage.tsx +15 -0
  684. package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.scss +7 -0
  685. package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.tsx +36 -0
  686. package/src/specialized-clinics/diagnostic-and-imaging/queues/consultation/diagnosis-and-imaging-consultation.tsx +15 -0
  687. package/src/specialized-clinics/diagnostic-and-imaging/queues/triage/diagnosis-and-imaging-triage.tsx +15 -0
  688. package/src/specialized-clinics/oncology/oncology-queues.component.scss +7 -0
  689. package/src/specialized-clinics/oncology/oncology-queues.component.tsx +36 -0
  690. package/src/specialized-clinics/oncology/queues/consultation/oncology-consultation.tsx +15 -0
  691. package/src/specialized-clinics/oncology/queues/triage/oncology-triage.tsx +15 -0
  692. package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.scss +7 -0
  693. package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.tsx +36 -0
  694. package/src/specialized-clinics/ophthalmology/queues/consultation/ophthalmology-consultation.tsx +15 -0
  695. package/src/specialized-clinics/ophthalmology/queues/triage/ophthalmology-triage.tsx +15 -0
  696. package/src/specialized-clinics/psychiatry/psychiatry-queues.component.scss +7 -0
  697. package/src/specialized-clinics/psychiatry/psychiatry-queues.component.tsx +36 -0
  698. package/src/specialized-clinics/psychiatry/queues/consultation/psychiatry-consultation.tsx +15 -0
  699. package/src/specialized-clinics/psychiatry/queues/triage/psychiatry-triage.tsx +15 -0
  700. package/src/specialized-clinics/renal/queues/consultation/dialysis-consultation.tsx +15 -0
  701. package/src/specialized-clinics/renal/queues/triage/renal-triage.tsx +15 -0
  702. package/src/specialized-clinics/renal/renal-queues.component.scss +7 -0
  703. package/src/specialized-clinics/renal/renal-queues.component.tsx +36 -0
  704. package/src/specialized-clinics/specialized-clinics-root.tsx +27 -0
  705. package/src/triage/triage.component.scss +6 -0
  706. package/src/triage/triage.component.tsx +4 -0
  707. package/src/types/types.ts +56 -1
  708. package/webpack.config.js +54 -1
  709. package/dist/104.js +0 -2
  710. package/dist/104.js.map +0 -1
  711. package/dist/15.js +0 -1
  712. package/dist/15.js.map +0 -1
  713. package/dist/184.js +0 -2
  714. package/dist/184.js.map +0 -1
  715. package/dist/197.js +0 -1
  716. package/dist/255.js +0 -1
  717. package/dist/255.js.map +0 -1
  718. package/dist/300.js +0 -1
  719. package/dist/335.js +0 -1
  720. package/dist/339.js +0 -1
  721. package/dist/339.js.map +0 -1
  722. package/dist/353.js +0 -1
  723. package/dist/353.js.map +0 -1
  724. package/dist/420.js +0 -1
  725. package/dist/420.js.map +0 -1
  726. package/dist/540.js +0 -2
  727. package/dist/540.js.map +0 -1
  728. package/dist/55.js +0 -1
  729. package/dist/652.js +0 -1
  730. package/dist/709.js +0 -1
  731. package/dist/709.js.map +0 -1
  732. package/dist/710.js +0 -2
  733. package/dist/710.js.map +0 -1
  734. package/dist/729.js +0 -1
  735. package/dist/729.js.map +0 -1
  736. package/dist/752.js +0 -1
  737. package/dist/752.js.map +0 -1
  738. package/dist/833.js +0 -1
  739. package/dist/833.js.map +0 -1
  740. package/dist/907.js +0 -1
  741. package/dist/907.js.map +0 -1
  742. package/dist/91.js +0 -1
  743. package/dist/91.js.map +0 -1
  744. package/dist/93.js +0 -1
  745. package/dist/93.js.map +0 -1
  746. package/dist/943.js +0 -1
  747. package/dist/943.js.map +0 -1
  748. package/dist/99.js +0 -1
  749. /package/dist/{104.js.LICENSE.txt → 2177.js.LICENSE.txt} +0 -0
  750. /package/dist/{184.js.LICENSE.txt → 3184.js.LICENSE.txt} +0 -0
  751. /package/dist/{540.js.LICENSE.txt → 6540.js.LICENSE.txt} +0 -0
  752. /package/dist/{710.js.LICENSE.txt → 7830.js.LICENSE.txt} +0 -0
  753. /package/dist/{810.js.LICENSE.txt → 9583.js.LICENSE.txt} +0 -0
  754. /package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.scss +0 -0
@@ -0,0 +1,616 @@
1
+ import React, { useEffect, useMemo, useState } from 'react';
2
+ import styles from './claim-visit-details.component.scss';
3
+ import {
4
+ type PatientFacilityBillDetails,
5
+ type ClaimsVisit,
6
+ type VisitIntervention,
7
+ ApplicableDocumentType,
8
+ } from '../../types';
9
+ import { buildInvoiceRecords } from '../claim-invoice-details/claim-invoice-details.component';
10
+ import { buildInterventionRecords } from '../claim-intervention-details/claim-intervention-details.component';
11
+ import { buildDiagnosisRecords } from '../claim-diagnosis-details/claim-diagnosis-details.component';
12
+ import ClaimDoctors from '../claim-doctors/claim-doctors';
13
+ import ClaimHistory from '../claim-history/claim-history.component';
14
+ import RecordTable from '../shared/record-table.component';
15
+ import { formatDate, launchWorkspace, parseDate, showSnackbar, useVisit } from '@openmrs/esm-framework';
16
+ import { Button, ButtonSkeleton, Tooltip } from '@carbon/react';
17
+ import CloseClaimModal from '../modal/close-claim/close-claim.modal';
18
+ import SubmitClaimModal from '../modal/submit-claim/submit-claim.modal';
19
+ import { endVisit, useInvalidateProviderClaimPreview } from '../../../../billing-claims.resource';
20
+ import { invalidatePreauthPreview, usePreauthPreview } from '../../../../../claims/claims.resource';
21
+ import AddClaimDoctorModal from '../modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal';
22
+ import { VisitTypeUuids } from '../../../../../shared/constants/visit-types';
23
+ import { VisitType } from '../../../../../claims';
24
+ import { canDispatchClaim, canEditClaimContent, canEditClaimDocuments } from '../../claim-statuses';
25
+ import { parseDocTypes, readSpecialtyFlags, resolveUnitPriceFromPatientBills } from '../../preauth/preauth.resource';
26
+ const money = (n: number | string) =>
27
+ `KES ${Number(n ?? 0).toLocaleString('en-KE', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
28
+
29
+ /**
30
+ * The HIE returns names and places in block capitals, which read as shouting and are
31
+ * harder to scan than the same words cased normally. Codes (SHIF, CR…) are left alone —
32
+ * only free text goes through this. Capitalises after an apostrophe or hyphen too, so
33
+ * O'Brien and Ali-Hassan survive; "McLeod" is the known miss.
34
+ */
35
+ const titleCase = (value?: string | null): string => {
36
+ const v = (value ?? '').trim();
37
+ if (!v) {
38
+ return '';
39
+ }
40
+ // Anything with lower-case letters already is left as the source wrote it.
41
+ if (v !== v.toUpperCase()) {
42
+ return v;
43
+ }
44
+ return v.toLowerCase().replace(/(^|[\s'’\-\/])([a-z])/g, (_m, boundary, letter) => boundary + letter.toUpperCase());
45
+ };
46
+
47
+ /**
48
+ * A section heading carrying how many records are under it, so the page can be scanned
49
+ * for what a claim actually holds without reading four tables to find the empty ones.
50
+ *
51
+ * `blocking` marks a count of zero that is stopping something, and colours it to match
52
+ * the callout in the section body — so the problem is visible from the heading, which is
53
+ * as far as most readers scan.
54
+ */
55
+ const SectionTitle: React.FC<{ label: string; count: number; blocking?: boolean }> = ({ label, count, blocking }) => {
56
+ const tone = count > 0 ? '' : blocking ? styles.sectionCountDanger : styles.sectionCountEmpty;
57
+ return (
58
+ <h5 className={styles.sectionTitle}>
59
+ {label}
60
+ <span className={`${styles.sectionCount} ${tone}`}>{count}</span>
61
+ </h5>
62
+ );
63
+ };
64
+
65
+ interface claimVisitDetailsProps {
66
+ claimsVisit: ClaimsVisit;
67
+ locationUuid: string;
68
+ patientBillDetails?: PatientFacilityBillDetails;
69
+ /** Hide the patient name / member number when a surrounding page already shows them
70
+ (e.g. the bill-details patient header), to avoid repeating identity fields. */
71
+ hidePatientIdentity?: boolean;
72
+ /** The claim is being fetched or revalidated, so its state may already be stale. */
73
+ claimRefreshing?: boolean;
74
+ /** No live `workflow_state` has arrived yet, so the one on `claimsVisit` is only the
75
+ copy stored when the visit was recorded — frozen at DRAFT for any claim submitted
76
+ since. The State tag holds back rather than assert it. */
77
+ claimStateUnconfirmed?: boolean;
78
+ }
79
+ const ClaimVisitDetails: React.FC<claimVisitDetailsProps> = ({
80
+ claimsVisit,
81
+ locationUuid,
82
+ patientBillDetails,
83
+ hidePatientIdentity,
84
+ claimRefreshing,
85
+ claimStateUnconfirmed,
86
+ }) => {
87
+ const [showCloseClaimModal, setShowCloseClaimModal] = useState<boolean>();
88
+ const [showSubmitClaimModal, setSubmitCloseClaimModal] = useState<boolean>(false);
89
+ const [showAddDoctorModal, setShowAddDoctorModal] = useState<boolean>(false);
90
+ const [triggerEndVisit, setTriggerEndVisit] = useState<boolean>(false);
91
+ const { activeVisit } = useVisit(patientBillDetails?.patient_uuid);
92
+
93
+ const invoiceNumber = useMemo(() => {
94
+ if (patientBillDetails) {
95
+ return patientBillDetails.receipt_number;
96
+ }
97
+ return '';
98
+ }, [patientBillDetails]);
99
+
100
+ useEffect(() => {
101
+ if (triggerEndVisit && activeVisit) {
102
+ handleCloseVisit();
103
+ }
104
+ // eslint-disable-next-line react-hooks/exhaustive-deps
105
+ }, [triggerEndVisit, activeVisit]);
106
+
107
+ function handleCloseVisit() {
108
+ endVisit(activeVisit?.uuid)
109
+ .then((v) => {
110
+ showSnackbar({
111
+ title: 'Success closing claim',
112
+ kind: 'success',
113
+ subtitle: 'Claim closed successfully',
114
+ });
115
+ })
116
+ .catch((err) => {
117
+ console.error(err);
118
+ });
119
+ }
120
+
121
+ const visitType: VisitType = useMemo(() => {
122
+ if (activeVisit) {
123
+ const visitTypeUuid = activeVisit?.visitType?.uuid;
124
+ if (visitTypeUuid) {
125
+ if (visitTypeUuid === VisitTypeUuids.OPD_VISIT_TYPE_UUID) {
126
+ return 'OUTPATIENT';
127
+ }
128
+ if (visitTypeUuid === VisitTypeUuids.INPATIENT_VISIT_TYPE_UUID) {
129
+ return 'INPATIENT';
130
+ }
131
+ }
132
+ }
133
+ return 'OUTPATIENT';
134
+ }, [activeVisit, VisitTypeUuids]);
135
+
136
+ const invalidateProviderClaimPreview = useInvalidateProviderClaimPreview();
137
+
138
+ const { preview: preauthPreview } = usePreauthPreview(claimsVisit?.authorization_code, locationUuid);
139
+ // A claim can't be submitted to SHA without at least one recorded diagnosis.
140
+ const hasDiagnosis = (claimsVisit?.claim_diagnoses ?? []).length > 0;
141
+
142
+ // Nor without someone named as having provided the care. Unlike the diagnosis this is
143
+ // not enforced by the submit endpoint — it is a house rule, and one that currently has
144
+ // no way to be satisfied from this page: `AddClaimDoctorModal` is a stub whose handlers
145
+ // are empty, and no endpoint for attaching a doctor to a claim exists yet. A claim whose
146
+ // source data carries no doctor therefore cannot be submitted here until that is built.
147
+ const hasDoctor = (claimsVisit?.claim_doctors ?? []).some((doctor) => (doctor?.doctor_name ?? '').trim());
148
+
149
+ // All hooks are above this point, so the early return is safe here.
150
+ if (!claimsVisit) {
151
+ return <>No Data</>;
152
+ }
153
+
154
+ // Each of these writes to the claim, so all three refuse to open on anything but a
155
+ // settled draft — the visible gating below can lag a state change by a render.
156
+ function displayCloseClaimModal() {
157
+ if (!canActOnClaim) {
158
+ return;
159
+ }
160
+ setShowCloseClaimModal(true);
161
+ }
162
+ function handleCloseClaimModal() {
163
+ setShowCloseClaimModal(false);
164
+ }
165
+ function displayCloseSubmitClaimModal() {
166
+ if (!canActOnClaim || !hasDiagnosis || !hasDoctor) {
167
+ return;
168
+ }
169
+ setSubmitCloseClaimModal(true);
170
+ }
171
+ function handleCloseSubmitClaimModal() {
172
+ setSubmitCloseClaimModal(false);
173
+ }
174
+ function onSubmitSuccess() {
175
+ setTriggerEndVisit(true);
176
+ handleCloseSubmitClaimModal();
177
+ invalidateProviderClaimPreview();
178
+ }
179
+ function onCloseSuccess() {
180
+ handleCloseClaimModal();
181
+ invalidateProviderClaimPreview();
182
+ }
183
+ function handleAddDoctor() {
184
+ setShowAddDoctorModal(true);
185
+ }
186
+ function handleCloseAddDoctorModal() {
187
+ setShowAddDoctorModal(false);
188
+ }
189
+
190
+ // Scoped to a single intervention: the workspace defaults its "switch FROM"
191
+ // selection to the sole ACTIVE entry in `currentInterventions` and only shows
192
+ // a from-picker when more than one is passed, so a one-item array is enough
193
+ // to target this specific card's intervention.
194
+ const handleSwitchIntervention = (intervention: VisitIntervention) => {
195
+ if (!canSwitchIntervention) {
196
+ return;
197
+ }
198
+ launchWorkspace('switch-intervention-workspace', {
199
+ consentToken: claimsVisit.authorization_code,
200
+ currentInterventions: [intervention],
201
+ patientId: patientBillDetails?.cr_no ?? claimsVisit.patient_number,
202
+ patientUuid: patientBillDetails?.patient_uuid,
203
+ visitUuid: activeVisit?.uuid,
204
+ billDate: patientBillDetails?.bill_date ?? claimsVisit.visit_start,
205
+ onSwitchSuccess: () => {
206
+ invalidateProviderClaimPreview();
207
+ },
208
+ });
209
+ };
210
+
211
+ const handleRaisePreauth = async (intervention: VisitIntervention) => {
212
+ if (!canSwitchIntervention) {
213
+ return;
214
+ }
215
+ const consentToken = claimsVisit.authorization_code;
216
+ if (!consentToken) {
217
+ showSnackbar({
218
+ kind: 'error',
219
+ title: 'No claim token',
220
+ subtitle: 'This claim visit has no consent token.',
221
+ });
222
+ return;
223
+ }
224
+ if (!intervention.needs_preauth) {
225
+ return;
226
+ }
227
+
228
+ const requiredDocs = parseDocTypes(
229
+ Array.isArray(intervention.required_preauth_document_types)
230
+ ? (intervention.required_preauth_document_types as string[]).join(',')
231
+ : (intervention.required_preauth_document_types as string | null | undefined),
232
+ );
233
+ const applicableDocs = Array.isArray(intervention.applicable_document_types)
234
+ ? intervention.applicable_document_types.map(String)
235
+ : parseDocTypes(intervention.applicable_document_types as string | null | undefined);
236
+
237
+ const patientUuid = patientBillDetails?.patient_uuid;
238
+ let itemPrice = Number(patientBillDetails?.item_price) || Number(intervention.keph_level_tarrif) || 0;
239
+ let billableService = intervention.intervention_name;
240
+ let billDate = patientBillDetails?.bill_date ?? claimsVisit.visit_start;
241
+
242
+ if (patientUuid && locationUuid) {
243
+ const { unitPrice, billLine } = await resolveUnitPriceFromPatientBills({
244
+ patientUuid,
245
+ locationUuid,
246
+ billingDate: billDate,
247
+ interventionCode: intervention.intervention_code,
248
+ serviceHint: intervention.intervention_name,
249
+ });
250
+ if (unitPrice) {
251
+ itemPrice = Number(unitPrice);
252
+ }
253
+ if (billLine?.billable_service) {
254
+ billableService = billLine.billable_service;
255
+ }
256
+ if (billLine?.bill_date) {
257
+ billDate = billLine.bill_date;
258
+ }
259
+ }
260
+
261
+ launchWorkspace('preauth-form-workspace', {
262
+ consentToken,
263
+ patientUuid,
264
+ locationUuid,
265
+ billItem: {
266
+ intervention_code: intervention.intervention_code,
267
+ patient_uuid: patientUuid,
268
+ patient_name: claimsVisit.patient_name ?? patientBillDetails?.patient_name,
269
+ cr_no: patientBillDetails?.cr_no ?? claimsVisit.patient_number,
270
+ billable_service: billableService,
271
+ bill_date: billDate,
272
+ item_price: itemPrice,
273
+ item_total_price: itemPrice,
274
+ item_quantity: patientBillDetails?.item_quantity ?? 1,
275
+ consent_token: consentToken,
276
+ },
277
+ intervention: {
278
+ code: intervention.intervention_code,
279
+ name: intervention.intervention_name,
280
+ ...readSpecialtyFlags(intervention),
281
+ requiredPreauthDocumentTypes: requiredDocs,
282
+ applicableDocumentTypes: applicableDocs,
283
+ },
284
+ onSuccess: async () => {
285
+ await invalidatePreauthPreview(consentToken, locationUuid);
286
+ invalidateProviderClaimPreview();
287
+ },
288
+ });
289
+ };
290
+
291
+ // Which actions apply depends on where the claim sits in the lifecycle, grouped in
292
+ // ../../claim-statuses from the HIE's own phases. Changing what the claim contains
293
+ // needs an open claim (DRAFT, or DRAFT_RESUBMIT after a clarification); submitting or
294
+ // closing additionally covers one already prepared or that failed to dispatch.
295
+ const canEditContent = canEditClaimContent(claimsVisit.workflow_state);
296
+ const canDispatch = canDispatchClaim(claimsVisit.workflow_state);
297
+
298
+ // A refresh in flight means the claim on screen may already have moved on — most of
299
+ // all right after a submit, where the previous response is still being served. The
300
+ // actions stay visible but stand down until the claim settles, so the state can't be
301
+ // acted on twice.
302
+ const canActOnClaim = canDispatch && !claimRefreshing;
303
+ const canSwitchIntervention = canEditContent && !claimRefreshing;
304
+
305
+ // Named once here so each section can be counted in its heading without the
306
+ // `?? []` appearing twice per category.
307
+ const diagnoses = claimsVisit.claim_diagnoses ?? [];
308
+ const interventions = claimsVisit.interventions ?? [];
309
+ const invoices = claimsVisit.invoices ?? [];
310
+ const doctors = claimsVisit.claim_doctors ?? [];
311
+
312
+ // "SHIF — Social Health Insurance Fund". The code alone is what the payer is filed
313
+ // under and the name alone is what a reader recognises, so the header carries both and
314
+ // the details grid below carries neither.
315
+ const schemeLabel = [claimsVisit.scheme_code, claimsVisit.scheme_name].filter(Boolean).join(' — ');
316
+
317
+ // What is stopping a submit, if anything. Named rather than inlined so the tooltip can
318
+ // say which of the two is missing — and say both when both are — instead of always
319
+ // blaming the diagnosis. An empty string means nothing is in the way.
320
+ const submitBlockedReason = !hasDiagnosis
321
+ ? hasDoctor
322
+ ? 'A diagnosis must be recorded before this claim can be submitted.'
323
+ : 'A diagnosis and an attending doctor must be recorded before this claim can be submitted.'
324
+ : !hasDoctor
325
+ ? 'An attending doctor must be recorded before this claim can be submitted.'
326
+ : '';
327
+
328
+ const submitClaimButton = (
329
+ <Button
330
+ kind="primary"
331
+ size="sm"
332
+ onClick={displayCloseSubmitClaimModal}
333
+ disabled={!canActOnClaim || Boolean(submitBlockedReason)}
334
+ >
335
+ Submit claim
336
+ </Button>
337
+ );
338
+
339
+ return (
340
+ <>
341
+ <div className={styles.cvLayout}>
342
+ {/* Who the claim is for, and what it comes to. The state and the authorisation
343
+ status were tagged here as well as in the history rail, and the actions sat at
344
+ the right; both belong to the rail — the first as its subject, the second as
345
+ what follows from it — which leaves the header to name the claim and price
346
+ it. */}
347
+ <div className={styles.cvHeader}>
348
+ {!hidePatientIdentity ? (
349
+ <div className={styles.cvHeaderText}>
350
+ <h4 className={styles.claimPatient}>{titleCase(claimsVisit.patient_name) || '—'}</h4>
351
+ {claimsVisit.member_number ? (
352
+ <span className={styles.claimPatientSub}>{claimsVisit.member_number}</span>
353
+ ) : null}
354
+ </div>
355
+ ) : null}
356
+
357
+ {/* The figure sits with the name rather than in the rail: who the claim is for
358
+ and what it comes to are the two things the page is opened to read, and they
359
+ are read together. */}
360
+ <div className={styles.claimAmount}>
361
+ <span className={styles.claimAmountLabel}>Total amount</span>
362
+ <span className={styles.claimAmountValue}>{money(claimsVisit.total_claim_amount)}</span>
363
+ {/* Net only differs from the gross when a discount or co-pay applies; when
364
+ they match, one figure says it all. */}
365
+ {Number(claimsVisit.total_claim_net_amount ?? 0) !== Number(claimsVisit.total_claim_amount ?? 0) ? (
366
+ <span className={styles.claimAmountNet}>Net {money(claimsVisit.total_claim_net_amount)}</span>
367
+ ) : null}
368
+ </div>
369
+ </div>
370
+
371
+ {/* Everything that describes the claim rather than identifies or prices it, as
372
+ one strip of labelled values across the full width. The scheme is among them
373
+ rather than trailing the member number after a dot: it is the same kind of
374
+ fact as the three beside it, and being labelled like them it can be found by
375
+ looking for its heading instead of read out of a run-on line. */}
376
+ <dl className={styles.detailsGrid}>
377
+ {schemeLabel ? (
378
+ <div className={styles.detailRow}>
379
+ <dt>Scheme</dt>
380
+ <dd>{schemeLabel}</dd>
381
+ </div>
382
+ ) : null}
383
+ <div className={styles.detailRow}>
384
+ <dt>Service type</dt>
385
+ <dd>{titleCase(claimsVisit.service_type) || '—'}</dd>
386
+ </div>
387
+ <div className={styles.detailRow}>
388
+ <dt>Provider</dt>
389
+ <dd>{titleCase(claimsVisit.provider_name) || '—'}</dd>
390
+ </div>
391
+ <div className={styles.detailRow}>
392
+ <dt>Visit start</dt>
393
+ <dd>{claimsVisit.visit_start ? formatDate(parseDate(claimsVisit.visit_start)) : '—'}</dd>
394
+ </div>
395
+ </dl>
396
+
397
+ {/* The claim's contents on the left, a standing rail on the right. The rail runs
398
+ the length of the page rather than sitting in the summary, because what it
399
+ carries — where the claim has got to and what it comes to — is what you are
400
+ checking the tables against, and is wanted just as much four tables down as at
401
+ the top. */}
402
+ <div className={styles.cvBody}>
403
+ <div className={styles.cvMain}>
404
+ {/* Each category is its own section, listed as a short table: the few fields
405
+ that tell one record from another, with the rest — and each record's own
406
+ actions — in the side drawer the row opens.
407
+
408
+ In the order a claim is checked rather than the order it was built: what
409
+ was found, what was done about it, what it is being billed at, who did it.
410
+ That also puts the diagnoses first, which is the one section that can stop
411
+ the claim being submitted at all. */}
412
+ <section className={styles.section}>
413
+ {/* A missing diagnosis is the one absence on this page that stops the claim
414
+ going anywhere, and only while the claim can still be dispatched — on a
415
+ closed one it is just something that never happened. */}
416
+ <SectionTitle label="Diagnoses" count={diagnoses.length} blocking={canDispatch} />
417
+ <RecordTable
418
+ records={buildDiagnosisRecords(diagnoses, {
419
+ // Named by the claim above; the panel drops the member number when it
420
+ // matches.
421
+ memberNumber: claimsVisit.member_number,
422
+ patientNumber: claimsVisit.patient_number,
423
+ })}
424
+ columns={[
425
+ { header: 'Diagnosis', source: 'title' },
426
+ { header: 'Diagnosis code', field: 'Diagnosis code' },
427
+ { header: 'Intervention code', field: 'Intervention code' },
428
+ { header: 'Recorded on', field: 'Recorded on' },
429
+ ]}
430
+ // The empty state is the reason the Submit button beside it is disabled, so
431
+ // it says so rather than leaving the two to be connected by hovering.
432
+ emptyMessage={
433
+ canDispatch
434
+ ? 'No diagnosis recorded. SHA needs at least one before this claim can be submitted.'
435
+ : 'No diagnosis was recorded on this claim.'
436
+ }
437
+ emptyTone={canDispatch ? 'danger' : 'neutral'}
438
+ ariaLabel="claim diagnoses"
439
+ />
440
+ </section>
441
+
442
+ <section className={styles.section}>
443
+ <SectionTitle label="Interventions" count={interventions.length} />
444
+ <RecordTable
445
+ records={buildInterventionRecords(
446
+ interventions,
447
+ {
448
+ consentToken: claimsVisit.authorization_code,
449
+ locationUuid,
450
+ claimAttachments: claimsVisit.claim_attachments ?? [],
451
+ bill: patientBillDetails,
452
+ // Attachments have their own window: wider than content edits, because
453
+ // DRAFT_RESUBMIT_DOCUMENTS exists purely so missing documents can be
454
+ // supplied. Outside it the rows are read-only.
455
+ isClaimDraft: canEditClaimDocuments(claimsVisit.workflow_state),
456
+ canSwitchIntervention,
457
+ onSwitchIntervention: handleSwitchIntervention,
458
+ onRaisePreauth: handleRaisePreauth,
459
+ preauthPreview,
460
+ },
461
+ // Named by the claim above; the panel drops the scheme when it matches.
462
+ { schemeCode: claimsVisit.scheme_code, schemeName: claimsVisit.scheme_name },
463
+ )}
464
+ columns={[
465
+ { header: 'Intervention', source: 'title' },
466
+ { header: 'Code', field: 'Code' },
467
+ { header: 'Payment mechanism', field: 'Payment mechanism' },
468
+ { header: 'Needs preauth', field: 'Needs preauth' },
469
+ { header: 'State', source: 'badge' },
470
+ ]}
471
+ emptyMessage="No interventions on this claim."
472
+ ariaLabel="claim interventions"
473
+ />
474
+ </section>
475
+
476
+ <section className={styles.section}>
477
+ <SectionTitle label="Invoices" count={invoices.length} />
478
+ <RecordTable
479
+ records={buildInvoiceRecords(
480
+ invoices,
481
+ claimsVisit.authorization_code,
482
+ // Removing a line is a content edit, so it follows the same window as the
483
+ // diagnoses and the Switch Intervention action.
484
+ canSwitchIntervention,
485
+ // The claim states these above; the panel shows each only if this invoice
486
+ // disagrees with the claim. The patient's details aren't shown in the
487
+ // panel at all — they are there for the printable invoice, which has to
488
+ // name who it is for.
489
+ {
490
+ serviceType: claimsVisit.service_type,
491
+ schemeCode: claimsVisit.scheme_code,
492
+ schemeName: claimsVisit.scheme_name,
493
+ providerName: claimsVisit.provider_name,
494
+ visitStart: claimsVisit.visit_start,
495
+ patientName: titleCase(claimsVisit.patient_name),
496
+ memberNumber: claimsVisit.member_number,
497
+ },
498
+ )}
499
+ // An invoice is what the claim is actually worth, and there are rarely more
500
+ // than one or two, so the row carries the figures a biller checks — amount,
501
+ // net and where it got to — rather than making them open the panel for it.
502
+ // Scheme and service type are the claim's, stated in the header above, and
503
+ // would be the same word repeated down every row.
504
+ columns={[
505
+ { header: 'Invoice', source: 'title' },
506
+ { header: 'Date', field: 'Date' },
507
+ { header: 'Amount', field: 'Amount' },
508
+ { header: 'Net', field: 'Net' },
509
+ { header: 'Dispatch', field: 'Dispatch status' },
510
+ { header: 'State', source: 'badge' },
511
+ ]}
512
+ emptyMessage="No invoices on this claim."
513
+ ariaLabel="claim invoices"
514
+ />
515
+ </section>
516
+
517
+ <section className={styles.section}>
518
+ {/* Blocking in the same way as the diagnoses, and flagged the same way:
519
+ Submit refuses a claim that names nobody as having provided the care.
520
+ Note this gate is ours, not the endpoint's — see `hasDoctor`. */}
521
+ <SectionTitle label="Doctors" count={doctors.length} blocking={canDispatch} />
522
+ <ClaimDoctors claimDoctors={doctors} blocking={canDispatch} />
523
+ </section>
524
+ </div>
525
+
526
+ {/* Sticky, so the state and the total stay on screen while the tables are
527
+ scrolled past them — which is the whole point of giving them a column. It
528
+ wraps below the tables rather than squeezing them when the page is too
529
+ narrow to hold both; `.cvBody` measures the space it actually has, so this
530
+ holds in the modal and the embedded view as much as on the page. */}
531
+ <aside className={styles.cvRail}>
532
+ <div className={styles.cvRailInner}>
533
+ {/* Close / Submit while the claim can still be dispatched; content-editable
534
+ states are a subset of those, so this covers the whole block. They lead
535
+ the rail: they are what the page is open to do, and in a sticky column
536
+ they stay within reach however far down the tables you have scrolled. */}
537
+ {canDispatch ? (
538
+ <div className={styles.railActions}>
539
+ {claimRefreshing ? (
540
+ /* The claim is being fetched or revalidated, so which actions apply is
541
+ not yet settled. Placeholders of the same size and count keep the
542
+ rail from reflowing while it resolves. */
543
+ <span className={styles.railActionsLoading} aria-busy="true" aria-label="Loading claim actions">
544
+ {Array.from({ length: 2 }).map((_, i) => (
545
+ <ButtonSkeleton size="sm" key={i} />
546
+ ))}
547
+ </span>
548
+ ) : (
549
+ <>
550
+ {/* A disabled button emits no pointer events, so the tooltip hangs
551
+ off the wrapping span instead — `.submitClaimWrap` drops pointer
552
+ events on the button so hover lands on the span. tabIndex keeps
553
+ the reason reachable by keyboard, since a disabled button can't
554
+ be focused. */}
555
+ {submitBlockedReason ? (
556
+ <Tooltip align="left" label={submitBlockedReason}>
557
+ <span className={styles.submitClaimWrap} tabIndex={0}>
558
+ {submitClaimButton}
559
+ </span>
560
+ </Tooltip>
561
+ ) : (
562
+ submitClaimButton
563
+ )}
564
+ <Button
565
+ kind="danger--tertiary"
566
+ size="sm"
567
+ onClick={displayCloseClaimModal}
568
+ disabled={!canActOnClaim}
569
+ >
570
+ Close claim
571
+ </Button>
572
+ </>
573
+ )}
574
+ </div>
575
+ ) : null}
576
+
577
+ <div className={styles.asideBlock}>
578
+ <h5 className={styles.asideTitle}>Claim history</h5>
579
+ <ClaimHistory claimsVisit={claimsVisit} claimStateUnconfirmed={claimStateUnconfirmed} />
580
+ </div>
581
+ </div>
582
+ </aside>
583
+ </div>
584
+ </div>
585
+ {showCloseClaimModal && (
586
+ <CloseClaimModal
587
+ locationUuid={locationUuid}
588
+ open={showCloseClaimModal}
589
+ onClose={handleCloseClaimModal}
590
+ onSuccess={onCloseSuccess}
591
+ consentToken={claimsVisit.authorization_code}
592
+ />
593
+ )}
594
+ {showSubmitClaimModal && (
595
+ <SubmitClaimModal
596
+ locationUuid={locationUuid}
597
+ open={showSubmitClaimModal}
598
+ onClose={handleCloseSubmitClaimModal}
599
+ onSuccess={onSubmitSuccess}
600
+ claimsVisit={claimsVisit}
601
+ invoiceNumber={invoiceNumber}
602
+ visitType={visitType}
603
+ />
604
+ )}
605
+ {showAddDoctorModal && (
606
+ <AddClaimDoctorModal
607
+ open={showAddDoctorModal}
608
+ handleClose={handleCloseAddDoctorModal}
609
+ claimDoctors={[]}
610
+ consentToken={claimsVisit.authorization_code}
611
+ />
612
+ )}
613
+ </>
614
+ );
615
+ };
616
+ export default ClaimVisitDetails;
@@ -0,0 +1,5 @@
1
+ .claimVisitsLayout{
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ }