@digihmis/esm-billing-app 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/package.json +2 -1
  2. package/src/billing-checkin-form/billing-checkin-form.extension.tsx +90 -88
  3. package/src/billing-checkin-form/billing-checkin-form.resource.ts +92 -27
  4. package/src/billing-checkin-form/visit-attributes/visit-attributes-form.resource.ts +28 -16
  5. package/src/billing-dashboard/billing-dashboard.resource.ts +16 -7
  6. package/src/billing-header/page-header/page-icon/icon-wrapper.extension.tsx +2 -17
  7. package/src/billing-timesheet-modal/billing-timesheet-modal.tsx +4 -2
  8. package/src/billing-timesheet-modal/billing-timesheet-resource-modal.ts +7 -28
  9. package/src/config-schema.ts +8 -2
  10. package/src/leftpanel/left-panel.component.tsx +6 -98
  11. package/src/routes.json +12 -8
  12. package/dist/117.js +0 -1
  13. package/dist/117.js.map +0 -1
  14. package/dist/132.js +0 -1
  15. package/dist/132.js.map +0 -1
  16. package/dist/152.js +0 -1
  17. package/dist/152.js.map +0 -1
  18. package/dist/16.js +0 -1
  19. package/dist/16.js.map +0 -1
  20. package/dist/209.js +0 -1
  21. package/dist/209.js.map +0 -1
  22. package/dist/317.js +0 -1
  23. package/dist/317.js.map +0 -1
  24. package/dist/349.js +0 -1
  25. package/dist/349.js.map +0 -1
  26. package/dist/358.js +0 -1
  27. package/dist/358.js.map +0 -1
  28. package/dist/371.js +0 -1
  29. package/dist/371.js.map +0 -1
  30. package/dist/378.js +0 -1
  31. package/dist/378.js.map +0 -1
  32. package/dist/442.js +0 -1
  33. package/dist/442.js.map +0 -1
  34. package/dist/45.js +0 -1
  35. package/dist/45.js.map +0 -1
  36. package/dist/466.js +0 -1
  37. package/dist/466.js.map +0 -1
  38. package/dist/496.js +0 -12
  39. package/dist/496.js.map +0 -1
  40. package/dist/508.js +0 -1
  41. package/dist/508.js.map +0 -1
  42. package/dist/61.js +0 -1
  43. package/dist/61.js.map +0 -1
  44. package/dist/640.js +0 -1
  45. package/dist/640.js.map +0 -1
  46. package/dist/689.js +0 -1
  47. package/dist/689.js.map +0 -1
  48. package/dist/709.js +0 -1
  49. package/dist/709.js.map +0 -1
  50. package/dist/712.js +0 -1
  51. package/dist/712.js.map +0 -1
  52. package/dist/720.js +0 -1
  53. package/dist/720.js.map +0 -1
  54. package/dist/742.js +0 -1
  55. package/dist/742.js.map +0 -1
  56. package/dist/771.js +0 -1
  57. package/dist/771.js.map +0 -1
  58. package/dist/806.js +0 -1
  59. package/dist/806.js.map +0 -1
  60. package/dist/839.js +0 -1
  61. package/dist/839.js.map +0 -1
  62. package/dist/912.js +0 -1
  63. package/dist/912.js.map +0 -1
  64. package/dist/913.js +0 -1
  65. package/dist/913.js.map +0 -1
  66. package/dist/940.js +0 -1
  67. package/dist/940.js.map +0 -1
  68. package/dist/965.js +0 -15
  69. package/dist/965.js.map +0 -1
  70. package/dist/digihmis-esm-billing-app.js +0 -6
  71. package/dist/digihmis-esm-billing-app.js.buildmanifest.json +0 -827
  72. package/dist/digihmis-esm-billing-app.js.map +0 -1
  73. package/dist/main.js +0 -17
  74. package/dist/main.js.map +0 -1
  75. package/dist/routes.json +0 -1
