@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.
@@ -1,35 +1,35 @@
1
- @openmrs/esm-patient-programs-app:build: cache hit, replaying output 7951b9de39cfdbeb
2
- @openmrs/esm-patient-programs-app:build: $ webpack --mode production
3
- @openmrs/esm-patient-programs-app:build: assets by chunk 1.34 MiB (id hint: vendors)
4
- @openmrs/esm-patient-programs-app:build:  asset 858.js 474 KiB [emitted] [minimized] [big] (id hint: vendors) 1 related asset
5
- @openmrs/esm-patient-programs-app:build:  asset 252.js 243 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
6
- @openmrs/esm-patient-programs-app:build:  asset 635.js 228 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
7
- @openmrs/esm-patient-programs-app:build:  asset 186.js 124 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
8
- @openmrs/esm-patient-programs-app:build:  asset 294.js 114 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
9
- @openmrs/esm-patient-programs-app:build:  asset 402.js 85.5 KiB [emitted] [minimized] (id hint: vendors)
10
- @openmrs/esm-patient-programs-app:build:  asset 336.js 56.7 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
11
- @openmrs/esm-patient-programs-app:build:  asset 206.js 45.4 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
12
- @openmrs/esm-patient-programs-app:build:  asset 701.js 4.92 KiB [emitted] [minimized] (id hint: vendors)
13
- @openmrs/esm-patient-programs-app:build: + 13 assets
14
- @openmrs/esm-patient-programs-app:build: orphan modules 9.18 MiB (javascript) 42 bytes (consume-shared) [orphan] 833 modules
15
- @openmrs/esm-patient-programs-app:build: runtime modules 19.5 KiB 15 modules
16
- @openmrs/esm-patient-programs-app:build: built modules 5.41 MiB (javascript) 336 bytes (share-init) 336 bytes (consume-shared) [built]
17
- @openmrs/esm-patient-programs-app:build:  modules by path ../../node_modules/ 5.28 MiB 149 modules
18
- @openmrs/esm-patient-programs-app:build:  modules by path ./ 45.7 KiB 11 modules
19
- @openmrs/esm-patient-programs-app:build:  provide-module modules 336 bytes
20
- @openmrs/esm-patient-programs-app:build:  modules by path provide shared module (default) @openmrs/ 84 bytes 2 modules
21
- @openmrs/esm-patient-programs-app:build:  + 6 modules
22
- @openmrs/esm-patient-programs-app:build:  consume-shared-module modules 336 bytes
23
- @openmrs/esm-patient-programs-app:build:  modules by path consume shared module (default) @openmrs/ 126 bytes 3 modules
24
- @openmrs/esm-patient-programs-app:build:  + 5 modules
25
- @openmrs/esm-patient-programs-app:build:  modules by path ../esm-patient-common-lib/src/ 80.9 KiB
26
- @openmrs/esm-patient-programs-app:build:  ../esm-patient-common-lib/src/index.ts + 31 modules 59.6 KiB [built] [code generated]
27
- @openmrs/esm-patient-programs-app:build:  + 5 modules
28
- @openmrs/esm-patient-programs-app:build:  container entry 42 bytes [built] [code generated]
29
- @openmrs/esm-patient-programs-app:build: 
30
- @openmrs/esm-patient-programs-app:build: WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
31
- @openmrs/esm-patient-programs-app:build: This can impact web performance.
32
- @openmrs/esm-patient-programs-app:build: Assets:
33
- @openmrs/esm-patient-programs-app:build:  858.js (474 KiB)
34
- @openmrs/esm-patient-programs-app:build: 
35
- @openmrs/esm-patient-programs-app:build: webpack 5.73.0 compiled with 1 warning in 216229 ms
1
+ @openmrs/esm-patient-programs-app:build: cache hit, replaying output ff9ee631970614f2
2
+ @openmrs/esm-patient-programs-app:build: $ webpack --mode production
3
+ @openmrs/esm-patient-programs-app:build: assets by chunk 1.34 MiB (id hint: vendors)
4
+ @openmrs/esm-patient-programs-app:build:  asset 858.js 474 KiB [emitted] [minimized] [big] (id hint: vendors) 1 related asset
5
+ @openmrs/esm-patient-programs-app:build:  asset 252.js 243 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
6
+ @openmrs/esm-patient-programs-app:build:  asset 635.js 228 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
7
+ @openmrs/esm-patient-programs-app:build:  asset 186.js 124 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
8
+ @openmrs/esm-patient-programs-app:build:  asset 294.js 114 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
9
+ @openmrs/esm-patient-programs-app:build:  asset 402.js 85.5 KiB [emitted] [minimized] (id hint: vendors)
10
+ @openmrs/esm-patient-programs-app:build:  asset 336.js 56.7 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
11
+ @openmrs/esm-patient-programs-app:build:  asset 206.js 45.4 KiB [emitted] [minimized] (id hint: vendors) 1 related asset
12
+ @openmrs/esm-patient-programs-app:build:  asset 701.js 4.92 KiB [emitted] [minimized] (id hint: vendors)
13
+ @openmrs/esm-patient-programs-app:build: + 13 assets
14
+ @openmrs/esm-patient-programs-app:build: orphan modules 9.18 MiB (javascript) 42 bytes (consume-shared) [orphan] 834 modules
15
+ @openmrs/esm-patient-programs-app:build: runtime modules 19.5 KiB 15 modules
16
+ @openmrs/esm-patient-programs-app:build: built modules 5.41 MiB (javascript) 336 bytes (share-init) 336 bytes (consume-shared) [built]
17
+ @openmrs/esm-patient-programs-app:build:  modules by path ../../node_modules/ 5.28 MiB 149 modules
18
+ @openmrs/esm-patient-programs-app:build:  modules by path ./ 50.8 KiB 11 modules
19
+ @openmrs/esm-patient-programs-app:build:  provide-module modules 336 bytes
20
+ @openmrs/esm-patient-programs-app:build:  modules by path provide shared module (default) @openmrs/ 84 bytes 2 modules
21
+ @openmrs/esm-patient-programs-app:build:  + 6 modules
22
+ @openmrs/esm-patient-programs-app:build:  consume-shared-module modules 336 bytes
23
+ @openmrs/esm-patient-programs-app:build:  modules by path consume shared module (default) @openmrs/ 126 bytes 3 modules
24
+ @openmrs/esm-patient-programs-app:build:  + 5 modules
25
+ @openmrs/esm-patient-programs-app:build:  modules by path ../esm-patient-common-lib/src/ 80.9 KiB
26
+ @openmrs/esm-patient-programs-app:build:  ../esm-patient-common-lib/src/index.ts + 31 modules 59.6 KiB [built] [code generated]
27
+ @openmrs/esm-patient-programs-app:build:  + 5 modules
28
+ @openmrs/esm-patient-programs-app:build:  container entry 42 bytes [built] [code generated]
29
+ @openmrs/esm-patient-programs-app:build: 
30
+ @openmrs/esm-patient-programs-app:build: WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
31
+ @openmrs/esm-patient-programs-app:build: This can impact web performance.
32
+ @openmrs/esm-patient-programs-app:build: Assets:
33
+ @openmrs/esm-patient-programs-app:build:  858.js (474 KiB)
34
+ @openmrs/esm-patient-programs-app:build: 
35
+ @openmrs/esm-patient-programs-app:build: webpack 5.73.0 compiled with 1 warning 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 on the Programs page","enrollmentSaved":"Program enrollment saved","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"}')}}]);
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:()=>j});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),Z=r(7030),C=r(160),P=r(5223),z=r(2965),S=r(364),T=r(7500),x=r(8345),q=r(1358),X=r(2427),A=r(3783),I=r(3863),L=r(8827),B=r(819),D=r(3771),M=r(4924),O=r(4076);function H(){return H=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},H.apply(this,arguments)}const j=function(e){var t,r,n=e.basePath,l=e.patientUuid,i=(0,M.useTranslation)().t,s=i("programs","Program enrollments"),d=i("carePrograms","Care Programs"),m=i("seeAll","See all"),c=window.spaBase+n+"/programs",u=(0,O.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,O.oI)().data,y=(0,I.Z)(b,(function(e){return!(0,L.Z)((0,B.Z)(p,"program.uuid"),e.uuid)})),j=(0,_.usePagination)(null!=p?p:[],5),N=j.results,V=j.goTo,W=j.currentPage,F=a().useCallback((function(){return(0,D.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==N?void 0:N.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")}}))}),[N,i]);return f?a().createElement(w.Z,{role:"progressbar"}):g?a().createElement(D.ErrorState,{error:g,headerTitle:d}):(null==v?void 0:v.length)?a().createElement("div",{className:E.widgetCard},a().createElement(D.CardHeader,{title:d},a().createElement("span",null,h?a().createElement(k.Z,null):null),a().createElement(Z.Z,{kind:"ghost",renderIcon:o.Z,iconDescription:"Add programs",onClick:F,disabled:(null==b?void 0:b.length)&&0===(null==y?void 0:y.length)},i("add","Add"))),a().createElement(C.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(S.Z,H({},i(),{useZebraStyles:!0}),a().createElement(T.Z,null,a().createElement(x.Z,null,o.map((function(e){var r;return a().createElement(q.Z,H({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(X.Z,null,n.map((function(e){return a().createElement(x.Z,{key:e.id},e.cells.map((function(e){var t;return a().createElement(A.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(D.PatientChartPagination,{currentItems:N.length,onPageNumberChange:function(e){var t=e.page;return V(t)},pageNumber:W,pageSize:5,totalItems:p.length,dashboardLinkUrl:c,dashboardLinkLabel:m})):a().createElement(D.EmptyState,{displayText:s,headerTitle:d,launchForm:F})}},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})}}}]);
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(13)]).then(a.bind(a,6013))}),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
+ (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(13)]).then(d.bind(d,6013))},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:()=>["13.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)})())}}});
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": 15225,
8
+ "size": 17233,
9
9
  "sizes": {
10
- "javascript": 15225
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
- "13.js"
18
+ "45.js"
19
19
  ],
20
20
  "auxiliaryFiles": [],
21
- "hash": "4f76c3d969188b471b1b",
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": "02e84d1acfc1cb051b3f",
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": 18991,
98
+ "size": 22007,
99
99
  "sizes": {
100
- "javascript": 18949,
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": "41ca75863f9b76bb0f83",
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": 830,
305
+ "size": 993,
306
306
  "sizes": {
307
- "javascript": 830
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": "cc4b186854df8f0d243b",
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": 16119,
350
+ "size": 16156,
351
351
  "sizes": {
352
- "javascript": 16119
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": "62659fc26377010a825d",
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.123",
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.123",
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": "72ca6fd4ad992fd0d0f603485700e645c8c0b83e"
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
- expect(screen.getByRole('row', { name: /hiv care and treatment/i })).toBeInTheDocument();
93
- expect(screen.getByRole('row', { name: /16-Jan-2020/i })).toBeInTheDocument();
94
- expect(screen.getByRole('row', { name: /active$/i })).toBeInTheDocument();
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
- const ProgramsForm: React.FC<DefaultWorkspaceProps> = ({ closeWorkspace, patientUuid }) => {
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 = filter(
46
- availablePrograms,
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
- const [completionDate, setCompletionDate] = React.useState(null);
51
- const [enrollmentDate, setEnrollmentDate] = React.useState(new Date());
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 = createProgramEnrollment(payload, abortController).subscribe(
75
- (response) => {
76
- if (response.status === 201) {
77
- closeWorkspace();
78
-
79
- showToast({
80
- critical: true,
81
- kind: 'success',
82
- description: t('enrollmentNowVisible', 'It is now visible on the Programs page'),
83
- title: t('enrollmentSaved', 'Program enrollment saved'),
84
- });
85
-
86
- mutate(`/ws/rest/v1/programenrollment?patient=${patientUuid}&v=${customRepresentation}`);
87
- }
88
- },
89
- (err) => {
90
- createErrorHandler();
91
-
92
- showNotification({
93
- title: t('programEnrollmentSaveError', 'Error saving program enrollment'),
94
- kind: 'error',
95
- critical: true,
96
- description: err?.message,
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 { createErrorHandler, openmrsFetch, showNotification, showToast, useLayoutType } from '@openmrs/esm-framework';
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
- describe('ProgramsForm: ', () => {
51
- beforeEach(() => {
52
- mockOpenmrsFetch.mockReturnValueOnce({ data: { results: mockCareProgramsResponse } });
53
- mockOpenmrsFetch.mockReturnValueOnce({ data: { results: mockEnrolledProgramsResponse } });
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.type(enrollmentDateInput, '2020-05-05');
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 on the Programs page',
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/${program}`, {
67
+ return openmrsObservableFetch(`/ws/rest/v1/programenrollment/${programEnrollmentUuid}`, {
68
68
  method: 'POST',
69
69
  headers: {
70
70
  'Content-Type': 'application/json',
@@ -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: Date;
22
- dateCompleted: Date | null;
25
+ dateEnrolled: string;
26
+ dateCompleted: string | null;
23
27
  location?: {
24
28
  uuid: string;
25
29
  display: string;
@@ -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 on the Programs page",
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})}}}]);