@kenyaemr/esm-billing-app 5.4.1-pre.2075 → 5.4.1-pre.2083

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.
@@ -1,24 +1,20 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import { Edit } from '@carbon/react/icons';
3
- import { showModal, launchWorkspace } from '@openmrs/esm-framework';
3
+ import { launchWorkspace } from '@openmrs/esm-framework';
4
4
  import { BaseOrderButton } from './base-order-button.component';
5
5
  import { useMedicationOrderAction, useOrderByUuid } from '../hooks/useMedicationOrderAction';
6
- import { launchPrescriptionEditWorkspace, useModalHandler } from '../hooks/useModalHandler';
6
+ import { launchPrescriptionEditWorkspace } from '../hooks/useModalHandler';
7
7
  import { useTranslation } from 'react-i18next';
8
8
  export interface MedicationOrderButtonProps {
9
9
  medicationRequestBundle?: {
10
10
  request: fhir.MedicationRequest;
11
11
  };
12
- modalName?: string;
13
- additionalProps?: Record<string, unknown>;
14
12
  actionText?: string;
15
13
  closeable?: boolean;
16
14
  }
17
15
 
18
16
  export const MedicationOrderButton: React.FC<MedicationOrderButtonProps> = ({
19
17
  medicationRequestBundle,
20
- modalName,
21
- additionalProps,
22
18
  actionText,
23
19
  closeable = true,
24
20
  }) => {
@@ -35,14 +31,13 @@ export const MedicationOrderButton: React.FC<MedicationOrderButtonProps> = ({
35
31
  const { data: order, isLoading: isOrderLoading } = useOrderByUuid(medicationRequestBundle?.request?.id);
36
32
  const isLoading = isMedicationOrderLoading && isOrderLoading;
37
33
 
38
- const { handleModalClose } = useModalHandler(additionalProps?.mutateUrl as string);
39
34
  const buttonText = actionText ?? defaultButtonText;
40
35
  const launchModal = useCallback(() => {
41
36
  if (shouldShowBillModal) {
42
- const dispose = showModal('create-bill-item-modal', {
43
- patientUuid,
37
+ launchWorkspace('create-bill-workspace', {
38
+ order,
39
+ patientUuid: order?.patient?.uuid,
44
40
  medicationRequestBundle,
45
- closeModal: () => dispose(),
46
41
  });
47
42
  return;
48
43
  }
@@ -50,7 +45,7 @@ export const MedicationOrderButton: React.FC<MedicationOrderButtonProps> = ({
50
45
  if (dispenseFormProps) {
51
46
  launchWorkspace('dispense-workspace', dispenseFormProps);
52
47
  }
53
- }, [shouldShowBillModal, medicationRequestBundle, dispenseFormProps, patientUuid]);
48
+ }, [shouldShowBillModal, medicationRequestBundle, dispenseFormProps, patientUuid, order]);
54
49
 
55
50
  if (!closeable) {
56
51
  return null;
@@ -13,12 +13,10 @@ const ORDER_TYPE = {
13
13
  const OrderActionButton: React.FC<Record<string, any>> = (props) => {
14
14
  const conceptClass = props?.order?.concept?.conceptClass?.uuid;
15
15
  if (Object.hasOwn(props, 'medicationRequestBundle')) {
16
- const { medicationRequestBundle, modalName, additionalProps, actionText, closeable } = props;
16
+ const { medicationRequestBundle, actionText, closeable } = props;
17
17
  return (
18
18
  <MedicationOrderButton
19
19
  medicationRequestBundle={medicationRequestBundle}
20
- modalName={modalName}
21
- additionalProps={additionalProps}
22
20
  actionText={actionText}
23
21
  closeable={closeable}
24
22
  />
@@ -26,15 +24,8 @@ const OrderActionButton: React.FC<Record<string, any>> = (props) => {
26
24
  }
27
25
 
28
26
  if (props.order?.orderType?.name === ORDER_TYPE.LAB) {
29
- const { order, modalName, additionalProps, actionText } = props;
30
- return (
31
- <GenericOrderButton
32
- order={order}
33
- modalName={modalName}
34
- additionalProps={additionalProps}
35
- actionText={actionText}
36
- />
37
- );
27
+ const { order, actionText } = props;
28
+ return <GenericOrderButton order={order} actionText={actionText} />;
38
29
  }
39
30
 
40
31
  if (conceptClass === ORDER_TYPE.PROCEDURE) {
@@ -22,8 +22,11 @@ export function useMedicationOrderAction(medicationRequestBundle?: MedicationReq
22
22
 
23
23
  const billableItem =
24
24
  billableServices?.filter((service) => {
25
- const stockItem = service?.stockItem.split(':')[0];
26
- return stockItem === stockItemUuid;
25
+ if (service?.stockItem !== null && service?.stockItem !== undefined) {
26
+ const serviceStockItemUuid = service?.stockItem?.uuid;
27
+ return serviceStockItemUuid === stockItemUuid;
28
+ }
29
+ return false;
27
30
  }) || [];
28
31
  const billableItemServiceStatus = billableItem.some((item) => item.serviceStatus === 'DISABLED');
29
32
 
package/src/index.ts CHANGED
@@ -1,9 +1,30 @@
1
- import { defineConfigSchema, getAsyncLifecycle, getSyncLifecycle, registerFeatureFlag } from '@openmrs/esm-framework';
1
+ import { defineConfigSchema, getSyncLifecycle, registerFeatureFlag } from '@openmrs/esm-framework';
2
2
  import { createDashboardGroup, createDashboardLink } from '@openmrs/esm-patient-common-lib';
3
+
4
+ import { configSchema } from './config-schema';
5
+ import { benefitsPackageDashboardMeta, dashboardMeta } from './dashboard.meta';
6
+ const moduleName = '@kenyaemr/esm-billing-app';
7
+ const options = {
8
+ featureName: 'billing',
9
+ moduleName,
10
+ };
11
+
12
+ // Dashboard and Navigation Components
13
+ import { createLeftPanelLink } from './left-panel-link.component';
14
+ import rootComponent from './root.component';
15
+
16
+ // Billing Core Components
17
+ import BillingForm from './billing-form/billing-form.component';
18
+ import BillingCheckInForm from './billing-form/billing-checkin-form.component';
19
+ import BillHistory from './bill-history/bill-history.component';
20
+ import BillDepositWorkspace from './billing-form/bill-deposit/bill-deposit.workspace';
21
+
22
+ // Benefits Package Components
3
23
  import BenefitsPackage from './benefits-package/benefits-package.component';
4
24
  import Benefits from './benefits-package/benefits/benefits.component';
5
25
  import BenefitPreAuthForm from './benefits-package/forms/benefit-pre-auth-form.workspace';
6
- import BillHistory from './bill-history/bill-history.component';
26
+
27
+ // Bill Manager Components
7
28
  import CancelLineItem from './billable-services/bill-manager/bill-actions/cancel-line-item.component';
8
29
  import DeleteBillActionButton from './billable-services/bill-manager/bill-actions/delete-bill-action-button.component';
9
30
  import EditLineItem from './billable-services/bill-manager/bill-actions/edit-line-item.component';
@@ -12,48 +33,45 @@ import WaiveBillActionButton from './billable-services/bill-manager/bill-actions
12
33
  import { DeleteBillModal } from './billable-services/bill-manager/modals/delete-bill.modal';
13
34
  import { RefundBillModal } from './billable-services/bill-manager/modals/refund-bill.modal';
14
35
  import DeleteBillableServiceModal from './billable-services/bill-manager/modals/delete-billable-service.modal';
15
- import CreateBillItemModal from './billable-services/bill-manager/modals/create-bill-item-modal.component';
16
36
  import CancelBillWorkspace from './billable-services/bill-manager/workspaces/cancel-bill/cancel-bill.workspace';
17
37
  import { EditBillForm } from './billable-services/bill-manager/workspaces/edit-bill/edit-bill-form.workspace';
18
38
  import { WaiveBillForm } from './billable-services/bill-manager/workspaces/waive-bill/waive-bill-form.workspace';
39
+ import CreateBillWorkspace from './billable-services/bill-manager/workspaces/create-bill/create-bill.workspace';
40
+
41
+ // Billable Services Components
19
42
  import CommodityForm from './billable-services/billables/commodity/commodity-form.workspace';
20
43
  import AddServiceForm from './billable-services/billables/services/service-form.workspace';
44
+ import { BulkImportBillableServices } from './billable-services/bulk-import-billable-service.modal';
45
+
46
+ // Order Components
21
47
  import DrugOrder from './billable-services/billiable-item/drug-order/drug-order.component';
22
48
  import ImagingOrder from './billable-services/billiable-item/test-order/imaging-order.component';
23
49
  import LabOrder from './billable-services/billiable-item/test-order/lab-order.component';
24
50
  import PriceInfoOrder from './billable-services/billiable-item/test-order/price-info-order.componet';
25
51
  import ProcedureOrder from './billable-services/billiable-item/test-order/procedure-order.component';
26
- import { BulkImportBillableServices } from './billable-services/bulk-import-billable-service.modal';
27
- import BillingCheckInForm from './billing-form/billing-checkin-form.component';
28
- import BillingForm from './billing-form/billing-form.component';
52
+ import OrderActionButton from './billable-services/billiable-item/order-actions/components/order-action-button.component';
53
+
54
+ // Claims Management Components
29
55
  import ClaimsManagementOverview from './claims/claims-management/main/claims-overview-main.component';
30
56
  import { RetryClaimRequest } from './claims/claims-management/table/retry-claim-request.modal';
31
- import { configSchema } from './config-schema';
32
- import { benefitsPackageDashboardMeta, dashboardMeta } from './dashboard.meta';
57
+
58
+ // Payment Components
33
59
  import InitiatePaymentDialog from './invoice/payments/initiate-payment/initiate-payment.component';
34
60
  import VisitAttributeTags from './invoice/payments/visit-tags/visit-attribute.component';
35
61
  import ReceiptPrintPreviewModal from './invoice/print-bill-receipt/receipt-print-preview.modal';
36
- import { createLeftPanelLink } from './left-panel-link.component';
37
62
  import DeletePaymentModeModal from './payment-modes/delete-payment-mode.modal';
38
63
  import PaymentModeWorkspace from './payment-modes/payment-mode.workspace';
64
+ import RequirePaymentModal from './prompt-payment/prompt-payment-modal.component';
65
+
66
+ // Payment Points Components
39
67
  import { CreatePaymentPoint } from './payment-points/create-payment-point.component';
40
68
  import { ClockIn } from './payment-points/payment-point/clock-in.modal';
41
69
  import { ClockOut } from './payment-points/payment-point/clock-out.modal';
42
- import RequirePaymentModal from './prompt-payment/prompt-payment-modal.component';
43
- import rootComponent from './root.component';
44
- import OrderActionButton from './billable-services/billiable-item/order-actions/components/order-action-button.component';
45
- import CreateBillWorkspace from './billable-services/bill-manager/workspaces/create-bill/create-bill.workspace';
46
- import BillDepositWorkspace from './billing-form/bill-deposit/bill-deposit.workspace';
47
-
48
- const moduleName = '@kenyaemr/esm-billing-app';
49
-
50
- const options = {
51
- featureName: 'billing',
52
- moduleName,
53
- };
54
70
 
71
+ // Translation
55
72
  export const importTranslation = require.context('../translations', false, /.json$/, 'lazy');
56
73
 
74
+ // Dashboard Links
57
75
  export const billingSummaryDashboardLink = getSyncLifecycle(
58
76
  createDashboardLink({ ...dashboardMeta, icon: '', moduleName }),
59
77
  options,
@@ -68,6 +86,7 @@ export const billingDashboardLink = getSyncLifecycle(
68
86
  options,
69
87
  );
70
88
 
89
+ // Navigation Links
71
90
  export const billingOverviewLink = getSyncLifecycle(
72
91
  createLeftPanelLink({
73
92
  name: '',
@@ -123,6 +142,8 @@ export const chargeableItemsLink = getSyncLifecycle(
123
142
  }),
124
143
  options,
125
144
  );
145
+
146
+ // Claims Management Links
126
147
  export const claimsManagementSideNavGroup = getSyncLifecycle(
127
148
  createDashboardGroup({
128
149
  title: 'Claims Management',
@@ -131,6 +152,7 @@ export const claimsManagementSideNavGroup = getSyncLifecycle(
131
152
  }),
132
153
  options,
133
154
  );
155
+
134
156
  export const claimsManagementOverviewDashboardLink = getSyncLifecycle(
135
157
  createLeftPanelLink({
136
158
  name: 'claims-overview',
@@ -138,6 +160,7 @@ export const claimsManagementOverviewDashboardLink = getSyncLifecycle(
138
160
  }),
139
161
  options,
140
162
  );
163
+
141
164
  export const preAuthRequestsDashboardLink = getSyncLifecycle(
142
165
  createLeftPanelLink({
143
166
  name: 'preauth-requests',
@@ -145,7 +168,6 @@ export const preAuthRequestsDashboardLink = getSyncLifecycle(
145
168
  }),
146
169
  options,
147
170
  );
148
- export const claimsOverview = getSyncLifecycle(ClaimsManagementOverview, options);
149
171
 
150
172
  export const benefitsPackageDashboardLink = getSyncLifecycle(
151
173
  createDashboardLink({
@@ -156,19 +178,28 @@ export const benefitsPackageDashboardLink = getSyncLifecycle(
156
178
  options,
157
179
  );
158
180
 
181
+ // Core Components
159
182
  export const root = getSyncLifecycle(rootComponent, options);
160
183
  export const billingPatientSummary = getSyncLifecycle(BillHistory, options);
161
184
  export const billingCheckInForm = getSyncLifecycle(BillingCheckInForm, options);
162
- export const deleteBillableServiceModal = getSyncLifecycle(DeleteBillableServiceModal, options);
163
- export const createBillItemModal = getSyncLifecycle(CreateBillItemModal, options);
164
- export const createBillWorkspace = getSyncLifecycle(CreateBillWorkspace, options);
165
-
166
185
  export const billingForm = getSyncLifecycle(BillingForm, options);
167
- export const requirePaymentModal = getSyncLifecycle(RequirePaymentModal, options);
168
- export const visitAttributeTags = getSyncLifecycle(VisitAttributeTags, options);
169
- export const initiatePaymentDialog = getSyncLifecycle(InitiatePaymentDialog, options);
170
186
  export const billDepositWorkspace = getSyncLifecycle(BillDepositWorkspace, options);
171
187
 
188
+ // Bill Manager Components
189
+ export const deleteBillableServiceModal = getSyncLifecycle(DeleteBillableServiceModal, options);
190
+ export const createBillWorkspace = getSyncLifecycle(CreateBillWorkspace, options);
191
+ export const deleteBillModal = getSyncLifecycle(DeleteBillModal, options);
192
+ export const waiveBillForm = getSyncLifecycle(WaiveBillForm, options);
193
+ export const editBillForm = getSyncLifecycle(EditBillForm, options);
194
+ export const refundBillModal = getSyncLifecycle(RefundBillModal, options);
195
+ export const cancelBillWorkspace = getSyncLifecycle(CancelBillWorkspace, options);
196
+ export const waiveBillActionButton = getSyncLifecycle(WaiveBillActionButton, options);
197
+ export const deleteBillActionButton = getSyncLifecycle(DeleteBillActionButton, options);
198
+ export const refundLineItem = getSyncLifecycle(RefundLineItem, options);
199
+ export const cancelLineItem = getSyncLifecycle(CancelLineItem, options);
200
+ export const editLineItem = getSyncLifecycle(EditLineItem, options);
201
+
202
+ // Order Components
172
203
  export const labOrder = getSyncLifecycle(LabOrder, options);
173
204
  export const priceInfoOrder = getSyncLifecycle(PriceInfoOrder, options);
174
205
  export const procedureOrder = getSyncLifecycle(ProcedureOrder, options);
@@ -176,34 +207,34 @@ export const imagingOrder = getSyncLifecycle(ImagingOrder, options);
176
207
  export const drugOrder = getSyncLifecycle(DrugOrder, options);
177
208
  export const orderActionButton = getSyncLifecycle(OrderActionButton, options);
178
209
 
179
- // bill manager modals
180
- export const deleteBillModal = getSyncLifecycle(DeleteBillModal, options);
181
-
182
- // bill manager extensions
183
- export const waiveBillForm = getSyncLifecycle(WaiveBillForm, options);
184
- export const editBillForm = getSyncLifecycle(EditBillForm, options);
185
- export const refundBillModal = getSyncLifecycle(RefundBillModal, options);
186
- export const cancelBillWorkspace = getSyncLifecycle(CancelBillWorkspace, options);
187
- // Benefits
210
+ // Benefits Components
188
211
  export const benefitsPackage = getSyncLifecycle(BenefitsPackage, options);
189
212
  export const benefits = getSyncLifecycle(Benefits, options);
190
213
  export const benefitsPreAuthForm = getSyncLifecycle(BenefitPreAuthForm, options);
191
214
 
192
- export const createPaymentPoint = getSyncLifecycle(CreatePaymentPoint, options);
193
-
194
- export const addServiceForm = getSyncLifecycle(AddServiceForm, options);
195
- export const addCommodityForm = getSyncLifecycle(CommodityForm, options);
215
+ // Payment Components
216
+ export const requirePaymentModal = getSyncLifecycle(RequirePaymentModal, options);
217
+ export const visitAttributeTags = getSyncLifecycle(VisitAttributeTags, options);
218
+ export const initiatePaymentDialog = getSyncLifecycle(InitiatePaymentDialog, options);
219
+ export const paymentModeWorkspace = getSyncLifecycle(PaymentModeWorkspace, options);
220
+ export const deletePaymentModeModal = getSyncLifecycle(DeletePaymentModeModal, options);
221
+ export const paidBillReceiptPrintPreviewModal = getSyncLifecycle(ReceiptPrintPreviewModal, options);
196
222
 
223
+ // Payment Points Components
224
+ export const createPaymentPoint = getSyncLifecycle(CreatePaymentPoint, options);
197
225
  export const clockIn = getSyncLifecycle(ClockIn, options);
198
226
  export const clockOut = getSyncLifecycle(ClockOut, options);
199
227
 
200
- export const paymentModeWorkspace = getSyncLifecycle(PaymentModeWorkspace, options);
201
- export const deletePaymentModeModal = getSyncLifecycle(DeletePaymentModeModal, options);
228
+ // Service Management Components
229
+ export const addServiceForm = getSyncLifecycle(AddServiceForm, options);
230
+ export const addCommodityForm = getSyncLifecycle(CommodityForm, options);
231
+ export const bulkImportBillableServicesModal = getSyncLifecycle(BulkImportBillableServices, options);
202
232
 
233
+ // Claims Management Components
234
+ export const claimsOverview = getSyncLifecycle(ClaimsManagementOverview, options);
203
235
  export const retryClaimRequestModal = getSyncLifecycle(RetryClaimRequest, options);
204
236
 
205
- export const paidBillReceiptPrintPreviewModal = getSyncLifecycle(ReceiptPrintPreviewModal, options);
206
-
237
+ // App Startup
207
238
  export function startupApp() {
208
239
  defineConfigSchema(moduleName, configSchema);
209
240
  registerFeatureFlag(
@@ -212,10 +243,3 @@ export function startupApp() {
212
243
  'HIE feature flag, this enables and disables the HIE feature',
213
244
  );
214
245
  }
215
-
216
- export const bulkImportBillableServicesModal = getSyncLifecycle(BulkImportBillableServices, options);
217
- export const waiveBillActionButton = getSyncLifecycle(WaiveBillActionButton, options);
218
- export const deleteBillActionButton = getSyncLifecycle(DeleteBillActionButton, options);
219
- export const refundLineItem = getSyncLifecycle(RefundLineItem, options);
220
- export const cancelLineItem = getSyncLifecycle(CancelLineItem, options);
221
- export const editLineItem = getSyncLifecycle(EditLineItem, options);