@@ -1,98 +1,6 @@
1
- import React, { useMemo } from 'react';
2
- import { ConfigurableLink, MaybeIcon } from '@openmrs/esm-framework';
3
- import { useTranslation } from 'react-i18next';
4
- import { BrowserRouter, useLocation, useParams } from 'react-router-dom';
5
- import { type CarbonIconType } from '@carbon/react/icons';
6
- import last from 'lodash-es/last';
7
- import styles from './left-panel.scss';
8
-
9
- export interface DashboardLinkConfig {
10
- name: string;
11
- title: string;
12
- icon?: string | CarbonIconType;
13
- showOnlyOnRoute?: string;
14
- }
15
-
16
- const DashboardLink = ({ dashboardLinkConfig }: { dashboardLinkConfig: DashboardLinkConfig }) => {
17
- const { t } = useTranslation();
18
- const { name, title, icon, showOnlyOnRoute } = dashboardLinkConfig;
19
- const location = useLocation();
20
- const params = useParams();
21
- const spaBasePath = window.getOpenmrsSpaBase() + 'home';
22
-
23
- const patientUuid = useMemo(() => {
24
- if (params.patientUuid) {
25
- return params.patientUuid;
26
- }
27
- const pathParts = location.pathname.split('/');
28
- const billingIndex = pathParts.indexOf('billing');
29
- if (billingIndex !== -1 && pathParts.length > billingIndex + 1) {
30
- const nextPart = pathParts[billingIndex + 1];
31
- // Check if it's a UUID pattern (basic check)
32
- if (nextPart && nextPart.length > 20 && nextPart.includes('-')) {
33
- return nextPart;
34
- }
35
- // Check if path is /billing/patient/UUID/file
36
- if (nextPart === 'patient' && pathParts.length > billingIndex + 2) {
37
- const uuidPart = pathParts[billingIndex + 2];
38
- if (uuidPart && uuidPart.length > 20 && uuidPart.includes('-')) {
39
- return uuidPart;
40
- }
41
- }
42
- }
43
- return null;
44
- }, [params.patientUuid, location.pathname]);
45
-
46
- const shouldShow = useMemo(() => {
47
- if (!showOnlyOnRoute) {
48
- return true;
49
- }
50
- return location.pathname.includes(showOnlyOnRoute);
51
- }, [showOnlyOnRoute, location.pathname]);
52
-
53
- const linkPath = useMemo(() => {
54
- let path = name;
55
- if (name.includes(':patientUuid') && patientUuid) {
56
- path = name.replace(':patientUuid', patientUuid);
57
- }
58
- return path;
59
- }, [name, patientUuid]);
60
-
61
- const isActive = useMemo(() => {
62
- if (name.includes(':patientUuid')) {
63
- return location.pathname.includes('/bill');
64
- }
65
- const urlSegment = decodeURIComponent(last(location.pathname.split('/')));
66
- const nameSegment = name.split('/').at(-1);
67
- return nameSegment === urlSegment;
68
- }, [location.pathname, name]);
69
-
70
- if (!shouldShow) {
71
- return null;
72
- }
73
-
74
- const IconComp = typeof icon !== 'string' ? (icon as CarbonIconType) : null;
75
-
76
- return (
77
- <ConfigurableLink
78
- to={`${spaBasePath}/${linkPath}`}
79
- className={`cds--side-nav__link ${isActive && 'active-left-nav-link'}`}>
80
- {typeof icon === 'string' ? (
81
- <MaybeIcon icon={icon} className={styles.icon} size={16} />
82
- ) : (
83
- IconComp && <IconComp className={styles.icon} />
84
- )}
85
- {t(title)}
86
- </ConfigurableLink>
87
- );
88
- };
89
-
90
- export const createDashboardLink = (dashboardLinkConfig: DashboardLinkConfig) => () => {
91
- return (
92
- <BrowserRouter>
93
- <DashboardLink dashboardLinkConfig={dashboardLinkConfig} />
94
- </BrowserRouter>
95
- );
96
- };
97
-
98
- export default DashboardLink;
1
+ // Moved to the shared library so every app uses one implementation.
2
+ export {
3
+ DashboardLink as default,
4
+ createDashboardLink,
5
+ type DashboardLinkConfig,
6
+ } from '@digihmis/esm-commons-lib';
package/src/routes.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.openmrs.org/routes.schema.json",
3
3
  "backendDependencies": {
4
4
  "fhir2": ">=1.2",
5
- "webservices.rest": "^2.24.0"
5
+ "webservices.rest": ">=2.24.0"
6
6
  },
