@openmrs/esm-billing-app 1.0.2-pre.866 → 1.0.2-pre.868
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/dist/3717.js +1 -1
- package/dist/4060.js +1 -0
- package/dist/4060.js.map +1 -0
- package/dist/4300.js +1 -1
- package/dist/4724.js +1 -1
- package/dist/4739.js +1 -1
- package/dist/8708.js +2 -0
- package/dist/8708.js.map +1 -0
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/openmrs-esm-billing-app.js +1 -1
- package/dist/openmrs-esm-billing-app.js.buildmanifest.json +61 -61
- package/dist/routes.json +1 -1
- package/package.json +1 -1
- package/src/billable-services/billable-services-home.component.tsx +11 -34
- package/src/billable-services/billable-services-left-panel-link.component.tsx +48 -0
- package/src/billable-services/billable-services-left-panel-menu.component.tsx +46 -0
- package/src/billable-services/billable-services.scss +26 -0
- package/src/index.ts +50 -0
- package/src/routes.json +18 -0
- package/translations/en.json +1 -1
- package/dist/4344.js +0 -1
- package/dist/4344.js.map +0 -1
- package/dist/6295.js +0 -2
- package/dist/6295.js.map +0 -1
- /package/dist/{6295.js.LICENSE.txt → 8708.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
var _openmrs_esm_billing_app;(()=>{"use strict";var e,r,t,n,o,a,i,l,s,u,f,p,d,c,h,m,v,g,b,y,w,_={45120:(e,r,t)=>{var n={"./start":()=>Promise.all([t.e(2177),t.e(
|
|
1
|
+
var _openmrs_esm_billing_app;(()=>{"use strict";var e,r,t,n,o,a,i,l,s,u,f,p,d,c,h,m,v,g,b,y,w,_={45120:(e,r,t)=>{var n={"./start":()=>Promise.all([t.e(2177),t.e(8708),t.e(1146),t.e(2524),t.e(6072),t.e(3006),t.e(4060)]).then((()=>()=>t(74060)))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),a=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>a})}},P={};function S(e){var r=P[e];if(void 0!==r)return r.exports;var t=P[e]={id:e,loaded:!1,exports:{}};return _[e].call(t.exports,t,t.exports,S),t.loaded=!0,t.exports}S.m=_,S.c=P,S.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return S.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,S.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var o=Object.create(null);S.r(o);var a={};e=e||[null,r({}),r([]),r(r)];for(var i=2&n&&t;"object"==typeof i&&!~e.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>t[e]));return a.default=()=>t,S.d(o,a),o},S.d=(e,r)=>{for(var t in r)S.o(r,t)&&!S.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},S.f={},S.e=e=>Promise.all(Object.keys(S.f).reduce(((r,t)=>(S.f[t](e,r),r)),[])),S.u=e=>e+".js",S.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),S.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t={},n="@openmrs/esm-billing-app:",S.l=(e,r,o,a)=>{if(t[e])t[e].push(r);else{var i,l;if(void 0!==o)for(var s=document.getElementsByTagName("script"),u=0;u<s.length;u++){var f=s[u];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==n+o){i=f;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,S.nc&&i.setAttribute("nonce",S.nc),i.setAttribute("data-webpack",n+o),i.src=e),t[e]=[r];var p=(r,n)=>{i.onerror=i.onload=null,clearTimeout(d);var o=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),r)return r(n)},d=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),l&&document.head.appendChild(i)}},S.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},S.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{S.S={};var e={},r={};S.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];S.o(S.S,t)||(S.S[t]={});var a=S.S[t],i="@openmrs/esm-billing-app",l=(e,r,t,n)=>{var o=a[e]=a[e]||{},l=o[r];(!l||!l.loaded&&(!n!=!l.eager?n:i>l.from))&&(o[r]={get:t,from:i,eager:!!n})},s=[];return"default"===t&&(l("@openmrs/esm-framework","8.0.1-pre.3425",(()=>Promise.all([S.e(2177),S.e(3717),S.e(8708),S.e(1856),S.e(6072),S.e(1997),S.e(3006)]).then((()=>()=>S(41856))))),l("@openmrs/esm-patient-common-lib","11.3.1-pre.9066",(()=>Promise.all([S.e(2177),S.e(3717),S.e(8708),S.e(4724),S.e(1146),S.e(6072),S.e(1997),S.e(3006)]).then((()=>()=>S(94724))))),l("react-dom","18.3.1",(()=>Promise.all([S.e(961),S.e(6072)]).then((()=>()=>S(40961))))),l("react-i18next","14.0.1",(()=>Promise.all([S.e(7255),S.e(6072)]).then((()=>()=>S(77255))))),l("react","18.3.1",(()=>S.e(6540).then((()=>()=>S(96540))))),l("rxjs","6.6.7",(()=>S.e(3184).then((()=>()=>S(63184))))),l("swr/immutable","2.3.3",(()=>Promise.all([S.e(2177),S.e(6072),S.e(4225)]).then((()=>()=>S(54225))))),l("swr/infinite","2.3.3",(()=>Promise.all([S.e(2177),S.e(6072),S.e(3041)]).then((()=>()=>S(23041)))))),e[t]=s.length?Promise.all(s).then((()=>e[t]=1)):1}}})(),(()=>{var e;S.g.importScripts&&(e=S.g.location+"");var r=S.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),S.p=e})(),o=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},a=(e,r)=>{e=o(e),r=o(r);for(var t=0;;){if(t>=e.length)return t<r.length&&"u"!=(typeof r[t])[0];var n=e[t],a=(typeof n)[0];if(t>=r.length)return"u"==a;var i=r[t],l=(typeof i)[0];if(a!=l)return"o"==a&&"n"==l||"s"==l||"u"==a;if("o"!=a&&"u"!=a&&n!=i)return n<i;t++}},i=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(l=e[o]))[0]?"-":(n>0?".":"")+(n=2,l);return t}var a=[];for(o=1;o<e.length;o++){var l=e[o];a.push(0===l?"not("+s()+")":1===l?"("+s()+" || "+s()+")":2===l?a.pop()+" "+a.pop():i(l))}return s();function s(){return a.pop().replace(/^\((.+)\)$/,"$1")}},l=(e,r)=>{if(0 in e){r=o(r);var t=e[0],n=t<0;n&&(t=-t-1);for(var a=0,i=1,s=!0;;i++,a++){var u,f,p=i<e.length?(typeof e[i])[0]:"";if(a>=r.length||"o"==(f=(typeof(u=r[a]))[0]))return!s||("u"==p?i>t&&!n:""==p!=n);if("u"==f){if(!s||"u"!=p)return!1}else if(s)if(p==f)if(i<=t){if(u!=e[i])return!1}else{if(n?u>e[i]:u<e[i])return!1;u!=e[i]&&(s=!1)}else if("s"!=p&&"n"!=p){if(n||i<=t)return!1;s=!1,i--}else{if(i<=t||f<p!=n)return!1;s=!1}else"s"!=p&&"n"!=p&&(s=!1,i--)}}var d=[],c=d.pop.bind(d);for(a=1;a<e.length;a++){var h=e[a];d.push(1==h?c()|c():2==h?c()&c():h?l(h,r):!c())}return!!c()},s=(e,r)=>e&&S.o(e,r),u=e=>(e.loaded=1,e.get()),f=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),p=(e,r,t)=>{var n=t?f(e[r]):e[r];return Object.keys(n).reduce(((e,r)=>!e||!n[e].loaded&&a(e,r)?r:e),0)},d=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+i(n)+")",c=e=>{throw new Error(e)},h=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},m=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),v=(e=>function(r,t,n,o,a){var i=S.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,S.S[r],t,!1,o,a)):e(r,S.S[r],t,n,o,a)})(((e,r,t,n,o,a)=>{if(!s(r,t))return m(e,t,a);var i=p(r,t,n);return l(o,i)||h(d(r,t,i,o)),u(r[t][i])})),g={},b={16072:()=>v("default","react",!1,[1,18],(()=>S.e(6540).then((()=>()=>S(96540))))),44209:()=>v("default","swr/immutable",!1,[1,2],(()=>S.e(6606).then((()=>()=>S(54225))))),53083:()=>v("default","rxjs",!1,[1,6],(()=>S.e(3184).then((()=>()=>S(63184))))),56339:()=>v("default","swr/infinite",!1,[1,2],(()=>S.e(5422).then((()=>()=>S(23041))))),15847:()=>v("default","@openmrs/esm-framework",!1,[1,8],(()=>Promise.all([S.e(3717),S.e(1856),S.e(1997)]).then((()=>()=>S(41856))))),53941:()=>v("default","react-i18next",!1,[1,11],(()=>S.e(7255).then((()=>()=>S(77255))))),92646:()=>v("default","react-dom",!1,[1,18],(()=>S.e(961).then((()=>()=>S(40961))))),35332:()=>v("default","@openmrs/esm-patient-common-lib",!1,[1,11],(()=>Promise.all([S.e(3717),S.e(4724),S.e(1997)]).then((()=>()=>S(94724)))))},y={1997:[44209,53083,56339],3006:[15847,53941,92646],4060:[35332],6072:[16072]},w={},S.f.consumes=(e,r)=>{S.o(y,e)&&y[e].forEach((e=>{if(S.o(g,e))return r.push(g[e]);if(!w[e]){var t=r=>{g[e]=0,S.m[e]=t=>{delete S.c[e],t.exports=r()}};w[e]=!0;var n=r=>{delete g[e],S.m[e]=t=>{throw delete S.c[e],r}};try{var o=b[e]();o.then?r.push(g[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}}))},(()=>{var e={6803:0};S.f.j=(r,t)=>{var n=S.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(/^(1997|3006|6072)$/.test(r))e[r]=0;else{var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=S.p+S.u(r),i=new Error;S.l(a,(t=>{if(S.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}}),"chunk-"+r,r)}};var r=(r,t)=>{var n,o,[a,i,l]=t,s=0;if(a.some((r=>0!==e[r]))){for(n in i)S.o(i,n)&&(S.m[n]=i[n]);l&&l(S)}for(r&&r(t);s<a.length;s++)o=a[s],S.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),S.nc=void 0;var j=S(45120);_openmrs_esm_billing_app=j})();
|
|
@@ -471,7 +471,7 @@
|
|
|
471
471
|
"auxiliaryFiles": [
|
|
472
472
|
"3717.js.map"
|
|
473
473
|
],
|
|
474
|
-
"hash": "
|
|
474
|
+
"hash": "c1e149ff1cfb7451",
|
|
475
475
|
"childrenByOrder": {}
|
|
476
476
|
},
|
|
477
477
|
{
|
|
@@ -496,6 +496,30 @@
|
|
|
496
496
|
"hash": "684cce4cc1d27a6b",
|
|
497
497
|
"childrenByOrder": {}
|
|
498
498
|
},
|
|
499
|
+
{
|
|
500
|
+
"rendered": true,
|
|
501
|
+
"initial": false,
|
|
502
|
+
"entry": false,
|
|
503
|
+
"recorded": false,
|
|
504
|
+
"size": 1194361,
|
|
505
|
+
"sizes": {
|
|
506
|
+
"javascript": 1194319,
|
|
507
|
+
"consume-shared": 42
|
|
508
|
+
},
|
|
509
|
+
"names": [],
|
|
510
|
+
"idHints": [],
|
|
511
|
+
"runtime": [
|
|
512
|
+
"@openmrs/esm-billing-app"
|
|
513
|
+
],
|
|
514
|
+
"files": [
|
|
515
|
+
"4060.js"
|
|
516
|
+
],
|
|
517
|
+
"auxiliaryFiles": [
|
|
518
|
+
"4060.js.map"
|
|
519
|
+
],
|
|
520
|
+
"hash": "3aa87edd19e7246a",
|
|
521
|
+
"childrenByOrder": {}
|
|
522
|
+
},
|
|
499
523
|
{
|
|
500
524
|
"rendered": true,
|
|
501
525
|
"initial": false,
|
|
@@ -547,9 +571,9 @@
|
|
|
547
571
|
"initial": false,
|
|
548
572
|
"entry": false,
|
|
549
573
|
"recorded": false,
|
|
550
|
-
"size":
|
|
574
|
+
"size": 8989,
|
|
551
575
|
"sizes": {
|
|
552
|
-
"javascript":
|
|
576
|
+
"javascript": 8989
|
|
553
577
|
},
|
|
554
578
|
"names": [],
|
|
555
579
|
"idHints": [],
|
|
@@ -561,7 +585,7 @@
|
|
|
561
585
|
"4300.js"
|
|
562
586
|
],
|
|
563
587
|
"auxiliaryFiles": [],
|
|
564
|
-
"hash": "
|
|
588
|
+
"hash": "801dd28cc5d02882",
|
|
565
589
|
"childrenByOrder": {}
|
|
566
590
|
},
|
|
567
591
|
{
|
|
@@ -586,30 +610,6 @@
|
|
|
586
610
|
"hash": "461776c9e9b86d49",
|
|
587
611
|
"childrenByOrder": {}
|
|
588
612
|
},
|
|
589
|
-
{
|
|
590
|
-
"rendered": true,
|
|
591
|
-
"initial": false,
|
|
592
|
-
"entry": false,
|
|
593
|
-
"recorded": false,
|
|
594
|
-
"size": 1178229,
|
|
595
|
-
"sizes": {
|
|
596
|
-
"javascript": 1178187,
|
|
597
|
-
"consume-shared": 42
|
|
598
|
-
},
|
|
599
|
-
"names": [],
|
|
600
|
-
"idHints": [],
|
|
601
|
-
"runtime": [
|
|
602
|
-
"@openmrs/esm-billing-app"
|
|
603
|
-
],
|
|
604
|
-
"files": [
|
|
605
|
-
"4344.js"
|
|
606
|
-
],
|
|
607
|
-
"auxiliaryFiles": [
|
|
608
|
-
"4344.js.map"
|
|
609
|
-
],
|
|
610
|
-
"hash": "29bf4b30203bd689",
|
|
611
|
-
"childrenByOrder": {}
|
|
612
|
-
},
|
|
613
613
|
{
|
|
614
614
|
"rendered": true,
|
|
615
615
|
"initial": false,
|
|
@@ -678,7 +678,7 @@
|
|
|
678
678
|
"auxiliaryFiles": [
|
|
679
679
|
"4724.js.map"
|
|
680
680
|
],
|
|
681
|
-
"hash": "
|
|
681
|
+
"hash": "6d8163f3203106d3",
|
|
682
682
|
"childrenByOrder": {}
|
|
683
683
|
},
|
|
684
684
|
{
|
|
@@ -702,7 +702,7 @@
|
|
|
702
702
|
"auxiliaryFiles": [
|
|
703
703
|
"4739.js.map"
|
|
704
704
|
],
|
|
705
|
-
"hash": "
|
|
705
|
+
"hash": "5ab94b222ce62c03",
|
|
706
706
|
"childrenByOrder": {}
|
|
707
707
|
},
|
|
708
708
|
{
|
|
@@ -882,33 +882,6 @@
|
|
|
882
882
|
"hash": "a8e8b59b9e85f503",
|
|
883
883
|
"childrenByOrder": {}
|
|
884
884
|
},
|
|
885
|
-
{
|
|
886
|
-
"rendered": true,
|
|
887
|
-
"initial": false,
|
|
888
|
-
"entry": false,
|
|
889
|
-
"recorded": false,
|
|
890
|
-
"reason": "split chunk (cache group: defaultVendors)",
|
|
891
|
-
"size": 3490510,
|
|
892
|
-
"sizes": {
|
|
893
|
-
"javascript": 3490510
|
|
894
|
-
},
|
|
895
|
-
"names": [],
|
|
896
|
-
"idHints": [
|
|
897
|
-
"vendors"
|
|
898
|
-
],
|
|
899
|
-
"runtime": [
|
|
900
|
-
"@openmrs/esm-billing-app",
|
|
901
|
-
"main"
|
|
902
|
-
],
|
|
903
|
-
"files": [
|
|
904
|
-
"6295.js"
|
|
905
|
-
],
|
|
906
|
-
"auxiliaryFiles": [
|
|
907
|
-
"6295.js.map"
|
|
908
|
-
],
|
|
909
|
-
"hash": "55d0b1a47387fd51",
|
|
910
|
-
"childrenByOrder": {}
|
|
911
|
-
},
|
|
912
885
|
{
|
|
913
886
|
"rendered": true,
|
|
914
887
|
"initial": false,
|
|
@@ -1025,7 +998,7 @@
|
|
|
1025
998
|
"auxiliaryFiles": [
|
|
1026
999
|
"openmrs-esm-billing-app.js.map"
|
|
1027
1000
|
],
|
|
1028
|
-
"hash": "
|
|
1001
|
+
"hash": "60ac48ad14997cb8",
|
|
1029
1002
|
"childrenByOrder": {}
|
|
1030
1003
|
},
|
|
1031
1004
|
{
|
|
@@ -1231,15 +1204,42 @@
|
|
|
1231
1204
|
"hash": "0d13dce3a66c0731",
|
|
1232
1205
|
"childrenByOrder": {}
|
|
1233
1206
|
},
|
|
1207
|
+
{
|
|
1208
|
+
"rendered": true,
|
|
1209
|
+
"initial": false,
|
|
1210
|
+
"entry": false,
|
|
1211
|
+
"recorded": false,
|
|
1212
|
+
"reason": "split chunk (cache group: defaultVendors)",
|
|
1213
|
+
"size": 3488682,
|
|
1214
|
+
"sizes": {
|
|
1215
|
+
"javascript": 3488682
|
|
1216
|
+
},
|
|
1217
|
+
"names": [],
|
|
1218
|
+
"idHints": [
|
|
1219
|
+
"vendors"
|
|
1220
|
+
],
|
|
1221
|
+
"runtime": [
|
|
1222
|
+
"@openmrs/esm-billing-app",
|
|
1223
|
+
"main"
|
|
1224
|
+
],
|
|
1225
|
+
"files": [
|
|
1226
|
+
"8708.js"
|
|
1227
|
+
],
|
|
1228
|
+
"auxiliaryFiles": [
|
|
1229
|
+
"8708.js.map"
|
|
1230
|
+
],
|
|
1231
|
+
"hash": "6c18dff945b0c906",
|
|
1232
|
+
"childrenByOrder": {}
|
|
1233
|
+
},
|
|
1234
1234
|
{
|
|
1235
1235
|
"rendered": true,
|
|
1236
1236
|
"initial": true,
|
|
1237
1237
|
"entry": true,
|
|
1238
1238
|
"recorded": false,
|
|
1239
|
-
"size":
|
|
1239
|
+
"size": 5475987,
|
|
1240
1240
|
"sizes": {
|
|
1241
1241
|
"consume-shared": 210,
|
|
1242
|
-
"javascript":
|
|
1242
|
+
"javascript": 5453331,
|
|
1243
1243
|
"share-init": 336,
|
|
1244
1244
|
"runtime": 22110
|
|
1245
1245
|
},
|
|
@@ -1256,7 +1256,7 @@
|
|
|
1256
1256
|
"auxiliaryFiles": [
|
|
1257
1257
|
"main.js.map"
|
|
1258
1258
|
],
|
|
1259
|
-
"hash": "
|
|
1259
|
+
"hash": "ca17bcaed6dd42ac",
|
|
1260
1260
|
"childrenByOrder": {}
|
|
1261
1261
|
},
|
|
1262
1262
|
{
|
package/dist/routes.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"webservices.rest":">=2.24.0","fhir2":">=1.2"},"pages":[{"component":"billableServicesHome","route":"billable-services"}],"extensions":[{"component":"billingDashboardLink","name":"billing-dashboard-link","slot":"homepage-dashboard-slot","meta":{"name":"billing","title":"billing","slot":"billing-dashboard-slot"},"featureFlag":"billing"},{"component":"root","name":"billing-dashboard-root","slot":"billing-dashboard-slot"},{"name":"billing-patient-summary","component":"billingPatientSummary","slot":"patient-chart-billing-dashboard-slot","order":10,"meta":{"columnSpan":4}},{"name":"billing-summary-dashboard-link","component":"billingSummaryDashboardLink","slot":"patient-chart-dashboard-slot","order":11,"meta":{"columns":1,"columnSpan":1,"slot":"patient-chart-billing-dashboard-slot","path":"Billing history"},"featureFlag":"billing"},{"name":"billable-services-app-menu-item","component":"billableServicesAppMenuItem","slot":"app-menu-item-slot","meta":{"name":"Billable Services"}},{"name":"billing-checkin-form","slot":"extra-visit-attribute-slot","component":"billingCheckInForm","featureFlag":"billing"},{"slot":"system-admin-page-card-link-slot","component":"billableServicesCardLink","name":"billable-services-admin-card-link"},{"name":"patient-banner-billing-tags","component":"visitAttributeTags","slot":"patient-banner-tags-slot","order":2},{"name":"billing-home-tiles-ext","slot":"billing-home-tiles-slot","component":"serviceMetrics"}],"modals":[{"name":"add-cash-point-modal","component":"addCashPointModal"},{"name":"add-payment-mode-modal","component":"addPaymentModeModal"},{"name":"delete-payment-mode-modal","component":"deletePaymentModeModal"},{"name":"edit-bill-item-modal","component":"editBillLineItemModal"},{"name":"edit-bill-line-item-modal","component":"editBillLineItemModal"},{"name":"edit-billable-service-modal","component":"editBillableServiceModal"},{"name":"require-billing-modal","component":"requirePaymentModal"}],"workspaces":[{"name":"billing-form-workspace","title":"billingForm","component":"billingFormWorkspace","type":"form"}],"featureFlags":[{"flagName":"billing","label":"Billing module","description":"This feature introduces navigation links on the patient chart and home page to allow accessing the billing module features"}],"version":"1.0.2-pre.
|
|
1
|
+
{"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"webservices.rest":">=2.24.0","fhir2":">=1.2"},"pages":[{"component":"billableServicesHome","route":"billable-services"}],"extensions":[{"component":"billingDashboardLink","name":"billing-dashboard-link","slot":"homepage-dashboard-slot","meta":{"name":"billing","title":"billing","slot":"billing-dashboard-slot"},"featureFlag":"billing"},{"component":"root","name":"billing-dashboard-root","slot":"billing-dashboard-slot"},{"name":"billing-patient-summary","component":"billingPatientSummary","slot":"patient-chart-billing-dashboard-slot","order":10,"meta":{"columnSpan":4}},{"name":"billing-summary-dashboard-link","component":"billingSummaryDashboardLink","slot":"patient-chart-dashboard-slot","order":11,"meta":{"columns":1,"columnSpan":1,"slot":"patient-chart-billing-dashboard-slot","path":"Billing history"},"featureFlag":"billing"},{"name":"billable-services-app-menu-item","component":"billableServicesAppMenuItem","slot":"app-menu-item-slot","meta":{"name":"Billable Services"}},{"name":"billing-checkin-form","slot":"extra-visit-attribute-slot","component":"billingCheckInForm","featureFlag":"billing"},{"slot":"system-admin-page-card-link-slot","component":"billableServicesCardLink","name":"billable-services-admin-card-link"},{"name":"patient-banner-billing-tags","component":"visitAttributeTags","slot":"patient-banner-tags-slot","order":2},{"name":"billing-home-tiles-ext","slot":"billing-home-tiles-slot","component":"serviceMetrics"},{"name":"billable-services-left-panel-link","component":"billableServicesLeftPanelLink","slot":"billable-services-left-panel-slot","order":0},{"name":"bill-waiver-left-panel-link","component":"billWaiverLeftPanelLink","slot":"billable-services-left-panel-slot","order":1},{"name":"billing-settings-left-panel-menu","component":"billingSettingsLeftPanelMenu","slot":"billable-services-left-panel-slot","order":2}],"modals":[{"name":"add-cash-point-modal","component":"addCashPointModal"},{"name":"add-payment-mode-modal","component":"addPaymentModeModal"},{"name":"delete-payment-mode-modal","component":"deletePaymentModeModal"},{"name":"edit-bill-item-modal","component":"editBillLineItemModal"},{"name":"edit-bill-line-item-modal","component":"editBillLineItemModal"},{"name":"edit-billable-service-modal","component":"editBillableServiceModal"},{"name":"require-billing-modal","component":"requirePaymentModal"}],"workspaces":[{"name":"billing-form-workspace","title":"billingForm","component":"billingFormWorkspace","type":"form"}],"featureFlags":[{"flagName":"billing","label":"Billing module","description":"This feature introduces navigation links on the patient chart and home page to allow accessing the billing module features"}],"version":"1.0.2-pre.868"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
2
3
|
import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
|
3
|
-
import { SideNav, SideNavItems, SideNavLink, SideNavMenu, SideNavMenuItem } from '@carbon/react';
|
|
4
|
-
import { Wallet, Money, Settings } from '@carbon/react/icons';
|
|
5
4
|
import { useTranslation } from 'react-i18next';
|
|
6
|
-
import {
|
|
5
|
+
import { useLeftNav, navigate, WorkspaceContainer, useLayoutType, isDesktop } from '@openmrs/esm-framework';
|
|
7
6
|
import AddBillableService from './create-edit/add-billable-service.component';
|
|
8
7
|
import BillWaiver from './bill-waiver/bill-waiver.component';
|
|
9
8
|
import BillableServicesDashboard from './dashboard/dashboard.component';
|
|
@@ -14,43 +13,20 @@ import styles from './billable-services.scss';
|
|
|
14
13
|
|
|
15
14
|
const BillableServiceHome: React.FC = () => {
|
|
16
15
|
const { t } = useTranslation();
|
|
16
|
+
const layout = useLayoutType();
|
|
17
17
|
const basePath = `${window.spaBase}/billable-services`;
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
navigate({ to: `${basePath}/${path}` });
|
|
21
|
-
};
|
|
19
|
+
useLeftNav({ name: 'billable-services-left-panel-slot', basePath });
|
|
22
20
|
|
|
23
21
|
const handleCloseAddService = () => {
|
|
24
22
|
navigate({ to: `${basePath}` });
|
|
25
23
|
};
|
|
26
24
|
|
|
27
25
|
return (
|
|
28
|
-
<BrowserRouter basename={
|
|
29
|
-
<
|
|
30
|
-
<
|
|
31
|
-
<
|
|
32
|
-
<SideNavItems>
|
|
33
|
-
<SideNavLink onClick={() => handleNavigation('')} renderIcon={Wallet} isActive>
|
|
34
|
-
{t('billableServices', 'Billable Services')}
|
|
35
|
-
</SideNavLink>
|
|
36
|
-
<UserHasAccess privilege="coreapps.systemAdministration">
|
|
37
|
-
<SideNavLink onClick={() => handleNavigation('waive-bill')} renderIcon={Money}>
|
|
38
|
-
{t('billWaiver', 'Bill waiver')}
|
|
39
|
-
</SideNavLink>
|
|
40
|
-
<SideNavMenu title={t('billingSettings', 'Billing settings')} renderIcon={Settings}>
|
|
41
|
-
<SideNavMenuItem onClick={() => handleNavigation('cash-point-config')}>
|
|
42
|
-
{t('cashPointConfig', 'Cash point configuration')}
|
|
43
|
-
</SideNavMenuItem>
|
|
44
|
-
<SideNavMenuItem onClick={() => handleNavigation('payment-modes-config')}>
|
|
45
|
-
{t('paymentModesConfig', 'Payment modes configuration')}
|
|
46
|
-
</SideNavMenuItem>
|
|
47
|
-
</SideNavMenu>
|
|
48
|
-
</UserHasAccess>
|
|
49
|
-
</SideNavItems>
|
|
50
|
-
</SideNav>
|
|
51
|
-
</section>
|
|
52
|
-
<section>
|
|
53
|
-
<BillingHeader title={t('billServicesManagement', 'Bill services management')} />
|
|
26
|
+
<BrowserRouter basename={basePath}>
|
|
27
|
+
<div className={styles.pageWrapper}>
|
|
28
|
+
<main className={classNames(styles.pageContent, { [styles.hasLeftNav]: isDesktop(layout) })}>
|
|
29
|
+
<BillingHeader title={t('billableServicesManagement', 'Billable services management')} />
|
|
54
30
|
<Routes>
|
|
55
31
|
<Route path="/" element={<BillableServicesDashboard />} />
|
|
56
32
|
<Route path="/add-service" element={<AddBillableService onClose={handleCloseAddService} />} />
|
|
@@ -58,8 +34,9 @@ const BillableServiceHome: React.FC = () => {
|
|
|
58
34
|
<Route path="/cash-point-config" element={<CashPointConfiguration />} />
|
|
59
35
|
<Route path="/payment-modes-config" element={<PaymentModesConfig />} />
|
|
60
36
|
</Routes>
|
|
61
|
-
</
|
|
62
|
-
</
|
|
37
|
+
</main>
|
|
38
|
+
</div>
|
|
39
|
+
<WorkspaceContainer contextKey="billable-services" />
|
|
63
40
|
</BrowserRouter>
|
|
64
41
|
);
|
|
65
42
|
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { BrowserRouter, useLocation } from 'react-router-dom';
|
|
3
|
+
import { SideNavLink } from '@carbon/react';
|
|
4
|
+
import { navigate, UserHasAccess } from '@openmrs/esm-framework';
|
|
5
|
+
|
|
6
|
+
export interface BillableServicesLinkConfig {
|
|
7
|
+
name: string;
|
|
8
|
+
title: string;
|
|
9
|
+
path: string;
|
|
10
|
+
icon?: React.ComponentType;
|
|
11
|
+
privilege?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function BillableServicesLinkExtension({ config }: { config: BillableServicesLinkConfig }) {
|
|
15
|
+
const { title, path, icon: Icon, privilege } = config;
|
|
16
|
+
const location = useLocation();
|
|
17
|
+
const spaBasePath = `${window.spaBase}/billable-services`;
|
|
18
|
+
|
|
19
|
+
const isActive = useMemo(() => {
|
|
20
|
+
const currentPath = location.pathname.replace(spaBasePath, '');
|
|
21
|
+
if (path === '' || path === '/') {
|
|
22
|
+
return currentPath === '' || currentPath === '/';
|
|
23
|
+
}
|
|
24
|
+
return currentPath.startsWith(`/${path}`);
|
|
25
|
+
}, [location.pathname, path, spaBasePath]);
|
|
26
|
+
|
|
27
|
+
const handleNavigation = () => {
|
|
28
|
+
navigate({ to: `${spaBasePath}/${path}` });
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const link = (
|
|
32
|
+
<SideNavLink onClick={handleNavigation} renderIcon={Icon} isActive={isActive}>
|
|
33
|
+
{title}
|
|
34
|
+
</SideNavLink>
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
if (privilege) {
|
|
38
|
+
return <UserHasAccess privilege={privilege}>{link}</UserHasAccess>;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return link;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const createBillableServicesLeftPanelLink = (config: BillableServicesLinkConfig) => () => (
|
|
45
|
+
<BrowserRouter>
|
|
46
|
+
<BillableServicesLinkExtension config={config} />
|
|
47
|
+
</BrowserRouter>
|
|
48
|
+
);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BrowserRouter } from 'react-router-dom';
|
|
3
|
+
import { SideNavMenu, SideNavMenuItem } from '@carbon/react';
|
|
4
|
+
import { navigate, UserHasAccess } from '@openmrs/esm-framework';
|
|
5
|
+
|
|
6
|
+
export interface BillableServicesMenuConfig {
|
|
7
|
+
title: string;
|
|
8
|
+
icon?: React.ComponentType;
|
|
9
|
+
privilege?: string;
|
|
10
|
+
items: Array<{
|
|
11
|
+
name: string;
|
|
12
|
+
title: string;
|
|
13
|
+
path: string;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function BillableServicesMenuExtension({ config }: { config: BillableServicesMenuConfig }) {
|
|
18
|
+
const { title, icon: Icon, items, privilege } = config;
|
|
19
|
+
const spaBasePath = `${window.spaBase}/billable-services`;
|
|
20
|
+
|
|
21
|
+
const handleNavigation = (path: string) => {
|
|
22
|
+
navigate({ to: `${spaBasePath}/${path}` });
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const menu = (
|
|
26
|
+
<SideNavMenu title={title} renderIcon={Icon}>
|
|
27
|
+
{items.map((item) => (
|
|
28
|
+
<SideNavMenuItem key={item.name} onClick={() => handleNavigation(item.path)}>
|
|
29
|
+
{item.title}
|
|
30
|
+
</SideNavMenuItem>
|
|
31
|
+
))}
|
|
32
|
+
</SideNavMenu>
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
if (privilege) {
|
|
36
|
+
return <UserHasAccess privilege={privilege}>{menu}</UserHasAccess>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return menu;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const createBillableServicesLeftPanelMenu = (config: BillableServicesMenuConfig) => () => (
|
|
43
|
+
<BrowserRouter>
|
|
44
|
+
<BillableServicesMenuExtension config={config} />
|
|
45
|
+
</BrowserRouter>
|
|
46
|
+
);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@use '@carbon/colors';
|
|
1
2
|
@use '@carbon/layout';
|
|
2
3
|
@use '@carbon/type';
|
|
3
4
|
@use '@openmrs/esm-styleguide/src/vars' as *;
|
|
@@ -220,3 +221,28 @@
|
|
|
220
221
|
.menuItem {
|
|
221
222
|
max-width: none;
|
|
222
223
|
}
|
|
224
|
+
|
|
225
|
+
.pageWrapper {
|
|
226
|
+
display: flex;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.pageContent {
|
|
230
|
+
display: flex;
|
|
231
|
+
flex-grow: 1;
|
|
232
|
+
flex-direction: column;
|
|
233
|
+
margin: 0;
|
|
234
|
+
// Full vertical height minus the primary navigation menu height
|
|
235
|
+
height: calc(100vh - layout.$spacing-09);
|
|
236
|
+
// Ensure the width is fixed and does not expand based on children
|
|
237
|
+
width: calc(100% - 16rem);
|
|
238
|
+
background-color: colors.$gray-10;
|
|
239
|
+
|
|
240
|
+
& a {
|
|
241
|
+
width: 100%;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
&.hasLeftNav {
|
|
245
|
+
// Make space for the left nav menu
|
|
246
|
+
margin-inline-start: 16rem;
|
|
247
|
+
}
|
|
248
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -3,6 +3,9 @@ import { createDashboardLink } from '@openmrs/esm-patient-common-lib';
|
|
|
3
3
|
import { createLeftPanelLink } from './left-panel-link.component';
|
|
4
4
|
import { dashboardMeta } from './dashboard.meta';
|
|
5
5
|
import { defineConfigSchema, getAsyncLifecycle, getSyncLifecycle } from '@openmrs/esm-framework';
|
|
6
|
+
import { Wallet, Money, Settings } from '@carbon/react/icons';
|
|
7
|
+
import { createBillableServicesLeftPanelLink } from './billable-services/billable-services-left-panel-link.component';
|
|
8
|
+
import { createBillableServicesLeftPanelMenu } from './billable-services/billable-services-left-panel-menu.component';
|
|
6
9
|
import AddCashPointModal from './billable-services/cash-point/add-cash-point.modal';
|
|
7
10
|
import AddPaymentModeModal from './billable-services/payment-modes/add-payment-mode.modal';
|
|
8
11
|
import appMenu from './billable-services/billable-services-menu-item/item.component';
|
|
@@ -76,3 +79,50 @@ export const visitAttributeTags = getSyncLifecycle(VisitAttributeTags, options);
|
|
|
76
79
|
|
|
77
80
|
// t('billingForm', 'Billing form')
|
|
78
81
|
export const billingFormWorkspace = getAsyncLifecycle(() => import('./billing-form/billing-form.component'), options);
|
|
82
|
+
|
|
83
|
+
// t('billableServices', 'Billable Services')
|
|
84
|
+
export const billableServicesLeftPanelLink = getSyncLifecycle(
|
|
85
|
+
createBillableServicesLeftPanelLink({
|
|
86
|
+
name: 'billable-services',
|
|
87
|
+
title: 'Billable Services',
|
|
88
|
+
path: '',
|
|
89
|
+
icon: Wallet,
|
|
90
|
+
}),
|
|
91
|
+
options,
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
// t('billWaiver', 'Bill waiver')
|
|
95
|
+
export const billWaiverLeftPanelLink = getSyncLifecycle(
|
|
96
|
+
createBillableServicesLeftPanelLink({
|
|
97
|
+
name: 'bill-waiver',
|
|
98
|
+
title: 'Bill waiver',
|
|
99
|
+
path: 'waive-bill',
|
|
100
|
+
icon: Money,
|
|
101
|
+
privilege: 'coreapps.systemAdministration',
|
|
102
|
+
}),
|
|
103
|
+
options,
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
// t('billingSettings', 'Billing settings')
|
|
107
|
+
// t('cashPointConfig', 'Cash point configuration')
|
|
108
|
+
// t('paymentModesConfig', 'Payment modes configuration')
|
|
109
|
+
export const billingSettingsLeftPanelMenu = getSyncLifecycle(
|
|
110
|
+
createBillableServicesLeftPanelMenu({
|
|
111
|
+
title: 'Billing settings',
|
|
112
|
+
icon: Settings,
|
|
113
|
+
privilege: 'coreapps.systemAdministration',
|
|
114
|
+
items: [
|
|
115
|
+
{
|
|
116
|
+
name: 'cash-point-config',
|
|
117
|
+
title: 'Cash point configuration',
|
|
118
|
+
path: 'cash-point-config',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: 'payment-modes-config',
|
|
122
|
+
title: 'Payment modes configuration',
|
|
123
|
+
path: 'payment-modes-config',
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
}),
|
|
127
|
+
options,
|
|
128
|
+
);
|
package/src/routes.json
CHANGED
|
@@ -78,6 +78,24 @@
|
|
|
78
78
|
"name": "billing-home-tiles-ext",
|
|
79
79
|
"slot": "billing-home-tiles-slot",
|
|
80
80
|
"component": "serviceMetrics"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "billable-services-left-panel-link",
|
|
84
|
+
"component": "billableServicesLeftPanelLink",
|
|
85
|
+
"slot": "billable-services-left-panel-slot",
|
|
86
|
+
"order": 0
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "bill-waiver-left-panel-link",
|
|
90
|
+
"component": "billWaiverLeftPanelLink",
|
|
91
|
+
"slot": "billable-services-left-panel-slot",
|
|
92
|
+
"order": 1
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "billing-settings-left-panel-menu",
|
|
96
|
+
"component": "billingSettingsLeftPanelMenu",
|
|
97
|
+
"slot": "billable-services-left-panel-slot",
|
|
98
|
+
"order": 2
|
|
81
99
|
}
|
|
82
100
|
],
|
|
83
101
|
"modals": [
|
package/translations/en.json
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"billableService": "Billable service",
|
|
23
23
|
"billableServices": "Billable services",
|
|
24
24
|
"billableServices__lower": "billable services",
|
|
25
|
+
"billableServicesManagement": "Billable services management",
|
|
25
26
|
"billAmount": "Bill amount",
|
|
26
27
|
"billCode": "Bill code",
|
|
27
28
|
"billCreatedSuccessfully": "Bill created successfully",
|
|
@@ -44,7 +45,6 @@
|
|
|
44
45
|
"billPaymentRequiredMessage": "The current patient has a pending bill. Advise the patient to settle the bill before receiving services",
|
|
45
46
|
"billProcessedSuccessfully": "Bill processed successfully",
|
|
46
47
|
"billProcessingError": "Bill processing error",
|
|
47
|
-
"billServicesManagement": "Bill services management",
|
|
48
48
|
"billsTable": "Bills table",
|
|
49
49
|
"billTotal": "Bill total",
|
|
50
50
|
"billWaiver": "Bill waiver",
|