@ampath/esm-dha-workflow-app 4.0.0-next.50 → 4.0.0-next.52

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/main.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e,t,r,n,o={84767:(e,t,r)=>{var n={"./am.json":[81197,197],"./en.json":[34300,300],"./es.json":[93099,99],"./fr.json":[94055,55],"./he.json":[84652,652],"./km.json":[54335,335]};function o(e){if(!r.o(n,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],o=t[0];return r.e(t[1]).then((()=>r(o)))}o.keys=()=>Object.keys(n),o.id=84767,e.exports=o},93154:(e,t,r)=>{"use strict";r.d(t,{moduleName:()=>v});var n=r(25987),o=(n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.Array,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.String,n.Type.String,n.Type.String,{path:"registry",slot:"client-registry-dashboard-slot",title:"Registry",basePath:"".concat(window.spaBase,"/home")}),a=r(16072),i=r.n(a),c=r(27114),s=function(e){return function(){return i().createElement(c.BrowserRouter,null,i().createElement(n.DashboardExtension,{path:e.path,title:e.title,basePath:e.basePath,icon:e.icon}))}},l={path:"dashboard",slot:"queue-dashboard-slot",title:"Dashboard",basePath:"".concat(window.spaBase,"/home")},u={path:"dispensing",slot:"dispensing-dashboard-slot",title:"Pharmacy",basePath:"".concat(window.spaBase,"/home")},d={path:"triage",slot:"triage-queue-dashboard-slot",title:"Triage",basePath:"".concat(window.spaBase,"/home")},f={path:"consultation",slot:"consultation-dashboard-slot",title:"Consultation",basePath:"".concat(window.spaBase,"/home")},p={path:"dashboard",slot:"dha-workflow-dashboard-slot",title:"Dashboard",basePath:"".concat(window.spaBase,"/home")},h={path:"accounting",slot:"accounting-dashboard-slot",title:"Accounting",basePath:"".concat(window.spaBase,"/home")},y={path:"registers",slot:"registers-dashboard-slot",title:"Registers",basePath:"".concat(window.spaBase,"/home")},m={path:"reports",slot:"reports-dashboard-slot",title:"Reports",basePath:"".concat(window.spaBase,"/home")},g={path:"bookings",slot:"bookings-dashboard-slot",title:"Bookings",basePath:"".concat(window.spaBase,"/home")},b={path:"mnch",slot:"mnch-queue-dashboard-slot",title:"MNCH",basePath:"".concat(window.spaBase,"/home")},v="@ampath/esm-dha-workflow-app",w={featureName:"Consulation Workflow",moduleName:v};r(84767),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(93)]).then(r.bind(r,69093))}),{featureName:"side-nav-workflow-link",moduleName:v}),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(352),r.e(327),r.e(826)]).then(r.bind(r,21826))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(327),r.e(125)]).then(r.bind(r,73327))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(752),r.e(15)]).then(r.bind(r,45015))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(752),r.e(339)]).then(r.bind(r,88339))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(752),r.e(833)]).then(r.bind(r,41833))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(752),r.e(729)]).then(r.bind(r,71729))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(76),r.e(420)]).then(r.bind(r,27420))}),{featureName:"workflow-registry-link",moduleName:v}),(0,n.getSyncLifecycle)(s(o),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(327),r.e(125)]).then(r.bind(r,73327))}),w),(0,n.getSyncLifecycle)(s(l),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(28)]).then(r.bind(r,5028))}),w),(0,n.getSyncLifecycle)(s(u),w),(0,n.getSyncLifecycle)(s(d),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(352),r.e(321)]).then(r.bind(r,81321))}),w),(0,n.getSyncLifecycle)(s(f),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(352),r.e(744)]).then(r.bind(r,76744))}),w),(0,n.getSyncLifecycle)(s(p),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(28)]).then(r.bind(r,5028))}),w),(0,n.getSyncLifecycle)(s(h),w),(0,n.getAsyncLifecycle)((function(){return r.e(895).then(r.bind(r,8895))}),w),(0,n.getSyncLifecycle)(s(y),w),(0,n.getAsyncLifecycle)((function(){return r.e(523).then(r.bind(r,37523))}),w),(0,n.getSyncLifecycle)(s(m),w),(0,n.getAsyncLifecycle)((function(){return r.e(403).then(r.bind(r,78403))}),w),(0,n.getSyncLifecycle)(s(g),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(264)]).then(r.bind(r,16264))}),w),(0,n.getSyncLifecycle)(s(b),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(352),r.e(975)]).then(r.bind(r,82975))}),w)}},a={};function i(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={id:e,exports:{}};return o[e].call(r.exports,r,r.exports,i),r.exports}i.m=o,i.c=a,i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var o=Object.create(null);i.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,i.d(o,a),o},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>e+".js",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},n="@ampath/esm-dha-workflow-app:",i.l=(e,t,o,a)=>{if(r[e])r[e].push(t);else{var c,s;if(void 0!==o)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var d=l[u];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==n+o){c=d;break}}c||(s=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,i.nc&&c.setAttribute("nonce",i.nc),c.setAttribute("data-webpack",n+o),c.src=e),r[e]=[t];var f=(t,n)=>{c.onerror=c.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=f.bind(null,c.onerror),c.onload=f.bind(null,c.onload),s&&document.head.appendChild(c)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{i.S={};var e={},t={};i.I=(r,n)=>{n||(n=[]);var o=t[r];if(o||(o=t[r]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[r])return e[r];i.o(i.S,r)||(i.S[r]={});var a=i.S[r],c="@ampath/esm-dha-workflow-app",s=(e,t,r,n)=>{var o=a[e]=a[e]||{},i=o[t];(!i||!i.loaded&&(!n!=!i.eager?n:c>i.from))&&(o[t]={get:r,from:c,eager:!!n})},l=[];return"default"===r&&(s("@openmrs/esm-framework","8.0.1-pre.3529",(()=>Promise.all([i.e(961),i.e(246),i.e(104),i.e(710),i.e(231),i.e(76),i.e(72),i.e(304),i.e(83)]).then((()=>()=>i(48710))))),s("dayjs","1.11.13",(()=>i.e(353).then((()=>()=>i(74353))))),s("react-i18next","16.0.0",(()=>Promise.all([i.e(255),i.e(72)]).then((()=>()=>i(77255))))),s("react-router-dom","6.30.1",(()=>Promise.all([i.e(961),i.e(282),i.e(72)]).then((()=>()=>i(20282))))),s("react","18.3.1",(()=>i.e(540).then((()=>()=>i(96540))))),s("rxjs","6.6.7",(()=>i.e(184).then((()=>()=>i(63184)))))),e[r]=l.length?Promise.all(l).then((()=>e[r]=1)):1}}})(),(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})(),(()=>{var e=e=>{var t=e=>e.split(".").map((e=>+e==e?+e:e)),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=r[1]?t(r[1]):[];return r[2]&&(n.length++,n.push.apply(n,t(r[2]))),r[3]&&(n.push([]),n.push.apply(n,t(r[3]))),n},t=e=>{var r=e[0],n="";if(1===e.length)return"*";if(r+.5){n+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var o=1,a=1;a<e.length;a++)o--,n+="u"==(typeof(c=e[a]))[0]?"-":(o>0?".":"")+(o=2,c);return n}var i=[];for(a=1;a<e.length;a++){var c=e[a];i.push(0===c?"not("+s()+")":1===c?"("+s()+" || "+s()+")":2===c?i.pop()+" "+i.pop():t(c))}return s();function s(){return i.pop().replace(/^\((.+)\)$/,"$1")}},r=(t,n)=>{if(0 in t){n=e(n);var o=t[0],a=o<0;a&&(o=-o-1);for(var i=0,c=1,s=!0;;c++,i++){var l,u,d=c<t.length?(typeof t[c])[0]:"";if(i>=n.length||"o"==(u=(typeof(l=n[i]))[0]))return!s||("u"==d?c>o&&!a:""==d!=a);if("u"==u){if(!s||"u"!=d)return!1}else if(s)if(d==u)if(c<=o){if(l!=t[c])return!1}else{if(a?l>t[c]:l<t[c])return!1;l!=t[c]&&(s=!1)}else if("s"!=d&&"n"!=d){if(a||c<=o)return!1;s=!1,c--}else{if(c<=o||u<d!=a)return!1;s=!1}else"s"!=d&&"n"!=d&&(s=!1,c--)}}var f=[],p=f.pop.bind(f);for(i=1;i<t.length;i++){var h=t[i];f.push(1==h?p()|p():2==h?p()&p():h?r(h,n):!p())}return!!p()},n=(t,r,n)=>{var o=n?(e=>Object.keys(e).reduce(((t,r)=>(e[r].eager&&(t[r]=e[r]),t)),{}))(t[r]):t[r];return Object.keys(o).reduce(((t,r)=>!t||!o[t].loaded&&((t,r)=>{t=e(t),r=e(r);for(var n=0;;){if(n>=t.length)return n<r.length&&"u"!=(typeof r[n])[0];var o=t[n],a=(typeof o)[0];if(n>=r.length)return"u"==a;var i=r[n],c=(typeof i)[0];if(a!=c)return"o"==a&&"n"==c||"s"==c||"u"==a;if("o"!=a&&"u"!=a&&o!=i)return o<i;n++}})(t,r)?r:t),0)},o=(e,t,r)=>r?r():((e,t)=>(e=>{throw new Error(e)})("Shared module "+t+" doesn't exist in shared scope "+e))(e,t),a=(e=>function(t,r,n,o,a){var c=i.I(t);return c&&c.then&&!n?c.then(e.bind(e,t,i.S[t],r,!1,o,a)):e(t,i.S[t],r,n,o,a)})(((e,a,c,s,l,u)=>{if(!((e,t)=>e&&i.o(e,t))(a,c))return o(e,c,u);var d,f,p=n(a,c,s);return r(l,p)||(f=((e,r,n,o)=>"Unsatisfied version "+n+" from "+(n&&e[r][n].from)+" of shared singleton module "+r+" (required "+t(o)+")")(a,c,p,l),"undefined"!=typeof console&&console.warn&&console.warn(f)),(d=a[c][p]).loaded=1,d.get()})),c={},s={25987:()=>a("default","@openmrs/esm-framework",!1,[0],(()=>Promise.all([i.e(961),i.e(246),i.e(104),i.e(710),i.e(231),i.e(76),i.e(83)]).then((()=>()=>i(48710))))),16072:()=>a("default","react",!1,[1,18],(()=>i.e(540).then((()=>()=>i(96540))))),27114:()=>a("default","react-router-dom",!1,[1,6],(()=>Promise.all([i.e(961),i.e(282)]).then((()=>()=>i(20282))))),70231:()=>a("default","dayjs",!1,[1,1],(()=>i.e(353).then((()=>()=>i(74353))))),2076:()=>a("default","react-i18next",!1,[1,16],(()=>i.e(255).then((()=>()=>i(77255))))),53083:()=>a("default","rxjs",!1,[1,6],(()=>i.e(184).then((()=>()=>i(63184)))))};[25987,16072,27114].forEach((e=>{i.m[e]=t=>{c[e]=0,delete i.c[e];var r=s[e]();if("function"!=typeof r)throw new Error("Shared module is not available for eager consumption: "+e);t.exports=r()}}));var l={72:[16072],76:[2076],83:[53083],231:[70231],304:[25987,27114],792:[25987,16072,27114]},u={};i.f.consumes=(e,t)=>{i.o(l,e)&&l[e].forEach((e=>{if(i.o(c,e))return t.push(c[e]);if(!u[e]){var r=t=>{c[e]=0,i.m[e]=r=>{delete i.c[e],r.exports=t()}};u[e]=!0;var n=t=>{delete c[e],i.m[e]=r=>{throw delete i.c[e],t}};try{var o=s[e]();o.then?t.push(c[e]=o.then(r).catch(n)):r(o)}catch(e){n(e)}}}))}})(),(()=>{var e={72:0,154:0,304:0,792:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else if(/^(231|304|72|76|83)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var a=i.p+i.u(t),c=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",c.name="ChunkLoadError",c.type=o,c.request=a,n[1](c)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,c,s]=r,l=0;if(a.some((t=>0!==e[t]))){for(n in c)i.o(c,n)&&(i.m[n]=c[n]);s&&s(i)}for(t&&t(r);l<a.length;l++)o=a[l],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=globalThis.webpackChunk_ampath_esm_dha_workflow_app=globalThis.webpackChunk_ampath_esm_dha_workflow_app||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),i.nc=void 0,i(93154)})();
1
+ (()=>{var e,t,r,n,o={84767:(e,t,r)=>{var n={"./am.json":[81197,197],"./en.json":[34300,300],"./es.json":[93099,99],"./fr.json":[94055,55],"./he.json":[84652,652],"./km.json":[54335,335]};function o(e){if(!r.o(n,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],o=t[0];return r.e(t[1]).then((()=>r(o)))}o.keys=()=>Object.keys(n),o.id=84767,e.exports=o},93154:(e,t,r)=>{"use strict";r.d(t,{moduleName:()=>v});var n=r(25987),o=(n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.Array,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.ConceptUuid,n.Type.String,n.Type.String,n.Type.String,{path:"registry",slot:"client-registry-dashboard-slot",title:"Registry",basePath:"".concat(window.spaBase,"/home")}),a=r(16072),i=r.n(a),c=r(27114),s=function(e){return function(){return i().createElement(c.BrowserRouter,null,i().createElement(n.DashboardExtension,{path:e.path,title:e.title,basePath:e.basePath,icon:e.icon}))}},l={path:"dashboard",slot:"queue-dashboard-slot",title:"Dashboard",basePath:"".concat(window.spaBase,"/home")},u={path:"dispensing",slot:"dispensing-dashboard-slot",title:"Pharmacy",basePath:"".concat(window.spaBase,"/home")},d={path:"triage",slot:"triage-queue-dashboard-slot",title:"Triage",basePath:"".concat(window.spaBase,"/home")},f={path:"consultation",slot:"consultation-dashboard-slot",title:"Consultation",basePath:"".concat(window.spaBase,"/home")},p={path:"dashboard",slot:"dha-workflow-dashboard-slot",title:"Dashboard",basePath:"".concat(window.spaBase,"/home")},h={path:"accounting",slot:"accounting-dashboard-slot",title:"Accounting",basePath:"".concat(window.spaBase,"/home")},y={path:"registers",slot:"registers-dashboard-slot",title:"Registers",basePath:"".concat(window.spaBase,"/home")},m={path:"reports",slot:"reports-dashboard-slot",title:"Reports",basePath:"".concat(window.spaBase,"/home")},g={path:"bookings",slot:"bookings-dashboard-slot",title:"Bookings",basePath:"".concat(window.spaBase,"/home")},b={path:"mnch",slot:"mnch-queue-dashboard-slot",title:"MNCH",basePath:"".concat(window.spaBase,"/home")},v="@ampath/esm-dha-workflow-app",w={featureName:"Consulation Workflow",moduleName:v};r(84767),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(93)]).then(r.bind(r,69093))}),{featureName:"side-nav-workflow-link",moduleName:v}),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(352),r.e(757),r.e(826)]).then(r.bind(r,21826))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(757),r.e(125)]).then(r.bind(r,49757))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(752),r.e(15)]).then(r.bind(r,45015))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(752),r.e(339)]).then(r.bind(r,88339))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(752),r.e(833)]).then(r.bind(r,41833))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(76),r.e(752),r.e(729)]).then(r.bind(r,71729))}),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(76),r.e(420)]).then(r.bind(r,27420))}),{featureName:"workflow-registry-link",moduleName:v}),(0,n.getSyncLifecycle)(s(o),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(757),r.e(125)]).then(r.bind(r,49757))}),w),(0,n.getSyncLifecycle)(s(l),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(28)]).then(r.bind(r,5028))}),w),(0,n.getSyncLifecycle)(s(u),w),(0,n.getSyncLifecycle)(s(d),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(352),r.e(321)]).then(r.bind(r,81321))}),w),(0,n.getSyncLifecycle)(s(f),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(352),r.e(744)]).then(r.bind(r,76744))}),w),(0,n.getSyncLifecycle)(s(p),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(28)]).then(r.bind(r,5028))}),w),(0,n.getSyncLifecycle)(s(h),w),(0,n.getAsyncLifecycle)((function(){return r.e(895).then(r.bind(r,8895))}),w),(0,n.getSyncLifecycle)(s(y),w),(0,n.getAsyncLifecycle)((function(){return r.e(523).then(r.bind(r,37523))}),w),(0,n.getSyncLifecycle)(s(m),w),(0,n.getAsyncLifecycle)((function(){return r.e(403).then(r.bind(r,78403))}),w),(0,n.getSyncLifecycle)(s(g),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(264)]).then(r.bind(r,16264))}),w),(0,n.getSyncLifecycle)(s(b),w),(0,n.getAsyncLifecycle)((function(){return Promise.all([r.e(961),r.e(246),r.e(104),r.e(231),r.e(352),r.e(975)]).then(r.bind(r,82975))}),w)}},a={};function i(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={id:e,exports:{}};return o[e].call(r.exports,r,r.exports,i),r.exports}i.m=o,i.c=a,i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var o=Object.create(null);i.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,i.d(o,a),o},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>e+".js",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},n="@ampath/esm-dha-workflow-app:",i.l=(e,t,o,a)=>{if(r[e])r[e].push(t);else{var c,s;if(void 0!==o)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var d=l[u];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==n+o){c=d;break}}c||(s=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,i.nc&&c.setAttribute("nonce",i.nc),c.setAttribute("data-webpack",n+o),c.src=e),r[e]=[t];var f=(t,n)=>{c.onerror=c.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=f.bind(null,c.onerror),c.onload=f.bind(null,c.onload),s&&document.head.appendChild(c)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{i.S={};var e={},t={};i.I=(r,n)=>{n||(n=[]);var o=t[r];if(o||(o=t[r]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[r])return e[r];i.o(i.S,r)||(i.S[r]={});var a=i.S[r],c="@ampath/esm-dha-workflow-app",s=(e,t,r,n)=>{var o=a[e]=a[e]||{},i=o[t];(!i||!i.loaded&&(!n!=!i.eager?n:c>i.from))&&(o[t]={get:r,from:c,eager:!!n})},l=[];return"default"===r&&(s("@openmrs/esm-framework","8.0.1-pre.3529",(()=>Promise.all([i.e(961),i.e(246),i.e(104),i.e(710),i.e(231),i.e(76),i.e(72),i.e(304),i.e(83)]).then((()=>()=>i(48710))))),s("dayjs","1.11.13",(()=>i.e(353).then((()=>()=>i(74353))))),s("react-i18next","16.0.0",(()=>Promise.all([i.e(255),i.e(72)]).then((()=>()=>i(77255))))),s("react-router-dom","6.30.1",(()=>Promise.all([i.e(961),i.e(282),i.e(72)]).then((()=>()=>i(20282))))),s("react","18.3.1",(()=>i.e(540).then((()=>()=>i(96540))))),s("rxjs","6.6.7",(()=>i.e(184).then((()=>()=>i(63184)))))),e[r]=l.length?Promise.all(l).then((()=>e[r]=1)):1}}})(),(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})(),(()=>{var e=e=>{var t=e=>e.split(".").map((e=>+e==e?+e:e)),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=r[1]?t(r[1]):[];return r[2]&&(n.length++,n.push.apply(n,t(r[2]))),r[3]&&(n.push([]),n.push.apply(n,t(r[3]))),n},t=e=>{var r=e[0],n="";if(1===e.length)return"*";if(r+.5){n+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var o=1,a=1;a<e.length;a++)o--,n+="u"==(typeof(c=e[a]))[0]?"-":(o>0?".":"")+(o=2,c);return n}var i=[];for(a=1;a<e.length;a++){var c=e[a];i.push(0===c?"not("+s()+")":1===c?"("+s()+" || "+s()+")":2===c?i.pop()+" "+i.pop():t(c))}return s();function s(){return i.pop().replace(/^\((.+)\)$/,"$1")}},r=(t,n)=>{if(0 in t){n=e(n);var o=t[0],a=o<0;a&&(o=-o-1);for(var i=0,c=1,s=!0;;c++,i++){var l,u,d=c<t.length?(typeof t[c])[0]:"";if(i>=n.length||"o"==(u=(typeof(l=n[i]))[0]))return!s||("u"==d?c>o&&!a:""==d!=a);if("u"==u){if(!s||"u"!=d)return!1}else if(s)if(d==u)if(c<=o){if(l!=t[c])return!1}else{if(a?l>t[c]:l<t[c])return!1;l!=t[c]&&(s=!1)}else if("s"!=d&&"n"!=d){if(a||c<=o)return!1;s=!1,c--}else{if(c<=o||u<d!=a)return!1;s=!1}else"s"!=d&&"n"!=d&&(s=!1,c--)}}var f=[],p=f.pop.bind(f);for(i=1;i<t.length;i++){var h=t[i];f.push(1==h?p()|p():2==h?p()&p():h?r(h,n):!p())}return!!p()},n=(t,r,n)=>{var o=n?(e=>Object.keys(e).reduce(((t,r)=>(e[r].eager&&(t[r]=e[r]),t)),{}))(t[r]):t[r];return Object.keys(o).reduce(((t,r)=>!t||!o[t].loaded&&((t,r)=>{t=e(t),r=e(r);for(var n=0;;){if(n>=t.length)return n<r.length&&"u"!=(typeof r[n])[0];var o=t[n],a=(typeof o)[0];if(n>=r.length)return"u"==a;var i=r[n],c=(typeof i)[0];if(a!=c)return"o"==a&&"n"==c||"s"==c||"u"==a;if("o"!=a&&"u"!=a&&o!=i)return o<i;n++}})(t,r)?r:t),0)},o=(e,t,r)=>r?r():((e,t)=>(e=>{throw new Error(e)})("Shared module "+t+" doesn't exist in shared scope "+e))(e,t),a=(e=>function(t,r,n,o,a){var c=i.I(t);return c&&c.then&&!n?c.then(e.bind(e,t,i.S[t],r,!1,o,a)):e(t,i.S[t],r,n,o,a)})(((e,a,c,s,l,u)=>{if(!((e,t)=>e&&i.o(e,t))(a,c))return o(e,c,u);var d,f,p=n(a,c,s);return r(l,p)||(f=((e,r,n,o)=>"Unsatisfied version "+n+" from "+(n&&e[r][n].from)+" of shared singleton module "+r+" (required "+t(o)+")")(a,c,p,l),"undefined"!=typeof console&&console.warn&&console.warn(f)),(d=a[c][p]).loaded=1,d.get()})),c={},s={25987:()=>a("default","@openmrs/esm-framework",!1,[0],(()=>Promise.all([i.e(961),i.e(246),i.e(104),i.e(710),i.e(231),i.e(76),i.e(83)]).then((()=>()=>i(48710))))),16072:()=>a("default","react",!1,[1,18],(()=>i.e(540).then((()=>()=>i(96540))))),27114:()=>a("default","react-router-dom",!1,[1,6],(()=>Promise.all([i.e(961),i.e(282)]).then((()=>()=>i(20282))))),70231:()=>a("default","dayjs",!1,[1,1],(()=>i.e(353).then((()=>()=>i(74353))))),2076:()=>a("default","react-i18next",!1,[1,16],(()=>i.e(255).then((()=>()=>i(77255))))),53083:()=>a("default","rxjs",!1,[1,6],(()=>i.e(184).then((()=>()=>i(63184)))))};[25987,16072,27114].forEach((e=>{i.m[e]=t=>{c[e]=0,delete i.c[e];var r=s[e]();if("function"!=typeof r)throw new Error("Shared module is not available for eager consumption: "+e);t.exports=r()}}));var l={72:[16072],76:[2076],83:[53083],231:[70231],304:[25987,27114],792:[25987,16072,27114]},u={};i.f.consumes=(e,t)=>{i.o(l,e)&&l[e].forEach((e=>{if(i.o(c,e))return t.push(c[e]);if(!u[e]){var r=t=>{c[e]=0,i.m[e]=r=>{delete i.c[e],r.exports=t()}};u[e]=!0;var n=t=>{delete c[e],i.m[e]=r=>{throw delete i.c[e],t}};try{var o=s[e]();o.then?t.push(c[e]=o.then(r).catch(n)):r(o)}catch(e){n(e)}}}))}})(),(()=>{var e={72:0,154:0,304:0,792:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else if(/^(231|304|72|76|83)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var a=i.p+i.u(t),c=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",c.name="ChunkLoadError",c.type=o,c.request=a,n[1](c)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,c,s]=r,l=0;if(a.some((t=>0!==e[t]))){for(n in c)i.o(c,n)&&(i.m[n]=c[n]);s&&s(i)}for(t&&t(r);l<a.length;l++)o=a[l],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=globalThis.webpackChunk_ampath_esm_dha_workflow_app=globalThis.webpackChunk_ampath_esm_dha_workflow_app||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),i.nc=void 0,i(93154)})();
package/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{},"pages":[{"component":"root","route":"dha-workflow","online":true,"offline":true}],"extensions":[{"component":"workflowRegistryLink","name":"workflow-registry-link","slot":"app-menu-slot","online":true,"offline":true},{"component":"navLinks","name":"side-nav-workflow-links","slot":"dha-workflow-slot","online":true,"offline":true},{"name":"dha-workflow-dashboard-link","component":"dhaWorkflowDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"dashboard","slot":"dha-workflow-dashboard-slot","title":"Dashboard"},"online":true,"offline":true,"order":0},{"component":"dhaWorkflowDashboard","name":"dashboardExt","slot":"dha-workflow-dashboard-slot"},{"name":"registry-dashboard-link","component":"registryDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"registry","slot":"client-registry-dashboard-slot","title":"Registry"},"online":true,"offline":true,"order":1},{"component":"registryExtension","name":"registry","slot":"client-registry-dashboard-slot"},{"name":"triage-dashboard-link","component":"triageDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"triage","slot":"triage-queue-dashboard-slot","title":"Triage"},"online":true,"offline":false},{"component":"triageQueueExtension","name":"triage","slot":"triage-queue-dashboard-slot"},{"name":"consultation-dashboard-link","component":"consultationDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"consultation","slot":"consultation-dashboard-slot","title":"Consultation"},"online":true,"offline":false},{"component":"consultationQueue","name":"consultation","slot":"consultation-dashboard-slot"},{"name":"mnch-dashboard-link","component":"mnchQueueDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"mnch","slot":"mnch-dashboard-slot","title":"MNCH"},"online":true,"offline":true},{"component":"mnchQueueDashboard","name":"mnch","slot":"mnch-dashboard-slot"},{"name":"pharmacy-dashboard-link","component":"pharmacyDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"dispensing","slot":"dispensing-dashboard-slot","title":"Pharmacy"},"online":true,"offline":true},{"name":"accounting-dashboard-link","component":"accountingDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"accounting","slot":"accounting-dashboard-slot","title":"Accounting"},"online":true,"offline":false},{"component":"accountingDashboard","name":"accounting","slot":"accounting-dashboard-slot"},{"name":"registers-dashboard-link","component":"registersDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"registers","slot":"registers-dashboard-slot","title":"Registers"},"online":true,"offline":false},{"component":"registers","name":"registers","slot":"registers-dashboard-slot"},{"name":"reports-dashboard-link","component":"reportsDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"reports","slot":"reports-dashboard-slot","title":"Reports"},"online":true,"offline":false},{"component":"reports","name":"Reports","slot":"reports-dashboard-slot"},{"name":"bookings-dashboard-link","component":"bookingsDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"bookings","slot":"bookings-dashboard-slot","title":"Bookings"},"online":true,"offline":true},{"component":"bookings","name":"bookings","slot":"bookings-dashboard-slot"}],"modals":[{"name":"sign-off-queue-entry-modal","component":"signOffModal"}],"version":"4.0.0-next.50"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{},"pages":[{"component":"root","route":"dha-workflow","online":true,"offline":true}],"extensions":[{"component":"workflowRegistryLink","name":"workflow-registry-link","slot":"app-menu-slot","online":true,"offline":true},{"component":"navLinks","name":"side-nav-workflow-links","slot":"dha-workflow-slot","online":true,"offline":true},{"name":"dha-workflow-dashboard-link","component":"dhaWorkflowDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"dashboard","slot":"dha-workflow-dashboard-slot","title":"Dashboard"},"online":true,"offline":true,"order":0},{"component":"dhaWorkflowDashboard","name":"dashboardExt","slot":"dha-workflow-dashboard-slot"},{"name":"registry-dashboard-link","component":"registryDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"registry","slot":"client-registry-dashboard-slot","title":"Registry"},"online":true,"offline":true,"order":1},{"component":"registryExtension","name":"registry","slot":"client-registry-dashboard-slot"},{"name":"triage-dashboard-link","component":"triageDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"triage","slot":"triage-queue-dashboard-slot","title":"Triage"},"online":true,"offline":false},{"component":"triageQueueExtension","name":"triage","slot":"triage-queue-dashboard-slot"},{"name":"consultation-dashboard-link","component":"consultationDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"consultation","slot":"consultation-dashboard-slot","title":"Consultation"},"online":true,"offline":false},{"component":"consultationQueue","name":"consultation","slot":"consultation-dashboard-slot"},{"name":"mnch-dashboard-link","component":"mnchQueueDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"mnch","slot":"mnch-dashboard-slot","title":"MNCH"},"online":true,"offline":true},{"component":"mnchQueueDashboard","name":"mnch","slot":"mnch-dashboard-slot"},{"name":"pharmacy-dashboard-link","component":"pharmacyDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"dispensing","slot":"dispensing-dashboard-slot","title":"Pharmacy"},"online":true,"offline":true},{"name":"accounting-dashboard-link","component":"accountingDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"accounting","slot":"accounting-dashboard-slot","title":"Accounting"},"online":true,"offline":false},{"component":"accountingDashboard","name":"accounting","slot":"accounting-dashboard-slot"},{"name":"registers-dashboard-link","component":"registersDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"registers","slot":"registers-dashboard-slot","title":"Registers"},"online":true,"offline":false},{"component":"registers","name":"registers","slot":"registers-dashboard-slot"},{"name":"reports-dashboard-link","component":"reportsDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"reports","slot":"reports-dashboard-slot","title":"Reports"},"online":true,"offline":false},{"component":"reports","name":"Reports","slot":"reports-dashboard-slot"},{"name":"bookings-dashboard-link","component":"bookingsDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"bookings","slot":"bookings-dashboard-slot","title":"Bookings"},"online":true,"offline":true},{"component":"bookings","name":"bookings","slot":"bookings-dashboard-slot"}],"modals":[{"name":"sign-off-queue-entry-modal","component":"signOffModal"}],"version":"4.0.0-next.52"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ampath/esm-dha-workflow-app",
3
- "version": "4.0.0-next.50",
3
+ "version": "4.0.0-next.52",
4
4
  "license": "MPL-2.0",
