@medplum/react 0.9.36 → 0.9.38

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,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@medplum/core"),require("react"),require("react-router-dom")):"function"==typeof define&&define.amd?define(["exports","@medplum/core","react","react-router-dom"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).medplum=e.medplum||{},e.medplum.ui={}),e.medplum.core,e.React,e.ReactRouterDOM)}(this,(function(e,t,n,a){"use strict";function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=l(n);function u(e){const n=e.value;return n?r.default.createElement(r.default.Fragment,null,t.formatAddress(n)):null}function o(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return function(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=e.indexOf(".");if(n>=0&&e.substring(n+1)===t)return!0;const a=t.indexOf(".");if(a>=0&&t.substring(a+1)===e)return!0;return!1}(null===(n=e.expression)||void 0===n?void 0:n[0],t)}))}function i(e){const t=o(e.outcome,e.name),n=t&&t.length>0;return r.default.createElement("input",{id:e.name,name:e.name,type:c(e.type),size:e.size,step:e.step,className:"medplum-input",style:e.style,defaultValue:e.defaultValue||"",required:e.required,autoCapitalize:e.autoCapitalize,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,disabled:e.disabled,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function c(e){return e||"text"}function d(e){return r.default.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function s(e){const t=o(e.outcome,e.name),n=t&&t.length>0;return r.default.createElement("select",{id:e.name,name:e.name,className:"medplum-select",defaultValue:e.defaultValue||"",required:e.required,autoFocus:e.autoFocus,ref:e.inputRef,style:e.style,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"","data-testid":e.testid,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}},e.children)}function m(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function f(e,t,n){const a=e.line||[];for(;a.length<=t;)a.push("");return a[t]=n,Object.assign(Object.assign({},e),{line:a})}function p(e){const[t,a]=n.useState(e.defaultValue||{}),l=n.useRef();function u(t){a(t),e.onChange&&e.onChange(t)}return l.current=t,r.default.createElement(d,null,r.default.createElement(s,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){u(Object.assign(Object.assign({},l.current),{use:e}))}},r.default.createElement("option",null),r.default.createElement("option",null,"home"),r.default.createElement("option",null,"mobile"),r.default.createElement("option",null,"old"),r.default.createElement("option",null,"temp"),r.default.createElement("option",null,"work")),r.default.createElement(s,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){u(Object.assign(Object.assign({},l.current),{type:e}))}},r.default.createElement("option",null),r.default.createElement("option",null,"postal"),r.default.createElement("option",null,"physical"),r.default.createElement("option",null,"both")),r.default.createElement(i,{placeholder:"Line 1",defaultValue:m(t,0),onChange:function(e){u(f(l.current||{},0,e))}}),r.default.createElement(i,{placeholder:"Line 2",defaultValue:m(t,1),onChange:function(e){u(f(l.current||{},1,e))}}),r.default.createElement(i,{placeholder:"City",defaultValue:t.city,onChange:function(e){u(Object.assign(Object.assign({},l.current),{city:e}))}}),r.default.createElement(i,{placeholder:"State",defaultValue:t.state,onChange:function(e){u(Object.assign(Object.assign({},l.current),{state:e}))}}),r.default.createElement(i,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){u(Object.assign(Object.assign({},l.current),{postalCode:e}))}}))}function h(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?r.default.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&r.default.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:a,alt:null==t?void 0:t.title}),(null==n?void 0:n.startsWith("video/"))&&r.default.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},r.default.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&r.default.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},r.default.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),r.default.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},r.default.createElement("a",{href:null==t?void 0:t.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},(null==t?void 0:t.title)||"Download"))):null}function v(e){return r.default.createElement("div",null,e.values&&e.values.map(((t,n)=>r.default.createElement("div",{key:"attatchment-"+n},r.default.createElement(h,{value:t,maxWidth:e.maxWidth})))))}function g(e){const t="medplum-button"+(e.primary||"submit"===e.type?" medplum-button-primary":"")+(e.danger?" medplum-button-danger":"")+(e.borderless?" medplum-button-borderless":"")+(e.size?" medplum-button-"+e.size:"");return r.default.createElement("button",{type:e.type||"button",className:t,style:e.style,onClick:e.onClick,"aria-label":e.label,"data-testid":e.testid},e.children)}const E=n.createContext(void 0);function y(){return n.useContext(E)}function b(){return y().medplum}function C(){return y().profile}function T(e){e.preventDefault(),e.stopPropagation()}function S(e){if(k(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&k(t[0]))return!0}return!1}function k(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function O(e){const t=b(),a=n.useRef(null);function l(n){if(!n)return;if(!n.name)return;const a=n.name,l=n.type||"application/octet-stream";t.createBinary(n,a,l).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:a})})).catch((e=>{var t,n,a;alert(null===(a=null===(n=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0])||void 0===n?void 0:n.details)||void 0===a?void 0:a.text)}))}return r.default.createElement(r.default.Fragment,null,r.default.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:a,onChange:e=>function(e){T(e);const t=e.target.files;t&&Array.from(t).forEach(l)}(e)}),r.default.createElement(g,{testid:"upload-button",onClick:e=>{var t;T(e),null===(t=a.current)||void 0===t||t.click()}},e.children||"Upload..."))}function w(e){var t;const[a,l]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:[]),u=n.useRef();function o(t){l(t),e.onChange&&e.onChange(t)}return u.current=a,r.default.createElement("table",{style:{width:"100%"}},r.default.createElement("colgroup",null,r.default.createElement("col",{width:"90%"}),r.default.createElement("col",{width:"10%"})),r.default.createElement("tbody",null,a.map(((e,t)=>r.default.createElement("tr",{key:`${t}-${a.length}`},r.default.createElement("td",null,r.default.createElement(h,{value:e,maxWidth:200})),r.default.createElement("td",{className:"medplum-right"},r.default.createElement(g,{onClick:e=>{T(e);const n=a.slice();n.splice(t,1),o(n)}},"Remove"))))),r.default.createElement("tr",null,r.default.createElement("td",null),r.default.createElement("td",{className:"medplum-right"},r.default.createElement(O,{onUpload:e=>{o([...u.current,e])}})))))}function N(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return t?r.default.createElement(r.default.Fragment,null,r.default.createElement(h,{value:t,maxWidth:200}),r.default.createElement(g,{onClick:e=>{T(e),l(void 0)}},"Remove")):r.default.createElement(O,{onUpload:l})}function x(e){return r.default.createElement("main",{className:"medplum-document"},r.default.createElement("article",{style:{maxWidth:e.width}},e.children))}function j(e,t,n,a){return new(n||(n=Promise))((function(l,r){function u(e){try{i(a.next(e))}catch(e){r(e)}}function o(e){try{i(a.throw(e))}catch(e){r(e)}}function i(e){var t;e.done?l(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(u,o)}i((a=a.apply(e,t||[])).next())}))}function P(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?R(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&D(t,n);return t}function R(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function D(e,t){e[t.name]=t.value}function V(e){return r.default.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=P(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function I(e){const t=o(e.outcome,e.htmlFor),n=t&&t.length>0;return r.default.createElement("fieldset",{className:"medplum-form-section"},e.title&&r.default.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&r.default.createElement("p",null,e.description),e.children,n&&r.default.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return r.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))))}function A(e){return r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},r.default.createElement("title",null,"Medplum Logo"),r.default.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),r.default.createElement("path",{fill:e.fill||"#654b87",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),r.default.createElement("path",{fill:e.fill||"#463068",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),r.default.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),r.default.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function F(e){const t=b(),[a,l]=n.useState();return r.default.createElement(V,{style:{maxWidth:400},onSubmit:n=>j(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){l(e)}}))},r.default.createElement("div",{className:"medplum-center"},r.default.createElement(A,{size:32}),r.default.createElement("h1",null,"Create project")),r.default.createElement(I,{title:"Project Name",htmlFor:"projectName",outcome:a},r.default.createElement(i,{name:"projectName",type:"text",testid:"projectName",placeholder:"My Project",required:!0,outcome:a})),r.default.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",r.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",r.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),r.default.createElement("div",{className:"medplum-signin-buttons"},r.default.createElement("div",null),r.default.createElement("div",null,r.default.createElement(g,{type:"submit",testid:"submit"},"Create project"))))}function L(e,t){const n=document.getElementsByTagName("head")[0],a=document.createElement("script");a.async=!0,a.src=e,a.onload=t||null,n.appendChild(a)}function M(e){const t=b(),{googleClientId:a,handleGoogleCredential:l}=e,u=n.useRef(null),[o,i]=n.useState("undefined"!=typeof google),[c,d]=n.useState(!1),[s,m]=n.useState(!1);return n.useEffect((()=>{"undefined"!=typeof google?(c||(google.accounts.id.initialize({client_id:a,callback:l}),d(!0)),u.current&&!s&&(google.accounts.id.renderButton(u.current,{}),m(!0))):L("https://accounts.google.com/gsi/client",(()=>i(!0)))}),[t,a,c,o,u,s,l]),a?r.default.createElement("div",{ref:u}):null}function q(e){var t,n;if(e)return e;const a=window.location.protocol+"//"+window.location.host;return(null!==(n=null===(t="http://localhost:3000,http://127.0.0.1:3000,http://localhost:6006,http://127.0.0.1:6006,https://app.medplum.com,https://docs.medplum.com,https://storybook.medplum.com,https://graphiql.medplum.com,https://www.medplum.com")?void 0:t.split(","))&&void 0!==n?n:[]).includes(a)?"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com":void 0}function $(e){"undefined"==typeof grecaptcha&&L("https://www.google.com/recaptcha/api.js?render="+e)}function _(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>j(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function U(e){const t=q(e.googleClientId),a=e.recaptchaSiteKey,l=b(),[u,c]=n.useState(),d=o(u,void 0);return n.useEffect((()=>$(a)),[a]),r.default.createElement(V,{style:{maxWidth:400},onSubmit:t=>j(this,void 0,void 0,(function*(){try{const n=yield _(a);e.handleAuthResponse(yield l.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:a,recaptchaToken:n}))}catch(e){c(e)}}))},r.default.createElement("div",{className:"medplum-center"},e.children),d&&r.default.createElement("div",{className:"medplum-input-error"},d.map((e=>{var t,n;return r.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),t&&r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"medplum-signin-google-container"},r.default.createElement(M,{googleClientId:t,handleGoogleCredential:t=>j(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield l.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){c(e)}}))})),r.default.createElement("div",{className:"medplum-signin-separator"},"or")),r.default.createElement(I,{title:"First Name",htmlFor:"firstName",outcome:u},r.default.createElement(i,{name:"firstName",type:"text",testid:"firstName",placeholder:"First name",required:!0,autoFocus:!0,outcome:u})),r.default.createElement(I,{title:"Last Name",htmlFor:"lastName",outcome:u},r.default.createElement(i,{name:"lastName",type:"text",testid:"lastName",placeholder:"Last name",required:!0,outcome:u})),r.default.createElement(I,{title:"Email",htmlFor:"email",outcome:u},r.default.createElement(i,{name:"email",type:"email",testid:"email",placeholder:"name@domain.com",required:!0,outcome:u})),r.default.createElement(I,{title:"Password",htmlFor:"password",outcome:u},r.default.createElement(i,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:u})),r.default.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",r.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",r.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),r.default.createElement("p",{style:{fontSize:"12px",color:"#888"}},"This site is protected by reCAPTCHA and the Google"," ",r.default.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",r.default.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply."),r.default.createElement("div",{className:"medplum-signin-buttons"},r.default.createElement("div",null,r.default.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),r.default.createElement("label",{htmlFor:"remember"},"Remember me")),r.default.createElement("div",null,r.default.createElement(g,{type:"submit",testid:"submit"},"Create account"))))}function Q(e){const t=a.useNavigate();let n=function(e){if(e){if("string"==typeof e)return function(e){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/"))return e;return"/"+e}(e);if("resourceType"in e)return function(e){return`/${e.resourceType}/${e.id}`}(e);if("reference"in e)return function(e){return`/${e.reference}`}(e)}return"#"}(e.to);return e.suffix&&(n+="/"+e.suffix),r.default.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{T(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function H(e){const t=b(),a=q(e.googleClientId),[l,u]=n.useState(),c=o(l,void 0);function d(){return j(this,void 0,void 0,(function*(){e.generatePkce&&(yield t.startPkce())}))}return r.default.createElement(V,{style:{maxWidth:400},onSubmit:n=>{d().then((()=>t.startLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,email:n.email,password:n.password,remember:"true"===n.remember}))).then(e.handleAuthResponse).catch(u)}},r.default.createElement("div",{className:"medplum-center"},e.children),c&&r.default.createElement("div",{className:"medplum-input-error"},c.map((e=>{var t,n;return r.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),a&&r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"medplum-signin-google-container"},r.default.createElement(M,{googleClientId:a,handleGoogleCredential:n=>{d().then((()=>t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,googleClientId:n.clientId,googleCredential:n.credential}))).then(e.handleAuthResponse).catch(u)}})),r.default.createElement("div",{className:"medplum-signin-separator"},"or")),r.default.createElement(I,{title:"Email",htmlFor:"email",outcome:l},r.default.createElement(i,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:l})),r.default.createElement(I,{title:"Password",htmlFor:"password",outcome:l},r.default.createElement(i,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:l})),r.default.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&r.default.createElement("div",null,e.onForgotPassword&&r.default.createElement(Q,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&r.default.createElement(Q,{testid:"register",onClick:e.onRegister},"Register")),r.default.createElement("div",null,r.default.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),r.default.createElement("label",{htmlFor:"remember"},"Remember me")),r.default.createElement("div",null,r.default.createElement(g,{type:"submit",testid:"submit"},"Sign in"))))}const z={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function B(e){const t=b(),[a,l]=n.useState(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?z:e.getCachedReference(t);return}(t,e));return n.useEffect((()=>{let n=!0;return!a&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{n&&l(e)})).catch((()=>l(void 0))),()=>n=!1}),[t,a,e]),a}function K(e){var n,a;const l=B(e.value),u=e.size?"medplum-avatar "+e.size:"medplum-avatar",o=l?t.getDisplayString(l):null!==(n=e.alt)&&void 0!==n?n:"",i=o&&function(e){return e.split(" ").map((e=>e[0])).join("")}(o),c=null!==(a=l&&t.getImageSrc(l))&&void 0!==a?a:e.src,d=c?r.default.createElement("img",{src:c,alt:o}):i;return r.default.createElement("div",{className:u,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&l?r.default.createElement(Q,{to:l},d):d)}function W(e){const t=b();return r.default.createElement("div",null,r.default.createElement("div",{className:"medplum-center"},r.default.createElement(A,{size:32}),r.default.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,u;return r.default.createElement("div",{className:"medplum-nav-menu-profile",key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse).catch(console.log)}},r.default.createElement("div",{className:"medplum-nav-menu-profile-icon"},r.default.createElement(K,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),r.default.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,r.default.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(u=n.project)||void 0===u?void 0:u.display)))})))}function G(e){var t,a;const l=n.useRef(null),[u,o]=n.useState(!1),[i,c]=n.useState(void 0),[d,s]=n.useState(),[m,f]=n.useState(!1),[p,h]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[v,g]=n.useState([]),[E,y]=n.useState(-1),[b,C]=n.useState(),[S,k]=n.useState(),O=n.useRef();O.current=i;const w=n.useRef();w.current=d;const N=n.useRef();N.current=b;const x=n.useRef();function j(t){h(t),e.onChange&&e.onChange(t)}function P(t){l.current.value="";const n=e.multiple?[...p,t]:[t];o(!0),f(!1),c(""),g([]),y(-1),j(n)}function R(){var e;null===(e=l.current)||void 0===e||e.focus()}function D(){A(),o(!1),window.setTimeout((()=>{f(!1)}),200)}function V(){N.current&&(N.current.abort(),C(void 0)),void 0!==w.current&&window.clearTimeout(w.current);const t=window.setTimeout((()=>function(){var t,n;s(void 0);const a=(null===(n=null===(t=l.current)||void 0===t?void 0:t.value)||void 0===n?void 0:n.trim())||"";if(a===O.current)return;c(a);const r=new AbortController;C(r),e.loadOptions(a,r.signal).then((e=>{r.signal.aborted||(f(e.length>0),g(e),C(void 0),x.current&&(P(e[0]),k(!1)))})).catch(console.log)}()),100);s(t)}function I(e){switch(e.key){case"Enter":case"Tab":!function(e){var t;w.current||N.current||!A()?k(!0):(T(e),null===(t=l.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":F(-1),T(e);break;case"ArrowDown":F(1),T(e);break;case"Backspace":!function(e){var t;if(null===(t=l.current)||void 0===t?void 0:t.value)return;p.length>0&&(T(e),j(p.slice(0,p.length-1)))}(e);break;case",":case";":!function(e){var t;A(),T(e),null===(t=l.current)||void 0===t||t.focus()}(e)}}function A(){var t;let n;return E>=0&&E<v.length?n=v[E]:-1===E&&v.length>0?n=v[0]:e.buildUnstructured&&(null===(t=l.current)||void 0===t?void 0:t.value)&&(n=e.buildUnstructured(l.current.value)),!!n&&(P(n),!0)}function F(e){let t=E+e;t<0?t=0:t>=v.length&&(t=v.length-1),y(t)}x.current=S,n.useEffect((()=>()=>{N.current&&N.current.abort()}),[]),n.useEffect((()=>{var t;h(null!==(t=e.defaultValue)&&void 0!==t?t:[])}),[e.defaultValue]);const L=null!==(a=e.className)&&void 0!==a?a:"medplum-autocomplete-container";return r.default.createElement("div",{"data-testid":"autocomplete",className:L+(u?" focused":""),onClick:()=>R()},r.default.createElement("ul",{onClick:()=>R()},p.map((t=>r.default.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),r.default.createElement("li",{className:"medplum-autocomplete-item"},r.default.createElement("input",{type:"text",autoFocus:e.autofocus,placeholder:0===p.length?e.placeholder:void 0,autoComplete:"off",autoCapitalize:"off",spellCheck:"true",onFocus:()=>(o(!0),void(e.loadOnFocus&&V())),onBlur:()=>D(),onChange:()=>V(),onInput:()=>V(),onKeyDown:e=>I(e),ref:l,"data-testid":"input-element"}))),m&&r.default.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},v.map(((t,n)=>r.default.createElement("div",{key:e.getId(t),className:n===E?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){y(t)}(0,n),onClick:e=>function(e,t){T(e),P(t)}(e,t)},e.getIcon&&r.default.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),r.default.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&r.default.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&r.default.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},r.default.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function Y(e){return r.default.createElement("div",{className:"medplum-checkbox-form-section"},r.default.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),r.default.createElement("div",{className:"medplum-checkbox-form-section-details-container"},r.default.createElement("label",{htmlFor:e.htmlFor},e.title),r.default.createElement("p",null,e.description)))}const J=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function X(e,n,a,l,r){const u=l.type;if(u.length>1)for(const a of u){const l=n.replace("[x]",t.capitalize(a.code));l in e&&delete e[l]}return e[a]=r,e}function Z(e){return r.default.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function ee(e){return r.default.createElement(r.default.Fragment,null,r.default.createElement("dt",null,e.term),r.default.createElement("dd",null,e.children))}function te(e){const n=e.value,a=n.value;if(!a)return null;const l=n.type,u=t.globalSchema.types[l];return u?"object"==typeof a&&"name"in a&&1===Object.keys(a).length?r.default.createElement("div",null,a.name):r.default.createElement(Z,{compact:e.compact},Object.entries(u.properties).map((a=>{const l=a[0];if(J.indexOf(l)>=0)return null;const u=a[1],[o,i]=ve(n,l);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:r.default.createElement(ee,{key:l,term:t.getPropertyDisplayName(l)},r.default.createElement(he,{property:u,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):r.default.createElement("div",null,l," not implemented")}function ne(e){var t,n;return r.default.createElement(r.default.Fragment,null,(null===(t=e.value)||void 0===t?void 0:t.display)||(null===(n=e.value)||void 0===n?void 0:n.code))}function ae(e){const t=e.value;return t?t.text?r.default.createElement(r.default.Fragment,null,t.text):t.coding?r.default.createElement(r.default.Fragment,null,t.coding.map(((e,t)=>r.default.createElement(r.default.Fragment,{key:"coding-"+t},t>0&&r.default.createElement(r.default.Fragment,null,", "),r.default.createElement(ne,{value:e}))))):null:null}function le(e){const t=e.value;if(!t)return null;const n=[];return t.value&&n.push(t.value),(t.use||t.system)&&(n.push(" ["),t.use&&n.push(t.use),t.use&&t.system&&n.push(" "),t.system&&n.push(t.system),n.push("]")),r.default.createElement(r.default.Fragment,null,n.join("").trim())}function re(e){var t;const n=e.value;return n?r.default.createElement(r.default.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>r.default.createElement(le,{key:"telecom-"+t,value:e})))):null}function ue(e){const n=e.value;return n?r.default.createElement(r.default.Fragment,null,t.formatHumanName(n,e.options)):null}function oe(e){var t,n;return r.default.createElement("div",null,null===(t=e.value)||void 0===t?void 0:t.system,": ",null===(n=e.value)||void 0===n?void 0:n.value)}function ie(e){return r.default.createElement(r.default.Fragment,null,ce(e.value))}function ce(e){if(!e)return"";const t=[];return e.comparator&&(t.push(e.comparator),t.push(" ")),void 0!==e.value&&t.push(e.value),e.unit&&("%"!==e.unit&&t.push(" "),t.push(e.unit)),t.join("")}function de(e){return r.default.createElement(r.default.Fragment,null,se(e.value))}function se(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${ce(e.low)}`:!e.low&&e.high?`<= ${ce(e.high)}`:`${ce(e.low)} - ${ce(e.high)}`:""}function me(e){const t=e.value;return t?r.default.createElement(r.default.Fragment,null,r.default.createElement(ie,{value:t.numerator})," / ",r.default.createElement(ie,{value:t.denominator})):null}function fe(e){if(!e.value)return null;const n=e.value.display||e.value.reference||t.stringify(e.value);return!1!==e.link&&e.value.reference?r.default.createElement(Q,{to:e.value},n):r.default.createElement(r.default.Fragment,null,n)}function pe(e){var t,n,a;const l=e.property,u=null!==(t=e.values)&&void 0!==t?t:[],o=null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code;return r.default.createElement(r.default.Fragment,null,u.map(((t,n)=>r.default.createElement("div",{key:`${n}-${u.length}`},r.default.createElement(he,{arrayElement:!0,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function he(e){var n;const{property:a,propertyType:l,value:o}=e;if("*"===(null==a?void 0:a.max)&&!e.arrayElement)return"Attachment"===l?r.default.createElement(v,{values:o,maxWidth:e.maxWidth}):r.default.createElement(pe,{property:a,values:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(l){case t.PropertyType.boolean:return r.default.createElement("div",null,void 0===o?"":Boolean(o).toString());case t.PropertyType.SystemString:case t.PropertyType.code:case t.PropertyType.date:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.string:case t.PropertyType.unsignedInt:case t.PropertyType.uri:case t.PropertyType.url:return r.default.createElement("div",null,o);case t.PropertyType.canonical:return r.default.createElement(fe,{value:{reference:o},link:e.link});case t.PropertyType.dateTime:case t.PropertyType.instant:return r.default.createElement("div",null,t.formatDateTime(o));case t.PropertyType.markdown:return r.default.createElement("pre",null,o);case t.PropertyType.Address:return r.default.createElement(u,{value:o});case t.PropertyType.Annotation:return r.default.createElement("div",null,null==o?void 0:o.text);case t.PropertyType.Attachment:return r.default.createElement(h,{value:o,maxWidth:e.maxWidth});case t.PropertyType.CodeableConcept:return r.default.createElement(ae,{value:o});case t.PropertyType.Coding:return r.default.createElement(ne,{value:o});case t.PropertyType.ContactDetail:return r.default.createElement(re,{value:o});case t.PropertyType.ContactPoint:return r.default.createElement(le,{value:o});case t.PropertyType.HumanName:return r.default.createElement(ue,{value:o});case t.PropertyType.Identifier:return r.default.createElement(oe,{value:o});case t.PropertyType.Period:return r.default.createElement("div",null,t.formatPeriod(o));case t.PropertyType.Quantity:return r.default.createElement(ie,{value:o});case t.PropertyType.Range:return r.default.createElement(de,{value:o});case t.PropertyType.Ratio:return r.default.createElement(me,{value:o});case t.PropertyType.Reference:return r.default.createElement(fe,{value:o,link:e.link});case t.PropertyType.Timing:return r.default.createElement("div",null,t.formatTiming(o));default:if(!(null==a?void 0:a.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return r.default.createElement(te,{value:{type:t.buildTypeName(null===(n=null==a?void 0:a.path)||void 0===n?void 0:n.split(".")),value:o},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function ve(e,n){const a=t.getTypedPropertyValue(e,n);return a?Array.isArray(a)?[a.map((e=>e.value)),a[0].type]:[a.value,a.type]:[void 0,"undefined"]}function ge(e){const a=C(),[l,u]=n.useState(e.defaultValue||{});return n.useRef().current=l,r.default.createElement(i,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:l.text,onChange:function(n){const l=n?{text:n,authorReference:a&&t.createReference(a),time:(new Date).toISOString()}:{};u(l),e.onChange&&e.onChange(l)}})}function Ee(e){return r.default.createElement("input",{id:e.name,name:e.name,className:"medplum-checkbox",type:"checkbox",value:"true",defaultChecked:!!e.defaultValue,required:e.required,ref:e.inputRef,"data-testid":e.testid,disabled:e.disabled,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}})}function ye(e){const t=b();let n;return e.defaultValue&&(n=[e.defaultValue]),r.default.createElement(G,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map(be)))},buildUnstructured:Ce,getId:Te,getDisplay:Se,name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function be(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function Ce(e){return{text:e}}function Te(e){return e.coding&&e.coding.length>0?e.coding[0].code:t.stringify(e)}function Se(e){var t,n,a,l,u,o;const i=null!==(o=null!==(a=null===(n=null===(t=e.coding)||void 0===t?void 0:t[0])||void 0===n?void 0:n.display)&&void 0!==a?a:null===(u=null===(l=e.coding)||void 0===l?void 0:l[0])||void 0===u?void 0:u.code)&&void 0!==o?o:e.text;return r.default.createElement(r.default.Fragment,null,i)}const ke={};function Oe(e){const t=b();let n;return e.defaultValue&&(n=[e.defaultValue]),r.default.createElement(G,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>{const t=e.expansion.contains;return t.forEach((e=>ke[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>r.default.createElement(r.default.Fragment,null,ke[e]||e),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function we(e){const t=b();let n;return e.defaultValue&&(n=[e.defaultValue]),r.default.createElement(G,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map((e=>({system:e.system,code:e.code,display:e.display})))))},buildUnstructured:e=>({code:e}),getId:e=>e.code,getDisplay:e=>r.default.createElement(ne,{value:e}),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Ne(e){const[t,a]=n.useState(e.defaultValue),l=n.useRef();function u(t){t&&0===Object.keys(t).length&&(t=void 0),a(t),e.onChange&&e.onChange(t)}return l.current=t,r.default.createElement(d,null,r.default.createElement(s,{defaultValue:null==t?void 0:t.system,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{system:e});e||delete t.system,u(t)},testid:"system"},r.default.createElement("option",null),r.default.createElement("option",null,"email"),r.default.createElement("option",null,"fax"),r.default.createElement("option",null,"pager"),r.default.createElement("option",null,"phone"),r.default.createElement("option",null,"other"),r.default.createElement("option",null,"sms"),r.default.createElement("option",null,"url")),r.default.createElement(s,{defaultValue:null==t?void 0:t.use,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{use:e});e||delete t.use,u(t)},testid:"use"},r.default.createElement("option",null),r.default.createElement("option",null,"home"),r.default.createElement("option",null,"mobile"),r.default.createElement("option",null,"old"),r.default.createElement("option",null,"temp"),r.default.createElement("option",null,"work")),r.default.createElement(i,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{value:e});e||delete t.value,u(t)}}))}function xe(e){var t;const[a,l]=n.useState(e.defaultValue),u=n.useRef();function o(t){l(t),e.onChange&&e.onChange(t)}return u.current=a,r.default.createElement(d,null,r.default.createElement(i,{name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:null==a?void 0:a.name,onChange:function(e){const t=Object.assign(Object.assign({},u.current),{name:e});e||delete t.name,o(t)}}),r.default.createElement(Ne,{name:e.name+"-telecom",defaultValue:null===(t=null==a?void 0:a.telecom)||void 0===t?void 0:t[0],onChange:function(e){const t=Object.assign(Object.assign({},u.current),{telecom:e&&[e]});e||delete t.telecom,o(t)}}))}function je(e){return r.default.createElement(i,Object.assign({},e,{type:"datetime-local",defaultValue:Pe(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(Re(t))}}))}function Pe(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toLocaleDateString("sv")+"T"+n.toLocaleTimeString("sv"):""}function Re(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toISOString():""}function De(e){const t="medplum-textarea"+(e.monospace?" monospace":""),n=o(e.outcome,e.name),a=n&&n.length>0;return r.default.createElement("textarea",{id:e.name,name:e.name,className:t,defaultValue:e.defaultValue||"",required:e.required,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":a,"aria-describedby":a?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,style:e.style,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function Ve(e){return r.default.createElement(De,{testid:"extension-input",name:e.name,defaultValue:t.stringify(e.defaultValue),monospace:!0,onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Ie(e){var t,a,l;const[u,o]=n.useState(e.defaultValue),c=n.useRef();function m(t){o(t),e.onChange&&e.onChange(t)}return c.current=u,r.default.createElement(d,null,r.default.createElement(s,{defaultValue:null==u?void 0:u.use,onChange:function(e){m(Object.assign(Object.assign({},c.current),{use:e||void 0}))},testid:"use"},r.default.createElement("option",null),r.default.createElement("option",null,"usual"),r.default.createElement("option",null,"official"),r.default.createElement("option",null,"temp"),r.default.createElement("option",null,"nickname"),r.default.createElement("option",null,"anonymous"),r.default.createElement("option",null,"old"),r.default.createElement("option",null,"maiden")),r.default.createElement(i,{placeholder:"Prefix",defaultValue:null===(t=null==u?void 0:u.prefix)||void 0===t?void 0:t.join(" "),onChange:function(e){m(Object.assign(Object.assign({},c.current),{prefix:e?e.split(" "):void 0}))}}),r.default.createElement(i,{placeholder:"Given",defaultValue:null===(a=null==u?void 0:u.given)||void 0===a?void 0:a.join(" "),onChange:function(e){m(Object.assign(Object.assign({},c.current),{given:e?e.split(" "):void 0}))}}),r.default.createElement(i,{placeholder:"Family",defaultValue:null==u?void 0:u.family,onChange:function(e){m(Object.assign(Object.assign({},c.current),{family:e||void 0}))}}),r.default.createElement(i,{placeholder:"Suffix",defaultValue:null===(l=null==u?void 0:u.suffix)||void 0===l?void 0:l.join(" "),onChange:function(e){m(Object.assign(Object.assign({},c.current),{suffix:e?e.split(" "):void 0}))}}))}function Ae(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(i,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>l(Object.assign(Object.assign({},t),{system:e}))}),r.default.createElement(i,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>l(Object.assign(Object.assign({},t),{value:e}))}))}function Fe(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(i,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>l(Object.assign(Object.assign({},t),{start:e}))}),r.default.createElement(i,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>l(Object.assign(Object.assign({},t),{end:e}))}))}function Le(e){var t;const[a,l]=n.useState(e.defaultValue);function u(t){l(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(s,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==a?void 0:a.comparator,onChange:e=>u(Object.assign(Object.assign({},a),{comparator:e}))},r.default.createElement("option",null),r.default.createElement("option",null,"<"),r.default.createElement("option",null,"<="),r.default.createElement("option",null,">="),r.default.createElement("option",null,">")),r.default.createElement(i,{name:e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==a?void 0:a.value)||void 0===t?void 0:t.toString(),onChange:e=>u(Object.assign(Object.assign({},a),{value:Me(e)}))}),r.default.createElement(i,{placeholder:"Unit",defaultValue:null==a?void 0:a.unit,onChange:e=>u(Object.assign(Object.assign({},a),{unit:e}))}))}function Me(e){if(e)return parseFloat(e)}function qe(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(Le,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>l(Object.assign(Object.assign({},t),{low:e}))}),r.default.createElement(Le,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>l(Object.assign(Object.assign({},t),{high:e}))}))}function $e(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(Le,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>l(Object.assign(Object.assign({},t),{numerator:e}))}),r.default.createElement(Le,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>l(Object.assign(Object.assign({},t),{denominator:e}))}))}function _e(e){const n=B(e.value);if(!n)return null;const a=t.getDisplayString(n);return e.link?r.default.createElement(Q,{to:n},a):r.default.createElement("span",null,a)}function Ue(e){const t=b(),a=B(e.defaultValue),[l,u]=n.useState(),o=n.useRef(e.resourceType);return o.current=e.resourceType,n.useEffect((()=>{u(a)}),[a]),r.default.createElement(G,{loadOptions:e=>j(this,void 0,void 0,(function*(){return t.search(o.current,"name="+encodeURIComponent(e)+"&_count=10").then((e=>e.entry.map((e=>e.resource))))})),getId:e=>e.id,getIcon:e=>r.default.createElement(K,{value:e}),getDisplay:e=>r.default.createElement(_e,{value:e}),getHelpText:e=>{if("Patient"===e.resourceType&&e.birthDate)return"DoB: "+e.birthDate},name:e.name,defaultValue:l?[l]:void 0,className:e.className,placeholder:e.placeholder,loadOnFocus:e.loadOnFocus,onChange:t=>{var n;n=t.length>0?t[0]:void 0,u(n),e.onChange&&e.onChange(n)}})}function Qe(e){const a=e.targetTypes,l=function(e,t){var n;const a=null===(n=null==e?void 0:e.reference)||void 0===n?void 0:n.split("/")[0];if(a)return a;if(t&&t.length>0)return t[0];return}(e.defaultValue,a),[u,o]=n.useState(e.defaultValue),[c,m]=n.useState(l);n.useRef().current=u;return n.useRef().current=c,r.default.createElement(d,null,a?r.default.createElement(s,{testid:"reference-input-resource-type-select",defaultValue:c,onChange:m},a.map((e=>r.default.createElement("option",{key:e,value:e},e)))):r.default.createElement(i,{testid:"reference-input-resource-type-input",defaultValue:c,onChange:m}),r.default.createElement(Ue,{resourceType:c,name:e.name+"-id",defaultValue:u,onChange:n=>{var a;a=n?t.createReference(n):void 0,o(a),e.onChange&&e.onChange(a)}}))}function He(e){const[t,a]=n.useState(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),l=n.useRef();function u(t){a(t),e.onChange&&e.onChange(t)}return l.current=t,r.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},r.default.createElement("colgroup",null,r.default.createElement("col",{width:"90%"}),r.default.createElement("col",{width:"10%"})),r.default.createElement("tbody",null,t.map(((n,a)=>r.default.createElement("tr",{key:`${a}-${t.length}`},r.default.createElement("td",null,r.default.createElement(Ge,{arrayElement:!0,property:e.property,name:e.name+"."+a,defaultValue:n,onChange:e=>{const t=[...l.current];t[a]=e,u(t)}})),r.default.createElement("td",{style:{textAlign:"right"}},r.default.createElement(g,{onClick:e=>{T(e);const t=[...l.current];t.splice(a,1),u(t)}},"Remove"))))),r.default.createElement("tr",null,r.default.createElement("td",null),r.default.createElement("td",{style:{textAlign:"right"}},r.default.createElement(g,{onClick:e=>{T(e);const t=[...l.current];t.push(void 0),u(t)}},"Add")))))}function ze(e){const[t,a]=n.useState(100),[l,u]=n.useState(100);if(!e.visible)return null;return r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"modal-dialog-bg"}),r.default.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:l+"px"}},r.default.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){T(e);const n=e.clientX-t,r=e.clientY-l;function o(e){T(e),a(e.clientX-n),u(e.clientY-r)}document.addEventListener("mouseup",(function e(t){T(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",o,!0)}),!0),document.addEventListener("mousemove",o,!0)}(e)},r.default.createElement("span",{className:"modal-dialog-title-text"},e.title),r.default.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),r.default.createElement("div",{className:"modal-dialog-content"},e.children),r.default.createElement("div",{className:"modal-dialog-buttons"},r.default.createElement(g,{testid:"dialog-ok",onClick:e.onOk},"OK"),r.default.createElement(g,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Be=["sun","mon","tue","wed","thu","fri","sat"];function Ke(e){const[a,l]=n.useState(e.defaultValue||{}),[u,o]=n.useState(!1),i=n.useRef();return i.current=a,r.default.createElement(r.default.Fragment,null,r.default.createElement(d,null,r.default.createElement("span",null,t.formatTiming(i.current)||"No repeat"),r.default.createElement(g,{onClick:()=>o(!0)},"Edit")),r.default.createElement(We,{visible:u,defaultValue:i.current,onOk:t=>{e.onChange&&e.onChange(t),l(t),o(!1)},onCancel:()=>o(!1)}))}function We(e){var t,a;const[l,u]=n.useState(e.defaultValue||{}),o=n.useRef();function c(e){u(Object.assign(Object.assign({},o.current),{repeat:e}))}function m(e,t){t?function(e){var t,n,a;const l=(null===(n=null===(t=o.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)||c(Object.assign(Object.assign({},null===(a=o.current)||void 0===a?void 0:a.repeat),{dayOfWeek:[...l,e]}))}(e):function(e){var t,n,a;const l=(null===(n=null===(t=o.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)&&c(Object.assign(Object.assign({},null===(a=o.current)||void 0===a?void 0:a.repeat),{dayOfWeek:l.filter((t=>t!==e))}))}(e)}return o.current=l,r.default.createElement(ze,{title:"Timing",visible:e.visible,onOk:()=>e.onOk(l),onCancel:()=>e.onCancel()},r.default.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},r.default.createElement(I,{title:"Starts on",htmlFor:"timing-dialog-start"},r.default.createElement(je,{name:"timing-dialog-start",onChange:e=>{return t=e,void u(Object.assign(Object.assign({},o.current),{event:[t]}));var t}})),r.default.createElement(I,{title:"Repeat every",htmlFor:"timing-dialog-period"},r.default.createElement(d,null,r.default.createElement(i,{type:"number",step:1,name:"timing-dialog-period",defaultValue:null===(t=null==l?void 0:l.repeat)||void 0===t?void 0:t.period,onChange:e=>function(e){var t;c(Object.assign(Object.assign({},null===(t=o.current)||void 0===t?void 0:t.repeat),{period:e}))}(parseInt(e))}),r.default.createElement(s,{name:"timing-dialog-periodUnit",defaultValue:null===(a=null==l?void 0:l.repeat)||void 0===a?void 0:a.periodUnit,onChange:e=>function(e){var t;c(Object.assign(Object.assign({},null===(t=o.current)||void 0===t?void 0:t.repeat),{periodUnit:e}))}(e)},r.default.createElement("option",{value:"d"},"day"),r.default.createElement("option",{value:"wk"},"week"),r.default.createElement("option",{value:"mo"},"month"),r.default.createElement("option",{value:"a"},"year")))),r.default.createElement(I,{title:"Repeat on"},r.default.createElement(d,null,Be.map((e=>r.default.createElement(r.default.Fragment,{key:e},r.default.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),r.default.createElement(Ee,{name:"timing-dialog-repeat-"+e,onChange:t=>m(e,t)}))))))))}function Ge(e){var t,n,a;const l=e.property,u=null!==(t=e.defaultPropertyType)&&void 0!==t?t:null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code,o=e.name,i=e.defaultValue;if("*"===l.max&&!e.arrayElement)return"Attachment"===u?r.default.createElement(w,{name:o,defaultValue:i,onChange:e.onChange}):r.default.createElement(He,{property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?r.default.createElement(Ye,Object.assign({elementDefinitionTypes:c},e)):r.default.createElement(Je,Object.assign({elementDefinitionType:c[0]},e))}function Ye(e){const a=e.elementDefinitionTypes;let l;e.defaultPropertyType&&(l=a.find((t=>t.code===e.defaultPropertyType))),l||(l=a[0]);const[u,o]=n.useState(l);return r.default.createElement(d,null,r.default.createElement(s,{style:{width:"200px"},defaultValue:null==u?void 0:u.code,onChange:e=>{o(a.find((t=>t.code===e)))}},a.map((e=>r.default.createElement("option",{key:e.code,value:e.code},e.code)))),r.default.createElement(Je,Object.assign({},e,{elementDefinitionType:u,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",t.capitalize(u.code)))}})))}function Je(e){var n;const a=e.property,l=e.elementDefinitionType.code,u=e.name,o=e.defaultValue;switch(l){case t.PropertyType.SystemString:case t.PropertyType.canonical:case t.PropertyType.string:case t.PropertyType.time:case t.PropertyType.uri:case t.PropertyType.url:return r.default.createElement(i,{type:"text",name:u,testid:u,defaultValue:o,onChange:e.onChange,outcome:e.outcome});case t.PropertyType.date:return r.default.createElement(i,{type:"date",name:u,testid:u,defaultValue:o,onChange:e.onChange,outcome:e.outcome});case t.PropertyType.dateTime:case t.PropertyType.instant:return r.default.createElement(je,{type:"datetime-local",name:u,testid:u,defaultValue:o,onChange:e.onChange,outcome:e.outcome});case t.PropertyType.decimal:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.unsignedInt:return r.default.createElement(i,{type:"number",step:l===t.PropertyType.decimal?"any":1,name:u,testid:u,defaultValue:o,onChange:t=>{e.onChange&&e.onChange(parseFloat(t))},outcome:e.outcome});case t.PropertyType.code:return r.default.createElement(Oe,{property:a,name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.boolean:return r.default.createElement(Ee,{name:u,testid:u,defaultValue:!!o,onChange:t=>{e.onChange&&e.onChange(t)}});case t.PropertyType.markdown:return r.default.createElement(De,{name:u,testid:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Address:return r.default.createElement(p,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Annotation:return r.default.createElement(ge,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Attachment:return r.default.createElement(N,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.CodeableConcept:return r.default.createElement(ye,{property:a,name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Coding:return r.default.createElement(we,{property:a,name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.ContactDetail:return r.default.createElement(xe,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.ContactPoint:return r.default.createElement(Ne,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Extension:return r.default.createElement(Ve,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.HumanName:return r.default.createElement(Ie,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Identifier:return r.default.createElement(Ae,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Period:return r.default.createElement(Fe,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Quantity:return r.default.createElement(Le,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Range:return r.default.createElement(qe,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Ratio:return r.default.createElement($e,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Reference:return r.default.createElement(Qe,{name:u,defaultValue:o,targetTypes:Xe(a),onChange:e.onChange});case t.PropertyType.Timing:return r.default.createElement(Ke,{name:u,defaultValue:o,onChange:e.onChange});default:return r.default.createElement(Ze,{typeName:t.buildTypeName(null===(n=a.path)||void 0===n?void 0:n.split(".")),defaultValue:o,onChange:e.onChange,outcome:e.outcome})}}function Xe(e){var t,n,a;return null===(a=null===(n=null===(t=null==e?void 0:e.type)||void 0===t?void 0:t[0])||void 0===n?void 0:n.targetProfile)||void 0===a?void 0:a.map((e=>e.split("/").pop()))}function Ze(e){var a;const[l,u]=n.useState(null!==(a=e.defaultValue)&&void 0!==a?a:{});function o(t){u(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=t.globalSchema.types[i];if(!c)return r.default.createElement("div",null,i," not implemented");const d={type:i,value:l};return r.default.createElement(r.default.Fragment,null,Object.entries(c.properties).map((n=>{const a=n[0];if("id"===a||J.indexOf(a)>=0)return null;const u=n[1];if(!u.type)return null;const[i,c]=ve(d,a);return 1===u.type.length&&"boolean"===u.type[0].code?r.default.createElement(Y,{key:a,title:t.getPropertyDisplayName(a),description:u.definition,htmlFor:a},r.default.createElement(Ge,{property:u,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,t)=>{o(X(l,a,null!=t?t:a,n[1],e))}})):r.default.createElement(I,{key:a,title:t.getPropertyDisplayName(a),description:u.definition,htmlFor:a,outcome:e.outcome},r.default.createElement(Ge,{property:u,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,t)=>{o(X(l,a,null!=t?t:a,n[1],e))}}))})))}function et(e){var t;return r.default.createElement("div",{className:"medplum-resource-badge"},r.default.createElement(K,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),r.default.createElement(_e,{value:e.value,link:e.link}))}function tt(e){var n,a;const l=B(e.value),u=B(null===(n=null==l?void 0:l.specimen)||void 0===n?void 0:n[0]);if(!l)return null;let o="";if(l.presentedForm&&l.presentedForm.length>0){const e=l.presentedForm[0];(null===(a=e.contentType)||void 0===a?void 0:a.startsWith("text/plain"))&&e.data&&(o=window.atob(e.data))}if(null==u?void 0:u.note)for(const e of u.note)o+=e.text+"\n\n";return r.default.createElement("div",{className:"medplum-diagnostic-report"},r.default.createElement("h1",null,"Diagnostic Report"),r.default.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&r.default.createElement("dl",null,r.default.createElement("dt",null,"Subject"),r.default.createElement("dd",null,r.default.createElement(et,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>r.default.createElement("dl",{key:e.reference},r.default.createElement("dt",null,"Interpreter"),r.default.createElement("dd",null,r.default.createElement(et,{value:e,link:!0}))))),l.issued&&r.default.createElement("dl",null,r.default.createElement("dt",null,"Issued"),r.default.createElement("dd",null,t.formatDateTime(l.issued))),l.status&&r.default.createElement("dl",null,r.default.createElement("dt",null,"Status"),r.default.createElement("dd",null,t.capitalize(l.status)))),l.result&&r.default.createElement(nt,{value:l.result}),o&&r.default.createElement("pre",null,o.trim()))}function nt(e){var t;return r.default.createElement("table",{className:"medplum-table"},r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"Test"),r.default.createElement("th",null,"Value"),r.default.createElement("th",null,"Reference Range"),r.default.createElement("th",null,"Interpretation"))),r.default.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>r.default.createElement(at,{key:"obs-"+t,value:e})))))}function at(e){const t=B(e.value);return t?r.default.createElement("tr",null,r.default.createElement("td",null,r.default.createElement(Q,{to:t},r.default.createElement(ae,{value:t.code}))),r.default.createElement("td",null,r.default.createElement(lt,{value:t})),r.default.createElement("td",null,r.default.createElement(rt,{value:t.referenceRange})),r.default.createElement("td",null,t.interpretation&&t.interpretation.length>0&&r.default.createElement(ae,{value:t.interpretation[0]}))):null}function lt(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?r.default.createElement(ie,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?r.default.createElement(r.default.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?r.default.createElement(r.default.Fragment,null,n.component.map(((e,t)=>r.default.createElement(lt,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function rt(e){const t=e.value&&e.value.length>0&&e.value[0];return t?r.default.createElement(de,{value:t}):null}function ut(){return r.default.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},r.default.createElement("div",{className:"medplum-loading-container"},r.default.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},r.default.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function ot(e){return r.default.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function it(e){const a=b(),[l,u]=n.useState();if(n.useEffect((()=>{a.requestSchema(e.original.resourceType).then(u).catch(console.log)}),[a,e.original.resourceType]),!l)return null;const o=l.types[e.original.resourceType];return o?r.default.createElement("table",{className:"medplum-diff-table"},r.default.createElement("colgroup",null,r.default.createElement("col",{style:{width:"30%"}}),r.default.createElement("col",{style:{width:"35%"}}),r.default.createElement("col",{style:{width:"35%"}})),r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"Property"),r.default.createElement("th",null,"Before"),r.default.createElement("th",null,"After"))),r.default.createElement("tbody",null,Object.entries(o.properties).map((n=>{const a=n[0];if("id"===a||"meta"===a)return null;const l=n[1],[u,o]=ve(t.toTypedValue(e.original),a),[i,c]=ve(t.toTypedValue(e.revised),a);return ct(u)&&ct(i)||t.stringify(u)===t.stringify(i)?null:r.default.createElement("tr",{key:a},r.default.createElement("td",null,t.getPropertyDisplayName(a)),r.default.createElement("td",{className:"medplum-diff-removed"},r.default.createElement(he,{property:l,propertyType:o,value:u,ignoreMissingValues:!0})),r.default.createElement("td",{className:"medplum-diff-added"},r.default.createElement(he,{property:l,propertyType:c,value:i,ignoreMissingValues:!0})))})))):null}function ct(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function dt(e){const t=b(),a=B(e.value),[l,u]=n.useState();return n.useEffect((()=>{a&&t.requestSchema(a.resourceType).then(u).catch(console.log)}),[t,a]),l&&a?r.default.createElement(te,{value:{type:a.resourceType,value:a},ignoreMissingValues:e.ignoreMissingValues}):null}function st(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return r.default.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},r.default.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class mt extends r.default.Component{constructor(e){super(e),this.state={}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("Uncaught error:",e,t)}render(){return this.state.error?r.default.createElement("h1",null,"Something went wrong."):this.props.children}}function ft(e){const t=n.useRef(null),l=a.useLocation(),u=n.useRef();e.visible?void 0===u.current&&(u.current=l):u.current=void 0;const o=n.useRef();o.current=e,n.useEffect((()=>{function n(n){var a,l;(null===(a=o.current)||void 0===a?void 0:a.visible)&&(null===(l=o.current)||void 0===l?void 0:l.autoClose)&&(null==t?void 0:t.current)&&!t.current.contains(n.target)&&(T(n),e.onClose())}function a(e){var t;(null===(t=o.current)||void 0===t?void 0:t.visible)&&T(e)}return document.addEventListener("click",n,!0),window.addEventListener("wheel",a,{passive:!1}),window.addEventListener("touchmove",a,!0),()=>{document.removeEventListener("click",n,!0),window.removeEventListener("wheel",a),window.removeEventListener("touchmove",a,!0)}}),[e]),n.useEffect((()=>{e.visible&&l!==u.current&&e.onClose()}),[l,e]);const i={display:e.visible?"block":"none"};return e.anchor&&(e.anchor.right+250<document.body.clientWidth?i.left=e.anchor.right+"px":i.right=document.body.clientWidth-e.anchor.left+"px",e.anchor.top+300<document.body.clientHeight?i.top=e.anchor.top+"px":i.bottom=document.body.clientHeight-e.anchor.top+"px"),r.default.createElement(r.default.Fragment,null,e.modal&&r.default.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),r.default.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:i,"data-testid":"popup"},e.children))}function pt(e){return r.default.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function ht(e){var a,l,u;const[o,i]=n.useState(),c=null!==(a=e.profile)&&void 0!==a?a:null===(l=e.resource.meta)||void 0===l?void 0:l.author;return r.default.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},r.default.createElement("div",{className:"medplum-timeline-item-header"},r.default.createElement("div",{className:"medplum-timeline-item-avatar"},r.default.createElement(K,{value:c,link:!0,size:"medium"})),r.default.createElement("div",{className:"medplum-timeline-item-title"},r.default.createElement(_e,{value:c,link:!0}),r.default.createElement("div",{className:"medplum-timeline-item-subtitle"},r.default.createElement(Q,{to:e.resource},t.formatDateTime(null===(u=e.resource.meta)||void 0===u?void 0:u.lastUpdated)),r.default.createElement("span",null,"·"),r.default.createElement(Q,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&r.default.createElement("div",{className:"medplum-timeline-item-actions"},r.default.createElement("a",{href:"#","aria-label":`Actions for ${t.getReferenceString(e.resource)}`,onClick:e=>{T(e);const t=e.currentTarget.getBoundingClientRect();i(t)}},r.default.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},r.default.createElement("g",{transform:"translate(-446 -350)"},r.default.createElement("path",{d:"M458 360a2 2 0 1 1-4 0 2 2 0 0 1 4 0m6 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0m-12 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0"})))))),r.default.createElement(mt,null,e.padding&&r.default.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&r.default.createElement(r.default.Fragment,null,e.children)),e.socialEnabled&&r.default.createElement("div",{className:"medplum-timeline-item-footer"},r.default.createElement(g,{borderless:!0},"Like"),r.default.createElement(g,{borderless:!0},"Comment")),e.popupMenuItems&&r.default.createElement(ft,{visible:!!o,anchor:o,autoClose:!0,onClose:()=>i(void 0)},e.popupMenuItems))}function vt(e){e.sort(gt)}function gt(e,t){const n=Et(e),a=Et(t);return n>a?1:n<a?-1:yt(e)-yt(t)}function Et(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function yt(e){var t;if("Communication"===e.resourceType&&e.sent)return new Date(e.sent).getTime();if(("DiagnosticReport"===e.resourceType||"Media"===e.resourceType||"Observation"===e.resourceType)&&e.issued)return new Date(e.issued).getTime();if("DocumentReference"===e.resourceType&&e.date)return new Date(e.date).getTime();const n=null===(t=e.meta)||void 0===t?void 0:t.lastUpdated;return n?new Date(n).getTime():0}function bt(e){const t=a.useNavigate(),l=b(),u=l.getProfile(),o=n.useRef(null),c=B(e.value),[d,s]=n.useState(),[m,f]=n.useState([]),p=e.buildSearchRequests,h=n.useRef(m);h.current=m;const v=n.useCallback((()=>{if(!c)return f([]),void s({});l.executeBatch(p(c)).then(E).catch(console.log)}),[l,c,p]);function E(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&s(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}vt(t),t.reverse()}f(t)}function y(e){const t=[...h.current,...e];vt(t),t.reverse(),f(t)}function C(e,t){return l.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function T(e){C(e,"stat").then(v).catch(console.log)}function S(e){C(e,"routine").then(v).catch(console.log)}function k(e){t(`/${e.resourceType}/${e.id}`)}function w(e){t(`/${e.resourceType}/${e.id}/edit`)}function N(e){t(`/${e.resourceType}/${e.id}/delete`)}function x(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return n.useEffect((()=>{v()}),[v]),c&&d?r.default.createElement(pt,null,e.createCommunication&&r.default.createElement("article",{className:"medplum-timeline-item"},r.default.createElement("div",{className:"medplum-timeline-item-header"},r.default.createElement(V,{testid:"timeline-form",onSubmit:t=>{var n;n=t.text,c&&e.createCommunication&&l.createResource(e.createCommunication(c,u,n)).then((e=>{y([e])})).catch(console.log);const a=o.current;a&&(a.value="",a.focus())}},r.default.createElement(i,{name:"text",testid:"timeline-input",inputRef:o}),r.default.createElement(g,{type:"submit"},"Comment"),r.default.createElement(O,{onUpload:function(t){c&&e.createMedia&&l.createResource(e.createMedia(c,u,t)).then((e=>{y([e])})).catch(console.log)}})))),m.map((e=>{var t;if(e.resourceType===c.resourceType&&e.id===c.id)return r.default.createElement(Tt,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:d,resource:e,onDetails:x});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return r.default.createElement(Ot,{key:n,resource:e,onDetails:k});case"Communication":return r.default.createElement(St,{key:n,resource:e,onPin:"stat"!==e.priority?T:void 0,onUnpin:"stat"===e.priority?S:void 0,onDetails:k,onEdit:w,onDelete:N});case"DiagnosticReport":return r.default.createElement(wt,{key:n,resource:e,onDetails:k,onEdit:w,onDelete:N});case"Media":return r.default.createElement(kt,{key:n,resource:e,onDetails:k,onEdit:w,onDelete:N});default:return r.default.createElement(ht,{key:n,resource:e,padding:!0},r.default.createElement(dt,{value:e,ignoreMissingValues:!0}))}}))):r.default.createElement(ut,null)}function Ct(e){return r.default.createElement(r.default.Fragment,null,e.onPin&&r.default.createElement(ot,{onClick:()=>e.onPin(e.resource),label:`Pin ${t.getReferenceString(e.resource)}`},"Pin"),e.onUnpin&&r.default.createElement(ot,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${t.getReferenceString(e.resource)}`},"Unpin"),e.onDetails&&r.default.createElement(ot,{onClick:()=>e.onDetails(e.resource),label:`Details ${t.getReferenceString(e.resource)}`},"Details"),e.onEdit&&r.default.createElement(ot,{onClick:()=>e.onEdit(e.resource),label:`Edit ${t.getReferenceString(e.resource)}`},"Edit"),e.onDelete&&r.default.createElement(ot,{onClick:()=>e.onDelete(e.resource),label:`Delete ${t.getReferenceString(e.resource)}`},"Delete"))}function Tt(e){const t=function(e,t){const n=e.entry,a=n.findIndex((e=>{var n,a,l;return(null===(a=null===(n=e.resource)||void 0===n?void 0:n.meta)||void 0===a?void 0:a.versionId)===(null===(l=t.meta)||void 0===l?void 0:l.versionId)}));if(a>=n.length-1)return;return n[a+1].resource}(e.history,e.resource);return t?r.default.createElement(ht,{resource:e.resource,padding:!0,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement(it,{original:t,revised:e.resource})):r.default.createElement(ht,{resource:e.resource,padding:!0,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement("h3",null,"Created"),r.default.createElement(dt,{value:e.resource,ignoreMissingValues:!0}))}function St(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return r.default.createElement(ht,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement("p",null,null===(n=null===(t=e.resource.payload)||void 0===t?void 0:t[0])||void 0===n?void 0:n.contentString))}function kt(e){var t;const n=null===(t=e.resource.content)||void 0===t?void 0:t.contentType,a=n&&!n.startsWith("image/")&&!n.startsWith("video/")&&"application/pdf"!==n;return r.default.createElement(ht,{resource:e.resource,padding:!!a,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement(h,{value:e.resource.content}))}function Ot(e){return r.default.createElement(ht,{resource:e.resource,padding:!0,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement(st,null,r.default.createElement("pre",null,e.resource.outcomeDesc)))}function wt(e){return r.default.createElement(ht,{resource:e.resource,padding:!0,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement(tt,{value:e.resource}))}function Nt(e){let n;try{n=t.evalFhirPath(e.path,e.resource)}catch(e){return console.warn("FhirPathDisplay:",e),null}if(n.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${n.length} elements [${JSON.stringify(n,null,2)}]`);return r.default.createElement(he,{value:n[0]||"",propertyType:e.propertyType})}function xt(e,n){var a;if("_lastUpdated"===n)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===n)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const l=t.globalSchema.types[e],r=l.properties[n],u=null===(a=l.searchParams)||void 0===a?void 0:a[n.toLowerCase()];if(r&&u)return{name:n,elementDefinition:r,searchParams:[u]};if(r){let t;if(l.searchParams){const a=`${e}.${n.replaceAll("[x]","")}`;t=Object.values(l.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(a)})),0===t.length&&(t=void 0)}return{name:n,elementDefinition:r,searchParams:t}}if(u){return{name:n,elementDefinition:t.getSearchParameterDetails(e,u).elementDefinition,searchParams:[u]}}return{name:n}}const jt={string:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],fulltext:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],token:[t.Operator.EQUALS,t.Operator.NOT],reference:[t.Operator.EQUALS,t.Operator.NOT],numeric:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],quantity:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],date:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY],datetime:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY]},Pt={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing"};function Rt(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function Dt(e,t){return Rt(e,(e.filters||[]).filter((e=>e.code!==t)))}function Vt(e,t,n,a,l){l&&(e=Dt(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),Rt(e,r)}function It(e,t){if(!e.filters)return e;const n=[...e.filters];return n.splice(t,1),Object.assign(Object.assign({},e),{filters:n,name:void 0})}function At(e,t){return Mt(e,t,-1)}function Ft(e,t){return Mt(e,t,0)}function Lt(e,t){return Mt(e,t,1)}function Mt(e,t,n){const a=new Date;a.setDate(a.getDate()+n),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setDate(l.getDate()+1),l.setTime(l.getTime()-1),Ht(e,t,a,l)}function qt(e,t){return Ut(e,t,-1)}function $t(e,t){return Ut(e,t,0)}function _t(e,t){return Ut(e,t,1)}function Ut(e,t,n){const a=new Date;a.setMonth(a.getMonth()+n),a.setDate(1),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setMonth(l.getMonth()+1),l.setDate(1),l.setHours(0,0,0,0),l.setTime(l.getTime()-1),Ht(e,t,a,l)}function Qt(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return Ht(e,t,n,new Date)}function Ht(e,n,a,l){return e=zt(e=Dt(e,n),n,t.Operator.GREATER_THAN_OR_EQUALS,a),e=zt(e,n,t.Operator.LESS_THAN_OR_EQUALS,l)}function zt(e,t,n,a){return Vt(e,t,n,a.toISOString())}function Bt(e,n,a=!0){return Vt(e,n,t.Operator.MISSING,a.toString())}function Kt(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Wt(e,t){var n,a;const l=null!==(n=e.count)&&void 0!==n?n:20,r=(null!==(a=e.offset)&&void 0!==a?a:0)+t*l;return Kt(e,Math.max(r,0))}function Gt(e,t,n){return t===Yt(e)&&void 0!==n&&n===Jt(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Yt(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Jt(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Xt(e){return jt[e.type]}function Zt(e){var t;return null!==(t=Pt[e])&&void 0!==t?t:""}function en(e){let n=e;return n.includes(".")&&(n=n.split(".").pop()),"id"===n?"ID":"versionId"===n?"Version ID":(n=n.replace("[x]",""),n=n.replace(/([A-Z])/g," $1"),n=n.replace(/[-_]/g," "),n=n.replace(/\s+/g," "),n=n.trim(),n.split(/\s/).map(t.capitalize).join(" "))}function tn(e,n){var a,l;const u=n.name;return"id"===u?e.id:"meta.versionId"===u?null===(a=e.meta)||void 0===a?void 0:a.versionId:"_lastUpdated"===u?t.formatDateTime(null===(l=e.meta)||void 0===l?void 0:l.lastUpdated):n.elementDefinition&&`${e.resourceType}.${n.name}`===n.elementDefinition.path?function(e,t){var n,a,l;const u=(null===(l=null===(a=null===(n=t.path)||void 0===n?void 0:n.split("."))||void 0===a?void 0:a.pop())||void 0===l?void 0:l.replaceAll("[x]",""))||"",[o,i]=ve({type:e.resourceType,value:e},u);if(!o)return null;return r.default.createElement(he,{property:t,propertyType:i,value:o,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,n.elementDefinition):n.searchParams&&1===n.searchParams.length&&n.name===n.searchParams[0].code?function(e,n,a){const l=t.evalFhirPathTyped(n.expression,[{type:e.resourceType,value:e}]);if(!l||0===l.length)return null;if(a)return r.default.createElement(he,{propertyType:l[0].type,value:l[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return r.default.createElement(r.default.Fragment,null,l.map(((e,t)=>r.default.createElement("span",{key:`${t}-${l.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,n.searchParams[0],n.elementDefinition):null}function nn(e){var a;const[l,u]=n.useState({search:JSON.parse(t.stringify(e.search))}),o=n.useRef(null),i=n.useRef(null);function c(){var e,t;const n=null!==(e=l.search.fields)&&void 0!==e?e:[],a=null===(t=o.current)||void 0===t?void 0:t.value;if(a){const e=[...n,a];u({search:Object.assign(Object.assign({},l.search),{fields:e})})}}function d(){var e,t;const n=null!==(e=l.search.fields)&&void 0!==e?e:[],a=null===(t=i.current)||void 0===t?void 0:t.value;if(a){const e=[...n];e.splice(e.indexOf(a),1),u({search:Object.assign(Object.assign({},l.search),{fields:e})})}}function s(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(n.useEffect((()=>{u({search:e.search})}),[e.search]),!e.visible)return null;const m=e.search.resourceType,f=t.globalSchema.types[m],p=null!==(a=l.search.fields)&&void 0!==a?a:[],h=function(e){const t=[],n=new Set,a=new Set;for(const l of Object.keys(e.properties))t.push(l),n.add(l.toLowerCase()),a.add(en(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=en(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(en(l)))}return t}(f).filter((e=>!(null==p?void 0:p.includes(e)))).sort();return r.default.createElement(ze,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(l.search),onCancel:e.onCancel},r.default.createElement("div",null,r.default.createElement("table",{style:{margin:"auto"}},r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",{colSpan:2,align:"center"},"Available"),r.default.createElement("th",{colSpan:2,align:"center"},"Selected"))),r.default.createElement("tbody",null,r.default.createElement("tr",null,r.default.createElement("td",{colSpan:2,align:"center"},r.default.createElement("select",{ref:o,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"available"},h.map((e=>r.default.createElement("option",{key:e,value:e},en(e)))))),r.default.createElement("td",{colSpan:2,align:"center"},r.default.createElement("select",{ref:i,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&d()}(e),onDoubleClick:()=>{d()},"data-testid":"selected"},p.map((e=>r.default.createElement("option",{key:e,value:e},en(e)))))))),r.default.createElement("tfoot",null,r.default.createElement("tr",null,r.default.createElement("td",{align:"center"},r.default.createElement(g,{size:"small",onClick:c},"Add")),r.default.createElement("td",{align:"center"},r.default.createElement(g,{size:"small",onClick:d},"Remove")),r.default.createElement("td",{align:"center"},r.default.createElement(g,{size:"small",onClick:function(){var e,t;const n=null!==(e=l.search.fields)&&void 0!==e?e:[],a=null===(t=i.current)||void 0===t?void 0:t.value;if(a){const e=[...n],t=e.indexOf(a);s(e,t,t-1),u({search:Object.assign(Object.assign({},l.search),{fields:e})})}}},"Up")),r.default.createElement("td",{align:"center"},r.default.createElement(g,{size:"small",onClick:function(){var e,t;const n=null!==(e=l.search.fields)&&void 0!==e?e:[],a=null===(t=i.current)||void 0===t?void 0:t.value;if(a){const e=[...n],t=e.indexOf(a);s(e,t,t+1),u({search:Object.assign(Object.assign({},l.search),{fields:e})})}}},"Down")))))))}function an(e){var n,a;const{resourceType:l,filter:u}=e,o=null===(a=null===(n=t.globalSchema.types[l])||void 0===n?void 0:n.searchParams)||void 0===a?void 0:a[u.code];if(o){if("reference"===o.type)return r.default.createElement(_e,{value:{reference:u.value}});const e=t.getSearchParameterDetails(l,o);if("_lastUpdated"===u.code||e.type===t.SearchParameterType.DATETIME)return r.default.createElement(r.default.Fragment,null,t.formatDateTime(u.value))}return r.default.createElement(r.default.Fragment,null,u.value)}function ln(e){var n;const a="filter-value";switch(t.getSearchParameterDetails(e.resourceType,e.searchParam).type){case t.SearchParameterType.REFERENCE:return r.default.createElement(Qe,{name:a,defaultValue:{reference:e.defaultValue},targetTypes:null===(n=e.searchParam)||void 0===n?void 0:n.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case t.SearchParameterType.BOOLEAN:return r.default.createElement(Ee,{name:a,testid:a,defaultValue:"true"===e.defaultValue,onChange:t=>e.onChange(t.toString())});case t.SearchParameterType.DATE:return r.default.createElement(i,{type:"date",testid:a,defaultValue:e.defaultValue,onChange:e.onChange});case t.SearchParameterType.DATETIME:return r.default.createElement(je,{testid:a,defaultValue:e.defaultValue,onChange:e.onChange});case t.SearchParameterType.NUMBER:return r.default.createElement(i,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case t.SearchParameterType.QUANTITY:return r.default.createElement(Le,{name:a,defaultValue:rn(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return r.default.createElement(i,{testid:a,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function rn(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function un(e){const[a,l]=n.useState(JSON.parse(t.stringify(e.search))),[u,o]=n.useState(-1),i=n.useRef(a);if(i.current=a,n.useEffect((()=>{l(JSON.parse(t.stringify(e.search)))}),[e.search]),!e.visible)return null;const c=e.search.resourceType,d=t.globalSchema.types[c].searchParams,s=a.filters||[];return r.default.createElement(ze,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(i.current),onCancel:e.onCancel},r.default.createElement("div",{className:"medplum-filter-editor"},r.default.createElement("table",{className:"medplum-filter-editor-table"},r.default.createElement("colgroup",null,r.default.createElement("col",{style:{width:200}}),r.default.createElement("col",{style:{width:200}}),r.default.createElement("col",{style:{width:380}}),r.default.createElement("col",{style:{width:120}})),r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"Field"),r.default.createElement("th",null,"Operation"),r.default.createElement("th",null,"Value"),r.default.createElement("th",null,"Actions"))),r.default.createElement("tbody",null,s.map(((e,t)=>t===u?r.default.createElement(cn,{key:`filter-${t}-${s.length}-input`,resourceType:c,searchParams:d,defaultValue:e,okText:"Save",onOk:e=>{const n=[...s];n[t]=e,l(Rt(i.current,n)),o(-1)},onCancel:()=>o(-1)}):r.default.createElement(on,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:d,filter:e,onEdit:()=>o(t),onDelete:()=>l(It(i.current,t))}))),r.default.createElement(cn,{resourceType:c,searchParams:d,okText:"Add",onOk:function(e){l(Vt(i.current,e.code,e.operator,e.value))}})))))}function on(e){const{filter:t}=e;return r.default.createElement("tr",null,r.default.createElement("td",null,en(t.code)),r.default.createElement("td",null,Zt(t.operator)),r.default.createElement("td",null,r.default.createElement(an,{resourceType:e.resourceType,filter:t})),r.default.createElement("td",null,r.default.createElement(g,{size:"small",onClick:e.onEdit},"Edit"),r.default.createElement(g,{size:"small",onClick:e.onDelete},"Delete")))}function cn(e){var t;const[a,l]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:{}),u=n.useRef(a);u.current=a;const o=e.searchParams[a.code],i=o&&Xt(o);return r.default.createElement("tr",null,r.default.createElement("td",null,r.default.createElement(s,{testid:"filter-field",defaultValue:u.current.code,onChange:function(e){l(Object.assign(Object.assign({},u.current),{code:e}))}},r.default.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>r.default.createElement("option",{key:e,value:e},en(e)))))),r.default.createElement("td",null,i&&r.default.createElement(s,{testid:"filter-operation",defaultValue:a.operator,onChange:function(e){l(Object.assign(Object.assign({},u.current),{operator:e}))}},r.default.createElement("option",{value:""}),i.map((e=>r.default.createElement("option",{key:e,value:e},Zt(e)))))),r.default.createElement("td",null,o&&a.operator&&r.default.createElement(ln,{resourceType:e.resourceType,searchParam:o,defaultValue:a.value,onChange:function(e){l(Object.assign(Object.assign({},u.current),{value:e}))}})),r.default.createElement("td",null,a.code&&a.operator&&a.value&&r.default.createElement(g,{size:"small",onClick:()=>{e.onOk(u.current),l({})}},e.okText),e.onCancel&&r.default.createElement(g,{size:"small",onClick:e.onCancel},"Cancel")))}function dn(e){var t;const[a,l]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function u(){e.onOk(Object.assign(Object.assign({},e.filter),{value:a}))}return r.default.createElement(ze,{title:e.title,visible:e.visible,onOk:u,onCancel:e.onCancel},r.default.createElement("div",{style:{width:500}},r.default.createElement(V,{onSubmit:u},r.default.createElement(ln,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:a,autoFocus:!0,onChange:l}))))}function sn(){return r.default.createElement("div",{className:"medplum-menu-separator"})}function mn(e){const[t,a]=n.useState(!1),[l,u]=n.useState(!1),[o,i]=n.useState(void 0),c=n.useRef(null),d=n.useRef(!1);d.current=t;const s=n.useRef(!1);function m(){const e=c.current;e&&(i(e.getBoundingClientRect()),u(!0))}return s.current=l,n.useEffect((()=>{const e=window.setInterval((()=>{!s.current&&d.current?m():s.current&&!d.current&&u(!1)}),150);return()=>window.clearInterval(e)}),[]),r.default.createElement("div",{ref:c,className:"medplum-menu-item medplum-submenu-item",onClick:()=>m(),onMouseOver:()=>a(!0),onMouseLeave:()=>a(!1)},e.title,r.default.createElement("span",{className:"medplum-submenu-arrow"},"►"),r.default.createElement(ft,{visible:l,anchor:o,autoClose:!0,onClose:()=>u(!1)},e.children))}function fn(e){if(!e.searchParams)return null;function t(t,n){l(Gt(e.search,t.code,n))}function n(t){l(Dt(e.search,t.code))}function a(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})}function l(t){e.onChange(t)}const u={left:e.x,right:e.x,top:e.y,bottom:e.y};return 1===e.searchParams.length?r.default.createElement(ft,{visible:e.visible,anchor:u,autoClose:!0,onClose:e.onClose},r.default.createElement(pn,{search:e.search,searchParam:e.searchParams[0],onSort:t,onPrompt:a,onChange:l,onClear:n})):r.default.createElement(ft,{visible:e.visible,anchor:u,autoClose:!0,onClose:e.onClose},e.searchParams.map((u=>r.default.createElement(mn,{key:u.code,title:en(u.code)},r.default.createElement(pn,{search:e.search,searchParam:u,onSort:t,onPrompt:a,onChange:l,onClear:n})))))}function pn(e){switch(e.searchParam.type){case"date":return r.default.createElement(hn,Object.assign({},e));case"number":case"quantity":return r.default.createElement(vn,Object.assign({},e));case"reference":return r.default.createElement(gn,Object.assign({},e));case"string":case"token":case"uri":return r.default.createElement(En,Object.assign({},e));default:return r.default.createElement(r.default.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function hn(e){const{searchParam:n}=e,a=n.code;return r.default.createElement(r.default.Fragment,null,r.default.createElement(ot,{onClick:()=>e.onSort(n,!1)},"Sort Oldest to Newest"),r.default.createElement(ot,{onClick:()=>e.onSort(n,!0)},"Sort Newest to Oldest"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.NOT_EQUALS)},"Does not equal..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.ENDS_BEFORE)},"Before..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.STARTS_AFTER)},"After..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Between..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Lt(e.search,a))},"Tomorrow"),r.default.createElement(ot,{onClick:()=>e.onChange(Ft(e.search,a))},"Today"),r.default.createElement(ot,{onClick:()=>e.onChange(At(e.search,a))},"Yesterday"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(_t(e.search,a))},"Next Month"),r.default.createElement(ot,{onClick:()=>e.onChange($t(e.search,a))},"This Month"),r.default.createElement(ot,{onClick:()=>e.onChange(qt(e.search,a))},"Last Month"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Qt(e.search,a))},"Year to date"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a))},"Missing"),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a,!1))},"Not missing"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onClear(n)},"Clear filters"))}function vn(e){const{searchParam:n}=e,a=n.code;return r.default.createElement(r.default.Fragment,null,r.default.createElement(ot,{onClick:()=>e.onSort(n,!1)},"Sort Smallest to Largest"),r.default.createElement(ot,{onClick:()=>e.onSort(n,!0)},"Sort Largest to Smallest"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.NOT_EQUALS)},"Does not equal..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.GREATER_THAN)},"Greater than..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.LESS_THAN)},"Less than..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a))},"Missing"),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a,!1))},"Not missing"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onClear(n)},"Clear filters"))}function gn(e){const{searchParam:n}=e,a=n.code;return r.default.createElement(r.default.Fragment,null,r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.NOT)},"Does not equal..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a))},"Missing"),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a,!1))},"Not missing"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onClear(n)},"Clear filters"))}function En(e){const{searchParam:n}=e,a=n.code;return r.default.createElement(r.default.Fragment,null,r.default.createElement(ot,{onClick:()=>e.onSort(n,!1)},"Sort A to Z"),r.default.createElement(ot,{onClick:()=>e.onSort(n,!0)},"Sort Z to A"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.NOT)},"Does not equal..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.CONTAINS)},"Contains..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Does not contain..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a))},"Missing"),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a,!1))},"Not missing"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onClear(n)},"Clear filters"))}function yn(e){return r.default.createElement("div",{className:"medplum-title-bar"},e.children)}class bn extends Event{constructor(e){super("change"),this.definition=e}}class Cn extends Event{constructor(e){super("load"),this.response=e}}class Tn extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function Sn(e){var a,l,u,o;const i=b(),[c,d]=n.useState(!1),[m,f]=n.useState(),{search:p,onLoad:h}=e,[v,E]=n.useState({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParams:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),y=n.useRef(v);function C(t){e.onChange&&e.onChange(new bn(t))}function k(t,n){S(t.target)||(T(t),1!==t.button&&e.onClick&&e.onClick(new Tn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Tn(n,t)))}y.current=v,n.useEffect((()=>{f(void 0),i.search(p.resourceType,t.formatSearchQuery(Object.assign(Object.assign({},p),{total:"accurate",fields:void 0}))).then((e=>{E(Object.assign(Object.assign({},y.current),{searchResponse:e})),h&&h(new Cn(e))})).catch((e=>{E(Object.assign(Object.assign({},y.current),{searchResponse:void 0})),f(e)}))}),[i,p,h]),n.useEffect((()=>{d(!1),i.requestSchema(e.search.resourceType).then((()=>d(!0))).catch(console.log)}),[i,e.search.resourceType]);if(!(c&&(null===(a=null===t.globalSchema||void 0===t.globalSchema?void 0:t.globalSchema.types)||void 0===a?void 0:a[e.search.resourceType])))return r.default.createElement(ut,null);const O=e.checkboxesEnabled,w=function(e){const t=e.resourceType,n=[];for(const a of e.fields||["id","_lastUpdated"])n.push(xt(t,a));return n}(p),N=p.resourceType,x=v.searchResponse,j=null==x?void 0:x.entry,P=null==j?void 0:j.map((e=>e.resource)),R=null===(u=null===(l=e.userConfig)||void 0===l?void 0:l.search)||void 0===u?void 0:u.filter((e=>{var t;return null===(t=e.criteria)||void 0===t?void 0:t.startsWith(N)}));return r.default.createElement("div",{className:"medplum-search-control",onContextMenu:e=>T(e),"data-testid":"search-control"},!e.hideToolbar&&r.default.createElement(yn,null,r.default.createElement("div",null,r.default.createElement("h1",null,r.default.createElement("a",{href:`https://www.hl7.org/fhir/${N.toLowerCase()}.html`,target:"_blank",rel:"noopener"},N)),R&&r.default.createElement(s,{testid:"saved-search-select",style:{width:80},onChange:e=>{C(t.parseSearchDefinition(e))}},r.default.createElement("option",null),R.map(((e,t)=>r.default.createElement("option",{key:`${t}-${R.length}`,value:e.criteria},e.name)))),r.default.createElement(g,{testid:"fields-button",size:"small",onClick:()=>E(Object.assign(Object.assign({},y.current),{fieldEditorVisible:!0}))},"Fields"),r.default.createElement(g,{testid:"filters-button",size:"small",onClick:()=>E(Object.assign(Object.assign({},y.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&r.default.createElement(g,{size:"small",onClick:e.onNew},"New..."),e.onExport&&r.default.createElement(g,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&r.default.createElement(g,{size:"small",onClick:()=>e.onDelete(Object.keys(v.selected))},"Delete..."),e.onBulk&&r.default.createElement(g,{size:"small",onClick:()=>e.onBulk(Object.keys(v.selected))},"Bulk...")),x&&r.default.createElement("div",null,r.default.createElement("span",{className:"medplum-search-summary"},function(e,t){var n;return Math.min(t,(null!==(n=e.offset)&&void 0!==n?n:0)+1)}(p,x.total),"-",function(e,n){var a,l;return Math.min(n,((null!==(a=e.offset)&&void 0!==a?a:0)+1)*(null!==(l=e.count)&&void 0!==l?l:t.DEFAULT_SEARCH_COUNT))}(p,x.total)," of"," ",null===(o=x.total)||void 0===o?void 0:o.toLocaleString()),r.default.createElement(g,{testid:"prev-page-button",size:"small",onClick:()=>C(Wt(p,-1))},"<<"),r.default.createElement(g,{testid:"next-page-button",size:"small",onClick:()=>C(Wt(p,1))},">>"))),r.default.createElement("table",null,r.default.createElement("thead",null,r.default.createElement("tr",null,O&&r.default.createElement("th",{className:"medplum-search-icon-cell"},r.default.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=y.current;if(!(null===(e=n.searchResponse)||void 0===e?void 0:e.entry)||0===n.searchResponse.entry.length)return!1;for(const e of n.searchResponse.entry)if((null===(t=e.resource)||void 0===t?void 0:t.id)&&!n.selected[e.resource.id])return!1;return!0}(),onChange:e=>function(e){var t;e.stopPropagation();const n=e.target.checked,a={},l=null===(t=y.current)||void 0===t?void 0:t.searchResponse;n&&(null==l?void 0:l.entry)&&l.entry.forEach((e=>{var t;(null===(t=e.resource)||void 0===t?void 0:t.id)&&(a[e.resource.id]=!0)})),E(Object.assign(Object.assign({},y.current),{selected:a}))}(e)})),w.map((e=>r.default.createElement("th",{key:e.name,onClick:t=>function(e,t){E(Object.assign(Object.assign({},y.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParams:t}))}(t,e.searchParams)},en(e.name),e.searchParams&&r.default.createElement(wn,null))))),!e.hideFilters&&r.default.createElement("tr",null,O&&r.default.createElement("th",{className:"filters medplum-search-icon-cell"}),w.map((t=>r.default.createElement("th",{key:t.name,className:"filters"},t.searchParams&&r.default.createElement(On,{resourceType:N,searchParams:t.searchParams,filters:e.search.filters})))))),r.default.createElement("tbody",null,null==P?void 0:P.map((e=>e&&r.default.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>k(t,e),onAuxClick:t=>k(t,e)},O&&r.default.createElement("td",{className:"medplum-search-icon-cell"},r.default.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!v.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},y.current.selected);n?a[t]=!0:delete a[t],E(Object.assign(Object.assign({},y.current),{selected:a}))}(t,e.id)})),w.map((t=>r.default.createElement("td",{key:t.name},tn(e,t))))))))),0===(null==P?void 0:P.length)&&r.default.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),m&&r.default.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},r.default.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(m,void 0,2))),r.default.createElement(fn,{search:e.search,visible:v.popupVisible,x:v.popupX,y:v.popupY,searchParams:v.popupSearchParams,onPrompt:(e,t)=>{E(Object.assign(Object.assign({},y.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{C(e),E(Object.assign(Object.assign({},y.current),{popupVisible:!1,popupSearchParams:void 0}))},onClose:()=>{E(Object.assign(Object.assign({},y.current),{popupVisible:!1,popupSearchParams:void 0}))}}),r.default.createElement(nn,{search:e.search,visible:y.current.fieldEditorVisible,onOk:e=>{C(e),E(Object.assign(Object.assign({},y.current),{fieldEditorVisible:!1}))},onCancel:()=>{E(Object.assign(Object.assign({},y.current),{fieldEditorVisible:!1}))}}),r.default.createElement(un,{search:e.search,visible:y.current.filterEditorVisible,onOk:e=>{C(e),E(Object.assign(Object.assign({},y.current),{filterEditorVisible:!1}))},onCancel:()=>{E(Object.assign(Object.assign({},y.current),{filterEditorVisible:!1}))}}),r.default.createElement(dn,{visible:y.current.filterDialogVisible,title:"Input",resourceType:N,searchParam:v.filterDialogSearchParam,filter:v.filterDialogFilter,defaultValue:"",onOk:t=>{C(Vt(e.search,t.code,t.operator,t.value)),E(Object.assign(Object.assign({},y.current),{filterDialogVisible:!1}))},onCancel:()=>{E(Object.assign(Object.assign({},y.current),{filterDialogVisible:!1}))}}))}const kn=r.default.memo(Sn);function On(e){var t;const n=(null!==(t=e.filters)&&void 0!==t?t:[]).filter((t=>e.searchParams.find((e=>e.code===t.code))));return 0===n.length?r.default.createElement("span",null,"no filters"):r.default.createElement(r.default.Fragment,null,n.map(((t,a)=>r.default.createElement("div",{key:`filter-${a}-${n.length}`},Zt(t.operator)," ",r.default.createElement(an,{resourceType:e.resourceType,filter:t})))))}function wn(){return r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"rgba(0, 0, 0, 0.3)",strokeWidth:2},r.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function Nn(e){var t,a,l,u,o;const i=b(),[c,d]=n.useState(),[s,m]=n.useState(),{query:f,fields:p}=e,[h,v]=n.useState(),[E,y]=n.useState({}),C=n.useRef();C.current=h;const k=n.useRef({});function O(t,n){S(t.target)||(T(t),1!==t.button&&e.onClick&&e.onClick(new Tn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Tn(n,t)))}k.current=E,n.useEffect((()=>{m(void 0),i.graphql(f).then(v).catch(m)}),[i,f]),n.useEffect((()=>{i.requestSchema(e.resourceType).then((e=>{d(Object.assign({},e))})).catch(console.log)}),[i,e.resourceType]);if(!(null===(t=null==c?void 0:c.types)||void 0===t?void 0:t[e.resourceType]))return r.default.createElement(ut,null);const w=e.checkboxesEnabled;return r.default.createElement("div",{className:"medplum-search-control",onContextMenu:e=>T(e),"data-testid":"search-control"},r.default.createElement("table",null,r.default.createElement("thead",null,r.default.createElement("tr",null,w&&r.default.createElement("th",{className:"medplum-search-icon-cell"},r.default.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=C.current)||void 0===e?void 0:e.data)||void 0===t?void 0:t.ResourceList;if(!n||0===n.length)return!1;for(const e of n)if((null==e?void 0:e.id)&&!k.current[e.id])return!1;return!0}(),onChange:e=>function(e){var t,n;e.stopPropagation();const a=e.target.checked,l={},r=null===(n=null===(t=C.current)||void 0===t?void 0:t.data)||void 0===n?void 0:n.ResourceList;a&&r&&r.forEach((e=>{(null==e?void 0:e.id)&&(l[e.id]=!0)})),y(l)}(e)})),p.map((e=>r.default.createElement("th",{key:e.name},e.name))))),r.default.createElement("tbody",null,null===(l=null===(a=null==h?void 0:h.data)||void 0===a?void 0:a.ResourceList)||void 0===l?void 0:l.map((e=>e&&r.default.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>O(t,e),onAuxClick:t=>O(t,e)},w&&r.default.createElement("td",{className:"medplum-search-icon-cell"},r.default.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!E[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},k.current);n?a[t]=!0:delete a[t],y(a)}(t,e.id)})),p.map((t=>r.default.createElement("td",{key:t.name},r.default.createElement(Nt,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(o=null===(u=null==h?void 0:h.data)||void 0===u?void 0:u.ResourceList)||void 0===o?void 0:o.length)&&r.default.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),s&&r.default.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},r.default.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(s,void 0,2))),e.onBulk&&r.default.createElement(g,{size:"small",onClick:()=>e.onBulk(Object.keys(k.current))},"Bulk..."))}const xn=r.default.memo(Nn);function jn(e){const n=b();return r.default.createElement(G,{loadOptions:(e,a)=>j(this,void 0,void 0,(function*(){return function(e,t){const n=[];e.data.Patients1&&n.push(...e.data.Patients1);e.data.Patients2&&n.push(...e.data.Patients2);e.data.ServiceRequestList&&n.push(...e.data.ServiceRequestList);return function(e,t){return e.sort(((e,n)=>Pn(n,t)-Pn(e,t)))}(function(e){const t=new Set,n=[];for(const a of e)t.has(a.id)||(t.add(a.id),n.push(a));return n}(n),t).slice(0,5)}(yield n.graphql(function(e){const n=JSON.stringify(e);if(t.isUUID(e))return`{\n Patients1: PatientList(_id: ${n}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(_id: ${n}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ");return`{\n Patients1: PatientList(name: ${n}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n Patients2: PatientList(identifier: ${n}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(identifier: ${n}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ")}(e),void 0,void 0,{signal:a}),e)})),getId:e=>e.id,getIcon:e=>r.default.createElement(K,{value:e}),getDisplay:e=>r.default.createElement(_e,{value:e}),getHelpText:e=>{var t;return"Patient"===e.resourceType&&e.birthDate?"DoB: "+e.birthDate:null===(t=e.subject)||void 0===t?void 0:t.display},name:e.name,className:e.className,placeholder:e.placeholder,onChange:t=>e.onChange(t[0])})}function Pn(e,n){let a=0;if(e.identifier)for(const t of e.identifier)a=Math.max(a,Rn(t.value,n));if("Patient"===e.resourceType&&e.name)for(const l of e.name)a=Math.max(a,Rn(t.formatHumanName(l),n));return a}function Rn(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}const Dn=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function Vn(e){const t=n.useRef();function a(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,r.default.createElement("div",{className:"section"},e.actions.map((n=>r.default.createElement("div",{key:n.id},r.default.createElement(In,{action:n,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:a,onRemove:()=>{return a=n,void e.onChange(t.current.filter((e=>e!==a)));var a}})))),r.default.createElement("div",{className:"bottom-actions"},r.default.createElement("a",{href:"#",onClick:n=>{var a;T(n),a={id:Un()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function In(e){const{action:t}=e,n=function(e){var t,n,a;if(null===(t=e.definitionCanonical)||void 0===t?void 0:t.startsWith("Schedule"))return"appointment";if(null===(n=e.definitionCanonical)||void 0===n?void 0:n.startsWith("Questionnaire/"))return"questionnaire";if(null===(a=e.definitionCanonical)||void 0===a?void 0:a.startsWith("ActivityDefinition/"))return"task";return}(t),a=e.selectedKey===e.action.id,l=e.hoverKey===e.action.id;const u=a?"section editing":l?"section hovering":"section";return r.default.createElement("div",{"data-testid":t.id,className:u,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){T(t),e.setHoverKey(e.action.id)}},a?r.default.createElement(Ln,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):r.default.createElement(Fn,{action:t,actionType:n}),r.default.createElement("div",{className:"bottom-actions"},r.default.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const An={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Fn(e){const{action:t,actionType:n}=e,[a,l]=$n(t);return r.default.createElement("div",null,r.default.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&r.default.createElement("div",null,r.default.createElement(fe,{value:{reference:t.definitionCanonical}})),a&&r.default.createElement("div",null,r.default.createElement(he,{property:An,propertyType:l,value:a})))}function Ln(e){const{action:t}=e,[a,l]=n.useState(e.actionType);function u(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return r.default.createElement(r.default.Fragment,null,r.default.createElement(I,{title:"Title",htmlFor:`actionTitle-${t.id}`},r.default.createElement(i,{name:`actionTitle-${t.id}`,defaultValue:t.title,onChange:e=>u("title",e)})),r.default.createElement(I,{title:"Description",htmlFor:`actionDescription-${t.id}`},r.default.createElement(i,{name:`actionDescription-${t.id}`,defaultValue:t.description,onChange:e=>u("description",e)})),r.default.createElement(I,{title:"Type of Action",description:"The type of the action to be performed.",htmlFor:`actionType-${t.id}`},r.default.createElement(s,{name:`actionType-${t.id}`,defaultValue:a,onChange:l},r.default.createElement("option",null),r.default.createElement("option",{value:"appointment"},"Appointment"),r.default.createElement("option",{value:"lab"},"Lab"),r.default.createElement("option",{value:"questionnaire"},"Questionnaire"),r.default.createElement("option",{value:"task"},"Task"))),t.action&&t.action.length>0&&r.default.createElement(Vn,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>u("action",e)}),(()=>{switch(a){case"appointment":return r.default.createElement(Mn,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return r.default.createElement(Mn,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return r.default.createElement(Mn,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return r.default.createElement(Mn,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),r.default.createElement(I,{title:"Timing",description:"When the action should take place.",htmlFor:"timing-"+t.id},r.default.createElement(qn,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function Mn(e){const{id:n,definitionCanonical:a}=e.action,l=(null==a?void 0:a.startsWith(e.resourceType+"/"))?{reference:a}:void 0;return r.default.createElement(I,{title:e.title,description:e.description,htmlFor:n},r.default.createElement(Ue,{name:n,resourceType:e.resourceType,defaultValue:l,loadOnFocus:!0,onChange:n=>{n?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:t.getReferenceString(n)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}}))}function qn(e){const t=e.action,n="timing",[a,l]=$n(t);return r.default.createElement(Ge,{property:An,name:"timing[x]",defaultValue:a,defaultPropertyType:l,onChange:(a,l)=>{e.onChange(X(t,n,null!=l?l:n,An,a))}})}function $n(e){return ve({type:"PlanDefinitionAction",value:e},"timing")}let _n=1;function Un(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(_n=Math.max(_n,t+1))}return e}return"id-"+_n++}function Qn(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:Un(e.id),action:Qn(e.action)})))}var Hn;function zn(e){return"choice"===e.type||"open-choice"===e.type}function Bn(e){const a=b(),l=a.getProfile(),[u,o]=n.useState(),i=B(e.questionnaire),[c,d]=n.useState(),[s,m]=n.useState({});return n.useEffect((()=>{a.requestSchema("Questionnaire").then((()=>a.requestSchema("QuestionnaireResponse"))).then(o).catch(console.log)}),[a]),n.useEffect((()=>{d(i?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:t.getReferenceString(e),item:Jn(e.item)}}(i):void 0)}),[i]),u&&i?r.default.createElement(V,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&c&&e.onSubmit(Object.assign(Object.assign({},c),{questionnaire:t.getReferenceString(i),subject:e.subject,source:t.createReference(l),authored:(new Date).toISOString()}))}},i.title&&r.default.createElement("h1",null,i.title),i.item&&r.default.createElement(Kn,{items:i.item,answers:s,onChange:function(e){const n={resourceType:"QuestionnaireResponse",item:e};d(n),m(t.getQuestionnaireAnswers(n))}}),r.default.createElement(g,{type:"submit",size:"large"},e.submitButtonText||"OK")):null}function Kn(t){const[a,l]=n.useState(Jn(t.items));function u(e,n){const r=a.slice();r[e]=n,l(r),t.onChange(r)}return r.default.createElement(r.default.Fragment,null,t.items.map(((n,a)=>{if(!ea(n,t.answers))return null;if(n.type===e.QuestionnaireItemType.display)return r.default.createElement("p",{key:n.linkId},n.text);if(n.type===e.QuestionnaireItemType.group)return r.default.createElement(Wn,{key:n.linkId,item:n,answers:t.answers,onChange:e=>u(a,e)});if(n.type===e.QuestionnaireItemType.boolean){const e=n.initial&&n.initial.length>0?n.initial[0]:void 0;return r.default.createElement(Y,{key:n.linkId,title:n.text,htmlFor:n.linkId},r.default.createElement(Ee,{name:n.linkId,defaultValue:null==e?void 0:e.valueBoolean,onChange:e=>u(a,{linkId:n.linkId,text:n.text,answer:[{valueBoolean:e}]})}))}return r.default.createElement(I,{key:n.linkId,htmlFor:n.linkId,title:n.text||""},r.default.createElement(Wn,{item:n,answers:t.answers,onChange:e=>u(a,e)}))})))}function Wn(t){const n=t.item,a=n.type;if(!a)return null;const l=n.linkId;if(!l)return null;const u=n.initial&&n.initial.length>0?n.initial[0]:void 0;function o(e){t.onChange({linkId:n.linkId,text:n.text,answer:[e]})}switch(a){case e.QuestionnaireItemType.group:return r.default.createElement("div",null,r.default.createElement("h3",null,n.text),n.item&&r.default.createElement(Kn,{items:n.item,answers:t.answers,onChange:function(e){t.onChange({linkId:n.linkId,text:n.text,item:e})}}));case e.QuestionnaireItemType.boolean:return r.default.createElement(Ee,{name:l,defaultValue:null==u?void 0:u.valueBoolean,onChange:e=>o({valueBoolean:e})});case e.QuestionnaireItemType.decimal:return r.default.createElement(i,{type:"number",step:"any",name:l,defaultValue:null==u?void 0:u.valueDecimal,onChange:e=>o({valueDecimal:parseFloat(e)})});case e.QuestionnaireItemType.integer:return r.default.createElement(i,{type:"number",step:1,name:l,defaultValue:null==u?void 0:u.valueInteger,onChange:e=>o({valueInteger:parseInt(e)})});case e.QuestionnaireItemType.date:return r.default.createElement(i,{type:"date",name:l,defaultValue:null==u?void 0:u.valueDate,onChange:e=>o({valueDate:e})});case e.QuestionnaireItemType.dateTime:return r.default.createElement(je,{type:"datetime-local",name:l,defaultValue:null==u?void 0:u.valueDateTime,onChange:e=>o({valueDateTime:e})});case e.QuestionnaireItemType.time:return r.default.createElement(i,{type:"time",name:l,defaultValue:null==u?void 0:u.valueTime,onChange:e=>o({valueTime:e})});case e.QuestionnaireItemType.string:return r.default.createElement(i,{type:"text",name:l,defaultValue:null==u?void 0:u.valueString,onChange:e=>o({valueString:e})});case e.QuestionnaireItemType.text:return r.default.createElement(De,{name:l,defaultValue:null==u?void 0:u.valueString,onChange:e=>o({valueString:e})});case e.QuestionnaireItemType.url:return r.default.createElement(i,{type:"url",name:l,defaultValue:null==u?void 0:u.valueUri,onChange:e=>o({valueUri:e})});case e.QuestionnaireItemType.attachment:return r.default.createElement(N,{name:l,defaultValue:null==u?void 0:u.valueAttachment,onChange:e=>o({valueAttachment:e})});case e.QuestionnaireItemType.reference:return r.default.createElement(Qe,{name:l,defaultValue:null==u?void 0:u.valueReference,onChange:e=>o({valueReference:e})});case e.QuestionnaireItemType.quantity:return r.default.createElement(Le,{name:l,defaultValue:null==u?void 0:u.valueQuantity,onChange:e=>o({valueQuantity:e})});case e.QuestionnaireItemType.choice:case e.QuestionnaireItemType.openChoice:return function(e){var t;return!!(null===(t=e.extension)||void 0===t?void 0:t.some((e=>{var t,n,a;return"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"===e.url&&"drop-down"===(null===(a=null===(n=null===(t=e.valueCodeableConcept)||void 0===t?void 0:t.coding)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code)})))}(n)?r.default.createElement(Gn,{name:l,item:n,initial:u,onChangeAnswer:o}):r.default.createElement(Yn,{name:l,item:n,initial:u,onChangeAnswer:o})}return null}function Gn(e){const{name:n,item:a,initial:l}=e,u=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],o=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:l},"value");return r.default.createElement("select",{id:n,name:n,className:"medplum-select",onChange:n=>{const l=n.currentTarget.selectedIndex;if(0===l)return void e.onChangeAnswer({});const r=a.answerOption[l-1],u=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:r},"value"),o="value"+t.capitalize(u.type);e.onChangeAnswer({[o]:u.value})}},r.default.createElement("option",null),a.answerOption&&a.answerOption.map(((e,a)=>{const l=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:e},"value"),i=`${n}-option-${a}`;return r.default.createElement("option",{key:i,value:l.value,selected:o&&t.stringify(l)===t.stringify(o)},r.default.createElement(he,{property:u,propertyType:l.type,value:l.value}))})))}function Yn(e){const{name:n,item:a,initial:l,onChangeAnswer:u}=e,o=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],i=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:l},"value");return r.default.createElement(r.default.Fragment,null,a.answerOption&&a.answerOption.map(((e,a)=>{const l=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:e},"value"),c="value"+t.capitalize(l.type),d=`${n}-option-${a}`;return r.default.createElement("div",{key:d,className:"medplum-questionnaire-option-row"},r.default.createElement("div",{className:"medplum-questionnaire-option-checkbox"},r.default.createElement("input",{type:"radio",id:d,name:n,value:l.value,defaultChecked:i&&t.stringify(l)===t.stringify(i),onChange:()=>u({[c]:l.value})})),r.default.createElement("div",null,r.default.createElement("label",{htmlFor:d},r.default.createElement(he,{property:o,propertyType:l.type,value:l.value}))))})))}function Jn(e){var t;return null!==(t=null==e?void 0:e.map(Xn))&&void 0!==t?t:[]}function Xn(e){var t,n;return{linkId:e.linkId,text:e.text,item:Jn(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Zn))&&void 0!==n?n:[]}}function Zn(e){return Object.assign({},e)}function ea(e,n){if(!e.enableWhen)return!0;const a=e.enableBehavior||"any";for(const l of e.enableWhen){const e=t.getTypedPropertyValue({type:"QuestionnaireItemEnableWhen",value:l},"answer[x]"),r=t.getTypedPropertyValue({type:"QuestionnaireResponseItemAnswer",value:n[l.question]},"value[x]"),u=t.deepEquals(e,r);if("any"===a&&u)return!0;if("all"===a&&!u)return!1}return"any"!==a}function ta(t){var a;const l=t.item,u=t.item,o="resourceType"in t.item,c=o||u.type===e.QuestionnaireItemType.group,d=null!==(a=u.linkId)&&void 0!==a?a:"[untitled]",m=t.selectedKey===t.item.id,f=t.hoverKey===t.item.id,p=n.useRef();function h(e){var n;const a=p.current;t.onChange(Object.assign(Object.assign({},a),{item:null===(n=a.item)||void 0===n?void 0:n.map((t=>t.id===e.id?e:t))}))}function v(e){var n,a;t.onChange(Object.assign(Object.assign({},t.item),{item:[...null!==(a=null===(n=t.item)||void 0===n?void 0:n.item)&&void 0!==a?a:[],e]}))}function g(e,n){t.onChange(Object.assign(Object.assign({},p.current),{[e]:n}))}p.current=t.item;const E=m?"section editing":f?"section hovering":"section";return r.default.createElement("div",{"data-testid":u.linkId,className:E,onClick:function(e){T(e),t.setSelectedKey(t.item.id)},onMouseOver:function(e){T(e),t.setHoverKey(t.item.id)}},m?r.default.createElement(r.default.Fragment,null,o&&r.default.createElement("div",null,r.default.createElement(i,{defaultValue:l.title,onChange:e=>g("title",e)})),!c&&r.default.createElement("div",null,r.default.createElement(s,{defaultValue:u.type,onChange:e=>g("type",e)},r.default.createElement("option",{value:"display"},"Display"),r.default.createElement("optgroup",{label:"Question"},r.default.createElement("option",{value:"boolean"},"Boolean"),r.default.createElement("option",{value:"decimal"},"Decimal"),r.default.createElement("option",{value:"integer"},"Integer"),r.default.createElement("option",{value:"date"},"Date"),r.default.createElement("option",{value:"dateTime"},"Date/Time"),r.default.createElement("option",{value:"time"},"Time"),r.default.createElement("option",{value:"string"},"String"),r.default.createElement("option",{value:"text"},"Text"),r.default.createElement("option",{value:"url"},"URL"),r.default.createElement("option",{value:"choice"},"Choice"),r.default.createElement("option",{value:"open-choice"},"Open Choice"),r.default.createElement("option",{value:"attachment"},"Attachment"),r.default.createElement("option",{value:"reference"},"Reference"),r.default.createElement("option",{value:"quantity"},"Quantity")))),!o&&r.default.createElement(De,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:u.text,onChange:e=>g("text",e)}),zn(u)&&r.default.createElement(na,{options:u.answerOption,onChange:e=>g("answerOption",e)})):r.default.createElement(r.default.Fragment,null,l.title&&r.default.createElement("h1",null,l.title),u.text&&r.default.createElement("p",null,u.text),!c&&r.default.createElement(Wn,{item:u,answers:{},onChange:()=>{}})),u.item&&u.item.map((e=>r.default.createElement("div",{key:e.id},r.default.createElement(ta,{item:e,selectedKey:t.selectedKey,setSelectedKey:t.setSelectedKey,hoverKey:t.hoverKey,setHoverKey:t.setHoverKey,onChange:h,onRemove:()=>function(e){var n,a;t.onChange(Object.assign(Object.assign({},t.item),{item:null===(a=null===(n=t.item)||void 0===n?void 0:n.item)||void 0===a?void 0:a.filter((t=>t!==e))}))}(e)})))),!c&&r.default.createElement("div",{className:"top-actions"},m?r.default.createElement(i,{defaultValue:u.linkId,onChange:e=>g("linkId",e),size:4}):r.default.createElement("div",null,d)),r.default.createElement("div",{className:"bottom-actions"},c&&r.default.createElement(r.default.Fragment,null,r.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),v({id:ua(),linkId:ra("q"),type:"string",text:"Question"})}},"Add item"),r.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),v({id:ua(),linkId:ra("g"),type:"group",text:"Group"})}},"Add group")),!o&&r.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),t.onRemove&&t.onRemove()}},"Remove")))}function na(e){var n;const a=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],l=null!==(n=e.options)&&void 0!==n?n:[];return r.default.createElement("div",null,l.map((t=>{const[n,u]=ve({type:"QuestionnaireItemAnswerOption",value:t},"value");return r.default.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},r.default.createElement("div",null,r.default.createElement(Ge,{key:t.id,name:"value[x]",property:a,defaultPropertyType:u,defaultValue:n,onChange:(n,a)=>{const r=[...l],u=r.findIndex((e=>e.id===t.id));r[u]={id:t.id,[a]:n},e.onChange(r)}})),r.default.createElement("div",null,r.default.createElement("a",{href:"#",onClick:n=>{T(n),e.onChange(l.filter((e=>e.id!==t.id)))}},"Remove")))})),r.default.createElement("a",{href:"#",onClick:t=>{T(t),e.onChange([...l,{id:ua()}])}},"Add choice"))}e.QuestionnaireItemType=void 0,(Hn=e.QuestionnaireItemType||(e.QuestionnaireItemType={})).group="group",Hn.display="display",Hn.question="question",Hn.boolean="boolean",Hn.decimal="decimal",Hn.integer="integer",Hn.date="date",Hn.dateTime="dateTime",Hn.time="time",Hn.string="string",Hn.text="text",Hn.url="url",Hn.choice="choice",Hn.openChoice="open-choice",Hn.attachment="attachment",Hn.reference="reference",Hn.quantity="quantity";let aa=1,la=1;function ra(e){return e+aa++}function ua(){return"id-"+la++}function oa(e){if(e)return e.forEach((e=>{var t,n;(null===(t=e.id)||void 0===t?void 0:t.match(/^id-\d+$/))&&(la=Math.max(la,parseInt(e.id.substring(3))+1)),(null===(n=e.linkId)||void 0===n?void 0:n.match(/^q\d+$/))&&(aa=Math.max(aa,parseInt(e.linkId.substring(1))+1))})),e.map((e=>Object.assign(Object.assign({},e),{id:e.id||ua(),item:oa(e.item),answerOption:ia(e.answerOption)})))}function ia(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||ua()})))}function ca(e){return r.default.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function da(e,t){return function(e,t,n){const a=[];let l=e;l.snake&&(l=l.prev);for(;l&&l.prev&&l.prev.j>=0;){const e=l.i,r=l.j;l=l.prev;const u=l.i,o=l.j,i={position:u,lines:t.slice(u,e)},c={position:o,lines:n.slice(o,r)};let d;d=0===i.lines.length&&c.lines.length>0?"insert":i.lines.length>0&&0===c.lines.length?"delete":"change",a.push({original:i,revised:c,type:d}),l.snake&&(l=l.prev)}return a}(function(e,t){const n=e.length,a=t.length,l=n+a+1,r=1+2*l,u=r/2|0,o=new Array(r);o[u+1]={i:0,j:-1,prev:void 0,snake:!0};for(let r=0;r<l;r++){for(let l=-r;l<=r;l+=2){const i=u+l,c=i-1,d=o[i+1],s=o[c];let m,f=0;l===-r||l!==r&&s.i<d.i?(f=d.i,m=d):(f=s.i+1,m=s),o[c]=void 0;let p=f-l,h={i:f,j:p,prev:sa(m),snake:!1};for(;f<n&&p<a&&e[f]===t[p];)f++,p++;if(f>h.i&&(h={i:f,j:p,prev:h,snake:!0}),o[i]=h,f>=n&&p>=a)return o[i]}o[u+r-1]=void 0}return}(e,t),e,t)}function sa(e){return e&&!e.snake&&e.prev?e.prev:e}function ma(e){const n=e.entry.filter((e=>!!e.resource)).map((e=>{var n;return{meta:null===(n=e.resource)||void 0===n?void 0:n.meta,lines:t.stringify(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),a=n[0].lines.map((e=>({id:n[0].meta.versionId,meta:n[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const a=da(t[n-1].lines,t[n].lines);for(const l of a){const a=l.original.position,r=l.original.lines,u=l.revised.lines;if("delete"!==l.type&&"change"!==l.type||e.splice(a,r.length),"insert"===l.type||"change"===l.type)for(let r=0;r<l.revised.lines.length;r++)e.splice(a+r,0,{id:t[n].meta.versionId,meta:t[n].meta,value:u[r],span:1})}}}(a,n),function(e){let t=0;for(;t<e.length;){let n=t;for(;n<e.length&&e[n].id===e[t].id;)e[n].span=-1,n++;e[t].span=n-t,t=n}}(a),a}function fa(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function pa(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return ha(n,"year");const a=Math.floor(t/2592e3);if(a>0)return ha(a,"month");const l=Math.floor(t/86400);if(l>0)return ha(l,"day");const r=Math.floor(t/3600);if(r>0)return ha(r,"hour");const u=Math.floor(t/60);return u>0?ha(u,"minute"):ha(t,"second")}function ha(e,t){return`${e} ${1===e?t:t+"s"} ago`}function va(e){return r.default.createElement(r.default.Fragment,null,"...",r.default.createElement("br",null),e.delta.original.lines.length>0&&r.default.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&r.default.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",r.default.createElement("br",null))}function ga(e){var n,a,l;const{response:u,resource:o}=e.entry;return o?r.default.createElement("tr",null,r.default.createElement("td",null,r.default.createElement(et,{value:null===(n=o.meta)||void 0===n?void 0:n.author,link:!0})),r.default.createElement("td",null,t.formatDateTime(null===(a=o.meta)||void 0===a?void 0:a.lastUpdated)),r.default.createElement("td",null,r.default.createElement(Q,{to:Ea(o)},null===(l=o.meta)||void 0===l?void 0:l.versionId))):r.default.createElement("tr",null,r.default.createElement("td",{colSpan:3},t.normalizeErrorString(null==u?void 0:u.outcome)))}function Ea(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function ya(e){const{onChangeMonth:t,onClick:a}=e,[l,u]=n.useState(ba);function o(e){u((n=>{const a=new Date(n.getTime());return a.setMonth(n.getMonth()+e),t(a),a}))}const i=n.useMemo((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),a=[];let l=[];for(let e=0;e<n.getDay();e++)l.push(void 0);for(;n.getMonth()===e.getMonth();)l.push({date:new Date(n.getTime()),available:Ca(n,t)}),6===n.getDay()&&(a.push(l),l=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)l.push(void 0);a.push(l)}return a}(l,e.slots)),[l,e.slots]);return r.default.createElement("div",null,r.default.createElement(d,null,r.default.createElement("p",{style:{flex:1}},(c=l).toLocaleString("default",{month:"long"})+" "+c.getFullYear()),r.default.createElement("p",null,r.default.createElement(g,{label:"Previous month",onClick:()=>o(-1)},"<"),r.default.createElement(g,{label:"Next month",onClick:()=>o(1)},">"))),r.default.createElement("table",{className:"medplum-calendar-table"},r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"SUN"),r.default.createElement("th",null,"MON"),r.default.createElement("th",null,"TUE"),r.default.createElement("th",null,"WED"),r.default.createElement("th",null,"THU"),r.default.createElement("th",null,"FRI"),r.default.createElement("th",null,"SAT"))),r.default.createElement("tbody",null,i.map(((e,t)=>r.default.createElement("tr",{key:"week-"+t},e.map(((e,t)=>r.default.createElement("td",{key:"day-"+t},e&&r.default.createElement("button",{disabled:!e.available,onClick:()=>a(e.date)},e.date.getDate()))))))))));var c}function ba(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Ca(e,t){for(const n of t){const t=new Date(n.start);if(t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate())return!0}return!1}function Ta(e){return ka(e.getTime())}function Sa(e){return ka(e.getTime()+26784e5)}function ka(e){return new Date(Math.max(Date.now(),e)).toISOString()}function Oa(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function wa(e){let t="medplum-tab";function n(t){T(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),r.default.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function Na(e){return r.default.createElement("div",{role:"tabpanel"},e.children)}e.AddressDisplay=u,e.AddressInput=p,e.AttachmentArrayDisplay=v,e.AttachmentArrayInput=w,e.AttachmentInput=N,e.Autocomplete=G,e.Avatar=K,e.BackboneElementInput=Ze,e.Button=g,e.Checkbox=Ee,e.CheckboxFormSection=Y,e.CodeInput=Oe,e.CodeableConceptDisplay=ae,e.CodeableConceptInput=ye,e.ContactDetailDisplay=re,e.ContactDetailInput=xe,e.ContactPointDisplay=le,e.ContactPointInput=Ne,e.DateTimeInput=je,e.DefaultResourceTimeline=function(e){return r.default.createElement(bt,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]})})},e.DescriptionList=Z,e.DescriptionListEntry=ee,e.DiagnosticReportDisplay=tt,e.Document=x,e.ElementDefinitionInputSelector=Ye,e.ElementDefinitionTypeInput=Je,e.EncounterTimeline=function(e){return r.default.createElement(bt,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${t.getReferenceString(e)}`}},{request:{method:"GET",url:`Media?encounter=${t.getReferenceString(e)}`}}]}),createCommunication:(e,n,a)=>({resourceType:"Communication",encounter:t.createReference(e),subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",encounter:t.createReference(e),subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.ErrorBoundary=mt,e.FhirPathTable=Nn,e.FooterLinks=function(e){return r.default.createElement("div",{className:"medplum-footer"},e.children)},e.Form=V,e.FormSection=I,e.Header=function(e){var l,u,o,i,c,d;const s=a.useNavigate(),m=a.useLocation(),f=y(),p=f.medplum,h=p.getLogins(),[v,E]=n.useState(!1),[b,C]=n.useState(!1);return r.default.createElement(r.default.Fragment,null,r.default.createElement("header",{role:"banner","data-testid":"header",style:{background:e.bgColor}},r.default.createElement("div",null,r.default.createElement(Q,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>C(!b)},r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},r.default.createElement("path",{fillRule:"evenodd",d:"M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z",clipRule:"evenodd"}))),r.default.createElement(Q,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},e.title||"Medplum"),f.profile&&r.default.createElement(jn,{key:`header-input-${m.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>s(`/${e.resourceType}/${e.id}`)})),f.profile&&r.default.createElement("div",{className:"medplum-nav-menu-container"},r.default.createElement(Q,{testid:"header-profile-menu-button",onClick:()=>E(!0)},r.default.createElement(K,{size:"small",color:"#f68d42",value:f.profile})),r.default.createElement(ft,{visible:v,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>E(!1)},r.default.createElement("div",{className:"medplum-nav-menu"},r.default.createElement("div",{style:{margin:"auto",padding:"8px"}},r.default.createElement(K,{size:"large",value:f.profile})),r.default.createElement("div",{style:{margin:"auto",padding:"8px"}},r.default.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},r.default.createElement(ue,{value:null===(u=null===(l=f.profile)||void 0===l?void 0:l.name)||void 0===u?void 0:u[0]})),r.default.createElement("div",{style:{margin:"4px auto 4px auto"}},null===(i=null===(o=p.getActiveLogin())||void 0===o?void 0:o.project)||void 0===i?void 0:i.display),r.default.createElement(g,{testid:"header-profile-link",onClick:()=>{E(!1),e.onProfile&&e.onProfile()}},"Manage your account")),h.length>1&&r.default.createElement("div",null,r.default.createElement("hr",null),h.map((e=>{var n,a,l,u;return(null===(n=e.profile)||void 0===n?void 0:n.reference)!==t.getReferenceString(f.profile)&&r.default.createElement("div",{className:"medplum-nav-menu-profile",key:null===(a=e.profile)||void 0===a?void 0:a.reference,onClick:()=>{p.setActiveLogin(e).then((()=>{E(!1),window.location.reload()})).catch(console.log)}},r.default.createElement("div",{className:"medplum-nav-menu-profile-icon"},r.default.createElement(K,null)),r.default.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=e.profile)||void 0===l?void 0:l.display,r.default.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(u=e.project)||void 0===u?void 0:u.display)))}))),r.default.createElement("hr",null),r.default.createElement("div",{style:{margin:"auto",padding:"8px"}},r.default.createElement(g,{testid:"header-add-account-button",onClick:()=>{s("/signin")}},"Add another account")),r.default.createElement("hr",null),r.default.createElement("div",{style:{margin:"auto",padding:"8px"}},r.default.createElement(g,{testid:"header-signout-button",onClick:()=>{E(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),r.default.createElement("hr",null),r.default.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},r.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),r.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),r.default.createElement(ft,{modal:!0,autoClose:!0,visible:b,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>C(!1)},null===(d=null===(c=e.config)||void 0===c?void 0:c.menu)||void 0===d?void 0:d.map(((t,n)=>{var a,l,u;return r.default.createElement(r.default.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},r.default.createElement("h5",null,t.title),r.default.createElement("ul",null,null===(u=t.link)||void 0===u?void 0:u.map((e=>r.default.createElement("li",{key:e.target},r.default.createElement(Q,{to:e.target},e.name))))))})),r.default.createElement("h5",null,"Settings"),r.default.createElement("ul",null,r.default.createElement("li",null,r.default.createElement(Q,{to:f.profile},"Profile")),r.default.createElement("li",null,r.default.createElement(Q,{to:"/changepassword"},"Change password")))))},e.HumanNameDisplay=ue,e.HumanNameInput=Ie,e.IdentifierInput=Ae,e.Input=i,e.InputRow=d,e.Loading=ut,e.Logo=A,e.MedplumLink=Q,e.MedplumProvider=function(e){const t=e.medplum,[a,l]=n.useState({profile:t.getProfile(),loading:!1});n.useEffect((()=>{function e(){l(Object.assign(Object.assign({},a),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,a]);const u=Object.assign(Object.assign({},a),{medplum:t});return r.default.createElement(E.Provider,{value:u},e.children)},e.MemoizedFhirPathTable=xn,e.MemoizedSearchControl=kn,e.MenuItem=ot,e.ObservationTable=nt,e.PatientTimeline=function(e){return r.default.createElement(bt,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:Dn.map((n=>({request:{method:"GET",url:n.replaceAll("$",t.getReferenceString(e))}})))}),createCommunication:(e,n,a)=>({resourceType:"Communication",subject:t.createReference(e),sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",subject:t.createReference(e),operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.PlanDefinitionBuilder=function(e){const t=b(),a=B(e.value),[l,u]=n.useState(void 0),[o,c]=n.useState(),[d,s]=n.useState(),[m,f]=n.useState();function p(){s(void 0)}function h(){c(void 0)}const v=n.useRef();if(v.current=m,n.useEffect((()=>{t.requestSchema("PlanDefinition").then(u).catch(console.log)}),[t]),n.useEffect((()=>{var e;return f((e=null!=a?a:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:Qn(e.action)}))),document.addEventListener("mouseover",p),document.addEventListener("click",h),()=>{document.removeEventListener("mouseover",p),document.removeEventListener("click",h)}}),[a]),!l||!m)return null;function E(e,t){f(Object.assign(Object.assign({},v.current),{[e]:t}))}return r.default.createElement("div",{className:"medplum-questionnaire-builder"},r.default.createElement(V,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(m)},r.default.createElement(I,{title:"Plan Title",htmlFor:"title"},r.default.createElement(i,{defaultValue:m.title,onChange:e=>E("title",e)})),r.default.createElement(Vn,{actions:m.action||[],selectedKey:o,setSelectedKey:c,hoverKey:d,setHoverKey:s,onChange:e=>E("action",e)}),r.default.createElement(g,{type:"submit",size:"large"},"Save")))},e.Popup=ft,e.QuestionnaireBuilder=function(e){const t=b(),a=B(e.questionnaire),[l,u]=n.useState(),[o,i]=n.useState(),[c,d]=n.useState(),[s,m]=n.useState();function f(){m(void 0)}function p(){d(void 0)}return n.useEffect((()=>{t.requestSchema("Questionnaire").then(u).catch(console.log)}),[t]),n.useEffect((()=>{var e;return i((e=null!=a?a:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||ua(),item:oa(e.item)}))),document.addEventListener("mouseover",f),document.addEventListener("click",p),()=>{document.removeEventListener("mouseover",f),document.removeEventListener("click",p)}}),[a]),l&&o?r.default.createElement("div",{className:"medplum-questionnaire-builder"},r.default.createElement(V,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(o)},r.default.createElement(ta,{item:o,selectedKey:c,setSelectedKey:d,hoverKey:s,setHoverKey:m,onChange:i}),r.default.createElement(g,{type:"submit",size:"large"},"Save"))):null},e.QuestionnaireForm=Bn,e.QuestionnaireFormItem=Wn,e.RangeDisplay=de,e.RangeInput=qe,e.ReferenceInput=Qe,e.RegisterForm=function(e){const{type:t,projectId:a,googleClientId:l,recaptchaSiteKey:u,onSuccess:o}=e,i=b(),[c,d]=n.useState(void 0),[s,m]=n.useState();function f(e){e.code?i.processCode(e.code).then((()=>o())).catch(console.log):e.login&&d(e.login)}return n.useEffect((()=>{"patient"===t&&c&&i.startNewPatient({login:c,projectId:a}).then((e=>i.processCode(e.code))).then((()=>o())).catch((e=>m(e)))}),[i,t,a,c,o]),r.default.createElement(x,{width:450},s&&r.default.createElement("pre",null,JSON.stringify(s,null,2)),!c&&r.default.createElement(U,{projectId:a,googleClientId:l,recaptchaSiteKey:u,handleAuthResponse:f},e.children),c&&"project"===t&&r.default.createElement(F,{login:c,handleAuthResponse:f}))},e.RequestGroupDisplay=function(e){var a;const l=b(),u=B(e.value),[o,i]=n.useState(!1),[c,d]=n.useState();return n.useEffect((()=>{u&&!o&&(l.executeBatch(function(e){var t;const n=[];if(e.action)for(const a of e.action)(null===(t=a.resource)||void 0===t?void 0:t.reference)&&n.push({request:{method:"GET",url:a.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:n}}(u)).then(d).catch(console.log),i(!0))}),[l,u,o]),u&&c?r.default.createElement("div",{className:"medplum-request-group"},null===(a=u.action)||void 0===a?void 0:a.map(((n,a)=>{var l,u,o,i,d,s;const m=n.resource&&function(e){for(const n of null==c?void 0:c.entry)if(n.resource&&e.reference===t.getReferenceString(n.resource))return n.resource;return}(n.resource),f=null===(u=null===(l=null==m?void 0:m.input)||void 0===l?void 0:l[0])||void 0===u?void 0:u.valueReference,p=null===(i=null===(o=null==m?void 0:m.output)||void 0===o?void 0:o[0])||void 0===i?void 0:i.valueReference;return r.default.createElement("div",{className:"medplum-request-group-task",key:`action-${a}`},r.default.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==m?void 0:m.status)?"🗹":"☐"),r.default.createElement("div",{className:"medplum-request-group-task-details"},r.default.createElement("div",{className:"medplum-request-group-task-title"},n.title),n.description&&r.default.createElement("div",null,n.description),r.default.createElement("div",null,"Last edited by ",r.default.createElement(_e,{value:null===(d=null==m?void 0:m.meta)||void 0===d?void 0:d.author})," on ",t.formatDateTime(null===(s=null==m?void 0:m.meta)||void 0===s?void 0:s.lastUpdated)),r.default.createElement("div",null,"Status: ",r.default.createElement(ca,{status:(null==m?void 0:m.status)||"unknown"}))),r.default.createElement("div",{className:"medplum-request-group-task-actions"},f&&!p&&r.default.createElement(g,{onClick:()=>e.onStart(m,f)},"Start"),f&&p&&r.default.createElement(g,{onClick:()=>e.onEdit(m,f,p)},"Edit")))}))):null},e.ResourceArrayDisplay=pe,e.ResourceArrayInput=He,e.ResourceBadge=et,e.ResourceBlame=function(e){var t,a;const l=b(),[u,o]=n.useState(e.history);if(n.useEffect((()=>{!e.history&&e.resourceType&&e.id&&l.readHistory(e.resourceType,e.id).then(o).catch(console.log)}),[l,e.history,e.resourceType,e.id]),!u)return r.default.createElement("div",null,"Loading...");const i=null===(a=null===(t=u.entry)||void 0===t?void 0:t[0])||void 0===a?void 0:a.resource,c=ma(u);return r.default.createElement("div",{className:"medplum-blame-container"},r.default.createElement("table",{className:"medplum-blame"},r.default.createElement("tbody",null,c.map(((e,t)=>r.default.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&r.default.createElement("td",{className:"details",rowSpan:e.span},r.default.createElement(d,{justifyContent:"space-between"},r.default.createElement(et,{value:e.meta.author,size:"xsmall",link:!0}),r.default.createElement(Q,{to:fa(i,e.meta.versionId)},pa(e.meta.lastUpdated)))),r.default.createElement("td",{className:"line-number"},t+1),r.default.createElement("td",{className:"line"},r.default.createElement("pre",{className:"line-pre"},e.value))))))))},e.ResourceDiff=function(e){let n=e.original,a=e.revised;e.ignoreMeta&&(n=Object.assign(Object.assign({},n),{meta:void 0}),a=Object.assign(Object.assign({},a),{meta:void 0}));const l=da(t.stringify(n,!0).match(/[^\r\n]+/g),t.stringify(a,!0).match(/[^\r\n]+/g));return r.default.createElement("pre",{style:{color:"gray"}},l.map(((e,t)=>r.default.createElement(va,{key:"delta"+t,delta:e}))))},e.ResourceForm=function(e){const t=b(),a=B(e.defaultValue),[l,u]=n.useState(),[o,c]=n.useState();return n.useEffect((()=>{a&&(c(JSON.parse(JSON.stringify(a))),t.requestSchema(a.resourceType).then(u).catch(console.log))}),[t,a]),l&&o?r.default.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(o)}},r.default.createElement(I,{title:"Resource Type"},r.default.createElement(i,{name:"resourceType",defaultValue:o.resourceType,disabled:!0})),r.default.createElement(I,{title:"ID"},r.default.createElement(i,{name:"id",defaultValue:o.id,disabled:!0})),r.default.createElement(Ze,{typeName:o.resourceType,defaultValue:o,outcome:e.outcome,onChange:c}),r.default.createElement(g,{type:"submit",size:"large"},"OK"),e.onDelete&&r.default.createElement(g,{type:"button",size:"large",onClick:()=>{e.onDelete(o)}},"Delete")):r.default.createElement("div",null,"Loading...")},e.ResourceHistoryTable=function(e){var t;const a=b(),[l,u]=n.useState(e.history);return n.useEffect((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then(u).catch(console.log)}),[a,e.history,e.resourceType,e.id]),l?r.default.createElement("table",{className:"medplum-table"},r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"Author"),r.default.createElement("th",null,"Date"),r.default.createElement("th",null,"Version"))),r.default.createElement("tbody",null,null===(t=l.entry)||void 0===t?void 0:t.map(((e,t)=>r.default.createElement(ga,{key:"entry-"+t,entry:e}))))):r.default.createElement("div",null,"Loading...")},e.ResourceInput=Ue,e.ResourceName=_e,e.ResourcePropertyDisplay=he,e.ResourcePropertyInput=Ge,e.ResourceTable=dt,e.ResourceTimeline=bt,e.Scheduler=function(e){var a;const l=b(),u=B(e.schedule),o=B(e.questionnaire),[i,c]=n.useState();n.useRef().current=i;const[d,s]=n.useState(ba()),[m,f]=n.useState(),[p,h]=n.useState(),[v,E]=n.useState();if(n.useEffect((()=>{u?(c([]),l.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",t.getReferenceString(u)],["start","gt"+Ta(d)],["start","lt"+Sa(d)]])).then(c).catch(console.log)):c(void 0)}),[l,u,d]),!u||!i||!o)return null;const y=null===(a=u.actor)||void 0===a?void 0:a[0];return r.default.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},r.default.createElement("div",{className:"medplum-calendar-info-pane"},y&&r.default.createElement(K,{value:y,size:"large"}),y&&r.default.createElement("h1",null,r.default.createElement(_e,{value:y})),r.default.createElement("p",null,"1 hour"),m&&r.default.createElement("p",null,m.toLocaleDateString()),p&&r.default.createElement("p",null,Oa(new Date(p.start)))),r.default.createElement("div",{className:"medplum-calendar-selection-pane"},!m&&r.default.createElement("div",null,r.default.createElement("h3",null,"Select date"),r.default.createElement(ya,{slots:i,onChangeMonth:s,onClick:f})),m&&!p&&r.default.createElement("div",null,r.default.createElement("h3",null,"Select time"),i.map((e=>{const t=new Date(e.start);return t.getTime()>m.getTime()&&t.getTime()<m.getTime()+864e5&&r.default.createElement("div",{key:e.id},r.default.createElement(g,{style:{width:150},onClick:()=>h(e)},Oa(t)))}))),m&&p&&!v&&r.default.createElement(Bn,{questionnaire:o,submitButtonText:"Next",onSubmit:E}),m&&p&&v&&r.default.createElement("div",null,r.default.createElement("h3",null,"You're all set!"),r.default.createElement("p",null,"Check your email for a calendar invite."))))},e.Scrollable=st,e.SearchChangeEvent=bn,e.SearchClickEvent=Tn,e.SearchControl=Sn,e.SearchFieldEditor=nn,e.SearchFilterEditor=un,e.SearchLoadEvent=Cn,e.Select=s,e.ServiceRequestTimeline=function(e){return r.default.createElement(bt,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,n,a)=>({resourceType:"Communication",basedOn:[t.createReference(e)],subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",basedOn:[t.createReference(e)],subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.SignInForm=function(e){const t=b(),[a,l]=n.useState(void 0),[u,o]=n.useState(void 0);function i(n){n.login&&l(n.login),n.memberships&&o(n.memberships),n.code&&(e.onCode?e.onCode(n.code):t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log))}return r.default.createElement(x,{width:450},a?u?r.default.createElement(W,{login:a,memberships:u,handleAuthResponse:i}):"new"===e.projectId?r.default.createElement(F,{login:a,handleAuthResponse:i}):r.default.createElement("div",null,"Success"):r.default.createElement(H,{projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,generatePkce:!e.onCode,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:i},e.children))},e.StatusBadge=ca,e.Tab=wa,e.TabList=function(e){return r.default.createElement(st,{className:"medplum-surface",height:50},r.default.createElement("div",{role:"tablist",className:"medplum-tablist"},r.default.createElement("div",{className:"medplum-tablist-foreground"},r.default.Children.map(e.children,((t,n)=>r.default.isValidElement(t)&&t.type===wa?r.default.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))},e.TabPanel=Na,e.TabSwitch=function(e){return r.default.createElement(r.default.Fragment,null,r.default.Children.map(e.children,(t=>r.default.isValidElement(t)&&t.type===Na&&t.props.name===e.value?t:null)))},e.TextArea=De,e.Timeline=pt,e.TimelineItem=ht,e.TitleBar=yn,e.UploadButton=O,e.addDateEqualsFilter=function(e,t,n){return Ht(e,t,n,n)},e.addDateFilter=function(e,t,n,a){return zt(e=Dt(e,t),t,n,a)},e.addDateFilterBetween=Ht,e.addField=function(e,t){if(e.fields&&e.fields.includes(t))return e;const n=[];return e.fields&&n.push(...e.fields),n.push(t),Object.assign(Object.assign({},e),{fields:n,name:void 0})},e.addFilter=Vt,e.addLastMonthFilter=qt,e.addMissingFilter=Bt,e.addNextMonthFilter=_t,e.addThisMonthFilter=$t,e.addTodayFilter=Ft,e.addTomorrowFilter=Lt,e.addYearToDateFilter=Qt,e.addYesterdayFilter=At,e.buildFieldNameString=en,e.clearFilters=function(e){return Rt(e,[])},e.clearFiltersOnField=Dt,e.convertIsoToLocal=Pe,e.convertLocalToIso=Re,e.createScriptTag=L,e.deleteFilter=It,e.formatRangeString=se,e.getOpString=Zt,e.getRecaptcha=_,e.getSearchOperators=Xt,e.getSortField=Yt,e.getTimeString=pa,e.getValueAndType=ve,e.hasFilterOnField=function(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))},e.initRecaptcha=$,e.isChoiceQuestion=zn,e.isQuestionEnabled=ea,e.isSortDescending=Jt,e.movePage=Wt,e.parseForm=P,e.renderValue=tn,e.setFilters=Rt,e.setOffset=Kt,e.setPropertyValue=X,e.setSort=Gt,e.sortByDateAndPriority=vt,e.toggleSort=function(e,t){let n=!1;return Yt(e)===t&&(n=!Jt(e)),Gt(e,t,n)},e.useMedplum=b,e.useMedplumContext=y,e.useMedplumProfile=C,e.useResource=B,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@medplum/core"),require("react"),require("react-router-dom")):"function"==typeof define&&define.amd?define(["exports","@medplum/core","react","react-router-dom"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).medplum=e.medplum||{},e.medplum.ui={}),e.medplum.core,e.React,e.ReactRouterDOM)}(this,(function(e,t,n,a){"use strict";function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=l(n);function u(e){const n=e.value;return n?r.default.createElement(r.default.Fragment,null,t.formatAddress(n)):null}function o(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return function(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=e.indexOf(".");if(n>=0&&e.substring(n+1)===t)return!0;const a=t.indexOf(".");if(a>=0&&t.substring(a+1)===e)return!0;return!1}(null===(n=e.expression)||void 0===n?void 0:n[0],t)}))}function i(e){const t=o(e.outcome,e.name),n=t&&t.length>0;return r.default.createElement("input",{id:e.name,name:e.name,type:c(e.type),size:e.size,step:e.step,className:"medplum-input",style:e.style,defaultValue:e.defaultValue||"",required:e.required,autoCapitalize:e.autoCapitalize,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,disabled:e.disabled,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function c(e){return e||"text"}function d(e){return r.default.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function s(e){const t=o(e.outcome,e.name),n=t&&t.length>0;return r.default.createElement("select",{id:e.name,name:e.name,className:"medplum-select",defaultValue:e.defaultValue||"",required:e.required,autoFocus:e.autoFocus,ref:e.inputRef,style:e.style,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"","data-testid":e.testid,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}},e.children)}function m(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function f(e,t,n){const a=e.line||[];for(;a.length<=t;)a.push("");return a[t]=n,Object.assign(Object.assign({},e),{line:a})}function p(e){const[t,a]=n.useState(e.defaultValue||{}),l=n.useRef();function u(t){a(t),e.onChange&&e.onChange(t)}return l.current=t,r.default.createElement(d,null,r.default.createElement(s,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){u(Object.assign(Object.assign({},l.current),{use:e}))}},r.default.createElement("option",null),r.default.createElement("option",null,"home"),r.default.createElement("option",null,"mobile"),r.default.createElement("option",null,"old"),r.default.createElement("option",null,"temp"),r.default.createElement("option",null,"work")),r.default.createElement(s,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){u(Object.assign(Object.assign({},l.current),{type:e}))}},r.default.createElement("option",null),r.default.createElement("option",null,"postal"),r.default.createElement("option",null,"physical"),r.default.createElement("option",null,"both")),r.default.createElement(i,{placeholder:"Line 1",defaultValue:m(t,0),onChange:function(e){u(f(l.current||{},0,e))}}),r.default.createElement(i,{placeholder:"Line 2",defaultValue:m(t,1),onChange:function(e){u(f(l.current||{},1,e))}}),r.default.createElement(i,{placeholder:"City",defaultValue:t.city,onChange:function(e){u(Object.assign(Object.assign({},l.current),{city:e}))}}),r.default.createElement(i,{placeholder:"State",defaultValue:t.state,onChange:function(e){u(Object.assign(Object.assign({},l.current),{state:e}))}}),r.default.createElement(i,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){u(Object.assign(Object.assign({},l.current),{postalCode:e}))}}))}function h(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?r.default.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&r.default.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:a,alt:null==t?void 0:t.title}),(null==n?void 0:n.startsWith("video/"))&&r.default.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},r.default.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&r.default.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},r.default.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),r.default.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},r.default.createElement("a",{href:null==t?void 0:t.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},(null==t?void 0:t.title)||"Download"))):null}function v(e){return r.default.createElement("div",null,e.values&&e.values.map(((t,n)=>r.default.createElement("div",{key:"attatchment-"+n},r.default.createElement(h,{value:t,maxWidth:e.maxWidth})))))}function g(e){const t="medplum-button"+(e.primary||"submit"===e.type?" medplum-button-primary":"")+(e.danger?" medplum-button-danger":"")+(e.borderless?" medplum-button-borderless":"")+(e.size?" medplum-button-"+e.size:"");return r.default.createElement("button",{type:e.type||"button",className:t,style:e.style,onClick:e.onClick,"aria-label":e.label,"data-testid":e.testid},e.children)}const E=n.createContext(void 0);function y(){return n.useContext(E)}function b(){return y().medplum}function C(){return y().profile}function T(e){e.preventDefault(),e.stopPropagation()}function S(e){if(k(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&k(t[0]))return!0}return!1}function k(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function O(e){const t=b(),a=n.useRef(null);function l(n){if(!n)return;if(!n.name)return;const a=n.name,l=n.type||"application/octet-stream";t.createBinary(n,a,l).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:a})})).catch((e=>{var t,n,a;alert(null===(a=null===(n=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0])||void 0===n?void 0:n.details)||void 0===a?void 0:a.text)}))}return r.default.createElement(r.default.Fragment,null,r.default.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:a,onChange:e=>function(e){T(e);const t=e.target.files;t&&Array.from(t).forEach(l)}(e)}),r.default.createElement(g,{testid:"upload-button",onClick:e=>{var t;T(e),null===(t=a.current)||void 0===t||t.click()}},e.children||"Upload..."))}function w(e){var t;const[a,l]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:[]),u=n.useRef();function o(t){l(t),e.onChange&&e.onChange(t)}return u.current=a,r.default.createElement("table",{style:{width:"100%"}},r.default.createElement("colgroup",null,r.default.createElement("col",{width:"90%"}),r.default.createElement("col",{width:"10%"})),r.default.createElement("tbody",null,a.map(((e,t)=>r.default.createElement("tr",{key:`${t}-${a.length}`},r.default.createElement("td",null,r.default.createElement(h,{value:e,maxWidth:200})),r.default.createElement("td",{className:"medplum-right"},r.default.createElement(g,{onClick:e=>{T(e);const n=a.slice();n.splice(t,1),o(n)}},"Remove"))))),r.default.createElement("tr",null,r.default.createElement("td",null),r.default.createElement("td",{className:"medplum-right"},r.default.createElement(O,{onUpload:e=>{o([...u.current,e])}})))))}function N(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return t?r.default.createElement(r.default.Fragment,null,r.default.createElement(h,{value:t,maxWidth:200}),r.default.createElement(g,{onClick:e=>{T(e),l(void 0)}},"Remove")):r.default.createElement(O,{onUpload:l})}function x(e){return r.default.createElement("main",{className:"medplum-document"},r.default.createElement("article",{style:{maxWidth:e.width}},e.children))}function j(e,t,n,a){return new(n||(n=Promise))((function(l,r){function u(e){try{i(a.next(e))}catch(e){r(e)}}function o(e){try{i(a.throw(e))}catch(e){r(e)}}function i(e){var t;e.done?l(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(u,o)}i((a=a.apply(e,t||[])).next())}))}function P(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?R(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&D(t,n);return t}function R(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function D(e,t){e[t.name]=t.value}function V(e){return r.default.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=P(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function I(e){const t=o(e.outcome,e.htmlFor),n=t&&t.length>0;return r.default.createElement("fieldset",{className:"medplum-form-section"},e.title&&r.default.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&r.default.createElement("p",null,e.description),e.children,n&&r.default.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return r.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))))}function A(e){return r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},r.default.createElement("title",null,"Medplum Logo"),r.default.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),r.default.createElement("path",{fill:e.fill||"#654b87",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),r.default.createElement("path",{fill:e.fill||"#463068",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),r.default.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),r.default.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function F(e){const t=b(),[a,l]=n.useState();return r.default.createElement(V,{style:{maxWidth:400},onSubmit:n=>j(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){l(e)}}))},r.default.createElement("div",{className:"medplum-center"},r.default.createElement(A,{size:32}),r.default.createElement("h1",null,"Create project")),r.default.createElement(I,{title:"Project Name",htmlFor:"projectName",outcome:a},r.default.createElement(i,{name:"projectName",type:"text",testid:"projectName",placeholder:"My Project",required:!0,outcome:a})),r.default.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",r.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",r.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),r.default.createElement("div",{className:"medplum-signin-buttons"},r.default.createElement("div",null),r.default.createElement("div",null,r.default.createElement(g,{type:"submit",testid:"submit"},"Create project"))))}function L(e,t){const n=document.getElementsByTagName("head")[0],a=document.createElement("script");a.async=!0,a.src=e,a.onload=t||null,n.appendChild(a)}function M(e){const t=b(),{googleClientId:a,handleGoogleCredential:l}=e,u=n.useRef(null),[o,i]=n.useState("undefined"!=typeof google),[c,d]=n.useState(!1),[s,m]=n.useState(!1);return n.useEffect((()=>{"undefined"!=typeof google?(c||(google.accounts.id.initialize({client_id:a,callback:l}),d(!0)),u.current&&!s&&(google.accounts.id.renderButton(u.current,{}),m(!0))):L("https://accounts.google.com/gsi/client",(()=>i(!0)))}),[t,a,c,o,u,s,l]),a?r.default.createElement("div",{ref:u}):null}function q(e){var t,n;if(e)return e;const a=window.location.protocol+"//"+window.location.host;return(null!==(n=null===(t="http://localhost:3000,http://127.0.0.1:3000,http://localhost:6006,http://127.0.0.1:6006,https://app.medplum.com,https://docs.medplum.com,https://storybook.medplum.com,https://graphiql.medplum.com,https://www.medplum.com")?void 0:t.split(","))&&void 0!==n?n:[]).includes(a)?"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com":void 0}function $(e){"undefined"==typeof grecaptcha&&L("https://www.google.com/recaptcha/api.js?render="+e)}function _(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>j(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function U(e){const t=q(e.googleClientId),a=e.recaptchaSiteKey,l=b(),[u,c]=n.useState(),d=o(u,void 0);return n.useEffect((()=>$(a)),[a]),r.default.createElement(V,{style:{maxWidth:400},onSubmit:t=>j(this,void 0,void 0,(function*(){try{const n=yield _(a);e.handleAuthResponse(yield l.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:a,recaptchaToken:n}))}catch(e){c(e)}}))},r.default.createElement("div",{className:"medplum-center"},e.children),d&&r.default.createElement("div",{className:"medplum-input-error"},d.map((e=>{var t,n;return r.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),t&&r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"medplum-signin-google-container"},r.default.createElement(M,{googleClientId:t,handleGoogleCredential:t=>j(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield l.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){c(e)}}))})),r.default.createElement("div",{className:"medplum-signin-separator"},"or")),r.default.createElement(I,{title:"First Name",htmlFor:"firstName",outcome:u},r.default.createElement(i,{name:"firstName",type:"text",testid:"firstName",placeholder:"First name",required:!0,autoFocus:!0,outcome:u})),r.default.createElement(I,{title:"Last Name",htmlFor:"lastName",outcome:u},r.default.createElement(i,{name:"lastName",type:"text",testid:"lastName",placeholder:"Last name",required:!0,outcome:u})),r.default.createElement(I,{title:"Email",htmlFor:"email",outcome:u},r.default.createElement(i,{name:"email",type:"email",testid:"email",placeholder:"name@domain.com",required:!0,outcome:u})),r.default.createElement(I,{title:"Password",htmlFor:"password",outcome:u},r.default.createElement(i,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:u})),r.default.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",r.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",r.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),r.default.createElement("p",{style:{fontSize:"12px",color:"#888"}},"This site is protected by reCAPTCHA and the Google"," ",r.default.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",r.default.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply."),r.default.createElement("div",{className:"medplum-signin-buttons"},r.default.createElement("div",null,r.default.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),r.default.createElement("label",{htmlFor:"remember"},"Remember me")),r.default.createElement("div",null,r.default.createElement(g,{type:"submit",testid:"submit"},"Create account"))))}function Q(e){const t=a.useNavigate();let n=function(e){if(e){if("string"==typeof e)return function(e){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/"))return e;return"/"+e}(e);if("resourceType"in e)return function(e){return`/${e.resourceType}/${e.id}`}(e);if("reference"in e)return function(e){return`/${e.reference}`}(e)}return"#"}(e.to);return e.suffix&&(n+="/"+e.suffix),r.default.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{T(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function H(e){const t=b(),a=q(e.googleClientId),[l,u]=n.useState(),c=o(l,void 0);function d(){return j(this,void 0,void 0,(function*(){e.generatePkce&&(yield t.startPkce())}))}return r.default.createElement(V,{style:{maxWidth:400},onSubmit:n=>{d().then((()=>t.startLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,email:n.email,password:n.password,remember:"true"===n.remember}))).then(e.handleAuthResponse).catch(u)}},r.default.createElement("div",{className:"medplum-center"},e.children),c&&r.default.createElement("div",{className:"medplum-input-error"},c.map((e=>{var t,n;return r.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),a&&r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"medplum-signin-google-container"},r.default.createElement(M,{googleClientId:a,handleGoogleCredential:n=>{d().then((()=>t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,googleClientId:n.clientId,googleCredential:n.credential}))).then(e.handleAuthResponse).catch(u)}})),r.default.createElement("div",{className:"medplum-signin-separator"},"or")),r.default.createElement(I,{title:"Email",htmlFor:"email",outcome:l},r.default.createElement(i,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:l})),r.default.createElement(I,{title:"Password",htmlFor:"password",outcome:l},r.default.createElement(i,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:l})),r.default.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&r.default.createElement("div",null,e.onForgotPassword&&r.default.createElement(Q,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&r.default.createElement(Q,{testid:"register",onClick:e.onRegister},"Register")),r.default.createElement("div",null,r.default.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),r.default.createElement("label",{htmlFor:"remember"},"Remember me")),r.default.createElement("div",null,r.default.createElement(g,{type:"submit",testid:"submit"},"Sign in"))))}const z={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function B(e){const t=b(),[a,l]=n.useState(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?z:e.getCachedReference(t);return}(t,e));return n.useEffect((()=>{let n=!0;return!a&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{n&&l(e)})).catch((()=>l(void 0))),()=>n=!1}),[t,a,e]),a}function K(e){var n,a;const l=B(e.value),u=e.size?"medplum-avatar "+e.size:"medplum-avatar",o=l?t.getDisplayString(l):null!==(n=e.alt)&&void 0!==n?n:"",i=o&&function(e){return e.split(" ").map((e=>e[0])).join("")}(o),c=null!==(a=l&&t.getImageSrc(l))&&void 0!==a?a:e.src,d=c?r.default.createElement("img",{src:c,alt:o}):i;return r.default.createElement("div",{className:u,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&l?r.default.createElement(Q,{to:l},d):d)}function W(e){const t=b();return r.default.createElement("div",null,r.default.createElement("div",{className:"medplum-center"},r.default.createElement(A,{size:32}),r.default.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,u;return r.default.createElement("div",{className:"medplum-nav-menu-profile",key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse).catch(console.log)}},r.default.createElement("div",{className:"medplum-nav-menu-profile-icon"},r.default.createElement(K,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),r.default.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,r.default.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(u=n.project)||void 0===u?void 0:u.display)))})))}function G(e){var t,a;const l=n.useRef(null),[u,o]=n.useState(!1),[i,c]=n.useState(void 0),[d,s]=n.useState(),[m,f]=n.useState(!1),[p,h]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[v,g]=n.useState([]),[E,y]=n.useState(-1),[b,C]=n.useState(),[S,k]=n.useState(),O=n.useRef();O.current=i;const w=n.useRef();w.current=d;const N=n.useRef();N.current=b;const x=n.useRef();function j(t){h(t),e.onChange&&e.onChange(t)}function P(t){l.current.value="";const n=e.multiple?[...p,t]:[t];o(!0),f(!1),c(""),g([]),y(-1),j(n)}function R(){var e;null===(e=l.current)||void 0===e||e.focus()}function D(){A(),o(!1),window.setTimeout((()=>{f(!1)}),200)}function V(){N.current&&(N.current.abort(),C(void 0)),void 0!==w.current&&window.clearTimeout(w.current);const t=window.setTimeout((()=>function(){var t,n;s(void 0);const a=(null===(n=null===(t=l.current)||void 0===t?void 0:t.value)||void 0===n?void 0:n.trim())||"";if(a===O.current)return;c(a);const r=new AbortController;C(r),e.loadOptions(a,r.signal).then((e=>{r.signal.aborted||(f(e.length>0),g(e),C(void 0),x.current&&(P(e[0]),k(!1)))})).catch(console.log)}()),100);s(t)}function I(e){switch(e.key){case"Enter":case"Tab":!function(e){var t;w.current||N.current||!A()?k(!0):(T(e),null===(t=l.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":F(-1),T(e);break;case"ArrowDown":F(1),T(e);break;case"Backspace":!function(e){var t;if(null===(t=l.current)||void 0===t?void 0:t.value)return;p.length>0&&(T(e),j(p.slice(0,p.length-1)))}(e);break;case",":case";":!function(e){var t;A(),T(e),null===(t=l.current)||void 0===t||t.focus()}(e)}}function A(){var t;let n;return E>=0&&E<v.length?n=v[E]:-1===E&&v.length>0?n=v[0]:e.buildUnstructured&&(null===(t=l.current)||void 0===t?void 0:t.value)&&(n=e.buildUnstructured(l.current.value)),!!n&&(P(n),!0)}function F(e){let t=E+e;t<0?t=0:t>=v.length&&(t=v.length-1),y(t)}x.current=S,n.useEffect((()=>()=>{N.current&&N.current.abort()}),[]),n.useEffect((()=>{var t;h(null!==(t=e.defaultValue)&&void 0!==t?t:[])}),[e.defaultValue]);const L=null!==(a=e.className)&&void 0!==a?a:"medplum-autocomplete-container";return r.default.createElement("div",{"data-testid":"autocomplete",className:L+(u?" focused":""),onClick:()=>R()},r.default.createElement("ul",{onClick:()=>R()},p.map((t=>r.default.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),r.default.createElement("li",{className:"medplum-autocomplete-item"},r.default.createElement("input",{type:"text",autoFocus:e.autofocus,placeholder:0===p.length?e.placeholder:void 0,autoComplete:"off",autoCapitalize:"off",spellCheck:"true",onFocus:()=>(o(!0),void(e.loadOnFocus&&V())),onBlur:()=>D(),onChange:()=>V(),onInput:()=>V(),onKeyDown:e=>I(e),ref:l,"data-testid":"input-element"}))),m&&r.default.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},v.map(((t,n)=>r.default.createElement("div",{key:e.getId(t),className:n===E?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){y(t)}(0,n),onClick:e=>function(e,t){T(e),P(t)}(e,t)},e.getIcon&&r.default.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),r.default.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&r.default.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&r.default.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},r.default.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function Y(e){return r.default.createElement("div",{className:"medplum-checkbox-form-section"},r.default.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),r.default.createElement("div",{className:"medplum-checkbox-form-section-details-container"},r.default.createElement("label",{htmlFor:e.htmlFor},e.title),r.default.createElement("p",null,e.description)))}const J=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function X(e,n,a,l,r){const u=l.type;if(u.length>1)for(const a of u){const l=n.replace("[x]",t.capitalize(a.code));l in e&&delete e[l]}return e[a]=r,e}function Z(e){return r.default.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function ee(e){return r.default.createElement(r.default.Fragment,null,r.default.createElement("dt",null,e.term),r.default.createElement("dd",null,e.children))}function te(e){const n=e.value,a=n.value;if(!a)return null;const l=n.type,u=t.globalSchema.types[l];return u?"object"==typeof a&&"name"in a&&1===Object.keys(a).length?r.default.createElement("div",null,a.name):r.default.createElement(Z,{compact:e.compact},Object.entries(u.properties).map((a=>{const l=a[0];if(J.indexOf(l)>=0)return null;const u=a[1],[o,i]=ve(n,l);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:r.default.createElement(ee,{key:l,term:t.getPropertyDisplayName(l)},r.default.createElement(he,{property:u,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):r.default.createElement("div",null,l," not implemented")}function ne(e){var t,n;return r.default.createElement(r.default.Fragment,null,(null===(t=e.value)||void 0===t?void 0:t.display)||(null===(n=e.value)||void 0===n?void 0:n.code))}function ae(e){const t=e.value;return t?t.text?r.default.createElement(r.default.Fragment,null,t.text):t.coding?r.default.createElement(r.default.Fragment,null,t.coding.map(((e,t)=>r.default.createElement(r.default.Fragment,{key:"coding-"+t},t>0&&r.default.createElement(r.default.Fragment,null,", "),r.default.createElement(ne,{value:e}))))):null:null}function le(e){const t=e.value;if(!t)return null;const n=[];return t.value&&n.push(t.value),(t.use||t.system)&&(n.push(" ["),t.use&&n.push(t.use),t.use&&t.system&&n.push(" "),t.system&&n.push(t.system),n.push("]")),r.default.createElement(r.default.Fragment,null,n.join("").trim())}function re(e){var t;const n=e.value;return n?r.default.createElement(r.default.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>r.default.createElement(le,{key:"telecom-"+t,value:e})))):null}function ue(e){const n=e.value;return n?r.default.createElement(r.default.Fragment,null,t.formatHumanName(n,e.options)):null}function oe(e){var t,n;return r.default.createElement("div",null,null===(t=e.value)||void 0===t?void 0:t.system,": ",null===(n=e.value)||void 0===n?void 0:n.value)}function ie(e){return r.default.createElement(r.default.Fragment,null,ce(e.value))}function ce(e){if(!e)return"";const t=[];return e.comparator&&(t.push(e.comparator),t.push(" ")),void 0!==e.value&&t.push(e.value),e.unit&&("%"!==e.unit&&t.push(" "),t.push(e.unit)),t.join("")}function de(e){return r.default.createElement(r.default.Fragment,null,se(e.value))}function se(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${ce(e.low)}`:!e.low&&e.high?`<= ${ce(e.high)}`:`${ce(e.low)} - ${ce(e.high)}`:""}function me(e){const t=e.value;return t?r.default.createElement(r.default.Fragment,null,r.default.createElement(ie,{value:t.numerator})," / ",r.default.createElement(ie,{value:t.denominator})):null}function fe(e){if(!e.value)return null;const n=e.value.display||e.value.reference||t.stringify(e.value);return!1!==e.link&&e.value.reference?r.default.createElement(Q,{to:e.value},n):r.default.createElement(r.default.Fragment,null,n)}function pe(e){var t,n,a;const l=e.property,u=null!==(t=e.values)&&void 0!==t?t:[],o=null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code;return r.default.createElement(r.default.Fragment,null,u.map(((t,n)=>r.default.createElement("div",{key:`${n}-${u.length}`},r.default.createElement(he,{arrayElement:!0,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function he(e){var n;const{property:a,propertyType:l,value:o}=e;if("*"===(null==a?void 0:a.max)&&!e.arrayElement)return"Attachment"===l?r.default.createElement(v,{values:o,maxWidth:e.maxWidth}):r.default.createElement(pe,{property:a,values:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(l){case t.PropertyType.boolean:return r.default.createElement("div",null,void 0===o?"":Boolean(o).toString());case t.PropertyType.SystemString:case t.PropertyType.code:case t.PropertyType.date:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.string:case t.PropertyType.unsignedInt:case t.PropertyType.uri:case t.PropertyType.url:return r.default.createElement("div",null,o);case t.PropertyType.canonical:return r.default.createElement(fe,{value:{reference:o},link:e.link});case t.PropertyType.dateTime:case t.PropertyType.instant:return r.default.createElement("div",null,t.formatDateTime(o));case t.PropertyType.markdown:return r.default.createElement("pre",null,o);case t.PropertyType.Address:return r.default.createElement(u,{value:o});case t.PropertyType.Annotation:return r.default.createElement("div",null,null==o?void 0:o.text);case t.PropertyType.Attachment:return r.default.createElement(h,{value:o,maxWidth:e.maxWidth});case t.PropertyType.CodeableConcept:return r.default.createElement(ae,{value:o});case t.PropertyType.Coding:return r.default.createElement(ne,{value:o});case t.PropertyType.ContactDetail:return r.default.createElement(re,{value:o});case t.PropertyType.ContactPoint:return r.default.createElement(le,{value:o});case t.PropertyType.HumanName:return r.default.createElement(ue,{value:o});case t.PropertyType.Identifier:return r.default.createElement(oe,{value:o});case t.PropertyType.Period:return r.default.createElement("div",null,t.formatPeriod(o));case t.PropertyType.Quantity:return r.default.createElement(ie,{value:o});case t.PropertyType.Range:return r.default.createElement(de,{value:o});case t.PropertyType.Ratio:return r.default.createElement(me,{value:o});case t.PropertyType.Reference:return r.default.createElement(fe,{value:o,link:e.link});case t.PropertyType.Timing:return r.default.createElement("div",null,t.formatTiming(o));default:if(!(null==a?void 0:a.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return r.default.createElement(te,{value:{type:t.buildTypeName(null===(n=null==a?void 0:a.path)||void 0===n?void 0:n.split(".")),value:o},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function ve(e,n){const a=t.getTypedPropertyValue(e,n);return a?Array.isArray(a)?[a.map((e=>e.value)),a[0].type]:[a.value,a.type]:[void 0,"undefined"]}function ge(e){const a=C(),[l,u]=n.useState(e.defaultValue||{});return n.useRef().current=l,r.default.createElement(i,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:l.text,onChange:function(n){const l=n?{text:n,authorReference:a&&t.createReference(a),time:(new Date).toISOString()}:{};u(l),e.onChange&&e.onChange(l)}})}function Ee(e){return r.default.createElement("input",{id:e.name,name:e.name,className:"medplum-checkbox",type:"checkbox",value:"true",defaultChecked:!!e.defaultValue,required:e.required,ref:e.inputRef,"data-testid":e.testid,disabled:e.disabled,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}})}function ye(e){const t=b();let n;return e.defaultValue&&(n=[e.defaultValue]),r.default.createElement(G,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map(be)))},buildUnstructured:Ce,getId:Te,getDisplay:Se,name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function be(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function Ce(e){return{text:e}}function Te(e){return e.coding&&e.coding.length>0?e.coding[0].code:t.stringify(e)}function Se(e){var t,n,a,l,u,o;const i=null!==(o=null!==(a=null===(n=null===(t=e.coding)||void 0===t?void 0:t[0])||void 0===n?void 0:n.display)&&void 0!==a?a:null===(u=null===(l=e.coding)||void 0===l?void 0:l[0])||void 0===u?void 0:u.code)&&void 0!==o?o:e.text;return r.default.createElement(r.default.Fragment,null,i)}const ke={};function Oe(e){const t=b();let n;return e.defaultValue&&(n=[e.defaultValue]),r.default.createElement(G,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>{const t=e.expansion.contains;return t.forEach((e=>ke[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>r.default.createElement(r.default.Fragment,null,ke[e]||e),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function we(e){const t=b();let n;return e.defaultValue&&(n=[e.defaultValue]),r.default.createElement(G,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map((e=>({system:e.system,code:e.code,display:e.display})))))},buildUnstructured:e=>({code:e}),getId:e=>e.code,getDisplay:e=>r.default.createElement(ne,{value:e}),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Ne(e){const[t,a]=n.useState(e.defaultValue),l=n.useRef();function u(t){t&&0===Object.keys(t).length&&(t=void 0),a(t),e.onChange&&e.onChange(t)}return l.current=t,r.default.createElement(d,null,r.default.createElement(s,{defaultValue:null==t?void 0:t.system,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{system:e});e||delete t.system,u(t)},testid:"system"},r.default.createElement("option",null),r.default.createElement("option",null,"email"),r.default.createElement("option",null,"fax"),r.default.createElement("option",null,"pager"),r.default.createElement("option",null,"phone"),r.default.createElement("option",null,"other"),r.default.createElement("option",null,"sms"),r.default.createElement("option",null,"url")),r.default.createElement(s,{defaultValue:null==t?void 0:t.use,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{use:e});e||delete t.use,u(t)},testid:"use"},r.default.createElement("option",null),r.default.createElement("option",null,"home"),r.default.createElement("option",null,"mobile"),r.default.createElement("option",null,"old"),r.default.createElement("option",null,"temp"),r.default.createElement("option",null,"work")),r.default.createElement(i,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{value:e});e||delete t.value,u(t)}}))}function xe(e){var t;const[a,l]=n.useState(e.defaultValue),u=n.useRef();function o(t){l(t),e.onChange&&e.onChange(t)}return u.current=a,r.default.createElement(d,null,r.default.createElement(i,{name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:null==a?void 0:a.name,onChange:function(e){const t=Object.assign(Object.assign({},u.current),{name:e});e||delete t.name,o(t)}}),r.default.createElement(Ne,{name:e.name+"-telecom",defaultValue:null===(t=null==a?void 0:a.telecom)||void 0===t?void 0:t[0],onChange:function(e){const t=Object.assign(Object.assign({},u.current),{telecom:e&&[e]});e||delete t.telecom,o(t)}}))}function je(e){return r.default.createElement(i,Object.assign({},e,{type:"datetime-local",defaultValue:Pe(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(Re(t))}}))}function Pe(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toLocaleDateString("sv")+"T"+n.toLocaleTimeString("sv"):""}function Re(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toISOString():""}function De(e){const t="medplum-textarea"+(e.monospace?" monospace":""),n=o(e.outcome,e.name),a=n&&n.length>0;return r.default.createElement("textarea",{id:e.name,name:e.name,className:t,defaultValue:e.defaultValue||"",required:e.required,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":a,"aria-describedby":a?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,style:e.style,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function Ve(e){return r.default.createElement(De,{testid:"extension-input",name:e.name,defaultValue:t.stringify(e.defaultValue),monospace:!0,onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Ie(e){var t,a,l;const[u,o]=n.useState(e.defaultValue),c=n.useRef();function m(t){o(t),e.onChange&&e.onChange(t)}return c.current=u,r.default.createElement(d,null,r.default.createElement(s,{defaultValue:null==u?void 0:u.use,onChange:function(e){m(Object.assign(Object.assign({},c.current),{use:e||void 0}))},testid:"use"},r.default.createElement("option",null),r.default.createElement("option",null,"usual"),r.default.createElement("option",null,"official"),r.default.createElement("option",null,"temp"),r.default.createElement("option",null,"nickname"),r.default.createElement("option",null,"anonymous"),r.default.createElement("option",null,"old"),r.default.createElement("option",null,"maiden")),r.default.createElement(i,{placeholder:"Prefix",defaultValue:null===(t=null==u?void 0:u.prefix)||void 0===t?void 0:t.join(" "),onChange:function(e){m(Object.assign(Object.assign({},c.current),{prefix:e?e.split(" "):void 0}))}}),r.default.createElement(i,{placeholder:"Given",defaultValue:null===(a=null==u?void 0:u.given)||void 0===a?void 0:a.join(" "),onChange:function(e){m(Object.assign(Object.assign({},c.current),{given:e?e.split(" "):void 0}))}}),r.default.createElement(i,{placeholder:"Family",defaultValue:null==u?void 0:u.family,onChange:function(e){m(Object.assign(Object.assign({},c.current),{family:e||void 0}))}}),r.default.createElement(i,{placeholder:"Suffix",defaultValue:null===(l=null==u?void 0:u.suffix)||void 0===l?void 0:l.join(" "),onChange:function(e){m(Object.assign(Object.assign({},c.current),{suffix:e?e.split(" "):void 0}))}}))}function Ae(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(i,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>l(Object.assign(Object.assign({},t),{system:e}))}),r.default.createElement(i,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>l(Object.assign(Object.assign({},t),{value:e}))}))}function Fe(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(i,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>l(Object.assign(Object.assign({},t),{start:e}))}),r.default.createElement(i,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>l(Object.assign(Object.assign({},t),{end:e}))}))}function Le(e){var t;const[a,l]=n.useState(e.defaultValue);function u(t){l(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(s,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==a?void 0:a.comparator,onChange:e=>u(Object.assign(Object.assign({},a),{comparator:e}))},r.default.createElement("option",null),r.default.createElement("option",null,"<"),r.default.createElement("option",null,"<="),r.default.createElement("option",null,">="),r.default.createElement("option",null,">")),r.default.createElement(i,{name:e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==a?void 0:a.value)||void 0===t?void 0:t.toString(),onChange:e=>u(Object.assign(Object.assign({},a),{value:Me(e)}))}),r.default.createElement(i,{placeholder:"Unit",defaultValue:null==a?void 0:a.unit,onChange:e=>u(Object.assign(Object.assign({},a),{unit:e}))}))}function Me(e){if(e)return parseFloat(e)}function qe(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(Le,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>l(Object.assign(Object.assign({},t),{low:e}))}),r.default.createElement(Le,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>l(Object.assign(Object.assign({},t),{high:e}))}))}function $e(e){const[t,a]=n.useState(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return r.default.createElement(d,null,r.default.createElement(Le,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>l(Object.assign(Object.assign({},t),{numerator:e}))}),r.default.createElement(Le,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>l(Object.assign(Object.assign({},t),{denominator:e}))}))}function _e(e){const n=B(e.value);if(!n)return null;const a=t.getDisplayString(n);return e.link?r.default.createElement(Q,{to:n},a):r.default.createElement("span",null,a)}function Ue(e){const t=b(),a=B(e.defaultValue),[l,u]=n.useState(),o=n.useRef(e.resourceType);return o.current=e.resourceType,n.useEffect((()=>{u(a)}),[a]),r.default.createElement(G,{loadOptions:e=>j(this,void 0,void 0,(function*(){return t.search(o.current,"name="+encodeURIComponent(e)+"&_count=10").then((e=>e.entry.map((e=>e.resource))))})),getId:e=>e.id,getIcon:e=>r.default.createElement(K,{value:e}),getDisplay:e=>r.default.createElement(_e,{value:e}),getHelpText:e=>{if("Patient"===e.resourceType&&e.birthDate)return"DoB: "+e.birthDate},name:e.name,defaultValue:l?[l]:void 0,className:e.className,placeholder:e.placeholder,loadOnFocus:e.loadOnFocus,onChange:t=>{var n;n=t.length>0?t[0]:void 0,u(n),e.onChange&&e.onChange(n)}})}function Qe(e){const a=e.targetTypes,l=function(e,t){var n;const a=null===(n=null==e?void 0:e.reference)||void 0===n?void 0:n.split("/")[0];if(a)return a;if(t&&t.length>0)return t[0];return}(e.defaultValue,a),[u,o]=n.useState(e.defaultValue),[c,m]=n.useState(l);n.useRef().current=u;return n.useRef().current=c,r.default.createElement(d,null,a?r.default.createElement(s,{testid:"reference-input-resource-type-select",defaultValue:c,onChange:m},a.map((e=>r.default.createElement("option",{key:e,value:e},e)))):r.default.createElement(i,{testid:"reference-input-resource-type-input",defaultValue:c,onChange:m}),r.default.createElement(Ue,{resourceType:c,name:e.name+"-id",defaultValue:u,onChange:n=>{var a;a=n?t.createReference(n):void 0,o(a),e.onChange&&e.onChange(a)}}))}function He(e){const[t,a]=n.useState(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),l=n.useRef();function u(t){a(t),e.onChange&&e.onChange(t)}return l.current=t,r.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},r.default.createElement("colgroup",null,r.default.createElement("col",{width:"90%"}),r.default.createElement("col",{width:"10%"})),r.default.createElement("tbody",null,t.map(((n,a)=>r.default.createElement("tr",{key:`${a}-${t.length}`},r.default.createElement("td",null,r.default.createElement(Ge,{arrayElement:!0,property:e.property,name:e.name+"."+a,defaultValue:n,onChange:e=>{const t=[...l.current];t[a]=e,u(t)}})),r.default.createElement("td",{style:{textAlign:"right"}},r.default.createElement(g,{onClick:e=>{T(e);const t=[...l.current];t.splice(a,1),u(t)}},"Remove"))))),r.default.createElement("tr",null,r.default.createElement("td",null),r.default.createElement("td",{style:{textAlign:"right"}},r.default.createElement(g,{onClick:e=>{T(e);const t=[...l.current];t.push(void 0),u(t)}},"Add")))))}function ze(e){const[t,a]=n.useState(100),[l,u]=n.useState(100);if(!e.visible)return null;return r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"modal-dialog-bg"}),r.default.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:l+"px"}},r.default.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){T(e);const n=e.clientX-t,r=e.clientY-l;function o(e){T(e),a(e.clientX-n),u(e.clientY-r)}document.addEventListener("mouseup",(function e(t){T(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",o,!0)}),!0),document.addEventListener("mousemove",o,!0)}(e)},r.default.createElement("span",{className:"modal-dialog-title-text"},e.title),r.default.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),r.default.createElement("div",{className:"modal-dialog-content"},e.children),r.default.createElement("div",{className:"modal-dialog-buttons"},r.default.createElement(g,{testid:"dialog-ok",onClick:e.onOk},"OK"),r.default.createElement(g,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Be=["sun","mon","tue","wed","thu","fri","sat"];function Ke(e){const[a,l]=n.useState(e.defaultValue||{}),[u,o]=n.useState(!1),i=n.useRef();return i.current=a,r.default.createElement(r.default.Fragment,null,r.default.createElement(d,null,r.default.createElement("span",null,t.formatTiming(i.current)||"No repeat"),r.default.createElement(g,{onClick:()=>o(!0)},"Edit")),r.default.createElement(We,{visible:u,defaultValue:i.current,onOk:t=>{e.onChange&&e.onChange(t),l(t),o(!1)},onCancel:()=>o(!1)}))}function We(e){var t,a;const[l,u]=n.useState(e.defaultValue||{}),o=n.useRef();function c(e){u(Object.assign(Object.assign({},o.current),{repeat:e}))}function m(e,t){t?function(e){var t,n,a;const l=(null===(n=null===(t=o.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)||c(Object.assign(Object.assign({},null===(a=o.current)||void 0===a?void 0:a.repeat),{dayOfWeek:[...l,e]}))}(e):function(e){var t,n,a;const l=(null===(n=null===(t=o.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)&&c(Object.assign(Object.assign({},null===(a=o.current)||void 0===a?void 0:a.repeat),{dayOfWeek:l.filter((t=>t!==e))}))}(e)}return o.current=l,r.default.createElement(ze,{title:"Timing",visible:e.visible,onOk:()=>e.onOk(l),onCancel:()=>e.onCancel()},r.default.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},r.default.createElement(I,{title:"Starts on",htmlFor:"timing-dialog-start"},r.default.createElement(je,{name:"timing-dialog-start",onChange:e=>{return t=e,void u(Object.assign(Object.assign({},o.current),{event:[t]}));var t}})),r.default.createElement(I,{title:"Repeat every",htmlFor:"timing-dialog-period"},r.default.createElement(d,null,r.default.createElement(i,{type:"number",step:1,name:"timing-dialog-period",defaultValue:null===(t=null==l?void 0:l.repeat)||void 0===t?void 0:t.period,onChange:e=>function(e){var t;c(Object.assign(Object.assign({},null===(t=o.current)||void 0===t?void 0:t.repeat),{period:e}))}(parseInt(e))}),r.default.createElement(s,{name:"timing-dialog-periodUnit",defaultValue:null===(a=null==l?void 0:l.repeat)||void 0===a?void 0:a.periodUnit,onChange:e=>function(e){var t;c(Object.assign(Object.assign({},null===(t=o.current)||void 0===t?void 0:t.repeat),{periodUnit:e}))}(e)},r.default.createElement("option",{value:"d"},"day"),r.default.createElement("option",{value:"wk"},"week"),r.default.createElement("option",{value:"mo"},"month"),r.default.createElement("option",{value:"a"},"year")))),r.default.createElement(I,{title:"Repeat on"},r.default.createElement(d,null,Be.map((e=>r.default.createElement(r.default.Fragment,{key:e},r.default.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),r.default.createElement(Ee,{name:"timing-dialog-repeat-"+e,onChange:t=>m(e,t)}))))))))}function Ge(e){var t,n,a;const l=e.property,u=null!==(t=e.defaultPropertyType)&&void 0!==t?t:null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code,o=e.name,i=e.defaultValue;if("*"===l.max&&!e.arrayElement)return"Attachment"===u?r.default.createElement(w,{name:o,defaultValue:i,onChange:e.onChange}):r.default.createElement(He,{property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?r.default.createElement(Ye,Object.assign({elementDefinitionTypes:c},e)):r.default.createElement(Je,Object.assign({elementDefinitionType:c[0]},e))}function Ye(e){const a=e.elementDefinitionTypes;let l;e.defaultPropertyType&&(l=a.find((t=>t.code===e.defaultPropertyType))),l||(l=a[0]);const[u,o]=n.useState(l);return r.default.createElement(d,null,r.default.createElement(s,{style:{width:"200px"},defaultValue:null==u?void 0:u.code,onChange:e=>{o(a.find((t=>t.code===e)))}},a.map((e=>r.default.createElement("option",{key:e.code,value:e.code},e.code)))),r.default.createElement(Je,Object.assign({},e,{elementDefinitionType:u,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",t.capitalize(u.code)))}})))}function Je(e){var n;const a=e.property,l=e.elementDefinitionType.code,u=e.name,o=e.defaultValue;switch(l){case t.PropertyType.SystemString:case t.PropertyType.canonical:case t.PropertyType.string:case t.PropertyType.time:case t.PropertyType.uri:case t.PropertyType.url:return r.default.createElement(i,{type:"text",name:u,testid:u,defaultValue:o,onChange:e.onChange,outcome:e.outcome});case t.PropertyType.date:return r.default.createElement(i,{type:"date",name:u,testid:u,defaultValue:o,onChange:e.onChange,outcome:e.outcome});case t.PropertyType.dateTime:case t.PropertyType.instant:return r.default.createElement(je,{type:"datetime-local",name:u,testid:u,defaultValue:o,onChange:e.onChange,outcome:e.outcome});case t.PropertyType.decimal:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.unsignedInt:return r.default.createElement(i,{type:"number",step:l===t.PropertyType.decimal?"any":1,name:u,testid:u,defaultValue:o,onChange:t=>{e.onChange&&e.onChange(parseFloat(t))},outcome:e.outcome});case t.PropertyType.code:return r.default.createElement(Oe,{property:a,name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.boolean:return r.default.createElement(Ee,{name:u,testid:u,defaultValue:!!o,onChange:t=>{e.onChange&&e.onChange(t)}});case t.PropertyType.markdown:return r.default.createElement(De,{name:u,testid:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Address:return r.default.createElement(p,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Annotation:return r.default.createElement(ge,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Attachment:return r.default.createElement(N,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.CodeableConcept:return r.default.createElement(ye,{property:a,name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Coding:return r.default.createElement(we,{property:a,name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.ContactDetail:return r.default.createElement(xe,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.ContactPoint:return r.default.createElement(Ne,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Extension:return r.default.createElement(Ve,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.HumanName:return r.default.createElement(Ie,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Identifier:return r.default.createElement(Ae,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Period:return r.default.createElement(Fe,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Quantity:return r.default.createElement(Le,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Range:return r.default.createElement(qe,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Ratio:return r.default.createElement($e,{name:u,defaultValue:o,onChange:e.onChange});case t.PropertyType.Reference:return r.default.createElement(Qe,{name:u,defaultValue:o,targetTypes:Xe(a),onChange:e.onChange});case t.PropertyType.Timing:return r.default.createElement(Ke,{name:u,defaultValue:o,onChange:e.onChange});default:return r.default.createElement(Ze,{typeName:t.buildTypeName(null===(n=a.path)||void 0===n?void 0:n.split(".")),defaultValue:o,onChange:e.onChange,outcome:e.outcome})}}function Xe(e){var t,n,a;return null===(a=null===(n=null===(t=null==e?void 0:e.type)||void 0===t?void 0:t[0])||void 0===n?void 0:n.targetProfile)||void 0===a?void 0:a.map((e=>e.split("/").pop()))}function Ze(e){var a;const[l,u]=n.useState(null!==(a=e.defaultValue)&&void 0!==a?a:{});function o(t){u(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=t.globalSchema.types[i];if(!c)return r.default.createElement("div",null,i," not implemented");const d={type:i,value:l};return r.default.createElement(r.default.Fragment,null,Object.entries(c.properties).map((n=>{const a=n[0];if("id"===a||J.indexOf(a)>=0)return null;const u=n[1];if(!u.type)return null;const[i,c]=ve(d,a);return 1===u.type.length&&"boolean"===u.type[0].code?r.default.createElement(Y,{key:a,title:t.getPropertyDisplayName(a),description:u.definition,htmlFor:a},r.default.createElement(Ge,{property:u,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,t)=>{o(X(l,a,null!=t?t:a,n[1],e))}})):r.default.createElement(I,{key:a,title:t.getPropertyDisplayName(a),description:u.definition,htmlFor:a,outcome:e.outcome},r.default.createElement(Ge,{property:u,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,t)=>{o(X(l,a,null!=t?t:a,n[1],e))}}))})))}function et(e){var t;return r.default.createElement("div",{className:"medplum-resource-badge"},r.default.createElement(K,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),r.default.createElement(_e,{value:e.value,link:e.link}))}function tt(e){var n,a;const l=B(e.value),u=B(null===(n=null==l?void 0:l.specimen)||void 0===n?void 0:n[0]);if(!l)return null;let o="";if(l.presentedForm&&l.presentedForm.length>0){const e=l.presentedForm[0];(null===(a=e.contentType)||void 0===a?void 0:a.startsWith("text/plain"))&&e.data&&(o=window.atob(e.data))}if(null==u?void 0:u.note)for(const e of u.note)o+=e.text+"\n\n";return r.default.createElement("div",{className:"medplum-diagnostic-report"},r.default.createElement("h1",null,"Diagnostic Report"),r.default.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&r.default.createElement("dl",null,r.default.createElement("dt",null,"Subject"),r.default.createElement("dd",null,r.default.createElement(et,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>r.default.createElement("dl",{key:e.reference},r.default.createElement("dt",null,"Interpreter"),r.default.createElement("dd",null,r.default.createElement(et,{value:e,link:!0}))))),l.issued&&r.default.createElement("dl",null,r.default.createElement("dt",null,"Issued"),r.default.createElement("dd",null,t.formatDateTime(l.issued))),l.status&&r.default.createElement("dl",null,r.default.createElement("dt",null,"Status"),r.default.createElement("dd",null,t.capitalize(l.status)))),l.result&&r.default.createElement(nt,{value:l.result}),o&&r.default.createElement("pre",null,o.trim()))}function nt(e){var t;return r.default.createElement("table",{className:"medplum-table"},r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"Test"),r.default.createElement("th",null,"Value"),r.default.createElement("th",null,"Reference Range"),r.default.createElement("th",null,"Interpretation"))),r.default.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>r.default.createElement(at,{key:"obs-"+t,value:e})))))}function at(e){const t=B(e.value);return t?r.default.createElement("tr",null,r.default.createElement("td",null,r.default.createElement(Q,{to:t},r.default.createElement(ae,{value:t.code}))),r.default.createElement("td",null,r.default.createElement(lt,{value:t})),r.default.createElement("td",null,r.default.createElement(rt,{value:t.referenceRange})),r.default.createElement("td",null,t.interpretation&&t.interpretation.length>0&&r.default.createElement(ae,{value:t.interpretation[0]}))):null}function lt(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?r.default.createElement(ie,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?r.default.createElement(r.default.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?r.default.createElement(r.default.Fragment,null,n.component.map(((e,t)=>r.default.createElement(lt,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function rt(e){const t=e.value&&e.value.length>0&&e.value[0];return t?r.default.createElement(de,{value:t}):null}function ut(){return r.default.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},r.default.createElement("div",{className:"medplum-loading-container"},r.default.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},r.default.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function ot(e){return r.default.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function it(e){const a=b(),[l,u]=n.useState();if(n.useEffect((()=>{a.requestSchema(e.original.resourceType).then(u).catch(console.log)}),[a,e.original.resourceType]),!l)return null;const o=l.types[e.original.resourceType];return o?r.default.createElement("table",{className:"medplum-diff-table"},r.default.createElement("colgroup",null,r.default.createElement("col",{style:{width:"30%"}}),r.default.createElement("col",{style:{width:"35%"}}),r.default.createElement("col",{style:{width:"35%"}})),r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"Property"),r.default.createElement("th",null,"Before"),r.default.createElement("th",null,"After"))),r.default.createElement("tbody",null,Object.entries(o.properties).map((n=>{const a=n[0];if("id"===a||"meta"===a)return null;const l=n[1],[u,o]=ve(t.toTypedValue(e.original),a),[i,c]=ve(t.toTypedValue(e.revised),a);return ct(u)&&ct(i)||t.stringify(u)===t.stringify(i)?null:r.default.createElement("tr",{key:a},r.default.createElement("td",null,t.getPropertyDisplayName(a)),r.default.createElement("td",{className:"medplum-diff-removed"},r.default.createElement(he,{property:l,propertyType:o,value:u,ignoreMissingValues:!0})),r.default.createElement("td",{className:"medplum-diff-added"},r.default.createElement(he,{property:l,propertyType:c,value:i,ignoreMissingValues:!0})))})))):null}function ct(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function dt(e){const t=b(),a=B(e.value),[l,u]=n.useState();return n.useEffect((()=>{a&&t.requestSchema(a.resourceType).then(u).catch(console.log)}),[t,a]),l&&a?r.default.createElement(te,{value:{type:a.resourceType,value:a},ignoreMissingValues:e.ignoreMissingValues}):null}function st(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return r.default.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},r.default.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class mt extends r.default.Component{constructor(e){super(e),this.state={}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("Uncaught error:",e,t)}render(){return this.state.error?r.default.createElement("h1",null,"Something went wrong."):this.props.children}}function ft(e){const t=n.useRef(null),l=a.useLocation(),u=n.useRef();e.visible?void 0===u.current&&(u.current=l):u.current=void 0;const o=n.useRef();o.current=e,n.useEffect((()=>{function n(n){var a,l;(null===(a=o.current)||void 0===a?void 0:a.visible)&&(null===(l=o.current)||void 0===l?void 0:l.autoClose)&&(null==t?void 0:t.current)&&!t.current.contains(n.target)&&(T(n),e.onClose())}function a(e){var t;(null===(t=o.current)||void 0===t?void 0:t.visible)&&T(e)}return document.addEventListener("click",n,!0),window.addEventListener("wheel",a,{passive:!1}),window.addEventListener("touchmove",a,!0),()=>{document.removeEventListener("click",n,!0),window.removeEventListener("wheel",a),window.removeEventListener("touchmove",a,!0)}}),[e]),n.useEffect((()=>{e.visible&&l!==u.current&&e.onClose()}),[l,e]);const i={display:e.visible?"block":"none"};return e.anchor&&(e.anchor.right+250<document.body.clientWidth?i.left=e.anchor.right+"px":i.right=document.body.clientWidth-e.anchor.left+"px",e.anchor.top+300<document.body.clientHeight?i.top=e.anchor.top+"px":i.bottom=document.body.clientHeight-e.anchor.top+"px"),r.default.createElement(r.default.Fragment,null,e.modal&&r.default.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),r.default.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:i,"data-testid":"popup"},e.children))}function pt(e){return r.default.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function ht(e){var a,l,u;const[o,i]=n.useState(),c=null!==(a=e.profile)&&void 0!==a?a:null===(l=e.resource.meta)||void 0===l?void 0:l.author;return r.default.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},r.default.createElement("div",{className:"medplum-timeline-item-header"},r.default.createElement("div",{className:"medplum-timeline-item-avatar"},r.default.createElement(K,{value:c,link:!0,size:"medium"})),r.default.createElement("div",{className:"medplum-timeline-item-title"},r.default.createElement(_e,{value:c,link:!0}),r.default.createElement("div",{className:"medplum-timeline-item-subtitle"},r.default.createElement(Q,{to:e.resource},t.formatDateTime(null===(u=e.resource.meta)||void 0===u?void 0:u.lastUpdated)),r.default.createElement("span",null,"·"),r.default.createElement(Q,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&r.default.createElement("div",{className:"medplum-timeline-item-actions"},r.default.createElement("a",{href:"#","aria-label":`Actions for ${t.getReferenceString(e.resource)}`,onClick:e=>{T(e);const t=e.currentTarget.getBoundingClientRect();i(t)}},r.default.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},r.default.createElement("g",{transform:"translate(-446 -350)"},r.default.createElement("path",{d:"M458 360a2 2 0 1 1-4 0 2 2 0 0 1 4 0m6 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0m-12 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0"})))))),r.default.createElement(mt,null,e.padding&&r.default.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&r.default.createElement(r.default.Fragment,null,e.children)),e.socialEnabled&&r.default.createElement("div",{className:"medplum-timeline-item-footer"},r.default.createElement(g,{borderless:!0},"Like"),r.default.createElement(g,{borderless:!0},"Comment")),e.popupMenuItems&&r.default.createElement(ft,{visible:!!o,anchor:o,autoClose:!0,onClose:()=>i(void 0)},e.popupMenuItems))}function vt(e){e.sort(gt)}function gt(e,t){const n=Et(e),a=Et(t);return n>a?1:n<a?-1:yt(e)-yt(t)}function Et(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function yt(e){var t;if("Communication"===e.resourceType&&e.sent)return new Date(e.sent).getTime();if(("DiagnosticReport"===e.resourceType||"Media"===e.resourceType||"Observation"===e.resourceType)&&e.issued)return new Date(e.issued).getTime();if("DocumentReference"===e.resourceType&&e.date)return new Date(e.date).getTime();const n=null===(t=e.meta)||void 0===t?void 0:t.lastUpdated;return n?new Date(n).getTime():0}function bt(e){const t=a.useNavigate(),l=b(),u=l.getProfile(),o=n.useRef(null),c=B(e.value),[d,s]=n.useState(),[m,f]=n.useState([]),p=e.buildSearchRequests,h=n.useRef(m);h.current=m;const v=n.useCallback((()=>{if(!c)return f([]),void s({});l.executeBatch(p(c)).then(E).catch(console.log)}),[l,c,p]);function E(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&s(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}vt(t),t.reverse()}f(t)}function y(e){const t=[...h.current,...e];vt(t),t.reverse(),f(t)}function C(e,t){return l.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function T(e){C(e,"stat").then(v).catch(console.log)}function S(e){C(e,"routine").then(v).catch(console.log)}function k(e){t(`/${e.resourceType}/${e.id}`)}function w(e){t(`/${e.resourceType}/${e.id}/edit`)}function N(e){t(`/${e.resourceType}/${e.id}/delete`)}function x(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return n.useEffect((()=>{v()}),[v]),c&&d?r.default.createElement(pt,null,e.createCommunication&&r.default.createElement("article",{className:"medplum-timeline-item"},r.default.createElement("div",{className:"medplum-timeline-item-header"},r.default.createElement(V,{testid:"timeline-form",onSubmit:t=>{var n;n=t.text,c&&e.createCommunication&&l.createResource(e.createCommunication(c,u,n)).then((e=>{y([e])})).catch(console.log);const a=o.current;a&&(a.value="",a.focus())}},r.default.createElement(i,{name:"text",testid:"timeline-input",inputRef:o}),r.default.createElement(g,{type:"submit"},"Comment"),r.default.createElement(O,{onUpload:function(t){c&&e.createMedia&&l.createResource(e.createMedia(c,u,t)).then((e=>{y([e])})).catch(console.log)}})))),m.map((e=>{var t;if(e.resourceType===c.resourceType&&e.id===c.id)return r.default.createElement(Tt,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:d,resource:e,onDetails:x});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return r.default.createElement(Ot,{key:n,resource:e,onDetails:k});case"Communication":return r.default.createElement(St,{key:n,resource:e,onPin:"stat"!==e.priority?T:void 0,onUnpin:"stat"===e.priority?S:void 0,onDetails:k,onEdit:w,onDelete:N});case"DiagnosticReport":return r.default.createElement(wt,{key:n,resource:e,onDetails:k,onEdit:w,onDelete:N});case"Media":return r.default.createElement(kt,{key:n,resource:e,onDetails:k,onEdit:w,onDelete:N});default:return r.default.createElement(ht,{key:n,resource:e,padding:!0},r.default.createElement(dt,{value:e,ignoreMissingValues:!0}))}}))):r.default.createElement(ut,null)}function Ct(e){return r.default.createElement(r.default.Fragment,null,e.onPin&&r.default.createElement(ot,{onClick:()=>e.onPin(e.resource),label:`Pin ${t.getReferenceString(e.resource)}`},"Pin"),e.onUnpin&&r.default.createElement(ot,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${t.getReferenceString(e.resource)}`},"Unpin"),e.onDetails&&r.default.createElement(ot,{onClick:()=>e.onDetails(e.resource),label:`Details ${t.getReferenceString(e.resource)}`},"Details"),e.onEdit&&r.default.createElement(ot,{onClick:()=>e.onEdit(e.resource),label:`Edit ${t.getReferenceString(e.resource)}`},"Edit"),e.onDelete&&r.default.createElement(ot,{onClick:()=>e.onDelete(e.resource),label:`Delete ${t.getReferenceString(e.resource)}`},"Delete"))}function Tt(e){const t=function(e,t){const n=e.entry,a=n.findIndex((e=>{var n,a,l;return(null===(a=null===(n=e.resource)||void 0===n?void 0:n.meta)||void 0===a?void 0:a.versionId)===(null===(l=t.meta)||void 0===l?void 0:l.versionId)}));if(a>=n.length-1)return;return n[a+1].resource}(e.history,e.resource);return t?r.default.createElement(ht,{resource:e.resource,padding:!0,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement(it,{original:t,revised:e.resource})):r.default.createElement(ht,{resource:e.resource,padding:!0,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement("h3",null,"Created"),r.default.createElement(dt,{value:e.resource,ignoreMissingValues:!0}))}function St(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return r.default.createElement(ht,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement("p",null,null===(n=null===(t=e.resource.payload)||void 0===t?void 0:t[0])||void 0===n?void 0:n.contentString))}function kt(e){var t;const n=null===(t=e.resource.content)||void 0===t?void 0:t.contentType,a=n&&!n.startsWith("image/")&&!n.startsWith("video/")&&"application/pdf"!==n;return r.default.createElement(ht,{resource:e.resource,padding:!!a,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement(h,{value:e.resource.content}))}function Ot(e){return r.default.createElement(ht,{resource:e.resource,padding:!0,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement(st,null,r.default.createElement("pre",null,e.resource.outcomeDesc)))}function wt(e){return r.default.createElement(ht,{resource:e.resource,padding:!0,popupMenuItems:r.default.createElement(Ct,Object.assign({},e))},r.default.createElement(tt,{value:e.resource}))}function Nt(e){let n;try{n=t.evalFhirPath(e.path,e.resource)}catch(e){return console.warn("FhirPathDisplay:",e),null}if(n.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${n.length} elements [${JSON.stringify(n,null,2)}]`);return r.default.createElement(he,{value:n[0]||"",propertyType:e.propertyType})}function xt(e,n){var a;if("_lastUpdated"===n)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===n)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const l=t.globalSchema.types[e],r=l.properties[n],u=null===(a=l.searchParams)||void 0===a?void 0:a[n.toLowerCase()];if(r&&u)return{name:n,elementDefinition:r,searchParams:[u]};if(r){let t;if(l.searchParams){const a=`${e}.${n.replaceAll("[x]","")}`;t=Object.values(l.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(a)})),0===t.length&&(t=void 0)}return{name:n,elementDefinition:r,searchParams:t}}if(u){return{name:n,elementDefinition:t.getSearchParameterDetails(e,u).elementDefinition,searchParams:[u]}}return{name:n}}const jt={string:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],fulltext:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],token:[t.Operator.EQUALS,t.Operator.NOT],reference:[t.Operator.EQUALS,t.Operator.NOT],numeric:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],quantity:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],date:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY],datetime:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY]},Pt={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing"};function Rt(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function Dt(e,t){return Rt(e,(e.filters||[]).filter((e=>e.code!==t)))}function Vt(e,t,n,a,l){l&&(e=Dt(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),Rt(e,r)}function It(e,t){if(!e.filters)return e;const n=[...e.filters];return n.splice(t,1),Object.assign(Object.assign({},e),{filters:n,name:void 0})}function At(e,t){return Mt(e,t,-1)}function Ft(e,t){return Mt(e,t,0)}function Lt(e,t){return Mt(e,t,1)}function Mt(e,t,n){const a=new Date;a.setDate(a.getDate()+n),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setDate(l.getDate()+1),l.setTime(l.getTime()-1),Ht(e,t,a,l)}function qt(e,t){return Ut(e,t,-1)}function $t(e,t){return Ut(e,t,0)}function _t(e,t){return Ut(e,t,1)}function Ut(e,t,n){const a=new Date;a.setMonth(a.getMonth()+n),a.setDate(1),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setMonth(l.getMonth()+1),l.setDate(1),l.setHours(0,0,0,0),l.setTime(l.getTime()-1),Ht(e,t,a,l)}function Qt(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return Ht(e,t,n,new Date)}function Ht(e,n,a,l){return e=zt(e=Dt(e,n),n,t.Operator.GREATER_THAN_OR_EQUALS,a),e=zt(e,n,t.Operator.LESS_THAN_OR_EQUALS,l)}function zt(e,t,n,a){return Vt(e,t,n,a.toISOString())}function Bt(e,n,a=!0){return Vt(e,n,t.Operator.MISSING,a.toString())}function Kt(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Wt(e,t){var n,a;const l=null!==(n=e.count)&&void 0!==n?n:20,r=(null!==(a=e.offset)&&void 0!==a?a:0)+t*l;return Kt(e,Math.max(r,0))}function Gt(e,t,n){return t===Yt(e)&&void 0!==n&&n===Jt(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Yt(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Jt(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Xt(e){return jt[e.type]}function Zt(e){var t;return null!==(t=Pt[e])&&void 0!==t?t:""}function en(e){let n=e;return n.includes(".")&&(n=n.split(".").pop()),"id"===n?"ID":"versionId"===n?"Version ID":(n=n.replace("[x]",""),n=n.replace(/([A-Z])/g," $1"),n=n.replace(/[-_]/g," "),n=n.replace(/\s+/g," "),n=n.trim(),n.split(/\s/).map(t.capitalize).join(" "))}function tn(e,n){var a,l;const u=n.name;return"id"===u?e.id:"meta.versionId"===u?null===(a=e.meta)||void 0===a?void 0:a.versionId:"_lastUpdated"===u?t.formatDateTime(null===(l=e.meta)||void 0===l?void 0:l.lastUpdated):n.elementDefinition&&`${e.resourceType}.${n.name}`===n.elementDefinition.path?function(e,t){var n,a,l;const u=(null===(l=null===(a=null===(n=t.path)||void 0===n?void 0:n.split("."))||void 0===a?void 0:a.pop())||void 0===l?void 0:l.replaceAll("[x]",""))||"",[o,i]=ve({type:e.resourceType,value:e},u);if(!o)return null;return r.default.createElement(he,{property:t,propertyType:i,value:o,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,n.elementDefinition):n.searchParams&&1===n.searchParams.length&&n.name===n.searchParams[0].code?function(e,n,a){const l=t.evalFhirPathTyped(n.expression,[{type:e.resourceType,value:e}]);if(!l||0===l.length)return null;if(a)return r.default.createElement(he,{propertyType:l[0].type,value:l[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return r.default.createElement(r.default.Fragment,null,l.map(((e,t)=>r.default.createElement("span",{key:`${t}-${l.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,n.searchParams[0],n.elementDefinition):null}function nn(e){var a;const[l,u]=n.useState({search:JSON.parse(t.stringify(e.search))}),o=n.useRef(null),i=n.useRef(null);function c(){var e,t;const n=null!==(e=l.search.fields)&&void 0!==e?e:[],a=null===(t=o.current)||void 0===t?void 0:t.value;if(a){const e=[...n,a];u({search:Object.assign(Object.assign({},l.search),{fields:e})})}}function d(){var e,t;const n=null!==(e=l.search.fields)&&void 0!==e?e:[],a=null===(t=i.current)||void 0===t?void 0:t.value;if(a){const e=[...n];e.splice(e.indexOf(a),1),u({search:Object.assign(Object.assign({},l.search),{fields:e})})}}function s(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(n.useEffect((()=>{u({search:e.search})}),[e.search]),!e.visible)return null;const m=e.search.resourceType,f=t.globalSchema.types[m],p=null!==(a=l.search.fields)&&void 0!==a?a:[],h=function(e){const t=[],n=new Set,a=new Set;for(const l of Object.keys(e.properties))t.push(l),n.add(l.toLowerCase()),a.add(en(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=en(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(en(l)))}return t}(f).filter((e=>!(null==p?void 0:p.includes(e)))).sort();return r.default.createElement(ze,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(l.search),onCancel:e.onCancel},r.default.createElement("div",null,r.default.createElement("table",{style:{margin:"auto"}},r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",{colSpan:2,align:"center"},"Available"),r.default.createElement("th",{colSpan:2,align:"center"},"Selected"))),r.default.createElement("tbody",null,r.default.createElement("tr",null,r.default.createElement("td",{colSpan:2,align:"center"},r.default.createElement("select",{ref:o,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"available"},h.map((e=>r.default.createElement("option",{key:e,value:e},en(e)))))),r.default.createElement("td",{colSpan:2,align:"center"},r.default.createElement("select",{ref:i,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&d()}(e),onDoubleClick:()=>{d()},"data-testid":"selected"},p.map((e=>r.default.createElement("option",{key:e,value:e},en(e)))))))),r.default.createElement("tfoot",null,r.default.createElement("tr",null,r.default.createElement("td",{align:"center"},r.default.createElement(g,{size:"small",onClick:c},"Add")),r.default.createElement("td",{align:"center"},r.default.createElement(g,{size:"small",onClick:d},"Remove")),r.default.createElement("td",{align:"center"},r.default.createElement(g,{size:"small",onClick:function(){var e,t;const n=null!==(e=l.search.fields)&&void 0!==e?e:[],a=null===(t=i.current)||void 0===t?void 0:t.value;if(a){const e=[...n],t=e.indexOf(a);s(e,t,t-1),u({search:Object.assign(Object.assign({},l.search),{fields:e})})}}},"Up")),r.default.createElement("td",{align:"center"},r.default.createElement(g,{size:"small",onClick:function(){var e,t;const n=null!==(e=l.search.fields)&&void 0!==e?e:[],a=null===(t=i.current)||void 0===t?void 0:t.value;if(a){const e=[...n],t=e.indexOf(a);s(e,t,t+1),u({search:Object.assign(Object.assign({},l.search),{fields:e})})}}},"Down")))))))}function an(e){var n,a;const{resourceType:l,filter:u}=e,o=null===(a=null===(n=t.globalSchema.types[l])||void 0===n?void 0:n.searchParams)||void 0===a?void 0:a[u.code];if(o){if("reference"===o.type)return r.default.createElement(_e,{value:{reference:u.value}});const e=t.getSearchParameterDetails(l,o);if("_lastUpdated"===u.code||e.type===t.SearchParameterType.DATETIME)return r.default.createElement(r.default.Fragment,null,t.formatDateTime(u.value))}return r.default.createElement(r.default.Fragment,null,u.value)}function ln(e){var n;const a="filter-value";switch(t.getSearchParameterDetails(e.resourceType,e.searchParam).type){case t.SearchParameterType.REFERENCE:return r.default.createElement(Qe,{name:a,defaultValue:{reference:e.defaultValue},targetTypes:null===(n=e.searchParam)||void 0===n?void 0:n.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case t.SearchParameterType.BOOLEAN:return r.default.createElement(Ee,{name:a,testid:a,defaultValue:"true"===e.defaultValue,onChange:t=>e.onChange(t.toString())});case t.SearchParameterType.DATE:return r.default.createElement(i,{type:"date",testid:a,defaultValue:e.defaultValue,onChange:e.onChange});case t.SearchParameterType.DATETIME:return r.default.createElement(je,{testid:a,defaultValue:e.defaultValue,onChange:e.onChange});case t.SearchParameterType.NUMBER:return r.default.createElement(i,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case t.SearchParameterType.QUANTITY:return r.default.createElement(Le,{name:a,defaultValue:rn(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return r.default.createElement(i,{testid:a,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function rn(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function un(e){const[a,l]=n.useState(JSON.parse(t.stringify(e.search))),[u,o]=n.useState(-1),i=n.useRef(a);if(i.current=a,n.useEffect((()=>{l(JSON.parse(t.stringify(e.search)))}),[e.search]),!e.visible)return null;const c=e.search.resourceType,d=t.globalSchema.types[c].searchParams,s=a.filters||[];return r.default.createElement(ze,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(i.current),onCancel:e.onCancel},r.default.createElement("div",{className:"medplum-filter-editor"},r.default.createElement("table",{className:"medplum-filter-editor-table"},r.default.createElement("colgroup",null,r.default.createElement("col",{style:{width:200}}),r.default.createElement("col",{style:{width:200}}),r.default.createElement("col",{style:{width:380}}),r.default.createElement("col",{style:{width:120}})),r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"Field"),r.default.createElement("th",null,"Operation"),r.default.createElement("th",null,"Value"),r.default.createElement("th",null,"Actions"))),r.default.createElement("tbody",null,s.map(((e,t)=>t===u?r.default.createElement(cn,{key:`filter-${t}-${s.length}-input`,resourceType:c,searchParams:d,defaultValue:e,okText:"Save",onOk:e=>{const n=[...s];n[t]=e,l(Rt(i.current,n)),o(-1)},onCancel:()=>o(-1)}):r.default.createElement(on,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:d,filter:e,onEdit:()=>o(t),onDelete:()=>l(It(i.current,t))}))),r.default.createElement(cn,{resourceType:c,searchParams:d,okText:"Add",onOk:function(e){l(Vt(i.current,e.code,e.operator,e.value))}})))))}function on(e){const{filter:t}=e;return r.default.createElement("tr",null,r.default.createElement("td",null,en(t.code)),r.default.createElement("td",null,Zt(t.operator)),r.default.createElement("td",null,r.default.createElement(an,{resourceType:e.resourceType,filter:t})),r.default.createElement("td",null,r.default.createElement(g,{size:"small",onClick:e.onEdit},"Edit"),r.default.createElement(g,{size:"small",onClick:e.onDelete},"Delete")))}function cn(e){var t;const[a,l]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:{}),u=n.useRef(a);u.current=a;const o=e.searchParams[a.code],i=o&&Xt(o);return r.default.createElement("tr",null,r.default.createElement("td",null,r.default.createElement(s,{testid:"filter-field",defaultValue:u.current.code,onChange:function(e){l(Object.assign(Object.assign({},u.current),{code:e}))}},r.default.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>r.default.createElement("option",{key:e,value:e},en(e)))))),r.default.createElement("td",null,i&&r.default.createElement(s,{testid:"filter-operation",defaultValue:a.operator,onChange:function(e){l(Object.assign(Object.assign({},u.current),{operator:e}))}},r.default.createElement("option",{value:""}),i.map((e=>r.default.createElement("option",{key:e,value:e},Zt(e)))))),r.default.createElement("td",null,o&&a.operator&&r.default.createElement(ln,{resourceType:e.resourceType,searchParam:o,defaultValue:a.value,onChange:function(e){l(Object.assign(Object.assign({},u.current),{value:e}))}})),r.default.createElement("td",null,a.code&&a.operator&&a.value&&r.default.createElement(g,{size:"small",onClick:()=>{e.onOk(u.current),l({})}},e.okText),e.onCancel&&r.default.createElement(g,{size:"small",onClick:e.onCancel},"Cancel")))}function dn(e){var t;const[a,l]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function u(){e.onOk(Object.assign(Object.assign({},e.filter),{value:a}))}return r.default.createElement(ze,{title:e.title,visible:e.visible,onOk:u,onCancel:e.onCancel},r.default.createElement("div",{style:{width:500}},r.default.createElement(V,{onSubmit:u},r.default.createElement(ln,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:a,autoFocus:!0,onChange:l}))))}function sn(){return r.default.createElement("div",{className:"medplum-menu-separator"})}function mn(e){const[t,a]=n.useState(!1),[l,u]=n.useState(!1),[o,i]=n.useState(void 0),c=n.useRef(null),d=n.useRef(!1);d.current=t;const s=n.useRef(!1);function m(){const e=c.current;e&&(i(e.getBoundingClientRect()),u(!0))}return s.current=l,n.useEffect((()=>{const e=window.setInterval((()=>{!s.current&&d.current?m():s.current&&!d.current&&u(!1)}),150);return()=>window.clearInterval(e)}),[]),r.default.createElement("div",{ref:c,className:"medplum-menu-item medplum-submenu-item",onClick:()=>m(),onMouseOver:()=>a(!0),onMouseLeave:()=>a(!1)},e.title,r.default.createElement("span",{className:"medplum-submenu-arrow"},"►"),r.default.createElement(ft,{visible:l,anchor:o,autoClose:!0,onClose:()=>u(!1)},e.children))}function fn(e){if(!e.searchParams)return null;function t(t,n){l(Gt(e.search,t.code,n))}function n(t){l(Dt(e.search,t.code))}function a(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})}function l(t){e.onChange(t)}const u={left:e.x,right:e.x,top:e.y,bottom:e.y};return 1===e.searchParams.length?r.default.createElement(ft,{visible:e.visible,anchor:u,autoClose:!0,onClose:e.onClose},r.default.createElement(pn,{search:e.search,searchParam:e.searchParams[0],onSort:t,onPrompt:a,onChange:l,onClear:n})):r.default.createElement(ft,{visible:e.visible,anchor:u,autoClose:!0,onClose:e.onClose},e.searchParams.map((u=>r.default.createElement(mn,{key:u.code,title:en(u.code)},r.default.createElement(pn,{search:e.search,searchParam:u,onSort:t,onPrompt:a,onChange:l,onClear:n})))))}function pn(e){switch(e.searchParam.type){case"date":return r.default.createElement(hn,Object.assign({},e));case"number":case"quantity":return r.default.createElement(vn,Object.assign({},e));case"reference":return r.default.createElement(gn,Object.assign({},e));case"string":case"token":case"uri":return r.default.createElement(En,Object.assign({},e));default:return r.default.createElement(r.default.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function hn(e){const{searchParam:n}=e,a=n.code;return r.default.createElement(r.default.Fragment,null,r.default.createElement(ot,{onClick:()=>e.onSort(n,!1)},"Sort Oldest to Newest"),r.default.createElement(ot,{onClick:()=>e.onSort(n,!0)},"Sort Newest to Oldest"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.NOT_EQUALS)},"Does not equal..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.ENDS_BEFORE)},"Before..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.STARTS_AFTER)},"After..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Between..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Lt(e.search,a))},"Tomorrow"),r.default.createElement(ot,{onClick:()=>e.onChange(Ft(e.search,a))},"Today"),r.default.createElement(ot,{onClick:()=>e.onChange(At(e.search,a))},"Yesterday"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(_t(e.search,a))},"Next Month"),r.default.createElement(ot,{onClick:()=>e.onChange($t(e.search,a))},"This Month"),r.default.createElement(ot,{onClick:()=>e.onChange(qt(e.search,a))},"Last Month"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Qt(e.search,a))},"Year to date"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a))},"Missing"),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a,!1))},"Not missing"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onClear(n)},"Clear filters"))}function vn(e){const{searchParam:n}=e,a=n.code;return r.default.createElement(r.default.Fragment,null,r.default.createElement(ot,{onClick:()=>e.onSort(n,!1)},"Sort Smallest to Largest"),r.default.createElement(ot,{onClick:()=>e.onSort(n,!0)},"Sort Largest to Smallest"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.NOT_EQUALS)},"Does not equal..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.GREATER_THAN)},"Greater than..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.LESS_THAN)},"Less than..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a))},"Missing"),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a,!1))},"Not missing"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onClear(n)},"Clear filters"))}function gn(e){const{searchParam:n}=e,a=n.code;return r.default.createElement(r.default.Fragment,null,r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.NOT)},"Does not equal..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a))},"Missing"),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a,!1))},"Not missing"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onClear(n)},"Clear filters"))}function En(e){const{searchParam:n}=e,a=n.code;return r.default.createElement(r.default.Fragment,null,r.default.createElement(ot,{onClick:()=>e.onSort(n,!1)},"Sort A to Z"),r.default.createElement(ot,{onClick:()=>e.onSort(n,!0)},"Sort Z to A"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.NOT)},"Does not equal..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.CONTAINS)},"Contains..."),r.default.createElement(ot,{onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Does not contain..."),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a))},"Missing"),r.default.createElement(ot,{onClick:()=>e.onChange(Bt(e.search,a,!1))},"Not missing"),r.default.createElement(sn,null),r.default.createElement(ot,{onClick:()=>e.onClear(n)},"Clear filters"))}function yn(e){return r.default.createElement("div",{className:"medplum-title-bar"},e.children)}class bn extends Event{constructor(e){super("change"),this.definition=e}}class Cn extends Event{constructor(e){super("load"),this.response=e}}class Tn extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function Sn(e){var a,l,u,o;const i=b(),[c,d]=n.useState(!1),[m,f]=n.useState(),{search:p,onLoad:h}=e,[v,E]=n.useState({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParams:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),y=n.useRef(v);function C(t){e.onChange&&e.onChange(new bn(t))}function k(t,n){S(t.target)||(T(t),1!==t.button&&e.onClick&&e.onClick(new Tn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Tn(n,t)))}y.current=v,n.useEffect((()=>{f(void 0),i.search(p.resourceType,t.formatSearchQuery(Object.assign(Object.assign({},p),{total:"accurate",fields:void 0}))).then((e=>{E(Object.assign(Object.assign({},y.current),{searchResponse:e})),h&&h(new Cn(e))})).catch((e=>{E(Object.assign(Object.assign({},y.current),{searchResponse:void 0})),f(e)}))}),[i,p,h]),n.useEffect((()=>{d(!1),i.requestSchema(e.search.resourceType).then((()=>d(!0))).catch(console.log)}),[i,e.search.resourceType]);if(!(c&&(null===(a=null===t.globalSchema||void 0===t.globalSchema?void 0:t.globalSchema.types)||void 0===a?void 0:a[e.search.resourceType])))return r.default.createElement(ut,null);const O=e.checkboxesEnabled,w=function(e){const t=e.resourceType,n=[];for(const a of e.fields||["id","_lastUpdated"])n.push(xt(t,a));return n}(p),N=p.resourceType,x=v.searchResponse,j=null==x?void 0:x.entry,P=null==j?void 0:j.map((e=>e.resource)),R=null===(u=null===(l=e.userConfig)||void 0===l?void 0:l.search)||void 0===u?void 0:u.filter((e=>{var t;return null===(t=e.criteria)||void 0===t?void 0:t.startsWith(N)}));return r.default.createElement("div",{className:"medplum-search-control",onContextMenu:e=>T(e),"data-testid":"search-control"},!e.hideToolbar&&r.default.createElement(yn,null,r.default.createElement("div",null,r.default.createElement("h1",null,r.default.createElement("a",{href:`https://www.hl7.org/fhir/${N.toLowerCase()}.html`,target:"_blank",rel:"noopener"},N)),R&&r.default.createElement(s,{testid:"saved-search-select",style:{width:80},onChange:e=>{C(t.parseSearchDefinition(e))}},r.default.createElement("option",null),R.map(((e,t)=>r.default.createElement("option",{key:`${t}-${R.length}`,value:e.criteria},e.name)))),r.default.createElement(g,{testid:"fields-button",size:"small",onClick:()=>E(Object.assign(Object.assign({},y.current),{fieldEditorVisible:!0}))},"Fields"),r.default.createElement(g,{testid:"filters-button",size:"small",onClick:()=>E(Object.assign(Object.assign({},y.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&r.default.createElement(g,{size:"small",onClick:e.onNew},"New..."),e.onExport&&r.default.createElement(g,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&r.default.createElement(g,{size:"small",onClick:()=>e.onDelete(Object.keys(v.selected))},"Delete..."),e.onBulk&&r.default.createElement(g,{size:"small",onClick:()=>e.onBulk(Object.keys(v.selected))},"Bulk...")),x&&r.default.createElement("div",null,r.default.createElement("span",{className:"medplum-search-summary"},function(e,t){var n;return Math.min(t,(null!==(n=e.offset)&&void 0!==n?n:0)+1)}(p,x.total),"-",function(e,n){var a,l;return Math.min(n,((null!==(a=e.offset)&&void 0!==a?a:0)+1)*(null!==(l=e.count)&&void 0!==l?l:t.DEFAULT_SEARCH_COUNT))}(p,x.total)," of"," ",null===(o=x.total)||void 0===o?void 0:o.toLocaleString()),r.default.createElement(g,{testid:"prev-page-button",size:"small",onClick:()=>C(Wt(p,-1))},"<<"),r.default.createElement(g,{testid:"next-page-button",size:"small",onClick:()=>C(Wt(p,1))},">>"))),r.default.createElement("table",null,r.default.createElement("thead",null,r.default.createElement("tr",null,O&&r.default.createElement("th",{className:"medplum-search-icon-cell"},r.default.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=y.current;if(!(null===(e=n.searchResponse)||void 0===e?void 0:e.entry)||0===n.searchResponse.entry.length)return!1;for(const e of n.searchResponse.entry)if((null===(t=e.resource)||void 0===t?void 0:t.id)&&!n.selected[e.resource.id])return!1;return!0}(),onChange:e=>function(e){var t;e.stopPropagation();const n=e.target.checked,a={},l=null===(t=y.current)||void 0===t?void 0:t.searchResponse;n&&(null==l?void 0:l.entry)&&l.entry.forEach((e=>{var t;(null===(t=e.resource)||void 0===t?void 0:t.id)&&(a[e.resource.id]=!0)})),E(Object.assign(Object.assign({},y.current),{selected:a}))}(e)})),w.map((e=>r.default.createElement("th",{key:e.name,onClick:t=>function(e,t){E(Object.assign(Object.assign({},y.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParams:t}))}(t,e.searchParams)},en(e.name),e.searchParams&&r.default.createElement(wn,null))))),!e.hideFilters&&r.default.createElement("tr",null,O&&r.default.createElement("th",{className:"filters medplum-search-icon-cell"}),w.map((t=>r.default.createElement("th",{key:t.name,className:"filters"},t.searchParams&&r.default.createElement(On,{resourceType:N,searchParams:t.searchParams,filters:e.search.filters})))))),r.default.createElement("tbody",null,null==P?void 0:P.map((e=>e&&r.default.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>k(t,e),onAuxClick:t=>k(t,e)},O&&r.default.createElement("td",{className:"medplum-search-icon-cell"},r.default.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!v.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},y.current.selected);n?a[t]=!0:delete a[t],E(Object.assign(Object.assign({},y.current),{selected:a}))}(t,e.id)})),w.map((t=>r.default.createElement("td",{key:t.name},tn(e,t))))))))),0===(null==P?void 0:P.length)&&r.default.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),m&&r.default.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},r.default.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(m,void 0,2))),r.default.createElement(fn,{search:e.search,visible:v.popupVisible,x:v.popupX,y:v.popupY,searchParams:v.popupSearchParams,onPrompt:(e,t)=>{E(Object.assign(Object.assign({},y.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{C(e),E(Object.assign(Object.assign({},y.current),{popupVisible:!1,popupSearchParams:void 0}))},onClose:()=>{E(Object.assign(Object.assign({},y.current),{popupVisible:!1,popupSearchParams:void 0}))}}),r.default.createElement(nn,{search:e.search,visible:y.current.fieldEditorVisible,onOk:e=>{C(e),E(Object.assign(Object.assign({},y.current),{fieldEditorVisible:!1}))},onCancel:()=>{E(Object.assign(Object.assign({},y.current),{fieldEditorVisible:!1}))}}),r.default.createElement(un,{search:e.search,visible:y.current.filterEditorVisible,onOk:e=>{C(e),E(Object.assign(Object.assign({},y.current),{filterEditorVisible:!1}))},onCancel:()=>{E(Object.assign(Object.assign({},y.current),{filterEditorVisible:!1}))}}),r.default.createElement(dn,{visible:y.current.filterDialogVisible,title:"Input",resourceType:N,searchParam:v.filterDialogSearchParam,filter:v.filterDialogFilter,defaultValue:"",onOk:t=>{C(Vt(e.search,t.code,t.operator,t.value)),E(Object.assign(Object.assign({},y.current),{filterDialogVisible:!1}))},onCancel:()=>{E(Object.assign(Object.assign({},y.current),{filterDialogVisible:!1}))}}))}const kn=r.default.memo(Sn);function On(e){var t;const n=(null!==(t=e.filters)&&void 0!==t?t:[]).filter((t=>e.searchParams.find((e=>e.code===t.code))));return 0===n.length?r.default.createElement("span",null,"no filters"):r.default.createElement(r.default.Fragment,null,n.map(((t,a)=>r.default.createElement("div",{key:`filter-${a}-${n.length}`},Zt(t.operator)," ",r.default.createElement(an,{resourceType:e.resourceType,filter:t})))))}function wn(){return r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"rgba(0, 0, 0, 0.3)",strokeWidth:2},r.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function Nn(e){var t,a,l,u,o;const i=b(),[c,d]=n.useState(),[s,m]=n.useState(),{query:f,fields:p}=e,[h,v]=n.useState(),[E,y]=n.useState({}),C=n.useRef();C.current=h;const k=n.useRef({});function O(t,n){S(t.target)||(T(t),1!==t.button&&e.onClick&&e.onClick(new Tn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Tn(n,t)))}k.current=E,n.useEffect((()=>{m(void 0),i.graphql(f).then(v).catch(m)}),[i,f]),n.useEffect((()=>{i.requestSchema(e.resourceType).then((e=>{d(Object.assign({},e))})).catch(console.log)}),[i,e.resourceType]);if(!(null===(t=null==c?void 0:c.types)||void 0===t?void 0:t[e.resourceType]))return r.default.createElement(ut,null);const w=e.checkboxesEnabled;return r.default.createElement("div",{className:"medplum-search-control",onContextMenu:e=>T(e),"data-testid":"search-control"},r.default.createElement("table",null,r.default.createElement("thead",null,r.default.createElement("tr",null,w&&r.default.createElement("th",{className:"medplum-search-icon-cell"},r.default.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=C.current)||void 0===e?void 0:e.data)||void 0===t?void 0:t.ResourceList;if(!n||0===n.length)return!1;for(const e of n)if((null==e?void 0:e.id)&&!k.current[e.id])return!1;return!0}(),onChange:e=>function(e){var t,n;e.stopPropagation();const a=e.target.checked,l={},r=null===(n=null===(t=C.current)||void 0===t?void 0:t.data)||void 0===n?void 0:n.ResourceList;a&&r&&r.forEach((e=>{(null==e?void 0:e.id)&&(l[e.id]=!0)})),y(l)}(e)})),p.map((e=>r.default.createElement("th",{key:e.name},e.name))))),r.default.createElement("tbody",null,null===(l=null===(a=null==h?void 0:h.data)||void 0===a?void 0:a.ResourceList)||void 0===l?void 0:l.map((e=>e&&r.default.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>O(t,e),onAuxClick:t=>O(t,e)},w&&r.default.createElement("td",{className:"medplum-search-icon-cell"},r.default.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!E[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},k.current);n?a[t]=!0:delete a[t],y(a)}(t,e.id)})),p.map((t=>r.default.createElement("td",{key:t.name},r.default.createElement(Nt,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(o=null===(u=null==h?void 0:h.data)||void 0===u?void 0:u.ResourceList)||void 0===o?void 0:o.length)&&r.default.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),s&&r.default.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},r.default.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(s,void 0,2))),e.onBulk&&r.default.createElement(g,{size:"small",onClick:()=>e.onBulk(Object.keys(k.current))},"Bulk..."))}const xn=r.default.memo(Nn);function jn(e){const n=b();return r.default.createElement(G,{loadOptions:(e,a)=>j(this,void 0,void 0,(function*(){return function(e,t){const n=[];e.data.Patients1&&n.push(...e.data.Patients1);e.data.Patients2&&n.push(...e.data.Patients2);e.data.ServiceRequestList&&n.push(...e.data.ServiceRequestList);return function(e,t){return e.sort(((e,n)=>Pn(n,t)-Pn(e,t)))}(function(e){const t=new Set,n=[];for(const a of e)t.has(a.id)||(t.add(a.id),n.push(a));return n}(n),t).slice(0,5)}(yield n.graphql(function(e){const n=JSON.stringify(e);if(t.isUUID(e))return`{\n Patients1: PatientList(_id: ${n}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(_id: ${n}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ");return`{\n Patients1: PatientList(name: ${n}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n Patients2: PatientList(identifier: ${n}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(identifier: ${n}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ")}(e),void 0,void 0,{signal:a}),e)})),getId:e=>e.id,getIcon:e=>r.default.createElement(K,{value:e}),getDisplay:e=>r.default.createElement(_e,{value:e}),getHelpText:e=>{var t;return"Patient"===e.resourceType&&e.birthDate?"DoB: "+e.birthDate:null===(t=e.subject)||void 0===t?void 0:t.display},name:e.name,className:e.className,placeholder:e.placeholder,onChange:t=>e.onChange(t[0])})}function Pn(e,n){let a=0;if(e.identifier)for(const t of e.identifier)a=Math.max(a,Rn(t.value,n));if("Patient"===e.resourceType&&e.name)for(const l of e.name)a=Math.max(a,Rn(t.formatHumanName(l),n));return a}function Rn(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}const Dn=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function Vn(e){const t=n.useRef();function a(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,r.default.createElement("div",{className:"section"},e.actions.map((n=>r.default.createElement("div",{key:n.id},r.default.createElement(In,{action:n,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:a,onRemove:()=>{return a=n,void e.onChange(t.current.filter((e=>e!==a)));var a}})))),r.default.createElement("div",{className:"bottom-actions"},r.default.createElement("a",{href:"#",onClick:n=>{var a;T(n),a={id:Un()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function In(e){const{action:t}=e,n=function(e){var t,n,a;if(null===(t=e.definitionCanonical)||void 0===t?void 0:t.startsWith("Schedule"))return"appointment";if(null===(n=e.definitionCanonical)||void 0===n?void 0:n.startsWith("Questionnaire/"))return"questionnaire";if(null===(a=e.definitionCanonical)||void 0===a?void 0:a.startsWith("ActivityDefinition/"))return"task";return}(t),a=e.selectedKey===e.action.id,l=e.hoverKey===e.action.id;const u=a?"section editing":l?"section hovering":"section";return r.default.createElement("div",{"data-testid":t.id,className:u,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){T(t),e.setHoverKey(e.action.id)}},a?r.default.createElement(Ln,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):r.default.createElement(Fn,{action:t,actionType:n}),r.default.createElement("div",{className:"bottom-actions"},r.default.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const An={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Fn(e){const{action:t,actionType:n}=e,[a,l]=$n(t);return r.default.createElement("div",null,r.default.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&r.default.createElement("div",null,r.default.createElement(fe,{value:{reference:t.definitionCanonical}})),a&&r.default.createElement("div",null,r.default.createElement(he,{property:An,propertyType:l,value:a})))}function Ln(e){const{action:t}=e,[a,l]=n.useState(e.actionType);function u(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return r.default.createElement(r.default.Fragment,null,r.default.createElement(I,{title:"Title",htmlFor:`actionTitle-${t.id}`},r.default.createElement(i,{name:`actionTitle-${t.id}`,defaultValue:t.title,onChange:e=>u("title",e)})),r.default.createElement(I,{title:"Description",htmlFor:`actionDescription-${t.id}`},r.default.createElement(i,{name:`actionDescription-${t.id}`,defaultValue:t.description,onChange:e=>u("description",e)})),r.default.createElement(I,{title:"Type of Action",description:"The type of the action to be performed.",htmlFor:`actionType-${t.id}`},r.default.createElement(s,{name:`actionType-${t.id}`,defaultValue:a,onChange:l},r.default.createElement("option",null),r.default.createElement("option",{value:"appointment"},"Appointment"),r.default.createElement("option",{value:"lab"},"Lab"),r.default.createElement("option",{value:"questionnaire"},"Questionnaire"),r.default.createElement("option",{value:"task"},"Task"))),t.action&&t.action.length>0&&r.default.createElement(Vn,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>u("action",e)}),(()=>{switch(a){case"appointment":return r.default.createElement(Mn,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return r.default.createElement(Mn,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return r.default.createElement(Mn,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return r.default.createElement(Mn,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),r.default.createElement(I,{title:"Timing",description:"When the action should take place.",htmlFor:"timing-"+t.id},r.default.createElement(qn,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function Mn(e){const{id:n,definitionCanonical:a}=e.action,l=(null==a?void 0:a.startsWith(e.resourceType+"/"))?{reference:a}:void 0;return r.default.createElement(I,{title:e.title,description:e.description,htmlFor:n},r.default.createElement(Ue,{name:n,resourceType:e.resourceType,defaultValue:l,loadOnFocus:!0,onChange:n=>{n?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:t.getReferenceString(n)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}}))}function qn(e){const t=e.action,n="timing",[a,l]=$n(t);return r.default.createElement(Ge,{property:An,name:"timing[x]",defaultValue:a,defaultPropertyType:l,onChange:(a,l)=>{e.onChange(X(t,n,null!=l?l:n,An,a))}})}function $n(e){return ve({type:"PlanDefinitionAction",value:e},"timing")}let _n=1;function Un(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(_n=Math.max(_n,t+1))}return e}return"id-"+_n++}function Qn(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:Un(e.id),action:Qn(e.action)})))}var Hn;function zn(e){return"choice"===e.type||"open-choice"===e.type}function Bn(e){const a=b(),l=a.getProfile(),[u,o]=n.useState(),i=B(e.questionnaire),[c,d]=n.useState(),[s,m]=n.useState({});return n.useEffect((()=>{a.requestSchema("Questionnaire").then((()=>a.requestSchema("QuestionnaireResponse"))).then(o).catch(console.log)}),[a]),n.useEffect((()=>{d(i?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:t.getReferenceString(e),item:Jn(e.item)}}(i):void 0)}),[i]),u&&i?r.default.createElement(V,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&c&&e.onSubmit(Object.assign(Object.assign({},c),{questionnaire:t.getReferenceString(i),subject:e.subject,source:t.createReference(l),authored:(new Date).toISOString()}))}},i.title&&r.default.createElement("h1",null,i.title),i.item&&r.default.createElement(Kn,{items:i.item,answers:s,onChange:function(e){const n={resourceType:"QuestionnaireResponse",item:e};d(n),m(t.getQuestionnaireAnswers(n))}}),r.default.createElement(g,{type:"submit",size:"large"},e.submitButtonText||"OK")):null}function Kn(t){const[a,l]=n.useState(Jn(t.items));function u(e,n){const r=a.slice();r[e]=n,l(r),t.onChange(r)}return r.default.createElement(r.default.Fragment,null,t.items.map(((n,a)=>{if(!ea(n,t.answers))return null;if(n.type===e.QuestionnaireItemType.display)return r.default.createElement("p",{key:n.linkId},n.text);if(n.type===e.QuestionnaireItemType.group)return r.default.createElement(Wn,{key:n.linkId,item:n,answers:t.answers,onChange:e=>u(a,e)});if(n.type===e.QuestionnaireItemType.boolean){const e=n.initial&&n.initial.length>0?n.initial[0]:void 0;return r.default.createElement(Y,{key:n.linkId,title:n.text,htmlFor:n.linkId},r.default.createElement(Ee,{name:n.linkId,defaultValue:null==e?void 0:e.valueBoolean,onChange:e=>u(a,{linkId:n.linkId,text:n.text,answer:[{valueBoolean:e}]})}))}return r.default.createElement(I,{key:n.linkId,htmlFor:n.linkId,title:n.text||""},r.default.createElement(Wn,{item:n,answers:t.answers,onChange:e=>u(a,e)}))})))}function Wn(t){const n=t.item,a=n.type;if(!a)return null;const l=n.linkId;if(!l)return null;const u=n.initial&&n.initial.length>0?n.initial[0]:void 0;function o(e){t.onChange({linkId:n.linkId,text:n.text,answer:[e]})}switch(a){case e.QuestionnaireItemType.group:return r.default.createElement("div",null,r.default.createElement("h3",null,n.text),n.item&&r.default.createElement(Kn,{items:n.item,answers:t.answers,onChange:function(e){t.onChange({linkId:n.linkId,text:n.text,item:e})}}));case e.QuestionnaireItemType.boolean:return r.default.createElement(Ee,{name:l,defaultValue:null==u?void 0:u.valueBoolean,onChange:e=>o({valueBoolean:e})});case e.QuestionnaireItemType.decimal:return r.default.createElement(i,{type:"number",step:"any",name:l,defaultValue:null==u?void 0:u.valueDecimal,onChange:e=>o({valueDecimal:parseFloat(e)})});case e.QuestionnaireItemType.integer:return r.default.createElement(i,{type:"number",step:1,name:l,defaultValue:null==u?void 0:u.valueInteger,onChange:e=>o({valueInteger:parseInt(e)})});case e.QuestionnaireItemType.date:return r.default.createElement(i,{type:"date",name:l,defaultValue:null==u?void 0:u.valueDate,onChange:e=>o({valueDate:e})});case e.QuestionnaireItemType.dateTime:return r.default.createElement(je,{type:"datetime-local",name:l,defaultValue:null==u?void 0:u.valueDateTime,onChange:e=>o({valueDateTime:e})});case e.QuestionnaireItemType.time:return r.default.createElement(i,{type:"time",name:l,defaultValue:null==u?void 0:u.valueTime,onChange:e=>o({valueTime:e})});case e.QuestionnaireItemType.string:return r.default.createElement(i,{type:"text",name:l,defaultValue:null==u?void 0:u.valueString,onChange:e=>o({valueString:e})});case e.QuestionnaireItemType.text:return r.default.createElement(De,{name:l,defaultValue:null==u?void 0:u.valueString,onChange:e=>o({valueString:e})});case e.QuestionnaireItemType.url:return r.default.createElement(i,{type:"url",name:l,defaultValue:null==u?void 0:u.valueUri,onChange:e=>o({valueUri:e})});case e.QuestionnaireItemType.attachment:return r.default.createElement(N,{name:l,defaultValue:null==u?void 0:u.valueAttachment,onChange:e=>o({valueAttachment:e})});case e.QuestionnaireItemType.reference:return r.default.createElement(Qe,{name:l,defaultValue:null==u?void 0:u.valueReference,onChange:e=>o({valueReference:e})});case e.QuestionnaireItemType.quantity:return r.default.createElement(Le,{name:l,defaultValue:null==u?void 0:u.valueQuantity,onChange:e=>o({valueQuantity:e})});case e.QuestionnaireItemType.choice:case e.QuestionnaireItemType.openChoice:return function(e){var t;return!!(null===(t=e.extension)||void 0===t?void 0:t.some((e=>{var t,n,a;return"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"===e.url&&"drop-down"===(null===(a=null===(n=null===(t=e.valueCodeableConcept)||void 0===t?void 0:t.coding)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code)})))}(n)?r.default.createElement(Gn,{name:l,item:n,initial:u,onChangeAnswer:o}):r.default.createElement(Yn,{name:l,item:n,initial:u,onChangeAnswer:o})}return null}function Gn(e){const{name:n,item:a,initial:l}=e,u=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],o=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:l},"value");return r.default.createElement("select",{id:n,name:n,className:"medplum-select",onChange:n=>{const l=n.currentTarget.selectedIndex;if(0===l)return void e.onChangeAnswer({});const r=a.answerOption[l-1],u=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:r},"value"),o="value"+t.capitalize(u.type);e.onChangeAnswer({[o]:u.value})}},r.default.createElement("option",null),a.answerOption&&a.answerOption.map(((e,a)=>{const l=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:e},"value"),i=`${n}-option-${a}`;return r.default.createElement("option",{key:i,value:l.value,selected:o&&t.stringify(l)===t.stringify(o)},r.default.createElement(he,{property:u,propertyType:l.type,value:l.value}))})))}function Yn(e){const{name:n,item:a,initial:l,onChangeAnswer:u}=e,o=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],i=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:l},"value");return r.default.createElement(r.default.Fragment,null,a.answerOption&&a.answerOption.map(((e,a)=>{const l=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:e},"value"),c="value"+t.capitalize(l.type),d=`${n}-option-${a}`;return r.default.createElement("div",{key:d,className:"medplum-questionnaire-option-row"},r.default.createElement("div",{className:"medplum-questionnaire-option-checkbox"},r.default.createElement("input",{type:"radio",id:d,name:n,value:l.value,defaultChecked:i&&t.stringify(l)===t.stringify(i),onChange:()=>u({[c]:l.value})})),r.default.createElement("div",null,r.default.createElement("label",{htmlFor:d},r.default.createElement(he,{property:o,propertyType:l.type,value:l.value}))))})))}function Jn(e){var t;return null!==(t=null==e?void 0:e.map(Xn))&&void 0!==t?t:[]}function Xn(e){var t,n;return{linkId:e.linkId,text:e.text,item:Jn(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Zn))&&void 0!==n?n:[]}}function Zn(e){return Object.assign({},e)}function ea(e,n){if(!e.enableWhen)return!0;const a=e.enableBehavior||"any";for(const l of e.enableWhen){const e=t.getTypedPropertyValue({type:"QuestionnaireItemEnableWhen",value:l},"answer[x]"),r=t.getTypedPropertyValue({type:"QuestionnaireResponseItemAnswer",value:n[l.question]},"value[x]"),u=t.deepEquals(e,r);if("any"===a&&u)return!0;if("all"===a&&!u)return!1}return"any"!==a}function ta(t){var a;const l=t.item,u=t.item,o="resourceType"in t.item,c=o||u.type===e.QuestionnaireItemType.group,d=null!==(a=u.linkId)&&void 0!==a?a:"[untitled]",m=t.selectedKey===t.item.id,f=t.hoverKey===t.item.id,p=n.useRef();function h(e){var n;const a=p.current;t.onChange(Object.assign(Object.assign({},a),{item:null===(n=a.item)||void 0===n?void 0:n.map((t=>t.id===e.id?e:t))}))}function v(e){var n,a;t.onChange(Object.assign(Object.assign({},t.item),{item:[...null!==(a=null===(n=t.item)||void 0===n?void 0:n.item)&&void 0!==a?a:[],e]}))}function g(e,n){t.onChange(Object.assign(Object.assign({},p.current),{[e]:n}))}p.current=t.item;const E=m?"section editing":f?"section hovering":"section";return r.default.createElement("div",{"data-testid":u.linkId,className:E,onClick:function(e){T(e),t.setSelectedKey(t.item.id)},onMouseOver:function(e){T(e),t.setHoverKey(t.item.id)}},m?r.default.createElement(r.default.Fragment,null,o&&r.default.createElement("div",null,r.default.createElement(i,{defaultValue:l.title,onChange:e=>g("title",e)})),!c&&r.default.createElement("div",null,r.default.createElement(s,{defaultValue:u.type,onChange:e=>g("type",e)},r.default.createElement("option",{value:"display"},"Display"),r.default.createElement("optgroup",{label:"Question"},r.default.createElement("option",{value:"boolean"},"Boolean"),r.default.createElement("option",{value:"decimal"},"Decimal"),r.default.createElement("option",{value:"integer"},"Integer"),r.default.createElement("option",{value:"date"},"Date"),r.default.createElement("option",{value:"dateTime"},"Date/Time"),r.default.createElement("option",{value:"time"},"Time"),r.default.createElement("option",{value:"string"},"String"),r.default.createElement("option",{value:"text"},"Text"),r.default.createElement("option",{value:"url"},"URL"),r.default.createElement("option",{value:"choice"},"Choice"),r.default.createElement("option",{value:"open-choice"},"Open Choice"),r.default.createElement("option",{value:"attachment"},"Attachment"),r.default.createElement("option",{value:"reference"},"Reference"),r.default.createElement("option",{value:"quantity"},"Quantity")))),!o&&r.default.createElement(De,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:u.text,onChange:e=>g("text",e)}),zn(u)&&r.default.createElement(na,{options:u.answerOption,onChange:e=>g("answerOption",e)})):r.default.createElement(r.default.Fragment,null,l.title&&r.default.createElement("h1",null,l.title),u.text&&r.default.createElement("p",null,u.text),!c&&r.default.createElement(Wn,{item:u,answers:{},onChange:()=>{}})),u.item&&u.item.map((e=>r.default.createElement("div",{key:e.id},r.default.createElement(ta,{item:e,selectedKey:t.selectedKey,setSelectedKey:t.setSelectedKey,hoverKey:t.hoverKey,setHoverKey:t.setHoverKey,onChange:h,onRemove:()=>function(e){var n,a;t.onChange(Object.assign(Object.assign({},t.item),{item:null===(a=null===(n=t.item)||void 0===n?void 0:n.item)||void 0===a?void 0:a.filter((t=>t!==e))}))}(e)})))),!c&&r.default.createElement("div",{className:"top-actions"},m?r.default.createElement(i,{defaultValue:u.linkId,onChange:e=>g("linkId",e),size:4}):r.default.createElement("div",null,d)),r.default.createElement("div",{className:"bottom-actions"},c&&r.default.createElement(r.default.Fragment,null,r.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),v({id:ua(),linkId:ra("q"),type:"string",text:"Question"})}},"Add item"),r.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),v({id:ua(),linkId:ra("g"),type:"group",text:"Group"})}},"Add group")),!o&&r.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),t.onRemove&&t.onRemove()}},"Remove")))}function na(e){var n;const a=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],l=null!==(n=e.options)&&void 0!==n?n:[];return r.default.createElement("div",null,l.map((t=>{const[n,u]=ve({type:"QuestionnaireItemAnswerOption",value:t},"value");return r.default.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},r.default.createElement("div",null,r.default.createElement(Ge,{key:t.id,name:"value[x]",property:a,defaultPropertyType:u,defaultValue:n,onChange:(n,a)=>{const r=[...l],u=r.findIndex((e=>e.id===t.id));r[u]={id:t.id,[a]:n},e.onChange(r)}})),r.default.createElement("div",null,r.default.createElement("a",{href:"#",onClick:n=>{T(n),e.onChange(l.filter((e=>e.id!==t.id)))}},"Remove")))})),r.default.createElement("a",{href:"#",onClick:t=>{T(t),e.onChange([...l,{id:ua()}])}},"Add choice"))}e.QuestionnaireItemType=void 0,(Hn=e.QuestionnaireItemType||(e.QuestionnaireItemType={})).group="group",Hn.display="display",Hn.question="question",Hn.boolean="boolean",Hn.decimal="decimal",Hn.integer="integer",Hn.date="date",Hn.dateTime="dateTime",Hn.time="time",Hn.string="string",Hn.text="text",Hn.url="url",Hn.choice="choice",Hn.openChoice="open-choice",Hn.attachment="attachment",Hn.reference="reference",Hn.quantity="quantity";let aa=1,la=1;function ra(e){return e+aa++}function ua(){return"id-"+la++}function oa(e){if(e)return e.forEach((e=>{var t,n;(null===(t=e.id)||void 0===t?void 0:t.match(/^id-\d+$/))&&(la=Math.max(la,parseInt(e.id.substring(3))+1)),(null===(n=e.linkId)||void 0===n?void 0:n.match(/^q\d+$/))&&(aa=Math.max(aa,parseInt(e.linkId.substring(1))+1))})),e.map((e=>Object.assign(Object.assign({},e),{id:e.id||ua(),item:oa(e.item),answerOption:ia(e.answerOption)})))}function ia(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||ua()})))}function ca(e){return r.default.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function da(e,t){return function(e,t,n){const a=[];let l=e;l.snake&&(l=l.prev);for(;l&&l.prev&&l.prev.j>=0;){const e=l.i,r=l.j;l=l.prev;const u=l.i,o=l.j,i={position:u,lines:t.slice(u,e)},c={position:o,lines:n.slice(o,r)};let d;d=0===i.lines.length&&c.lines.length>0?"insert":i.lines.length>0&&0===c.lines.length?"delete":"change",a.push({original:i,revised:c,type:d}),l.snake&&(l=l.prev)}return a}(function(e,t){const n=e.length,a=t.length,l=n+a+1,r=1+2*l,u=r/2|0,o=new Array(r);o[u+1]={i:0,j:-1,prev:void 0,snake:!0};for(let r=0;r<l;r++){for(let l=-r;l<=r;l+=2){const i=u+l,c=i-1,d=o[i+1],s=o[c];let m,f=0;l===-r||l!==r&&s.i<d.i?(f=d.i,m=d):(f=s.i+1,m=s),o[c]=void 0;let p=f-l,h={i:f,j:p,prev:sa(m),snake:!1};for(;f<n&&p<a&&e[f]===t[p];)f++,p++;if(f>h.i&&(h={i:f,j:p,prev:h,snake:!0}),o[i]=h,f>=n&&p>=a)return o[i]}o[u+r-1]=void 0}return}(e,t),e,t)}function sa(e){return e&&!e.snake&&e.prev?e.prev:e}function ma(e){const n=e.entry.filter((e=>!!e.resource)).map((e=>{var n;return{meta:null===(n=e.resource)||void 0===n?void 0:n.meta,lines:t.stringify(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),a=n[0].lines.map((e=>({id:n[0].meta.versionId,meta:n[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const a=da(t[n-1].lines,t[n].lines);for(const l of a){const a=l.original.position,r=l.original.lines,u=l.revised.lines;if("delete"!==l.type&&"change"!==l.type||e.splice(a,r.length),"insert"===l.type||"change"===l.type)for(let r=0;r<l.revised.lines.length;r++)e.splice(a+r,0,{id:t[n].meta.versionId,meta:t[n].meta,value:u[r],span:1})}}}(a,n),function(e){let t=0;for(;t<e.length;){let n=t;for(;n<e.length&&e[n].id===e[t].id;)e[n].span=-1,n++;e[t].span=n-t,t=n}}(a),a}function fa(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function pa(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return ha(n,"year");const a=Math.floor(t/2592e3);if(a>0)return ha(a,"month");const l=Math.floor(t/86400);if(l>0)return ha(l,"day");const r=Math.floor(t/3600);if(r>0)return ha(r,"hour");const u=Math.floor(t/60);return u>0?ha(u,"minute"):ha(t,"second")}function ha(e,t){return`${e} ${1===e?t:t+"s"} ago`}function va(e){return r.default.createElement(r.default.Fragment,null,"...",r.default.createElement("br",null),e.delta.original.lines.length>0&&r.default.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&r.default.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",r.default.createElement("br",null))}function ga(e){var n,a,l;const{response:u,resource:o}=e.entry;return o?r.default.createElement("tr",null,r.default.createElement("td",null,r.default.createElement(et,{value:null===(n=o.meta)||void 0===n?void 0:n.author,link:!0})),r.default.createElement("td",null,t.formatDateTime(null===(a=o.meta)||void 0===a?void 0:a.lastUpdated)),r.default.createElement("td",null,r.default.createElement(Q,{to:Ea(o)},null===(l=o.meta)||void 0===l?void 0:l.versionId))):r.default.createElement("tr",null,r.default.createElement("td",{colSpan:3},t.normalizeErrorString(null==u?void 0:u.outcome)))}function Ea(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function ya(e){const{onChangeMonth:t,onClick:a}=e,[l,u]=n.useState(ba);function o(e){u((n=>{const a=new Date(n.getTime());return a.setMonth(n.getMonth()+e),t(a),a}))}const i=n.useMemo((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),a=[];let l=[];for(let e=0;e<n.getDay();e++)l.push(void 0);for(;n.getMonth()===e.getMonth();)l.push({date:new Date(n.getTime()),available:Ca(n,t)}),6===n.getDay()&&(a.push(l),l=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)l.push(void 0);a.push(l)}return a}(l,e.slots)),[l,e.slots]);return r.default.createElement("div",null,r.default.createElement(d,null,r.default.createElement("p",{style:{flex:1}},(c=l).toLocaleString("default",{month:"long"})+" "+c.getFullYear()),r.default.createElement("p",null,r.default.createElement(g,{label:"Previous month",onClick:()=>o(-1)},"<"),r.default.createElement(g,{label:"Next month",onClick:()=>o(1)},">"))),r.default.createElement("table",{className:"medplum-calendar-table"},r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"SUN"),r.default.createElement("th",null,"MON"),r.default.createElement("th",null,"TUE"),r.default.createElement("th",null,"WED"),r.default.createElement("th",null,"THU"),r.default.createElement("th",null,"FRI"),r.default.createElement("th",null,"SAT"))),r.default.createElement("tbody",null,i.map(((e,t)=>r.default.createElement("tr",{key:"week-"+t},e.map(((e,t)=>r.default.createElement("td",{key:"day-"+t},e&&r.default.createElement("button",{disabled:!e.available,onClick:()=>a(e.date)},e.date.getDate()))))))))));var c}function ba(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Ca(e,t){for(const n of t){const t=new Date(n.start);if(t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate())return!0}return!1}function Ta(e){return ka(e.getTime())}function Sa(e){return ka(e.getTime()+26784e5)}function ka(e){return new Date(Math.max(Date.now(),e)).toISOString()}function Oa(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function wa(e){let t="medplum-tab";function n(t){T(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),r.default.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function Na(e){return r.default.createElement("div",{role:"tabpanel"},e.children)}e.AddressDisplay=u,e.AddressInput=p,e.AttachmentArrayDisplay=v,e.AttachmentArrayInput=w,e.AttachmentInput=N,e.Autocomplete=G,e.Avatar=K,e.BackboneElementInput=Ze,e.Button=g,e.Checkbox=Ee,e.CheckboxFormSection=Y,e.CodeInput=Oe,e.CodeableConceptDisplay=ae,e.CodeableConceptInput=ye,e.ContactDetailDisplay=re,e.ContactDetailInput=xe,e.ContactPointDisplay=le,e.ContactPointInput=Ne,e.DateTimeInput=je,e.DefaultResourceTimeline=function(e){return r.default.createElement(bt,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]})})},e.DescriptionList=Z,e.DescriptionListEntry=ee,e.DiagnosticReportDisplay=tt,e.Dialog=ze,e.Document=x,e.ElementDefinitionInputSelector=Ye,e.ElementDefinitionTypeInput=Je,e.EncounterTimeline=function(e){return r.default.createElement(bt,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${t.getReferenceString(e)}`}},{request:{method:"GET",url:`Media?encounter=${t.getReferenceString(e)}`}}]}),createCommunication:(e,n,a)=>({resourceType:"Communication",encounter:t.createReference(e),subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",encounter:t.createReference(e),subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.ErrorBoundary=mt,e.FhirPathTable=Nn,e.FooterLinks=function(e){return r.default.createElement("div",{className:"medplum-footer"},e.children)},e.Form=V,e.FormSection=I,e.Header=function(e){var l,u,o,i,c,d;const s=a.useNavigate(),m=a.useLocation(),f=y(),p=f.medplum,h=p.getLogins(),[v,E]=n.useState(!1),[b,C]=n.useState(!1);return r.default.createElement(r.default.Fragment,null,r.default.createElement("header",{role:"banner","data-testid":"header",style:{background:e.bgColor}},r.default.createElement("div",null,r.default.createElement(Q,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>C(!b)},r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},r.default.createElement("path",{fillRule:"evenodd",d:"M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z",clipRule:"evenodd"}))),r.default.createElement(Q,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},e.title||"Medplum"),f.profile&&r.default.createElement(jn,{key:`header-input-${m.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>s(`/${e.resourceType}/${e.id}`)})),f.profile&&r.default.createElement("div",{className:"medplum-nav-menu-container"},r.default.createElement(Q,{testid:"header-profile-menu-button",onClick:()=>E(!0)},r.default.createElement(K,{size:"small",color:"#f68d42",value:f.profile})),r.default.createElement(ft,{visible:v,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>E(!1)},r.default.createElement("div",{className:"medplum-nav-menu"},r.default.createElement("div",{style:{margin:"auto",padding:"8px"}},r.default.createElement(K,{size:"large",value:f.profile})),r.default.createElement("div",{style:{margin:"auto",padding:"8px"}},r.default.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},r.default.createElement(ue,{value:null===(u=null===(l=f.profile)||void 0===l?void 0:l.name)||void 0===u?void 0:u[0]})),r.default.createElement("div",{style:{margin:"4px auto 4px auto"}},null===(i=null===(o=p.getActiveLogin())||void 0===o?void 0:o.project)||void 0===i?void 0:i.display),r.default.createElement(g,{testid:"header-profile-link",onClick:()=>{E(!1),e.onProfile&&e.onProfile()}},"Manage your account")),h.length>1&&r.default.createElement("div",null,r.default.createElement("hr",null),h.map((e=>{var n,a,l,u;return(null===(n=e.profile)||void 0===n?void 0:n.reference)!==t.getReferenceString(f.profile)&&r.default.createElement("div",{className:"medplum-nav-menu-profile",key:null===(a=e.profile)||void 0===a?void 0:a.reference,onClick:()=>{p.setActiveLogin(e).then((()=>{E(!1),window.location.reload()})).catch(console.log)}},r.default.createElement("div",{className:"medplum-nav-menu-profile-icon"},r.default.createElement(K,null)),r.default.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=e.profile)||void 0===l?void 0:l.display,r.default.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(u=e.project)||void 0===u?void 0:u.display)))}))),r.default.createElement("hr",null),r.default.createElement("div",{style:{margin:"auto",padding:"8px"}},r.default.createElement(g,{testid:"header-add-account-button",onClick:()=>{s("/signin")}},"Add another account")),r.default.createElement("hr",null),r.default.createElement("div",{style:{margin:"auto",padding:"8px"}},r.default.createElement(g,{testid:"header-signout-button",onClick:()=>{E(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),r.default.createElement("hr",null),r.default.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},r.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),r.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),r.default.createElement(ft,{modal:!0,autoClose:!0,visible:b,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>C(!1)},null===(d=null===(c=e.config)||void 0===c?void 0:c.menu)||void 0===d?void 0:d.map(((t,n)=>{var a,l,u;return r.default.createElement(r.default.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},r.default.createElement("h5",null,t.title),r.default.createElement("ul",null,null===(u=t.link)||void 0===u?void 0:u.map((e=>r.default.createElement("li",{key:e.target},r.default.createElement(Q,{to:e.target},e.name))))))})),r.default.createElement("h5",null,"Settings"),r.default.createElement("ul",null,r.default.createElement("li",null,r.default.createElement(Q,{to:f.profile},"Profile")),r.default.createElement("li",null,r.default.createElement(Q,{to:"/changepassword"},"Change password")))))},e.HumanNameDisplay=ue,e.HumanNameInput=Ie,e.IdentifierInput=Ae,e.Input=i,e.InputRow=d,e.Loading=ut,e.Logo=A,e.MedplumLink=Q,e.MedplumProvider=function(e){const t=e.medplum,[a,l]=n.useState({profile:t.getProfile(),loading:!1});n.useEffect((()=>{function e(){l(Object.assign(Object.assign({},a),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,a]);const u=Object.assign(Object.assign({},a),{medplum:t});return r.default.createElement(E.Provider,{value:u},e.children)},e.MemoizedFhirPathTable=xn,e.MemoizedSearchControl=kn,e.MenuItem=ot,e.ObservationTable=nt,e.PatientTimeline=function(e){return r.default.createElement(bt,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:Dn.map((n=>({request:{method:"GET",url:n.replaceAll("$",t.getReferenceString(e))}})))}),createCommunication:(e,n,a)=>({resourceType:"Communication",subject:t.createReference(e),sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",subject:t.createReference(e),operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.PlanDefinitionBuilder=function(e){const t=b(),a=B(e.value),[l,u]=n.useState(void 0),[o,c]=n.useState(),[d,s]=n.useState(),[m,f]=n.useState();function p(){s(void 0)}function h(){c(void 0)}const v=n.useRef();if(v.current=m,n.useEffect((()=>{t.requestSchema("PlanDefinition").then(u).catch(console.log)}),[t]),n.useEffect((()=>{var e;return f((e=null!=a?a:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:Qn(e.action)}))),document.addEventListener("mouseover",p),document.addEventListener("click",h),()=>{document.removeEventListener("mouseover",p),document.removeEventListener("click",h)}}),[a]),!l||!m)return null;function E(e,t){f(Object.assign(Object.assign({},v.current),{[e]:t}))}return r.default.createElement("div",{className:"medplum-questionnaire-builder"},r.default.createElement(V,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(m)},r.default.createElement(I,{title:"Plan Title",htmlFor:"title"},r.default.createElement(i,{defaultValue:m.title,onChange:e=>E("title",e)})),r.default.createElement(Vn,{actions:m.action||[],selectedKey:o,setSelectedKey:c,hoverKey:d,setHoverKey:s,onChange:e=>E("action",e)}),r.default.createElement(g,{type:"submit",size:"large"},"Save")))},e.Popup=ft,e.QuestionnaireBuilder=function(e){const t=b(),a=B(e.questionnaire),[l,u]=n.useState(),[o,i]=n.useState(),[c,d]=n.useState(),[s,m]=n.useState();function f(){m(void 0)}function p(){d(void 0)}return n.useEffect((()=>{t.requestSchema("Questionnaire").then(u).catch(console.log)}),[t]),n.useEffect((()=>{var e;return i((e=null!=a?a:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||ua(),item:oa(e.item)}))),document.addEventListener("mouseover",f),document.addEventListener("click",p),()=>{document.removeEventListener("mouseover",f),document.removeEventListener("click",p)}}),[a]),l&&o?r.default.createElement("div",{className:"medplum-questionnaire-builder"},r.default.createElement(V,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(o)},r.default.createElement(ta,{item:o,selectedKey:c,setSelectedKey:d,hoverKey:s,setHoverKey:m,onChange:i}),r.default.createElement(g,{type:"submit",size:"large"},"Save"))):null},e.QuestionnaireForm=Bn,e.QuestionnaireFormItem=Wn,e.RangeDisplay=de,e.RangeInput=qe,e.ReferenceInput=Qe,e.RegisterForm=function(e){const{type:t,projectId:a,googleClientId:l,recaptchaSiteKey:u,onSuccess:o}=e,i=b(),[c,d]=n.useState(void 0),[s,m]=n.useState();function f(e){e.code?i.processCode(e.code).then((()=>o())).catch(console.log):e.login&&d(e.login)}return n.useEffect((()=>{"patient"===t&&c&&i.startNewPatient({login:c,projectId:a}).then((e=>i.processCode(e.code))).then((()=>o())).catch((e=>m(e)))}),[i,t,a,c,o]),r.default.createElement(x,{width:450},s&&r.default.createElement("pre",null,JSON.stringify(s,null,2)),!c&&r.default.createElement(U,{projectId:a,googleClientId:l,recaptchaSiteKey:u,handleAuthResponse:f},e.children),c&&"project"===t&&r.default.createElement(F,{login:c,handleAuthResponse:f}))},e.RequestGroupDisplay=function(e){var a;const l=b(),u=B(e.value),[o,i]=n.useState(!1),[c,d]=n.useState();return n.useEffect((()=>{u&&!o&&(l.executeBatch(function(e){var t;const n=[];if(e.action)for(const a of e.action)(null===(t=a.resource)||void 0===t?void 0:t.reference)&&n.push({request:{method:"GET",url:a.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:n}}(u)).then(d).catch(console.log),i(!0))}),[l,u,o]),u&&c?r.default.createElement("div",{className:"medplum-request-group"},null===(a=u.action)||void 0===a?void 0:a.map(((n,a)=>{var l,u,o,i,d,s;const m=n.resource&&function(e){for(const n of null==c?void 0:c.entry)if(n.resource&&e.reference===t.getReferenceString(n.resource))return n.resource;return}(n.resource),f=null===(u=null===(l=null==m?void 0:m.input)||void 0===l?void 0:l[0])||void 0===u?void 0:u.valueReference,p=null===(i=null===(o=null==m?void 0:m.output)||void 0===o?void 0:o[0])||void 0===i?void 0:i.valueReference;return r.default.createElement("div",{className:"medplum-request-group-task",key:`action-${a}`},r.default.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==m?void 0:m.status)?"🗹":"☐"),r.default.createElement("div",{className:"medplum-request-group-task-details"},r.default.createElement("div",{className:"medplum-request-group-task-title"},n.title),n.description&&r.default.createElement("div",null,n.description),r.default.createElement("div",null,"Last edited by ",r.default.createElement(_e,{value:null===(d=null==m?void 0:m.meta)||void 0===d?void 0:d.author})," on ",t.formatDateTime(null===(s=null==m?void 0:m.meta)||void 0===s?void 0:s.lastUpdated)),r.default.createElement("div",null,"Status: ",r.default.createElement(ca,{status:(null==m?void 0:m.status)||"unknown"}))),r.default.createElement("div",{className:"medplum-request-group-task-actions"},f&&!p&&r.default.createElement(g,{onClick:()=>e.onStart(m,f)},"Start"),f&&p&&r.default.createElement(g,{onClick:()=>e.onEdit(m,f,p)},"Edit")))}))):null},e.ResourceArrayDisplay=pe,e.ResourceArrayInput=He,e.ResourceBadge=et,e.ResourceBlame=function(e){var t,a;const l=b(),[u,o]=n.useState(e.history);if(n.useEffect((()=>{!e.history&&e.resourceType&&e.id&&l.readHistory(e.resourceType,e.id).then(o).catch(console.log)}),[l,e.history,e.resourceType,e.id]),!u)return r.default.createElement("div",null,"Loading...");const i=null===(a=null===(t=u.entry)||void 0===t?void 0:t[0])||void 0===a?void 0:a.resource,c=ma(u);return r.default.createElement("div",{className:"medplum-blame-container"},r.default.createElement("table",{className:"medplum-blame"},r.default.createElement("tbody",null,c.map(((e,t)=>r.default.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&r.default.createElement("td",{className:"details",rowSpan:e.span},r.default.createElement(d,{justifyContent:"space-between"},r.default.createElement(et,{value:e.meta.author,size:"xsmall",link:!0}),r.default.createElement(Q,{to:fa(i,e.meta.versionId)},pa(e.meta.lastUpdated)))),r.default.createElement("td",{className:"line-number"},t+1),r.default.createElement("td",{className:"line"},r.default.createElement("pre",{className:"line-pre"},e.value))))))))},e.ResourceDiff=function(e){let n=e.original,a=e.revised;e.ignoreMeta&&(n=Object.assign(Object.assign({},n),{meta:void 0}),a=Object.assign(Object.assign({},a),{meta:void 0}));const l=da(t.stringify(n,!0).match(/[^\r\n]+/g),t.stringify(a,!0).match(/[^\r\n]+/g));return r.default.createElement("pre",{style:{color:"gray"}},l.map(((e,t)=>r.default.createElement(va,{key:"delta"+t,delta:e}))))},e.ResourceForm=function(e){const t=b(),a=B(e.defaultValue),[l,u]=n.useState(),[o,c]=n.useState();return n.useEffect((()=>{a&&(c(JSON.parse(JSON.stringify(a))),t.requestSchema(a.resourceType).then(u).catch(console.log))}),[t,a]),l&&o?r.default.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(o)}},r.default.createElement(I,{title:"Resource Type"},r.default.createElement(i,{name:"resourceType",defaultValue:o.resourceType,disabled:!0})),r.default.createElement(I,{title:"ID"},r.default.createElement(i,{name:"id",defaultValue:o.id,disabled:!0})),r.default.createElement(Ze,{typeName:o.resourceType,defaultValue:o,outcome:e.outcome,onChange:c}),r.default.createElement(g,{type:"submit",size:"large"},"OK"),e.onDelete&&r.default.createElement(g,{type:"button",size:"large",onClick:()=>{e.onDelete(o)}},"Delete")):r.default.createElement("div",null,"Loading...")},e.ResourceHistoryTable=function(e){var t;const a=b(),[l,u]=n.useState(e.history);return n.useEffect((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then(u).catch(console.log)}),[a,e.history,e.resourceType,e.id]),l?r.default.createElement("table",{className:"medplum-table"},r.default.createElement("thead",null,r.default.createElement("tr",null,r.default.createElement("th",null,"Author"),r.default.createElement("th",null,"Date"),r.default.createElement("th",null,"Version"))),r.default.createElement("tbody",null,null===(t=l.entry)||void 0===t?void 0:t.map(((e,t)=>r.default.createElement(ga,{key:"entry-"+t,entry:e}))))):r.default.createElement("div",null,"Loading...")},e.ResourceInput=Ue,e.ResourceName=_e,e.ResourcePropertyDisplay=he,e.ResourcePropertyInput=Ge,e.ResourceTable=dt,e.ResourceTimeline=bt,e.Scheduler=function(e){var a;const l=b(),u=B(e.schedule),o=B(e.questionnaire),[i,c]=n.useState();n.useRef().current=i;const[d,s]=n.useState(ba()),[m,f]=n.useState(),[p,h]=n.useState(),[v,E]=n.useState();if(n.useEffect((()=>{u?(c([]),l.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",t.getReferenceString(u)],["start","gt"+Ta(d)],["start","lt"+Sa(d)]])).then(c).catch(console.log)):c(void 0)}),[l,u,d]),!u||!i||!o)return null;const y=null===(a=u.actor)||void 0===a?void 0:a[0];return r.default.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},r.default.createElement("div",{className:"medplum-calendar-info-pane"},y&&r.default.createElement(K,{value:y,size:"large"}),y&&r.default.createElement("h1",null,r.default.createElement(_e,{value:y})),r.default.createElement("p",null,"1 hour"),m&&r.default.createElement("p",null,m.toLocaleDateString()),p&&r.default.createElement("p",null,Oa(new Date(p.start)))),r.default.createElement("div",{className:"medplum-calendar-selection-pane"},!m&&r.default.createElement("div",null,r.default.createElement("h3",null,"Select date"),r.default.createElement(ya,{slots:i,onChangeMonth:s,onClick:f})),m&&!p&&r.default.createElement("div",null,r.default.createElement("h3",null,"Select time"),i.map((e=>{const t=new Date(e.start);return t.getTime()>m.getTime()&&t.getTime()<m.getTime()+864e5&&r.default.createElement("div",{key:e.id},r.default.createElement(g,{style:{width:150},onClick:()=>h(e)},Oa(t)))}))),m&&p&&!v&&r.default.createElement(Bn,{questionnaire:o,submitButtonText:"Next",onSubmit:E}),m&&p&&v&&r.default.createElement("div",null,r.default.createElement("h3",null,"You're all set!"),r.default.createElement("p",null,"Check your email for a calendar invite."))))},e.Scrollable=st,e.SearchChangeEvent=bn,e.SearchClickEvent=Tn,e.SearchControl=Sn,e.SearchFieldEditor=nn,e.SearchFilterEditor=un,e.SearchLoadEvent=Cn,e.Select=s,e.ServiceRequestTimeline=function(e){return r.default.createElement(bt,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,n,a)=>({resourceType:"Communication",basedOn:[t.createReference(e)],subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",basedOn:[t.createReference(e)],subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.SignInForm=function(e){const t=b(),[a,l]=n.useState(void 0),[u,o]=n.useState(void 0);function i(n){n.login&&l(n.login),n.memberships&&o(n.memberships),n.code&&(e.onCode?e.onCode(n.code):t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log))}return r.default.createElement(x,{width:450},a?u?r.default.createElement(W,{login:a,memberships:u,handleAuthResponse:i}):"new"===e.projectId?r.default.createElement(F,{login:a,handleAuthResponse:i}):r.default.createElement("div",null,"Success"):r.default.createElement(H,{projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,generatePkce:!e.onCode,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:i},e.children))},e.StatusBadge=ca,e.Tab=wa,e.TabList=function(e){return r.default.createElement(st,{className:"medplum-surface",height:50},r.default.createElement("div",{role:"tablist",className:"medplum-tablist"},r.default.createElement("div",{className:"medplum-tablist-foreground"},r.default.Children.map(e.children,((t,n)=>r.default.isValidElement(t)&&t.type===wa?r.default.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))},e.TabPanel=Na,e.TabSwitch=function(e){return r.default.createElement(r.default.Fragment,null,r.default.Children.map(e.children,(t=>r.default.isValidElement(t)&&t.type===Na&&t.props.name===e.value?t:null)))},e.TextArea=De,e.Timeline=pt,e.TimelineItem=ht,e.TitleBar=yn,e.UploadButton=O,e.addDateEqualsFilter=function(e,t,n){return Ht(e,t,n,n)},e.addDateFilter=function(e,t,n,a){return zt(e=Dt(e,t),t,n,a)},e.addDateFilterBetween=Ht,e.addField=function(e,t){if(e.fields&&e.fields.includes(t))return e;const n=[];return e.fields&&n.push(...e.fields),n.push(t),Object.assign(Object.assign({},e),{fields:n,name:void 0})},e.addFilter=Vt,e.addLastMonthFilter=qt,e.addMissingFilter=Bt,e.addNextMonthFilter=_t,e.addThisMonthFilter=$t,e.addTodayFilter=Ft,e.addTomorrowFilter=Lt,e.addYearToDateFilter=Qt,e.addYesterdayFilter=At,e.buildFieldNameString=en,e.clearFilters=function(e){return Rt(e,[])},e.clearFiltersOnField=Dt,e.convertIsoToLocal=Pe,e.convertLocalToIso=Re,e.createScriptTag=L,e.deleteFilter=It,e.formatRangeString=se,e.getOpString=Zt,e.getRecaptcha=_,e.getSearchOperators=Xt,e.getSortField=Yt,e.getTimeString=pa,e.getValueAndType=ve,e.hasFilterOnField=function(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))},e.initRecaptcha=$,e.isChoiceQuestion=zn,e.isQuestionEnabled=ea,e.isSortDescending=Jt,e.movePage=Wt,e.parseForm=P,e.renderValue=tn,e.setFilters=Rt,e.setOffset=Kt,e.setPropertyValue=X,e.setSort=Gt,e.sortByDateAndPriority=vt,e.toggleSort=function(e,t){let n=!1;return Yt(e)===t&&(n=!Jt(e)),Gt(e,t,n)},e.useMedplum=b,e.useMedplumContext=y,e.useMedplumProfile=C,e.useResource=B,Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=index.min.js.map