7
7
  "extensions": [
8
8
  {
@@ -10,13 +10,15 @@
10
10
  "slot": "extra-visit-attribute-slot",
11
11
  "component": "billingCheckInForm",
12
12
  "order": 0
13
- },{
13
+ },
14
+ {
14
15
  "name": "payment-type-tag",
15
16
  "slot": "patient-banner-tags-slot",
16
17
  "component": "paymentTypeTag",
17
18
  "online": true,
18
19
  "offline": true
19
- },{
20
+ },
21
+ {
20
22
  "name": "billing-db-link",
21
23
  "slot": "billing-dashboard-slot",
22
24
  "component": "billingQueueleftPanelLink",
@@ -28,7 +30,8 @@
28
30
  "order": 1,
29
31
  "online": true,
30
32
  "offline": true
31
- }, {
33
+ },
34
+ {
32
35
  "name": "care-panel-link",
33
36
  "slot": "billing-dashboard-slot",
34
37
  "component": "carePanelLink",
@@ -41,18 +44,19 @@
41
44
  "order": 2,
42
45
  "online": true,
43
46
  "offline": true
44
- },{
47
+ },
48
+ {
45
49
  "name": "billing-dashboard",
46
- "slot": "billing-homepage-dashboard-slot",
50
+ "slot": "billing-homepage-dashboard-slot",
47
51
  "component": "billingDashboard",
48
52
  "online": true,
49
53
  "offline": true
50
54
  }
51
55
  ],
