@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/154.js +1 -1
- package/dist/757.js +1 -0
- package/dist/757.js.map +1 -0
- package/dist/826.js +1 -1
- package/dist/esm-dha-workflow-app.js.buildmanifest.json +32 -32
- package/dist/main.js +1 -1
- package/dist/routes.json +1 -1
- package/package.json +1 -1
- package/src/registry/modal/send-to-triage/send-to-triage.modal.tsx +212 -4
- package/src/registry/types/index.ts +5 -0
- package/src/resources/visit.resource.ts +1 -1
- package/src/service-queues/service-queues.resource.ts +1 -1
- package/src/shared/services/billing.resource.ts +37 -0
- package/src/shared/types/index.ts +69 -0
- package/dist/327.js +0 -1
- package/dist/327.js.map +0 -1
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.
|
|
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
|
@@ -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) => {
|
|
@@ -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
|
-
|
|
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
|
+
};
|