@openmrs/esm-fast-data-entry-app 1.0.0-pre.21 → 1.0.0-pre.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/508.js +1 -0
- package/dist/574.js +1 -1
- package/dist/804.js +1 -1
- package/dist/954.js +1 -0
- package/dist/openmrs-esm-fast-data-entry-app.js +1 -1
- package/dist/openmrs-esm-fast-data-entry-app.js.buildmanifest.json +34 -34
- package/dist/openmrs-esm-fast-data-entry-app.old +1 -1
- package/package.json +1 -1
- package/src/FormBootstrap.tsx +142 -0
- package/src/Root.tsx +11 -8
- package/src/context/FormWorkflowContext.tsx +40 -0
- package/src/context/FormWorkflowReducer.ts +38 -0
- package/src/form-entry-workflow/FormEntryWorkflow.tsx +88 -0
- package/src/form-entry-workflow/index.ts +3 -0
- package/src/form-entry-workflow/styles.scss +59 -0
- package/src/forms-page/FormsPage.tsx +76 -0
- package/src/forms-page/index.ts +3 -0
- package/src/forms-page/styles.scss +11 -0
- package/src/{forms → forms-table}/FormsTable.tsx +37 -26
- package/src/forms-table/index.ts +3 -0
- package/src/forms-table/styles.scss +20 -0
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useGetAllForms.ts +45 -0
- package/src/{forms → hooks}/useGetPatient.ts +0 -0
- package/src/{forms/PatientInfo.test.tsx → patient-banner/PatientBanner.test.tsx} +3 -3
- package/src/{forms/PatientInfo.tsx → patient-banner/PatientBanner.tsx} +2 -2
- package/src/patient-banner/index.ts +3 -0
- package/src/{forms/patient-info.scss → patient-banner/styles.scss} +0 -0
- package/src/patient-card/PatientCard.tsx +51 -0
- package/src/patient-card/index.ts +3 -0
- package/src/patient-card/styles.scss +30 -0
- package/src/patient-search-header/PatientSearchHeader.tsx +47 -0
- package/src/patient-search-header/index.ts +3 -0
- package/src/patient-search-header/styles.scss +17 -0
- package/translations/en.json +13 -4
- package/dist/852.js +0 -1
- package/dist/947.js +0 -1
- package/src/FormEntry.tsx +0 -42
- package/src/Loader.tsx +0 -16
- package/src/forms/FormWorkflow.tsx +0 -135
- package/src/forms/FormsRoot.tsx +0 -79
- package/src/forms/PatientCard.tsx +0 -37
- package/src/forms/mockData.ts +0 -20
- package/src/forms/styles.scss +0 -13
- package/src/loader.scss +0 -9
package/dist/852.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_fast_data_entry_app=self.webpackChunk_openmrs_esm_fast_data_entry_app||[]).push([[852],{4131:(e,t,r)=>{r.r(t),r.d(t,{FormsRoot:()=>te,customFormRepresentation:()=>K,default:()=>re,formEncounterUrl:()=>Y,formEncounterUrlPoc:()=>$,useFormEncounters:()=>ee});var n=r(5666),a=r.n(n),o=r(311),i=r(622),l=r(751),s=r(4211),c=r.n(s),m=r(8100),f=r(5393),d=r(2370),u=r(5566),p=r(2302),g=r(3567),h=r(5185),_=r(8529),y=r(8722),b=r(9758),v=r(4525),w=r(7450),E=r(7188),O=r(2221),P=r(4116),j=r(3379),k=r.n(j),z=r(7795),x=r.n(z),C=r(569),H=r.n(C),F=r(3565),Z=r.n(F),X=r(9216),T=r.n(X),D=r(4589),L=r.n(D),S=r(8772),q={};q.styleTagTransform=L(),q.setAttributes=Z(),q.insert=H().bind(null,"head"),q.domAPI=x(),q.insertStyleElement=T(),k()(S.Z,q);const M=S.Z&&S.Z.locals?S.Z.locals:void 0;var V=function(e){var t=e.width,r=void 0===t?"64":t,n=e.height,a=void 0===n?"64":n;return c().createElement("svg",{width:r,height:a,viewBox:"0 0 64 64"},c().createElement("title",null,"Empty data illustration"),c().createElement("g",{fill:"none",fillRule:"evenodd"},c().createElement("path",{d:"M38.133 13.186H21.947c-.768.001-1.39.623-1.39 1.391V50.55l-.186.057-3.97 1.216a.743.743 0 01-.927-.493L3.664 12.751a.742.742 0 01.492-.926l6.118-1.874 17.738-5.43 6.119-1.873a.741.741 0 01.926.492L38.076 13l.057.186z",fill:"#F4F4F4"}),c().createElement("path",{d:"M41.664 13L38.026 1.117A1.576 1.576 0 0036.056.07l-8.601 2.633-17.737 5.43-8.603 2.634a1.578 1.578 0 00-1.046 1.97l12.436 40.616a1.58 1.58 0 001.969 1.046l5.897-1.805.185-.057v-.194l-.185.057-5.952 1.822a1.393 1.393 0 01-1.737-.923L.247 12.682a1.39 1.39 0 01.923-1.738L9.772 8.31 27.51 2.881 36.112.247a1.393 1.393 0 011.737.923L41.47 13l.057.186h.193l-.057-.185z",fill:"#8D8D8D"}),c().createElement("path",{d:"M11.378 11.855a.836.836 0 01-.798-.59L9.385 7.361a.835.835 0 01.554-1.042l16.318-4.996a.836.836 0 011.042.554l1.195 3.902a.836.836 0 01-.554 1.043l-16.318 4.995a.831.831 0 01-.244.037z",fill:"#C6C6C6"}),c().createElement("circle",{fill:"#C6C6C6",cx:17.636,cy:2.314,r:1.855}),c().createElement("circle",{fill:"#FFF",fillRule:"nonzero",cx:17.636,cy:2.314,r:1.175}),c().createElement("path",{d:"M55.893 53.995H24.544a.79.79 0 01-.788-.789V15.644a.79.79 0 01.788-.788h31.349a.79.79 0 01.788.788v37.562a.79.79 0 01-.788.789z",fill:"#F4F4F4"}),c().createElement("path",{d:"M41.47 13H21.948a1.579 1.579 0 00-1.576 1.577V52.4l.185-.057V14.577c.001-.768.623-1.39 1.391-1.39h19.581L41.471 13zm17.02 0H21.947a1.579 1.579 0 00-1.576 1.577v42.478c0 .87.706 1.576 1.576 1.577H58.49a1.579 1.579 0 001.576-1.577V14.577a1.579 1.579 0 00-1.576-1.576zm1.39 44.055c0 .768-.622 1.39-1.39 1.392H21.947c-.768-.001-1.39-.624-1.39-1.392V14.577c0-.768.622-1.39 1.39-1.39H58.49c.768 0 1.39.622 1.39 1.39v42.478z",fill:"#8D8D8D"}),c().createElement("path",{d:"M48.751 17.082H31.686a.836.836 0 01-.835-.835v-4.081c0-.46.374-.834.835-.835H48.75c.461 0 .834.374.835.835v4.08c0 .462-.374.835-.835.836z",fill:"#C6C6C6"}),c().createElement("circle",{fill:"#C6C6C6",cx:40.218,cy:9.755,r:1.855}),c().createElement("circle",{fill:"#FFF",fillRule:"nonzero",cx:40.218,cy:9.755,r:1.13})))};const R=function(e){var t=e.headerTitle,r=e.displayText,n="tablet"===(0,o.useLayoutType)();return c().createElement(P.n9,{light:!0,className:M.tile},c().createElement("div",{className:n?M.tabletHeading:M.desktopHeading},c().createElement("h4",null,t)),c().createElement(V,null),c().createElement("p",{className:M.content},r))};function A(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function B(){return B=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},B.apply(this,arguments)}var N=[{key:"name",header:"Form name"},{key:"actions",header:"Actions"}];const I=function(e){var t,r,n=e.rows,a=e.error,o=e.isLoading,i=null==n?void 0:n.map((function(e){return t=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){A(e,t,r[t])}))}return e}({},e),r=null!=(r={actions:c().createElement(O.Link,{to:e.uuid},"Fill Form")})?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r}(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})),t;var t,r}));return o?c().createElement(f.Z,null):a?c().createElement(R,{headerTitle:"Error Loading Data",displayText:'Something went wrong loading data from the server. "'.concat(null==a||null===(t=a.response)||void 0===t?void 0:t.status,": ").concat(null==a||null===(r=a.response)||void 0===r?void 0:r.statusText,'"')}):0===i.length?c().createElement(R,{headerTitle:"No Forms To Show",displayText:"No forms could be found for this category. Please double check the form concept uuids and access permissions."}):c().createElement(d.ZP,{rows:i,headers:N,isSortable:!0},(function(e){var t=e.rows,r=e.headers,n=e.getTableProps,a=e.getHeaderProps,o=e.getRowProps,i=e.onInputChange;return c().createElement(u.Z,null,c().createElement("div",{style:{position:"relative",display:"flex",height:"3rem",justifyContent:"flex-end"}},c().createElement(p.Z,{style:{width:"20%",minWidth:"200px"}},c().createElement(g.Z,null,c().createElement(h.Z,{onChange:i})))),c().createElement(_.Z,B({},n()),c().createElement(y.Z,null,c().createElement(b.Z,null,r.map((function(e){return c().createElement(v.Z,B({},a({header:e})),e.header)})))),c().createElement(w.Z,null,null==t?void 0:t.map((function(e){return c().createElement(b.Z,B({},o({row:e})),e.cells.map((function(e){return c().createElement(E.Z,{key:e.id},e.value)})))})))))}))};function Q(e,t,r,n,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void r(e)}l.done?t(s):Promise.resolve(s).then(n,a)}function U(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var o=e.apply(t,r);function i(e){Q(o,n,a,i,l,"next",e)}function l(e){Q(o,n,a,i,l,"throw",e)}i(void 0)}))}}function W(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function G(){return G=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},G.apply(this,arguments)}function J(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){W(e,t,r[t])}))}return e}var K="(uuid,name,display,encounterType:(uuid,name,viewPrivilege,editPrivilege),version,published,retired,resources:(uuid,name,dataType,valueReference))",Y="/ws/rest/v1/form?v=custom:".concat(K),$="/ws/rest/v1/form?v=custom:".concat(K,"&q=poc");function ee(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=!0,r=t?Y:$,n=(0,m.ZP)([r,e],U(a().mark((function e(){var t,n,i,l,s;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=3,(0,o.openmrsFetch)(r);case 3:return i=e.sent,s=null!==(l=null===(t=i.data)||void 0===t||null===(n=t.results)||void 0===n?void 0:n.filter((function(e){return e.published&&!/component/i.test(e.name)})))&&void 0!==l?l:[],e.abrupt("return",s);case 7:case"end":return e.stop()}}),e)})))),i=n.data,l=n.error;return{forms:i,isLoading:!l&&!i,error:l}}var te=function(){var e,t=(0,o.useConfig)(),r=t.formCategories,n=t.formCategoriesToShow,a=ee(),s=a.forms,m=a.isLoading,f=a.error,d=(e=s)?null==e?void 0:e.map((function(e){return t=J({},e),r=null!=(r={id:e.uuid})?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r}(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})),t;var t,r})):null,u=n.map((function(e){var t=r.find((function(t){return t.name===e})),n=[];if(t&&d&&d.length){var a,o=null===(a=t.forms)||void 0===a?void 0:a.map((function(e){return e.formUUID}));n=d.filter((function(e){return o.includes(e.uuid)}))}return J({},{name:e,rows:n})}));return c().createElement("div",{style:{padding:"2rem"}},c().createElement("h3",{style:{marginBottom:"1.5rem"}},"Forms"),c().createElement(i.Z,{type:"container"},c().createElement(l.Z,{label:"All Forms"},c().createElement(I,G({rows:d},{error:f,isLoading:m}))),null==u?void 0:u.map((function(e){return c().createElement(l.Z,{label:e.name},c().createElement(I,G({rows:e.rows},{error:f,isLoading:m})))}))))};const re=te},8772:(e,t,r)=>{r.d(t,{Z:()=>o});var n=r(3645),a=r.n(n)()((function(e){return e[1]}));a.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{margin:0;padding:0;font:inherit;font-size:100%;vertical-align:baseline;border:0}button,select,input,textarea{font-family:inherit;border-radius:0}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;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}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-fast-data-entry__styles__skeleton___OigVX{0%{transform:scaleX(0);transform-origin:left;opacity:.3}20%{transform:scaleX(1);transform-origin:left;opacity:1}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%{transform:scaleX(0);transform-origin:left;opacity:.3}}.-esm-fast-data-entry__styles__action___ei5aj{margin-bottom:.5rem}.-esm-fast-data-entry__styles__content___7TnbC{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px;color:#525252;margin-top:1rem;margin-bottom:.5rem}.-esm-fast-data-entry__styles__desktopHeading___z4QwX h4{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0;color:#525252}.-esm-fast-data-entry__styles__tabletHeading___XCRdE h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0;color:#525252}.-esm-fast-data-entry__styles__desktopHeading___z4QwX,.-esm-fast-data-entry__styles__tabletHeading___XCRdE{text-align:left;text-transform:capitalize;margin-bottom:1rem}.-esm-fast-data-entry__styles__desktopHeading___z4QwX h4:after,.-esm-fast-data-entry__styles__tabletHeading___XCRdE h4:after{content:\"\";display:block;width:2rem;padding-top:.188rem;border-bottom:.375rem solid var(--brand-03)}.-esm-fast-data-entry__styles__heading___C0rzi:after{content:\"\";display:block;width:2rem;padding-top:.188rem;border-bottom:.375rem solid var(--brand-03)}.-esm-fast-data-entry__styles__tile___szqEV{text-align:center;border:1px solid #e0e0e0}",""]),a.locals={action:"-esm-fast-data-entry__styles__action___ei5aj",content:"-esm-fast-data-entry__styles__content___7TnbC",desktopHeading:"-esm-fast-data-entry__styles__desktopHeading___z4QwX",tabletHeading:"-esm-fast-data-entry__styles__tabletHeading___XCRdE",heading:"-esm-fast-data-entry__styles__heading___C0rzi",tile:"-esm-fast-data-entry__styles__tile___szqEV",skeleton:"-esm-fast-data-entry__styles__skeleton___OigVX"};const o=a}}]);
|
package/dist/947.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_fast_data_entry_app=self.webpackChunk_openmrs_esm_fast_data_entry_app||[]).push([[947],{7947:(e,t,n)=>{n.r(t),n.d(t,{default:()=>_e});var r=n(7114),a=n(7103),i=n(311),o=n(8663),l=n(4211),s=n.n(l),c=n(2221),f=n(5666),u=n.n(f);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function d(e,t,n,r,a,i,o){try{var l=e[i](o),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}const p=function(e){var t,n,r=(t=(0,l.useState)(null),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(e){l=!0,a=e}finally{try{o||null==n.return||n.return()}finally{if(l)throw a}}return i}}(t,n)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(t,n)||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.")}()),a=r[0],o=r[1];(0,l.useEffect)((function(){e?f(e):o(null)}),[e]);var s,c,f=(s=u().mark((function e(t){var n;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,i.fetchCurrentPatient)(t);case 2:n=e.sent,o(null==n?void 0:n.data);case 4:case"end":return e.stop()}}),e)})),c=function(){var e=this,t=arguments;return new Promise((function(n,r){var a=s.apply(e,t);function i(e){d(a,n,r,i,o,"next",e)}function o(e){d(a,n,r,i,o,"throw",e)}i(void 0)}))},function(e){return c.apply(this,arguments)});return a},_=function(e){var t=e.formUuid,n=e.patientUuid,r=e.visitUuid,a=e.visitTypeUuid,o=e.encounterUuid,l=p(n);return s().createElement("div",null,t&&n&&l&&s().createElement(i.ExtensionSlot,{extensionSlotName:"form-widget-slot",state:{view:"form",formUuid:t,visitUuid:null!=r?r:"",visitTypeUuid:null!=a?a:"",patientUuid:n,patient:l,encounterUuid:null!=o?o:"",closeWorkspace:function(){}}}))};var h=n(5697),y=n.n(h),g=n(4184),v=n.n(g),b=n(9033);function E(){return E=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},E.apply(this,arguments)}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var x=b.Z.prefix,I=[.973051493507435,.15334737213558558,.5671034553053769];function S(e,t,n){return Math.floor(I[n%3]*(t-e+1))+e}var k=function(e){var t,n=e.paragraph,r=e.lineCount,a=e.width,i=e.heading,o=e.className,l=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,["paragraph","lineCount","width","heading","className"]),c=v()((w(t={},"".concat(x,"--skeleton__text"),!0),w(t,"".concat(x,"--skeleton__heading"),i),w(t,o,o),t)),f=parseInt(a,10),u=a.includes("px");if(a.includes("%")&&n){for(var m=[],d=0;d<r;d++){var p=S(0,75,d)+"px";m.push(s().createElement("p",E({className:c,style:{width:"calc(".concat(a," - ").concat(p,")")},key:d},l)))}return s().createElement("div",null,m)}if(u&&n){for(var _=[],h=0;h<r;h++){var y=S(f-75,f,h)+"px";_.push(s().createElement("p",E({className:c,style:{width:y},key:h},l)))}return s().createElement("div",null,_)}return s().createElement("p",E({className:c,style:{width:a}},l))};k.propTypes={className:y().string,heading:y().bool,lineCount:y().number,paragraph:y().bool,width:y().string},k.defaultProps={paragraph:!1,width:"100%",heading:!1,lineCount:3};const C=k;var N=function(e){var t=e.children;return s().createElement("div",{style:{padding:"1rem"}},t)};const A=function(e){var t,n,r,a,i,o,l,c=e.patientUuid,f=p(c),u=null==f||null===(t=f.name)||void 0===t||null===(n=t[0])||void 0===n||null===(r=n.given)||void 0===r?void 0:r[0],m=null==f||null===(a=f.name)||void 0===a||null===(i=a[0])||void 0===i?void 0:i.family,d=null==f||null===(o=f.identifier)||void 0===o||null===(l=o[0])||void 0===l?void 0:l.value;return f?s().createElement(N,null,s().createElement("div",{style:{fontWeight:300,fontSize:"0.8rem",lineHeight:"0.9rem"}},d),s().createElement("div",{style:{fontWeight:"bold"}},u," ",m)):s().createElement(N,null,s().createElement(C,{style:{maxWidth:"8rem"}}))};function O(){return O=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},O.apply(this,arguments)}function P(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var j=b.Z.prefix,U=function(e){var t,n=e.className,r=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,["className"]),a=v()((P(t={},"".concat(j,"--skeleton__placeholder"),!0),P(t,n,n),t));return s().createElement("div",O({className:a},r))};U.propTypes={className:y().string};const Z=U;var T=n(3379),z=n.n(T),R=n(7795),M=n.n(R),B=n(569),X=n.n(B),q=n(3565),D=n.n(q),W=n(9216),H=n.n(W),L=n(4589),Q=n.n(L),F=n(8407),G={};G.styleTagTransform=Q(),G.setAttributes=D(),G.insert=X().bind(null,"head"),G.domAPI=M(),G.insertStyleElement=H(),z()(F.Z,G);const V=F.Z&&F.Z.locals?F.Z.locals:void 0;var $,J,K=n(3346),Y=["children"],ee=s().forwardRef((function(e,t){var n=e.children,r=(0,K._)(e,Y);return s().createElement(K.I,(0,K.a)({width:16,height:16,viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",ref:t},r),$||($=s().createElement("path",{d:"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z"})),n)})),te=["children"],ne=s().forwardRef((function(e,t){var n=e.children,r=(0,K._)(e,te);return s().createElement(K.I,(0,K.a)({width:16,height:16,viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",ref:t},r),J||(J=s().createElement("path",{d:"M8 5L13 10 12.3 10.7 8 6.4 3.7 10.7 3 10z"})),n)})),re=n(3397);function ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ie=function(){return s().createElement("div",{className:V.container},s().createElement("div",{className:V.patientInfoContainer},s().createElement(Z,null),s().createElement("div",{className:V.patientInfoContent},s().createElement("div",{className:V.patientInfoRow},s().createElement("span",{className:V.patientName},s().createElement(C,null))),s().createElement("div",{className:V.patientInfoRow},s().createElement("div",{className:V.demographics},s().createElement("span",null,s().createElement(C,null)),s().createElement("span",null,s().createElement(C,null)),s().createElement("span",null,s().createElement(C,null)))),s().createElement("div",{className:V.patientInfoRow},s().createElement("span",{className:V.identifier},s().createElement(C,null))))))};const oe=function(e){var t,n,r,a,c,f,u,m=e.patientUuid,d=p(m),_=(0,re.useTranslation)().t,h=(f=(0,l.useState)(!1),u=2,function(e){if(Array.isArray(e))return e}(f)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(e){l=!0,a=e}finally{try{o||null==n.return||n.return()}finally{if(l)throw a}}return i}}(f,u)||function(e,t){if(e){if("string"==typeof e)return ae(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ae(e,t):void 0}}(f,u)||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.")}()),y=h[0],g=h[1],v="".concat(null===(n=null==d||null===(t=d.name)||void 0===t?void 0:t[0].given)||void 0===n?void 0:n.join(" ")," ").concat(null==d||null===(r=d.name)||void 0===r||null===(a=r[0])||void 0===a?void 0:a.family),b=s().useMemo((function(){return{patientUuid:null==d?void 0:d.id,patientName:v}}),[null==d?void 0:d.id,v]);return d?s().createElement("div",{className:V.container},s().createElement("div",{className:"".concat(y?V.activePatientInfoContainer:V.patientInfoContainer)},s().createElement(i.ExtensionSlot,{extensionSlotName:"patient-photo-slot",state:b}),s().createElement("div",{className:V.patientInfoContent},s().createElement("div",{className:V.patientInfoRow},s().createElement("span",{className:V.patientName},v)),s().createElement("div",{className:V.patientInfoRow},s().createElement("div",{className:V.demographics},s().createElement("span",null,(null!==(c=d.gender)&&void 0!==c?c:_("unknown","Unknown")).replace(/^\w/,(function(e){return e.toUpperCase()}))," ","·"," "),s().createElement("span",null,(0,i.age)(d.birthDate)," · "),s().createElement("span",null,(0,i.formatDate)((0,i.parseDate)(d.birthDate),{mode:"wide",time:!1})))),s().createElement("div",{className:V.patientInfoRow},s().createElement("span",{className:V.identifier},d.identifier.length?d.identifier.map((function(e){return e.value})).join(", "):"--"),s().createElement(o.Z,{kind:"ghost",renderIcon:y?ne:ee,iconDescription:"Toggle contact details",onClick:function(e){return function(e){e.stopPropagation(),g((function(e){return!e}))}(e)},disabled:!0},y?_("showLess","Show less"):_("showAllDetails","Show all details")))))):s().createElement(ie,null)};var le=n(2275),se={};se.styleTagTransform=Q(),se.setAttributes=D(),se.insert=X().bind(null,"head"),se.domAPI=M(),se.insertStyleElement=H(),z()(le.Z,se);const ce=le.Z&&le.Z.locals?le.Z.locals:void 0;function fe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ue(){return ue=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ue.apply(this,arguments)}function me(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(e){l=!0,a=e}finally{try{o||null==n.return||n.return()}finally{if(l)throw a}}return i}}(e,t)||de(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.")}()}function de(e,t){if(e){if("string"==typeof e)return fe(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?fe(e,t):void 0}}var pe=function(e){var t=e.patientUuids,n=e.setPatientUuids,l=e.setActivePatientUuid;return s().createElement("div",{style:{display:"flex",backgroundColor:"white",padding:"2rem 1rem"}},s().createElement("span",{style:{padding:"1rem"}},"Next patient:"),s().createElement("span",{style:{minWidth:"35rem"}},s().createElement(i.ExtensionSlot,{extensionSlotName:"patient-search-bar-slot",state:{selectPatientAction:function(e){var r;n((r=t,function(e){if(Array.isArray(e))return fe(e)}(r)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||de(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat([e])),l(e)},buttonProps:{kind:"primary"}}})),s().createElement("span",{style:{padding:"1rem"}},"or"),s().createElement("span",null,s().createElement(o.Z,{disabled:!0},"Create new patient ",s().createElement(r.RVU,null))),s().createElement("span",{style:{flexGrow:1}}),s().createElement("span",null,s().createElement(o.Z,{kind:"ghost",href:"".concat(window.spaBase,"/forms")},"Cancel ",s().createElement(a.dOq,null))))};const _e=function(){var e=(0,c.useParams)().formUuid,t=me((0,l.useState)([]),2),n=t[0],r=t[1],a=me((0,l.useState)(null),2),f=a[0],u=a[1];return s().createElement("div",null,s().createElement("div",{className:ce.breadcrumbsContainer},s().createElement(i.ExtensionSlot,{extensionSlotName:"breadcrumbs-slot"})),!f&&s().createElement(pe,ue({},{patientUuids:n,setPatientUuids:r,setActivePatientUuid:u})),f&&s().createElement(oe,{patientUuid:f}),s().createElement("div",{style:{display:"flex",justifyContent:"center"}},s().createElement("div",{style:{width:"1100px"}},!n.length&&s().createElement("div",{style:{margin:"2rem",textAlign:"center"}},"Please select a patient first"),!!n.length&&s().createElement("div",{className:ce.formContainer},s().createElement("div",{style:{flexGrow:1}},s().createElement(_,ue({patientUuid:f},{formUuid:e}))),s().createElement("div",{style:{width:"13rem",textAlign:"left"}},s().createElement("h4",null,"Forms filled"),s().createElement("div",{style:{margin:"1rem 0",borderBottom:"1px solid #f4f4f4"}},n.map((function(e){return s().createElement(A,{patientUuid:e,key:e})}))),s().createElement("div",{style:{display:"flex",flexDirection:"column",rowGap:"0.5rem"}},s().createElement(o.Z,{kind:"primary",onClick:function(){return u(null)},style:{width:"100%"}},"Next Patient"),s().createElement(o.Z,{kind:"secondary",disabled:!0,style:{width:"100%"}},"Review & Save"),s().createElement(o.Z,{kind:"tertiary",disabled:!0,style:{width:"100%"}},"Cancel")))))))}},8407:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(3645),a=n.n(r)()((function(e){return e[1]}));a.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{margin:0;padding:0;font:inherit;font-size:100%;vertical-align:baseline;border:0}button,select,input,textarea{font-family:inherit;border-radius:0}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;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}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-fast-data-entry__patient-info__skeleton___SIgE4{0%{transform:scaleX(0);transform-origin:left;opacity:.3}20%{transform:scaleX(1);transform-origin:left;opacity:1}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%{transform:scaleX(0);transform-origin:left;opacity:.3}}.-esm-fast-data-entry__patient-info__container___TUAaR{border-bottom:.0125rem solid #c6c6c6;background-color:#fff;padding:0}.-esm-fast-data-entry__patient-info__patientInfoContainer___A-vPU{padding:0 0 0 1rem;display:flex;align-items:center;min-height:7rem}.-esm-fast-data-entry__patient-info__activePatientInfoContainer___F5QkZ{background-color:#edf5ff;padding:0 0 0 1rem;display:flex;align-items:center;min-height:7rem}.-esm-fast-data-entry__patient-info__patientName___jlZOP{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}.-esm-fast-data-entry__patient-info__patientInfoContent___AdJAM{margin:1rem 0 0 1rem;width:100%}.-esm-fast-data-entry__patient-info__demographics___jDIQX{font-size:1rem;font-weight:400;line-height:1.375;letter-spacing:0;color:#525252;margin-top:.25rem}.-esm-fast-data-entry__patient-info__identifier___g\\+HbB{font-size:1rem;font-weight:400;line-height:1.375;letter-spacing:0;color:#8d8d8d}.-esm-fast-data-entry__patient-info__patientInfoRow___4rtW5{display:flex;justify-content:space-between;align-items:center}.-esm-fast-data-entry__patient-info__patientInfoRow___4rtW5>button{min-height:2rem}.-esm-fast-data-entry__patient-info__patientEditBtn___lP3pm{color:#161616;margin:.5rem}",""]),a.locals={container:"-esm-fast-data-entry__patient-info__container___TUAaR",patientInfoContainer:"-esm-fast-data-entry__patient-info__patientInfoContainer___A-vPU",activePatientInfoContainer:"-esm-fast-data-entry__patient-info__activePatientInfoContainer___F5QkZ",patientName:"-esm-fast-data-entry__patient-info__patientName___jlZOP",patientInfoContent:"-esm-fast-data-entry__patient-info__patientInfoContent___AdJAM",demographics:"-esm-fast-data-entry__patient-info__demographics___jDIQX",identifier:"-esm-fast-data-entry__patient-info__identifier___g+HbB",patientInfoRow:"-esm-fast-data-entry__patient-info__patientInfoRow___4rtW5",patientEditBtn:"-esm-fast-data-entry__patient-info__patientEditBtn___lP3pm",skeleton:"-esm-fast-data-entry__patient-info__skeleton___SIgE4"};const i=a},2275:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(3645),a=n.n(r)()((function(e){return e[1]}));a.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}.-esm-fast-data-entry__styles__breadcrumbsContainer___ToO0y>div>div>nav{background-color:#fff;padding:.5rem;border-bottom:1px solid #f4f4f4}.-esm-fast-data-entry__styles__formContainer___KZsne{display:flex;text-align:center;margin-top:1rem}",""]),a.locals={breadcrumbsContainer:"-esm-fast-data-entry__styles__breadcrumbsContainer___ToO0y",formContainer:"-esm-fast-data-entry__styles__formContainer___KZsne"};const i=a}}]);
|
package/src/FormEntry.tsx
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { ExtensionSlot } from "@openmrs/esm-framework";
|
|
3
|
-
import useGetPatient from "./forms/useGetPatient";
|
|
4
|
-
interface FormParams {
|
|
5
|
-
formUuid: string;
|
|
6
|
-
patientUuid: string;
|
|
7
|
-
visitUuid?: string;
|
|
8
|
-
visitTypeUuid?: string;
|
|
9
|
-
encounterUuid?: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const FormEntry = ({
|
|
13
|
-
formUuid,
|
|
14
|
-
patientUuid,
|
|
15
|
-
visitUuid,
|
|
16
|
-
visitTypeUuid,
|
|
17
|
-
encounterUuid,
|
|
18
|
-
}: FormParams) => {
|
|
19
|
-
const patient = useGetPatient(patientUuid);
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<div>
|
|
23
|
-
{formUuid && patientUuid && patient && (
|
|
24
|
-
<ExtensionSlot
|
|
25
|
-
extensionSlotName="form-widget-slot"
|
|
26
|
-
state={{
|
|
27
|
-
view: "form",
|
|
28
|
-
formUuid,
|
|
29
|
-
visitUuid: visitUuid ?? "",
|
|
30
|
-
visitTypeUuid: visitTypeUuid ?? "",
|
|
31
|
-
patientUuid,
|
|
32
|
-
patient,
|
|
33
|
-
encounterUuid: encounterUuid ?? "",
|
|
34
|
-
closeWorkspace: () => {},
|
|
35
|
-
}}
|
|
36
|
-
/>
|
|
37
|
-
)}
|
|
38
|
-
</div>
|
|
39
|
-
);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export default FormEntry;
|
package/src/Loader.tsx
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import styles from "./loader.scss";
|
|
3
|
-
import { InlineLoading } from "carbon-components-react";
|
|
4
|
-
import { useTranslation } from "react-i18next";
|
|
5
|
-
|
|
6
|
-
const Loader: React.FC = () => {
|
|
7
|
-
const { t } = useTranslation();
|
|
8
|
-
return (
|
|
9
|
-
<InlineLoading
|
|
10
|
-
className={styles.loading}
|
|
11
|
-
description={`${t("loading", "Loading")} ...`}
|
|
12
|
-
/>
|
|
13
|
-
);
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export default Loader;
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { Add20, Close20 } from "@carbon/icons-react";
|
|
2
|
-
import { ExtensionSlot } from "@openmrs/esm-framework";
|
|
3
|
-
import { Button } from "carbon-components-react";
|
|
4
|
-
import React, { useState } from "react";
|
|
5
|
-
import { Link, useParams } from "react-router-dom";
|
|
6
|
-
import FormEntry from "../FormEntry";
|
|
7
|
-
import PatientCard from "./PatientCard";
|
|
8
|
-
import PatientInfo from "./PatientInfo";
|
|
9
|
-
import styles from "./styles.scss";
|
|
10
|
-
|
|
11
|
-
const PatientSearchHeader = ({
|
|
12
|
-
patientUuids,
|
|
13
|
-
setPatientUuids,
|
|
14
|
-
setActivePatientUuid,
|
|
15
|
-
}) => {
|
|
16
|
-
const handleSelectPatient = (uuid) => {
|
|
17
|
-
setPatientUuids([...patientUuids, uuid]), setActivePatientUuid(uuid);
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
return (
|
|
21
|
-
<div
|
|
22
|
-
style={{
|
|
23
|
-
display: "flex",
|
|
24
|
-
backgroundColor: "white",
|
|
25
|
-
padding: "2rem 1rem",
|
|
26
|
-
}}
|
|
27
|
-
>
|
|
28
|
-
<span style={{ padding: "1rem" }}>Next patient:</span>
|
|
29
|
-
<span style={{ minWidth: "35rem" }}>
|
|
30
|
-
<ExtensionSlot
|
|
31
|
-
extensionSlotName="patient-search-bar-slot"
|
|
32
|
-
state={{
|
|
33
|
-
selectPatientAction: handleSelectPatient,
|
|
34
|
-
buttonProps: {
|
|
35
|
-
kind: "primary",
|
|
36
|
-
},
|
|
37
|
-
}}
|
|
38
|
-
/>
|
|
39
|
-
</span>
|
|
40
|
-
<span style={{ padding: "1rem" }}>or</span>
|
|
41
|
-
<span>
|
|
42
|
-
<Button disabled>
|
|
43
|
-
Create new patient <Add20 />
|
|
44
|
-
</Button>
|
|
45
|
-
</span>
|
|
46
|
-
<span style={{ flexGrow: 1 }} />
|
|
47
|
-
<span>
|
|
48
|
-
<Button kind="ghost" href={`${window.spaBase}/forms`}>
|
|
49
|
-
Cancel <Close20 />
|
|
50
|
-
</Button>
|
|
51
|
-
</span>
|
|
52
|
-
</div>
|
|
53
|
-
);
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
interface ParamTypes {
|
|
57
|
-
formUuid: string;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const FormWorkflow = () => {
|
|
61
|
-
const { formUuid } = useParams() as ParamTypes;
|
|
62
|
-
const [patientUuids, setPatientUuids] = useState([]);
|
|
63
|
-
const [activePatientUuid, setActivePatientUuid] = useState(null);
|
|
64
|
-
|
|
65
|
-
return (
|
|
66
|
-
<div>
|
|
67
|
-
<div className={styles.breadcrumbsContainer}>
|
|
68
|
-
<ExtensionSlot extensionSlotName="breadcrumbs-slot" />
|
|
69
|
-
</div>
|
|
70
|
-
{!activePatientUuid && (
|
|
71
|
-
<PatientSearchHeader
|
|
72
|
-
{...{ patientUuids, setPatientUuids, setActivePatientUuid }}
|
|
73
|
-
/>
|
|
74
|
-
)}
|
|
75
|
-
{activePatientUuid && <PatientInfo patientUuid={activePatientUuid} />}
|
|
76
|
-
<div style={{ display: "flex", justifyContent: "center" }}>
|
|
77
|
-
<div style={{ width: "1100px" }}>
|
|
78
|
-
{!patientUuids.length && (
|
|
79
|
-
<div style={{ margin: "2rem", textAlign: "center" }}>
|
|
80
|
-
Please select a patient first
|
|
81
|
-
</div>
|
|
82
|
-
)}
|
|
83
|
-
{!!patientUuids.length && (
|
|
84
|
-
<div className={styles.formContainer}>
|
|
85
|
-
<div style={{ flexGrow: 1 }}>
|
|
86
|
-
<FormEntry
|
|
87
|
-
patientUuid={activePatientUuid}
|
|
88
|
-
{...{
|
|
89
|
-
formUuid,
|
|
90
|
-
}}
|
|
91
|
-
/>
|
|
92
|
-
</div>
|
|
93
|
-
<div style={{ width: "13rem", textAlign: "left" }}>
|
|
94
|
-
<h4>Forms filled</h4>
|
|
95
|
-
<div
|
|
96
|
-
style={{
|
|
97
|
-
margin: "1rem 0",
|
|
98
|
-
borderBottom: "1px solid #f4f4f4",
|
|
99
|
-
}}
|
|
100
|
-
>
|
|
101
|
-
{patientUuids.map((patientUuid) => (
|
|
102
|
-
<PatientCard patientUuid={patientUuid} key={patientUuid} />
|
|
103
|
-
))}
|
|
104
|
-
</div>
|
|
105
|
-
<div
|
|
106
|
-
style={{
|
|
107
|
-
display: "flex",
|
|
108
|
-
flexDirection: "column",
|
|
109
|
-
rowGap: "0.5rem",
|
|
110
|
-
}}
|
|
111
|
-
>
|
|
112
|
-
<Button
|
|
113
|
-
kind="primary"
|
|
114
|
-
onClick={() => setActivePatientUuid(null)}
|
|
115
|
-
style={{ width: "100%" }}
|
|
116
|
-
>
|
|
117
|
-
Next Patient
|
|
118
|
-
</Button>
|
|
119
|
-
<Button kind="secondary" disabled style={{ width: "100%" }}>
|
|
120
|
-
Review & Save
|
|
121
|
-
</Button>
|
|
122
|
-
<Button kind="tertiary" disabled style={{ width: "100%" }}>
|
|
123
|
-
Cancel
|
|
124
|
-
</Button>
|
|
125
|
-
</div>
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
128
|
-
)}
|
|
129
|
-
</div>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
|
-
);
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
export default FormWorkflow;
|
package/src/forms/FormsRoot.tsx
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { openmrsFetch, useConfig } from "@openmrs/esm-framework";
|
|
2
|
-
import { Tab, Tabs } from "carbon-components-react";
|
|
3
|
-
import React from "react";
|
|
4
|
-
import useSWR from "swr";
|
|
5
|
-
import { Config } from "../config-schema";
|
|
6
|
-
import FormsTable from "./FormsTable";
|
|
7
|
-
|
|
8
|
-
export const customFormRepresentation =
|
|
9
|
-
"(uuid,name,display,encounterType:(uuid,name,viewPrivilege,editPrivilege),version,published,retired,resources:(uuid,name,dataType,valueReference))";
|
|
10
|
-
|
|
11
|
-
export const formEncounterUrl = `/ws/rest/v1/form?v=custom:${customFormRepresentation}`;
|
|
12
|
-
export const formEncounterUrlPoc = `/ws/rest/v1/form?v=custom:${customFormRepresentation}&q=poc`;
|
|
13
|
-
|
|
14
|
-
export function useFormEncounters(cachedOfflineFormsOnly = false) {
|
|
15
|
-
const showHtmlFormEntryForms = true;
|
|
16
|
-
const url = showHtmlFormEntryForms ? formEncounterUrl : formEncounterUrlPoc;
|
|
17
|
-
const { data, error } = useSWR([url, cachedOfflineFormsOnly], async () => {
|
|
18
|
-
const res = await openmrsFetch(url);
|
|
19
|
-
// show published forms and hide component forms
|
|
20
|
-
const forms =
|
|
21
|
-
res.data?.results?.filter(
|
|
22
|
-
(form) => form.published && !/component/i.test(form.name)
|
|
23
|
-
) ?? [];
|
|
24
|
-
|
|
25
|
-
return forms;
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
return {
|
|
29
|
-
forms: data,
|
|
30
|
-
isLoading: !error && !data,
|
|
31
|
-
error,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const cleanForms = (rawFormData) => {
|
|
36
|
-
if (rawFormData) {
|
|
37
|
-
return rawFormData?.map((form) => ({
|
|
38
|
-
...form,
|
|
39
|
-
id: form.uuid,
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
return null;
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const FormsRoot = () => {
|
|
46
|
-
const config = useConfig() as Config;
|
|
47
|
-
const { formCategories, formCategoriesToShow } = config;
|
|
48
|
-
const { forms, isLoading, error } = useFormEncounters();
|
|
49
|
-
const cleanRows = cleanForms(forms);
|
|
50
|
-
|
|
51
|
-
const categoryRows = formCategoriesToShow.map((name) => {
|
|
52
|
-
const category = formCategories.find((category) => category.name === name);
|
|
53
|
-
let rows = [];
|
|
54
|
-
if (category && cleanRows && cleanRows.length) {
|
|
55
|
-
const uuids = category.forms?.map((form) => form.formUUID);
|
|
56
|
-
rows = cleanRows.filter((row) => uuids.includes(row.uuid));
|
|
57
|
-
}
|
|
58
|
-
return { ...{ name, rows } };
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
return (
|
|
62
|
-
<div style={{ padding: "2rem" }}>
|
|
63
|
-
<h3 style={{ marginBottom: "1.5rem" }}>Forms</h3>
|
|
64
|
-
<Tabs type="container">
|
|
65
|
-
<Tab label="All Forms">
|
|
66
|
-
<FormsTable rows={cleanRows} {...{ error, isLoading }} />
|
|
67
|
-
</Tab>
|
|
68
|
-
{categoryRows?.map((category) => (
|
|
69
|
-
<Tab label={category.name}>
|
|
70
|
-
<FormsTable rows={category.rows} {...{ error, isLoading }} />
|
|
71
|
-
</Tab>
|
|
72
|
-
))}
|
|
73
|
-
</Tabs>
|
|
74
|
-
</div>
|
|
75
|
-
);
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
export default FormsRoot;
|
|
79
|
-
export { FormsRoot };
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { SkeletonText } from "carbon-components-react";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import useGetPatient from "./useGetPatient";
|
|
4
|
-
|
|
5
|
-
const CardContainer = ({ children }) => {
|
|
6
|
-
return <div style={{ padding: "1rem" }}>{children}</div>;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
const PatientCard = ({ patientUuid }) => {
|
|
10
|
-
const patient = useGetPatient(patientUuid);
|
|
11
|
-
const givenName = patient?.name?.[0]?.given?.[0];
|
|
12
|
-
const familyName = patient?.name?.[0]?.family;
|
|
13
|
-
const identifier = patient?.identifier?.[0]?.value;
|
|
14
|
-
|
|
15
|
-
if (!patient) {
|
|
16
|
-
return (
|
|
17
|
-
<CardContainer>
|
|
18
|
-
<SkeletonText style={{ maxWidth: "8rem" }} />
|
|
19
|
-
</CardContainer>
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<CardContainer>
|
|
25
|
-
<div
|
|
26
|
-
style={{ fontWeight: 300, fontSize: "0.8rem", lineHeight: "0.9rem" }}
|
|
27
|
-
>
|
|
28
|
-
{identifier}
|
|
29
|
-
</div>
|
|
30
|
-
<div style={{ fontWeight: "bold" }}>
|
|
31
|
-
{givenName} {familyName}
|
|
32
|
-
</div>
|
|
33
|
-
</CardContainer>
|
|
34
|
-
);
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export default PatientCard;
|
package/src/forms/mockData.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
const rows = [
|
|
2
|
-
{
|
|
3
|
-
id: "admission-form",
|
|
4
|
-
name: "Admission form",
|
|
5
|
-
},
|
|
6
|
-
{
|
|
7
|
-
id: "dass-form",
|
|
8
|
-
name: "DASS 21",
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
id: "follow-up-form",
|
|
12
|
-
name: "Follow-up form",
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
id: "closure-form",
|
|
16
|
-
name: "Closure form",
|
|
17
|
-
},
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
export const tableData = { ...{ rows } };
|
package/src/forms/styles.scss
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
@import "~@openmrs/esm-styleguide/src/vars";
|
|
2
|
-
|
|
3
|
-
.breadcrumbsContainer > div > div > nav {
|
|
4
|
-
background-color: white;
|
|
5
|
-
padding: 0.5rem;
|
|
6
|
-
border-bottom: 1px solid $openmrs-background-grey;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.formContainer {
|
|
10
|
-
display: flex;
|
|
11
|
-
text-align: center;
|
|
12
|
-
margin-top: 1rem;
|
|
13
|
-
}
|
package/src/loader.scss
DELETED