5
5
  "description": "An OpenMRS seed application for building microfrontends",
6
6
  "browser": "dist/esm-dha-workflow-app.js",
@@ -3,7 +3,6 @@ import {
3
3
  Button,
4
4
  Checkbox,
5
5
  ComboBox,
6
- InlineLoading,
7
6
  Modal,
8
7
  ModalBody,
9
8
  Select,
@@ -17,10 +16,25 @@ import {
17
16
  } from '@carbon/react';
18
17
  import styles from './send-to-triage.modal.scss';
19
18
  import { type Patient, useVisitTypes, useSession, showSnackbar, type VisitType } from '@openmrs/esm-framework';
20
- import { type HieClient, type CreateVisitDto, type QueueEntryDto, type ServiceQueue } from '../../types';
19
+ import { type HieClient, type CreateVisitDto, type QueueEntryDto, type ServiceQueue, PaymentDetail } from '../../types';
21
20
  import { createQueueEntry, getFacilityServiceQueues } from '../../../resources/queue.resource';
22
21
  import { QUEUE_PRIORITIES_UUIDS, QUEUE_STATUS_UUIDS } from '../../../shared/constants/concepts';
23
22
  import { createVisit } from '../../../resources/visit.resource';
23
+ import {
24
+ createBill,
25
+ fetchBillableServices,
26
+ fetchCashPoints,
27
+ fetchPaymentModes,
28
+ } from '../../../shared/services/billing.resource';
29
+ import {
30
+ type PayableBillableService,
31
+ type ServicePrice,
32
+ type BillableService,
33
+ type PaymentMode,
34
+ type CreateBillDto,
35
+ type PaymentStatus,
36
+ type CashPoint,
37
+ } from '../../../shared/types';
24
38
 
25
39
  interface SendToTriageModalProps {
26
40
  patients: Patient[];
@@ -45,14 +59,35 @@ const SendToTriageModal: React.FC<SendToTriageModalProps> = ({
45
59
  const [selectedVisitType, setSelectedVisitType] = useState<string>();
46
60
  const [serviceQueues, setServiceQueues] = useState<ServiceQueue[]>();
47
61
  const [selectedServiceQueue, setSelectedServiceQueue] = useState<string>();
62
+ const [paymentModes, setPaymentModes] = useState<PaymentMode[]>([]);
63
+ const [cashPoints, setCashPoints] = useState<CashPoint[]>([]);
64
+ const [selectedCashPoint, setSelectedCashPoint] = useState<CashPoint>(null);
65
+ const [selectedPaymentMode, setSelectedPaymentMode] = useState<PaymentMode>(null);
48
66
  const [selectedPriority, setSelectedPriority] = useState<string>('');
67
+ const [selectedPaymentDetail, setSelectedPaymentDetail] = useState<string>();
68
+ const [billableServices, setBillableServices] = useState<BillableService[]>([]);
69
+ const [servicePrices, setServicePrices] = useState<ServicePrice[]>([]);
70
+ const [filteredBillableServices, setFilteredBillableServices] = useState<ServicePrice[]>(null);
71
+ const [selectedBillableService, setSelectedBillableService] = useState<ServicePrice>(null);
49
72
  const [loading, setLoading] = useState<boolean>(false);
50
73
  const visitTypes = useVisitTypes();
51
74
  const session = useSession();
52
75
  const locationUuid = session.sessionLocation.uuid;
53
76
  const visitTypeOptions = useMemo(() => generateVisitTypeOptions(), [visitTypes]);
77
+
78
+ const facilityCashPoints = useMemo(() => getfacilityCashpoints(), [cashPoints, locationUuid]);
79
+
80
+ const paymentDetails = Object.values(PaymentDetail).map((value) => {
81
+ return {
82
+ id: value,
83
+ label: value,
84
+ };
85
+ });
54
86
  useEffect(() => {
55
87
  getServiceQueues();
88
+ getPaymentMethods();
89
+ getBillableServices();
90
+ getCashPoints();
56
91
  }, [patients]);
57
92
  if (!patients) {
58
93
  return <>No Client data</>;
@@ -67,13 +102,24 @@ const SendToTriageModal: React.FC<SendToTriageModalProps> = ({
67
102
  if (newVisit) {
68
103
  const addToTriageQueueDto: QueueEntryDto = generateAddToTriageDto(newVisit.uuid);
69
104
  const queueEntryResp = await createQueueEntry(addToTriageQueueDto);
105
+
70
106
  if (queueEntryResp) {
71
107
  showAlert('success', 'Patient has succesfully been moved to the Triage queue', '');
108
+ }
109
+
110
+ // add bill
111
+ const createBillDto = generateCreateBillDto();
112
+ const createBillResp = await createBill(createBillDto);
113
+ if (createBillResp) {
114
+ showAlert('success', 'Bill succesfully created', '');
115
+ }
116
+
117
+ if (queueEntryResp && createBillResp) {
72
118
  onModalClose({ success: true });
73
119
  }
74
120
  }
75
121
  } catch (error) {
76
- showAlert('error', 'Error creating visit', '');
122
+ showAlert('error', error.message ?? 'Error creating visit', '');
77
123
  } finally {
78
124
  setLoading(false);
79
125
  }
@@ -116,6 +162,40 @@ const SendToTriageModal: React.FC<SendToTriageModalProps> = ({
116
162
  const priorityChangeHandler = (priorityUuid: string) => {
117
163
  setSelectedPriority(priorityUuid);
118
164
  };
165
+ const paymentDetailsHandler = (paymentDetailSelected: string) => {
166
+ setSelectedPaymentDetail(paymentDetailSelected);
167
+ };
168
+ const paymentMethodHandler = (selectedPaymentModeUuid: string) => {
169
+ const selectedPaymentMode = paymentModes.find((pm) => {
170
+ return pm.uuid === selectedPaymentModeUuid;
171
+ });
172
+ setSelectedPaymentMode(selectedPaymentMode);
173
+ const paymentModeBillableServices = getBillableServiceByPaymentMode(selectedPaymentMode);
174
+ setFilteredBillableServices(paymentModeBillableServices);
175
+ };
176
+ const getBillableServiceByPaymentMode = (paymentMode: PaymentMode): PayableBillableService[] => {
177
+ const paymentBillableServices: ServicePrice[] = [];
178
+ servicePrices.forEach((sp) => {
179
+ if (sp.paymentMode) {
180
+ if (sp.paymentMode.uuid === paymentMode.uuid) {
181
+ paymentBillableServices.push(sp);
182
+ }
183
+ }
184
+ });
185
+ return paymentBillableServices;
186
+ };
187
+ const billableServicesHandler = (selectedBillableServiceUuid: string) => {
188
+ const selectedBillableService = servicePrices.find((sp) => {
189
+ return sp.uuid === selectedBillableServiceUuid;
190
+ });
191
+ setSelectedBillableService(selectedBillableService);
192
+ };
193
+ const cashPointsHandler = (selectedCashPointUuid: string) => {
194
+ const selectedCashPoint = cashPoints.find((cp) => {
195
+ return cp.uuid === selectedCashPointUuid;
196
+ });
197
+ setSelectedCashPoint(selectedCashPoint);
198
+ };
119
199
  const createPatientVisit = async () => {
120
200
  const visitDto = getCreateVisitDto();
121
201
  if (!isValidCreateVisitDto(visitDto)) {
@@ -187,6 +267,62 @@ const SendToTriageModal: React.FC<SendToTriageModalProps> = ({
187
267
  }
188
268
  }
189
269
 
270
+ async function getPaymentMethods() {
271
+ const methods = await fetchPaymentModes();
272
+ setPaymentModes(methods);
273
+ }
274
+
275
+ async function getBillableServices() {
276
+ const billableServices = await fetchBillableServices();
277
+ setBillableServices(billableServices);
278
+ generateServiceTypesList(billableServices);
279
+ }
280
+
281
+ async function getCashPoints() {
282
+ const cp = await fetchCashPoints();
283
+ setCashPoints(cp);
284
+ }
285
+
286
+ function getfacilityCashpoints() {
287
+ return cashPoints.filter((cp) => {
288
+ return cp.location.uuid === locationUuid;
289
+ });
290
+ }
291
+
292
+ function generateServiceTypesList(billableServices: BillableService[]) {
293
+ const sp: ServicePrice[] = [];
294
+ for (let bs of billableServices) {
295
+ if (bs.servicePrices) {
296
+ const servicePrices = bs.servicePrices;
297
+ for (let servicePrice of servicePrices) {
298
+ sp.push(servicePrice);
299
+ }
300
+ }
301
+ }
302
+ setServicePrices(sp);
303
+ }
304
+
305
+ function generateCreateBillDto(): CreateBillDto {
306
+ const payload: CreateBillDto = {
307
+ lineItems: [
308
+ {
309
+ billableService: selectedBillableService.billableService.uuid,
310
+ quantity: 1,
311
+ price: selectedBillableService.price,
312
+ priceName: selectedBillableService.name,
313
+ priceUuid: selectedBillableService.uuid,
314
+ lineItemOrder: 0,
315
+ paymentStatus: 'PENDING',
316
+ },
317
+ ],
318
+ cashPoint: selectedCashPoint.uuid,
319
+ patient: selectedPatient.uuid,
320
+ status: 'PENDING',
321
+ payments: [],
322
+ };
323
+ return payload;
324
+ }
325
+
190
326
  return (
191
327
  <>
192
328
  <Modal
@@ -229,6 +365,78 @@ const SendToTriageModal: React.FC<SendToTriageModalProps> = ({
229
365
  </TableBody>
230
366
  </Table>
231
367
  </div>
368
+ <div className={styles.formSection}>
369
+ <div className={styles.formRow}>
370
+ <div className={styles.formControl}>
371
+ <Select
372
+ id="payment-details"
373
+ labelText="Payment Details"
374
+ onChange={($event) => paymentDetailsHandler($event.target.value)}
375
+ >
376
+ <SelectItem value="" text="Select" />;
377
+ {paymentDetails.map((pd) => {
378
+ return <SelectItem value={pd.id} text={pd.label} />;
379
+ })}
380
+ </Select>
381
+ </div>
382
+ </div>
383
+ </div>
384
+ <div className={styles.formSection}>
385
+ {selectedPaymentDetail === PaymentDetail.Paying ? (
386
+ <>
387
+ <div className={styles.formRow}>
388
+ <div className={styles.formControl}>
389
+ <Select
390
+ id="payment-method"
391
+ labelText="Payment Method"
392
+ onChange={($event) => paymentMethodHandler($event.target.value)}
393
+ >
394
+ <SelectItem value="" text="Select" />;
395
+ {paymentModes &&
396
+ paymentModes.map((pm) => {
397
+ return <SelectItem value={pm.uuid} text={pm.name} />;
398
+ })}
399
+ </Select>
400
+ </div>
401
+ <div className={styles.formControl}>
402
+ <Select
403
+ id="billable-service"
404
+ labelText="Billable Services"
405
+ onChange={($event) => billableServicesHandler($event.target.value)}
406
+ >
407
+ <SelectItem value="" text="Select" />;
408
+ {filteredBillableServices &&
409
+ filteredBillableServices.map((sp) => {
410
+ return (
411
+ <SelectItem
412
+ value={sp.uuid}
413
+ text={`${sp.billableService.name}(${sp.name}:${sp.price})`}
414
+ />
415
+ );
416
+ })}
417
+ </Select>
418
+ </div>
419
+ </div>
420
+ <div className={styles.formRow}>
421
+ <div className={styles.formControl}>
422
+ <Select
423
+ id="cash-point"
424
+ labelText="Cash Point"
425
+ onChange={($event) => cashPointsHandler($event.target.value)}
426
+ >
427
+ <SelectItem value="" text="Select" />;
428
+ {facilityCashPoints &&
429
+ facilityCashPoints.map((cp) => {
430
+ return <SelectItem value={cp.uuid} text={cp.name} />;
431
+ })}
432
+ </Select>
433
+ </div>
434
+ </div>
435
+ </>
436
+ ) : (
437
+ <></>
438
+ )}
439
+ </div>
232
440
  <div className={styles.formSection}>
233
441
  <div className={styles.formRow}>
234
442
  <div className={styles.formControl}>
@@ -241,7 +449,7 @@ const SendToTriageModal: React.FC<SendToTriageModalProps> = ({
241
449
  />
242
450
  </div>
243
451
  <div className={styles.formControl}>
244
- <Select id="service" labelText="Select a Service" onChange={serviceChangeHandler}>
452
+ <Select id="service" labelText="Select a Queue Service" onChange={serviceChangeHandler}>
245
453
  <SelectItem value="" text="Select" />;
246
454
  {serviceQueues &&
247
455
  serviceQueues.map((sq) => {
@@ -307,3 +307,8 @@ export type QueueEntryResult = {
307
307
  visit_uuid: string;
308
308
  queue_coming_from: string;
309
309
  };
310
+
311
+ export enum PaymentDetail {
312
+ Paying = 'Paying',
313
+ NonPaying = 'Non-Paying',
314
+ }
@@ -1,5 +1,5 @@
1
1
  import { openmrsFetch, restBaseUrl } from '@openmrs/esm-framework';
2
- import { EndVisitDto, type CreateVisitDto } from '../registry/types';
2
+ import { type EndVisitDto, type CreateVisitDto } from '../registry/types';
3
3
 
4
4
  export async function createVisit(createVisitDto: CreateVisitDto) {
5
5
  const url = `${restBaseUrl}/visit`;
@@ -141,7 +141,7 @@ export function useQueue(service: string = '7f7ec7ad-cdd7-4ed9-bc2e-5c5bd9f065b2
141
141
  Error
142
142
  >(service ? apiUrl : null, openmrsFetch);
143
143
 
144
- return { data, isLoading };
144
+ return { data, isLoading };
145
145
  }
146
146
 
147
147
  export async function getServiceQueueByLocationUuid(
@@ -0,0 +1,37 @@
1
+ import { openmrsFetch, restBaseUrl } from '@openmrs/esm-framework';
2
+ import { type CreateBillDto, type BillableService, type PaymentMode, type CashPoint } from '../types';
3
+
4
+ export async function fetchPaymentModes(): Promise<PaymentMode[]> {
5
+ const paymentModeUrl = `${restBaseUrl}/billing/paymentMode`;
6
+ const resp = await openmrsFetch(paymentModeUrl);
7
+ const data = await resp.json();
8
+ return data.results ?? [];
9
+ }
10
+
11
+ export async function fetchBillableServices(): Promise<BillableService[]> {
12
+ const v = 'full';
13
+ const billableServiceUrl = `${restBaseUrl}/billing/billableService`;
14
+ const resp = await openmrsFetch(`${billableServiceUrl}?v=${v}`);
15
+ const data = await resp.json();
16
+ return data.results ?? [];
17
+ }
18
+
19
+ export async function createBill(createBillDto: CreateBillDto) {
20
+ const createBillUrl = `${restBaseUrl}/billing/bill`;
21
+ const response = await openmrsFetch(createBillUrl, {
22
+ method: 'POST',
23
+ headers: {
24
+ 'content-type': 'application/json',
25
+ },
26
+ body: JSON.stringify(createBillDto),
27
+ });
28
+ const result = await response.json();
29
+ return result.results ?? [];
30
+ }
31
+
32
+ export async function fetchCashPoints(): Promise<CashPoint[]> {
33
+ const cashPointUrl = `${restBaseUrl}/billing/cashPoint`;
34
+ const resp = await openmrsFetch(cashPointUrl);
35
+ const data = await resp.json();
36
+ return data.results ?? [];
37
+ }
@@ -0,0 +1,69 @@
1
+ import { type Location } from '@openmrs/esm-framework';
2
+
3
+ export type BillableService = {
4
+ uuid: string;
5
+ name: string;
6
+ shortName: string;
7
+ serviceStatus: 'ENABLED' | 'DISABLED';
8
+ serviceType: ServiceType | null;
9
+ servicePrices: ServicePrice[];
10
+ resourceVersion: string;
11
+ };
12
+
13
+ export type ServiceType = {
14
+ display: string;
15
+ resourceVersion: string;
16
+ };
17
+
18
+ export type ServicePrice = {
19
+ uuid: string;
20
+ name: string;
21
+ price: number;
22
+ item: string;
23
+ paymentMode: PaymentMode;
24
+ billableService: BillableService;
25
+ resourceVersion: string;
26
+ };
27
+
28
+ export type PaymentMode = {
29
+ uuid: string;
30
+ name: string;
31
+ description: string | null;
32
+ retired: boolean;
33
+ retireReason: string;
34
+ attributeTypes: unknown[];
35
+ sortOrder: number | null;
36
+ resourceVersion: string;
37
+ };
38
+
39
+ export type PayableBillableService = ServicePrice & {
40
+ billableService: BillableService;
41
+ };
42
+
43
+ export type PaymentStatus = 'PENDING' | 'PAID' | 'FAILED' | 'CANCELLED';
44
+
45
+ export type LineItem = {
46
+ billableService: string;
47
+ quantity: number;
48
+ price: number;
49
+ priceName: string;
50
+ priceUuid: string;
51
+ lineItemOrder: number;
52
+ paymentStatus: PaymentStatus;
53
+ };
54
+
55
+ export type CreateBillDto = {
56
+ lineItems: LineItem[];
57
+ cashPoint: string;
58
+ patient: string;
59
+ status: PaymentStatus;
60
+ payments: any[];
61
+ };
62
+
63
+ export type CashPoint = {
64
+ uuid: string;
65
+ name: string;
66
+ description: string;
67
+ retired: boolean;
68
+ location: Location;
69
+ };