@openmrs/esm-patient-programs-app 3.2.1-pre.123 → 3.2.1-pre.124
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/.turbo/turbo-build.log +35 -35
- package/dist/145.js +1 -1
- package/dist/45.js +1 -0
- package/dist/574.js +1 -1
- package/dist/692.js +1 -1
- package/dist/76.js +1 -1
- package/dist/openmrs-esm-patient-programs-app.js +1 -1
- package/dist/openmrs-esm-patient-programs-app.js.buildmanifest.json +14 -14
- package/package.json +3 -3
- package/src/programs/programs-detailed-summary.component.tsx +27 -0
- package/src/programs/programs-detailed-summary.test.tsx +13 -4
- package/src/programs/programs-form.component.tsx +80 -35
- package/src/programs/programs-form.test.tsx +119 -24
- package/src/programs/programs.resource.tsx +2 -2
- package/src/types/index.ts +6 -2
- package/translations/en.json +4 -1
- package/dist/13.js +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
@openmrs/esm-patient-programs-app:build: cache hit, replaying output [
|
|
2
|
-
[
|
|
3
|
-
[
|
|
4
|
-
[
|
|
5
|
-
[
|
|
6
|
-
[
|
|
7
|
-
[
|
|
8
|
-
[
|
|
9
|
-
[
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
21
|
-
[
|
|
22
|
-
[
|
|
23
|
-
[
|
|
24
|
-
[
|
|
25
|
-
[
|
|
26
|
-
[
|
|
27
|
-
[
|
|
28
|
-
[
|
|
29
|
-
[
|
|
30
|
-
[
|
|
31
|
-
[
|
|
32
|
-
[
|
|
33
|
-
[
|
|
34
|
-
[
|
|
35
|
-
[
|
|
1
|
+
@openmrs/esm-patient-programs-app:build: cache hit, replaying output [2mff9ee631970614f2[0m
|
|
2
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m$ webpack --mode production
|
|
3
|
+
[34m@openmrs/esm-patient-programs-app:build: [0massets by chunk 1.34 MiB (id hint: vendors)
|
|
4
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m asset [1m[33m858.js[39m[22m [1m[33m474 KiB[39m[22m [1m[32m[emitted][39m[22m [1m[32m[minimized][39m[22m [1m[33m[big][39m[22m (id hint: vendors) 1 related asset
|
|
5
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m asset [1m[32m252.js[39m[22m 243 KiB [1m[32m[emitted][39m[22m [1m[32m[minimized][39m[22m (id hint: vendors) 1 related asset
|
|
6
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m asset [1m[32m635.js[39m[22m 228 KiB [1m[32m[emitted][39m[22m [1m[32m[minimized][39m[22m (id hint: vendors) 1 related asset
|
|
7
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m asset [1m[32m186.js[39m[22m 124 KiB [1m[32m[emitted][39m[22m [1m[32m[minimized][39m[22m (id hint: vendors) 1 related asset
|
|
8
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m asset [1m[32m294.js[39m[22m 114 KiB [1m[32m[emitted][39m[22m [1m[32m[minimized][39m[22m (id hint: vendors) 1 related asset
|
|
9
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m asset [1m[32m402.js[39m[22m 85.5 KiB [1m[32m[emitted][39m[22m [1m[32m[minimized][39m[22m (id hint: vendors)
|
|
10
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m asset [1m[32m336.js[39m[22m 56.7 KiB [1m[32m[emitted][39m[22m [1m[32m[minimized][39m[22m (id hint: vendors) 1 related asset
|
|
11
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m asset [1m[32m206.js[39m[22m 45.4 KiB [1m[32m[emitted][39m[22m [1m[32m[minimized][39m[22m (id hint: vendors) 1 related asset
|
|
12
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m asset [1m[32m701.js[39m[22m 4.92 KiB [1m[32m[emitted][39m[22m [1m[32m[minimized][39m[22m (id hint: vendors)
|
|
13
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m+ 13 assets
|
|
14
|
+
[34m@openmrs/esm-patient-programs-app:build: [0morphan modules 9.18 MiB (javascript) 42 bytes (consume-shared) [1m[33m[orphan][39m[22m 834 modules
|
|
15
|
+
[34m@openmrs/esm-patient-programs-app:build: [0mruntime modules 19.5 KiB 15 modules
|
|
16
|
+
[34m@openmrs/esm-patient-programs-app:build: [0mbuilt modules 5.41 MiB (javascript) 336 bytes (share-init) 336 bytes (consume-shared) [1m[33m[built][39m[22m
|
|
17
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m modules by path [1m../../node_modules/[39m[22m 5.28 MiB 149 modules
|
|
18
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m modules by path [1m./[39m[22m 50.8 KiB 11 modules
|
|
19
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m provide-module modules 336 bytes
|
|
20
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m modules by path [1mprovide shared module (default) @openmrs/[39m[22m 84 bytes 2 modules
|
|
21
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m + 6 modules
|
|
22
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m consume-shared-module modules 336 bytes
|
|
23
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m modules by path [1mconsume shared module (default) @openmrs/[39m[22m 126 bytes 3 modules
|
|
24
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m + 5 modules
|
|
25
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m modules by path [1m../esm-patient-common-lib/src/[39m[22m 80.9 KiB
|
|
26
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m [1m../esm-patient-common-lib/src/index.ts + 31 modules[39m[22m 59.6 KiB [1m[33m[built][39m[22m [1m[33m[code generated][39m[22m
|
|
27
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m + 5 modules
|
|
28
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m [1mcontainer entry[39m[22m 42 bytes [1m[33m[built][39m[22m [1m[33m[code generated][39m[22m
|
|
29
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m
|
|
30
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m[1m[33mWARNING[39m[22m in [1masset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
|
|
31
|
+
[34m@openmrs/esm-patient-programs-app:build: [0mThis can impact web performance.
|
|
32
|
+
[34m@openmrs/esm-patient-programs-app:build: [0mAssets:
|
|
33
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m 858.js (474 KiB)[39m[22m
|
|
34
|
+
[34m@openmrs/esm-patient-programs-app:build: [0m
|
|
35
|
+
[34m@openmrs/esm-patient-programs-app:build: [0mwebpack 5.73.0 compiled with [1m[33m1 warning[39m[22m in 137009 ms
|
package/dist/145.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[145],{1951:(e,t,r)=>{r.d(t,{Z:()=>l});var n=r(9601),a=r.n(n),o=r(2609),i=r.n(o)()(a());i.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__programs-form__skeleton____oCAx{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__programs-form__selectContainer___SCnNW{display:flex;align-items:center}.-esm-patient-programs__programs-form__loading___KGmNP{margin-left:1rem;width:2rem;min-height:2.5rem}.-esm-patient-programs__programs-form__button___KPSt9{height:4rem;display:flex;align-content:flex-start;align-items:baseline;min-width:50%}.-esm-patient-programs__programs-form__tablet___yw5Wr{padding:1.5rem 1rem;background-color:#fff}.-esm-patient-programs__programs-form__desktop___RnK8C{padding:0rem}.-esm-patient-programs__programs-form__formContainer___lqbdm{margin:1rem}.-esm-patient-programs__programs-form__form___BLqPA{display:flex;flex-direction:column;justify-content:space-between;height:calc(100vh - 6rem)}",""]),i.locals={selectContainer:"-esm-patient-programs__programs-form__selectContainer___SCnNW",loading:"-esm-patient-programs__programs-form__loading___KGmNP",button:"-esm-patient-programs__programs-form__button___KPSt9",tablet:"-esm-patient-programs__programs-form__tablet___yw5Wr",desktop:"-esm-patient-programs__programs-form__desktop___RnK8C",formContainer:"-esm-patient-programs__programs-form__formContainer___lqbdm",form:"-esm-patient-programs__programs-form__form___BLqPA",skeleton:"-esm-patient-programs__programs-form__skeleton____oCAx"};const l=i},8145:(e,t,r)=>{r.r(t),r.d(t,{default:()=>j});var n=r(9902),a=r.n(n),o=r(3565),i=r.n(o),l=r(3863),s=r(8827),m=r(819),d=r(9857),u=r(4924),c=r(3066),p=r(7898),g=r(786),f=r(2810),_=r(5067),h=r(6642),b=r(182),v=r(6549),y=r(7030),w=r(4076),E=r(321),k=r.n(E),C=r(1195),x=r.n(C),S=r(3275),Z=r.n(S),T=r(7162),P=r.n(T),q=r(2094),A=r.n(q),D=r(757),I=r.n(D),N=r(1951),z={};z.styleTagTransform=I(),z.setAttributes=P(),z.insert=Z().bind(null,"head"),z.domAPI=x(),z.insertStyleElement=A(),k()(N.Z,z);const L=N.Z&&N.Z.locals?N.Z.locals:void 0;function X(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function B(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return X(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?X(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const j=function(e){var t,r,n=e.closeWorkspace,o=e.patientUuid,E=(0,u.useTranslation)().t,k="tablet"===(0,c.useLayoutType)(),C=(0,c.useSession)(),x=(0,c.useLocations)(),S=(0,d.kY)().mutate,Z=(0,w.oI)().data,T=(0,w.Bw)(o).data,P=(0,l.Z)(Z,(function(e){return!(0,s.Z)((0,m.Z)(T,"program.uuid"),e.uuid)})),q=B(a().useState(null),2),A=q[0],D=q[1],I=B(a().useState(new Date),2),N=I[0],z=I[1],X=B(a().useState(""),2),j=X[0],M=X[1],O=B(a().useState(""),2),K=O[0],W=O[1];!K&&(null==C||null===(t=C.sessionLocation)||void 0===t?void 0:t.uuid)&&W(null==C||null===(r=C.sessionLocation)||void 0===r?void 0:r.uuid);var F=a().useCallback((function(e){if(e.preventDefault(),j){var t={patient:o,program:j,dateEnrolled:N?i()(N).format():null,dateCompleted:A?i()(A).format():null,location:K},r=new AbortController,a=(0,w.df)(t,r).subscribe((function(e){201===e.status&&(n(),(0,c.showToast)({critical:!0,kind:"success",description:E("enrollmentNowVisible","It is now visible on the Programs page"),title:E("enrollmentSaved","Program enrollment saved")}),S("/ws/rest/v1/programenrollment?patient=".concat(o,"&v=").concat(w.o9)))}),(function(e){(0,c.createErrorHandler)(),(0,c.showNotification)({title:E("programEnrollmentSaveError","Error saving program enrollment"),kind:"error",critical:!0,description:null==e?void 0:e.message})}));return function(){a.unsubscribe()}}}),[n,A,N,S,o,j,E,K]);return a().createElement(p.Z,{className:L.form,onSubmit:F},a().createElement("div",{className:L.formContainer},a().createElement(g.Z,{style:{width:"50%"},legendText:E("program","Program")},a().createElement("div",{className:L.selectContainer},a().createElement(f.Z,{id:"program",invalidText:E("required","Required"),labelText:"",light:k,onChange:function(e){return M(e.target.value)}},j?null:a().createElement(_.Z,{text:E("chooseProgram","Choose a program"),value:""}),(null==P?void 0:P.length)>0&&P.map((function(e){return a().createElement(_.Z,{key:e.uuid,text:e.display,value:e.uuid},e.display)}))))),a().createElement(g.Z,{legendText:E("dateEnrolled","Date enrolled")},a().createElement(h.Z,{id:"enrollmentDate",datePickerType:"single",dateFormat:"d/m/Y",light:k,maxDate:(new Date).toISOString(),placeholder:"dd/mm/yyyy",onChange:function(e){var t=B(e,1)[0];return z(t)},value:N},a().createElement(b.Z,{id:"enrollmentDateInput",labelText:""}))),a().createElement(g.Z,{legendText:E("dateCompleted","Date completed")},a().createElement(h.Z,{id:"completionDate",datePickerType:"single",dateFormat:"d/m/Y",light:k,minDate:new Date(N).toISOString(),maxDate:(new Date).toISOString(),placeholder:"dd/mm/yyyy",onChange:function(e){var t=B(e,1)[0];return D(t)},value:A},a().createElement(b.Z,{id:"completionDateInput",labelText:""}))),a().createElement(g.Z,{style:{width:"50%"},legendText:E("enrollmentLocation","Enrollment location")},a().createElement(f.Z,{id:"location",invalidText:"Required",labelText:"",light:k,onChange:function(e){return W(e.target.value)},value:K},K?null:a().createElement(_.Z,{text:E("chooseLocation","Choose a location"),value:""}),(null==x?void 0:x.length)>0&&x.map((function(e){return a().createElement(_.Z,{key:e.uuid,text:e.display,value:e.uuid},e.display)}))))),a().createElement(v.Z,{className:k?L.tablet:L.desktop},a().createElement(y.Z,{className:L.button,kind:"secondary",onClick:function(){return n()}},E("cancel","Cancel")),a().createElement(y.Z,{className:L.button,kind:"primary",disabled:!j,type:"submit"},E("saveAndClose","Save and close"))))}},4076:(e,t,r)=>{r.d(t,{Bw:()=>l,df:()=>m,o9:()=>i,oI:()=>s});var n=r(9857),a=r(3066),o=r(4200),i="custom:(uuid,display,program,dateEnrolled,dateCompleted,location:(uuid,display))";function l(e){var t,r=(0,n.ZP)("/ws/rest/v1/programenrollment?patient=".concat(e,"&v=").concat(i),a.openmrsFetch),l=r.data,s=r.error,m=r.isValidating,d=(null==l||null===(t=l.data)||void 0===t?void 0:t.results.length)>0?null==l?void 0:l.data.results.sort((function(e,t){return t.dateEnrolled>e.dateEnrolled?1:-1})):null;return{data:l?(0,o.Z)(d,(function(e){var t;return null==e||null===(t=e.program)||void 0===t?void 0:t.uuid})):null,isError:s,isLoading:!l&&!s,isValidating:m}}function s(){var e,t,r=(0,n.ZP)("/ws/rest/v1/program?v=custom:(uuid,display,allWorkflows,concept:(uuid,display))",a.openmrsFetch),o=r.data,i=r.error;return{data:(null==o||null===(e=o.data)||void 0===e||null===(t=e.results)||void 0===t?void 0:t.length)?o.data.results:null,isError:i,isLoading:!o&&!i}}function m(e,t){if(!e)return null;var r=e.program,n=e.patient,o=e.dateEnrolled,i=e.dateCompleted,l=e.location;return(0,a.openmrsObservableFetch)("/ws/rest/v1/programenrollment",{method:"POST",headers:{"Content-Type":"application/json"},body:{program:r,patient:n,dateEnrolled:o,dateCompleted:i,location:l},signal:t.signal})}}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[145],{1951:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(9601),o=r.n(n),a=r(2609),l=r.n(a)()(o());l.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__programs-form__skeleton____oCAx{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__programs-form__selectContainer___SCnNW{display:flex;align-items:center}.-esm-patient-programs__programs-form__loading___KGmNP{margin-left:1rem;width:2rem;min-height:2.5rem}.-esm-patient-programs__programs-form__button___KPSt9{height:4rem;display:flex;align-content:flex-start;align-items:baseline;min-width:50%}.-esm-patient-programs__programs-form__tablet___yw5Wr{padding:1.5rem 1rem;background-color:#fff}.-esm-patient-programs__programs-form__desktop___RnK8C{padding:0rem}.-esm-patient-programs__programs-form__formContainer___lqbdm{margin:1rem}.-esm-patient-programs__programs-form__form___BLqPA{display:flex;flex-direction:column;justify-content:space-between;height:calc(100vh - 6rem)}",""]),l.locals={selectContainer:"-esm-patient-programs__programs-form__selectContainer___SCnNW",loading:"-esm-patient-programs__programs-form__loading___KGmNP",button:"-esm-patient-programs__programs-form__button___KPSt9",tablet:"-esm-patient-programs__programs-form__tablet___yw5Wr",desktop:"-esm-patient-programs__programs-form__desktop___RnK8C",formContainer:"-esm-patient-programs__programs-form__formContainer___lqbdm",form:"-esm-patient-programs__programs-form__form___BLqPA",skeleton:"-esm-patient-programs__programs-form__skeleton____oCAx"};const i=l},8145:(e,t,r)=>{r.r(t),r.d(t,{default:()=>B});var n=r(9902),o=r.n(n),a=r(3565),l=r.n(a),i=r(3863),s=r(8827),m=r(819),d=r(9857),u=r(4924),c=r(3066),p=r(7898),g=r(786),f=r(2810),_=r(5067),h=r(6642),b=r(182),v=r(6549),y=r(7030),w=r(4076),E=r(321),C=r.n(E),k=r(1195),x=r.n(k),S=r(3275),Z=r.n(S),P=r(7162),T=r.n(P),D=r(2094),O=r.n(D),q=r(757),A=r.n(q),I=r(1951),N={};N.styleTagTransform=A(),N.setAttributes=T(),N.insert=Z().bind(null,"head"),N.domAPI=x(),N.insertStyleElement=O(),C()(I.Z,N);const j=I.Z&&I.Z.locals?I.Z.locals:void 0;function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function L(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function X(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a=[],l=!0,i=!1;try{for(r=r.call(e);!(l=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);l=!0);}catch(e){i=!0,o=e}finally{try{l||null==r.return||r.return()}finally{if(i)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return z(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?z(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const B=function(e){var t,r,n,a,E=e.closeWorkspace,C=e.patientUuid,k=e.programEnrollmentId,x=(0,u.useTranslation)().t,S="tablet"===(0,c.useLayoutType)(),Z=(0,c.useSession)(),P=(0,c.useLocations)(),T=(0,d.kY)().mutate,D=(0,w.oI)().data,O=(0,w.Bw)(C).data,q=k&&O.filter((function(e){return e.uuid==k}))[0],A=q?function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){L(e,t,r[t])}))}return e}({display:q.program.name},q.program):null,I=A?[A]:(0,i.Z)(D,(function(e){return!(0,s.Z)((0,m.Z)(O,"program.uuid"),e.uuid)})),N=X(o().useState((null==q?void 0:q.dateCompleted)?(0,c.parseDate)(q.dateCompleted):null),2),z=N[0],B=N[1],M=X(o().useState((null==q?void 0:q.dateEnrolled)?(0,c.parseDate)(q.dateEnrolled):new Date),2),F=M[0],K=M[1],V=X(o().useState(null!==(r=null==q?void 0:q.program.uuid)&&void 0!==r?r:""),2),W=V[0],Y=V[1],R=X(o().useState(null!==(n=null==q?void 0:q.location.uuid)&&void 0!==n?n:""),2),U=R[0],H=R[1];!U&&(null==Z||null===(t=Z.sessionLocation)||void 0===t?void 0:t.uuid)&&H(null==Z||null===(a=Z.sessionLocation)||void 0===a?void 0:a.uuid);var G=o().useCallback((function(e){if(e.preventDefault(),W){var t={patient:C,program:W,dateEnrolled:F?l()(F).format():null,dateCompleted:z?l()(z).format():null,location:U},r=new AbortController,n=q?(0,w.YX)(q.uuid,t,r).subscribe((function(e){200===e.status&&(E(),(0,c.showToast)({critical:!0,kind:"success",description:x("enrollmentUpdatesNowVisible","Changes to the program are now visible in the Programs table"),title:x("enrollmentUpdated","Program enrollment updated")}),T("/ws/rest/v1/programenrollment?patient=".concat(C,"&v=").concat(w.o9)))}),(function(e){(0,c.createErrorHandler)(),(0,c.showNotification)({title:x("programEnrollmentSaveError","Error saving program enrollment"),kind:"error",critical:!0,description:null==e?void 0:e.message})})):(0,w.df)(t,r).subscribe((function(e){201===e.status&&(E(),(0,c.showToast)({critical:!0,kind:"success",description:x("enrollmentNowVisible","It is now visible in the Programs table"),title:x("enrollmentSaved","Program enrollment saved")}),T("/ws/rest/v1/programenrollment?patient=".concat(C,"&v=").concat(w.o9)))}),(function(e){(0,c.createErrorHandler)(),(0,c.showNotification)({title:x("programEnrollmentSaveError","Error saving program enrollment"),kind:"error",critical:!0,description:null==e?void 0:e.message})}));return function(){n.unsubscribe()}}}),[E,z,F,T,C,W,x,U]);return o().createElement(p.Z,{className:j.form,onSubmit:G},o().createElement("div",{className:j.formContainer},o().createElement(g.Z,{style:{width:"50%"},legendText:x("program","Program")},o().createElement("div",{className:j.selectContainer},o().createElement(f.Z,{id:"program",invalidText:x("required","Required"),labelText:"",light:S,onChange:function(e){return Y(e.target.value)}},W?null:o().createElement(_.Z,{text:x("chooseProgram","Choose a program"),value:""}),(null==I?void 0:I.length)>0&&I.map((function(e){return o().createElement(_.Z,{key:e.uuid,text:e.display,value:e.uuid},e.display)}))))),o().createElement(g.Z,{legendText:x("dateEnrolled","Date enrolled")},o().createElement(h.Z,{id:"enrollmentDate",datePickerType:"single",dateFormat:"d/m/Y",light:S,maxDate:(new Date).toISOString(),placeholder:"dd/mm/yyyy",onChange:function(e){var t=X(e,1)[0];return K(t)},value:F},o().createElement(b.Z,{id:"enrollmentDateInput",labelText:""}))),o().createElement(g.Z,{legendText:x("dateCompleted","Date completed")},o().createElement(h.Z,{id:"completionDate",datePickerType:"single",dateFormat:"d/m/Y",light:S,minDate:new Date(F).toISOString(),maxDate:(new Date).toISOString(),placeholder:"dd/mm/yyyy",onChange:function(e){var t=X(e,1)[0];return B(t)},value:z},o().createElement(b.Z,{id:"completionDateInput",labelText:""}))),o().createElement(g.Z,{style:{width:"50%"},legendText:x("enrollmentLocation","Enrollment location")},o().createElement(f.Z,{id:"location",invalidText:"Required",labelText:"",light:S,onChange:function(e){return H(e.target.value)},value:U},U?null:o().createElement(_.Z,{text:x("chooseLocation","Choose a location"),value:""}),(null==P?void 0:P.length)>0&&P.map((function(e){return o().createElement(_.Z,{key:e.uuid,text:e.display,value:e.uuid},e.display)}))))),o().createElement(v.Z,{className:S?j.tablet:j.desktop},o().createElement(y.Z,{className:j.button,kind:"secondary",onClick:function(){return E()}},x("cancel","Cancel")),o().createElement(y.Z,{className:j.button,kind:"primary",disabled:!W,type:"submit"},x("saveAndClose","Save and close"))))}},4076:(e,t,r)=>{r.d(t,{Bw:()=>i,YX:()=>d,df:()=>m,o9:()=>l,oI:()=>s});var n=r(9857),o=r(3066),a=r(4200),l="custom:(uuid,display,program,dateEnrolled,dateCompleted,location:(uuid,display))";function i(e){var t,r=(0,n.ZP)("/ws/rest/v1/programenrollment?patient=".concat(e,"&v=").concat(l),o.openmrsFetch),i=r.data,s=r.error,m=r.isValidating,d=(null==i||null===(t=i.data)||void 0===t?void 0:t.results.length)>0?null==i?void 0:i.data.results.sort((function(e,t){return t.dateEnrolled>e.dateEnrolled?1:-1})):null;return{data:i?(0,a.Z)(d,(function(e){var t;return null==e||null===(t=e.program)||void 0===t?void 0:t.uuid})):null,isError:s,isLoading:!i&&!s,isValidating:m}}function s(){var e,t,r=(0,n.ZP)("/ws/rest/v1/program?v=custom:(uuid,display,allWorkflows,concept:(uuid,display))",o.openmrsFetch),a=r.data,l=r.error;return{data:(null==a||null===(e=a.data)||void 0===e||null===(t=e.results)||void 0===t?void 0:t.length)?a.data.results:null,isError:l,isLoading:!a&&!l}}function m(e,t){if(!e)return null;var r=e.program,n=e.patient,a=e.dateEnrolled,l=e.dateCompleted,i=e.location;return(0,o.openmrsObservableFetch)("/ws/rest/v1/programenrollment",{method:"POST",headers:{"Content-Type":"application/json"},body:{program:r,patient:n,dateEnrolled:a,dateCompleted:l,location:i},signal:t.signal})}function d(e,t,r){if(!t&&!t.program)return null;t.program;var n=t.dateEnrolled,a=t.dateCompleted,l=t.location;return(0,o.openmrsObservableFetch)("/ws/rest/v1/programenrollment/".concat(e),{method:"POST",headers:{"Content-Type":"application/json"},body:{dateEnrolled:n,dateCompleted:a,location:l},signal:r.signal})}}}]);
|
package/dist/45.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[45],{5351:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(9601),a=r.n(n),o=r(2609),l=r.n(o)()(a());l.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__programs-detailed-summary__skeleton___vysuL{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__programs-detailed-summary__widgetCard___q9_pO{border:1px solid #e0e0e0}",""]),l.locals={widgetCard:"-esm-patient-programs__programs-detailed-summary__widgetCard___q9_pO",skeleton:"-esm-patient-programs__programs-detailed-summary__skeleton___vysuL"};const i=l},9045:(e,t,r)=>{r.r(t),r.d(t,{default:()=>K});var n,a=r(9902),o=r.n(a),l=r(8011),i=r(5495),s=["children"],d=o().forwardRef((function(e,t){var r=e.children,a=(0,i._)(e,s);return o().createElement(i.I,(0,i.a)({width:16,height:16,viewBox:"0 0 32 32",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",ref:t},a),n||(n=o().createElement("path",{d:"M2 26H30V28H2zM25.4 9c.8-.8.8-2 0-2.8 0 0 0 0 0 0l-3.6-3.6c-.8-.8-2-.8-2.8 0 0 0 0 0 0 0l-15 15V24h6.4L25.4 9zM20.4 4L24 7.6l-3 3L17.4 7 20.4 4zM6 22v-3.6l10-10 3.6 3.6-10 10H6z"})),r)})),c=r(3863),m=r(8827),u=r(819),p=r(321),g=r.n(p),f=r(1195),h=r.n(f),v=r(3275),b=r.n(v),y=r(7162),E=r.n(y),_=r(2094),w=r.n(_),k=r(757),Z=r.n(k),C=r(5351),P={};P.styleTagTransform=Z(),P.setAttributes=E(),P.insert=b().bind(null,"head"),P.domAPI=h(),P.insertStyleElement=w(),g()(C.Z,P);const z=C.Z&&C.Z.locals?C.Z.locals:void 0;var x=r(3771),S=r(4924),T=r(4076),I=r(8580),M=r(1145),O=r(7030),q=r(160),L=r(5223),X=r(2965),A=r(364),D=r(7500),B=r(8345),H=r(1358),V=r(2427),j=r(3783),F=r(3066);function W(){return W=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},W.apply(this,arguments)}function N(e){var t=e.programEnrollmentId,r=o().useCallback((function(){return(0,x.launchPatientWorkspace)("programs-form-workspace",{programEnrollmentId:t})}),[]);return o().createElement(O.Z,{kind:"ghost",renderIcon:d,iconDescription:"Edit Program",onClick:r,hasIconOnly:!0})}const K=function(e){var t,r,n=e.patientUuid,a=(0,S.useTranslation)().t,i=a("programEnrollments","Program enrollments"),s=a("carePrograms","Care Programs"),d=(0,T.Bw)(n),p=d.data,g=d.isError,f=d.isLoading,h=d.isValidating,v=(0,T.oI)().data,b=(0,c.Z)(v,(function(e){return!(0,m.Z)((0,u.Z)(p,"program.uuid"),e.uuid)})),y=o().useMemo((function(){return[{key:"display",header:a("activePrograms","Active programs")},{key:"location",header:a("location","Location")},{key:"dateEnrolled",header:a("dateEnrolled","Date enrolled")},{key:"status",header:a("status","Status")},{key:"actions",header:a("actions","Actions")}]}),[a]),E=o().useMemo((function(){return null==p?void 0:p.map((function(e){var t;return{id:e.uuid,display:e.display,location:null===(t=e.location)||void 0===t?void 0:t.display,dateEnrolled:(0,F.formatDatetime)(new Date(e.dateEnrolled)),status:e.dateCompleted?"".concat(a("completedOn","Completed On")," ").concat((0,F.formatDate)(new Date(e.dateCompleted))):a("active","Active"),actions:o().createElement(N,{programEnrollmentId:e.uuid})}}))}),[p,a]),_=o().useCallback((function(){return(0,x.launchPatientWorkspace)("programs-form-workspace")}),[]);return f?o().createElement(I.Z,{role:"progressbar"}):g?o().createElement(x.ErrorState,{error:g,headerTitle:s}):(null==p?void 0:p.length)?o().createElement("div",{className:z.widgetCard},o().createElement(x.CardHeader,{title:s},o().createElement("span",null,h?o().createElement(M.Z,null):null),o().createElement(O.Z,{kind:"ghost",renderIcon:l.Z,iconDescription:"Add programs",onClick:_,disabled:(null==v?void 0:v.length)&&0===(null==b?void 0:b.length)},a("add","Add"))),o().createElement(q.Z,null,(null==v?void 0:v.length)&&0===(null==b?void 0:b.length)&&o().createElement(L.K0,{style:{minWidth:"100%",margin:"0rem",padding:"0rem"},kind:"info",lowContrast:!0,subtitle:a("noEligibleEnrollments","There are no more programs left to enroll this patient in"),title:a("fullyEnrolled","Enrolled in all programs")}),o().createElement(X.ZP,{rows:E,headers:y,isSortable:!0,size:"short"},(function(e){var n=e.rows,a=e.headers,l=e.getHeaderProps,i=e.getTableProps;return o().createElement(A.Z,W({},i(),{useZebraStyles:!0}),o().createElement(D.Z,null,o().createElement(B.Z,null,a.map((function(e){var r;return o().createElement(H.Z,W({className:"".concat(z.productiveHeading01," ").concat(z.text02)},l({header:e,isSortable:e.isSortable})),null!==(t=null===(r=e.header)||void 0===r?void 0:r.content)&&void 0!==t?t:e.header)})))),o().createElement(V.Z,null,n.map((function(e){return o().createElement(B.Z,{key:e.id},e.cells.map((function(e){var t;return o().createElement(j.Z,{key:e.id},null!==(r=null===(t=e.value)||void 0===t?void 0:t.content)&&void 0!==r?r:e.value)})))}))))})))):o().createElement(x.EmptyState,{displayText:i,headerTitle:s,launchForm:_})}},4076:(e,t,r)=>{r.d(t,{Bw:()=>i,YX:()=>c,df:()=>d,o9:()=>l,oI:()=>s});var n=r(9857),a=r(3066),o=r(4200),l="custom:(uuid,display,program,dateEnrolled,dateCompleted,location:(uuid,display))";function i(e){var t,r=(0,n.ZP)("/ws/rest/v1/programenrollment?patient=".concat(e,"&v=").concat(l),a.openmrsFetch),i=r.data,s=r.error,d=r.isValidating,c=(null==i||null===(t=i.data)||void 0===t?void 0:t.results.length)>0?null==i?void 0:i.data.results.sort((function(e,t){return t.dateEnrolled>e.dateEnrolled?1:-1})):null;return{data:i?(0,o.Z)(c,(function(e){var t;return null==e||null===(t=e.program)||void 0===t?void 0:t.uuid})):null,isError:s,isLoading:!i&&!s,isValidating:d}}function s(){var e,t,r=(0,n.ZP)("/ws/rest/v1/program?v=custom:(uuid,display,allWorkflows,concept:(uuid,display))",a.openmrsFetch),o=r.data,l=r.error;return{data:(null==o||null===(e=o.data)||void 0===e||null===(t=e.results)||void 0===t?void 0:t.length)?o.data.results:null,isError:l,isLoading:!o&&!l}}function d(e,t){if(!e)return null;var r=e.program,n=e.patient,o=e.dateEnrolled,l=e.dateCompleted,i=e.location;return(0,a.openmrsObservableFetch)("/ws/rest/v1/programenrollment",{method:"POST",headers:{"Content-Type":"application/json"},body:{program:r,patient:n,dateEnrolled:o,dateCompleted:l,location:i},signal:t.signal})}function c(e,t,r){if(!t&&!t.program)return null;t.program;var n=t.dateEnrolled,o=t.dateCompleted,l=t.location;return(0,a.openmrsObservableFetch)("/ws/rest/v1/programenrollment/".concat(e),{method:"POST",headers:{"Content-Type":"application/json"},body:{dateEnrolled:n,dateCompleted:o,location:l},signal:r.signal})}}}]);
|
package/dist/574.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[574],{3574:e=>{e.exports=JSON.parse('{"active":"Active","activePrograms":"Active programs","add":"Add","cancel":"Cancel","carePrograms":"Care Programs","chooseLocation":"Choose a location","chooseProgram":"Choose a program","completedOn":"Completed on","dateCompleted":"Date completed","dateEnrolled":"Date enrolled","enrollmentLocation":"Enrollment location","enrollmentNowVisible":"It is now visible
|
|
1
|
+
"use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[574],{3574:e=>{e.exports=JSON.parse('{"actions":"Actions","active":"Active","activePrograms":"Active programs","add":"Add","cancel":"Cancel","carePrograms":"Care Programs","chooseLocation":"Choose a location","chooseProgram":"Choose a program","completedOn":"Completed on","dateCompleted":"Date completed","dateEnrolled":"Date enrolled","enrollmentLocation":"Enrollment location","enrollmentNowVisible":"It is now visible in the Programs table","enrollmentSaved":"Program enrollment saved","enrollmentUpdated":"Program enrollment updated","enrollmentUpdatesNowVisible":"Changes to the program are now visible in the Programs table","fullyEnrolled":"Enrolled in all programs","location":"Location","noEligibleEnrollments":"There are no more programs left to enroll this patient in","program":"Program","programEnrollments":"Program enrollments","programEnrollmentSaveError":"Error saving program enrollment","programs":"programs","required":"Required","saveAndClose":"Save and close","seeAll":"See all","status":"Status"}')}}]);
|
package/dist/692.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[692],{6983:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(9601),a=r.n(n),o=r(2609),l=r.n(o)()(a());l.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__programs-overview__skeleton___ptnzT{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__programs-overview__widgetCard___W1HJv{border:1px solid #e0e0e0}",""]),l.locals={widgetCard:"-esm-patient-programs__programs-overview__widgetCard___W1HJv",skeleton:"-esm-patient-programs__programs-overview__skeleton___ptnzT"};const i=l},7692:(e,t,r)=>{r.r(t),r.d(t,{default:()=>
|
|
1
|
+
"use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[692],{6983:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(9601),a=r.n(n),o=r(2609),l=r.n(o)()(a());l.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__programs-overview__skeleton___ptnzT{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__programs-overview__widgetCard___W1HJv{border:1px solid #e0e0e0}",""]),l.locals={widgetCard:"-esm-patient-programs__programs-overview__widgetCard___W1HJv",skeleton:"-esm-patient-programs__programs-overview__skeleton___ptnzT"};const i=l},7692:(e,t,r)=>{r.r(t),r.d(t,{default:()=>H});var n=r(9902),a=r.n(n),o=r(8011),l=r(321),i=r.n(l),s=r(1195),d=r.n(s),m=r(3275),c=r.n(m),u=r(7162),p=r.n(u),g=r(2094),f=r.n(g),h=r(757),v=r.n(h),b=r(6983),y={};y.styleTagTransform=v(),y.setAttributes=p(),y.insert=c().bind(null,"head"),y.domAPI=d(),y.insertStyleElement=f(),i()(b.Z,y);const E=b.Z&&b.Z.locals?b.Z.locals:void 0;var _=r(3066),w=r(8580),k=r(1145),C=r(7030),Z=r(160),P=r(5223),z=r(2965),T=r(364),S=r(7500),x=r(8345),X=r(1358),q=r(2427),O=r(3783),A=r(3863),I=r(8827),L=r(819),B=r(3771),D=r(4924),M=r(4076);function j(){return j=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},j.apply(this,arguments)}const H=function(e){var t,r,n=e.basePath,l=e.patientUuid,i=(0,D.useTranslation)().t,s=i("programs","Program enrollments"),d=i("carePrograms","Care Programs"),m=i("seeAll","See all"),c=window.spaBase+n+"/programs",u=(0,M.Bw)(l),p=u.data,g=u.isError,f=u.isLoading,h=u.isValidating,v=null==p?void 0:p.filter((function(e){return!e.dateCompleted})),b=(0,M.oI)().data,y=(0,A.Z)(b,(function(e){return!(0,I.Z)((0,L.Z)(p,"program.uuid"),e.uuid)})),H=(0,_.usePagination)(null!=p?p:[],5),F=H.results,N=H.goTo,V=H.currentPage,W=a().useCallback((function(){return(0,B.launchPatientWorkspace)("programs-form-workspace")}),[]),J=[{key:"display",header:i("activePrograms","Active programs")},{key:"location",header:i("location","Location")},{key:"dateEnrolled",header:i("dateEnrolled","Date enrolled")},{key:"status",header:i("status","Status")}],U=a().useMemo((function(){return null==F?void 0:F.map((function(e){var t;return{id:e.uuid,display:e.display,location:null===(t=e.location)||void 0===t?void 0:t.display,dateEnrolled:(0,_.formatDatetime)(new Date(e.dateEnrolled)),status:e.dateCompleted?"".concat(i("completedOn","Completed On")," ").concat((0,_.formatDate)(new Date(e.dateCompleted))):i("active","Active")}}))}),[F,i]);return f?a().createElement(w.Z,{role:"progressbar"}):g?a().createElement(B.ErrorState,{error:g,headerTitle:d}):(null==v?void 0:v.length)?a().createElement("div",{className:E.widgetCard},a().createElement(B.CardHeader,{title:d},a().createElement("span",null,h?a().createElement(k.Z,null):null),a().createElement(C.Z,{kind:"ghost",renderIcon:o.Z,iconDescription:"Add programs",onClick:W,disabled:(null==b?void 0:b.length)&&0===(null==y?void 0:y.length)},i("add","Add"))),a().createElement(Z.Z,null,(null==b?void 0:b.length)&&0===(null==y?void 0:y.length)&&a().createElement(P.K0,{style:{minWidth:"100%",margin:"0rem",padding:"0rem"},kind:"info",lowContrast:!0,subtitle:i("noEligibleEnrollments","There are no more programs left to enroll this patient in"),title:i("fullyEnrolled","Enrolled in all programs")}),a().createElement(z.ZP,{rows:U,headers:J,isSortable:!0,size:"short"},(function(e){var n=e.rows,o=e.headers,l=e.getHeaderProps,i=e.getTableProps;return a().createElement(T.Z,j({},i(),{useZebraStyles:!0}),a().createElement(S.Z,null,a().createElement(x.Z,null,o.map((function(e){var r;return a().createElement(X.Z,j({className:"".concat(E.productiveHeading01," ").concat(E.text02)},l({header:e,isSortable:e.isSortable})),null!==(t=null===(r=e.header)||void 0===r?void 0:r.content)&&void 0!==t?t:e.header)})))),a().createElement(q.Z,null,n.map((function(e){return a().createElement(x.Z,{key:e.id},e.cells.map((function(e){var t;return a().createElement(O.Z,{key:e.id},null!==(r=null===(t=e.value)||void 0===t?void 0:t.content)&&void 0!==r?r:e.value)})))}))))}))),a().createElement(B.PatientChartPagination,{currentItems:F.length,onPageNumberChange:function(e){var t=e.page;return N(t)},pageNumber:V,pageSize:5,totalItems:p.length,dashboardLinkUrl:c,dashboardLinkLabel:m})):a().createElement(B.EmptyState,{displayText:s,headerTitle:d,launchForm:W})}},4076:(e,t,r)=>{r.d(t,{Bw:()=>i,YX:()=>m,df:()=>d,o9:()=>l,oI:()=>s});var n=r(9857),a=r(3066),o=r(4200),l="custom:(uuid,display,program,dateEnrolled,dateCompleted,location:(uuid,display))";function i(e){var t,r=(0,n.ZP)("/ws/rest/v1/programenrollment?patient=".concat(e,"&v=").concat(l),a.openmrsFetch),i=r.data,s=r.error,d=r.isValidating,m=(null==i||null===(t=i.data)||void 0===t?void 0:t.results.length)>0?null==i?void 0:i.data.results.sort((function(e,t){return t.dateEnrolled>e.dateEnrolled?1:-1})):null;return{data:i?(0,o.Z)(m,(function(e){var t;return null==e||null===(t=e.program)||void 0===t?void 0:t.uuid})):null,isError:s,isLoading:!i&&!s,isValidating:d}}function s(){var e,t,r=(0,n.ZP)("/ws/rest/v1/program?v=custom:(uuid,display,allWorkflows,concept:(uuid,display))",a.openmrsFetch),o=r.data,l=r.error;return{data:(null==o||null===(e=o.data)||void 0===e||null===(t=e.results)||void 0===t?void 0:t.length)?o.data.results:null,isError:l,isLoading:!o&&!l}}function d(e,t){if(!e)return null;var r=e.program,n=e.patient,o=e.dateEnrolled,l=e.dateCompleted,i=e.location;return(0,a.openmrsObservableFetch)("/ws/rest/v1/programenrollment",{method:"POST",headers:{"Content-Type":"application/json"},body:{program:r,patient:n,dateEnrolled:o,dateCompleted:l,location:i},signal:t.signal})}function m(e,t,r){if(!t&&!t.program)return null;t.program;var n=t.dateEnrolled,o=t.dateCompleted,l=t.location;return(0,a.openmrsObservableFetch)("/ws/rest/v1/programenrollment/".concat(e),{method:"POST",headers:{"Content-Type":"application/json"},body:{dateEnrolled:n,dateCompleted:o,location:l},signal:r.signal})}}}]);
|
package/dist/76.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[76],{3076:(e,r,a)=>{"use strict";a.r(r),a.d(r,{backendDependencies:()=>m,importTranslation:()=>s,setupOpenMRS:()=>i});var n=a(3066),t=a(3771),o={slot:"patient-chart-programs-dashboard-slot",config:{columns:1},title:"Programs"},s=a(3979),m={"webservices.rest":"^2.2.0"};function i(){var e="@openmrs/esm-patient-programs-app",r={featureName:"patient-programs",moduleName:e};return(0,n.defineConfigSchema)(e,{}),{extensions:[{name:"programs-overview-widget",slot:"patient-chart-summary-dashboard-slot",order:0,load:(0,n.getAsyncLifecycle)((function(){return Promise.all([a.e(336),a.e(252),a.e(902),a.e(739),a.e(692)]).then(a.bind(a,7692))}),r),meta:{columnSpan:4}},{name:"programs-details-widget",slot:o.slot,load:(0,n.getAsyncLifecycle)((function(){return Promise.all([a.e(336),a.e(252),a.e(902),a.e(739),a.e(
|
|
1
|
+
(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[76],{3076:(e,r,a)=>{"use strict";a.r(r),a.d(r,{backendDependencies:()=>m,importTranslation:()=>s,setupOpenMRS:()=>i});var n=a(3066),t=a(3771),o={slot:"patient-chart-programs-dashboard-slot",config:{columns:1},title:"Programs"},s=a(3979),m={"webservices.rest":"^2.2.0"};function i(){var e="@openmrs/esm-patient-programs-app",r={featureName:"patient-programs",moduleName:e};return(0,n.defineConfigSchema)(e,{}),{extensions:[{name:"programs-overview-widget",slot:"patient-chart-summary-dashboard-slot",order:0,load:(0,n.getAsyncLifecycle)((function(){return Promise.all([a.e(336),a.e(252),a.e(902),a.e(739),a.e(692)]).then(a.bind(a,7692))}),r),meta:{columnSpan:4}},{name:"programs-details-widget",slot:o.slot,load:(0,n.getAsyncLifecycle)((function(){return Promise.all([a.e(336),a.e(252),a.e(902),a.e(739),a.e(45)]).then(a.bind(a,9045))}),r),meta:{columnSpan:1}},{name:"programs-summary-dashboard",slot:"patient-chart-dashboard-slot",order:10,load:(0,n.getSyncLifecycle)((0,t.createDashboardLink)(o),r),meta:o},{name:"programs-form-workspace",load:(0,n.getAsyncLifecycle)((function(){return Promise.all([a.e(336),a.e(701),a.e(186),a.e(902),a.e(739),a.e(145)]).then(a.bind(a,8145))}),r),meta:{title:"Record Program enrollment"}}]}}},3979:(e,r,a)=>{var n={"./en.json":[3574,574],"./fr.json":[2757,757]};function t(e){if(!a.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],t=r[0];return a.e(r[1]).then((()=>a(t)))}t.keys=()=>Object.keys(n),t.id=3979,e.exports=t}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
System.register("@openmrs/esm-patient-programs-app",[],function(a,j){var b=void 0;return{execute:function(){a((()=>{function k(a){var b=y[a];if(void 0!==b)return b.exports;var c=y[a]={id:a,loaded:!1,exports:{}};return M[a].call(c.exports,c,c.exports,k),c.loaded=!0,c.exports}var q,w,x,z,A,B,C,D,E,F,G,r,H,I,J,K,L,M={3959:(a,b,c)=>{(0,c(6907).s)(1)},6907:(a,b,c)=>{const d=c(3541).R;b.s=function(a){if(a||(a=1),!c.y.meta||!c.y.meta.url)throw console.error("__system_context__",c.y),Error("systemjs-webpack-interop was provided an unknown SystemJS context. Expected context.meta.url, but none was provided");c.p=d(c.y.meta.url,a)}},5384:(a,b,c)=>{c(3959)},3541:(a,b)=>{b.R=function(b,c){var d=document.createElement("a");d.href=b;for(var e="/"===d.pathname[0]?d.pathname:"/"+d.pathname,f=0,g=e.length;f!==c&&0<=g;)"/"===e[--g]&&f++;if(f!==c)throw Error("systemjs-webpack-interop: rootDirectoryLevel ("+c+") is greater than the number of directories ("+f+") in the URL path "+b);var h=e.slice(0,g+1);return d.protocol+"//"+d.host+h},Number.isInteger},9022:(c,d,f)=>{var g={app:()=>(b||((self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[76],{3076:(b,c,d)=>{function a(){var a={featureName:"patient-programs",moduleName:"@openmrs/esm-patient-programs-app"};return(0,e.defineConfigSchema)("@openmrs/esm-patient-programs-app",{}),{extensions:[{name:"programs-overview-widget",slot:"patient-chart-summary-dashboard-slot",order:0,load:(0,e.getAsyncLifecycle)(function(){return Promise.all([d.e(336),d.e(252),d.e(902),d.e(739),d.e(692)]).then(d.bind(d,7692))},a),meta:{columnSpan:4}},{name:"programs-details-widget",slot:g.slot,load:(0,e.getAsyncLifecycle)(function(){return Promise.all([d.e(336),d.e(252),d.e(902),d.e(739),d.e(
|
|
1
|
+
System.register("@openmrs/esm-patient-programs-app",[],function(a,j){var b=void 0;return{execute:function(){a((()=>{function k(a){var b=y[a];if(void 0!==b)return b.exports;var c=y[a]={id:a,loaded:!1,exports:{}};return M[a].call(c.exports,c,c.exports,k),c.loaded=!0,c.exports}var q,w,x,z,A,B,C,D,E,F,G,r,H,I,J,K,L,M={3959:(a,b,c)=>{(0,c(6907).s)(1)},6907:(a,b,c)=>{const d=c(3541).R;b.s=function(a){if(a||(a=1),!c.y.meta||!c.y.meta.url)throw console.error("__system_context__",c.y),Error("systemjs-webpack-interop was provided an unknown SystemJS context. Expected context.meta.url, but none was provided");c.p=d(c.y.meta.url,a)}},5384:(a,b,c)=>{c(3959)},3541:(a,b)=>{b.R=function(b,c){var d=document.createElement("a");d.href=b;for(var e="/"===d.pathname[0]?d.pathname:"/"+d.pathname,f=0,g=e.length;f!==c&&0<=g;)"/"===e[--g]&&f++;if(f!==c)throw Error("systemjs-webpack-interop: rootDirectoryLevel ("+c+") is greater than the number of directories ("+f+") in the URL path "+b);var h=e.slice(0,g+1);return d.protocol+"//"+d.host+h},Number.isInteger},9022:(c,d,f)=>{var g={app:()=>(b||((self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[76],{3076:(b,c,d)=>{function a(){var a={featureName:"patient-programs",moduleName:"@openmrs/esm-patient-programs-app"};return(0,e.defineConfigSchema)("@openmrs/esm-patient-programs-app",{}),{extensions:[{name:"programs-overview-widget",slot:"patient-chart-summary-dashboard-slot",order:0,load:(0,e.getAsyncLifecycle)(function(){return Promise.all([d.e(336),d.e(252),d.e(902),d.e(739),d.e(692)]).then(d.bind(d,7692))},a),meta:{columnSpan:4}},{name:"programs-details-widget",slot:g.slot,load:(0,e.getAsyncLifecycle)(function(){return Promise.all([d.e(336),d.e(252),d.e(902),d.e(739),d.e(45)]).then(d.bind(d,9045))},a),meta:{columnSpan:1}},{name:"programs-summary-dashboard",slot:"patient-chart-dashboard-slot",order:10,load:(0,e.getSyncLifecycle)((0,f.createDashboardLink)(g),a),meta:g},{name:"programs-form-workspace",load:(0,e.getAsyncLifecycle)(function(){return Promise.all([d.e(336),d.e(701),d.e(186),d.e(902),d.e(739),d.e(145)]).then(d.bind(d,8145))},a),meta:{title:"Record Program enrollment"}}]}}d.r(c),d.d(c,{backendDependencies:()=>i,importTranslation:()=>h,setupOpenMRS:()=>a,assets:()=>["45.js","openmrs-esm-patient-programs-app.js","93.js","145.js","186.js","206.js","252.js","294.js","336.js","373.js","402.js","574.js","635.js","692.js","701.js","757.js","784.js","858.js","879.js","932.js"]});var e=d(3066),f=d(3771),g={slot:"patient-chart-programs-dashboard-slot",config:{columns:1},title:"Programs"},h=d(3979),i={"webservices.rest":"^2.2.0"}},3979:(b,c,d)=>{function a(a){if(!d.o(f,a))return Promise.resolve().then(()=>{var b=new Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=f[a],c=b[0];return d.e(b[1]).then(()=>d(c))}var f={"./en.json":[3574,574],"./fr.json":[2757,757]};a.keys=()=>Object.keys(f),a.id=3979,b.exports=a}}]),b=Promise.all([f.e(383),f.e(76)]).then(()=>()=>f(3076))),b)},e=(a,b)=>(f.R=b,b=f.o(g,a)?g[a]():Promise.resolve().then(()=>{throw new Error("Module \""+a+"\" does not exist in container.")}),f.R=void 0,b),h=(a,b)=>{if(f.S){var c=f.S["default"];if(c&&c!==a)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return f.S["default"]=a,f.I("default",b)}};f.d(d,{get:()=>e,init:()=>h})}},y={};return k.m=M,k.c=y,k.y=j,k.n=a=>{var b=a&&a.__esModule?()=>a.default:()=>a;return k.d(b,{a:b}),b},k.d=(a,b)=>{for(var c in b)k.o(b,c)&&!k.o(a,c)&&Object.defineProperty(a,c,{enumerable:!0,get:b[c]})},k.f={},k.e=a=>Promise.all(Object.keys(k.f).reduce((b,c)=>(k.f[c](a,b),b),[])),k.u=a=>a+".js",k.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(a){if("object"==typeof window)return window}}(),k.o=(a,b)=>Object.prototype.hasOwnProperty.call(a,b),q={},w="@openmrs/esm-patient-programs-app:",k.l=(a,b,c)=>{if(q[a])q[a].push(b);else{var e,g;if(void 0!==c)for(var h,j=document.getElementsByTagName("script"),l=0;l<j.length;l++)if(h=j[l],h.getAttribute("src")==a||h.getAttribute("data-webpack")==w+c){e=h;break}e||(g=!0,(e=document.createElement("script")).charset="utf-8",e.timeout=120,k.nc&&e.setAttribute("nonce",k.nc),e.setAttribute("data-webpack",w+c),e.src=a),q[a]=[b];var m=(b,c)=>{e.onerror=e.onload=null,clearTimeout(f);var d=q[a];if(delete q[a],e.parentNode&&e.parentNode.removeChild(e),d&&d.forEach(a=>a(c)),b)return b(c)},f=setTimeout(m.bind(null,void 0,{type:"timeout",target:e}),12e4);e.onerror=m.bind(null,e.onerror),e.onload=m.bind(null,e.onload),g&&document.head.appendChild(e)}},k.r=a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},k.nmd=a=>(a.paths=[],a.children||(a.children=[]),a),(()=>{k.S={};var b={},c={};k.I=(d,e)=>{e||(e=[]);var f=c[d];if(f||(f=c[d]={}),!(0<=e.indexOf(f))){if(e.push(f),b[d])return b[d];k.o(k.S,d)||(k.S[d]={});var g=k.S[d],a=(a,b,c,d)=>{var e=g[a]=g[a]||{},f=e[b];f&&(f.loaded||(!d==!f.eager?!("@openmrs/esm-patient-programs-app">f.from):!d))||(e[b]={get:c,from:"@openmrs/esm-patient-programs-app",eager:!!d})},h=[];return"default"===d&&(a("@openmrs/esm-framework","3.4.1-pre.98",()=>Promise.all([k.e(858),k.e(902)]).then(()=>()=>k(6858))),a("@openmrs/esm-patient-common-lib","3.2.0",()=>Promise.all([k.e(336),k.e(701),k.e(294),k.e(902),k.e(739),k.e(93),k.e(383)]).then(()=>()=>k(5093))),a("carbon-components","10.40.0",()=>k.e(635).then(()=>()=>k(9635))),a("carbon-icons","7.0.7",()=>k.e(402).then(()=>()=>k(5402))),a("dayjs","1.11.3",()=>k.e(879).then(()=>()=>k(8879))),a("react-i18next","11.17.2",()=>Promise.all([k.e(902),k.e(932)]).then(()=>()=>k(9932))),a("react","16.14.0",()=>k.e(784).then(()=>()=>k(2784))),a("rxjs","6.6.7",()=>k.e(206).then(()=>()=>k(5206)))),b[d]=h.length?Promise.all(h).then(()=>b[d]=1):1}}})(),k.p="",x=a=>{var b=a=>a.split(".").map(a=>+a==a?+a:a),c=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(a),d=c[1]?b(c[1]):[];return c[2]&&(d.length++,d.push.apply(d,b(c[2]))),c[3]&&(d.push([]),d.push.apply(d,b(c[3]))),d},z=(b,c)=>{b=x(b),c=x(c);for(var d=0;;){if(d>=b.length)return d<c.length&&"u"!=(typeof c[d])[0];var f=b[d],g=(typeof f)[0];if(d>=c.length)return"u"==g;var a=c[d],h=(typeof a)[0];if(g!=h)return"o"==g&&"n"==h||"s"==h||"u"==g;if("o"!=g&&"u"!=g&&f!=a)return f<a;d++}},A=a=>{function b(){return g.pop().replace(/^\((.+)\)$/,"$1")}var c=a[0],d="";if(1===a.length)return"*";if(c+.5){d+=0==c?">=":-1==c?"<":1==c?"^":2==c?"~":0<c?"=":"!=";for(var e=1,f=1;f<a.length;f++)e--,d+="u"==(typeof(h=a[f]))[0]?"-":(0<e?".":"")+(e=2,h);return d}var g=[];for(f=1;f<a.length;f++){var h=a[f];g.push(0===h?"not("+b()+")":1===h?"("+b()+" || "+b()+")":2===h?g.pop()+" "+g.pop():A(h))}return b()},B=(b,e)=>{if(0 in b){e=x(e);var g=b[0],i=0>g;i&&(g=-g-1);for(var j=0,k=1,m=!0;;k++,j++){var n,o,q=k<b.length?(typeof b[k])[0]:"";if(j>=e.length||"o"==(o=(typeof(n=e[j]))[0]))return!m||("u"==q?k>g&&!i:""==q!=i);if("u"==o){if(!m||"u"!=q)return!1;}else if(!m)"s"!=q&&"n"!=q&&(m=!1,k--);else if(q==o){if(!(k<=g)){if(i?n>b[k]:n<b[k])return!1;n!=b[k]&&(m=!1)}else if(n!=b[k])return!1;}else if("s"!=q&&"n"!=q){if(i||k<=g)return!1;m=!1,k--}else{if(k<=g||o<q!=i)return!1;m=!1}}}var f=[],d=f.pop.bind(f);for(j=1;j<b.length;j++){var c=b[j];f.push(1==c?d()|d():2==c?d()&d():c?B(c,e):!d())}return!!d()},C=(a,b)=>{var c=a[b];return Object.keys(c).reduce((a,b)=>a&&(c[a].loaded||!z(a,b))?a:b,0)},D=(a,b,c,d)=>"Unsatisfied version "+c+" from "+(c&&a[b][c].from)+" of shared singleton module "+b+" (required "+A(d)+")",E=(a,b,c)=>{var d=C(a,c);return G(a[c][d])},F=(a,b,c,d)=>{var e=C(a,c);return B(d,e)||"undefined"!=typeof console&&console.warn&&console.warn(D(a,c,e,d)),G(a[c][e])},G=a=>(a.loaded=1,a.get()),H=(r=b=>function(c,d,e,f){var g=k.I(c);return g&&g.then?g.then(b.bind(b,c,k.S[c],d,e,f)):b(c,k.S[c],d,e,f)})((a,b,c,d)=>b&&k.o(b,c)?E(b,0,c):d()),I=r((a,b,c,d,e)=>b&&k.o(b,c)?F(b,0,c,d):e()),J={},K={3066:()=>I("default","@openmrs/esm-framework",[1,3],()=>Promise.all([k.e(858),k.e(902)]).then(()=>()=>k(6858))),3771:()=>I("default","@openmrs/esm-patient-common-lib",[1,3],()=>Promise.all([k.e(336),k.e(701),k.e(294),k.e(902),k.e(739),k.e(93)]).then(()=>()=>k(5093))),9902:()=>I("default","react",[1,16],()=>k.e(784).then(()=>()=>k(2784))),4924:()=>I("default","react-i18next",[1,11],()=>k.e(373).then(()=>()=>k(9932))),8479:()=>I("default","carbon-components",[1,10],()=>k.e(635).then(()=>()=>k(9635))),2444:()=>I("default","rxjs",[1,6],()=>k.e(206).then(()=>()=>k(5206))),6081:()=>H("default","@openmrs/esm-framework/src/internal",()=>k.e(858).then(()=>()=>k(6858))),3565:()=>I("default","dayjs",[1,1],()=>k.e(879).then(()=>()=>k(8879)))},L={93:[2444,6081],145:[3565],383:[3066,3771],739:[4924,8479],902:[9902]},k.f.consumes=(a,b)=>{k.o(L,a)&&L[a].forEach(a=>{if(k.o(J,a))return b.push(J[a]);var c=b=>{J[a]=0,k.m[a]=c=>{delete k.c[a],c.exports=b()}},d=b=>{delete J[a],k.m[a]=()=>{throw delete k.c[a],b}};try{var e=K[a]();e.then?b.push(J[a]=e.then(c).catch(d)):c(e)}catch(a){d(a)}})},(()=>{var b={55:0};k.f.j=(c,d)=>{var e=k.o(b,c)?b[c]:void 0;if(0!==e)if(e)d.push(e[2]);else if(/^(383|739|902)$/.test(c))b[c]=0;else{var f=new Promise((a,d)=>e=b[c]=[a,d]);d.push(e[2]=f);var g=k.p+k.u(c),h=new Error;k.l(g,d=>{if(k.o(b,c)&&(0!==(e=b[c])&&(b[c]=void 0),e)){var f=d&&("load"===d.type?"missing":d.type),g=d&&d.target&&d.target.src;h.message="Loading chunk "+c+" failed.\n("+f+": "+g+")",h.name="ChunkLoadError",h.type=f,h.request=g,e[1](h)}},"chunk-"+c,c)}};var a=(c,d)=>{var e,f,[g,a,h]=d,i=0;if(g.some(a=>0!==b[a])){for(e in a)k.o(a,e)&&(k.m[e]=a[e]);h&&h(k)}for(c&&c(d);i<g.length;i++)f=g[i],k.o(b,f)&&b[f]&&b[f][0](),b[f]=0},c=self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})(),k.nc=void 0,k(5384),k(9022)})())}}});
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"initial": false,
|
|
6
6
|
"entry": false,
|
|
7
7
|
"recorded": false,
|
|
8
|
-
"size":
|
|
8
|
+
"size": 17233,
|
|
9
9
|
"sizes": {
|
|
10
|
-
"javascript":
|
|
10
|
+
"javascript": 17233
|
|
11
11
|
},
|
|
12
12
|
"names": [],
|
|
13
13
|
"idHints": [],
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
"@openmrs/esm-patient-programs-app"
|
|
16
16
|
],
|
|
17
17
|
"files": [
|
|
18
|
-
"
|
|
18
|
+
"45.js"
|
|
19
19
|
],
|
|
20
20
|
"auxiliaryFiles": [],
|
|
21
|
-
"hash": "
|
|
21
|
+
"hash": "d4bb4ac22af6d67b6413",
|
|
22
22
|
"childrenByOrder": {}
|
|
23
23
|
},
|
|
24
24
|
{
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"76.js"
|
|
65
65
|
],
|
|
66
66
|
"auxiliaryFiles": [],
|
|
67
|
-
"hash": "
|
|
67
|
+
"hash": "7132aae5120e35260fd7",
|
|
68
68
|
"childrenByOrder": {}
|
|
69
69
|
},
|
|
70
70
|
{
|
|
@@ -95,9 +95,9 @@
|
|
|
95
95
|
"initial": false,
|
|
96
96
|
"entry": false,
|
|
97
97
|
"recorded": false,
|
|
98
|
-
"size":
|
|
98
|
+
"size": 22007,
|
|
99
99
|
"sizes": {
|
|
100
|
-
"javascript":
|
|
100
|
+
"javascript": 21965,
|
|
101
101
|
"consume-shared": 42
|
|
102
102
|
},
|
|
103
103
|
"names": [],
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"145.js"
|
|
110
110
|
],
|
|
111
111
|
"auxiliaryFiles": [],
|
|
112
|
-
"hash": "
|
|
112
|
+
"hash": "c8ca335f2490dbbd1f2a",
|
|
113
113
|
"childrenByOrder": {}
|
|
114
114
|
},
|
|
115
115
|
{
|
|
@@ -302,9 +302,9 @@
|
|
|
302
302
|
"initial": false,
|
|
303
303
|
"entry": false,
|
|
304
304
|
"recorded": false,
|
|
305
|
-
"size":
|
|
305
|
+
"size": 993,
|
|
306
306
|
"sizes": {
|
|
307
|
-
"javascript":
|
|
307
|
+
"javascript": 993
|
|
308
308
|
},
|
|
309
309
|
"names": [],
|
|
310
310
|
"idHints": [],
|
|
@@ -315,7 +315,7 @@
|
|
|
315
315
|
"574.js"
|
|
316
316
|
],
|
|
317
317
|
"auxiliaryFiles": [],
|
|
318
|
-
"hash": "
|
|
318
|
+
"hash": "f73971c4af46ef6eaa9f",
|
|
319
319
|
"childrenByOrder": {}
|
|
320
320
|
},
|
|
321
321
|
{
|
|
@@ -347,9 +347,9 @@
|
|
|
347
347
|
"initial": false,
|
|
348
348
|
"entry": false,
|
|
349
349
|
"recorded": false,
|
|
350
|
-
"size":
|
|
350
|
+
"size": 16156,
|
|
351
351
|
"sizes": {
|
|
352
|
-
"javascript":
|
|
352
|
+
"javascript": 16156
|
|
353
353
|
},
|
|
354
354
|
"names": [],
|
|
355
355
|
"idHints": [],
|
|
@@ -360,7 +360,7 @@
|
|
|
360
360
|
"692.js"
|
|
361
361
|
],
|
|
362
362
|
"auxiliaryFiles": [],
|
|
363
|
-
"hash": "
|
|
363
|
+
"hash": "8a70107b2718ae4cc801",
|
|
364
364
|
"childrenByOrder": {}
|
|
365
365
|
},
|
|
366
366
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmrs/esm-patient-programs-app",
|
|
3
|
-
"version": "3.2.1-pre.
|
|
3
|
+
"version": "3.2.1-pre.124",
|
|
4
4
|
"license": "MPL-2.0",
|
|
5
5
|
"description": "Patient programs microfrontend for the OpenMRS SPA",
|
|
6
6
|
"browser": "dist/openmrs-esm-patient-programs-app.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@carbon/charts-react": "^0.49.4",
|
|
38
38
|
"@carbon/icons-react": "^10.18.0",
|
|
39
|
-
"@openmrs/esm-patient-common-lib": "^3.2.1-pre.
|
|
39
|
+
"@openmrs/esm-patient-common-lib": "^3.2.1-pre.124",
|
|
40
40
|
"carbon-components-react": "^7.25.0",
|
|
41
41
|
"d3": "^7.0.3",
|
|
42
42
|
"lodash-es": "^4.17.15"
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"react-router-dom": "5.x",
|
|
53
53
|
"rxjs": "6.x"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "6fbba531dc0375f3c79c705111b23a6f0fb48936"
|
|
56
56
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import Add16 from '@carbon/icons-react/es/add/16';
|
|
3
|
+
import Edit16 from '@carbon/icons-react/es/edit/16';
|
|
3
4
|
import filter from 'lodash-es/filter';
|
|
4
5
|
import includes from 'lodash-es/includes';
|
|
5
6
|
import map from 'lodash-es/map';
|
|
@@ -59,6 +60,10 @@ const ProgramsDetailedSummary: React.FC<ProgramsDetailedSummaryProps> = ({ patie
|
|
|
59
60
|
key: 'status',
|
|
60
61
|
header: t('status', 'Status'),
|
|
61
62
|
},
|
|
63
|
+
{
|
|
64
|
+
key: 'actions',
|
|
65
|
+
header: t('actions', 'Actions'),
|
|
66
|
+
},
|
|
62
67
|
],
|
|
63
68
|
[t],
|
|
64
69
|
);
|
|
@@ -73,6 +78,7 @@ const ProgramsDetailedSummary: React.FC<ProgramsDetailedSummaryProps> = ({ patie
|
|
|
73
78
|
status: program.dateCompleted
|
|
74
79
|
? `${t('completedOn', 'Completed On')} ${formatDate(new Date(program.dateCompleted))}`
|
|
75
80
|
: t('active', 'Active'),
|
|
81
|
+
actions: <ProgramEditButton programEnrollmentId={program.uuid} />,
|
|
76
82
|
};
|
|
77
83
|
});
|
|
78
84
|
}, [enrollments, t]);
|
|
@@ -143,4 +149,25 @@ const ProgramsDetailedSummary: React.FC<ProgramsDetailedSummaryProps> = ({ patie
|
|
|
143
149
|
return <EmptyState displayText={displayText} headerTitle={headerTitle} launchForm={launchProgramsForm} />;
|
|
144
150
|
};
|
|
145
151
|
|
|
152
|
+
interface ProgramEditButtonProps {
|
|
153
|
+
programEnrollmentId: string;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function ProgramEditButton({ programEnrollmentId }: ProgramEditButtonProps) {
|
|
157
|
+
const launchEditProgramsForm = React.useCallback(
|
|
158
|
+
() => launchPatientWorkspace('programs-form-workspace', { programEnrollmentId }),
|
|
159
|
+
[],
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
return (
|
|
163
|
+
<Button
|
|
164
|
+
kind="ghost"
|
|
165
|
+
renderIcon={Edit16}
|
|
166
|
+
iconDescription="Edit Program"
|
|
167
|
+
onClick={launchEditProgramsForm}
|
|
168
|
+
hasIconOnly
|
|
169
|
+
/>
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
146
173
|
export default ProgramsDetailedSummary;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { screen } from '@testing-library/react';
|
|
2
|
+
import { screen, within } from '@testing-library/react';
|
|
3
3
|
import userEvent from '@testing-library/user-event';
|
|
4
4
|
import { openmrsFetch, usePagination } from '@openmrs/esm-framework';
|
|
5
5
|
import { mockEnrolledProgramsResponse } from '../../../../__mocks__/programs.mock';
|
|
@@ -89,13 +89,22 @@ describe('ProgramsDetailedSummary ', () => {
|
|
|
89
89
|
|
|
90
90
|
const addButton = screen.getByRole('button', { name: /Add/ });
|
|
91
91
|
expect(addButton).toBeInTheDocument();
|
|
92
|
-
|
|
93
|
-
expect(
|
|
94
|
-
expect(
|
|
92
|
+
const row = screen.getByRole('row', { name: /hiv care and treatment/i });
|
|
93
|
+
expect(row).toBeInTheDocument();
|
|
94
|
+
expect(within(row).getByRole('cell', { name: /16-Jan-2020/i })).toBeInTheDocument();
|
|
95
|
+
expect(within(row).getByRole('cell', { name: /active$/i })).toBeInTheDocument();
|
|
96
|
+
const editButton = within(row).getByRole('button', { name: /Edit Program$/i });
|
|
97
|
+
expect(editButton).toBeInTheDocument();
|
|
95
98
|
|
|
96
99
|
// Clicking "Add" launches the programs form in a workspace
|
|
97
100
|
userEvent.click(addButton);
|
|
98
101
|
expect(launchPatientWorkspace).toHaveBeenCalledWith('programs-form-workspace');
|
|
102
|
+
|
|
103
|
+
// Clicking the edit button launches the edit form in a workspace
|
|
104
|
+
userEvent.click(editButton);
|
|
105
|
+
expect(launchPatientWorkspace).toHaveBeenCalledWith('programs-form-workspace', {
|
|
106
|
+
programEnrollmentId: mockEnrolledProgramsResponse[0].uuid,
|
|
107
|
+
});
|
|
99
108
|
});
|
|
100
109
|
});
|
|
101
110
|
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
useSession,
|
|
13
13
|
useLocations,
|
|
14
14
|
useLayoutType,
|
|
15
|
+
parseDate,
|
|
15
16
|
} from '@openmrs/esm-framework';
|
|
16
17
|
import {
|
|
17
18
|
Button,
|
|
@@ -28,11 +29,16 @@ import {
|
|
|
28
29
|
useAvailablePrograms,
|
|
29
30
|
useEnrollments,
|
|
30
31
|
customRepresentation,
|
|
32
|
+
updateProgramEnrollment,
|
|
31
33
|
} from './programs.resource';
|
|
32
34
|
import { DefaultWorkspaceProps } from '@openmrs/esm-patient-common-lib';
|
|
33
35
|
import styles from './programs-form.scss';
|
|
34
36
|
|
|
35
|
-
|
|
37
|
+
interface ProgramsFormProps extends DefaultWorkspaceProps {
|
|
38
|
+
programEnrollmentId?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const ProgramsForm: React.FC<ProgramsFormProps> = ({ closeWorkspace, patientUuid, programEnrollmentId }) => {
|
|
36
42
|
const { t } = useTranslation();
|
|
37
43
|
const isTablet = useLayoutType() === 'tablet';
|
|
38
44
|
const session = useSession();
|
|
@@ -41,16 +47,25 @@ const ProgramsForm: React.FC<DefaultWorkspaceProps> = ({ closeWorkspace, patient
|
|
|
41
47
|
|
|
42
48
|
const { data: availablePrograms } = useAvailablePrograms();
|
|
43
49
|
const { data: enrollments } = useEnrollments(patientUuid);
|
|
50
|
+
const currentEnrollment = programEnrollmentId && enrollments.filter((e) => e.uuid == programEnrollmentId)[0];
|
|
51
|
+
const currentProgram = currentEnrollment
|
|
52
|
+
? {
|
|
53
|
+
display: currentEnrollment.program.name,
|
|
54
|
+
...currentEnrollment.program,
|
|
55
|
+
}
|
|
56
|
+
: null;
|
|
44
57
|
|
|
45
|
-
const eligiblePrograms =
|
|
46
|
-
|
|
47
|
-
(program) => !includes(map(enrollments, 'program.uuid'), program.uuid)
|
|
58
|
+
const eligiblePrograms = currentProgram
|
|
59
|
+
? [currentProgram]
|
|
60
|
+
: filter(availablePrograms, (program) => !includes(map(enrollments, 'program.uuid'), program.uuid));
|
|
61
|
+
const [completionDate, setCompletionDate] = React.useState<Date>(
|
|
62
|
+
currentEnrollment?.dateCompleted ? parseDate(currentEnrollment.dateCompleted) : null,
|
|
48
63
|
);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const [selectedProgram, setSelectedProgram] = React.useState<string>('');
|
|
53
|
-
const [userLocation, setUserLocation] = React.useState('');
|
|
64
|
+
const [enrollmentDate, setEnrollmentDate] = React.useState<Date>(
|
|
65
|
+
currentEnrollment?.dateEnrolled ? parseDate(currentEnrollment.dateEnrolled) : new Date(),
|
|
66
|
+
);
|
|
67
|
+
const [selectedProgram, setSelectedProgram] = React.useState<string>(currentEnrollment?.program.uuid ?? '');
|
|
68
|
+
const [userLocation, setUserLocation] = React.useState<string>(currentEnrollment?.location.uuid ?? '');
|
|
54
69
|
|
|
55
70
|
if (!userLocation && session?.sessionLocation?.uuid) {
|
|
56
71
|
setUserLocation(session?.sessionLocation?.uuid);
|
|
@@ -71,32 +86,62 @@ const ProgramsForm: React.FC<DefaultWorkspaceProps> = ({ closeWorkspace, patient
|
|
|
71
86
|
};
|
|
72
87
|
|
|
73
88
|
const abortController = new AbortController();
|
|
74
|
-
const sub =
|
|
75
|
-
(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
89
|
+
const sub = currentEnrollment
|
|
90
|
+
? updateProgramEnrollment(currentEnrollment.uuid, payload, abortController).subscribe(
|
|
91
|
+
(response) => {
|
|
92
|
+
if (response.status === 200) {
|
|
93
|
+
closeWorkspace();
|
|
94
|
+
|
|
95
|
+
showToast({
|
|
96
|
+
critical: true,
|
|
97
|
+
kind: 'success',
|
|
98
|
+
description: t(
|
|
99
|
+
'enrollmentUpdatesNowVisible',
|
|
100
|
+
'Changes to the program are now visible in the Programs table',
|
|
101
|
+
),
|
|
102
|
+
title: t('enrollmentUpdated', 'Program enrollment updated'),
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
mutate(`/ws/rest/v1/programenrollment?patient=${patientUuid}&v=${customRepresentation}`);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
(err) => {
|
|
109
|
+
createErrorHandler();
|
|
110
|
+
|
|
111
|
+
showNotification({
|
|
112
|
+
title: t('programEnrollmentSaveError', 'Error saving program enrollment'),
|
|
113
|
+
kind: 'error',
|
|
114
|
+
critical: true,
|
|
115
|
+
description: err?.message,
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
)
|
|
119
|
+
: createProgramEnrollment(payload, abortController).subscribe(
|
|
120
|
+
(response) => {
|
|
121
|
+
if (response.status === 201) {
|
|
122
|
+
closeWorkspace();
|
|
123
|
+
|
|
124
|
+
showToast({
|
|
125
|
+
critical: true,
|
|
126
|
+
kind: 'success',
|
|
127
|
+
description: t('enrollmentNowVisible', 'It is now visible in the Programs table'),
|
|
128
|
+
title: t('enrollmentSaved', 'Program enrollment saved'),
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
mutate(`/ws/rest/v1/programenrollment?patient=${patientUuid}&v=${customRepresentation}`);
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
(err) => {
|
|
135
|
+
createErrorHandler();
|
|
136
|
+
|
|
137
|
+
showNotification({
|
|
138
|
+
title: t('programEnrollmentSaveError', 'Error saving program enrollment'),
|
|
139
|
+
kind: 'error',
|
|
140
|
+
critical: true,
|
|
141
|
+
description: err?.message,
|
|
142
|
+
});
|
|
143
|
+
},
|
|
144
|
+
);
|
|
100
145
|
return () => {
|
|
101
146
|
sub.unsubscribe();
|
|
102
147
|
};
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { throwError } from 'rxjs';
|
|
3
3
|
import { of } from 'rxjs/internal/observable/of';
|
|
4
|
-
import { render, screen, waitFor } from '@testing-library/react';
|
|
4
|
+
import { fireEvent, render, screen, waitFor, within } from '@testing-library/react';
|
|
5
5
|
import userEvent from '@testing-library/user-event';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
createErrorHandler,
|
|
8
|
+
formatDate,
|
|
9
|
+
openmrsFetch,
|
|
10
|
+
parseDate,
|
|
11
|
+
showNotification,
|
|
12
|
+
showToast,
|
|
13
|
+
useLayoutType,
|
|
14
|
+
} from '@openmrs/esm-framework';
|
|
7
15
|
import { mockPatient } from '../../../../__mocks__/patient.mock';
|
|
8
16
|
import {
|
|
9
17
|
mockCareProgramsResponse,
|
|
10
18
|
mockEnrolledProgramsResponse,
|
|
11
19
|
mockLocationsResponse,
|
|
20
|
+
mockProgramResponse,
|
|
12
21
|
} from '../../../../__mocks__/programs.mock';
|
|
13
|
-
import { createProgramEnrollment } from './programs.resource';
|
|
22
|
+
import { createProgramEnrollment, updateProgramEnrollment } from './programs.resource';
|
|
14
23
|
import ProgramsForm from './programs-form.component';
|
|
15
24
|
|
|
16
25
|
const testProps = {
|
|
@@ -21,6 +30,7 @@ const testProps = {
|
|
|
21
30
|
|
|
22
31
|
const mockCreateErrorHandler = createErrorHandler as jest.Mock;
|
|
23
32
|
const mockCreateProgramEnrollment = createProgramEnrollment as jest.Mock;
|
|
33
|
+
const mockUpdateProgramEnrollment = updateProgramEnrollment as jest.Mock;
|
|
24
34
|
const mockOpenmrsFetch = openmrsFetch as jest.Mock;
|
|
25
35
|
const mockShowNotification = showNotification as jest.Mock;
|
|
26
36
|
const mockShowToast = showToast as jest.Mock;
|
|
@@ -44,15 +54,21 @@ jest.mock('./programs.resource', () => {
|
|
|
44
54
|
return {
|
|
45
55
|
...originalModule,
|
|
46
56
|
createProgramEnrollment: jest.fn(),
|
|
57
|
+
updateProgramEnrollment: jest.fn(),
|
|
47
58
|
};
|
|
48
59
|
});
|
|
49
60
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
61
|
+
mockOpenmrsFetch.mockImplementation((url) => {
|
|
62
|
+
if (/programenrollment/.test(url)) {
|
|
63
|
+
return { data: { results: mockEnrolledProgramsResponse } };
|
|
64
|
+
} else if (/program/.test(url)) {
|
|
65
|
+
return { data: { results: mockCareProgramsResponse } };
|
|
66
|
+
} else {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
55
70
|
|
|
71
|
+
describe('ProgramsForm: ', () => {
|
|
56
72
|
it('renders the programs form with all the relevant fields and values', async () => {
|
|
57
73
|
renderProgramsForm();
|
|
58
74
|
|
|
@@ -75,6 +91,36 @@ describe('ProgramsForm: ', () => {
|
|
|
75
91
|
expect(enrollButton).toBeDisabled();
|
|
76
92
|
});
|
|
77
93
|
|
|
94
|
+
it('renders the edit program form with existing data', async () => {
|
|
95
|
+
renderProgramsForm(mockEnrolledProgramsResponse[0].uuid);
|
|
96
|
+
|
|
97
|
+
const programSelect = await screen.findByRole('group', { name: /Program/i });
|
|
98
|
+
expect(within(programSelect).getByRole('option', { name: /HIV Care and Treatment/ })).toBeInTheDocument();
|
|
99
|
+
expect(within(programSelect).getAllByRole('option').length).toBe(1);
|
|
100
|
+
|
|
101
|
+
const dateEnrolledGroup = screen.getByRole('group', { name: /Date enrolled/i });
|
|
102
|
+
expect(dateEnrolledGroup).toBeInTheDocument();
|
|
103
|
+
const dateEnrolledInput = within(dateEnrolledGroup).getByRole('textbox');
|
|
104
|
+
expect(dateEnrolledInput).toHaveValue('16/01/2020');
|
|
105
|
+
|
|
106
|
+
expect(screen.getByRole('group', { name: /Date completed/i })).toBeInTheDocument();
|
|
107
|
+
|
|
108
|
+
const enrollmentLocation = screen.getByRole('group', { name: /Enrollment location/i });
|
|
109
|
+
const locationSelect = within(enrollmentLocation).getByRole('combobox');
|
|
110
|
+
const amani = screen.getByRole('option', { name: /Amani Hospital/i });
|
|
111
|
+
expect(amani).toBeInTheDocument();
|
|
112
|
+
expect(locationSelect).toHaveValue(mockLocationsResponse[0].uuid);
|
|
113
|
+
expect(screen.getByRole('option', { name: /Inpatient Ward/i })).toBeInTheDocument();
|
|
114
|
+
expect(screen.getByRole('option', { name: /Isolation Ward/i })).toBeInTheDocument();
|
|
115
|
+
expect(screen.getByRole('option', { name: /Laboratory/i })).toBeInTheDocument();
|
|
116
|
+
|
|
117
|
+
const cancelButton = screen.getByRole('button', { name: /cancel/i });
|
|
118
|
+
const enrollButton = screen.getByRole('button', { name: /save and close/i });
|
|
119
|
+
expect(cancelButton).toBeInTheDocument();
|
|
120
|
+
expect(enrollButton).toBeInTheDocument();
|
|
121
|
+
expect(enrollButton).not.toBeDisabled();
|
|
122
|
+
});
|
|
123
|
+
|
|
78
124
|
it('closes the form and the workspace when the cancel button is clicked', () => {
|
|
79
125
|
renderProgramsForm();
|
|
80
126
|
|
|
@@ -96,28 +142,27 @@ describe('ProgramsForm: ', () => {
|
|
|
96
142
|
describe('Form submission: ', () => {
|
|
97
143
|
const inpatientWardUuid = 'b1a8b05e-3542-4037-bbd3-998ee9c40574';
|
|
98
144
|
const oncologyScreeningProgramUuid = '11b129ca-a5e7-4025-84bf-b92a173e20de';
|
|
99
|
-
let cancelButton: HTMLElement;
|
|
100
|
-
let enrollButton: HTMLElement;
|
|
101
|
-
let enrollmentDateInput: HTMLElement;
|
|
102
|
-
let selectLocationInput: HTMLElement;
|
|
103
|
-
let selectProgramInput: HTMLElement;
|
|
104
145
|
|
|
105
146
|
beforeEach(() => {
|
|
147
|
+
mockShowToast.mockReset();
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
it('creates a program enrollment', async () => {
|
|
106
151
|
renderProgramsForm();
|
|
107
152
|
|
|
108
|
-
cancelButton = screen.getByRole('button', { name: /cancel/i });
|
|
109
|
-
enrollButton = screen.getByRole('button', { name: /save and close/i });
|
|
110
|
-
enrollmentDateInput = screen.getAllByRole('textbox', { name: '' })[0];
|
|
111
|
-
selectLocationInput = screen.getAllByRole('combobox', { name: '' })[1];
|
|
112
|
-
selectProgramInput = screen.getAllByRole('combobox', { name: '' })[0];
|
|
113
|
-
});
|
|
153
|
+
const cancelButton = screen.getByRole('button', { name: /cancel/i });
|
|
154
|
+
const enrollButton = screen.getByRole('button', { name: /save and close/i });
|
|
155
|
+
const enrollmentDateInput = screen.getAllByRole('textbox', { name: '' })[0];
|
|
156
|
+
const selectLocationInput = screen.getAllByRole('combobox', { name: '' })[1];
|
|
157
|
+
const selectProgramInput = screen.getAllByRole('combobox', { name: '' })[0];
|
|
114
158
|
|
|
115
|
-
it('renders a success toast notification upon successfully recording a program enrollment', async () => {
|
|
116
159
|
mockCreateProgramEnrollment.mockReturnValueOnce(of({ status: 201, statusText: 'Created' }));
|
|
117
160
|
|
|
118
161
|
userEvent.selectOptions(selectProgramInput, [oncologyScreeningProgramUuid]);
|
|
119
162
|
userEvent.selectOptions(selectLocationInput, [inpatientWardUuid]);
|
|
120
|
-
userEvent.
|
|
163
|
+
userEvent.clear(enrollmentDateInput);
|
|
164
|
+
userEvent.type(enrollmentDateInput, '05/05/2020');
|
|
165
|
+
fireEvent.blur(enrollmentDateInput);
|
|
121
166
|
|
|
122
167
|
expect(screen.getByDisplayValue('Oncology Screening and Diagnosis')).toBeInTheDocument();
|
|
123
168
|
expect(screen.getByDisplayValue('Inpatient Ward')).toBeInTheDocument();
|
|
@@ -128,6 +173,7 @@ describe('ProgramsForm: ', () => {
|
|
|
128
173
|
expect(mockCreateProgramEnrollment).toHaveBeenCalledTimes(1);
|
|
129
174
|
expect(mockCreateProgramEnrollment).toHaveBeenCalledWith(
|
|
130
175
|
expect.objectContaining({
|
|
176
|
+
dateEnrolled: '2020-05-05T00:00:00+00:00',
|
|
131
177
|
dateCompleted: null,
|
|
132
178
|
location: inpatientWardUuid,
|
|
133
179
|
patient: mockPatient.id,
|
|
@@ -140,14 +186,63 @@ describe('ProgramsForm: ', () => {
|
|
|
140
186
|
expect(mockShowToast).toHaveBeenCalledWith(
|
|
141
187
|
expect.objectContaining({
|
|
142
188
|
critical: true,
|
|
143
|
-
description: 'It is now visible
|
|
189
|
+
description: 'It is now visible in the Programs table',
|
|
144
190
|
kind: 'success',
|
|
145
191
|
title: 'Program enrollment saved',
|
|
146
192
|
}),
|
|
147
193
|
);
|
|
148
194
|
});
|
|
149
195
|
|
|
196
|
+
it('updates a program enrollment', async () => {
|
|
197
|
+
renderProgramsForm(mockEnrolledProgramsResponse[0].uuid);
|
|
198
|
+
|
|
199
|
+
const enrollButton = screen.getByRole('button', { name: /save and close/i });
|
|
200
|
+
const dateCompletedGroup = screen.getByRole('group', { name: /Date completed/i });
|
|
201
|
+
const dateCompletedInput = within(dateCompletedGroup).getByRole('textbox');
|
|
202
|
+
|
|
203
|
+
mockUpdateProgramEnrollment.mockReturnValueOnce(of({ status: 200, statusText: 'OK' }));
|
|
204
|
+
|
|
205
|
+
userEvent.type(dateCompletedInput, '05/05/2020');
|
|
206
|
+
expect(dateCompletedInput).toHaveValue('05/05/2020');
|
|
207
|
+
fireEvent.blur(dateCompletedInput);
|
|
208
|
+
|
|
209
|
+
expect(enrollButton).not.toBeDisabled();
|
|
210
|
+
|
|
211
|
+
await waitFor(() => userEvent.click(enrollButton));
|
|
212
|
+
|
|
213
|
+
expect(mockUpdateProgramEnrollment).toHaveBeenCalledTimes(1);
|
|
214
|
+
expect(mockUpdateProgramEnrollment).toHaveBeenCalledWith(
|
|
215
|
+
mockEnrolledProgramsResponse[0].uuid,
|
|
216
|
+
expect.objectContaining({
|
|
217
|
+
dateEnrolled: '2020-01-16T00:00:00+00:00',
|
|
218
|
+
dateCompleted: '2020-05-05T00:00:00+00:00',
|
|
219
|
+
location: mockEnrolledProgramsResponse[0].location.uuid,
|
|
220
|
+
patient: mockPatient.id,
|
|
221
|
+
program: mockEnrolledProgramsResponse[0].program.uuid,
|
|
222
|
+
}),
|
|
223
|
+
new AbortController(),
|
|
224
|
+
);
|
|
225
|
+
|
|
226
|
+
expect(mockShowToast).toHaveBeenCalledTimes(1);
|
|
227
|
+
expect(mockShowToast).toHaveBeenCalledWith(
|
|
228
|
+
expect.objectContaining({
|
|
229
|
+
critical: true,
|
|
230
|
+
description: 'Changes to the program are now visible in the Programs table',
|
|
231
|
+
kind: 'success',
|
|
232
|
+
title: 'Program enrollment updated',
|
|
233
|
+
}),
|
|
234
|
+
);
|
|
235
|
+
});
|
|
236
|
+
|
|
150
237
|
xit('renders an error notification if there was a problem recording a program enrollment', async () => {
|
|
238
|
+
renderProgramsForm();
|
|
239
|
+
|
|
240
|
+
const cancelButton = screen.getByRole('button', { name: /cancel/i });
|
|
241
|
+
const enrollButton = screen.getByRole('button', { name: /save and close/i });
|
|
242
|
+
const enrollmentDateInput = screen.getAllByRole('textbox', { name: '' })[0];
|
|
243
|
+
const selectLocationInput = screen.getAllByRole('combobox', { name: '' })[1];
|
|
244
|
+
const selectProgramInput = screen.getAllByRole('combobox', { name: '' })[0];
|
|
245
|
+
|
|
151
246
|
const error = {
|
|
152
247
|
message: 'Internal Server Error',
|
|
153
248
|
response: {
|
|
@@ -180,6 +275,6 @@ describe('ProgramsForm: ', () => {
|
|
|
180
275
|
});
|
|
181
276
|
});
|
|
182
277
|
|
|
183
|
-
function renderProgramsForm() {
|
|
184
|
-
render(<ProgramsForm {...testProps} />);
|
|
278
|
+
function renderProgramsForm(programEnrollmentUuidToEdit?: string) {
|
|
279
|
+
render(<ProgramsForm {...testProps} programEnrollmentId={programEnrollmentUuidToEdit} />);
|
|
185
280
|
}
|
|
@@ -59,12 +59,12 @@ export function createProgramEnrollment(payload, abortController) {
|
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
export function updateProgramEnrollment(payload, abortController) {
|
|
62
|
+
export function updateProgramEnrollment(programEnrollmentUuid: string, payload, abortController) {
|
|
63
63
|
if (!payload && !payload.program) {
|
|
64
64
|
return null;
|
|
65
65
|
}
|
|
66
66
|
const { program, dateEnrolled, dateCompleted, location } = payload;
|
|
67
|
-
return openmrsObservableFetch(`/ws/rest/v1/programenrollment/${
|
|
67
|
+
return openmrsObservableFetch(`/ws/rest/v1/programenrollment/${programEnrollmentUuid}`, {
|
|
68
68
|
method: 'POST',
|
|
69
69
|
headers: {
|
|
70
70
|
'Content-Type': 'application/json',
|
package/src/types/index.ts
CHANGED
|
@@ -15,11 +15,15 @@ export interface PatientProgram {
|
|
|
15
15
|
states: Array<{}>;
|
|
16
16
|
links?: Links;
|
|
17
17
|
}>;
|
|
18
|
+
concept: {
|
|
19
|
+
display: string;
|
|
20
|
+
uuid: string;
|
|
21
|
+
};
|
|
18
22
|
links: Links;
|
|
19
23
|
};
|
|
20
24
|
display: string;
|
|
21
|
-
dateEnrolled:
|
|
22
|
-
dateCompleted:
|
|
25
|
+
dateEnrolled: string;
|
|
26
|
+
dateCompleted: string | null;
|
|
23
27
|
location?: {
|
|
24
28
|
uuid: string;
|
|
25
29
|
display: string;
|
package/translations/en.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"actions": "Actions",
|
|
2
3
|
"active": "Active",
|
|
3
4
|
"activePrograms": "Active programs",
|
|
4
5
|
"add": "Add",
|
|
@@ -10,8 +11,10 @@
|
|
|
10
11
|
"dateCompleted": "Date completed",
|
|
11
12
|
"dateEnrolled": "Date enrolled",
|
|
12
13
|
"enrollmentLocation": "Enrollment location",
|
|
13
|
-
"enrollmentNowVisible": "It is now visible
|
|
14
|
+
"enrollmentNowVisible": "It is now visible in the Programs table",
|
|
14
15
|
"enrollmentSaved": "Program enrollment saved",
|
|
16
|
+
"enrollmentUpdated": "Program enrollment updated",
|
|
17
|
+
"enrollmentUpdatesNowVisible": "Changes to the program are now visible in the Programs table",
|
|
15
18
|
"fullyEnrolled": "Enrolled in all programs",
|
|
16
19
|
"location": "Location",
|
|
17
20
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
package/dist/13.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[13],{5351:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(9601),a=r.n(n),o=r(2609),l=r.n(o)()(a());l.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__programs-detailed-summary__skeleton___vysuL{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__programs-detailed-summary__widgetCard___q9_pO{border:1px solid #e0e0e0}",""]),l.locals={widgetCard:"-esm-patient-programs__programs-detailed-summary__widgetCard___q9_pO",skeleton:"-esm-patient-programs__programs-detailed-summary__skeleton___vysuL"};const i=l},6013:(e,t,r)=>{r.r(t),r.d(t,{default:()=>V});var n=r(9902),a=r.n(n),o=r(8011),l=r(3863),i=r(8827),s=r(819),d=r(321),m=r.n(d),u=r(1195),c=r.n(u),p=r(3275),g=r.n(p),f=r(7162),h=r.n(f),v=r(2094),b=r.n(v),y=r(757),_=r.n(y),E=r(5351),k={};k.styleTagTransform=_(),k.setAttributes=h(),k.insert=g().bind(null,"head"),k.domAPI=c(),k.insertStyleElement=b(),m()(E.Z,k);const w=E.Z&&E.Z.locals?E.Z.locals:void 0;var Z=r(3771),C=r(4924),P=r(4076),x=r(8580),z=r(1145),S=r(7030),q=r(160),T=r(5223),O=r(2965),X=r(364),M=r(7500),A=r(8345),D=r(1358),L=r(2427),B=r(3783),I=r(3066);function j(){return j=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},j.apply(this,arguments)}const V=function(e){var t,r,n=e.patientUuid,d=(0,C.useTranslation)().t,m=d("programEnrollments","Program enrollments"),u=d("carePrograms","Care Programs"),c=(0,P.Bw)(n),p=c.data,g=c.isError,f=c.isLoading,h=c.isValidating,v=(0,P.oI)().data,b=(0,l.Z)(v,(function(e){return!(0,i.Z)((0,s.Z)(p,"program.uuid"),e.uuid)})),y=a().useMemo((function(){return[{key:"display",header:d("activePrograms","Active programs")},{key:"location",header:d("location","Location")},{key:"dateEnrolled",header:d("dateEnrolled","Date enrolled")},{key:"status",header:d("status","Status")}]}),[d]),_=a().useMemo((function(){return null==p?void 0:p.map((function(e){var t;return{id:e.uuid,display:e.display,location:null===(t=e.location)||void 0===t?void 0:t.display,dateEnrolled:(0,I.formatDatetime)(new Date(e.dateEnrolled)),status:e.dateCompleted?"".concat(d("completedOn","Completed On")," ").concat((0,I.formatDate)(new Date(e.dateCompleted))):d("active","Active")}}))}),[p,d]),E=a().useCallback((function(){return(0,Z.launchPatientWorkspace)("programs-form-workspace")}),[]);return f?a().createElement(x.Z,{role:"progressbar"}):g?a().createElement(Z.ErrorState,{error:g,headerTitle:u}):(null==p?void 0:p.length)?a().createElement("div",{className:w.widgetCard},a().createElement(Z.CardHeader,{title:u},a().createElement("span",null,h?a().createElement(z.Z,null):null),a().createElement(S.Z,{kind:"ghost",renderIcon:o.Z,iconDescription:"Add programs",onClick:E,disabled:(null==v?void 0:v.length)&&0===(null==b?void 0:b.length)},d("add","Add"))),a().createElement(q.Z,null,(null==v?void 0:v.length)&&0===(null==b?void 0:b.length)&&a().createElement(T.K0,{style:{minWidth:"100%",margin:"0rem",padding:"0rem"},kind:"info",lowContrast:!0,subtitle:d("noEligibleEnrollments","There are no more programs left to enroll this patient in"),title:d("fullyEnrolled","Enrolled in all programs")}),a().createElement(O.ZP,{rows:_,headers:y,isSortable:!0,size:"short"},(function(e){var n=e.rows,o=e.headers,l=e.getHeaderProps,i=e.getTableProps;return a().createElement(X.Z,j({},i(),{useZebraStyles:!0}),a().createElement(M.Z,null,a().createElement(A.Z,null,o.map((function(e){var r;return a().createElement(D.Z,j({className:"".concat(w.productiveHeading01," ").concat(w.text02)},l({header:e,isSortable:e.isSortable})),null!==(t=null===(r=e.header)||void 0===r?void 0:r.content)&&void 0!==t?t:e.header)})))),a().createElement(L.Z,null,n.map((function(e){return a().createElement(A.Z,{key:e.id},e.cells.map((function(e){var t;return a().createElement(B.Z,{key:e.id},null!==(r=null===(t=e.value)||void 0===t?void 0:t.content)&&void 0!==r?r:e.value)})))}))))})))):a().createElement(Z.EmptyState,{displayText:m,headerTitle:u,launchForm:E})}},4076:(e,t,r)=>{r.d(t,{Bw:()=>i,df:()=>d,o9:()=>l,oI:()=>s});var n=r(9857),a=r(3066),o=r(4200),l="custom:(uuid,display,program,dateEnrolled,dateCompleted,location:(uuid,display))";function i(e){var t,r=(0,n.ZP)("/ws/rest/v1/programenrollment?patient=".concat(e,"&v=").concat(l),a.openmrsFetch),i=r.data,s=r.error,d=r.isValidating,m=(null==i||null===(t=i.data)||void 0===t?void 0:t.results.length)>0?null==i?void 0:i.data.results.sort((function(e,t){return t.dateEnrolled>e.dateEnrolled?1:-1})):null;return{data:i?(0,o.Z)(m,(function(e){var t;return null==e||null===(t=e.program)||void 0===t?void 0:t.uuid})):null,isError:s,isLoading:!i&&!s,isValidating:d}}function s(){var e,t,r=(0,n.ZP)("/ws/rest/v1/program?v=custom:(uuid,display,allWorkflows,concept:(uuid,display))",a.openmrsFetch),o=r.data,l=r.error;return{data:(null==o||null===(e=o.data)||void 0===e||null===(t=e.results)||void 0===t?void 0:t.length)?o.data.results:null,isError:l,isLoading:!o&&!l}}function d(e,t){if(!e)return null;var r=e.program,n=e.patient,o=e.dateEnrolled,l=e.dateCompleted,i=e.location;return(0,a.openmrsObservableFetch)("/ws/rest/v1/programenrollment",{method:"POST",headers:{"Content-Type":"application/json"},body:{program:r,patient:n,dateEnrolled:o,dateCompleted:l,location:i},signal:t.signal})}}}]);
|