@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.
- package/README.md +19 -0
- package/dist/1149.js +1 -0
- package/dist/1149.js.map +1 -0
- package/dist/1197.js +1 -0
- package/dist/1277.js +1 -0
- package/dist/1277.js.map +1 -0
- package/dist/1362.js +1 -0
- package/dist/1362.js.map +1 -0
- package/dist/1551.js +1 -0
- package/dist/1551.js.map +1 -0
- package/dist/1556.js +1 -0
- package/dist/1556.js.map +1 -0
- package/dist/1925.js +1 -0
- package/dist/1925.js.map +1 -0
- package/dist/1927.js +1 -0
- package/dist/1927.js.map +1 -0
- package/dist/203.js +1 -0
- package/dist/203.js.map +1 -0
- package/dist/2054.js +1 -0
- package/dist/2054.js.map +1 -0
- package/dist/2093.js +1 -0
- package/dist/2093.js.map +1 -0
- package/dist/2177.js +2 -0
- package/dist/2177.js.map +1 -0
- package/dist/2200.js +1 -0
- package/dist/2200.js.map +1 -0
- package/dist/2230.js +1 -0
- package/dist/2230.js.map +1 -0
- package/dist/2493.js +1 -0
- package/dist/2493.js.map +1 -0
- package/dist/2914.js +1 -0
- package/dist/2914.js.map +1 -0
- package/dist/2936.js +1 -0
- package/dist/2936.js.map +1 -0
- package/dist/2988.js +1 -0
- package/dist/2988.js.map +1 -0
- package/dist/3041.js +1 -0
- package/dist/3041.js.map +1 -0
- package/dist/307.js +1 -0
- package/dist/307.js.map +1 -0
- package/dist/3099.js +1 -0
- package/dist/3184.js +2 -0
- package/dist/3184.js.map +1 -0
- package/dist/3202.js +1 -0
- package/dist/3202.js.map +1 -0
- package/dist/3222.js +1 -0
- package/dist/3222.js.map +1 -0
- package/dist/347.js +1 -0
- package/dist/347.js.map +1 -0
- package/dist/4003.js +1 -0
- package/dist/4003.js.map +1 -0
- package/dist/4008.js +1 -0
- package/dist/4008.js.map +1 -0
- package/dist/4055.js +1 -0
- package/dist/4205.js +1 -0
- package/dist/4205.js.map +1 -0
- package/dist/4225.js +1 -0
- package/dist/4225.js.map +1 -0
- package/dist/4231.js +1 -0
- package/dist/4231.js.map +1 -0
- package/dist/4300.js +1 -0
- package/dist/4335.js +1 -0
- package/dist/4353.js +1 -0
- package/dist/4353.js.map +1 -0
- package/dist/4431.js +1 -0
- package/dist/4431.js.map +1 -0
- package/dist/4454.js +1 -0
- package/dist/4454.js.map +1 -0
- package/dist/4457.js +2 -0
- package/dist/4457.js.LICENSE.txt +282 -0
- package/dist/4457.js.map +1 -0
- package/dist/446.js +1 -0
- package/dist/446.js.map +1 -0
- package/dist/4605.js +1 -0
- package/dist/4605.js.map +1 -0
- package/dist/4611.js +1 -0
- package/dist/4611.js.map +1 -0
- package/dist/4652.js +1 -0
- package/dist/4674.js +1 -0
- package/dist/4674.js.map +1 -0
- package/dist/4755.js +1 -0
- package/dist/4755.js.map +1 -0
- package/dist/4986.js +1 -0
- package/dist/4986.js.map +1 -0
- package/dist/5097.js +1 -0
- package/dist/5097.js.map +1 -0
- package/dist/5119.js +1 -0
- package/dist/5119.js.map +1 -0
- package/dist/5167.js +1 -0
- package/dist/5167.js.map +1 -0
- package/dist/5380.js +1 -0
- package/dist/5380.js.map +1 -0
- package/dist/5422.js +1 -0
- package/dist/5422.js.map +1 -0
- package/dist/5576.js +1 -0
- package/dist/5576.js.map +1 -0
- package/dist/5851.js +1 -0
- package/dist/5851.js.map +1 -0
- package/dist/5961.js +1 -0
- package/dist/5961.js.map +1 -0
- package/dist/6177.js +1 -0
- package/dist/6177.js.map +1 -0
- package/dist/6264.js +1 -0
- package/dist/6264.js.map +1 -0
- package/dist/6540.js +2 -0
- package/dist/6540.js.map +1 -0
- package/dist/6606.js +1 -0
- package/dist/6606.js.map +1 -0
- package/dist/6720.js +1 -0
- package/dist/6720.js.map +1 -0
- package/dist/6824.js +1 -0
- package/dist/6824.js.map +1 -0
- package/dist/6942.js +1 -0
- package/dist/6942.js.map +1 -0
- package/dist/71.js +1 -0
- package/dist/71.js.map +1 -0
- package/dist/7207.js +1 -0
- package/dist/7207.js.map +1 -0
- package/dist/7240.js +1 -0
- package/dist/7240.js.map +1 -0
- package/dist/7255.js +1 -0
- package/dist/7255.js.map +1 -0
- package/dist/7420.js +1 -0
- package/dist/7420.js.map +1 -0
- package/dist/7521.js +1 -0
- package/dist/7521.js.map +1 -0
- package/dist/7557.js +1 -0
- package/dist/7557.js.map +1 -0
- package/dist/7717.js +1 -0
- package/dist/7717.js.map +1 -0
- package/dist/7830.js +2 -0
- package/dist/7830.js.map +1 -0
- package/dist/7941.js +1 -0
- package/dist/7941.js.map +1 -0
- package/dist/8091.js +1 -0
- package/dist/8091.js.map +1 -0
- package/dist/810.js +1 -2
- package/dist/810.js.map +1 -1
- package/dist/8558.js +1 -0
- package/dist/8558.js.map +1 -0
- package/dist/8733.js +1 -0
- package/dist/8733.js.map +1 -0
- package/dist/874.js +1 -0
- package/dist/874.js.map +1 -0
- package/dist/8895.js +1 -0
- package/dist/8895.js.map +1 -0
- package/dist/9070.js +1 -0
- package/dist/9070.js.map +1 -0
- package/dist/9091.js +1 -0
- package/dist/9091.js.map +1 -0
- package/dist/9093.js +1 -0
- package/dist/9093.js.map +1 -0
- package/dist/9338.js +1 -0
- package/dist/9338.js.map +1 -0
- package/dist/9418.js +2 -0
- package/dist/9418.js.LICENSE.txt +1 -0
- package/dist/9418.js.map +1 -0
- package/dist/9428.js +1 -0
- package/dist/9428.js.map +1 -0
- package/dist/9583.js +2 -0
- package/dist/9583.js.map +1 -0
- package/dist/esm-dha-workflow-app.js +1 -1
- package/dist/esm-dha-workflow-app.js.buildmanifest.json +1627 -214
- package/dist/esm-dha-workflow-app.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/routes.json +1 -1
- package/local-config.json +5 -0
- package/package.json +16 -6
- package/src/admissions/admission-request-list/admission-request-list.scss +0 -0
- package/src/admissions/admission-request-list/admission-request-list.tsx +263 -0
- package/src/admissions/admissions-dashboard.component.scss +15 -0
- package/src/admissions/admissions-dashboard.component.tsx +277 -0
- package/src/admissions/admissions.resource.ts +233 -0
- package/src/admissions/admitted-list/admitted-patients-list.tsx +206 -0
- package/src/admissions/awaiting-discharge-list/awaiting-discharge-list.tsx +197 -0
- package/src/admissions/bed-assigment-request/bed-assignment-request-list.tsx +134 -0
- package/src/admissions/constants/index.ts +33 -0
- package/src/admissions/discharged-list/discharged-list.scss +0 -0
- package/src/admissions/discharged-list/discharged-list.tsx +67 -0
- package/src/admissions/form-entry-workspace/form-entry-workspace.tsx +62 -0
- package/src/admissions/inpatient/admission-history/patient-admission-history.tsx +76 -0
- package/src/admissions/inpatient/admission-requests/patient-admission-requests.scss +19 -0
- package/src/admissions/inpatient/admission-requests/patient-admission-requests.tsx +72 -0
- package/src/admissions/inpatient/inpatient-admissions.component.scss +7 -0
- package/src/admissions/inpatient/inpatient-admissions.component.tsx +46 -0
- package/src/admissions/modal/add-bill-items/add-bill-items.modal.scss +17 -0
- package/src/admissions/modal/add-bill-items/add-bill-items.modal.tsx +233 -0
- package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.scss +23 -0
- package/src/admissions/modal/admit-elsewhere/admit-elsewhere.modal.tsx +156 -0
- package/src/admissions/modal/admit-patient/admit-patient.modal.scss +0 -0
- package/src/admissions/modal/admit-patient/admit-patient.modal.tsx +111 -0
- package/src/admissions/modal/bed-swap/bed-swap.modal.scss +0 -0
- package/src/admissions/modal/bed-swap/bed-swap.modal.tsx +102 -0
- package/src/admissions/modal/cancel-admission-request/cancel-admission-request.scss +11 -0
- package/src/admissions/modal/cancel-admission-request/cancel-admission-request.tsx +105 -0
- package/src/admissions/modal/discharge/discharge-patient.modal.scss +13 -0
- package/src/admissions/modal/discharge/discharge-patient.modal.tsx +86 -0
- package/src/admissions/types/index.ts +263 -0
- package/src/appointments/appointments.component.scss +6 -0
- package/src/appointments/appointments.component.tsx +8 -1
- package/src/billing/api/billing.api.ts +139 -0
- package/src/billing/billing-claims.resource.ts +900 -0
- package/src/billing/billing-dashboard-link.component.tsx +31 -0
- package/src/billing/billing-dashboard-reset.ts +27 -0
- package/src/billing/billing-root.tsx +42 -0
- package/src/billing/dashboard/billingDashboard.component.scss +0 -0
- package/src/billing/dashboard/billingDashboard.component.tsx +25 -0
- package/src/billing/dashboard/v2/active-visits/active-visits.component.tsx +257 -0
- package/src/billing/dashboard/v2/active-visits/active-visits.resource.ts +85 -0
- package/src/billing/dashboard/v2/active-visits/active-visits.scss +15 -0
- package/src/billing/dashboard/v2/active-visits.component.tsx +102 -0
- package/src/billing/dashboard/v2/admissions/admission-requests-tab.component.tsx +79 -0
- package/src/billing/dashboard/v2/billing-claims-dashboard.component.scss +209 -0
- package/src/billing/dashboard/v2/billing-claims-dashboard.component.tsx +347 -0
- package/src/billing/dashboard/v2/cash-checklist/bill-document.component.scss +90 -0
- package/src/billing/dashboard/v2/cash-checklist/bill-document.component.tsx +101 -0
- package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.scss +199 -0
- package/src/billing/dashboard/v2/cash-checklist/cash-checklist.component.tsx +361 -0
- package/src/billing/dashboard/v2/cash-checklist/cash-checklist.resource.ts +239 -0
- package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.scss +246 -0
- package/src/billing/dashboard/v2/cash-checklist/payment-drawer.component.tsx +182 -0
- package/src/billing/dashboard/v2/claim-statuses.ts +143 -0
- package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
- package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +35 -0
- package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.scss +67 -0
- package/src/billing/dashboard/v2/claim-visits/claim-diagnosis-details/claim-diagnosis-panel.component.tsx +90 -0
- package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.scss +28 -0
- package/src/billing/dashboard/v2/claim-visits/claim-doctors/claim-doctors.tsx +36 -0
- package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.scss +119 -0
- package/src/billing/dashboard/v2/claim-visits/claim-history/claim-history.component.tsx +198 -0
- package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.scss +5 -0
- package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +160 -0
- package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.scss +105 -0
- package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/claim-intervention-panel.component.tsx +184 -0
- package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.scss +161 -0
- package/src/billing/dashboard/v2/claim-visits/claim-intervention-details/intervention-attachments.component.tsx +328 -0
- package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +96 -0
- package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-document.component.tsx +236 -0
- package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.scss +98 -0
- package/src/billing/dashboard/v2/claim-visits/claim-invoice-details/claim-invoice-panel.component.tsx +292 -0
- package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +133 -0
- package/src/billing/dashboard/v2/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +217 -0
- package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-by-token.component.tsx +150 -0
- package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.scss +13 -0
- package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-details-page.component.tsx +116 -0
- package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.scss +338 -0
- package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.tsx +616 -0
- package/src/billing/dashboard/v2/claim-visits/claim-visits.component.scss +5 -0
- package/src/billing/dashboard/v2/claim-visits/claim-visits.component.tsx +133 -0
- package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
- package/src/billing/dashboard/v2/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
- package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +17 -0
- package/src/billing/dashboard/v2/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +56 -0
- package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
- package/src/billing/dashboard/v2/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
- package/src/billing/dashboard/v2/claim-visits/modal/submit-claim/submit-claim.modal.tsx +204 -0
- package/src/billing/dashboard/v2/claim-visits/shared/_empty-state.scss +28 -0
- package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.scss +298 -0
- package/src/billing/dashboard/v2/claim-visits/shared/record-cards.component.tsx +252 -0
- package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.scss +42 -0
- package/src/billing/dashboard/v2/claim-visits/shared/record-details.workspace.tsx +54 -0
- package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.scss +61 -0
- package/src/billing/dashboard/v2/claim-visits/shared/record-table.component.tsx +150 -0
- package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
- package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
- package/src/billing/dashboard/v2/claim-visits/switch-intervention/switch-intervention.workspace.tsx +648 -0
- package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.scss +595 -0
- package/src/billing/dashboard/v2/claim-workspace/claim-workspace.component.tsx +810 -0
- package/src/billing/dashboard/v2/claim-workspace/claim-workspace.resource.ts +282 -0
- package/src/billing/dashboard/v2/claims-accounting/bill-utils.ts +134 -0
- package/src/billing/dashboard/v2/claims-accounting/claim-detail.component.tsx +346 -0
- package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.scss +546 -0
- package/src/billing/dashboard/v2/claims-accounting/claims-accounting.component.tsx +206 -0
- package/src/billing/dashboard/v2/claims-accounting/claims-accounting.resource.ts +337 -0
- package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.scss +90 -0
- package/src/billing/dashboard/v2/claims-accounting/invoice-document.component.tsx +90 -0
- package/src/billing/dashboard/v2/claims-accounting/remittances.component.tsx +169 -0
- package/src/billing/dashboard/v2/claims-accounting/remittances.resource.ts +46 -0
- package/src/billing/dashboard/v2/claims-accounting/status-meta.ts +25 -0
- package/src/billing/dashboard/v2/clearance/cash-patients.scss +18 -0
- package/src/billing/dashboard/v2/clearance/cash.component.tsx +149 -0
- package/src/billing/dashboard/v2/clearance/clearance.component.scss +84 -0
- package/src/billing/dashboard/v2/clearance/clearance.component.tsx +225 -0
- package/src/billing/dashboard/v2/clearance/pay-cash.component.tsx +176 -0
- package/src/billing/dashboard/v2/clearance/pay-cash.scss +28 -0
- package/src/billing/dashboard/v2/clearance/prepaid-services.component.tsx +112 -0
- package/src/billing/dashboard/v2/facility-bills/claim-status.ts +249 -0
- package/src/billing/dashboard/v2/facility-bills/facility-bills.component.scss +140 -0
- package/src/billing/dashboard/v2/facility-bills/facility-bills.component.tsx +687 -0
- package/src/billing/dashboard/v2/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
- package/src/billing/dashboard/v2/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +267 -0
- package/src/billing/dashboard/v2/facility-bills/preauths.component.tsx +124 -0
- package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.scss +22 -0
- package/src/billing/dashboard/v2/inpatient-requests/inpatient-requests.component.tsx +389 -0
- package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.scss +0 -0
- package/src/billing/dashboard/v2/inpatient-requests/modal/start-inpatient-claim/start-inpatient-claim.component.tsx +0 -0
- package/src/billing/dashboard/v2/new-facility-bills/bills-table.component.tsx +78 -0
- package/src/billing/dashboard/v2/new-facility-bills/bills-table.scss +18 -0
- package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.component.tsx +64 -0
- package/src/billing/dashboard/v2/new-facility-bills/new-facility-bills.scss +146 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/add-attachments.component.tsx +223 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/attachment.component.tsx +157 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/attachments.scss +92 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/case-summary/case-summary.tsx +326 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +269 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +124 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.component.tsx +152 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/final-bill.scss +225 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +173 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/generate-attachments.component.tsx +360 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.component.tsx +151 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/invoice.scss +225 -0
- package/src/billing/dashboard/v2/patient-bill-details/attachments/type.ts +44 -0
- package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.scss +107 -0
- package/src/billing/dashboard/v2/patient-bill-details/bill-details/bill-details.tsx +508 -0
- package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.scss +30 -0
- package/src/billing/dashboard/v2/patient-bill-details/bill-details-page.component.tsx +94 -0
- package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.scss +89 -0
- package/src/billing/dashboard/v2/patient-bill-details/claim-details/claim-details-skeleton.component.tsx +53 -0
- package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.scss +32 -0
- package/src/billing/dashboard/v2/patient-bill-details/claim-details/patient-claim-details.component.tsx +215 -0
- package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
- package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
- package/src/billing/dashboard/v2/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +186 -0
- package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.scss +153 -0
- package/src/billing/dashboard/v2/patient-bill-details/patient-bill-details.tsx +458 -0
- package/src/billing/dashboard/v2/patient-bill-details/payment-mode.ts +124 -0
- package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.scss +27 -0
- package/src/billing/dashboard/v2/patient-bill-details/workspaces/add-claim-line/add-claim-line.workspace.tsx +222 -0
- package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.scss +27 -0
- package/src/billing/dashboard/v2/patient-bill-details/workspaces/bill-item-payment/bill-item-payment.workspace.tsx +109 -0
- package/src/billing/dashboard/v2/preauth/preauth-attachments.component.tsx +389 -0
- package/src/billing/dashboard/v2/preauth/preauth-list.component.scss +38 -0
- package/src/billing/dashboard/v2/preauth/preauth-list.component.tsx +226 -0
- package/src/billing/dashboard/v2/preauth/preauth-status-tag.component.tsx +75 -0
- package/src/billing/dashboard/v2/preauth/preauth-typed-fields.md +125 -0
- package/src/billing/dashboard/v2/preauth/preauth.resource.ts +1067 -0
- package/src/billing/dashboard/v2/preauth/preauth.workspace.scss +91 -0
- package/src/billing/dashboard/v2/preauth/preauth.workspace.tsx +1802 -0
- package/src/billing/dashboard/v2/preauth/preauthorizations-tab.component.tsx +45 -0
- package/src/billing/dashboard/v2/sha-claims/sha-claims-table.component.tsx +36 -0
- package/src/billing/dashboard/v2/sha-claims/sha-claims.component.tsx +60 -0
- package/src/billing/dashboard/v2/sha-claims/sha-claims.scss +8 -0
- package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.scss +17 -0
- package/src/billing/dashboard/v2/shared/dash-board-card/dash-board-card.component.tsx +15 -0
- package/src/billing/dashboard/v2/shared/empty-state.component.scss +24 -0
- package/src/billing/dashboard/v2/shared/empty-state.component.tsx +13 -0
- package/src/billing/dashboard/v2/shared/scroll-to-top.component.scss +54 -0
- package/src/billing/dashboard/v2/shared/scroll-to-top.component.tsx +54 -0
- package/src/billing/dashboard/v2/shared/table-toolbar.component.scss +77 -0
- package/src/billing/dashboard/v2/shared/table-toolbar.component.tsx +48 -0
- package/src/billing/dashboard/v2/types/index.ts +507 -0
- package/src/billing/dashboard/v3/active-visits/active-visits.component.tsx +256 -0
- package/src/billing/dashboard/v3/active-visits/active-visits.resource.ts +57 -0
- package/src/billing/dashboard/v3/active-visits/active-visits.scss +15 -0
- package/src/billing/dashboard/v3/cash-checklist/bill-document.component.scss +90 -0
- package/src/billing/dashboard/v3/cash-checklist/bill-document.component.tsx +101 -0
- package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.scss +199 -0
- package/src/billing/dashboard/v3/cash-checklist/cash-checklist.component.tsx +361 -0
- package/src/billing/dashboard/v3/cash-checklist/cash-checklist.resource.ts +240 -0
- package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.scss +246 -0
- package/src/billing/dashboard/v3/cash-checklist/payment-drawer.component.tsx +182 -0
- package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.scss +0 -0
- package/src/billing/dashboard/v3/claim-visits/claim-diagnosis-details/claim-diagnosis-details.component.tsx +44 -0
- package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.scss +5 -0
- package/src/billing/dashboard/v3/claim-visits/claim-doctors/claim-doctors.tsx +42 -0
- package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.scss +10 -0
- package/src/billing/dashboard/v3/claim-visits/claim-documents/claim-documents.tsx +25 -0
- package/src/billing/dashboard/v3/claim-visits/claim-intervention-details/claim-intervention-details.component.tsx +223 -0
- package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.scss +6 -0
- package/src/billing/dashboard/v3/claim-visits/claim-invoice-details/claim-invoice-details.component.tsx +85 -0
- package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.scss +0 -0
- package/src/billing/dashboard/v3/claim-visits/claim-invoice-line-details/claim-invoice-line-details.component.tsx +109 -0
- package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.scss +97 -0
- package/src/billing/dashboard/v3/claim-visits/claim-visit-details/claim-visit-details.component.tsx +346 -0
- package/src/billing/dashboard/v3/claim-visits/claim-visits.component.scss +5 -0
- package/src/billing/dashboard/v3/claim-visits/claim-visits.component.tsx +139 -0
- package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.scss +5 -0
- package/src/billing/dashboard/v3/claim-visits/modal/claim-doctors/add-claim-doctor/add-claim-doctor.modal.tsx +49 -0
- package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.scss +7 -0
- package/src/billing/dashboard/v3/claim-visits/modal/claim-invoice-lines/claim-invoice-lines.modal.tsx +35 -0
- package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.scss +6 -0
- package/src/billing/dashboard/v3/claim-visits/modal/claim-visit-details/claim-visit-details.modal.tsx +33 -0
- package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.scss +0 -0
- package/src/billing/dashboard/v3/claim-visits/modal/close-claim/close-claim.modal.tsx +129 -0
- package/src/billing/dashboard/v3/claim-visits/modal/submit-claim/submit-claim.modal.tsx +204 -0
- package/src/billing/dashboard/v3/claim-visits/payer-preview/index.scss +140 -0
- package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-tile.component.tsx +55 -0
- package/src/billing/dashboard/v3/claim-visits/payer-preview/payer-preview-workspace.component.tsx +157 -0
- package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-doctors.component.tsx +54 -0
- package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-lines.component.tsx +48 -0
- package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-claim-notes.component.tsx +47 -0
- package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-diagnoses.component.tsx +44 -0
- package/src/billing/dashboard/v3/claim-visits/payer-preview/tables/payer-interventions.component.tsx +44 -0
- package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.resource.ts +51 -0
- package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.scss +191 -0
- package/src/billing/dashboard/v3/claim-visits/switch-intervention/switch-intervention.workspace.tsx +648 -0
- package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.scss +595 -0
- package/src/billing/dashboard/v3/claim-workspace/claim-workspace.component.tsx +810 -0
- package/src/billing/dashboard/v3/claim-workspace/claim-workspace.resource.ts +282 -0
- package/src/billing/dashboard/v3/claims-accounting/bill-utils.ts +134 -0
- package/src/billing/dashboard/v3/claims-accounting/claim-detail.component.tsx +346 -0
- package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.scss +546 -0
- package/src/billing/dashboard/v3/claims-accounting/claims-accounting.component.tsx +206 -0
- package/src/billing/dashboard/v3/claims-accounting/claims-accounting.resource.ts +337 -0
- package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.scss +90 -0
- package/src/billing/dashboard/v3/claims-accounting/invoice-document.component.tsx +90 -0
- package/src/billing/dashboard/v3/claims-accounting/remittances.component.tsx +169 -0
- package/src/billing/dashboard/v3/claims-accounting/remittances.resource.ts +46 -0
- package/src/billing/dashboard/v3/claims-accounting/status-meta.ts +25 -0
- package/src/billing/dashboard/v3/clearance/clearance.component.scss +100 -0
- package/src/billing/dashboard/v3/clearance/clearance.component.tsx +0 -0
- package/src/billing/dashboard/v3/clearance/prepaid-services.component.tsx +112 -0
- package/src/billing/dashboard/v3/facility-bills/claim-status.ts +243 -0
- package/src/billing/dashboard/v3/facility-bills/facility-bills.component.scss +9 -0
- package/src/billing/dashboard/v3/facility-bills/facility-bills.component.tsx +172 -0
- package/src/billing/dashboard/v3/facility-bills/preauths-datatables/pending-preauths.component.tsx +132 -0
- package/src/billing/dashboard/v3/facility-bills/preauths-datatables/preauth-preview-table.component.tsx +232 -0
- package/src/billing/dashboard/v3/facility-bills/preauths.component.tsx +124 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/add-attachments.component.tsx +223 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/attachment.component.tsx +157 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/attachments.scss +92 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary-helper.ts +58 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.scss +295 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/case-summary/case-summary.tsx +273 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.scss +238 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/dialysis/dialysis-chart.tsx +314 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.scss +96 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/discharge-summary/discharge-summary.tsx +126 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/final-bill.component.tsx +75 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.scss +182 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/general-discharge-summary/general-discharge-summary.tsx +253 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/generate-attachments.component.tsx +343 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.component.tsx +150 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/invoice.scss +225 -0
- package/src/billing/dashboard/v3/patient-bill-details/attachments/type.ts +259 -0
- package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.scss +13 -0
- package/src/billing/dashboard/v3/patient-bill-details/bill-details/bill-details.tsx +235 -0
- package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.scss +0 -0
- package/src/billing/dashboard/v3/patient-bill-details/claim-details/patient-claim-details.component.tsx +69 -0
- package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.scss +0 -0
- package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-diagnosis/add-claim-diagnosis.modal.tsx +99 -0
- package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.scss +14 -0
- package/src/billing/dashboard/v3/patient-bill-details/modals/add-claim-line/add-claim-line.modal.tsx +111 -0
- package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.scss +6 -0
- package/src/billing/dashboard/v3/patient-bill-details/modals/bill-item-payment/bill-item-payment.modal.tsx +139 -0
- package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.scss +85 -0
- package/src/billing/dashboard/v3/patient-bill-details/patient-bill-details.tsx +342 -0
- package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.scss +0 -0
- package/src/billing/dashboard/v3/patient-bill-details/visit-diagnosis-details/visit-diagnosis-details.component.tsx +92 -0
- package/src/billing/dashboard/v3/preauth/preauth-attachments.component.tsx +389 -0
- package/src/billing/dashboard/v3/preauth/preauth-list.component.scss +34 -0
- package/src/billing/dashboard/v3/preauth/preauth-list.component.tsx +281 -0
- package/src/billing/dashboard/v3/preauth/preauth-status-tag.component.tsx +75 -0
- package/src/billing/dashboard/v3/preauth/preauth-typed-fields.md +125 -0
- package/src/billing/dashboard/v3/preauth/preauth.resource.ts +1072 -0
- package/src/billing/dashboard/v3/preauth/preauth.workspace.scss +91 -0
- package/src/billing/dashboard/v3/preauth/preauth.workspace.tsx +1806 -0
- package/src/billing/dashboard/v3/preauth/preauthorizations-tab.component.tsx +45 -0
- package/src/billing/dashboard/v3/shared/empty-state.component.scss +25 -0
- package/src/billing/dashboard/v3/shared/empty-state.component.tsx +13 -0
- package/src/billing/dashboard/v3/shared/table-toolbar.component.scss +64 -0
- package/src/billing/dashboard/v3/shared/table-toolbar.component.tsx +48 -0
- package/src/billing/dashboard/v3/types/index.ts +381 -0
- package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.extension.tsx +55 -0
- package/src/billing/extensions/generate-order-bill-button/generate-order-bill-button.scss +16 -0
- package/src/billing/extensions/visit-billing/visit-billing.extension.scss +0 -0
- package/src/billing/extensions/visit-billing/visit-billing.extension.tsx +509 -0
- package/src/billing/invoice/bill.resource.ts +47 -0
- package/src/billing/invoice/invoice-header/header-card/header-card.scss +17 -0
- package/src/billing/invoice/invoice-header/header-card/header-card.tsx +21 -0
- package/src/billing/invoice/invoice.scss +113 -0
- package/src/billing/invoice/invoice.tsx +1441 -0
- package/src/billing/invoice/line-items/line-items.scss +0 -0
- package/src/billing/invoice/line-items/line-items.tsx +120 -0
- package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.scss +23 -0
- package/src/billing/invoice/modal/delete-bill-item/delete-bill-item.modal.tsx +114 -0
- package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.scss +0 -0
- package/src/billing/invoice/modal/edit-bill-item/edit-bill-item.modal.tsx +122 -0
- package/src/billing/invoice/payment-details/payment-details.scss +0 -0
- package/src/billing/invoice/payment-details/payment-details.tsx +43 -0
- package/src/billing/invoice/print-invoice/print-receipt.component.tsx +44 -0
- package/src/billing/invoice/print-invoice/print-receipt.scss +14 -0
- package/src/billing/maternity-discharge.resource.ts +21 -0
- package/src/billing/types/index.ts +354 -0
- package/src/billing/utils/index.ts +17 -0
- package/src/billing/widgets/billingTotalsRow.component.scss +0 -0
- package/src/billing/widgets/billingTotalsRow.component.tsx +712 -0
- package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.resource.ts +130 -0
- package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.scss +58 -0
- package/src/billing/workspaces/create-order-bill-form-workspace/create-order-bill-form.workspace.tsx +645 -0
- package/src/billing/workspaces/create-order-bill-form-workspace/schema.ts +12 -0
- package/src/bookings/bookings.component.scss +7 -0
- package/src/bookings/bookings.component.tsx +35 -0
- package/src/bookings/daily/daily-bookings.resource.ts +2 -1
- package/src/case-summary/case-summary.extension.scss +13 -0
- package/src/case-summary/case-summary.extension.tsx +40 -0
- package/src/case-summary/case-summary.resource.test.ts +69 -0
- package/src/case-summary/case-summary.resource.ts +52 -0
- package/src/case-summary/components/case-summary-printable.component.scss +174 -0
- package/src/case-summary/components/case-summary-printable.component.tsx +288 -0
- package/src/case-summary/components/case-summary-printable.utils.ts +51 -0
- package/src/case-summary/types/case-summary.types.ts +152 -0
- package/src/claims/claims.component.scss +70 -0
- package/src/claims/claims.component.tsx +713 -0
- package/src/claims/claims.resource.ts +1274 -0
- package/src/claims/index.ts +340 -0
- package/src/claims/interventions.resource.ts +131 -0
- package/src/claims/utils.ts +64 -0
- package/src/config-schema.ts +119 -1
- package/src/context/patient-context.tsx +27 -0
- package/src/createDashboardLink.tsx +9 -0
- package/src/dashboard/charts/chart.component.scss +24 -0
- package/src/dashboard/charts/chart.component.tsx +56 -0
- package/src/dashboard/dashboard.component.scss +48 -3
- package/src/dashboard/dashboard.component.tsx +26 -36
- package/src/dashboard/overview/overview.component.scss +40 -59
- package/src/dashboard/overview/overview.component.tsx +53 -41
- package/src/dashboard-meta/accounting-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/admissions-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/billing-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/bookings-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/case-summary.meta.ts +6 -0
- package/src/dashboard-meta/consultation-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/dha-workflow-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/inpatient-admissions.meta.ts +6 -0
- package/src/dashboard-meta/maternity-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/mch-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/pharmacy-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/queue-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/registers-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/registry-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/service-queue-admin.meta.ts +6 -0
- package/src/dashboard-meta/specialized-clinics-dashboard.meta.ts +6 -0
- package/src/dashboard-meta/triage-dashboard.meta.ts +6 -0
- package/src/index.ts +177 -6
- package/src/mnch/maternity/maternity-queues.component.scss +7 -0
- package/src/mnch/maternity/maternity-queues.component.tsx +32 -0
- package/src/mnch/maternity/queues/triage/maternity-triage.tsx +15 -0
- package/src/mnch/mch/mch-queues.component.scss +10 -0
- package/src/mnch/mch/mch-queues.component.tsx +36 -0
- package/src/mnch/mch/queues/consultation/mch-consultation.tsx +18 -0
- package/src/mnch/mch/queues/triage/mch-triage.tsx +15 -0
- package/src/mnch/mnch-root.tsx +17 -0
- package/src/mortuary/mortuary.component.tsx +13 -0
- package/src/pharmacy/pharmacy.component.scss +16 -0
- package/src/pharmacy/pharmacy.component.tsx +11 -6
- package/src/registers/registers.component.tsx +8 -0
- package/src/registry/drawer/emr-compare.component.scss +263 -0
- package/src/registry/drawer/emr-compare.component.tsx +302 -0
- package/src/registry/drawer/emr-compare.resource.ts +181 -0
- package/src/registry/drawer/emr-create-preview.component.tsx +123 -0
- package/src/registry/drawer/otp-verification-step.component.tsx +398 -0
- package/src/registry/drawer/pomsf-balance.util.test.ts +177 -0
- package/src/registry/drawer/pomsf-balance.util.ts +79 -0
- package/src/registry/drawer/verification.resource.ts +60 -0
- package/src/registry/drawer/workflow-drawer.component.scss +1242 -0
- package/src/registry/drawer/workflow-drawer.component.tsx +1476 -0
- package/src/registry/eligibility/eligibility-details/eligibility-details.scss +38 -0
- package/src/registry/eligibility/eligibility-details/eligibility-details.tsx +101 -0
- package/src/registry/eligibility/eliigibility-tags/eligibility-tags.scss +16 -0
- package/src/registry/eligibility/eliigibility-tags/eligibility-tags.tsx +120 -0
- package/src/registry/eligibility/modal/eligibility-details.modal.scss +0 -0
- package/src/registry/eligibility/modal/eligibility-details.modal.tsx +45 -0
- package/src/registry/hie.resource.ts +408 -0
- package/src/registry/hie.types.ts +57 -0
- package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.scss +277 -0
- package/src/registry/modal/biometrics-verification-modal/biometrics-verification-modal.tsx +218 -0
- package/src/registry/modal/biometrics-verification-modal/type.ts +39 -0
- package/src/registry/modal/client-details-modal/client-details-modal.tsx +65 -29
- package/src/registry/modal/otp-modal/otp-whitlisting-modal.component.tsx +809 -0
- package/src/registry/modal/otp-modal/otp-whitlisting-modal.scss +354 -0
- package/src/registry/modal/otp-modal/otp-whitlisting.scss +0 -0
- package/src/registry/modal/otp-verification-modal/claims-consent.scss +72 -0
- package/src/registry/modal/otp-verification-modal/claims-consent.tsx +135 -0
- package/src/registry/modal/otp-verification-modal/extension/claims-consent.extension.tsx +124 -0
- package/src/registry/modal/otp-verification-modal/otp-verification-modal.scss +30 -0
- package/src/registry/modal/otp-verification-modal/otp-verification-modal.tsx +154 -54
- package/src/registry/modal/send-to-triage/payment-details.tsx +120 -0
- package/src/registry/modal/send-to-triage/payment-method.component.tsx +54 -0
- package/src/registry/modal/send-to-triage/send-to-queue.modal.tsx +980 -0
- package/src/registry/modal/send-to-triage/send-to-triage.modal.scss +156 -3
- package/src/registry/modal/send-to-triage/send-to-triage.modal.tsx +1101 -131
- package/src/registry/modal/start-patient-visit/start-patient-visit.modal.scss +34 -0
- package/src/registry/modal/start-patient-visit/start-patient-visit.modal.tsx +231 -0
- package/src/registry/payment-details/payment-options/payment-options.scss +13 -0
- package/src/registry/payment-details/payment-options/payment-options.tsx +61 -14
- package/src/registry/registration-list/registration-list.component.scss +32 -0
- package/src/registry/registration-list/registration-list.component.tsx +103 -0
- package/src/registry/registry-entry.tsx +11 -0
- package/src/registry/registry.component.scss +402 -78
- package/src/registry/registry.component.tsx +547 -221
- package/src/registry/registry.resource.ts +22 -3
- package/src/registry/types/index.ts +118 -9
- package/src/registry/utils/error-handler.ts +54 -0
- package/src/registry/utils/format-dependant-display-data.ts +1 -1
- package/src/registry/utils/hie-client-adapter.ts +6 -3
- package/src/registry/utils/mask-data.ts +40 -0
- package/src/registry/utils/phone-number-formatter.ts +11 -0
- package/src/resources/dashboard.resource.ts +20 -0
- package/src/resources/identifier-types.ts +2 -0
- package/src/resources/patient-resource.ts +6 -1
- package/src/resources/queue.resource.ts +24 -1
- package/src/resources/superset.resource.ts +21 -0
- package/src/resources/visit.resource.ts +19 -1
- package/src/root.component.tsx +8 -5
- package/src/routes.json +417 -23
- package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.scss +31 -0
- package/src/service-queues/admin/queue/modal/create-queue/create-queue.modal.tsx +153 -0
- package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.scss +0 -0
- package/src/service-queues/admin/queue/modal/edit-queue/edit-queue.modal.tsx +182 -0
- package/src/service-queues/admin/queue/queue-list/queue-list.scss +33 -0
- package/src/service-queues/admin/queue/queue-list/queue-list.tsx +113 -0
- package/src/service-queues/admin/queue-entry/queue-entry-list.component.scss +6 -0
- package/src/service-queues/admin/queue-entry/queue-entry-list.component.tsx +137 -0
- package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.scss +31 -0
- package/src/service-queues/admin/queue-room/modal/create-queue-room/create-queue-room.modal.tsx +137 -0
- package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.scss +0 -0
- package/src/service-queues/admin/queue-room/modal/edit-queue-room/edit-queue-room.modal.tsx +146 -0
- package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.scss +22 -0
- package/src/service-queues/admin/queue-room/queue-room-list/queue-room-list.tsx +120 -0
- package/src/service-queues/admin/service-queue-admin-dashboard.component.scss +6 -0
- package/src/service-queues/admin/service-queue-admin-dashboard.component.tsx +34 -0
- package/src/service-queues/consultation/consultation.component.tsx +9 -0
- package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.scss +30 -0
- package/src/service-queues/extensions/service-queue-patient-banner/service-queue-patient-banner.tsx +108 -0
- package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.scss +26 -0
- package/src/service-queues/modals/daily-report-patient-list/daily-report-patient-list.tsx +110 -0
- package/src/service-queues/modals/move/move-patient.component.scss +1 -1
- package/src/service-queues/modals/move/move-patient.component.tsx +31 -17
- package/src/service-queues/queue-list/check-in.service.ts +26 -0
- package/src/service-queues/queue-list/queue-list.component.scss +37 -0
- package/src/service-queues/queue-list/queue-list.component.tsx +256 -56
- package/src/service-queues/service-queue/service-queue.component.tsx +151 -8
- package/src/service-queues/service-queue/stats/stat-details/stat-details.component.scss +5 -0
- package/src/service-queues/service-queue/stats/stat-details/stat-details.component.tsx +36 -7
- package/src/service-queues/service-queue.tsx +22 -16
- package/src/service-queues/service-queues.resource.ts +197 -1
- package/src/service-queues/service.resource.ts +1 -1
- package/src/shared/constants/concepts.ts +50 -0
- package/src/shared/constants/patient-category.ts +6 -0
- package/src/shared/constants/patient-type.ts +10 -0
- package/src/shared/constants/visit-types.ts +7 -0
- package/src/shared/services/billing.resource.ts +75 -0
- package/src/shared/services/claims.resource.ts +47 -0
- package/src/shared/services/client-payment-mode.resource.ts +27 -0
- package/src/shared/services/client-payment.resource.ts +17 -0
- package/src/shared/services/consultation-clearance.resource.ts +210 -0
- package/src/shared/services/eligibility.resource.ts +20 -0
- package/src/shared/services/encounters.resource.ts +33 -0
- package/src/shared/services/location.resource.ts +9 -0
- package/src/shared/types/index.ts +156 -0
- package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.scss +42 -0
- package/src/shared/ui/aggregate-stat-card/aggregate-stat-card.tsx +42 -0
- package/src/shared/ui/confirm-modal/confirm.modal.scss +18 -0
- package/src/shared/ui/confirm-modal/confirm.modal.tsx +38 -0
- package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.scss +39 -0
- package/src/shared/ui/facility-worker-slot/facility-worker.component-slot.component.tsx +19 -0
- package/src/shared/ui/otp-input/otp-input.component.scss +14 -0
- package/src/shared/ui/otp-input/otp-input.component.tsx +97 -0
- package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.tsx +6 -3
- package/src/shared/ui/timer/timer.component.scss +5 -0
- package/src/shared/ui/timer/timer.component.tsx +40 -0
- package/src/shared/utils/get-base-url.ts +10 -0
- package/src/shared/utils/get-tag-type.ts +75 -0
- package/src/side-nav-menu/mnch-nav-link-config.ts +16 -0
- package/src/side-nav-menu/mnch-nav-links.tsx +42 -0
- package/src/side-nav-menu/nav-link-config.ts +1 -5
- package/src/side-nav-menu/specialized-clinics-nav-link-config.ts +36 -0
- package/src/side-nav-menu/specialized-clinics-nav-links.tsx +42 -0
- package/src/specialized-clinics/critital-care-unit/critical-care-unit-queues.component.scss +7 -0
- package/src/specialized-clinics/critital-care-unit/critical-care-unit-queues.component.tsx +36 -0
- package/src/specialized-clinics/critital-care-unit/queues/consultation/critical-care-unit-consultation.tsx +15 -0
- package/src/specialized-clinics/critital-care-unit/queues/triage/critical-care-unit-triage.tsx +15 -0
- package/src/specialized-clinics/dental/dental-queues.component.scss +7 -0
- package/src/specialized-clinics/dental/dental-queues.component.tsx +36 -0
- package/src/specialized-clinics/dental/queues/consultation/dental-consultation.tsx +15 -0
- package/src/specialized-clinics/dental/queues/triage/dental-triage.tsx +15 -0
- package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.scss +7 -0
- package/src/specialized-clinics/diagnostic-and-imaging/diagnostic-and-imaging.component.tsx +36 -0
- package/src/specialized-clinics/diagnostic-and-imaging/queues/consultation/diagnosis-and-imaging-consultation.tsx +15 -0
- package/src/specialized-clinics/diagnostic-and-imaging/queues/triage/diagnosis-and-imaging-triage.tsx +15 -0
- package/src/specialized-clinics/oncology/oncology-queues.component.scss +7 -0
- package/src/specialized-clinics/oncology/oncology-queues.component.tsx +36 -0
- package/src/specialized-clinics/oncology/queues/consultation/oncology-consultation.tsx +15 -0
- package/src/specialized-clinics/oncology/queues/triage/oncology-triage.tsx +15 -0
- package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.scss +7 -0
- package/src/specialized-clinics/ophthalmology/ophthalmology-queues.component.tsx +36 -0
- package/src/specialized-clinics/ophthalmology/queues/consultation/ophthalmology-consultation.tsx +15 -0
- package/src/specialized-clinics/ophthalmology/queues/triage/ophthalmology-triage.tsx +15 -0
- package/src/specialized-clinics/psychiatry/psychiatry-queues.component.scss +7 -0
- package/src/specialized-clinics/psychiatry/psychiatry-queues.component.tsx +36 -0
- package/src/specialized-clinics/psychiatry/queues/consultation/psychiatry-consultation.tsx +15 -0
- package/src/specialized-clinics/psychiatry/queues/triage/psychiatry-triage.tsx +15 -0
- package/src/specialized-clinics/renal/queues/consultation/dialysis-consultation.tsx +15 -0
- package/src/specialized-clinics/renal/queues/triage/renal-triage.tsx +15 -0
- package/src/specialized-clinics/renal/renal-queues.component.scss +7 -0
- package/src/specialized-clinics/renal/renal-queues.component.tsx +36 -0
- package/src/specialized-clinics/specialized-clinics-root.tsx +27 -0
- package/src/triage/triage.component.scss +6 -0
- package/src/triage/triage.component.tsx +4 -0
- package/src/types/types.ts +56 -1
- package/webpack.config.js +54 -1
- package/dist/104.js +0 -2
- package/dist/104.js.map +0 -1
- package/dist/15.js +0 -1
- package/dist/15.js.map +0 -1
- package/dist/184.js +0 -2
- package/dist/184.js.map +0 -1
- package/dist/197.js +0 -1
- package/dist/255.js +0 -1
- package/dist/255.js.map +0 -1
- package/dist/300.js +0 -1
- package/dist/335.js +0 -1
- package/dist/339.js +0 -1
- package/dist/339.js.map +0 -1
- package/dist/353.js +0 -1
- package/dist/353.js.map +0 -1
- package/dist/420.js +0 -1
- package/dist/420.js.map +0 -1
- package/dist/540.js +0 -2
- package/dist/540.js.map +0 -1
- package/dist/55.js +0 -1
- package/dist/652.js +0 -1
- package/dist/709.js +0 -1
- package/dist/709.js.map +0 -1
- package/dist/710.js +0 -2
- package/dist/710.js.map +0 -1
- package/dist/729.js +0 -1
- package/dist/729.js.map +0 -1
- package/dist/752.js +0 -1
- package/dist/752.js.map +0 -1
- package/dist/833.js +0 -1
- package/dist/833.js.map +0 -1
- package/dist/907.js +0 -1
- package/dist/907.js.map +0 -1
- package/dist/91.js +0 -1
- package/dist/91.js.map +0 -1
- package/dist/93.js +0 -1
- package/dist/93.js.map +0 -1
- package/dist/943.js +0 -1
- package/dist/943.js.map +0 -1
- package/dist/99.js +0 -1
- /package/dist/{104.js.LICENSE.txt → 2177.js.LICENSE.txt} +0 -0
- /package/dist/{184.js.LICENSE.txt → 3184.js.LICENSE.txt} +0 -0
- /package/dist/{540.js.LICENSE.txt → 6540.js.LICENSE.txt} +0 -0
- /package/dist/{710.js.LICENSE.txt → 7830.js.LICENSE.txt} +0 -0
- /package/dist/{810.js.LICENSE.txt → 9583.js.LICENSE.txt} +0 -0
- /package/src/{service-queues/service-queue/stats → shared/ui}/stat-card/stat-card.component.scss +0 -0
package/src/billing/dashboard/v2/claim-visits/claim-visit-details/claim-visit-details.component.tsx
ADDED
|
@@ -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;
|