52
56
  "modals": [
53
- {
57
+ {
54
58
  "name": "billing-timesheet-modal",
55
59
  "component": "billingTimesheetModal"
56
60
  }
57
61
  ]
58
- }
62
+ }
package/dist/117.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_digihmis_esm_billing_app=globalThis.webpackChunk_digihmis_esm_billing_app||[]).push([["117"],{34300(e){e.exports=JSON.parse('{"cash":"Cash","enterPolicyNumber":"Enter policy number","exemptionCategory":"Exemption category","insurance":"Insurance","insuranceScheme":"Insurance scheme","isPatientExemptedLegend":"Will the patient pay for services?","loading":"Loading data...","loadingDescription":"Loading","nonPayingPatient":"No, non-paying patient (exempt)","patientCategory":"Payment Category","payingPatient":"Yes, paying patient","paymentMethodsTitle":"Payment method","policyNumber":"Policy number","selectExemptionCategory":"Select exemption category","selectInsuranceScheme":"Select insurance scheme","selectPaymentMethod":"Select payment method"}')}}]);
package/dist/117.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"117.js","sources":["webpack://@digihmis/esm-billing-app/json|/home/kios09/Desktop/DigiHMIS/backend/DigiHMIS-apps/packages/esm-billing-app/translations/en.json"],"names":["JSON"],"mappings":"6IAAA,EAAO,OAAO,CAAGA,KAAK,KAAK,CAAC,wnB"}
package/dist/132.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_digihmis_esm_billing_app=globalThis.webpackChunk_digihmis_esm_billing_app||[]).push([["132"],{96679(e){e.exports=JSON.parse('{"cash":"Cash","enterPolicyNumber":"Enter policy number","exemptionCategory":"Exemption category","insurance":"Insurance","insuranceScheme":"Insurance scheme","isPatientExemptedLegend":"Will the patient pay for services?","loading":"Loading data...","loadingDescription":"Loading","nonPayingPatient":"No, non-paying patient (exempt)","patientCategory":"Payment Category","payingPatient":"Yes, paying patient","paymentMethodsTitle":"Payment method","policyNumber":"Policy number","selectExemptionCategory":"Select exemption category","selectInsuranceScheme":"Select insurance scheme","selectPaymentMethod":"Select payment method"}')}}]);
package/dist/132.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"132.js","sources":["webpack://@digihmis/esm-billing-app/json|/home/kios09/Desktop/DigiHMIS/backend/DigiHMIS-apps/packages/esm-billing-app/translations/pt.json"],"names":["JSON"],"mappings":"6IAAA,EAAO,OAAO,CAAGA,KAAK,KAAK,CAAC,wnB"}
package/dist/152.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_digihmis_esm_billing_app=globalThis.webpackChunk_digihmis_esm_billing_app||[]).push([["152"],{52470(e,t,r){r.r(t),r.d(t,{default:()=>m,infinite:()=>k,unstable_serialize:()=>y});var a=r(62500),l=r(85216),i=r(70037),n=r(42372),u=r(58139);let s=()=>{},o=s(),f=Object,c=e=>e===o,g=new WeakMap,p=(e,t)=>e===`[object ${t}]`,_=0,b=e=>{let t,r,a=typeof e,l=f.prototype.toString.call(e),i=p(l,"Date"),n=p(l,"RegExp"),u=p(l,"Object");if(f(e)!==e||i||n)t=i?e.toJSON():"symbol"==a?e.toString():"string"==a?JSON.stringify(e):""+e;else{if(t=g.get(e))return t;if(t=++_+"~",g.set(e,t),Array.isArray(e)){for(r=0,t="@";r<e.length;r++)t+=b(e[r])+",";g.set(e,t)}if(u){t="#";let a=f.keys(e).sort();for(;!c(r=a.pop());)c(e[r])||(t+=r+":"+b(e[r])+",");g.set(e,t)}}return t},d=e=>(e=>{if("function"==typeof e)try{e=e()}catch(t){e=""}let t=e;return[e="string"==typeof e?e:(Array.isArray(e)?e.length:e)?b(e):"",t]})(e?e(0,null):null)[0],y=e=>"$inf$"+d(e),h=Promise.resolve(),k=e=>(t,r,l)=>{let n,s=(0,a.useRef)(!1),{cache:o,initialSize:f=1,revalidateAll:c=!1,persistSize:g=!1,revalidateFirstPage:p=!0,revalidateOnMount:_=!1,parallel:b=!1}=l,[,,,y]=i.b.get(i.c);try{(n=d(t))&&(n="$inf$"+n)}catch(e){}let[k,m,z]=(0,i.z)(o,n),v=(0,a.useCallback)(()=>(0,i.e)(k()._l)?f:k()._l,[o,n,f]);(0,u.useSyncExternalStore)((0,a.useCallback)(e=>n?z(n,()=>{e()}):()=>{},[o,n]),v,v);let w=(0,a.useCallback)(()=>{let e=k()._l;return(0,i.e)(e)?f:e},[n,f]),C=(0,a.useRef)(w());(0,i.u)(()=>{if(!s.current){s.current=!0;return}n&&m({_l:g?C.current:w()})},[n,o]);let S=_&&!s.current,A=e(n,async e=>{let a=k()._i,n=k()._r;m({_r:i.U});let u=[],s=w(),[f]=(0,i.z)(o,e),g=f().data,_=[],d=null;for(let e=0;e<s;++e){let[s,f]=(0,i.s)(t(e,b?null:d));if(!s)break;let[h,k]=(0,i.z)(o,s),m=h().data,z=c||a||(0,i.e)(m)||p&&!e&&!(0,i.e)(g)||S||g&&!(0,i.e)(g[e])&&!l.compare(g[e],m);if(r&&("function"==typeof n?n(m,f):z)){let t=async()=>{if(s in y){let e=y[s];delete y[s],m=await e}else m=await r(f);k({data:m,_k:f}),u[e]=m};b?_.push(t):await t()}else u[e]=m;b||(d=m)}return b&&await Promise.all(_.map(e=>e())),m({_i:i.U}),u},l),$=(0,a.useCallback)(function(e,t){let r="boolean"==typeof t?{revalidate:t}:t||{},a=!1!==r.revalidate;return n?(a&&((0,i.e)(e)?m({_i:!0,_r:r.revalidate}):m({_i:!1,_r:r.revalidate})),arguments.length?A.mutate(e,{...r,revalidate:a}):A.mutate()):h},[n,o]),O=(0,a.useCallback)(e=>{let r;if(!n)return h;let[,a]=(0,i.z)(o,n);if((0,i.a)(e)?r=e(w()):"number"==typeof e&&(r=e),"number"!=typeof r)return h;a({_l:r}),C.current=r;let l=[],[u]=(0,i.z)(o,n),s=null;for(let e=0;e<r;++e){let[r]=(0,i.s)(t(e,s)),[a]=(0,i.z)(o,r),n=r?a().data:i.U;if((0,i.e)(n))return $(u().data);l.push(n),s=n}return $(l)},[n,o,$,w]);return{size:w(),setSize:O,mutate:$,get data(){return A.data},get error(){return A.error},get isValidating(){return A.isValidating},get isLoading(){return A.isLoading}}},m=(0,n.Ht)(l.Ay,k)}}]);
package/dist/152.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"152.js","sources":["webpack://@digihmis/esm-billing-app/../../node_modules/swr/dist/infinite/index.mjs"],"names":["Object","WeakMap","t","i","JSON","Array","Promise","e","u","arguments"],"mappings":"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"}