@ampath/esm-dha-workflow-app 4.0.0-next.29 → 4.0.0-next.30
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/710.js +1 -1
- package/dist/752.js +1 -1
- package/dist/810.js +2 -0
- package/dist/{972.js.LICENSE.txt → 810.js.LICENSE.txt} +15 -0
- package/dist/810.js.map +1 -0
- package/dist/907.js +1 -1
- package/dist/91.js +1 -1
- package/dist/93.js +1 -1
- package/dist/93.js.map +1 -1
- package/dist/943.js +1 -0
- package/dist/943.js.map +1 -0
- package/dist/esm-dha-workflow-app.js +1 -1
- package/dist/esm-dha-workflow-app.js.buildmanifest.json +48 -48
- package/dist/main.js +1 -1
- package/dist/routes.json +1 -1
- package/package.json +1 -1
- package/src/bookings/daily/daily-bookings.component.scss +38 -0
- package/src/bookings/daily/daily-bookings.component.tsx +138 -0
- package/src/bookings/daily/daily-bookings.resource.ts +27 -0
- package/src/bookings/daily/filters/daily-bookings-filter.component.scss +15 -0
- package/src/bookings/daily/filters/daily-bookings-filter.component.tsx +80 -0
- package/src/bookings/daily/patient-list/daily-bookings-patient-list.component.tsx +97 -0
- package/src/bookings/types/index.ts +68 -0
- package/src/root.component.tsx +2 -0
- package/src/side-nav-menu/nav-link-config.ts +10 -0
- package/dist/105.js +0 -1
- package/dist/105.js.map +0 -1
- package/dist/972.js +0 -2
- package/dist/972.js.map +0 -1
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"auxiliaryFiles": [
|
|
130
130
|
"91.js.map"
|
|
131
131
|
],
|
|
132
|
-
"hash": "
|
|
132
|
+
"hash": "a2efd92769922b82",
|
|
133
133
|
"childrenByOrder": {}
|
|
134
134
|
},
|
|
135
135
|
{
|
|
@@ -137,9 +137,9 @@
|
|
|
137
137
|
"initial": false,
|
|
138
138
|
"entry": false,
|
|
139
139
|
"recorded": false,
|
|
140
|
-
"size":
|
|
140
|
+
"size": 2633,
|
|
141
141
|
"sizes": {
|
|
142
|
-
"javascript":
|
|
142
|
+
"javascript": 2633
|
|
143
143
|
},
|
|
144
144
|
"names": [],
|
|
145
145
|
"idHints": [],
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
"auxiliaryFiles": [
|
|
154
154
|
"93.js.map"
|
|
155
155
|
],
|
|
156
|
-
"hash": "
|
|
156
|
+
"hash": "99cb267a386b8f1d",
|
|
157
157
|
"childrenByOrder": {}
|
|
158
158
|
},
|
|
159
159
|
{
|
|
@@ -205,30 +205,6 @@
|
|
|
205
205
|
"hash": "22dee3bca5d9a83d",
|
|
206
206
|
"childrenByOrder": {}
|
|
207
207
|
},
|
|
208
|
-
{
|
|
209
|
-
"rendered": true,
|
|
210
|
-
"initial": false,
|
|
211
|
-
"entry": false,
|
|
212
|
-
"recorded": false,
|
|
213
|
-
"size": 198100,
|
|
214
|
-
"sizes": {
|
|
215
|
-
"javascript": 198100
|
|
216
|
-
},
|
|
217
|
-
"names": [],
|
|
218
|
-
"idHints": [],
|
|
219
|
-
"runtime": [
|
|
220
|
-
"@ampath/esm-dha-workflow-app",
|
|
221
|
-
"main"
|
|
222
|
-
],
|
|
223
|
-
"files": [
|
|
224
|
-
"105.js"
|
|
225
|
-
],
|
|
226
|
-
"auxiliaryFiles": [
|
|
227
|
-
"105.js.map"
|
|
228
|
-
],
|
|
229
|
-
"hash": "75b62287ba35ae21",
|
|
230
|
-
"childrenByOrder": {}
|
|
231
|
-
},
|
|
232
208
|
{
|
|
233
209
|
"rendered": false,
|
|
234
210
|
"initial": false,
|
|
@@ -584,7 +560,7 @@
|
|
|
584
560
|
"auxiliaryFiles": [
|
|
585
561
|
"710.js.map"
|
|
586
562
|
],
|
|
587
|
-
"hash": "
|
|
563
|
+
"hash": "b5b1c4366dba587f",
|
|
588
564
|
"childrenByOrder": {}
|
|
589
565
|
},
|
|
590
566
|
{
|
|
@@ -633,7 +609,7 @@
|
|
|
633
609
|
"auxiliaryFiles": [
|
|
634
610
|
"752.js.map"
|
|
635
611
|
],
|
|
636
|
-
"hash": "
|
|
612
|
+
"hash": "1e5648f9c3220f0a",
|
|
637
613
|
"childrenByOrder": {}
|
|
638
614
|
},
|
|
639
615
|
{
|
|
@@ -661,7 +637,34 @@
|
|
|
661
637
|
"auxiliaryFiles": [
|
|
662
638
|
"main.js.map"
|
|
663
639
|
],
|
|
664
|
-
"hash": "
|
|
640
|
+
"hash": "e10170f9febb761a",
|
|
641
|
+
"childrenByOrder": {}
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
"rendered": true,
|
|
645
|
+
"initial": false,
|
|
646
|
+
"entry": false,
|
|
647
|
+
"recorded": false,
|
|
648
|
+
"reason": "split chunk (cache group: defaultVendors)",
|
|
649
|
+
"size": 2807818,
|
|
650
|
+
"sizes": {
|
|
651
|
+
"javascript": 2807818
|
|
652
|
+
},
|
|
653
|
+
"names": [],
|
|
654
|
+
"idHints": [
|
|
655
|
+
"vendors"
|
|
656
|
+
],
|
|
657
|
+
"runtime": [
|
|
658
|
+
"@ampath/esm-dha-workflow-app",
|
|
659
|
+
"main"
|
|
660
|
+
],
|
|
661
|
+
"files": [
|
|
662
|
+
"810.js"
|
|
663
|
+
],
|
|
664
|
+
"auxiliaryFiles": [
|
|
665
|
+
"810.js.map"
|
|
666
|
+
],
|
|
667
|
+
"hash": "af50cb19783ab0a8",
|
|
665
668
|
"childrenByOrder": {}
|
|
666
669
|
},
|
|
667
670
|
{
|
|
@@ -712,7 +715,7 @@
|
|
|
712
715
|
"auxiliaryFiles": [
|
|
713
716
|
"esm-dha-workflow-app.js.map"
|
|
714
717
|
],
|
|
715
|
-
"hash": "
|
|
718
|
+
"hash": "3e4970f2d293213d",
|
|
716
719
|
"childrenByOrder": {}
|
|
717
720
|
},
|
|
718
721
|
{
|
|
@@ -737,7 +740,7 @@
|
|
|
737
740
|
"auxiliaryFiles": [
|
|
738
741
|
"907.js.map"
|
|
739
742
|
],
|
|
740
|
-
"hash": "
|
|
743
|
+
"hash": "413039d2bc4c91f8",
|
|
741
744
|
"childrenByOrder": {}
|
|
742
745
|
},
|
|
743
746
|
{
|
|
@@ -745,26 +748,23 @@
|
|
|
745
748
|
"initial": false,
|
|
746
749
|
"entry": false,
|
|
747
750
|
"recorded": false,
|
|
748
|
-
"
|
|
749
|
-
"size": 137481,
|
|
751
|
+
"size": 233319,
|
|
750
752
|
"sizes": {
|
|
751
|
-
"javascript":
|
|
753
|
+
"javascript": 233319
|
|
752
754
|
},
|
|
753
755
|
"names": [],
|
|
754
|
-
"idHints": [
|
|
755
|
-
"vendors"
|
|
756
|
-
],
|
|
756
|
+
"idHints": [],
|
|
757
757
|
"runtime": [
|
|
758
758
|
"@ampath/esm-dha-workflow-app",
|
|
759
759
|
"main"
|
|
760
760
|
],
|
|
761
761
|
"files": [
|
|
762
|
-
"
|
|
762
|
+
"943.js"
|
|
763
763
|
],
|
|
764
764
|
"auxiliaryFiles": [
|
|
765
|
-
"
|
|
765
|
+
"943.js.map"
|
|
766
766
|
],
|
|
767
|
-
"hash": "
|
|
767
|
+
"hash": "7ccfda87eceeaa70",
|
|
768
768
|
"childrenByOrder": {}
|
|
769
769
|
},
|
|
770
770
|
{
|
|
@@ -773,9 +773,9 @@
|
|
|
773
773
|
"entry": false,
|
|
774
774
|
"recorded": false,
|
|
775
775
|
"reason": "split chunk (cache group: defaultVendors)",
|
|
776
|
-
"size":
|
|
776
|
+
"size": 137481,
|
|
777
777
|
"sizes": {
|
|
778
|
-
"javascript":
|
|
778
|
+
"javascript": 137481
|
|
779
779
|
},
|
|
780
780
|
"names": [],
|
|
781
781
|
"idHints": [
|
|
@@ -786,12 +786,12 @@
|
|
|
786
786
|
"main"
|
|
787
787
|
],
|
|
788
788
|
"files": [
|
|
789
|
-
"
|
|
789
|
+
"961.js"
|
|
790
790
|
],
|
|
791
791
|
"auxiliaryFiles": [
|
|
792
|
-
"
|
|
792
|
+
"961.js.map"
|
|
793
793
|
],
|
|
794
|
-
"hash": "
|
|
794
|
+
"hash": "7627c8bb148ecb92",
|
|
795
795
|
"childrenByOrder": {}
|
|
796
796
|
},
|
|
797
797
|
{
|
|
@@ -812,7 +812,7 @@
|
|
|
812
812
|
],
|
|
813
813
|
"files": [],
|
|
814
814
|
"auxiliaryFiles": [],
|
|
815
|
-
"hash": "
|
|
815
|
+
"hash": "fbf9d8d06e6bf814",
|
|
816
816
|
"childrenByOrder": {}
|
|
817
817
|
}
|
|
818
818
|
]
|
package/dist/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e,r,t,n,o={38091:(e,r,t)=>{"use strict";t.d(r,{moduleName:()=>o});var n=t(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,"@ampath/esm-dha-workflow-app"),a={featureName:"Consulation Workflow",moduleName:o};t(84767),(0,n.getAsyncLifecycle)((function(){return Promise.all([t.e(961),t.e(
|
|
1
|
+
(()=>{var e,r,t,n,o={38091:(e,r,t)=>{"use strict";t.d(r,{moduleName:()=>o});var n=t(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,"@ampath/esm-dha-workflow-app"),a={featureName:"Consulation Workflow",moduleName:o};t(84767),(0,n.getAsyncLifecycle)((function(){return Promise.all([t.e(961),t.e(810),t.e(72),t.e(93)]).then(t.bind(t,69093))}),{featureName:"side-nav-workflow-link",moduleName:o}),(0,n.getAsyncLifecycle)((function(){return Promise.all([t.e(961),t.e(810),t.e(104),t.e(72),t.e(76),t.e(231),t.e(114),t.e(907),t.e(943)]).then(t.bind(t,76943))}),a),(0,n.getAsyncLifecycle)((function(){return Promise.all([t.e(961),t.e(810),t.e(72),t.e(114),t.e(907),t.e(709)]).then(t.bind(t,28907))}),a),(0,n.getAsyncLifecycle)((function(){return Promise.all([t.e(961),t.e(810),t.e(104),t.e(72),t.e(76),t.e(231),t.e(752),t.e(15)]).then(t.bind(t,45015))}),a),(0,n.getAsyncLifecycle)((function(){return Promise.all([t.e(961),t.e(810),t.e(104),t.e(72),t.e(76),t.e(231),t.e(752),t.e(339)]).then(t.bind(t,88339))}),a),(0,n.getAsyncLifecycle)((function(){return Promise.all([t.e(961),t.e(810),t.e(104),t.e(72),t.e(76),t.e(231),t.e(752),t.e(833)]).then(t.bind(t,41833))}),a),(0,n.getAsyncLifecycle)((function(){return Promise.all([t.e(961),t.e(810),t.e(104),t.e(72),t.e(76),t.e(231),t.e(752),t.e(729)]).then(t.bind(t,71729))}),a),(0,n.getAsyncLifecycle)((function(){return Promise.all([t.e(72),t.e(76),t.e(420)]).then(t.bind(t,27420))}),{featureName:"workflow-registry-link",moduleName:o})},84767:(e,r,t)=>{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(!t.o(n,e))return Promise.resolve().then((()=>{var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}));var r=n[e],o=r[0];return t.e(r[1]).then((()=>t(o)))}o.keys=()=>Object.keys(n),o.id=84767,e.exports=o}},a={};function i(e){var r=a[e];if(void 0!==r)return r.exports;var t=a[e]={id:e,exports:{}};return o[e].call(t.exports,t,t.exports,i),t.exports}i.m=o,i.c=a,i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var o=Object.create(null);i.r(o);var a={};e=e||[null,r({}),r([]),r(r)];for(var u=2&n&&t;"object"==typeof u&&!~e.indexOf(u);u=r(u))Object.getOwnPropertyNames(u).forEach((e=>a[e]=()=>t[e]));return a.default=()=>t,i.d(o,a),o},i.d=(e,r)=>{for(var t in r)i.o(r,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((r,t)=>(i.f[t](e,r),r)),[])),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,r)=>Object.prototype.hasOwnProperty.call(e,r),t={},n="@ampath/esm-dha-workflow-app:",i.l=(e,r,o,a)=>{if(t[e])t[e].push(r);else{var u,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),p=0;p<c.length;p++){var s=c[p];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==n+o){u=s;break}}u||(l=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,i.nc&&u.setAttribute("nonce",i.nc),u.setAttribute("data-webpack",n+o),u.src=e),t[e]=[r];var f=(r,n)=>{u.onerror=u.onload=null,clearTimeout(d);var o=t[e];if(delete t[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((e=>e(n))),r)return r(n)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),l&&document.head.appendChild(u)}},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={},r={};i.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];i.o(i.S,t)||(i.S[t]={});var a=i.S[t],u="@ampath/esm-dha-workflow-app",l=(e,r,t,n)=>{var o=a[e]=a[e]||{},i=o[r];(!i||!i.loaded&&(!n!=!i.eager?n:u>i.from))&&(o[r]={get:t,from:u,eager:!!n})},c=[];return"default"===t&&(l("@openmrs/esm-framework","8.0.1-pre.3529",(()=>Promise.all([i.e(961),i.e(810),i.e(104),i.e(710),i.e(72),i.e(76),i.e(231),i.e(114),i.e(83),i.e(987)]).then((()=>()=>i(48710))))),l("dayjs","1.11.13",(()=>i.e(353).then((()=>()=>i(74353))))),l("react-i18next","16.0.0",(()=>Promise.all([i.e(255),i.e(72)]).then((()=>()=>i(77255))))),l("react-router-dom","6.30.1",(()=>Promise.all([i.e(961),i.e(282),i.e(72)]).then((()=>()=>i(20282))))),l("react","18.3.1",(()=>i.e(540).then((()=>()=>i(96540))))),l("rxjs","6.6.7",(()=>i.e(184).then((()=>()=>i(63184)))))),e[t]=c.length?Promise.all(c).then((()=>e[t]=1)):1}}})(),(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var r=i.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})(),(()=>{var e=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},r=e=>{var t=e[0],n="";if(1===e.length)return"*";if(t+.5){n+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var o=1,a=1;a<e.length;a++)o--,n+="u"==(typeof(u=e[a]))[0]?"-":(o>0?".":"")+(o=2,u);return n}var i=[];for(a=1;a<e.length;a++){var u=e[a];i.push(0===u?"not("+l()+")":1===u?"("+l()+" || "+l()+")":2===u?i.pop()+" "+i.pop():r(u))}return l();function l(){return i.pop().replace(/^\((.+)\)$/,"$1")}},t=(r,n)=>{if(0 in r){n=e(n);var o=r[0],a=o<0;a&&(o=-o-1);for(var i=0,u=1,l=!0;;u++,i++){var c,p,s=u<r.length?(typeof r[u])[0]:"";if(i>=n.length||"o"==(p=(typeof(c=n[i]))[0]))return!l||("u"==s?u>o&&!a:""==s!=a);if("u"==p){if(!l||"u"!=s)return!1}else if(l)if(s==p)if(u<=o){if(c!=r[u])return!1}else{if(a?c>r[u]:c<r[u])return!1;c!=r[u]&&(l=!1)}else if("s"!=s&&"n"!=s){if(a||u<=o)return!1;l=!1,u--}else{if(u<=o||p<s!=a)return!1;l=!1}else"s"!=s&&"n"!=s&&(l=!1,u--)}}var f=[],d=f.pop.bind(f);for(i=1;i<r.length;i++){var h=r[i];f.push(1==h?d()|d():2==h?d()&d():h?t(h,n):!d())}return!!d()},n=(r,t,n)=>{var o=n?(e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}))(r[t]):r[t];return Object.keys(o).reduce(((r,t)=>!r||!o[r].loaded&&((r,t)=>{r=e(r),t=e(t);for(var n=0;;){if(n>=r.length)return n<t.length&&"u"!=(typeof t[n])[0];var o=r[n],a=(typeof o)[0];if(n>=t.length)return"u"==a;var i=t[n],u=(typeof i)[0];if(a!=u)return"o"==a&&"n"==u||"s"==u||"u"==a;if("o"!=a&&"u"!=a&&o!=i)return o<i;n++}})(r,t)?t:r),0)},o=(e,r,t)=>t?t():((e,r)=>(e=>{throw new Error(e)})("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),a=(e=>function(r,t,n,o,a){var u=i.I(r);return u&&u.then&&!n?u.then(e.bind(e,r,i.S[r],t,!1,o,a)):e(r,i.S[r],t,n,o,a)})(((e,a,u,l,c,p)=>{if(!((e,r)=>e&&i.o(e,r))(a,u))return o(e,u,p);var s,f,d=n(a,u,l);return t(c,d)||(f=((e,t,n,o)=>"Unsatisfied version "+n+" from "+(n&&e[t][n].from)+" of shared singleton module "+t+" (required "+r(o)+")")(a,u,d,c),"undefined"!=typeof console&&console.warn&&console.warn(f)),(s=a[u][d]).loaded=1,s.get()})),u={},l={25987:()=>a("default","@openmrs/esm-framework",!1,[0],(()=>Promise.all([i.e(961),i.e(810),i.e(104),i.e(710),i.e(72),i.e(76),i.e(231),i.e(114),i.e(83)]).then((()=>()=>i(48710))))),16072:()=>a("default","react",!1,[1,18],(()=>i.e(540).then((()=>()=>i(96540))))),2076:()=>a("default","react-i18next",!1,[1,16],(()=>i.e(255).then((()=>()=>i(77255))))),70231:()=>a("default","dayjs",!1,[1,1],(()=>i.e(353).then((()=>()=>i(74353))))),27114:()=>a("default","react-router-dom",!1,[1,6],(()=>i.e(282).then((()=>()=>i(20282))))),53083:()=>a("default","rxjs",!1,[1,6],(()=>i.e(184).then((()=>()=>i(63184)))))};[25987].forEach((e=>{i.m[e]=r=>{u[e]=0,delete i.c[e];var t=l[e]();if("function"!=typeof t)throw new Error("Shared module is not available for eager consumption: "+e);r.exports=t()}}));var c={72:[16072],76:[2076],83:[53083],114:[27114],231:[70231],792:[25987],987:[25987]},p={};i.f.consumes=(e,r)=>{i.o(c,e)&&c[e].forEach((e=>{if(i.o(u,e))return r.push(u[e]);if(!p[e]){var t=r=>{u[e]=0,i.m[e]=t=>{delete i.c[e],t.exports=r()}};p[e]=!0;var n=r=>{delete u[e],i.m[e]=t=>{throw delete i.c[e],r}};try{var o=l[e]();o.then?r.push(u[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}}))}})(),(()=>{var e={91:0,792:0,987:0};i.f.j=(r,t)=>{var n=i.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(/^(114|231|72|76|83|987)$/.test(r))e[r]=0;else{var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=i.p+i.u(r),u=new Error;i.l(a,(t=>{if(i.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;u.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",u.name="ChunkLoadError",u.type=o,u.request=a,n[1](u)}}),"chunk-"+r,r)}};var r=(r,t)=>{var n,o,[a,u,l]=t,c=0;if(a.some((r=>0!==e[r]))){for(n in u)i.o(u,n)&&(i.m[n]=u[n]);l&&l(i)}for(r&&r(t);c<a.length;c++)o=a[c],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=globalThis.webpackChunk_ampath_esm_dha_workflow_app=globalThis.webpackChunk_ampath_esm_dha_workflow_app||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),i.nc=void 0,i(38091)})();
|
package/dist/routes.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{},"pages":[{"component":"root","route":"home","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":"metrics-card-patients-in-waiting","component":"waitingPatientsExtension","slot":"clinic-metrics-slot","order":1},{"name":"metrics-card-patients-attended-to","component":"attendedToPatientsExtension","slot":"clinic-metrics-slot","order":2},{"name":"metrics-card-patients-in-waiting","component":"triageWaitingPatientsExtension","slot":"triage-metrics-slot","order":1},{"name":"metrics-card-patients-attended-to","component":"triageAttendedToPatientsExtension","slot":"triage-metrics-slot","order":2}],"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":"home","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":"metrics-card-patients-in-waiting","component":"waitingPatientsExtension","slot":"clinic-metrics-slot","order":1},{"name":"metrics-card-patients-attended-to","component":"attendedToPatientsExtension","slot":"clinic-metrics-slot","order":2},{"name":"metrics-card-patients-in-waiting","component":"triageWaitingPatientsExtension","slot":"triage-metrics-slot","order":1},{"name":"metrics-card-patients-attended-to","component":"triageAttendedToPatientsExtension","slot":"triage-metrics-slot","order":2}],"modals":[{"name":"sign-off-queue-entry-modal","component":"signOffModal"}],"version":"4.0.0-next.30"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
.bookingsLayout{
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
padding: 15px 15px;
|
|
5
|
+
row-gap: 5px;
|
|
6
|
+
}
|
|
7
|
+
.bookingsHeader{
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: row;
|
|
10
|
+
column-gap: 5px;
|
|
11
|
+
width: 100%;
|
|
12
|
+
}
|
|
13
|
+
.bookingsFilters{
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
width: 100%;
|
|
17
|
+
border: 1px double lightgray;
|
|
18
|
+
padding-top: 10px;
|
|
19
|
+
padding-bottom: 10px;
|
|
20
|
+
padding-left: 15px;
|
|
21
|
+
padding-right: 15px;
|
|
22
|
+
margin-left: 5px;
|
|
23
|
+
margin-right: 5px;
|
|
24
|
+
margin-bottom: 10px;
|
|
25
|
+
}
|
|
26
|
+
.bookingsContent{
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
width: 100%;
|
|
30
|
+
row-gap: 15px;
|
|
31
|
+
}
|
|
32
|
+
.contentActions{
|
|
33
|
+
display: flex;
|
|
34
|
+
flex-direction: row;
|
|
35
|
+
width: 100%;
|
|
36
|
+
justify-content: flex-end;
|
|
37
|
+
column-gap: 5px;
|
|
38
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import styles from './daily-bookings.component.scss';
|
|
3
|
+
import { Button, InlineLoading, Tab, TabList, TabPanel, TabPanels, Tabs } from '@carbon/react';
|
|
4
|
+
import DailyBookingsFilter from './filters/daily-bookings-filter.component';
|
|
5
|
+
import { showSnackbar } from '@openmrs/esm-framework';
|
|
6
|
+
import { type DailyBookingsResult, type BookingFilter, DailyBookingType } from '../types';
|
|
7
|
+
import DailiyBookingsPatientList from './patient-list/daily-bookings-patient-list.component';
|
|
8
|
+
import { getDailyBookings } from './daily-bookings.resource';
|
|
9
|
+
|
|
10
|
+
interface DailyBookingsProps {}
|
|
11
|
+
const DailyBookings: React.FC<DailyBookingsProps> = () => {
|
|
12
|
+
const [filters, setFilters] = useState<BookingFilter>();
|
|
13
|
+
const [appointments, setAppointments] = useState<DailyBookingsResult[]>([]);
|
|
14
|
+
const [visits, setVisits] = useState<DailyBookingsResult[]>([]);
|
|
15
|
+
const [hasNotReturned, setHasNotReturned] = useState<DailyBookingsResult[]>([]);
|
|
16
|
+
const [selectedTab, setSelectedTab] = useState<DailyBookingType>(DailyBookingType.Appointments);
|
|
17
|
+
const [loading, setLoading] = useState<boolean>(false);
|
|
18
|
+
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (filters) {
|
|
21
|
+
getDailyBookingsByType(selectedTab);
|
|
22
|
+
}
|
|
23
|
+
}, [filters]);
|
|
24
|
+
|
|
25
|
+
const handleFilterSelected = (filters: BookingFilter) => {
|
|
26
|
+
setFilters(filters);
|
|
27
|
+
};
|
|
28
|
+
const handleSelectedTab = (userSelectedTab: DailyBookingType) => {
|
|
29
|
+
setSelectedTab(userSelectedTab);
|
|
30
|
+
};
|
|
31
|
+
const getDailyBookingsByType = async (dailyBookingType: DailyBookingType) => {
|
|
32
|
+
const isValidFilter = isValidFilterset(filters);
|
|
33
|
+
if (!isValidFilter) return;
|
|
34
|
+
setLoading(true);
|
|
35
|
+
try {
|
|
36
|
+
const resp = await getDailyBookings(filters, dailyBookingType);
|
|
37
|
+
if (selectedTab === DailyBookingType.Appointments) {
|
|
38
|
+
setAppointments(resp);
|
|
39
|
+
}
|
|
40
|
+
if (selectedTab === DailyBookingType.Visits) {
|
|
41
|
+
setVisits(resp);
|
|
42
|
+
}
|
|
43
|
+
if (selectedTab === DailyBookingType.HasNotReturned) {
|
|
44
|
+
setHasNotReturned(resp);
|
|
45
|
+
}
|
|
46
|
+
} catch (e) {
|
|
47
|
+
showSnackbar({
|
|
48
|
+
kind: 'error',
|
|
49
|
+
title: e.message ?? 'An error ocurred while fetching data',
|
|
50
|
+
subtitle: '',
|
|
51
|
+
});
|
|
52
|
+
} finally {
|
|
53
|
+
setLoading(false);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const isValidFilterset = (filters: BookingFilter) => {
|
|
57
|
+
if (!filters) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (!filters.startDate) {
|
|
61
|
+
showSnackbar({
|
|
62
|
+
kind: 'error',
|
|
63
|
+
title: 'Start Date not set',
|
|
64
|
+
subtitle: '',
|
|
65
|
+
});
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
if (!filters.locationUuids) {
|
|
69
|
+
showSnackbar({
|
|
70
|
+
kind: 'error',
|
|
71
|
+
title: 'User location not set',
|
|
72
|
+
subtitle: '',
|
|
73
|
+
});
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
if (!filters.department) {
|
|
77
|
+
showSnackbar({
|
|
78
|
+
kind: 'error',
|
|
79
|
+
title: 'Department not set',
|
|
80
|
+
subtitle: '',
|
|
81
|
+
});
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return true;
|
|
85
|
+
};
|
|
86
|
+
const handleRefresh = () => {
|
|
87
|
+
getDailyBookingsByType(selectedTab);
|
|
88
|
+
};
|
|
89
|
+
return (
|
|
90
|
+
<>
|
|
91
|
+
<div className={styles.bookingsLayout}>
|
|
92
|
+
<div className={styles.bookingsHeader}>
|
|
93
|
+
<h4>Daily Bookings</h4>
|
|
94
|
+
</div>
|
|
95
|
+
<div className={styles.bookingsFilters}>
|
|
96
|
+
<DailyBookingsFilter filterSelected={handleFilterSelected} />
|
|
97
|
+
</div>
|
|
98
|
+
<div className={styles.bookingsContent}>
|
|
99
|
+
<div className={styles.contentActions}>
|
|
100
|
+
<Button kind="primary" onClick={handleRefresh} disabled={loading}>
|
|
101
|
+
{loading ? <InlineLoading description="Fetching..." /> : 'Refresh'}
|
|
102
|
+
</Button>
|
|
103
|
+
</div>
|
|
104
|
+
<div className={styles.contentData}>
|
|
105
|
+
<Tabs>
|
|
106
|
+
<TabList contained>
|
|
107
|
+
<Tab onClick={() => handleSelectedTab(DailyBookingType.Appointments)}>Appointments</Tab>
|
|
108
|
+
<Tab onClick={() => handleSelectedTab(DailyBookingType.Visits)}>Visits</Tab>
|
|
109
|
+
<Tab onClick={() => handleSelectedTab(DailyBookingType.HasNotReturned)}>Has Not Returned</Tab>
|
|
110
|
+
</TabList>
|
|
111
|
+
<TabPanels>
|
|
112
|
+
<TabPanel>
|
|
113
|
+
{appointments && appointments.length > 0 ? (
|
|
114
|
+
<DailiyBookingsPatientList patientListData={appointments} />
|
|
115
|
+
) : (
|
|
116
|
+
<></>
|
|
117
|
+
)}
|
|
118
|
+
</TabPanel>
|
|
119
|
+
<TabPanel>
|
|
120
|
+
{visits && visits.length > 0 ? <DailiyBookingsPatientList patientListData={visits} /> : <></>}
|
|
121
|
+
</TabPanel>
|
|
122
|
+
<TabPanel>
|
|
123
|
+
{hasNotReturned && hasNotReturned.length > 0 ? (
|
|
124
|
+
<DailiyBookingsPatientList patientListData={hasNotReturned} />
|
|
125
|
+
) : (
|
|
126
|
+
<></>
|
|
127
|
+
)}
|
|
128
|
+
</TabPanel>
|
|
129
|
+
</TabPanels>
|
|
130
|
+
</Tabs>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
</>
|
|
135
|
+
);
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
export default DailyBookings;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getEtlBaseUrl } from '../../shared/utils/get-base-url';
|
|
2
|
+
import {
|
|
3
|
+
type BookingFilter,
|
|
4
|
+
type BookingDto,
|
|
5
|
+
type DailyBookingsResult,
|
|
6
|
+
type DailyBookingsReponse,
|
|
7
|
+
type DailyBookingType,
|
|
8
|
+
} from '../types';
|
|
9
|
+
|
|
10
|
+
export async function getDailyBookings(
|
|
11
|
+
bookingFilter: BookingFilter,
|
|
12
|
+
bookingType: DailyBookingType,
|
|
13
|
+
): Promise<DailyBookingsResult[]> {
|
|
14
|
+
const etlBaseUrl = await getEtlBaseUrl();
|
|
15
|
+
const params: BookingDto = {
|
|
16
|
+
department: bookingFilter.department,
|
|
17
|
+
startDate: bookingFilter.startDate ?? new Date().toISOString().split('T')[0],
|
|
18
|
+
locationUuids: bookingFilter.locationUuids,
|
|
19
|
+
startIndex: '0',
|
|
20
|
+
limit: '1000',
|
|
21
|
+
};
|
|
22
|
+
const queryString = new URLSearchParams(params).toString();
|
|
23
|
+
const dailyAppUrl = `${etlBaseUrl}/${bookingType}/${bookingFilter.startDate}?&${queryString}`;
|
|
24
|
+
const resp = await fetch(dailyAppUrl);
|
|
25
|
+
const data: DailyBookingsReponse = await resp.json();
|
|
26
|
+
return data.result ?? [];
|
|
27
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React, { useRef } from 'react';
|
|
2
|
+
import { Button, DatePicker, DatePickerInput, Dropdown, type OnChangeData } from '@carbon/react';
|
|
3
|
+
import styles from './daily-bookings-filter.component.scss';
|
|
4
|
+
import { type BookingFilter } from '../../types';
|
|
5
|
+
import { useSession } from '@openmrs/esm-framework';
|
|
6
|
+
|
|
7
|
+
interface DailyBookingsFilterProps {
|
|
8
|
+
filterSelected: (filters: BookingFilter) => void;
|
|
9
|
+
}
|
|
10
|
+
const DailyBookingsFilter: React.FC<DailyBookingsFilterProps> = ({ filterSelected }) => {
|
|
11
|
+
const dateRef = useRef<string>('');
|
|
12
|
+
const departmentRef = useRef<string>();
|
|
13
|
+
const session = useSession();
|
|
14
|
+
const locationUuid = session.sessionLocation.uuid;
|
|
15
|
+
const handleDateChange = (dateSelected: Date[]) => {
|
|
16
|
+
dateRef.current = new Date(dateSelected[0]).toISOString().split('T')[0];
|
|
17
|
+
};
|
|
18
|
+
const handleDepartmentChange = (selectedDept: OnChangeData<{ text: string }>) => {
|
|
19
|
+
departmentRef.current = selectedDept.selectedItem.text;
|
|
20
|
+
};
|
|
21
|
+
const handeleGenerateFilters = () => {
|
|
22
|
+
const filters: BookingFilter = {
|
|
23
|
+
startDate: dateRef.current,
|
|
24
|
+
department: departmentRef.current,
|
|
25
|
+
locationUuids: locationUuid,
|
|
26
|
+
};
|
|
27
|
+
filterSelected(filters);
|
|
28
|
+
};
|
|
29
|
+
return (
|
|
30
|
+
<>
|
|
31
|
+
<div className={styles.filterLayout}>
|
|
32
|
+
<div className={styles.filterRow}>
|
|
33
|
+
<div className={styles.filterFormGroup}>
|
|
34
|
+
<DatePicker
|
|
35
|
+
datePickerType="single"
|
|
36
|
+
locale="en"
|
|
37
|
+
onChange={handleDateChange}
|
|
38
|
+
onClose={() => {}}
|
|
39
|
+
onOpen={() => {}}
|
|
40
|
+
>
|
|
41
|
+
<DatePickerInput id="date-picker-single" labelText="Date" placeholder="mm/dd/yyyy" />
|
|
42
|
+
</DatePicker>
|
|
43
|
+
</div>
|
|
44
|
+
<div className={styles.filterFormGroup}>
|
|
45
|
+
<Dropdown
|
|
46
|
+
id="department"
|
|
47
|
+
invalidText="invalid selection"
|
|
48
|
+
itemToString={(item) => item.text}
|
|
49
|
+
onChange={handleDepartmentChange}
|
|
50
|
+
items={[
|
|
51
|
+
{
|
|
52
|
+
text: 'HIV',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
text: 'CDM',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
text: 'ONCOLOGY',
|
|
59
|
+
},
|
|
60
|
+
]}
|
|
61
|
+
label="Select Department"
|
|
62
|
+
titleText="Department"
|
|
63
|
+
type="default"
|
|
64
|
+
warnText=""
|
|
65
|
+
/>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
<div className={styles.filterRow}>
|
|
69
|
+
<div className={styles.filterFormGroup}>
|
|
70
|
+
<Button kind="primary" onClick={handeleGenerateFilters}>
|
|
71
|
+
Generate
|
|
72
|
+
</Button>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</>
|
|
77
|
+
);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export default DailyBookingsFilter;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@carbon/react';
|
|
3
|
+
import { type DailyBookingsResult } from '../../types';
|
|
4
|
+
|
|
5
|
+
interface DailiyBookingsPatientListProps {
|
|
6
|
+
patientListData: DailyBookingsResult[];
|
|
7
|
+
}
|
|
8
|
+
const DailiyBookingsPatientList: React.FC<DailiyBookingsPatientListProps> = ({ patientListData }) => {
|
|
9
|
+
if (!patientListData || patientListData.length === 0) {
|
|
10
|
+
return <>No Data</>;
|
|
11
|
+
}
|
|
12
|
+
return (
|
|
13
|
+
<>
|
|
14
|
+
<Table>
|
|
15
|
+
<TableHead>
|
|
16
|
+
<TableRow>
|
|
17
|
+
<TableHeader>No</TableHeader>
|
|
18
|
+
<TableHeader>CCC Number</TableHeader>
|
|
19
|
+
<TableHeader>UPI Number</TableHeader>
|
|
20
|
+
<TableHeader>Program</TableHeader>
|
|
21
|
+
<TableHeader>RTC Date</TableHeader>
|
|
22
|
+
<TableHeader>Med Pickup Date</TableHeader>
|
|
23
|
+
<TableHeader>ARV Start Date</TableHeader>
|
|
24
|
+
<TableHeader>HIV Disclosure Status</TableHeader>
|
|
25
|
+
<TableHeader>Height</TableHeader>
|
|
26
|
+
<TableHeader>Weight</TableHeader>
|
|
27
|
+
<TableHeader>Stage</TableHeader>
|
|
28
|
+
<TableHeader>Patient Categorization</TableHeader>
|
|
29
|
+
<TableHeader>Service Delivery Model</TableHeader>
|
|
30
|
+
<TableHeader>DSD Model</TableHeader>
|
|
31
|
+
<TableHeader>CD4 Date</TableHeader>
|
|
32
|
+
<TableHeader>CD4 Results</TableHeader>
|
|
33
|
+
<TableHeader>Gender</TableHeader>
|
|
34
|
+
<TableHeader>Birthdate</TableHeader>
|
|
35
|
+
<TableHeader>Age</TableHeader>
|
|
36
|
+
<TableHeader>Patient Name</TableHeader>
|
|
37
|
+
<TableHeader>Identifiers</TableHeader>
|
|
38
|
+
<TableHeader>Phone Number</TableHeader>
|
|
39
|
+
<TableHeader>Latest RTC Date</TableHeader>
|
|
40
|
+
<TableHeader>Latest VL</TableHeader>
|
|
41
|
+
<TableHeader>VL Category</TableHeader>
|
|
42
|
+
<TableHeader>Latest VL Date</TableHeader>
|
|
43
|
+
<TableHeader>Last Appointment</TableHeader>
|
|
44
|
+
<TableHeader>Visit Type</TableHeader>
|
|
45
|
+
<TableHeader>Current Meds</TableHeader>
|
|
46
|
+
<TableHeader>Covid-19 Vaccination</TableHeader>
|
|
47
|
+
<TableHeader>TB Screening Date</TableHeader>
|
|
48
|
+
<TableHeader>TB Screening Result</TableHeader>
|
|
49
|
+
<TableHeader>Patient Category</TableHeader>
|
|
50
|
+
</TableRow>
|
|
51
|
+
</TableHead>
|
|
52
|
+
|
|
53
|
+
<TableBody>
|
|
54
|
+
{patientListData &&
|
|
55
|
+
patientListData.map((val, index) => (
|
|
56
|
+
<TableRow key={val.patient_uuid ?? index}>
|
|
57
|
+
<TableCell>{index + 1}</TableCell>
|
|
58
|
+
<TableCell>{val.ccc_number}</TableCell>
|
|
59
|
+
<TableCell>{val.upi_number}</TableCell>
|
|
60
|
+
<TableCell>{val.program}</TableCell>
|
|
61
|
+
<TableCell>{val.rtc_date}</TableCell>
|
|
62
|
+
<TableCell>{val.med_pick_up_date}</TableCell>
|
|
63
|
+
<TableCell>{val.arv_first_regimen_start_date}</TableCell>
|
|
64
|
+
<TableCell>{val.hiv_disclosure_status}</TableCell>
|
|
65
|
+
<TableCell>{val.height}</TableCell>
|
|
66
|
+
<TableCell>{val.weight}</TableCell>
|
|
67
|
+
<TableCell>{val.stage}</TableCell>
|
|
68
|
+
<TableCell>{val.patient_categorization}</TableCell>
|
|
69
|
+
<TableCell>{val.service_delivery_model}</TableCell>
|
|
70
|
+
<TableCell>{val.dsd_model}</TableCell>
|
|
71
|
+
<TableCell>{val.cd4_date}</TableCell>
|
|
72
|
+
<TableCell>{val.cd4_results}</TableCell>
|
|
73
|
+
<TableCell>{val.gender}</TableCell>
|
|
74
|
+
<TableCell>{val.birthdate}</TableCell>
|
|
75
|
+
<TableCell>{val.age}</TableCell>
|
|
76
|
+
<TableCell>{val.person_name}</TableCell>
|
|
77
|
+
<TableCell>{val.identifiers}</TableCell>
|
|
78
|
+
<TableCell>{val.phone_number}</TableCell>
|
|
79
|
+
<TableCell>{val.latest_rtc_date}</TableCell>
|
|
80
|
+
<TableCell>{val.latest_vl}</TableCell>
|
|
81
|
+
<TableCell>{val.vl_category}</TableCell>
|
|
82
|
+
<TableCell>{val.latest_vl_date}</TableCell>
|
|
83
|
+
<TableCell>{val.last_appointment}</TableCell>
|
|
84
|
+
<TableCell>{val.visit_type}</TableCell>
|
|
85
|
+
<TableCell>{val.cur_meds}</TableCell>
|
|
86
|
+
<TableCell>{val.covid_19_vaccination_status}</TableCell>
|
|
87
|
+
<TableCell>{val.tb_screening_date}</TableCell>
|
|
88
|
+
<TableCell>{val.tb_screening_result}</TableCell>
|
|
89
|
+
<TableCell>{val.patient_category}</TableCell>
|
|
90
|
+
</TableRow>
|
|
91
|
+
))}
|
|
92
|
+
</TableBody>
|
|
93
|
+
</Table>
|
|
94
|
+
</>
|
|
95
|
+
);
|
|
96
|
+
};
|
|
97
|
+
export default DailiyBookingsPatientList;
|