@medplum/react 0.9.31 → 0.9.32

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
- import{formatAddress as e,getDisplayString as t,getImageSrc as n,capitalize as a,globalSchema as l,getPropertyDisplayName as r,formatHumanName as o,stringify as i,buildTypeName as c,PropertyType as u,formatTiming as s,formatPeriod as m,formatDateTime as d,getTypedPropertyValue as p,createReference as v,isValidDate as h,toTypedValue as E,getReferenceString as g,evalFhirPath as f,getSearchParameterDetails as y,Operator as b,evalFhirPathTyped as C,SearchParameterType as k,formatSearchQuery as O,parseSearchDefinition as T,DEFAULT_SEARCH_COUNT as j,isUUID as w,normalizeErrorString as S}from"@medplum/core";import N,{useState as x,useRef as V,createContext as A,useEffect as D,useContext as I,useCallback as R,useMemo as P}from"react";import{useNavigate as F,useLocation as L}from"react-router-dom";function M(t){const n=t.value;return n?N.createElement(N.Fragment,null,e(n)):null}function q(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return(null===(n=e.expression)||void 0===n?void 0:n[0])===t}))}function $(e){const t=q(e.outcome,e.name),n=t&&t.length>0;return N.createElement("input",{id:e.name,name:e.name,type:_(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 _(e){return e||"text"}function U(e){return N.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function Q(e){const t=q(e.outcome,e.name),n=t&&t.length>0;return N.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 H(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function K(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 z(e){const[t,n]=x(e.defaultValue||{}),a=V();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,N.createElement(U,null,N.createElement(Q,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e}))}},N.createElement("option",null),N.createElement("option",null,"home"),N.createElement("option",null,"mobile"),N.createElement("option",null,"old"),N.createElement("option",null,"temp"),N.createElement("option",null,"work")),N.createElement(Q,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){l(Object.assign(Object.assign({},a.current),{type:e}))}},N.createElement("option",null),N.createElement("option",null,"postal"),N.createElement("option",null,"physical"),N.createElement("option",null,"both")),N.createElement($,{placeholder:"Line 1",defaultValue:H(t,0),onChange:function(e){l(K(a.current||{},0,e))}}),N.createElement($,{placeholder:"Line 2",defaultValue:H(t,1),onChange:function(e){l(K(a.current||{},1,e))}}),N.createElement($,{placeholder:"City",defaultValue:t.city,onChange:function(e){l(Object.assign(Object.assign({},a.current),{city:e}))}}),N.createElement($,{placeholder:"State",defaultValue:t.state,onChange:function(e){l(Object.assign(Object.assign({},a.current),{state:e}))}}),N.createElement($,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){l(Object.assign(Object.assign({},a.current),{postalCode:e}))}}))}function W(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?N.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&N.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/"))&&N.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},N.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&N.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},N.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),N.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},N.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 B(e){return N.createElement("div",null,e.values&&e.values.map(((t,n)=>N.createElement("div",{key:"attatchment-"+n},N.createElement(W,{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 N.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 Y=A(void 0);function J(e){const t=e.medplum,[n,a]=x({profile:t.getProfile(),loading:!1});D((()=>{function e(){a(Object.assign(Object.assign({},n),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,n]);const l=Object.assign(Object.assign({},n),{medplum:t});return N.createElement(Y.Provider,{value:l},e.children)}function X(){return I(Y)}function Z(){return X().medplum}function ee(){return X().profile}function te(e){e.preventDefault(),e.stopPropagation()}function ne(e){if(ae(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&ae(t[0]))return!0}return!1}function ae(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function le(e){const t=Z(),n=V(null);function a(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 N.createElement(N.Fragment,null,N.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){te(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),N.createElement(G,{testid:"upload-button",onClick:e=>{var t;te(e),null===(t=n.current)||void 0===t||t.click()}},e.children||"Upload..."))}function re(e){var t;const[n,a]=x(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=V();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,N.createElement("table",{style:{width:"100%"}},N.createElement("colgroup",null,N.createElement("col",{width:"90%"}),N.createElement("col",{width:"10%"})),N.createElement("tbody",null,n.map(((e,t)=>N.createElement("tr",{key:`${t}-${n.length}`},N.createElement("td",null,N.createElement(W,{value:e,maxWidth:200})),N.createElement("td",{className:"medplum-right"},N.createElement(G,{onClick:e=>{te(e);const a=n.slice();a.splice(t,1),r(a)}},"Remove"))))),N.createElement("tr",null,N.createElement("td",null),N.createElement("td",{className:"medplum-right"},N.createElement(le,{onUpload:e=>{r([...l.current,e])}})))))}function oe(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?N.createElement(N.Fragment,null,N.createElement(W,{value:t,maxWidth:200}),N.createElement(G,{onClick:e=>{te(e),a(void 0)}},"Remove")):N.createElement(le,{onUpload:a})}function ie(e){return N.createElement("main",{className:"medplum-document"},N.createElement("article",{style:{maxWidth:e.width}},e.children))}function ce(e,t,n,a){return new(n||(n=Promise))((function(l,r){function o(e){try{c(a.next(e))}catch(e){r(e)}}function i(e){try{c(a.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?l(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,i)}c((a=a.apply(e,t||[])).next())}))}function ue(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?se(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&me(t,n);return t}function se(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function me(e,t){e[t.name]=t.value}function de(e){return N.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=ue(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function pe(e){const t=q(e.outcome,e.htmlFor),n=t&&t.length>0;return N.createElement("fieldset",{className:"medplum-form-section"},e.title&&N.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&N.createElement("p",null,e.description),e.children,n&&N.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return N.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 ve(e){return N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},N.createElement("title",null,"Medplum Logo"),N.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),N.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"}),N.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"}),N.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),N.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function he(e){const t=Z(),[n,a]=x();return N.createElement(de,{style:{maxWidth:400},onSubmit:n=>ce(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){a(e)}}))},N.createElement("div",{className:"medplum-center"},N.createElement(ve,{size:32}),N.createElement("h1",null,"Create project")),N.createElement(pe,{title:"Project Name",htmlFor:"projectName",outcome:n},N.createElement($,{name:"projectName",type:"text",testid:"projectName",placeholder:"My Project",required:!0,outcome:n})),N.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",N.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",N.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),N.createElement("div",{className:"medplum-signin-buttons"},N.createElement("div",null),N.createElement("div",null,N.createElement(G,{type:"submit",testid:"submit"},"Create project"))))}function Ee(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 ge(e){const t=Z(),{googleClientId:n,handleGoogleCredential:a}=e,l=V(null),[r,o]=x("undefined"!=typeof google),[i,c]=x(!1),[u,s]=x(!1);return D((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:n,callback:a}),c(!0)),l.current&&!u&&(google.accounts.id.renderButton(l.current,{}),s(!0))):Ee("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,i,r,l,u,a]),n?N.createElement("div",{ref:l}):null}function fe(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")?void 0:t.split(","))&&void 0!==n?n:[]).includes(a)?"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com":void 0}function ye(e){"undefined"==typeof grecaptcha&&Ee("https://www.google.com/recaptcha/api.js?render="+e)}function be(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>ce(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function Ce(e){const t=fe(e.googleClientId),n=e.recaptchaSiteKey,a=Z(),[l,r]=x(),o=q(l,void 0);return D((()=>ye(n)),[n]),N.createElement(de,{style:{maxWidth:400},onSubmit:t=>ce(this,void 0,void 0,(function*(){try{const l=yield be(n);e.handleAuthResponse(yield a.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:n,recaptchaToken:l}))}catch(e){r(e)}}))},N.createElement("div",{className:"medplum-center"},e.children),o&&N.createElement("div",{className:"medplum-input-error"},o.map((e=>{var t,n;return N.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&&N.createElement(N.Fragment,null,N.createElement("div",{className:"medplum-signin-google-container"},N.createElement(ge,{googleClientId:t,handleGoogleCredential:t=>ce(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield a.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){r(e)}}))})),N.createElement("div",{className:"medplum-signin-separator"},"or")),N.createElement(pe,{title:"First Name",htmlFor:"firstName",outcome:l},N.createElement($,{name:"firstName",type:"text",testid:"firstName",placeholder:"First name",required:!0,autoFocus:!0,outcome:l})),N.createElement(pe,{title:"Last Name",htmlFor:"lastName",outcome:l},N.createElement($,{name:"lastName",type:"text",testid:"lastName",placeholder:"Last name",required:!0,outcome:l})),N.createElement(pe,{title:"Email",htmlFor:"email",outcome:l},N.createElement($,{name:"email",type:"email",testid:"email",placeholder:"name@domain.com",required:!0,outcome:l})),N.createElement(pe,{title:"Password",htmlFor:"password",outcome:l},N.createElement($,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:l})),N.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",N.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",N.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),N.createElement("p",{style:{fontSize:"12px",color:"#888"}},"This site is protected by reCAPTCHA and the Google"," ",N.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",N.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply."),N.createElement("div",{className:"medplum-signin-buttons"},N.createElement("div",null,N.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),N.createElement("label",{htmlFor:"remember"},"Remember me")),N.createElement("div",null,N.createElement(G,{type:"submit",testid:"submit"},"Create account"))))}function ke(e){const{type:t,projectId:n,googleClientId:a,recaptchaSiteKey:l,onSuccess:r}=e,o=Z(),[i,c]=x(void 0),[u,s]=x();function m(e){e.code?o.processCode(e.code).then((()=>r())).catch(console.log):e.login&&c(e.login)}return D((()=>{"patient"===t&&i&&o.startNewPatient({login:i,projectId:n}).then((e=>o.processCode(e.code))).then((()=>r())).catch((e=>s(e)))}),[o,t,n,i,r]),N.createElement(ie,{width:450},u&&N.createElement("pre",null,JSON.stringify(u,null,2)),!i&&N.createElement(Ce,{projectId:n,googleClientId:a,recaptchaSiteKey:l,handleAuthResponse:m}),i&&"project"===t&&N.createElement(he,{login:i,handleAuthResponse:m}))}function Oe(e){const t=F();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),N.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{te(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function Te(e){const t=Z(),n=fe(e.googleClientId),[a,l]=x(),r=q(a,void 0);return N.createElement(de,{style:{maxWidth:400},onSubmit:n=>{t.startLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,email:n.email,password:n.password,remember:"true"===n.remember}).then(e.handleAuthResponse).catch(l)}},N.createElement("div",{className:"medplum-center"},e.children),r&&N.createElement("div",{className:"medplum-input-error"},r.map((e=>{var t,n;return N.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)}))),n&&N.createElement(N.Fragment,null,N.createElement("div",{className:"medplum-signin-google-container"},N.createElement(ge,{googleClientId:n,handleGoogleCredential:n=>{t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:n.clientId,googleCredential:n.credential}).then(e.handleAuthResponse).catch(l)}})),N.createElement("div",{className:"medplum-signin-separator"},"or")),N.createElement(pe,{title:"Email",htmlFor:"email",outcome:a},N.createElement($,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:a})),N.createElement(pe,{title:"Password",htmlFor:"password",outcome:a},N.createElement($,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:a})),N.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&N.createElement("div",null,e.onForgotPassword&&N.createElement(Oe,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&N.createElement(Oe,{testid:"register",onClick:e.onRegister},"Register")),N.createElement("div",null,N.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),N.createElement("label",{htmlFor:"remember"},"Remember me")),N.createElement("div",null,N.createElement(G,{type:"submit",testid:"submit"},"Sign in"))))}const je={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function we(e){const t=Z(),[n,a]=x(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?je:e.getCachedReference(t);return}(t,e));return D((()=>{let l=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{l&&a(e)})).catch((()=>a(void 0))),()=>l=!1}),[t,n,e]),n}function Se(e){var a,l;const r=we(e.value),o=e.size?"medplum-avatar "+e.size:"medplum-avatar",i=r?t(r):null!==(a=e.alt)&&void 0!==a?a:"",c=i&&function(e){return e.split(" ").map((e=>e[0])).join("")}(i),u=null!==(l=r&&n(r))&&void 0!==l?l:e.src,s=u?N.createElement("img",{src:u,alt:i}):c;return N.createElement("div",{className:o,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&r?N.createElement(Oe,{to:r},s):s)}function Ne(e){const t=Z();return N.createElement("div",null,N.createElement("div",{className:"medplum-center"},N.createElement(ve,{size:32}),N.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,r;return N.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)}},N.createElement("div",{className:"medplum-nav-menu-profile-icon"},N.createElement(Se,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),N.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,N.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(r=n.project)||void 0===r?void 0:r.display)))})))}function xe(e){const t=Z(),[n,a]=x(void 0),[l,r]=x(void 0);function o(n){n.login&&a(n.login),n.memberships&&r(n.memberships),n.code&&(e.onCode?e.onCode(n.code):t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log))}return N.createElement(ie,{width:450},n?l?N.createElement(Ne,{login:n,memberships:l,handleAuthResponse:o}):"new"===e.projectId?N.createElement(he,{login:n,handleAuthResponse:o}):N.createElement("div",null,"Success"):N.createElement(Te,{projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function Ve(e){var t,n;const a=V(null),[l,r]=x(!1),[o,i]=x(void 0),[c,u]=x(),[s,m]=x(!1),[d,p]=x(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[v,h]=x([]),[E,g]=x(-1),[f,y]=x(),[b,C]=x(),k=V();k.current=o;const O=V();O.current=c;const T=V();T.current=f;const j=V();function w(t){p(t),e.onChange&&e.onChange(t)}function S(t){a.current.value="";const n=e.multiple?[...d,t]:[t];r(!0),m(!1),i(""),h([]),g(-1),w(n)}function A(){var e;null===(e=a.current)||void 0===e||e.focus()}function I(){F(),r(!1),window.setTimeout((()=>{m(!1)}),200)}function R(){T.current&&(T.current.abort(),y(void 0)),void 0!==O.current&&window.clearTimeout(O.current);const t=window.setTimeout((()=>function(){var t,n;u(void 0);const l=(null===(n=null===(t=a.current)||void 0===t?void 0:t.value)||void 0===n?void 0:n.trim())||"";if(l===k.current)return;i(l);const r=new AbortController;y(r),e.loadOptions(l,r.signal).then((e=>{r.signal.aborted||(m(e.length>0),h(e),y(void 0),j.current&&(S(e[0]),C(!1)))})).catch(console.log)}()),100);u(t)}function P(e){switch(e.key){case"Enter":case"Tab":!function(e){var t;O.current||T.current||!F()?C(!0):(te(e),null===(t=a.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":L(-1),te(e);break;case"ArrowDown":L(1),te(e);break;case"Backspace":!function(e){var t;if(null===(t=a.current)||void 0===t?void 0:t.value)return;d.length>0&&(te(e),w(d.slice(0,d.length-1)))}(e);break;case",":case";":!function(e){var t;F(),te(e),null===(t=a.current)||void 0===t||t.focus()}(e)}}function F(){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=a.current)||void 0===t?void 0:t.value)&&(n=e.buildUnstructured(a.current.value)),!!n&&(S(n),!0)}function L(e){let t=E+e;t<0?t=0:t>=v.length&&(t=v.length-1),g(t)}j.current=b,D((()=>()=>{T.current&&T.current.abort()}),[]),D((()=>{var t;p(null!==(t=e.defaultValue)&&void 0!==t?t:[])}),[e.defaultValue]);const M=null!==(n=e.className)&&void 0!==n?n:"medplum-autocomplete-container";return N.createElement("div",{"data-testid":"autocomplete",className:M+(l?" focused":""),onClick:()=>A()},N.createElement("ul",{onClick:()=>A()},d.map((t=>N.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),N.createElement("li",{className:"medplum-autocomplete-item"},N.createElement("input",{type:"text",autoFocus:e.autofocus,placeholder:0===d.length?e.placeholder:void 0,autoComplete:"off",autoCapitalize:"off",spellCheck:"true",onFocus:()=>(r(!0),void(e.loadOnFocus&&R())),onBlur:()=>I(),onChange:()=>R(),onInput:()=>R(),onKeyDown:e=>P(e),ref:a,"data-testid":"input-element"}))),s&&N.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},v.map(((t,n)=>N.createElement("div",{key:e.getId(t),className:n===E?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){g(t)}(0,n),onClick:e=>function(e,t){te(e),S(t)}(e,t)},e.getIcon&&N.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),N.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&N.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&N.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},N.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function Ae(e){return N.createElement("div",{className:"medplum-checkbox-form-section"},N.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),N.createElement("div",{className:"medplum-checkbox-form-section-details-container"},N.createElement("label",{htmlFor:e.htmlFor},e.title),N.createElement("p",null,e.description)))}const De=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function Ie(e){const t=Z(),n=we(e.defaultValue),[a,l]=x(),[r,o]=x();return D((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(l).catch(console.log))}),[t,n]),a&&r?N.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(r)}},N.createElement(pe,{title:"Resource Type"},N.createElement($,{name:"resourceType",defaultValue:r.resourceType,disabled:!0})),N.createElement(pe,{title:"ID"},N.createElement($,{name:"id",defaultValue:r.id,disabled:!0})),N.createElement(Pt,{typeName:r.resourceType,defaultValue:r,outcome:e.outcome,onChange:o}),N.createElement(G,{type:"submit",size:"large"},"OK"),e.onDelete&&N.createElement(G,{type:"button",size:"large",onClick:()=>{e.onDelete(r)}},"Delete")):N.createElement("div",null,"Loading...")}function Re(e,t,n,l,r){const o=l.type;if(o.length>1)for(const n of o){const l=t.replace("[x]",a(n.code));l in e&&delete e[l]}return e[n]=r,e}function Pe(e){return N.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function Fe(e){return N.createElement(N.Fragment,null,N.createElement("dt",null,e.term),N.createElement("dd",null,e.children))}function Le(e){const t=e.value,n=t.value;if(!n)return null;const a=t.type,o=l.types[a];return o?"object"==typeof n&&"name"in n&&1===Object.keys(n).length?N.createElement("div",null,n.name):N.createElement(Pe,{compact:e.compact},Object.entries(o.properties).map((n=>{const a=n[0];if(De.indexOf(a)>=0)return null;const l=n[1],[o,i]=Xe(t,a);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:N.createElement(Fe,{key:a,term:r(a)},N.createElement(Je,{property:l,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):N.createElement("div",null,a," not implemented")}function Me(e){var t,n;return N.createElement(N.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 qe(e){const t=e.value;return t?t.text?N.createElement(N.Fragment,null,t.text):t.coding?N.createElement(N.Fragment,null,t.coding.map(((e,t)=>N.createElement(N.Fragment,{key:"coding-"+t},t>0&&N.createElement(N.Fragment,null,", "),N.createElement(Me,{value:e}))))):null:null}function $e(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("]")),N.createElement(N.Fragment,null,n.join("").trim())}function _e(e){var t;const n=e.value;return n?N.createElement(N.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>N.createElement($e,{key:"telecom-"+t,value:e})))):null}function Ue(e){const t=e.value;return t?N.createElement(N.Fragment,null,o(t,e.options)):null}function Qe(e){var t,n;return N.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 He(e){return N.createElement(N.Fragment,null,Ke(e.value))}function Ke(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 ze(e){return N.createElement(N.Fragment,null,We(e.value))}function We(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${Ke(e.low)}`:!e.low&&e.high?`<= ${Ke(e.high)}`:`${Ke(e.low)} - ${Ke(e.high)}`:""}function Be(e){const t=e.value;return t?N.createElement(N.Fragment,null,N.createElement(He,{value:t.numerator})," / ",N.createElement(He,{value:t.denominator})):null}function Ge(e){if(!e.value)return null;const t=e.value.display||e.value.reference||i(e.value);return!1!==e.link&&e.value.reference?N.createElement(Oe,{to:e.value},t):N.createElement(N.Fragment,null,t)}function Ye(e){var t,n,a;const l=e.property,r=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 N.createElement(N.Fragment,null,r.map(((t,n)=>N.createElement("div",{key:`${n}-${r.length}`},N.createElement(Je,{arrayElement:!0,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function Je(e){var t;const{property:n,propertyType:a,value:l}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===a?N.createElement(B,{values:l,maxWidth:e.maxWidth}):N.createElement(Ye,{property:n,values:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(a){case u.boolean:return N.createElement("div",null,void 0===l?"":Boolean(l).toString());case u.SystemString:case u.code:case u.date:case u.integer:case u.positiveInt:case u.string:case u.unsignedInt:case u.uri:case u.url:return N.createElement("div",null,l);case u.canonical:return N.createElement(Ge,{value:{reference:l},link:e.link});case u.dateTime:case u.instant:return N.createElement("div",null,d(l));case u.markdown:return N.createElement("pre",null,l);case u.Address:return N.createElement(M,{value:l});case u.Annotation:return N.createElement("div",null,null==l?void 0:l.text);case u.Attachment:return N.createElement(W,{value:l,maxWidth:e.maxWidth});case u.CodeableConcept:return N.createElement(qe,{value:l});case u.Coding:return N.createElement(Me,{value:l});case u.ContactDetail:return N.createElement(_e,{value:l});case u.ContactPoint:return N.createElement($e,{value:l});case u.HumanName:return N.createElement(Ue,{value:l});case u.Identifier:return N.createElement(Qe,{value:l});case u.Period:return N.createElement("div",null,m(l));case u.Quantity:return N.createElement(He,{value:l});case u.Range:return N.createElement(ze,{value:l});case u.Ratio:return N.createElement(Be,{value:l});case u.Reference:return N.createElement(Ge,{value:l,link:e.link});case u.Timing:return N.createElement("div",null,s(l));default:if(!(null==n?void 0:n.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return N.createElement(Le,{value:{type:c(null===(t=null==n?void 0:n.path)||void 0===t?void 0:t.split(".")),value:l},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Xe(e,t){const n=p(e,t);return n?Array.isArray(n)?[n.map((e=>e.value)),n[0].type]:[n.value,n.type]:[void 0,"undefined"]}function Ze(e){const t=ee(),[n,a]=x(e.defaultValue||{});return V().current=n,N.createElement($,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:n.text,onChange:function(n){const l=n?{text:n,authorReference:t&&v(t),time:(new Date).toISOString()}:{};a(l),e.onChange&&e.onChange(l)}})}function et(e){return N.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 tt(e){const t=Z();let n;return e.defaultValue&&(n=[e.defaultValue]),N.createElement(Ve,{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(nt)))},buildUnstructured:at,getId:lt,getDisplay:rt,name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function nt(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function at(e){return{text:e}}function lt(e){return e.coding&&e.coding.length>0?e.coding[0].code:i(e)}function rt(e){var t,n,a,l,r,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===(r=null===(l=e.coding)||void 0===l?void 0:l[0])||void 0===r?void 0:r.code)&&void 0!==o?o:e.text;return N.createElement(N.Fragment,null,i)}const ot={};function it(e){const t=Z();let n;return e.defaultValue&&(n=[e.defaultValue]),N.createElement(Ve,{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=>ot[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>N.createElement(N.Fragment,null,ot[e]||e),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function ct(e){const t=Z();let n;return e.defaultValue&&(n=[e.defaultValue]),N.createElement(Ve,{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=>N.createElement(Me,{value:e}),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function ut(e){const[t,n]=x(e.defaultValue),a=V();function l(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return a.current=t,N.createElement(U,null,N.createElement(Q,{defaultValue:null==t?void 0:t.system,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{system:e});e||delete t.system,l(t)},testid:"system"},N.createElement("option",null),N.createElement("option",null,"email"),N.createElement("option",null,"fax"),N.createElement("option",null,"pager"),N.createElement("option",null,"phone"),N.createElement("option",null,"other"),N.createElement("option",null,"sms")),N.createElement(Q,{defaultValue:null==t?void 0:t.use,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{use:e});e||delete t.use,l(t)},testid:"use"},N.createElement("option",null),N.createElement("option",null,"home"),N.createElement("option",null,"mobile"),N.createElement("option",null,"old"),N.createElement("option",null,"temp"),N.createElement("option",null,"work")),N.createElement($,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{value:e});e||delete t.value,l(t)}}))}function st(e){var t;const[n,a]=x(e.defaultValue),l=V();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,N.createElement(U,null,N.createElement($,{name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:null==n?void 0:n.name,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{name:e});e||delete t.name,r(t)}}),N.createElement(ut,{name:e.name+"-telecom",defaultValue:null===(t=null==n?void 0:n.telecom)||void 0===t?void 0:t[0],onChange:function(e){const t=Object.assign(Object.assign({},l.current),{telecom:e&&[e]});e||delete t.telecom,r(t)}}))}function mt(e){return N.createElement($,Object.assign({},e,{type:"datetime-local",defaultValue:dt(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(pt(t))}}))}function dt(e){if(!e)return"";const t=new Date(e);return h(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function pt(e){if(!e)return"";const t=new Date(e);return h(t)?t.toISOString():""}function vt(e){const t="medplum-textarea"+(e.monospace?" monospace":""),n=q(e.outcome,e.name),a=n&&n.length>0;return N.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 ht(e){return N.createElement(vt,{testid:"extension-input",name:e.name,defaultValue:i(e.defaultValue),monospace:!0,onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Et(e){var t,n,a;const[l,r]=x(e.defaultValue),o=V();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=l,N.createElement(U,null,N.createElement(Q,{defaultValue:null==l?void 0:l.use,onChange:function(e){i(Object.assign(Object.assign({},o.current),{use:e||void 0}))},testid:"use"},N.createElement("option",null),N.createElement("option",null,"usual"),N.createElement("option",null,"official"),N.createElement("option",null,"temp"),N.createElement("option",null,"nickname"),N.createElement("option",null,"anonymous"),N.createElement("option",null,"old"),N.createElement("option",null,"maiden")),N.createElement($,{placeholder:"Prefix",defaultValue:null===(t=null==l?void 0:l.prefix)||void 0===t?void 0:t.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{prefix:e?e.split(" "):void 0}))}}),N.createElement($,{placeholder:"Given",defaultValue:null===(n=null==l?void 0:l.given)||void 0===n?void 0:n.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{given:e?e.split(" "):void 0}))}}),N.createElement($,{placeholder:"Family",defaultValue:null==l?void 0:l.family,onChange:function(e){i(Object.assign(Object.assign({},o.current),{family:e||void 0}))}}),N.createElement($,{placeholder:"Suffix",defaultValue:null===(a=null==l?void 0:l.suffix)||void 0===a?void 0:a.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{suffix:e?e.split(" "):void 0}))}}))}function gt(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement($,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e}))}),N.createElement($,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e}))}))}function ft(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement($,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),N.createElement($,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function yt(e){var t;const[n,a]=x(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement(Q,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,onChange:e=>l(Object.assign(Object.assign({},n),{comparator:e}))},N.createElement("option",null),N.createElement("option",null,"<"),N.createElement("option",null,"<="),N.createElement("option",null,">="),N.createElement("option",null,">")),N.createElement($,{name:e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==n?void 0:n.value)||void 0===t?void 0:t.toString(),onChange:e=>l(Object.assign(Object.assign({},n),{value:bt(e)}))}),N.createElement($,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>l(Object.assign(Object.assign({},n),{unit:e}))}))}function bt(e){if(e)return parseFloat(e)}function Ct(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement(yt,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),N.createElement(yt,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function kt(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement(yt,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),N.createElement(yt,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function Ot(e){const n=we(e.value);if(!n)return null;const a=t(n);return e.link?N.createElement(Oe,{to:n},a):N.createElement("span",null,a)}function Tt(e){const t=Z(),n=we(e.defaultValue),[a,l]=x(),r=V(e.resourceType);return r.current=e.resourceType,D((()=>{l(n)}),[n]),N.createElement(Ve,{loadOptions:e=>ce(this,void 0,void 0,(function*(){return t.search(r.current,"name="+encodeURIComponent(e)+"&_count=10").then((e=>e.entry.map((e=>e.resource))))})),getId:e=>e.id,getIcon:e=>N.createElement(Se,{value:e}),getDisplay:e=>N.createElement(Ot,{value:e}),getHelpText:e=>{if("Patient"===e.resourceType&&e.birthDate)return"DoB: "+e.birthDate},name:e.name,defaultValue:a?[a]:void 0,className:e.className,placeholder:e.placeholder,loadOnFocus:e.loadOnFocus,onChange:t=>{var n;n=t.length>0?t[0]:void 0,l(n),e.onChange&&e.onChange(n)}})}function jt(e){const t=e.targetTypes,n=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,t),[a,l]=x(e.defaultValue),[r,o]=x(n);V().current=a;return V().current=r,N.createElement(U,null,t?N.createElement(Q,{testid:"reference-input-resource-type-select",defaultValue:r,onChange:o},t.map((e=>N.createElement("option",{key:e,value:e},e)))):N.createElement($,{testid:"reference-input-resource-type-input",defaultValue:r,onChange:o}),N.createElement(Tt,{resourceType:r,name:e.name+"-id",defaultValue:a,onChange:t=>{var n;n=t?v(t):void 0,l(n),e.onChange&&e.onChange(n)}}))}function wt(e){const[t,n]=x(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),a=V();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,N.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},N.createElement("colgroup",null,N.createElement("col",{width:"90%"}),N.createElement("col",{width:"10%"})),N.createElement("tbody",null,t.map(((n,r)=>N.createElement("tr",{key:`${r}-${t.length}`},N.createElement("td",null,N.createElement(At,{arrayElement:!0,property:e.property,name:e.name+"."+r,defaultValue:n,onChange:e=>{const t=[...a.current];t[r]=e,l(t)}})),N.createElement("td",{style:{textAlign:"right"}},N.createElement(G,{onClick:e=>{te(e);const t=[...a.current];t.splice(r,1),l(t)}},"Remove"))))),N.createElement("tr",null,N.createElement("td",null),N.createElement("td",{style:{textAlign:"right"}},N.createElement(G,{onClick:e=>{te(e);const t=[...a.current];t.push(void 0),l(t)}},"Add")))))}function St(e){const[t,n]=x(100),[a,l]=x(100);if(!e.visible)return null;return N.createElement(N.Fragment,null,N.createElement("div",{className:"modal-dialog-bg"}),N.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:a+"px"}},N.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){te(e);const r=e.clientX-t,o=e.clientY-a;function i(e){te(e),n(e.clientX-r),l(e.clientY-o)}document.addEventListener("mouseup",(function e(t){te(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",i,!0)}),!0),document.addEventListener("mousemove",i,!0)}(e)},N.createElement("span",{className:"modal-dialog-title-text"},e.title),N.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},N.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),N.createElement("div",{className:"modal-dialog-content"},e.children),N.createElement("div",{className:"modal-dialog-buttons"},N.createElement(G,{testid:"dialog-ok",onClick:e.onOk},"OK"),N.createElement(G,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Nt=["sun","mon","tue","wed","thu","fri","sat"];function xt(e){const[t,n]=x(e.defaultValue||{}),[a,l]=x(!1),r=V();return r.current=t,N.createElement(N.Fragment,null,N.createElement(U,null,N.createElement("span",null,s(r.current)||"No repeat"),N.createElement(G,{onClick:()=>l(!0)},"Edit")),N.createElement(Vt,{visible:a,defaultValue:r.current,onOk:t=>{e.onChange&&e.onChange(t),n(t),l(!1)},onCancel:()=>l(!1)}))}function Vt(e){var t,n;const[a,l]=x(e.defaultValue||{}),r=V();function o(e){l(Object.assign(Object.assign({},r.current),{repeat:e}))}function i(e,t){t?function(e){var t,n,a;const l=(null===(n=null===(t=r.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)||o(Object.assign(Object.assign({},null===(a=r.current)||void 0===a?void 0:a.repeat),{dayOfWeek:[...l,e]}))}(e):function(e){var t,n,a;const l=(null===(n=null===(t=r.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)&&o(Object.assign(Object.assign({},null===(a=r.current)||void 0===a?void 0:a.repeat),{dayOfWeek:l.filter((t=>t!==e))}))}(e)}return r.current=a,N.createElement(St,{title:"Timing",visible:e.visible,onOk:()=>e.onOk(a),onCancel:()=>e.onCancel()},N.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},N.createElement(pe,{title:"Starts on",htmlFor:"timing-dialog-start"},N.createElement(mt,{name:"timing-dialog-start",onChange:e=>{return t=e,void l(Object.assign(Object.assign({},r.current),{event:[t]}));var t}})),N.createElement(pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},N.createElement(U,null,N.createElement($,{type:"number",step:1,name:"timing-dialog-period",defaultValue:null===(t=null==a?void 0:a.repeat)||void 0===t?void 0:t.period,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=r.current)||void 0===t?void 0:t.repeat),{period:e}))}(parseInt(e))}),N.createElement(Q,{name:"timing-dialog-periodUnit",defaultValue:null===(n=null==a?void 0:a.repeat)||void 0===n?void 0:n.periodUnit,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=r.current)||void 0===t?void 0:t.repeat),{periodUnit:e}))}(e)},N.createElement("option",{value:"d"},"day"),N.createElement("option",{value:"wk"},"week"),N.createElement("option",{value:"mo"},"month"),N.createElement("option",{value:"a"},"year")))),N.createElement(pe,{title:"Repeat on"},N.createElement(U,null,Nt.map((e=>N.createElement(N.Fragment,{key:e},N.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),N.createElement(et,{name:"timing-dialog-repeat-"+e,onChange:t=>i(e,t)}))))))))}function At(e){var t,n,a;const l=e.property,r=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"===r?N.createElement(re,{name:o,defaultValue:i,onChange:e.onChange}):N.createElement(wt,{property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?N.createElement(Dt,Object.assign({elementDefinitionTypes:c},e)):N.createElement(It,Object.assign({elementDefinitionType:c[0]},e))}function Dt(e){const t=e.elementDefinitionTypes;let n;e.defaultPropertyType&&(n=t.find((t=>t.code===e.defaultPropertyType))),n||(n=t[0]);const[l,r]=x(n);return N.createElement(U,null,N.createElement(Q,{style:{width:"200px"},defaultValue:null==l?void 0:l.code,onChange:e=>{r(t.find((t=>t.code===e)))}},t.map((e=>N.createElement("option",{key:e.code,value:e.code},e.code)))),N.createElement(It,Object.assign({},e,{elementDefinitionType:l,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",a(l.code)))}})))}function It(e){var t;const n=e.property,a=e.elementDefinitionType.code,l=e.name,r=e.defaultValue;switch(a){case u.SystemString:case u.canonical:case u.string:case u.time:case u.uri:case u.url:return N.createElement($,{type:"text",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.date:return N.createElement($,{type:"date",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.dateTime:case u.instant:return N.createElement(mt,{type:"datetime-local",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.decimal:case u.integer:case u.positiveInt:case u.unsignedInt:return N.createElement($,{type:"number",step:a===u.decimal?"any":1,name:l,testid:l,defaultValue:r,onChange:t=>{e.onChange&&e.onChange(parseFloat(t))},outcome:e.outcome});case u.code:return N.createElement(it,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.boolean:return N.createElement(et,{name:l,testid:l,defaultValue:!!r,onChange:t=>{e.onChange&&e.onChange(t)}});case u.markdown:return N.createElement(vt,{name:l,testid:l,defaultValue:r,onChange:e.onChange});case u.Address:return N.createElement(z,{name:l,defaultValue:r,onChange:e.onChange});case u.Annotation:return N.createElement(Ze,{name:l,defaultValue:r,onChange:e.onChange});case u.Attachment:return N.createElement(oe,{name:l,defaultValue:r,onChange:e.onChange});case u.CodeableConcept:return N.createElement(tt,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.Coding:return N.createElement(ct,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.ContactDetail:return N.createElement(st,{name:l,defaultValue:r,onChange:e.onChange});case u.ContactPoint:return N.createElement(ut,{name:l,defaultValue:r,onChange:e.onChange});case u.Extension:return N.createElement(ht,{name:l,defaultValue:r,onChange:e.onChange});case u.HumanName:return N.createElement(Et,{name:l,defaultValue:r,onChange:e.onChange});case u.Identifier:return N.createElement(gt,{name:l,defaultValue:r,onChange:e.onChange});case u.Period:return N.createElement(ft,{name:l,defaultValue:r,onChange:e.onChange});case u.Quantity:return N.createElement(yt,{name:l,defaultValue:r,onChange:e.onChange});case u.Range:return N.createElement(Ct,{name:l,defaultValue:r,onChange:e.onChange});case u.Ratio:return N.createElement(kt,{name:l,defaultValue:r,onChange:e.onChange});case u.Reference:return N.createElement(jt,{name:l,defaultValue:r,targetTypes:Rt(n),onChange:e.onChange});case u.Timing:return N.createElement(xt,{name:l,defaultValue:r,onChange:e.onChange});default:return N.createElement(Pt,{typeName:c(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:r,onChange:e.onChange,outcome:e.outcome})}}function Rt(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 Pt(e){var t;const[n,a]=x(null!==(t=e.defaultValue)&&void 0!==t?t:{});function o(t){a(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=l.types[i];if(!c)return N.createElement("div",null,i," not implemented");const u={type:i,value:n};return N.createElement(N.Fragment,null,Object.entries(c.properties).map((t=>{const a=t[0];if("id"===a||De.indexOf(a)>=0)return null;const l=t[1];if(!l.type)return null;const[i,c]=Xe(u,a);return 1===l.type.length&&"boolean"===l.type[0].code?N.createElement(Ae,{key:a,title:r(a),description:l.definition,htmlFor:a},N.createElement(At,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(Re(n,a,null!=l?l:a,t[1],e))}})):N.createElement(pe,{key:a,title:r(a),description:l.definition,htmlFor:a,outcome:e.outcome},N.createElement(At,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(Re(n,a,null!=l?l:a,t[1],e))}}))})))}function Ft(e){var t;return N.createElement("div",{className:"medplum-resource-badge"},N.createElement(Se,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),N.createElement(Ot,{value:e.value,link:e.link}))}function Lt(e){var t,n;const l=we(e.value),r=we(null===(t=null==l?void 0:l.specimen)||void 0===t?void 0:t[0]);if(!l)return null;let o="";if(l.presentedForm&&l.presentedForm.length>0){const e=l.presentedForm[0];(null===(n=e.contentType)||void 0===n?void 0:n.startsWith("text/plain"))&&e.data&&(o=window.atob(e.data))}if(null==r?void 0:r.note)for(const e of r.note)o+=e.text+"\n\n";return N.createElement("div",{className:"medplum-diagnostic-report"},N.createElement("h1",null,"Diagnostic Report"),N.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&N.createElement("dl",null,N.createElement("dt",null,"Subject"),N.createElement("dd",null,N.createElement(Ft,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>N.createElement("dl",{key:e.reference},N.createElement("dt",null,"Interpreter"),N.createElement("dd",null,N.createElement(Ft,{value:e,link:!0}))))),l.issued&&N.createElement("dl",null,N.createElement("dt",null,"Issued"),N.createElement("dd",null,d(l.issued))),l.status&&N.createElement("dl",null,N.createElement("dt",null,"Status"),N.createElement("dd",null,a(l.status)))),l.result&&N.createElement(Mt,{value:l.result}),o&&N.createElement("pre",null,o.trim()))}function Mt(e){var t;return N.createElement("table",{className:"medplum-table"},N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"Test"),N.createElement("th",null,"Value"),N.createElement("th",null,"Reference Range"),N.createElement("th",null,"Interpretation"))),N.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>N.createElement(qt,{key:"obs-"+t,value:e})))))}function qt(e){const t=we(e.value);return t?N.createElement("tr",null,N.createElement("td",null,N.createElement(Oe,{to:t},N.createElement(qe,{value:t.code}))),N.createElement("td",null,N.createElement($t,{value:t})),N.createElement("td",null,N.createElement(_t,{value:t.referenceRange})),N.createElement("td",null,t.interpretation&&t.interpretation.length>0&&N.createElement(qe,{value:t.interpretation[0]}))):null}function $t(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?N.createElement(He,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?N.createElement(N.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?N.createElement(N.Fragment,null,n.component.map(((e,t)=>N.createElement($t,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function _t(e){const t=e.value&&e.value.length>0&&e.value[0];return t?N.createElement(ze,{value:t}):null}function Ut(){return N.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},N.createElement("div",{className:"medplum-loading-container"},N.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},N.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function Qt(e){return N.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function Ht(e){const t=Z(),[n,a]=x();if(D((()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)}),[t,e.original.resourceType]),!n)return null;const l=n.types[e.original.resourceType];return l?N.createElement("table",{className:"medplum-diff-table"},N.createElement("colgroup",null,N.createElement("col",{style:{width:"30%"}}),N.createElement("col",{style:{width:"35%"}}),N.createElement("col",{style:{width:"35%"}})),N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"Property"),N.createElement("th",null,"Before"),N.createElement("th",null,"After"))),N.createElement("tbody",null,Object.entries(l.properties).map((t=>{const n=t[0];if("id"===n||"meta"===n)return null;const a=t[1],[l,o]=Xe(E(e.original),n),[c,u]=Xe(E(e.revised),n);return Kt(l)&&Kt(c)||i(l)===i(c)?null:N.createElement("tr",{key:n},N.createElement("td",null,r(n)),N.createElement("td",{className:"medplum-diff-removed"},N.createElement(Je,{property:a,propertyType:o,value:l,ignoreMissingValues:!0})),N.createElement("td",{className:"medplum-diff-added"},N.createElement(Je,{property:a,propertyType:u,value:c,ignoreMissingValues:!0})))})))):null}function Kt(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function zt(e){const t=Z(),n=we(e.value),[a,l]=x();return D((()=>{n&&t.requestSchema(n.resourceType).then(l).catch(console.log)}),[t,n]),a&&n?N.createElement(Le,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}function Wt(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return N.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},N.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class Bt extends N.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?N.createElement("h1",null,"Something went wrong."):this.props.children}}function Gt(e){const t=V(null),n=L(),a=V();e.visible?void 0===a.current&&(a.current=n):a.current=void 0;const l=V();l.current=e,D((()=>{function n(n){var a,r;(null===(a=l.current)||void 0===a?void 0:a.visible)&&(null===(r=l.current)||void 0===r?void 0:r.autoClose)&&(null==t?void 0:t.current)&&!t.current.contains(n.target)&&e.onClose()}return document.addEventListener("click",n,!0),()=>document.removeEventListener("click",n,!0)}),[e]),D((()=>{e.visible&&n!==a.current&&e.onClose()}),[n,e]);const r={display:e.visible?"block":"none"};return e.anchor&&(e.anchor.right+250<document.body.clientWidth?r.left=e.anchor.right+"px":r.right=document.body.clientWidth-e.anchor.left+"px",e.anchor.top+300<document.body.clientHeight?r.top=e.anchor.top+"px":r.bottom=document.body.clientHeight-e.anchor.top+"px"),N.createElement(N.Fragment,null,e.modal&&N.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),N.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:r,"data-testid":"popup"},e.children))}function Yt(e){return N.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function Jt(e){var t,n,a;const[l,r]=x(),o=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return N.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},N.createElement("div",{className:"medplum-timeline-item-header"},N.createElement("div",{className:"medplum-timeline-item-avatar"},N.createElement(Se,{value:o,link:!0,size:"medium"})),N.createElement("div",{className:"medplum-timeline-item-title"},N.createElement(Ot,{value:o,link:!0}),N.createElement("div",{className:"medplum-timeline-item-subtitle"},N.createElement(Oe,{to:e.resource},d(null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated)),N.createElement("span",null,"·"),N.createElement(Oe,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&N.createElement("div",{className:"medplum-timeline-item-actions"},N.createElement("a",{href:"#","aria-label":`Actions for ${g(e.resource)}`,onClick:e=>{te(e);const t=e.currentTarget.getBoundingClientRect();r(t)}},N.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},N.createElement("g",{transform:"translate(-446 -350)"},N.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"})))))),N.createElement(Bt,null,e.padding&&N.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&N.createElement(N.Fragment,null,e.children)),e.socialEnabled&&N.createElement("div",{className:"medplum-timeline-item-footer"},N.createElement(G,{borderless:!0},"Like"),N.createElement(G,{borderless:!0},"Comment")),e.popupMenuItems&&N.createElement(Gt,{visible:!!l,anchor:l,autoClose:!0,onClose:()=>r(void 0)},e.popupMenuItems))}function Xt(e){e.sort(Zt)}function Zt(e,t){const n=en(e),a=en(t);return n>a?1:n<a?-1:tn(e)-tn(t)}function en(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function tn(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 nn(e){const t=F(),n=Z(),a=n.getProfile(),l=V(null),r=we(e.value),[o,i]=x(),[c,u]=x([]),s=e.buildSearchRequests,m=V(c);m.current=c;const d=R((()=>{if(!r)return u([]),void i({});n.executeBatch(s(r)).then(p).catch(console.log)}),[n,r,s]);function p(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&i(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}Xt(t),t.reverse()}u(t)}function v(e){const t=[...m.current,...e];Xt(t),t.reverse(),u(t)}function h(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function E(e){h(e,"stat").then(d).catch(console.log)}function g(e){h(e,"routine").then(d).catch(console.log)}function f(e){t(`/${e.resourceType}/${e.id}`)}function y(e){t(`/${e.resourceType}/${e.id}/edit`)}function b(e){t(`/${e.resourceType}/${e.id}/delete`)}function C(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return D((()=>{d()}),[d]),r&&o?N.createElement(Yt,null,e.createCommunication&&N.createElement("article",{className:"medplum-timeline-item"},N.createElement("div",{className:"medplum-timeline-item-header"},N.createElement(de,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,r&&e.createCommunication&&n.createResource(e.createCommunication(r,a,o)).then((e=>{v([e])})).catch(console.log);const i=l.current;i&&(i.value="",i.focus())}},N.createElement($,{name:"text",testid:"timeline-input",inputRef:l}),N.createElement(G,{type:"submit"},"Comment"),N.createElement(le,{onUpload:function(t){r&&e.createMedia&&n.createResource(e.createMedia(r,a,t)).then((e=>{v([e])})).catch(console.log)}})))),c.map((e=>{var t;if(e.resourceType===r.resourceType&&e.id===r.id)return N.createElement(ln,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:o,resource:e,onDetails:C});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return N.createElement(cn,{key:n,resource:e,onDetails:f});case"Communication":return N.createElement(rn,{key:n,resource:e,onPin:"stat"!==e.priority?E:void 0,onUnpin:"stat"===e.priority?g:void 0,onDetails:f,onEdit:y,onDelete:b});case"DiagnosticReport":return N.createElement(un,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});case"Media":return N.createElement(on,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});default:return N.createElement(Jt,{key:n,resource:e,padding:!0},N.createElement(zt,{value:e,ignoreMissingValues:!0}))}}))):N.createElement(Ut,null)}function an(e){return N.createElement(N.Fragment,null,e.onPin&&N.createElement(Qt,{onClick:()=>e.onPin(e.resource),label:`Pin ${g(e.resource)}`},"Pin"),e.onUnpin&&N.createElement(Qt,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${g(e.resource)}`},"Unpin"),e.onDetails&&N.createElement(Qt,{onClick:()=>e.onDetails(e.resource),label:`Details ${g(e.resource)}`},"Details"),e.onEdit&&N.createElement(Qt,{onClick:()=>e.onEdit(e.resource),label:`Edit ${g(e.resource)}`},"Edit"),e.onDelete&&N.createElement(Qt,{onClick:()=>e.onDelete(e.resource),label:`Delete ${g(e.resource)}`},"Delete"))}function ln(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?N.createElement(Jt,{resource:e.resource,padding:!0,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement(Ht,{original:t,revised:e.resource})):N.createElement(Jt,{resource:e.resource,padding:!0,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement("h3",null,"Created"),N.createElement(zt,{value:e.resource,ignoreMissingValues:!0}))}function rn(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return N.createElement(Jt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:N.createElement(an,Object.assign({},e))},N.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 on(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 N.createElement(Jt,{resource:e.resource,padding:!!a,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement(W,{value:e.resource.content}))}function cn(e){return N.createElement(Jt,{resource:e.resource,padding:!0,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement(Wt,null,N.createElement("pre",null,e.resource.outcomeDesc)))}function un(e){return N.createElement(Jt,{resource:e.resource,padding:!0,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement(Lt,{value:e.resource}))}function sn(e){return N.createElement(nn,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${g(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${g(e)}&_sort=-_lastUpdated`}}]})})}function mn(e){return N.createElement(nn,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${g(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${g(e)}`}},{request:{method:"GET",url:`Media?encounter=${g(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",encounter:v(e),subject:e.subject,sender:v(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",encounter:v(e),subject:e.subject,operator:v(t),issued:(new Date).toISOString(),content:n})})}function dn(e){let t;try{t=f(e.path,e.resource)}catch(e){return console.warn("FhirPathDisplay:",e),null}if(t.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${t.length} elements [${JSON.stringify(t,null,2)}]`);return N.createElement(Je,{value:t[0]||"",propertyType:e.propertyType})}function pn(e,t,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=e.types[t],r=l.properties[n],o=null===(a=l.searchParams)||void 0===a?void 0:a[n.toLowerCase()];if(r&&o)return{name:n,elementDefinition:r,searchParams:[o]};if(r){let e;if(l.searchParams){const a=`${t}.${n.replaceAll("[x]","")}`;e=Object.values(l.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(a)})),0===e.length&&(e=void 0)}return{name:n,elementDefinition:r,searchParams:e}}if(o){return{name:n,elementDefinition:y(e,t,o).elementDefinition,searchParams:[o]}}return{name:n}}const vn={string:[b.EQUALS,b.NOT,b.CONTAINS,b.EXACT],fulltext:[b.EQUALS,b.NOT,b.CONTAINS,b.EXACT],token:[b.EQUALS,b.NOT],reference:[b.EQUALS,b.NOT],numeric:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS],quantity:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS],date:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS,b.STARTS_AFTER,b.ENDS_BEFORE,b.APPROXIMATELY],datetime:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS,b.STARTS_AFTER,b.ENDS_BEFORE,b.APPROXIMATELY]},hn={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 En(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function gn(e){return En(e,[])}function fn(e,t){return En(e,(e.filters||[]).filter((e=>e.code!==t)))}function yn(e,t,n,a,l){l&&(e=fn(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),En(e,r)}function bn(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})}function Cn(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 kn(e,t){return jn(e,t,-1)}function On(e,t){return jn(e,t,0)}function Tn(e,t){return jn(e,t,1)}function jn(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),In(e,t,a,l)}function wn(e,t){return xn(e,t,-1)}function Sn(e,t){return xn(e,t,0)}function Nn(e,t){return xn(e,t,1)}function xn(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),In(e,t,a,l)}function Vn(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return In(e,t,n,new Date)}function An(e,t,n){return In(e,t,n,n)}function Dn(e,t,n,a){return Rn(e=fn(e,t),t,n,a)}function In(e,t,n,a){return e=Rn(e=fn(e,t),t,b.GREATER_THAN_OR_EQUALS,n),e=Rn(e,t,b.LESS_THAN_OR_EQUALS,a)}function Rn(e,t,n,a){return yn(e,t,n,a.toISOString())}function Pn(e,t,n=!0){return yn(e,t,b.MISSING,n.toString())}function Fn(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function Ln(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Mn(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 Ln(e,Math.max(r,0))}function qn(e,t,n){return t===_n(e)&&void 0!==n&&n===Un(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function $n(e,t){let n=!1;return _n(e)===t&&(n=!Un(e)),qn(e,t,n)}function _n(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Un(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Qn(e){return vn[e.type]}function Hn(e){var t;return null!==(t=hn[e])&&void 0!==t?t:""}function Kn(e){let t=e;return t.includes(".")&&(t=t.split(".").pop()),"id"===t?"ID":"versionId"===t?"Version ID":(t=t.replace("[x]",""),t=t.replace(/([A-Z])/g," $1"),t=t.replace(/[-_]/g," "),t=t.replace(/\s+/g," "),t=t.trim(),t.split(/\s/).map(a).join(" "))}function zn(e,t){var n,a;const l=t.name;return"id"===l?e.id:"meta.versionId"===l?null===(n=e.meta)||void 0===n?void 0:n.versionId:"_lastUpdated"===l?d(null===(a=e.meta)||void 0===a?void 0:a.lastUpdated):t.elementDefinition&&`${e.resourceType}.${t.name}`===t.elementDefinition.path?function(e,t){var n,a,l;const r=(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]=Xe({type:e.resourceType,value:e},r);if(!o)return null;return N.createElement(Je,{property:t,propertyType:i,value:o,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,t.elementDefinition):t.searchParams&&1===t.searchParams.length&&t.name===t.searchParams[0].code?function(e,t,n){const a=C(t.expression,[{type:e.resourceType,value:e}]);if(!a||0===a.length)return null;if(n)return N.createElement(Je,{propertyType:a[0].type,value:a[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return N.createElement(N.Fragment,null,a.map(((e,t)=>N.createElement("span",{key:`${t}-${a.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function Wn(e){var t;const[n,a]=x({search:JSON.parse(i(e.search))}),l=V(null),r=V(null);function o(){var e,t;const r=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=l.current)||void 0===t?void 0:t.value;if(o){const e=[...r,o];a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function c(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=r.current)||void 0===t?void 0:t.value;if(o){const e=[...l];e.splice(e.indexOf(o),1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function u(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(D((()=>{a({search:e.search})}),[e.search]),!e.visible)return null;const s=e.search.resourceType,m=e.schema.types[s],d=null!==(t=n.search.fields)&&void 0!==t?t:[],p=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(Kn(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=Kn(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(Kn(l)))}return t}(m).filter((e=>!(null==d?void 0:d.includes(e)))).sort();return N.createElement(St,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(n.search),onCancel:e.onCancel},N.createElement("div",null,N.createElement("table",{style:{margin:"auto"}},N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",{colSpan:2,align:"center"},"Available"),N.createElement("th",{colSpan:2,align:"center"},"Selected"))),N.createElement("tbody",null,N.createElement("tr",null,N.createElement("td",{colSpan:2,align:"center"},N.createElement("select",{ref:l,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&o()}(e),onDoubleClick:()=>{o()},"data-testid":"available"},p.map((e=>N.createElement("option",{key:e,value:e},Kn(e)))))),N.createElement("td",{colSpan:2,align:"center"},N.createElement("select",{ref:r,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"selected"},d.map((e=>N.createElement("option",{key:e,value:e},Kn(e)))))))),N.createElement("tfoot",null,N.createElement("tr",null,N.createElement("td",{align:"center"},N.createElement(G,{size:"small",onClick:o},"Add")),N.createElement("td",{align:"center"},N.createElement(G,{size:"small",onClick:c},"Remove")),N.createElement("td",{align:"center"},N.createElement(G,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=r.current)||void 0===t?void 0:t.value;if(o){const e=[...l],t=e.indexOf(o);u(e,t,t-1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Up")),N.createElement("td",{align:"center"},N.createElement(G,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=r.current)||void 0===t?void 0:t.value;if(o){const e=[...l],t=e.indexOf(o);u(e,t,t+1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Down")))))))}function Bn(e){var t,n;const a=null===(n=null===(t=Z().getSchema().types[e.resourceType])||void 0===t?void 0:t.searchParams)||void 0===n?void 0:n[e.filter.code],l=e.filter;return"reference"===(null==a?void 0:a.type)?N.createElement(Ot,{value:{reference:l.value}}):"_lastUpdated"===e.filter.code||"datetime"===(null==a?void 0:a.type)?N.createElement(N.Fragment,null,d(l.value)):N.createElement(N.Fragment,null,l.value)}function Gn(e){var t;const n="filter-value";switch(y(e.schema,e.resourceType,e.searchParam).type){case k.REFERENCE:return N.createElement(jt,{name:n,defaultValue:{reference:e.defaultValue},targetTypes:null===(t=e.searchParam)||void 0===t?void 0:t.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case k.BOOLEAN:return N.createElement(et,{name:n,testid:n,defaultValue:"true"===e.defaultValue,onChange:t=>e.onChange(t.toString())});case k.DATE:return N.createElement($,{type:"date",testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.DATETIME:return N.createElement(mt,{testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.NUMBER:return N.createElement($,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case k.QUANTITY:return N.createElement(yt,{name:n,defaultValue:Yn(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return N.createElement($,{testid:n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function Yn(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function Jn(e){const[t,n]=x(JSON.parse(i(e.search))),[a,l]=x(-1),r=V(t);if(r.current=t,D((()=>{n(JSON.parse(i(e.search)))}),[e.search]),!e.visible)return null;const o=e.schema,c=e.search.resourceType,u=o.types[c].searchParams,s=t.filters||[];return N.createElement(St,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(r.current),onCancel:e.onCancel},N.createElement("div",{className:"medplum-filter-editor"},N.createElement("table",{className:"medplum-filter-editor-table"},N.createElement("colgroup",null,N.createElement("col",{style:{width:200}}),N.createElement("col",{style:{width:200}}),N.createElement("col",{style:{width:380}}),N.createElement("col",{style:{width:120}})),N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"Field"),N.createElement("th",null,"Operation"),N.createElement("th",null,"Value"),N.createElement("th",null,"Actions"))),N.createElement("tbody",null,s.map(((e,t)=>t===a?N.createElement(Zn,{key:`filter-${t}-${s.length}-input`,schema:o,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const a=[...s];a[t]=e,n(En(r.current,a)),l(-1)},onCancel:()=>l(-1)}):N.createElement(Xn,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>l(t),onDelete:()=>n(Cn(r.current,t))}))),N.createElement(Zn,{schema:o,resourceType:c,searchParams:u,okText:"Add",onOk:function(e){n(yn(r.current,e.code,e.operator,e.value))}})))))}function Xn(e){const{filter:t}=e;return N.createElement("tr",null,N.createElement("td",null,Kn(t.code)),N.createElement("td",null,Hn(t.operator)),N.createElement("td",null,N.createElement(Bn,{resourceType:e.resourceType,filter:t})),N.createElement("td",null,N.createElement(G,{size:"small",onClick:e.onEdit},"Edit"),N.createElement(G,{size:"small",onClick:e.onDelete},"Delete")))}function Zn(e){var t;const[n,a]=x(null!==(t=e.defaultValue)&&void 0!==t?t:{}),l=V(n);l.current=n;const r=e.searchParams[n.code],o=r&&Qn(r);return N.createElement("tr",null,N.createElement("td",null,N.createElement(Q,{testid:"filter-field",defaultValue:l.current.code,onChange:function(e){a(Object.assign(Object.assign({},l.current),{code:e}))}},N.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>N.createElement("option",{key:e,value:e},Kn(e)))))),N.createElement("td",null,o&&N.createElement(Q,{testid:"filter-operation",defaultValue:n.operator,onChange:function(e){a(Object.assign(Object.assign({},l.current),{operator:e}))}},N.createElement("option",{value:""}),o.map((e=>N.createElement("option",{key:e,value:e},Hn(e)))))),N.createElement("td",null,r&&n.operator&&N.createElement(Gn,{schema:e.schema,resourceType:e.resourceType,searchParam:r,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},l.current),{value:e}))}})),N.createElement("td",null,n.code&&n.operator&&n.value&&N.createElement(G,{size:"small",onClick:()=>{e.onOk(l.current),a({})}},e.okText),e.onCancel&&N.createElement(G,{size:"small",onClick:e.onCancel},"Cancel")))}function ea(e){var t;const[n,a]=x(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function l(){e.onOk(Object.assign(Object.assign({},e.filter),{value:n}))}return N.createElement(St,{title:e.title,visible:e.visible,onOk:l,onCancel:e.onCancel},N.createElement("div",{style:{width:500}},N.createElement(de,{onSubmit:l},N.createElement(Gn,{schema:e.schema,resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))))}function ta(){return N.createElement("div",{className:"medplum-menu-separator"})}function na(e){const[t,n]=x(!1),[a,l]=x(!1),[r,o]=x(void 0),i=V(null),c=V(!1);c.current=t;const u=V(!1);function s(){const e=i.current;e&&(o(e.getBoundingClientRect()),l(!0))}return u.current=a,D((()=>{const e=window.setInterval((()=>{!u.current&&c.current?s():u.current&&!c.current&&l(!1)}),150);return()=>window.clearInterval(e)}),[]),N.createElement("div",{ref:i,className:"medplum-menu-item medplum-submenu-item",onClick:()=>s(),onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1)},e.title,N.createElement("span",{className:"medplum-submenu-arrow"},"►"),N.createElement(Gt,{visible:a,anchor:r,autoClose:!0,onClose:()=>l(!1)},e.children))}function aa(e){if(!e.searchParams)return null;function t(t,n){l(qn(e.search,t.code,n))}function n(t){l(fn(e.search,t.code))}function a(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})}function l(t){e.onChange(t)}const r={left:e.x,right:e.x,top:e.y,bottom:e.y};return 1===e.searchParams.length?N.createElement(Gt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},N.createElement(la,{search:e.search,searchParam:e.searchParams[0],onSort:t,onPrompt:a,onChange:l,onClear:n})):N.createElement(Gt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},e.searchParams.map((r=>N.createElement(na,{key:r.code,title:Kn(r.code)},N.createElement(la,{search:e.search,searchParam:r,onSort:t,onPrompt:a,onChange:l,onClear:n})))))}function la(e){switch(e.searchParam.type){case"date":return N.createElement(ra,Object.assign({},e));case"number":case"quantity":return N.createElement(oa,Object.assign({},e));case"reference":return N.createElement(ia,Object.assign({},e));case"string":case"token":case"uri":return N.createElement(ca,Object.assign({},e));default:return N.createElement(N.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function ra(e){const{searchParam:t}=e,n=t.code;return N.createElement(N.Fragment,null,N.createElement(Qt,{onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),N.createElement(Qt,{onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.ENDS_BEFORE)},"Before..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.STARTS_AFTER)},"After..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Between..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Tn(e.search,n))},"Tomorrow"),N.createElement(Qt,{onClick:()=>e.onChange(On(e.search,n))},"Today"),N.createElement(Qt,{onClick:()=>e.onChange(kn(e.search,n))},"Yesterday"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Nn(e.search,n))},"Next Month"),N.createElement(Qt,{onClick:()=>e.onChange(Sn(e.search,n))},"This Month"),N.createElement(Qt,{onClick:()=>e.onChange(wn(e.search,n))},"Last Month"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Vn(e.search,n))},"Year to date"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n))},"Missing"),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n,!1))},"Not missing"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onClear(t)},"Clear filters"))}function oa(e){const{searchParam:t}=e,n=t.code;return N.createElement(N.Fragment,null,N.createElement(Qt,{onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),N.createElement(Qt,{onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.GREATER_THAN)},"Greater than..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.LESS_THAN)},"Less than..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n))},"Missing"),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n,!1))},"Not missing"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ia(e){const{searchParam:t}=e,n=t.code;return N.createElement(N.Fragment,null,N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n))},"Missing"),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n,!1))},"Not missing"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ca(e){const{searchParam:t}=e,n=t.code;return N.createElement(N.Fragment,null,N.createElement(Qt,{onClick:()=>e.onSort(t,!1)},"Sort A to Z"),N.createElement(Qt,{onClick:()=>e.onSort(t,!0)},"Sort Z to A"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.CONTAINS)},"Contains..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Does not contain..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n))},"Missing"),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n,!1))},"Not missing"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ua(e){return N.createElement("div",{className:"medplum-title-bar"},e.children)}class sa extends Event{constructor(e){super("change"),this.definition=e}}class ma extends Event{constructor(e){super("load"),this.response=e}}class da extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function pa(e){var t,n,a,l;const r=Z(),[o,i]=x(),[c,u]=x(),{search:s,onLoad:m}=e,[d,p]=x({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParams:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),v=V(d);function h(t){e.onChange&&e.onChange(new sa(t))}function E(t,n){ne(t.target)||(te(t),1!==t.button&&e.onClick&&e.onClick(new da(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new da(n,t)))}v.current=d,D((()=>{u(void 0),r.search(s.resourceType,O(Object.assign(Object.assign({},s),{total:"accurate"}))).then((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:e})),m&&m(new ma(e))})).catch((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:void 0})),u(e)}))}),[r,s,m]),D((()=>{r.requestSchema(e.search.resourceType).then((e=>{i(Object.assign({},e))})).catch(console.log)}),[r,e.search.resourceType]);if(!(null===(t=null==o?void 0:o.types)||void 0===t?void 0:t[e.search.resourceType]))return N.createElement(Ut,null);const g=e.checkboxesEnabled,f=function(e,t){const n=t.resourceType,a=[];for(const l of t.fields||["id","_lastUpdated"])a.push(pn(e,n,l));return a}(o,s),y=s.resourceType,b=d.searchResponse,C=null==b?void 0:b.entry,k=null==C?void 0:C.map((e=>e.resource)),w=null===(a=null===(n=e.userConfig)||void 0===n?void 0:n.search)||void 0===a?void 0:a.filter((e=>{var t;return null===(t=e.criteria)||void 0===t?void 0:t.startsWith(y)}));return N.createElement("div",{className:"medplum-search-control",onContextMenu:e=>te(e),"data-testid":"search-control"},!e.hideToolbar&&N.createElement(ua,null,N.createElement("div",null,N.createElement("h1",null,N.createElement("a",{href:`https://www.hl7.org/fhir/${y.toLowerCase()}.html`,target:"_blank",rel:"noopener"},y)),w&&N.createElement(Q,{testid:"saved-search-select",style:{width:80},onChange:e=>{h(T(e))}},N.createElement("option",null),w.map(((e,t)=>N.createElement("option",{key:`${t}-${w.length}`,value:e.criteria},e.name)))),N.createElement(G,{testid:"fields-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!0}))},"Fields"),N.createElement(G,{testid:"filters-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&N.createElement(G,{size:"small",onClick:e.onNew},"New..."),e.onExport&&N.createElement(G,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&N.createElement(G,{size:"small",onClick:()=>e.onDelete(Object.keys(d.selected))},"Delete..."),e.onBulk&&N.createElement(G,{size:"small",onClick:()=>e.onBulk(Object.keys(d.selected))},"Bulk...")),b&&N.createElement("div",null,N.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)}(s,b.total),"-",function(e,t){var n,a;return Math.min(t,((null!==(n=e.offset)&&void 0!==n?n:0)+1)*(null!==(a=e.count)&&void 0!==a?a:j))}(s,b.total)," of"," ",null===(l=b.total)||void 0===l?void 0:l.toLocaleString()),N.createElement(G,{testid:"prev-page-button",size:"small",onClick:()=>h(Mn(s,-1))},"<<"),N.createElement(G,{testid:"next-page-button",size:"small",onClick:()=>h(Mn(s,1))},">>"))),N.createElement("table",null,N.createElement("thead",null,N.createElement("tr",null,g&&N.createElement("th",{className:"medplum-search-icon-cell"},N.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=v.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=v.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)})),p(Object.assign(Object.assign({},v.current),{selected:a}))}(e)})),f.map((e=>N.createElement("th",{key:e.name,onClick:t=>function(e,t){p(Object.assign(Object.assign({},v.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParams:t}))}(t,e.searchParams)},Kn(e.name),e.searchParams&&N.createElement(Ea,null))))),!e.hideFilters&&N.createElement("tr",null,g&&N.createElement("th",{className:"filters medplum-search-icon-cell"}),f.map((t=>N.createElement("th",{key:t.name,className:"filters"},t.searchParams&&N.createElement(ha,{resourceType:y,searchParams:t.searchParams,filters:e.search.filters})))))),N.createElement("tbody",null,null==k?void 0:k.map((e=>e&&N.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>E(t,e),onAuxClick:t=>E(t,e)},g&&N.createElement("td",{className:"medplum-search-icon-cell"},N.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!d.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},v.current.selected);n?a[t]=!0:delete a[t],p(Object.assign(Object.assign({},v.current),{selected:a}))}(t,e.id)})),f.map((t=>N.createElement("td",{key:t.name},zn(e,t))))))))),0===(null==k?void 0:k.length)&&N.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),c&&N.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},N.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),N.createElement(aa,{schema:o,search:e.search,visible:d.popupVisible,x:d.popupX,y:d.popupY,searchParams:d.popupSearchParams,onPrompt:(e,t)=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{h(e),p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))},onClose:()=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))}}),N.createElement(Wn,{schema:o,search:e.search,visible:v.current.fieldEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))}}),N.createElement(Jn,{schema:o,search:e.search,visible:v.current.filterEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))}}),N.createElement(ea,{visible:v.current.filterDialogVisible,title:"Input",schema:o,resourceType:y,searchParam:d.filterDialogSearchParam,filter:d.filterDialogFilter,defaultValue:"",onOk:t=>{h(yn(e.search,t.code,t.operator,t.value)),p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))}}))}const va=N.memo(pa);function ha(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?N.createElement("span",null,"no filters"):N.createElement(N.Fragment,null,n.map(((t,a)=>N.createElement("div",{key:`filter-${a}-${n.length}`},Hn(t.operator)," ",N.createElement(Bn,{resourceType:e.resourceType,filter:t})))))}function Ea(){return N.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},N.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function ga(e){var t,n,a,l,r;const o=Z(),[i,c]=x(),[u,s]=x(),{query:m,fields:d}=e,[p,v]=x(),[h,E]=x({}),g=V();g.current=p;const f=V({});function y(t,n){ne(t.target)||(te(t),1!==t.button&&e.onClick&&e.onClick(new da(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new da(n,t)))}f.current=h,D((()=>{s(void 0),o.graphql(m).then(v).catch(s)}),[o,m]),D((()=>{o.requestSchema(e.resourceType).then((e=>{c(Object.assign({},e))})).catch(console.log)}),[o,e.resourceType]);if(!(null===(t=null==i?void 0:i.types)||void 0===t?void 0:t[e.resourceType]))return N.createElement(Ut,null);const b=e.checkboxesEnabled;return N.createElement("div",{className:"medplum-search-control",onContextMenu:e=>te(e),"data-testid":"search-control"},N.createElement("table",null,N.createElement("thead",null,N.createElement("tr",null,b&&N.createElement("th",{className:"medplum-search-icon-cell"},N.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=g.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)&&!f.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=g.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)})),E(l)}(e)})),d.map((e=>N.createElement("th",{key:e.name},e.name))))),N.createElement("tbody",null,null===(a=null===(n=null==p?void 0:p.data)||void 0===n?void 0:n.ResourceList)||void 0===a?void 0:a.map((e=>e&&N.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},b&&N.createElement("td",{className:"medplum-search-icon-cell"},N.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!h[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},f.current);n?a[t]=!0:delete a[t],E(a)}(t,e.id)})),d.map((t=>N.createElement("td",{key:t.name},N.createElement(dn,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(r=null===(l=null==p?void 0:p.data)||void 0===l?void 0:l.ResourceList)||void 0===r?void 0:r.length)&&N.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&N.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},N.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&N.createElement(G,{size:"small",onClick:()=>e.onBulk(Object.keys(f.current))},"Bulk..."))}const fa=N.memo(ga);function ya(e){return N.createElement("div",{className:"medplum-footer"},e.children)}function ba(e){const t=Z();return N.createElement(Ve,{loadOptions:(e,n)=>ce(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)=>Ca(n,t)-Ca(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 t.graphql(function(e){const t=JSON.stringify(e);if(w(e))return`{\n Patients1: PatientList(_id: ${t}, _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: ${t}, _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: ${t}, _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: ${t}, _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: ${t}, _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:n}),e)})),getId:e=>e.id,getIcon:e=>N.createElement(Se,{value:e}),getDisplay:e=>N.createElement(Ot,{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 Ca(e,t){let n=0;if(e.identifier)for(const a of e.identifier)n=Math.max(n,ka(a.value,t));if("Patient"===e.resourceType&&e.name)for(const a of e.name)n=Math.max(n,ka(o(a),t));return n}function ka(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}function Oa(e){var t,n,a,l,r,o;const i=F(),c=L(),u=X(),s=u.medplum,m=s.getLogins(),[d,p]=x(!1),[v,h]=x(!1);return N.createElement(N.Fragment,null,N.createElement("header",{role:"banner","data-testid":"header",style:{background:e.bgColor}},N.createElement("div",null,N.createElement(Oe,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>h(!v)},N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},N.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"}))),N.createElement(Oe,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},e.title||"Medplum"),u.profile&&N.createElement(ba,{key:`header-input-${c.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>i(`/${e.resourceType}/${e.id}`)})),u.profile&&N.createElement("div",{className:"medplum-nav-menu-container"},N.createElement(Oe,{testid:"header-profile-menu-button",onClick:()=>p(!0)},N.createElement(Se,{size:"small",color:"#f68d42",value:u.profile})),N.createElement(Gt,{visible:d,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>p(!1)},N.createElement("div",{className:"medplum-nav-menu"},N.createElement("div",{style:{margin:"auto",padding:"8px"}},N.createElement(Se,{size:"large",value:u.profile})),N.createElement("div",{style:{margin:"auto",padding:"8px"}},N.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},N.createElement(Ue,{value:null===(n=null===(t=u.profile)||void 0===t?void 0:t.name)||void 0===n?void 0:n[0]})),N.createElement("div",{style:{margin:"4px auto 4px auto"}},null===(l=null===(a=s.getActiveLogin())||void 0===a?void 0:a.project)||void 0===l?void 0:l.display),N.createElement(G,{testid:"header-profile-link",onClick:()=>{p(!1),e.onProfile&&e.onProfile()}},"Manage your account")),m.length>1&&N.createElement("div",null,N.createElement("hr",null),m.map((e=>{var t,n,a,l;return(null===(t=e.profile)||void 0===t?void 0:t.reference)!==g(u.profile)&&N.createElement("div",{className:"medplum-nav-menu-profile",key:null===(n=e.profile)||void 0===n?void 0:n.reference,onClick:()=>{s.setActiveLogin(e).then((()=>{p(!1),window.location.reload()})).catch(console.log)}},N.createElement("div",{className:"medplum-nav-menu-profile-icon"},N.createElement(Se,null)),N.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(a=e.profile)||void 0===a?void 0:a.display,N.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(l=e.project)||void 0===l?void 0:l.display)))}))),N.createElement("hr",null),N.createElement("div",{style:{margin:"auto",padding:"8px"}},N.createElement(G,{testid:"header-add-account-button",onClick:()=>{i("/signin")}},"Add another account")),N.createElement("hr",null),N.createElement("div",{style:{margin:"auto",padding:"8px"}},N.createElement(G,{testid:"header-signout-button",onClick:()=>{p(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),N.createElement("hr",null),N.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},N.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),N.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),N.createElement(Gt,{modal:!0,autoClose:!0,visible:v,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>h(!1)},null===(o=null===(r=e.config)||void 0===r?void 0:r.menu)||void 0===o?void 0:o.map(((t,n)=>{var a,l,r;return N.createElement(N.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},N.createElement("h5",null,t.title),N.createElement("ul",null,null===(r=t.link)||void 0===r?void 0:r.map((e=>N.createElement("li",{key:e.target},N.createElement(Oe,{to:e.target},e.name))))))})),N.createElement("h5",null,"Settings"),N.createElement("ul",null,N.createElement("li",null,N.createElement(Oe,{to:u.profile},"Profile")),N.createElement("li",null,N.createElement(Oe,{to:"/changepassword"},"Change password")))))}const Ta=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function ja(e){return N.createElement(nn,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:Ta.map((t=>({request:{method:"GET",url:t.replaceAll("$",g(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",subject:v(e),sender:v(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",subject:v(e),operator:v(t),issued:(new Date).toISOString(),content:n})})}function wa(e){const t=Z(),n=we(e.value),[a,l]=x(void 0),[r,o]=x(),[i,c]=x(),[u,s]=x();function m(){c(void 0)}function d(){o(void 0)}const p=V();if(p.current=u,D((()=>{t.requestSchema("PlanDefinition").then(l).catch(console.log)}),[t]),D((()=>{var e;return s((e=null!=n?n:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:La(e.action)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),!a||!u)return null;function v(e,t){s(Object.assign(Object.assign({},p.current),{[e]:t}))}return N.createElement("div",{className:"medplum-questionnaire-builder"},N.createElement(de,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(u)},N.createElement(pe,{title:"Plan Title",htmlFor:"title"},N.createElement($,{defaultValue:u.title,onChange:e=>v("title",e)})),N.createElement(Sa,{actions:u.action||[],selectedKey:r,setSelectedKey:o,hoverKey:i,setHoverKey:c,onChange:e=>v("action",e)}),N.createElement(G,{type:"submit",size:"large"},"Save")))}function Sa(e){const t=V();function n(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,N.createElement("div",{className:"section"},e.actions.map((a=>N.createElement("div",{key:a.id},N.createElement(Na,{action:a,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n,onRemove:()=>{return n=a,void e.onChange(t.current.filter((e=>e!==n)));var n}})))),N.createElement("div",{className:"bottom-actions"},N.createElement("a",{href:"#",onClick:n=>{var a;te(n),a={id:Fa()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function Na(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 r=a?"section editing":l?"section hovering":"section";return N.createElement("div",{"data-testid":t.id,className:r,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){te(t),e.setHoverKey(e.action.id)}},a?N.createElement(Aa,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):N.createElement(Va,{action:t,actionType:n}),N.createElement("div",{className:"bottom-actions"},N.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const xa={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Va(e){const{action:t,actionType:n}=e,[a,l]=Ra(t);return N.createElement("div",null,N.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&N.createElement("div",null,N.createElement(Ge,{value:{reference:t.definitionCanonical}})),a&&N.createElement("div",null,N.createElement(Je,{property:xa,propertyType:l,value:a})))}function Aa(e){const{action:t}=e,[n,a]=x(e.actionType);function l(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return N.createElement(N.Fragment,null,N.createElement(pe,{title:"Title",htmlFor:`actionTitle-${t.id}`},N.createElement($,{name:`actionTitle-${t.id}`,defaultValue:t.title,onChange:e=>l("title",e)})),N.createElement(pe,{title:"Type of Action",description:"The type of the action to be performed.",htmlFor:`actionType-${t.id}`},N.createElement(Q,{name:`actionType-${t.id}`,defaultValue:n,onChange:a},N.createElement("option",null),N.createElement("option",{value:"appointment"},"Appointment"),N.createElement("option",{value:"lab"},"Lab"),N.createElement("option",{value:"questionnaire"},"Questionnaire"),N.createElement("option",{value:"task"},"Task"))),t.action&&t.action.length>0&&N.createElement(Sa,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>l("action",e)}),(()=>{switch(n){case"appointment":return N.createElement(Da,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return N.createElement(Da,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return N.createElement(Da,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return N.createElement(Da,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),N.createElement(pe,{title:"Timing",description:"When the action should take place.",htmlFor:"timing-"+t.id},N.createElement(Ia,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function Da(e){const{id:t,definitionCanonical:n}=e.action,a=(null==n?void 0:n.startsWith(e.resourceType+"/"))?{reference:n}:void 0;return N.createElement(pe,{title:e.title,description:e.description,htmlFor:t},N.createElement(Tt,{name:t,resourceType:e.resourceType,defaultValue:a,loadOnFocus:!0,onChange:t=>{t?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:g(t)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}}))}function Ia(e){const t=e.action,n="timing",[a,l]=Ra(t);return N.createElement(At,{property:xa,name:"timing[x]",defaultValue:a,defaultPropertyType:l,onChange:(a,l)=>{e.onChange(Re(t,n,null!=l?l:n,xa,a))}})}function Ra(e){return Xe({type:"PlanDefinitionAction",value:e},"timing")}let Pa=1;function Fa(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(Pa=Math.max(Pa,t+1))}return e}return"id-"+Pa++}function La(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:Fa(e.id),action:La(e.action)})))}var Ma;function qa(e,t){return Object.assign(Object.assign({},e),{item:$a(e.item,t)})}function $a(e,t){if(e)return e.map((e=>function(e,t){const{linkId:n,type:a}=e;if(!n||!a)return e;if("group"===a)return Object.assign(Object.assign({},e),{item:$a(e.item,t)});const l=t[n];if(!l)return e;let r;switch(a){case u.boolean:r={valueBoolean:"true"===l};break;case u.code:case u.Coding:r={valueCoding:{code:l}};break;case u.date:r={valueDate:l};break;case u.dateTime:case u.instant:r={valueDateTime:l};break;case u.decimal:r={valueDecimal:parseFloat(l)};break;case u.integer:case u.positiveInt:case u.unsignedInt:r={valueInteger:parseInt(l)};break;case u.SystemString:case u.string:case u.markdown:r={valueString:l};break;case u.time:r={valueTime:l};break;case u.uri:case u.url:r={valueUri:l};break;case u.canonical:case u.Reference:r={valueReference:{reference:l}}}if(!r)return e;return Object.assign(Object.assign({},e),{initial:[r]})}(e,t)))}function _a(e){return"choice"===e.type||"open-choice"===e.type}function Ua(e){const t=Z(),n=t.getProfile(),[a,l]=x(),r=we(e.questionnaire),[o,i]=x();return D((()=>{t.requestSchema("Questionnaire").then(l).catch(console.log)}),[t]),D((()=>{i(r?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:g(e),item:Wa(e.item)}}(r):void 0)}),[r]),a&&r?N.createElement(de,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:g(r),subject:e.subject,source:v(n),authored:(new Date).toISOString()}))}},r.title&&N.createElement("h1",null,r.title),r.item&&N.createElement(Qa,{items:r.item,onChange:function(e){i({resourceType:"QuestionnaireResponse",item:e})}}),N.createElement(G,{type:"submit",size:"large"},"OK")):null}function Qa(e){const[t,n]=x(Wa(e.items));function a(a,l){const r=t.slice();r[a]=l,n(r),e.onChange(r)}return N.createElement(N.Fragment,null,e.items.map(((e,t)=>{if(e.type===Ma.display)return N.createElement("p",{key:e.linkId},e.text);if(e.type===Ma.group)return N.createElement(Ha,{key:e.linkId,item:e,onChange:e=>a(t,e)});if(e.type===Ma.boolean){const n=e.initial&&e.initial.length>0?e.initial[0]:void 0;return N.createElement(Ae,{key:e.linkId,title:e.text,htmlFor:e.linkId},N.createElement(et,{name:e.linkId,defaultValue:null==n?void 0:n.valueBoolean,onChange:n=>a(t,{linkId:e.linkId,text:e.text,answer:[{valueBoolean:n}]})}))}return N.createElement(pe,{key:e.linkId,htmlFor:e.linkId,title:e.text||""},N.createElement(Ha,{item:e,onChange:e=>a(t,e)}))})))}function Ha(e){const t=e.item,n=t.type;if(!n)return null;const a=t.linkId;if(!a)return null;const l=t.initial&&t.initial.length>0?t.initial[0]:void 0;function r(n){e.onChange({linkId:t.linkId,text:t.text,answer:[n]})}switch(n){case Ma.group:return N.createElement("div",null,N.createElement("h3",null,t.text),t.item&&N.createElement(Qa,{items:t.item,onChange:function(n){e.onChange({linkId:t.linkId,text:t.text,item:n})}}));case Ma.boolean:return N.createElement(et,{name:a,defaultValue:null==l?void 0:l.valueBoolean,onChange:e=>r({valueBoolean:e})});case Ma.decimal:return N.createElement($,{type:"number",step:"any",name:a,defaultValue:null==l?void 0:l.valueDecimal,onChange:e=>r({valueDecimal:parseFloat(e)})});case Ma.integer:return N.createElement($,{type:"number",step:1,name:a,defaultValue:null==l?void 0:l.valueInteger,onChange:e=>r({valueInteger:parseInt(e)})});case Ma.date:return N.createElement($,{type:"date",name:a,defaultValue:null==l?void 0:l.valueDate,onChange:e=>r({valueDate:e})});case Ma.dateTime:return N.createElement(mt,{type:"datetime-local",name:a,defaultValue:null==l?void 0:l.valueDateTime,onChange:e=>r({valueDateTime:e})});case Ma.time:return N.createElement($,{type:"time",name:a,defaultValue:null==l?void 0:l.valueTime,onChange:e=>r({valueTime:e})});case Ma.string:return N.createElement($,{type:"text",name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case Ma.text:return N.createElement(vt,{name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case Ma.url:return N.createElement($,{type:"url",name:a,defaultValue:null==l?void 0:l.valueUri,onChange:e=>r({valueUri:e})});case Ma.attachment:return N.createElement(oe,{name:a,defaultValue:null==l?void 0:l.valueAttachment,onChange:e=>r({valueAttachment:e})});case Ma.reference:return N.createElement(jt,{name:a,defaultValue:null==l?void 0:l.valueReference,onChange:e=>r({valueReference:e})});case Ma.quantity:return N.createElement(yt,{name:a,defaultValue:null==l?void 0:l.valueQuantity,onChange:e=>r({valueQuantity:e})});case Ma.choice:case Ma.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)})))}(t)?N.createElement(Ka,{name:a,item:t,initial:l,onChangeAnswer:r}):N.createElement(za,{name:a,item:t,initial:l,onChangeAnswer:r})}return null}function Ka(e){const{name:t,item:n,initial:r}=e,o=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],c=p({type:"QuestionnaireItemInitial",value:r},"value");return N.createElement("select",{id:t,name:t,className:"medplum-select",onChange:t=>{const l=t.currentTarget.selectedIndex;if(0===l)return void e.onChangeAnswer({});const r=n.answerOption[l-1],o=p({type:"QuestionnaireItemAnswerOption",value:r},"value"),i="value"+a(o.type);e.onChangeAnswer({[i]:o.value})}},N.createElement("option",null),n.answerOption&&n.answerOption.map(((e,n)=>{const a=p({type:"QuestionnaireItemAnswerOption",value:e},"value"),l=`${t}-option-${n}`;return N.createElement("option",{key:l,value:a.value,selected:c&&i(a)===i(c)},N.createElement(Je,{property:o,propertyType:a.type,value:a.value}))})))}function za(e){const{name:t,item:n,initial:r,onChangeAnswer:o}=e,c=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],u=p({type:"QuestionnaireItemInitial",value:r},"value");return N.createElement(N.Fragment,null,n.answerOption&&n.answerOption.map(((e,n)=>{const l=p({type:"QuestionnaireItemAnswerOption",value:e},"value"),r="value"+a(l.type),s=`${t}-option-${n}`;return N.createElement("div",{key:s,className:"medplum-questionnaire-option-row"},N.createElement("div",{className:"medplum-questionnaire-option-checkbox"},N.createElement("input",{type:"radio",id:s,name:t,value:l.value,defaultChecked:u&&i(l)===i(u),onChange:()=>o({[r]:l.value})})),N.createElement("div",null,N.createElement("label",{htmlFor:s},N.createElement(Je,{property:c,propertyType:l.type,value:l.value}))))})))}function Wa(e){var t;return null!==(t=null==e?void 0:e.map(Ba))&&void 0!==t?t:[]}function Ba(e){var t,n;return{linkId:e.linkId,text:e.text,item:Wa(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Ga))&&void 0!==n?n:[]}}function Ga(e){return Object.assign({},e)}function Ya(e){const t=Z(),n=we(e.questionnaire),[a,l]=x(),[r,o]=x(),[i,c]=x(),[u,s]=x();function m(){s(void 0)}function d(){c(void 0)}return D((()=>{t.requestSchema("Questionnaire").then(l).catch(console.log)}),[t]),D((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||nl(),item:al(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&r?N.createElement("div",{className:"medplum-questionnaire-builder"},N.createElement(de,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(r)},N.createElement(Ja,{item:r,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),N.createElement(G,{type:"submit",size:"large"},"Save"))):null}function Ja(e){var t;const n=e.item,a=e.item,l="resourceType"in e.item,r=l||a.type===Ma.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=V();function s(t){var n;const a=u.current;e.onChange(Object.assign(Object.assign({},a),{item:null===(n=a.item)||void 0===n?void 0:n.map((e=>e.id===t.id?t:e))}))}function m(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:[...null!==(a=null===(n=e.item)||void 0===n?void 0:n.item)&&void 0!==a?a:[],t]}))}function d(t,n){e.onChange(Object.assign(Object.assign({},u.current),{[t]:n}))}u.current=e.item;const p=i?"section editing":c?"section hovering":"section";return N.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){te(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){te(t),e.setHoverKey(e.item.id)}},i?N.createElement(N.Fragment,null,l&&N.createElement("div",null,N.createElement($,{defaultValue:n.title,onChange:e=>d("title",e)})),!r&&N.createElement("div",null,N.createElement(Q,{defaultValue:a.type,onChange:e=>d("type",e)},N.createElement("option",{value:"display"},"Display"),N.createElement("optgroup",{label:"Question"},N.createElement("option",{value:"boolean"},"Boolean"),N.createElement("option",{value:"decimal"},"Decimal"),N.createElement("option",{value:"integer"},"Integer"),N.createElement("option",{value:"date"},"Date"),N.createElement("option",{value:"dateTime"},"Date/Time"),N.createElement("option",{value:"time"},"Time"),N.createElement("option",{value:"string"},"String"),N.createElement("option",{value:"text"},"Text"),N.createElement("option",{value:"url"},"URL"),N.createElement("option",{value:"choice"},"Choice"),N.createElement("option",{value:"open-choice"},"Open Choice"),N.createElement("option",{value:"attachment"},"Attachment"),N.createElement("option",{value:"reference"},"Reference"),N.createElement("option",{value:"quantity"},"Quantity")))),!l&&N.createElement(vt,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e)}),_a(a)&&N.createElement(Xa,{options:a.answerOption,onChange:e=>d("answerOption",e)})):N.createElement(N.Fragment,null,n.title&&N.createElement("h1",null,n.title),a.text&&N.createElement("p",null,a.text),!r&&N.createElement(Ha,{item:a,onChange:()=>{}})),a.item&&a.item.map((t=>N.createElement("div",{key:t.id},N.createElement(Ja,{item:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:s,onRemove:()=>function(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:null===(a=null===(n=e.item)||void 0===n?void 0:n.item)||void 0===a?void 0:a.filter((e=>e!==t))}))}(t)})))),!r&&N.createElement("div",{className:"top-actions"},i?N.createElement($,{defaultValue:a.linkId,onChange:e=>d("linkId",e),size:4}):N.createElement("div",null,o)),N.createElement("div",{className:"bottom-actions"},r&&N.createElement(N.Fragment,null,N.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:nl(),linkId:tl("q"),type:"string",text:"Question"})}},"Add item"),N.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:nl(),linkId:tl("g"),type:"group",text:"Group"})}},"Add group")),!l&&N.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Xa(e){var t;const n=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],a=null!==(t=e.options)&&void 0!==t?t:[];return N.createElement("div",null,a.map((t=>{const[l,r]=Xe({type:"QuestionnaireItemAnswerOption",value:t},"value");return N.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},N.createElement("div",null,N.createElement(At,{key:t.id,name:"value[x]",property:n,defaultPropertyType:r,defaultValue:l,onChange:(n,l)=>{const r=[...a],o=r.findIndex((e=>e.id===t.id));r[o]={id:t.id,[l]:n},e.onChange(r)}})),N.createElement("div",null,N.createElement("a",{href:"#",onClick:n=>{te(n),e.onChange(a.filter((e=>e.id!==t.id)))}},"Remove")))})),N.createElement("a",{href:"#",onClick:t=>{te(t),e.onChange([...a,{id:nl()}])}},"Add choice"))}!function(e){e.group="group",e.display="display",e.question="question",e.boolean="boolean",e.decimal="decimal",e.integer="integer",e.date="date",e.dateTime="dateTime",e.time="time",e.string="string",e.text="text",e.url="url",e.choice="choice",e.openChoice="open-choice",e.attachment="attachment",e.reference="reference",e.quantity="quantity"}(Ma||(Ma={}));let Za=1,el=1;function tl(e){return e+Za++}function nl(){return"id-"+el++}function al(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||nl(),item:al(e.item),answerOption:ll(e.answerOption)})))}function ll(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||nl()})))}function rl(e){return N.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function ol(e){var t;const n=Z(),a=we(e.value),[l,r]=x(!1),[o,i]=x();return D((()=>{a&&!l&&(n.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}}(a)).then(i).catch(console.log),r(!0))}),[n,a,l]),a&&o?N.createElement("div",{className:"medplum-request-group"},null===(t=a.action)||void 0===t?void 0:t.map(((t,n)=>{var a,l,r,i,c,u;const s=t.resource&&function(e){for(const t of null==o?void 0:o.entry)if(t.resource&&e.reference===g(t.resource))return t.resource;return}(t.resource),m=null===(l=null===(a=null==s?void 0:s.input)||void 0===a?void 0:a[0])||void 0===l?void 0:l.valueReference,p=null===(i=null===(r=null==s?void 0:s.output)||void 0===r?void 0:r[0])||void 0===i?void 0:i.valueReference;return N.createElement("div",{className:"medplum-request-group-task",key:`action-${n}`},N.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==s?void 0:s.status)?"🗹":"☐"),N.createElement("div",{className:"medplum-request-group-task-details"},N.createElement("div",{className:"medplum-request-group-task-title"},t.title),N.createElement("div",null,"Last edited by ",N.createElement(Ot,{value:null===(c=null==s?void 0:s.meta)||void 0===c?void 0:c.author})," on ",d(null===(u=null==s?void 0:s.meta)||void 0===u?void 0:u.lastUpdated)),N.createElement("div",null,"Status: ",N.createElement(rl,{status:(null==s?void 0:s.status)||"unknown"}))),N.createElement("div",{className:"medplum-request-group-task-actions"},m&&!p&&N.createElement(G,{onClick:()=>e.onStart(s,m)},"Start"),m&&p&&N.createElement(G,{onClick:()=>e.onEdit(s,m,p)},"Edit")))}))):null}function il(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 o=l.i,i=l.j,c={position:o,lines:t.slice(o,e)},u={position:i,lines:n.slice(i,r)};let s;s=0===c.lines.length&&u.lines.length>0?"insert":c.lines.length>0&&0===u.lines.length?"delete":"change",a.push({original:c,revised:u,type:s}),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,o=r/2|0,i=new Array(r);i[o+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 c=o+l,u=c-1,s=i[c+1],m=i[u];let d,p=0;l===-r||l!==r&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),i[u]=void 0;let v=p-l,h={i:p,j:v,prev:cl(d),snake:!1};for(;p<n&&v<a&&e[p]===t[v];)p++,v++;if(p>h.i&&(h={i:p,j:v,prev:h,snake:!0}),i[c]=h,p>=n&&v>=a)return i[c]}i[o+r-1]=void 0}return}(e,t),e,t)}function cl(e){return e&&!e.snake&&e.prev?e.prev:e}function ul(e){const t=e.entry.map((e=>{var t;return{meta:null===(t=e.resource)||void 0===t?void 0:t.meta,lines:i(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),n=t[0].lines.map((e=>({id:t[0].meta.versionId,meta:t[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const a=il(t[n-1].lines,t[n].lines);for(const l of a){const a=l.original.position,r=l.original.lines,o=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:o[r],span:1})}}}(n,t),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}}(n),n}function sl(e){var t,n;const a=Z(),[l,r]=x(e.history);if(D((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then(r).catch(console.log)}),[a,e.history,e.resourceType,e.id]),!l)return N.createElement("div",null,"Loading...");const o=null===(n=null===(t=l.entry)||void 0===t?void 0:t[0])||void 0===n?void 0:n.resource,i=ul(l);return N.createElement("div",{className:"medplum-blame-container"},N.createElement("table",{className:"medplum-blame"},N.createElement("tbody",null,i.map(((e,t)=>N.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&N.createElement("td",{className:"details",rowSpan:e.span},N.createElement(U,{justifyContent:"space-between"},N.createElement(Ft,{value:e.meta.author,size:"xsmall",link:!0}),N.createElement(Oe,{to:ml(o,e.meta.versionId)},dl(e.meta.lastUpdated)))),N.createElement("td",{className:"line-number"},t+1),N.createElement("td",{className:"line"},N.createElement("pre",{className:"line-pre"},e.value))))))))}function ml(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function dl(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return pl(n,"year");const a=Math.floor(t/2592e3);if(a>0)return pl(a,"month");const l=Math.floor(t/86400);if(l>0)return pl(l,"day");const r=Math.floor(t/3600);if(r>0)return pl(r,"hour");const o=Math.floor(t/60);return o>0?pl(o,"minute"):pl(t,"second")}function pl(e,t){return`${e} ${1===e?t:t+"s"} ago`}function vl(e){let t=e.original,n=e.revised;e.ignoreMeta&&(t=Object.assign(Object.assign({},t),{meta:void 0}),n=Object.assign(Object.assign({},n),{meta:void 0}));const a=il(i(t,!0).match(/[^\r\n]+/g),i(n,!0).match(/[^\r\n]+/g));return N.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>N.createElement(hl,{key:"delta"+t,delta:e}))))}function hl(e){return N.createElement(N.Fragment,null,"...",N.createElement("br",null),e.delta.original.lines.length>0&&N.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&N.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",N.createElement("br",null))}function El(e){var t;const n=Z(),[a,l]=x(e.history);return D((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then(l).catch(console.log)}),[n,e.history,e.resourceType,e.id]),a?N.createElement("table",{className:"medplum-table"},N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"Author"),N.createElement("th",null,"Date"),N.createElement("th",null,"Version"))),N.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map(((e,t)=>N.createElement(gl,{key:"entry-"+t,entry:e}))))):N.createElement("div",null,"Loading...")}function gl(e){var t,n,a;const{response:l,resource:r}=e.entry;return r?N.createElement("tr",null,N.createElement("td",null,N.createElement(Ft,{value:null===(t=r.meta)||void 0===t?void 0:t.author,link:!0})),N.createElement("td",null,d(null===(n=r.meta)||void 0===n?void 0:n.lastUpdated)),N.createElement("td",null,N.createElement(Oe,{to:fl(r)},null===(a=r.meta)||void 0===a?void 0:a.versionId))):N.createElement("tr",null,N.createElement("td",{colSpan:3},S(null==l?void 0:l.outcome)))}function fl(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function yl(e){const{onChangeMonth:t,onClick:n}=e,[a,l]=x(bl);function r(e){l((n=>{const a=new Date(n.getTime());return a.setMonth(n.getMonth()+e),t(a),a}))}const o=P((()=>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:Cl(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}(a,e.slots)),[a,e.slots]);return N.createElement("div",null,N.createElement(U,null,N.createElement("p",{style:{flex:1}},(i=a).toLocaleString("default",{month:"long"})+" "+i.getFullYear()),N.createElement("p",null,N.createElement(G,{label:"Previous month",onClick:()=>r(-1)},"<"),N.createElement(G,{label:"Next month",onClick:()=>r(1)},">"))),N.createElement("table",{className:"medplum-calendar-table"},N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"SUN"),N.createElement("th",null,"MON"),N.createElement("th",null,"TUE"),N.createElement("th",null,"WED"),N.createElement("th",null,"THU"),N.createElement("th",null,"FRI"),N.createElement("th",null,"SAT"))),N.createElement("tbody",null,o.map(((e,t)=>N.createElement("tr",{key:"week-"+t},e.map(((e,t)=>N.createElement("td",{key:"day-"+t},e&&N.createElement("button",{disabled:!e.available,onClick:()=>n(e.date)},e.date.getDate()))))))))));var i}function bl(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Cl(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 kl(e){var t;const n=Z(),a=we(e.schedule),[l,r]=x();V().current=l;const[o,i]=x(bl()),[c,u]=x(),[s,m]=x(),[d,p]=x(),[v,h]=x();if(D((()=>{a?(r([]),n.searchResources("Slot",new URLSearchParams([["schedule",g(a)],["start","gt"+o.toISOString()],["start","lt"+new Date(o.getTime()+26784e5).toISOString()]])).then(r).catch(console.log)):r(void 0)}),[n,a,o]),!a||!l)return null;const E=null===(t=a.actor)||void 0===t?void 0:t[0];return N.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},N.createElement("div",{className:"medplum-calendar-info-pane"},E&&N.createElement(Se,{value:E,size:"large"}),E&&N.createElement("h1",null,N.createElement(Ot,{value:E})),N.createElement("p",null,"1 hour"),c&&N.createElement("p",null,c.toLocaleDateString()),s&&N.createElement("p",null,Ol(new Date(s.start)))),N.createElement("div",{className:"medplum-calendar-selection-pane"},!c&&N.createElement("div",null,N.createElement("h3",null,"Select date"),N.createElement(yl,{slots:l,onChangeMonth:i,onClick:u})),c&&!s&&N.createElement("div",null,N.createElement("h3",null,"Select time"),l.map((e=>{const t=new Date(e.start);return t.getTime()>c.getTime()&&t.getTime()<c.getTime()+864e5&&N.createElement("div",{key:e.id},N.createElement(G,{style:{width:150},onClick:()=>m(e)},Ol(t)))}))),c&&s&&!d&&N.createElement("div",null,N.createElement("h3",null,"Enter your info"),N.createElement(pe,{title:"Name",htmlFor:"name"},N.createElement($,{name:"name"})),N.createElement(pe,{title:"Email",htmlFor:"email"},N.createElement($,{name:"email"})),N.createElement(G,{primary:!0,onClick:()=>p("info")},"Next")),c&&s&&d&&!v&&N.createElement("div",null,N.createElement("h3",null,"Custom questions"),N.createElement(pe,{title:"Question 1",htmlFor:"q1"},N.createElement($,{name:"q1"})),N.createElement(pe,{title:"Question 2",htmlFor:"q2"},N.createElement($,{name:"email"})),N.createElement(pe,{title:"Question 3",htmlFor:"q3"},N.createElement($,{name:"email"})),N.createElement(G,{primary:!0,onClick:()=>h("form")},"Next")),c&&s&&d&&v&&N.createElement("div",null,N.createElement("h3",null,"You're all set!"),N.createElement("p",null,"Check your email for a calendar invite."))))}function Ol(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function Tl(e){return N.createElement(nn,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${g(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${g(e)}`}},{request:{method:"GET",url:`Media?_count=100&based-on=${g(e)}`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${g(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",basedOn:[v(e)],subject:e.subject,sender:v(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",basedOn:[v(e)],subject:e.subject,operator:v(t),issued:(new Date).toISOString(),content:n})})}function jl(e){let t="medplum-tab";function n(t){te(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),N.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function wl(e){return N.createElement(Wt,{className:"medplum-surface",height:50},N.createElement("div",{role:"tablist",className:"medplum-tablist"},N.createElement("div",{className:"medplum-tablist-foreground"},N.Children.map(e.children,((t,n)=>N.isValidElement(t)&&t.type===jl?N.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function Sl(e){return N.createElement("div",{role:"tabpanel"},e.children)}function Nl(e){return N.createElement(N.Fragment,null,N.Children.map(e.children,(t=>N.isValidElement(t)&&t.type===Sl&&t.props.name===e.value?t:null)))}export{M as AddressDisplay,z as AddressInput,B as AttachmentArrayDisplay,re as AttachmentArrayInput,oe as AttachmentInput,Ve as Autocomplete,Se as Avatar,Pt as BackboneElementInput,G as Button,et as Checkbox,Ae as CheckboxFormSection,it as CodeInput,qe as CodeableConceptDisplay,tt as CodeableConceptInput,_e as ContactDetailDisplay,st as ContactDetailInput,$e as ContactPointDisplay,ut as ContactPointInput,mt as DateTimeInput,sn as DefaultResourceTimeline,Pe as DescriptionList,Fe as DescriptionListEntry,Lt as DiagnosticReportDisplay,ie as Document,Dt as ElementDefinitionInputSelector,It as ElementDefinitionTypeInput,mn as EncounterTimeline,Bt as ErrorBoundary,ga as FhirPathTable,ya as FooterLinks,de as Form,pe as FormSection,Oa as Header,Ue as HumanNameDisplay,Et as HumanNameInput,gt as IdentifierInput,$ as Input,U as InputRow,Ut as Loading,ve as Logo,Oe as MedplumLink,J as MedplumProvider,fa as MemoizedFhirPathTable,va as MemoizedSearchControl,Qt as MenuItem,Mt as ObservationTable,ja as PatientTimeline,wa as PlanDefinitionBuilder,Gt as Popup,Ya as QuestionnaireBuilder,Ua as QuestionnaireForm,Ha as QuestionnaireFormItem,Ma as QuestionnaireItemType,ze as RangeDisplay,Ct as RangeInput,jt as ReferenceInput,ke as RegisterForm,ol as RequestGroupDisplay,Ye as ResourceArrayDisplay,wt as ResourceArrayInput,Ft as ResourceBadge,sl as ResourceBlame,vl as ResourceDiff,Ie as ResourceForm,El as ResourceHistoryTable,Tt as ResourceInput,Ot as ResourceName,Je as ResourcePropertyDisplay,At as ResourcePropertyInput,zt as ResourceTable,nn as ResourceTimeline,kl as Scheduler,Wt as Scrollable,sa as SearchChangeEvent,da as SearchClickEvent,pa as SearchControl,Wn as SearchFieldEditor,Jn as SearchFilterEditor,ma as SearchLoadEvent,Q as Select,Tl as ServiceRequestTimeline,xe as SignInForm,rl as StatusBadge,jl as Tab,wl as TabList,Sl as TabPanel,Nl as TabSwitch,vt as TextArea,Yt as Timeline,Jt as TimelineItem,ua as TitleBar,le as UploadButton,An as addDateEqualsFilter,Dn as addDateFilter,In as addDateFilterBetween,bn as addField,yn as addFilter,wn as addLastMonthFilter,Pn as addMissingFilter,Nn as addNextMonthFilter,qa as addQuestionnaireInitialValues,Sn as addThisMonthFilter,On as addTodayFilter,Tn as addTomorrowFilter,Vn as addYearToDateFilter,kn as addYesterdayFilter,Kn as buildFieldNameString,gn as clearFilters,fn as clearFiltersOnField,dt as convertIsoToLocal,pt as convertLocalToIso,Ee as createScriptTag,Cn as deleteFilter,We as formatRangeString,Hn as getOpString,be as getRecaptcha,Qn as getSearchOperators,_n as getSortField,dl as getTimeString,Xe as getValueAndType,Fn as hasFilterOnField,ye as initRecaptcha,_a as isChoiceQuestion,Un as isSortDescending,Mn as movePage,ue as parseForm,zn as renderValue,En as setFilters,Ln as setOffset,Re as setPropertyValue,qn as setSort,Xt as sortByDateAndPriority,$n as toggleSort,Z as useMedplum,X as useMedplumContext,ee as useMedplumProfile,we as useResource};
1
+ import{formatAddress as e,getDisplayString as t,getImageSrc as n,capitalize as a,globalSchema as l,getPropertyDisplayName as r,formatHumanName as o,stringify as i,buildTypeName as c,PropertyType as u,formatTiming as s,formatPeriod as m,formatDateTime as d,getTypedPropertyValue as p,createReference as v,isValidDate as h,toTypedValue as E,getReferenceString as g,evalFhirPath as f,getSearchParameterDetails as y,Operator as b,evalFhirPathTyped as C,SearchParameterType as k,formatSearchQuery as O,parseSearchDefinition as T,DEFAULT_SEARCH_COUNT as j,isUUID as w,normalizeErrorString as S}from"@medplum/core";import N,{useState as x,useRef as V,createContext as A,useEffect as D,useContext as I,useCallback as R,useMemo as P}from"react";import{useNavigate as F,useLocation as L}from"react-router-dom";function M(t){const n=t.value;return n?N.createElement(N.Fragment,null,e(n)):null}function q(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return(null===(n=e.expression)||void 0===n?void 0:n[0])===t}))}function $(e){const t=q(e.outcome,e.name),n=t&&t.length>0;return N.createElement("input",{id:e.name,name:e.name,type:_(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 _(e){return e||"text"}function U(e){return N.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function Q(e){const t=q(e.outcome,e.name),n=t&&t.length>0;return N.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 H(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function K(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 z(e){const[t,n]=x(e.defaultValue||{}),a=V();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,N.createElement(U,null,N.createElement(Q,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e}))}},N.createElement("option",null),N.createElement("option",null,"home"),N.createElement("option",null,"mobile"),N.createElement("option",null,"old"),N.createElement("option",null,"temp"),N.createElement("option",null,"work")),N.createElement(Q,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){l(Object.assign(Object.assign({},a.current),{type:e}))}},N.createElement("option",null),N.createElement("option",null,"postal"),N.createElement("option",null,"physical"),N.createElement("option",null,"both")),N.createElement($,{placeholder:"Line 1",defaultValue:H(t,0),onChange:function(e){l(K(a.current||{},0,e))}}),N.createElement($,{placeholder:"Line 2",defaultValue:H(t,1),onChange:function(e){l(K(a.current||{},1,e))}}),N.createElement($,{placeholder:"City",defaultValue:t.city,onChange:function(e){l(Object.assign(Object.assign({},a.current),{city:e}))}}),N.createElement($,{placeholder:"State",defaultValue:t.state,onChange:function(e){l(Object.assign(Object.assign({},a.current),{state:e}))}}),N.createElement($,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){l(Object.assign(Object.assign({},a.current),{postalCode:e}))}}))}function W(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?N.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&N.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/"))&&N.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},N.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&N.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},N.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),N.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},N.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 B(e){return N.createElement("div",null,e.values&&e.values.map(((t,n)=>N.createElement("div",{key:"attatchment-"+n},N.createElement(W,{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 N.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 Y=A(void 0);function J(e){const t=e.medplum,[n,a]=x({profile:t.getProfile(),loading:!1});D((()=>{function e(){a(Object.assign(Object.assign({},n),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,n]);const l=Object.assign(Object.assign({},n),{medplum:t});return N.createElement(Y.Provider,{value:l},e.children)}function X(){return I(Y)}function Z(){return X().medplum}function ee(){return X().profile}function te(e){e.preventDefault(),e.stopPropagation()}function ne(e){if(ae(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&ae(t[0]))return!0}return!1}function ae(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function le(e){const t=Z(),n=V(null);function a(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 N.createElement(N.Fragment,null,N.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){te(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),N.createElement(G,{testid:"upload-button",onClick:e=>{var t;te(e),null===(t=n.current)||void 0===t||t.click()}},e.children||"Upload..."))}function re(e){var t;const[n,a]=x(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=V();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,N.createElement("table",{style:{width:"100%"}},N.createElement("colgroup",null,N.createElement("col",{width:"90%"}),N.createElement("col",{width:"10%"})),N.createElement("tbody",null,n.map(((e,t)=>N.createElement("tr",{key:`${t}-${n.length}`},N.createElement("td",null,N.createElement(W,{value:e,maxWidth:200})),N.createElement("td",{className:"medplum-right"},N.createElement(G,{onClick:e=>{te(e);const a=n.slice();a.splice(t,1),r(a)}},"Remove"))))),N.createElement("tr",null,N.createElement("td",null),N.createElement("td",{className:"medplum-right"},N.createElement(le,{onUpload:e=>{r([...l.current,e])}})))))}function oe(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?N.createElement(N.Fragment,null,N.createElement(W,{value:t,maxWidth:200}),N.createElement(G,{onClick:e=>{te(e),a(void 0)}},"Remove")):N.createElement(le,{onUpload:a})}function ie(e){return N.createElement("main",{className:"medplum-document"},N.createElement("article",{style:{maxWidth:e.width}},e.children))}function ce(e,t,n,a){return new(n||(n=Promise))((function(l,r){function o(e){try{c(a.next(e))}catch(e){r(e)}}function i(e){try{c(a.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?l(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,i)}c((a=a.apply(e,t||[])).next())}))}function ue(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?se(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&me(t,n);return t}function se(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function me(e,t){e[t.name]=t.value}function de(e){return N.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=ue(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function pe(e){const t=q(e.outcome,e.htmlFor),n=t&&t.length>0;return N.createElement("fieldset",{className:"medplum-form-section"},e.title&&N.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&N.createElement("p",null,e.description),e.children,n&&N.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return N.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 ve(e){return N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},N.createElement("title",null,"Medplum Logo"),N.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),N.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"}),N.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"}),N.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),N.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function he(e){const t=Z(),[n,a]=x();return N.createElement(de,{style:{maxWidth:400},onSubmit:n=>ce(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){a(e)}}))},N.createElement("div",{className:"medplum-center"},N.createElement(ve,{size:32}),N.createElement("h1",null,"Create project")),N.createElement(pe,{title:"Project Name",htmlFor:"projectName",outcome:n},N.createElement($,{name:"projectName",type:"text",testid:"projectName",placeholder:"My Project",required:!0,outcome:n})),N.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",N.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",N.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),N.createElement("div",{className:"medplum-signin-buttons"},N.createElement("div",null),N.createElement("div",null,N.createElement(G,{type:"submit",testid:"submit"},"Create project"))))}function Ee(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 ge(e){const t=Z(),{googleClientId:n,handleGoogleCredential:a}=e,l=V(null),[r,o]=x("undefined"!=typeof google),[i,c]=x(!1),[u,s]=x(!1);return D((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:n,callback:a}),c(!0)),l.current&&!u&&(google.accounts.id.renderButton(l.current,{}),s(!0))):Ee("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,i,r,l,u,a]),n?N.createElement("div",{ref:l}):null}function fe(e){var t,n;if(e)return e;const a=window.location.protocol+"//"+window.location.host;return(null!==(n=null===(t="undefined")?void 0:t.split(","))&&void 0!==n?n:[]).includes(a)?"undefined":void 0}function ye(e){"undefined"==typeof grecaptcha&&Ee("https://www.google.com/recaptcha/api.js?render="+e)}function be(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>ce(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function Ce(e){const t=fe(e.googleClientId),n=e.recaptchaSiteKey,a=Z(),[l,r]=x(),o=q(l,void 0);return D((()=>ye(n)),[n]),N.createElement(de,{style:{maxWidth:400},onSubmit:t=>ce(this,void 0,void 0,(function*(){try{const l=yield be(n);e.handleAuthResponse(yield a.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:n,recaptchaToken:l}))}catch(e){r(e)}}))},N.createElement("div",{className:"medplum-center"},e.children),o&&N.createElement("div",{className:"medplum-input-error"},o.map((e=>{var t,n;return N.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&&N.createElement(N.Fragment,null,N.createElement("div",{className:"medplum-signin-google-container"},N.createElement(ge,{googleClientId:t,handleGoogleCredential:t=>ce(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield a.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){r(e)}}))})),N.createElement("div",{className:"medplum-signin-separator"},"or")),N.createElement(pe,{title:"First Name",htmlFor:"firstName",outcome:l},N.createElement($,{name:"firstName",type:"text",testid:"firstName",placeholder:"First name",required:!0,autoFocus:!0,outcome:l})),N.createElement(pe,{title:"Last Name",htmlFor:"lastName",outcome:l},N.createElement($,{name:"lastName",type:"text",testid:"lastName",placeholder:"Last name",required:!0,outcome:l})),N.createElement(pe,{title:"Email",htmlFor:"email",outcome:l},N.createElement($,{name:"email",type:"email",testid:"email",placeholder:"name@domain.com",required:!0,outcome:l})),N.createElement(pe,{title:"Password",htmlFor:"password",outcome:l},N.createElement($,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:l})),N.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",N.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",N.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),N.createElement("p",{style:{fontSize:"12px",color:"#888"}},"This site is protected by reCAPTCHA and the Google"," ",N.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",N.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply."),N.createElement("div",{className:"medplum-signin-buttons"},N.createElement("div",null,N.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),N.createElement("label",{htmlFor:"remember"},"Remember me")),N.createElement("div",null,N.createElement(G,{type:"submit",testid:"submit"},"Create account"))))}function ke(e){const{type:t,projectId:n,googleClientId:a,recaptchaSiteKey:l,onSuccess:r}=e,o=Z(),[i,c]=x(void 0),[u,s]=x();function m(e){e.code?o.processCode(e.code).then((()=>r())).catch(console.log):e.login&&c(e.login)}return D((()=>{"patient"===t&&i&&o.startNewPatient({login:i,projectId:n}).then((e=>o.processCode(e.code))).then((()=>r())).catch((e=>s(e)))}),[o,t,n,i,r]),N.createElement(ie,{width:450},u&&N.createElement("pre",null,JSON.stringify(u,null,2)),!i&&N.createElement(Ce,{projectId:n,googleClientId:a,recaptchaSiteKey:l,handleAuthResponse:m},e.children),i&&"project"===t&&N.createElement(he,{login:i,handleAuthResponse:m}))}function Oe(e){const t=F();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),N.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{te(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function Te(e){const t=Z(),n=fe(e.googleClientId),[a,l]=x(),r=q(a,void 0);return N.createElement(de,{style:{maxWidth:400},onSubmit:n=>{t.startLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,email:n.email,password:n.password,remember:"true"===n.remember}).then(e.handleAuthResponse).catch(l)}},N.createElement("div",{className:"medplum-center"},e.children),r&&N.createElement("div",{className:"medplum-input-error"},r.map((e=>{var t,n;return N.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)}))),n&&N.createElement(N.Fragment,null,N.createElement("div",{className:"medplum-signin-google-container"},N.createElement(ge,{googleClientId:n,handleGoogleCredential:n=>{t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:n.clientId,googleCredential:n.credential}).then(e.handleAuthResponse).catch(l)}})),N.createElement("div",{className:"medplum-signin-separator"},"or")),N.createElement(pe,{title:"Email",htmlFor:"email",outcome:a},N.createElement($,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:a})),N.createElement(pe,{title:"Password",htmlFor:"password",outcome:a},N.createElement($,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:a})),N.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&N.createElement("div",null,e.onForgotPassword&&N.createElement(Oe,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&N.createElement(Oe,{testid:"register",onClick:e.onRegister},"Register")),N.createElement("div",null,N.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),N.createElement("label",{htmlFor:"remember"},"Remember me")),N.createElement("div",null,N.createElement(G,{type:"submit",testid:"submit"},"Sign in"))))}const je={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function we(e){const t=Z(),[n,a]=x(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?je:e.getCachedReference(t);return}(t,e));return D((()=>{let l=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{l&&a(e)})).catch((()=>a(void 0))),()=>l=!1}),[t,n,e]),n}function Se(e){var a,l;const r=we(e.value),o=e.size?"medplum-avatar "+e.size:"medplum-avatar",i=r?t(r):null!==(a=e.alt)&&void 0!==a?a:"",c=i&&function(e){return e.split(" ").map((e=>e[0])).join("")}(i),u=null!==(l=r&&n(r))&&void 0!==l?l:e.src,s=u?N.createElement("img",{src:u,alt:i}):c;return N.createElement("div",{className:o,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&r?N.createElement(Oe,{to:r},s):s)}function Ne(e){const t=Z();return N.createElement("div",null,N.createElement("div",{className:"medplum-center"},N.createElement(ve,{size:32}),N.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,r;return N.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)}},N.createElement("div",{className:"medplum-nav-menu-profile-icon"},N.createElement(Se,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),N.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,N.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(r=n.project)||void 0===r?void 0:r.display)))})))}function xe(e){const t=Z(),[n,a]=x(void 0),[l,r]=x(void 0);function o(n){n.login&&a(n.login),n.memberships&&r(n.memberships),n.code&&(e.onCode?e.onCode(n.code):t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log))}return N.createElement(ie,{width:450},n?l?N.createElement(Ne,{login:n,memberships:l,handleAuthResponse:o}):"new"===e.projectId?N.createElement(he,{login:n,handleAuthResponse:o}):N.createElement("div",null,"Success"):N.createElement(Te,{projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function Ve(e){var t,n;const a=V(null),[l,r]=x(!1),[o,i]=x(void 0),[c,u]=x(),[s,m]=x(!1),[d,p]=x(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[v,h]=x([]),[E,g]=x(-1),[f,y]=x(),[b,C]=x(),k=V();k.current=o;const O=V();O.current=c;const T=V();T.current=f;const j=V();function w(t){p(t),e.onChange&&e.onChange(t)}function S(t){a.current.value="";const n=e.multiple?[...d,t]:[t];r(!0),m(!1),i(""),h([]),g(-1),w(n)}function A(){var e;null===(e=a.current)||void 0===e||e.focus()}function I(){F(),r(!1),window.setTimeout((()=>{m(!1)}),200)}function R(){T.current&&(T.current.abort(),y(void 0)),void 0!==O.current&&window.clearTimeout(O.current);const t=window.setTimeout((()=>function(){var t,n;u(void 0);const l=(null===(n=null===(t=a.current)||void 0===t?void 0:t.value)||void 0===n?void 0:n.trim())||"";if(l===k.current)return;i(l);const r=new AbortController;y(r),e.loadOptions(l,r.signal).then((e=>{r.signal.aborted||(m(e.length>0),h(e),y(void 0),j.current&&(S(e[0]),C(!1)))})).catch(console.log)}()),100);u(t)}function P(e){switch(e.key){case"Enter":case"Tab":!function(e){var t;O.current||T.current||!F()?C(!0):(te(e),null===(t=a.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":L(-1),te(e);break;case"ArrowDown":L(1),te(e);break;case"Backspace":!function(e){var t;if(null===(t=a.current)||void 0===t?void 0:t.value)return;d.length>0&&(te(e),w(d.slice(0,d.length-1)))}(e);break;case",":case";":!function(e){var t;F(),te(e),null===(t=a.current)||void 0===t||t.focus()}(e)}}function F(){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=a.current)||void 0===t?void 0:t.value)&&(n=e.buildUnstructured(a.current.value)),!!n&&(S(n),!0)}function L(e){let t=E+e;t<0?t=0:t>=v.length&&(t=v.length-1),g(t)}j.current=b,D((()=>()=>{T.current&&T.current.abort()}),[]),D((()=>{var t;p(null!==(t=e.defaultValue)&&void 0!==t?t:[])}),[e.defaultValue]);const M=null!==(n=e.className)&&void 0!==n?n:"medplum-autocomplete-container";return N.createElement("div",{"data-testid":"autocomplete",className:M+(l?" focused":""),onClick:()=>A()},N.createElement("ul",{onClick:()=>A()},d.map((t=>N.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),N.createElement("li",{className:"medplum-autocomplete-item"},N.createElement("input",{type:"text",autoFocus:e.autofocus,placeholder:0===d.length?e.placeholder:void 0,autoComplete:"off",autoCapitalize:"off",spellCheck:"true",onFocus:()=>(r(!0),void(e.loadOnFocus&&R())),onBlur:()=>I(),onChange:()=>R(),onInput:()=>R(),onKeyDown:e=>P(e),ref:a,"data-testid":"input-element"}))),s&&N.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},v.map(((t,n)=>N.createElement("div",{key:e.getId(t),className:n===E?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){g(t)}(0,n),onClick:e=>function(e,t){te(e),S(t)}(e,t)},e.getIcon&&N.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),N.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&N.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&N.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},N.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function Ae(e){return N.createElement("div",{className:"medplum-checkbox-form-section"},N.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),N.createElement("div",{className:"medplum-checkbox-form-section-details-container"},N.createElement("label",{htmlFor:e.htmlFor},e.title),N.createElement("p",null,e.description)))}const De=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function Ie(e){const t=Z(),n=we(e.defaultValue),[a,l]=x(),[r,o]=x();return D((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(l).catch(console.log))}),[t,n]),a&&r?N.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(r)}},N.createElement(pe,{title:"Resource Type"},N.createElement($,{name:"resourceType",defaultValue:r.resourceType,disabled:!0})),N.createElement(pe,{title:"ID"},N.createElement($,{name:"id",defaultValue:r.id,disabled:!0})),N.createElement(Pt,{typeName:r.resourceType,defaultValue:r,outcome:e.outcome,onChange:o}),N.createElement(G,{type:"submit",size:"large"},"OK"),e.onDelete&&N.createElement(G,{type:"button",size:"large",onClick:()=>{e.onDelete(r)}},"Delete")):N.createElement("div",null,"Loading...")}function Re(e,t,n,l,r){const o=l.type;if(o.length>1)for(const n of o){const l=t.replace("[x]",a(n.code));l in e&&delete e[l]}return e[n]=r,e}function Pe(e){return N.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function Fe(e){return N.createElement(N.Fragment,null,N.createElement("dt",null,e.term),N.createElement("dd",null,e.children))}function Le(e){const t=e.value,n=t.value;if(!n)return null;const a=t.type,o=l.types[a];return o?"object"==typeof n&&"name"in n&&1===Object.keys(n).length?N.createElement("div",null,n.name):N.createElement(Pe,{compact:e.compact},Object.entries(o.properties).map((n=>{const a=n[0];if(De.indexOf(a)>=0)return null;const l=n[1],[o,i]=Xe(t,a);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:N.createElement(Fe,{key:a,term:r(a)},N.createElement(Je,{property:l,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):N.createElement("div",null,a," not implemented")}function Me(e){var t,n;return N.createElement(N.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 qe(e){const t=e.value;return t?t.text?N.createElement(N.Fragment,null,t.text):t.coding?N.createElement(N.Fragment,null,t.coding.map(((e,t)=>N.createElement(N.Fragment,{key:"coding-"+t},t>0&&N.createElement(N.Fragment,null,", "),N.createElement(Me,{value:e}))))):null:null}function $e(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("]")),N.createElement(N.Fragment,null,n.join("").trim())}function _e(e){var t;const n=e.value;return n?N.createElement(N.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>N.createElement($e,{key:"telecom-"+t,value:e})))):null}function Ue(e){const t=e.value;return t?N.createElement(N.Fragment,null,o(t,e.options)):null}function Qe(e){var t,n;return N.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 He(e){return N.createElement(N.Fragment,null,Ke(e.value))}function Ke(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 ze(e){return N.createElement(N.Fragment,null,We(e.value))}function We(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${Ke(e.low)}`:!e.low&&e.high?`<= ${Ke(e.high)}`:`${Ke(e.low)} - ${Ke(e.high)}`:""}function Be(e){const t=e.value;return t?N.createElement(N.Fragment,null,N.createElement(He,{value:t.numerator})," / ",N.createElement(He,{value:t.denominator})):null}function Ge(e){if(!e.value)return null;const t=e.value.display||e.value.reference||i(e.value);return!1!==e.link&&e.value.reference?N.createElement(Oe,{to:e.value},t):N.createElement(N.Fragment,null,t)}function Ye(e){var t,n,a;const l=e.property,r=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 N.createElement(N.Fragment,null,r.map(((t,n)=>N.createElement("div",{key:`${n}-${r.length}`},N.createElement(Je,{arrayElement:!0,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function Je(e){var t;const{property:n,propertyType:a,value:l}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===a?N.createElement(B,{values:l,maxWidth:e.maxWidth}):N.createElement(Ye,{property:n,values:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(a){case u.boolean:return N.createElement("div",null,void 0===l?"":Boolean(l).toString());case u.SystemString:case u.code:case u.date:case u.integer:case u.positiveInt:case u.string:case u.unsignedInt:case u.uri:case u.url:return N.createElement("div",null,l);case u.canonical:return N.createElement(Ge,{value:{reference:l},link:e.link});case u.dateTime:case u.instant:return N.createElement("div",null,d(l));case u.markdown:return N.createElement("pre",null,l);case u.Address:return N.createElement(M,{value:l});case u.Annotation:return N.createElement("div",null,null==l?void 0:l.text);case u.Attachment:return N.createElement(W,{value:l,maxWidth:e.maxWidth});case u.CodeableConcept:return N.createElement(qe,{value:l});case u.Coding:return N.createElement(Me,{value:l});case u.ContactDetail:return N.createElement(_e,{value:l});case u.ContactPoint:return N.createElement($e,{value:l});case u.HumanName:return N.createElement(Ue,{value:l});case u.Identifier:return N.createElement(Qe,{value:l});case u.Period:return N.createElement("div",null,m(l));case u.Quantity:return N.createElement(He,{value:l});case u.Range:return N.createElement(ze,{value:l});case u.Ratio:return N.createElement(Be,{value:l});case u.Reference:return N.createElement(Ge,{value:l,link:e.link});case u.Timing:return N.createElement("div",null,s(l));default:if(!(null==n?void 0:n.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return N.createElement(Le,{value:{type:c(null===(t=null==n?void 0:n.path)||void 0===t?void 0:t.split(".")),value:l},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Xe(e,t){const n=p(e,t);return n?Array.isArray(n)?[n.map((e=>e.value)),n[0].type]:[n.value,n.type]:[void 0,"undefined"]}function Ze(e){const t=ee(),[n,a]=x(e.defaultValue||{});return V().current=n,N.createElement($,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:n.text,onChange:function(n){const l=n?{text:n,authorReference:t&&v(t),time:(new Date).toISOString()}:{};a(l),e.onChange&&e.onChange(l)}})}function et(e){return N.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 tt(e){const t=Z();let n;return e.defaultValue&&(n=[e.defaultValue]),N.createElement(Ve,{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(nt)))},buildUnstructured:at,getId:lt,getDisplay:rt,name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function nt(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function at(e){return{text:e}}function lt(e){return e.coding&&e.coding.length>0?e.coding[0].code:i(e)}function rt(e){var t,n,a,l,r,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===(r=null===(l=e.coding)||void 0===l?void 0:l[0])||void 0===r?void 0:r.code)&&void 0!==o?o:e.text;return N.createElement(N.Fragment,null,i)}const ot={};function it(e){const t=Z();let n;return e.defaultValue&&(n=[e.defaultValue]),N.createElement(Ve,{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=>ot[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>N.createElement(N.Fragment,null,ot[e]||e),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function ct(e){const t=Z();let n;return e.defaultValue&&(n=[e.defaultValue]),N.createElement(Ve,{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=>N.createElement(Me,{value:e}),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function ut(e){const[t,n]=x(e.defaultValue),a=V();function l(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return a.current=t,N.createElement(U,null,N.createElement(Q,{defaultValue:null==t?void 0:t.system,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{system:e});e||delete t.system,l(t)},testid:"system"},N.createElement("option",null),N.createElement("option",null,"email"),N.createElement("option",null,"fax"),N.createElement("option",null,"pager"),N.createElement("option",null,"phone"),N.createElement("option",null,"other"),N.createElement("option",null,"sms")),N.createElement(Q,{defaultValue:null==t?void 0:t.use,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{use:e});e||delete t.use,l(t)},testid:"use"},N.createElement("option",null),N.createElement("option",null,"home"),N.createElement("option",null,"mobile"),N.createElement("option",null,"old"),N.createElement("option",null,"temp"),N.createElement("option",null,"work")),N.createElement($,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{value:e});e||delete t.value,l(t)}}))}function st(e){var t;const[n,a]=x(e.defaultValue),l=V();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,N.createElement(U,null,N.createElement($,{name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:null==n?void 0:n.name,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{name:e});e||delete t.name,r(t)}}),N.createElement(ut,{name:e.name+"-telecom",defaultValue:null===(t=null==n?void 0:n.telecom)||void 0===t?void 0:t[0],onChange:function(e){const t=Object.assign(Object.assign({},l.current),{telecom:e&&[e]});e||delete t.telecom,r(t)}}))}function mt(e){return N.createElement($,Object.assign({},e,{type:"datetime-local",defaultValue:dt(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(pt(t))}}))}function dt(e){if(!e)return"";const t=new Date(e);return h(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function pt(e){if(!e)return"";const t=new Date(e);return h(t)?t.toISOString():""}function vt(e){const t="medplum-textarea"+(e.monospace?" monospace":""),n=q(e.outcome,e.name),a=n&&n.length>0;return N.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 ht(e){return N.createElement(vt,{testid:"extension-input",name:e.name,defaultValue:i(e.defaultValue),monospace:!0,onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Et(e){var t,n,a;const[l,r]=x(e.defaultValue),o=V();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=l,N.createElement(U,null,N.createElement(Q,{defaultValue:null==l?void 0:l.use,onChange:function(e){i(Object.assign(Object.assign({},o.current),{use:e||void 0}))},testid:"use"},N.createElement("option",null),N.createElement("option",null,"usual"),N.createElement("option",null,"official"),N.createElement("option",null,"temp"),N.createElement("option",null,"nickname"),N.createElement("option",null,"anonymous"),N.createElement("option",null,"old"),N.createElement("option",null,"maiden")),N.createElement($,{placeholder:"Prefix",defaultValue:null===(t=null==l?void 0:l.prefix)||void 0===t?void 0:t.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{prefix:e?e.split(" "):void 0}))}}),N.createElement($,{placeholder:"Given",defaultValue:null===(n=null==l?void 0:l.given)||void 0===n?void 0:n.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{given:e?e.split(" "):void 0}))}}),N.createElement($,{placeholder:"Family",defaultValue:null==l?void 0:l.family,onChange:function(e){i(Object.assign(Object.assign({},o.current),{family:e||void 0}))}}),N.createElement($,{placeholder:"Suffix",defaultValue:null===(a=null==l?void 0:l.suffix)||void 0===a?void 0:a.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{suffix:e?e.split(" "):void 0}))}}))}function gt(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement($,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e}))}),N.createElement($,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e}))}))}function ft(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement($,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),N.createElement($,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function yt(e){var t;const[n,a]=x(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement(Q,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,onChange:e=>l(Object.assign(Object.assign({},n),{comparator:e}))},N.createElement("option",null),N.createElement("option",null,"<"),N.createElement("option",null,"<="),N.createElement("option",null,">="),N.createElement("option",null,">")),N.createElement($,{name:e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==n?void 0:n.value)||void 0===t?void 0:t.toString(),onChange:e=>l(Object.assign(Object.assign({},n),{value:bt(e)}))}),N.createElement($,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>l(Object.assign(Object.assign({},n),{unit:e}))}))}function bt(e){if(e)return parseFloat(e)}function Ct(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement(yt,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),N.createElement(yt,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function kt(e){const[t,n]=x(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return N.createElement(U,null,N.createElement(yt,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),N.createElement(yt,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function Ot(e){const n=we(e.value);if(!n)return null;const a=t(n);return e.link?N.createElement(Oe,{to:n},a):N.createElement("span",null,a)}function Tt(e){const t=Z(),n=we(e.defaultValue),[a,l]=x(),r=V(e.resourceType);return r.current=e.resourceType,D((()=>{l(n)}),[n]),N.createElement(Ve,{loadOptions:e=>ce(this,void 0,void 0,(function*(){return t.search(r.current,"name="+encodeURIComponent(e)+"&_count=10").then((e=>e.entry.map((e=>e.resource))))})),getId:e=>e.id,getIcon:e=>N.createElement(Se,{value:e}),getDisplay:e=>N.createElement(Ot,{value:e}),getHelpText:e=>{if("Patient"===e.resourceType&&e.birthDate)return"DoB: "+e.birthDate},name:e.name,defaultValue:a?[a]:void 0,className:e.className,placeholder:e.placeholder,loadOnFocus:e.loadOnFocus,onChange:t=>{var n;n=t.length>0?t[0]:void 0,l(n),e.onChange&&e.onChange(n)}})}function jt(e){const t=e.targetTypes,n=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,t),[a,l]=x(e.defaultValue),[r,o]=x(n);V().current=a;return V().current=r,N.createElement(U,null,t?N.createElement(Q,{testid:"reference-input-resource-type-select",defaultValue:r,onChange:o},t.map((e=>N.createElement("option",{key:e,value:e},e)))):N.createElement($,{testid:"reference-input-resource-type-input",defaultValue:r,onChange:o}),N.createElement(Tt,{resourceType:r,name:e.name+"-id",defaultValue:a,onChange:t=>{var n;n=t?v(t):void 0,l(n),e.onChange&&e.onChange(n)}}))}function wt(e){const[t,n]=x(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),a=V();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,N.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},N.createElement("colgroup",null,N.createElement("col",{width:"90%"}),N.createElement("col",{width:"10%"})),N.createElement("tbody",null,t.map(((n,r)=>N.createElement("tr",{key:`${r}-${t.length}`},N.createElement("td",null,N.createElement(At,{arrayElement:!0,property:e.property,name:e.name+"."+r,defaultValue:n,onChange:e=>{const t=[...a.current];t[r]=e,l(t)}})),N.createElement("td",{style:{textAlign:"right"}},N.createElement(G,{onClick:e=>{te(e);const t=[...a.current];t.splice(r,1),l(t)}},"Remove"))))),N.createElement("tr",null,N.createElement("td",null),N.createElement("td",{style:{textAlign:"right"}},N.createElement(G,{onClick:e=>{te(e);const t=[...a.current];t.push(void 0),l(t)}},"Add")))))}function St(e){const[t,n]=x(100),[a,l]=x(100);if(!e.visible)return null;return N.createElement(N.Fragment,null,N.createElement("div",{className:"modal-dialog-bg"}),N.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:a+"px"}},N.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){te(e);const r=e.clientX-t,o=e.clientY-a;function i(e){te(e),n(e.clientX-r),l(e.clientY-o)}document.addEventListener("mouseup",(function e(t){te(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",i,!0)}),!0),document.addEventListener("mousemove",i,!0)}(e)},N.createElement("span",{className:"modal-dialog-title-text"},e.title),N.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},N.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),N.createElement("div",{className:"modal-dialog-content"},e.children),N.createElement("div",{className:"modal-dialog-buttons"},N.createElement(G,{testid:"dialog-ok",onClick:e.onOk},"OK"),N.createElement(G,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Nt=["sun","mon","tue","wed","thu","fri","sat"];function xt(e){const[t,n]=x(e.defaultValue||{}),[a,l]=x(!1),r=V();return r.current=t,N.createElement(N.Fragment,null,N.createElement(U,null,N.createElement("span",null,s(r.current)||"No repeat"),N.createElement(G,{onClick:()=>l(!0)},"Edit")),N.createElement(Vt,{visible:a,defaultValue:r.current,onOk:t=>{e.onChange&&e.onChange(t),n(t),l(!1)},onCancel:()=>l(!1)}))}function Vt(e){var t,n;const[a,l]=x(e.defaultValue||{}),r=V();function o(e){l(Object.assign(Object.assign({},r.current),{repeat:e}))}function i(e,t){t?function(e){var t,n,a;const l=(null===(n=null===(t=r.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)||o(Object.assign(Object.assign({},null===(a=r.current)||void 0===a?void 0:a.repeat),{dayOfWeek:[...l,e]}))}(e):function(e){var t,n,a;const l=(null===(n=null===(t=r.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)&&o(Object.assign(Object.assign({},null===(a=r.current)||void 0===a?void 0:a.repeat),{dayOfWeek:l.filter((t=>t!==e))}))}(e)}return r.current=a,N.createElement(St,{title:"Timing",visible:e.visible,onOk:()=>e.onOk(a),onCancel:()=>e.onCancel()},N.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},N.createElement(pe,{title:"Starts on",htmlFor:"timing-dialog-start"},N.createElement(mt,{name:"timing-dialog-start",onChange:e=>{return t=e,void l(Object.assign(Object.assign({},r.current),{event:[t]}));var t}})),N.createElement(pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},N.createElement(U,null,N.createElement($,{type:"number",step:1,name:"timing-dialog-period",defaultValue:null===(t=null==a?void 0:a.repeat)||void 0===t?void 0:t.period,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=r.current)||void 0===t?void 0:t.repeat),{period:e}))}(parseInt(e))}),N.createElement(Q,{name:"timing-dialog-periodUnit",defaultValue:null===(n=null==a?void 0:a.repeat)||void 0===n?void 0:n.periodUnit,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=r.current)||void 0===t?void 0:t.repeat),{periodUnit:e}))}(e)},N.createElement("option",{value:"d"},"day"),N.createElement("option",{value:"wk"},"week"),N.createElement("option",{value:"mo"},"month"),N.createElement("option",{value:"a"},"year")))),N.createElement(pe,{title:"Repeat on"},N.createElement(U,null,Nt.map((e=>N.createElement(N.Fragment,{key:e},N.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),N.createElement(et,{name:"timing-dialog-repeat-"+e,onChange:t=>i(e,t)}))))))))}function At(e){var t,n,a;const l=e.property,r=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"===r?N.createElement(re,{name:o,defaultValue:i,onChange:e.onChange}):N.createElement(wt,{property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?N.createElement(Dt,Object.assign({elementDefinitionTypes:c},e)):N.createElement(It,Object.assign({elementDefinitionType:c[0]},e))}function Dt(e){const t=e.elementDefinitionTypes;let n;e.defaultPropertyType&&(n=t.find((t=>t.code===e.defaultPropertyType))),n||(n=t[0]);const[l,r]=x(n);return N.createElement(U,null,N.createElement(Q,{style:{width:"200px"},defaultValue:null==l?void 0:l.code,onChange:e=>{r(t.find((t=>t.code===e)))}},t.map((e=>N.createElement("option",{key:e.code,value:e.code},e.code)))),N.createElement(It,Object.assign({},e,{elementDefinitionType:l,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",a(l.code)))}})))}function It(e){var t;const n=e.property,a=e.elementDefinitionType.code,l=e.name,r=e.defaultValue;switch(a){case u.SystemString:case u.canonical:case u.string:case u.time:case u.uri:case u.url:return N.createElement($,{type:"text",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.date:return N.createElement($,{type:"date",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.dateTime:case u.instant:return N.createElement(mt,{type:"datetime-local",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.decimal:case u.integer:case u.positiveInt:case u.unsignedInt:return N.createElement($,{type:"number",step:a===u.decimal?"any":1,name:l,testid:l,defaultValue:r,onChange:t=>{e.onChange&&e.onChange(parseFloat(t))},outcome:e.outcome});case u.code:return N.createElement(it,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.boolean:return N.createElement(et,{name:l,testid:l,defaultValue:!!r,onChange:t=>{e.onChange&&e.onChange(t)}});case u.markdown:return N.createElement(vt,{name:l,testid:l,defaultValue:r,onChange:e.onChange});case u.Address:return N.createElement(z,{name:l,defaultValue:r,onChange:e.onChange});case u.Annotation:return N.createElement(Ze,{name:l,defaultValue:r,onChange:e.onChange});case u.Attachment:return N.createElement(oe,{name:l,defaultValue:r,onChange:e.onChange});case u.CodeableConcept:return N.createElement(tt,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.Coding:return N.createElement(ct,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.ContactDetail:return N.createElement(st,{name:l,defaultValue:r,onChange:e.onChange});case u.ContactPoint:return N.createElement(ut,{name:l,defaultValue:r,onChange:e.onChange});case u.Extension:return N.createElement(ht,{name:l,defaultValue:r,onChange:e.onChange});case u.HumanName:return N.createElement(Et,{name:l,defaultValue:r,onChange:e.onChange});case u.Identifier:return N.createElement(gt,{name:l,defaultValue:r,onChange:e.onChange});case u.Period:return N.createElement(ft,{name:l,defaultValue:r,onChange:e.onChange});case u.Quantity:return N.createElement(yt,{name:l,defaultValue:r,onChange:e.onChange});case u.Range:return N.createElement(Ct,{name:l,defaultValue:r,onChange:e.onChange});case u.Ratio:return N.createElement(kt,{name:l,defaultValue:r,onChange:e.onChange});case u.Reference:return N.createElement(jt,{name:l,defaultValue:r,targetTypes:Rt(n),onChange:e.onChange});case u.Timing:return N.createElement(xt,{name:l,defaultValue:r,onChange:e.onChange});default:return N.createElement(Pt,{typeName:c(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:r,onChange:e.onChange,outcome:e.outcome})}}function Rt(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 Pt(e){var t;const[n,a]=x(null!==(t=e.defaultValue)&&void 0!==t?t:{});function o(t){a(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=l.types[i];if(!c)return N.createElement("div",null,i," not implemented");const u={type:i,value:n};return N.createElement(N.Fragment,null,Object.entries(c.properties).map((t=>{const a=t[0];if("id"===a||De.indexOf(a)>=0)return null;const l=t[1];if(!l.type)return null;const[i,c]=Xe(u,a);return 1===l.type.length&&"boolean"===l.type[0].code?N.createElement(Ae,{key:a,title:r(a),description:l.definition,htmlFor:a},N.createElement(At,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(Re(n,a,null!=l?l:a,t[1],e))}})):N.createElement(pe,{key:a,title:r(a),description:l.definition,htmlFor:a,outcome:e.outcome},N.createElement(At,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(Re(n,a,null!=l?l:a,t[1],e))}}))})))}function Ft(e){var t;return N.createElement("div",{className:"medplum-resource-badge"},N.createElement(Se,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),N.createElement(Ot,{value:e.value,link:e.link}))}function Lt(e){var t,n;const l=we(e.value),r=we(null===(t=null==l?void 0:l.specimen)||void 0===t?void 0:t[0]);if(!l)return null;let o="";if(l.presentedForm&&l.presentedForm.length>0){const e=l.presentedForm[0];(null===(n=e.contentType)||void 0===n?void 0:n.startsWith("text/plain"))&&e.data&&(o=window.atob(e.data))}if(null==r?void 0:r.note)for(const e of r.note)o+=e.text+"\n\n";return N.createElement("div",{className:"medplum-diagnostic-report"},N.createElement("h1",null,"Diagnostic Report"),N.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&N.createElement("dl",null,N.createElement("dt",null,"Subject"),N.createElement("dd",null,N.createElement(Ft,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>N.createElement("dl",{key:e.reference},N.createElement("dt",null,"Interpreter"),N.createElement("dd",null,N.createElement(Ft,{value:e,link:!0}))))),l.issued&&N.createElement("dl",null,N.createElement("dt",null,"Issued"),N.createElement("dd",null,d(l.issued))),l.status&&N.createElement("dl",null,N.createElement("dt",null,"Status"),N.createElement("dd",null,a(l.status)))),l.result&&N.createElement(Mt,{value:l.result}),o&&N.createElement("pre",null,o.trim()))}function Mt(e){var t;return N.createElement("table",{className:"medplum-table"},N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"Test"),N.createElement("th",null,"Value"),N.createElement("th",null,"Reference Range"),N.createElement("th",null,"Interpretation"))),N.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>N.createElement(qt,{key:"obs-"+t,value:e})))))}function qt(e){const t=we(e.value);return t?N.createElement("tr",null,N.createElement("td",null,N.createElement(Oe,{to:t},N.createElement(qe,{value:t.code}))),N.createElement("td",null,N.createElement($t,{value:t})),N.createElement("td",null,N.createElement(_t,{value:t.referenceRange})),N.createElement("td",null,t.interpretation&&t.interpretation.length>0&&N.createElement(qe,{value:t.interpretation[0]}))):null}function $t(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?N.createElement(He,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?N.createElement(N.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?N.createElement(N.Fragment,null,n.component.map(((e,t)=>N.createElement($t,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function _t(e){const t=e.value&&e.value.length>0&&e.value[0];return t?N.createElement(ze,{value:t}):null}function Ut(){return N.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},N.createElement("div",{className:"medplum-loading-container"},N.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},N.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function Qt(e){return N.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function Ht(e){const t=Z(),[n,a]=x();if(D((()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)}),[t,e.original.resourceType]),!n)return null;const l=n.types[e.original.resourceType];return l?N.createElement("table",{className:"medplum-diff-table"},N.createElement("colgroup",null,N.createElement("col",{style:{width:"30%"}}),N.createElement("col",{style:{width:"35%"}}),N.createElement("col",{style:{width:"35%"}})),N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"Property"),N.createElement("th",null,"Before"),N.createElement("th",null,"After"))),N.createElement("tbody",null,Object.entries(l.properties).map((t=>{const n=t[0];if("id"===n||"meta"===n)return null;const a=t[1],[l,o]=Xe(E(e.original),n),[c,u]=Xe(E(e.revised),n);return Kt(l)&&Kt(c)||i(l)===i(c)?null:N.createElement("tr",{key:n},N.createElement("td",null,r(n)),N.createElement("td",{className:"medplum-diff-removed"},N.createElement(Je,{property:a,propertyType:o,value:l,ignoreMissingValues:!0})),N.createElement("td",{className:"medplum-diff-added"},N.createElement(Je,{property:a,propertyType:u,value:c,ignoreMissingValues:!0})))})))):null}function Kt(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function zt(e){const t=Z(),n=we(e.value),[a,l]=x();return D((()=>{n&&t.requestSchema(n.resourceType).then(l).catch(console.log)}),[t,n]),a&&n?N.createElement(Le,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}function Wt(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return N.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},N.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class Bt extends N.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?N.createElement("h1",null,"Something went wrong."):this.props.children}}function Gt(e){const t=V(null),n=L(),a=V();e.visible?void 0===a.current&&(a.current=n):a.current=void 0;const l=V();l.current=e,D((()=>{function n(n){var a,r;(null===(a=l.current)||void 0===a?void 0:a.visible)&&(null===(r=l.current)||void 0===r?void 0:r.autoClose)&&(null==t?void 0:t.current)&&!t.current.contains(n.target)&&e.onClose()}return document.addEventListener("click",n,!0),()=>document.removeEventListener("click",n,!0)}),[e]),D((()=>{e.visible&&n!==a.current&&e.onClose()}),[n,e]);const r={display:e.visible?"block":"none"};return e.anchor&&(e.anchor.right+250<document.body.clientWidth?r.left=e.anchor.right+"px":r.right=document.body.clientWidth-e.anchor.left+"px",e.anchor.top+300<document.body.clientHeight?r.top=e.anchor.top+"px":r.bottom=document.body.clientHeight-e.anchor.top+"px"),N.createElement(N.Fragment,null,e.modal&&N.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),N.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:r,"data-testid":"popup"},e.children))}function Yt(e){return N.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function Jt(e){var t,n,a;const[l,r]=x(),o=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return N.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},N.createElement("div",{className:"medplum-timeline-item-header"},N.createElement("div",{className:"medplum-timeline-item-avatar"},N.createElement(Se,{value:o,link:!0,size:"medium"})),N.createElement("div",{className:"medplum-timeline-item-title"},N.createElement(Ot,{value:o,link:!0}),N.createElement("div",{className:"medplum-timeline-item-subtitle"},N.createElement(Oe,{to:e.resource},d(null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated)),N.createElement("span",null,"·"),N.createElement(Oe,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&N.createElement("div",{className:"medplum-timeline-item-actions"},N.createElement("a",{href:"#","aria-label":`Actions for ${g(e.resource)}`,onClick:e=>{te(e);const t=e.currentTarget.getBoundingClientRect();r(t)}},N.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},N.createElement("g",{transform:"translate(-446 -350)"},N.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"})))))),N.createElement(Bt,null,e.padding&&N.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&N.createElement(N.Fragment,null,e.children)),e.socialEnabled&&N.createElement("div",{className:"medplum-timeline-item-footer"},N.createElement(G,{borderless:!0},"Like"),N.createElement(G,{borderless:!0},"Comment")),e.popupMenuItems&&N.createElement(Gt,{visible:!!l,anchor:l,autoClose:!0,onClose:()=>r(void 0)},e.popupMenuItems))}function Xt(e){e.sort(Zt)}function Zt(e,t){const n=en(e),a=en(t);return n>a?1:n<a?-1:tn(e)-tn(t)}function en(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function tn(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 nn(e){const t=F(),n=Z(),a=n.getProfile(),l=V(null),r=we(e.value),[o,i]=x(),[c,u]=x([]),s=e.buildSearchRequests,m=V(c);m.current=c;const d=R((()=>{if(!r)return u([]),void i({});n.executeBatch(s(r)).then(p).catch(console.log)}),[n,r,s]);function p(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&i(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}Xt(t),t.reverse()}u(t)}function v(e){const t=[...m.current,...e];Xt(t),t.reverse(),u(t)}function h(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function E(e){h(e,"stat").then(d).catch(console.log)}function g(e){h(e,"routine").then(d).catch(console.log)}function f(e){t(`/${e.resourceType}/${e.id}`)}function y(e){t(`/${e.resourceType}/${e.id}/edit`)}function b(e){t(`/${e.resourceType}/${e.id}/delete`)}function C(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return D((()=>{d()}),[d]),r&&o?N.createElement(Yt,null,e.createCommunication&&N.createElement("article",{className:"medplum-timeline-item"},N.createElement("div",{className:"medplum-timeline-item-header"},N.createElement(de,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,r&&e.createCommunication&&n.createResource(e.createCommunication(r,a,o)).then((e=>{v([e])})).catch(console.log);const i=l.current;i&&(i.value="",i.focus())}},N.createElement($,{name:"text",testid:"timeline-input",inputRef:l}),N.createElement(G,{type:"submit"},"Comment"),N.createElement(le,{onUpload:function(t){r&&e.createMedia&&n.createResource(e.createMedia(r,a,t)).then((e=>{v([e])})).catch(console.log)}})))),c.map((e=>{var t;if(e.resourceType===r.resourceType&&e.id===r.id)return N.createElement(ln,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:o,resource:e,onDetails:C});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return N.createElement(cn,{key:n,resource:e,onDetails:f});case"Communication":return N.createElement(rn,{key:n,resource:e,onPin:"stat"!==e.priority?E:void 0,onUnpin:"stat"===e.priority?g:void 0,onDetails:f,onEdit:y,onDelete:b});case"DiagnosticReport":return N.createElement(un,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});case"Media":return N.createElement(on,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});default:return N.createElement(Jt,{key:n,resource:e,padding:!0},N.createElement(zt,{value:e,ignoreMissingValues:!0}))}}))):N.createElement(Ut,null)}function an(e){return N.createElement(N.Fragment,null,e.onPin&&N.createElement(Qt,{onClick:()=>e.onPin(e.resource),label:`Pin ${g(e.resource)}`},"Pin"),e.onUnpin&&N.createElement(Qt,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${g(e.resource)}`},"Unpin"),e.onDetails&&N.createElement(Qt,{onClick:()=>e.onDetails(e.resource),label:`Details ${g(e.resource)}`},"Details"),e.onEdit&&N.createElement(Qt,{onClick:()=>e.onEdit(e.resource),label:`Edit ${g(e.resource)}`},"Edit"),e.onDelete&&N.createElement(Qt,{onClick:()=>e.onDelete(e.resource),label:`Delete ${g(e.resource)}`},"Delete"))}function ln(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?N.createElement(Jt,{resource:e.resource,padding:!0,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement(Ht,{original:t,revised:e.resource})):N.createElement(Jt,{resource:e.resource,padding:!0,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement("h3",null,"Created"),N.createElement(zt,{value:e.resource,ignoreMissingValues:!0}))}function rn(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return N.createElement(Jt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:N.createElement(an,Object.assign({},e))},N.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 on(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 N.createElement(Jt,{resource:e.resource,padding:!!a,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement(W,{value:e.resource.content}))}function cn(e){return N.createElement(Jt,{resource:e.resource,padding:!0,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement(Wt,null,N.createElement("pre",null,e.resource.outcomeDesc)))}function un(e){return N.createElement(Jt,{resource:e.resource,padding:!0,popupMenuItems:N.createElement(an,Object.assign({},e))},N.createElement(Lt,{value:e.resource}))}function sn(e){return N.createElement(nn,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${g(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${g(e)}&_sort=-_lastUpdated`}}]})})}function mn(e){return N.createElement(nn,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${g(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${g(e)}`}},{request:{method:"GET",url:`Media?encounter=${g(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",encounter:v(e),subject:e.subject,sender:v(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",encounter:v(e),subject:e.subject,operator:v(t),issued:(new Date).toISOString(),content:n})})}function dn(e){let t;try{t=f(e.path,e.resource)}catch(e){return console.warn("FhirPathDisplay:",e),null}if(t.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${t.length} elements [${JSON.stringify(t,null,2)}]`);return N.createElement(Je,{value:t[0]||"",propertyType:e.propertyType})}function pn(e,t,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=e.types[t],r=l.properties[n],o=null===(a=l.searchParams)||void 0===a?void 0:a[n.toLowerCase()];if(r&&o)return{name:n,elementDefinition:r,searchParams:[o]};if(r){let e;if(l.searchParams){const a=`${t}.${n.replaceAll("[x]","")}`;e=Object.values(l.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(a)})),0===e.length&&(e=void 0)}return{name:n,elementDefinition:r,searchParams:e}}if(o){return{name:n,elementDefinition:y(e,t,o).elementDefinition,searchParams:[o]}}return{name:n}}const vn={string:[b.EQUALS,b.NOT,b.CONTAINS,b.EXACT],fulltext:[b.EQUALS,b.NOT,b.CONTAINS,b.EXACT],token:[b.EQUALS,b.NOT],reference:[b.EQUALS,b.NOT],numeric:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS],quantity:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS],date:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS,b.STARTS_AFTER,b.ENDS_BEFORE,b.APPROXIMATELY],datetime:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS,b.STARTS_AFTER,b.ENDS_BEFORE,b.APPROXIMATELY]},hn={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 En(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function gn(e){return En(e,[])}function fn(e,t){return En(e,(e.filters||[]).filter((e=>e.code!==t)))}function yn(e,t,n,a,l){l&&(e=fn(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),En(e,r)}function bn(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})}function Cn(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 kn(e,t){return jn(e,t,-1)}function On(e,t){return jn(e,t,0)}function Tn(e,t){return jn(e,t,1)}function jn(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),In(e,t,a,l)}function wn(e,t){return xn(e,t,-1)}function Sn(e,t){return xn(e,t,0)}function Nn(e,t){return xn(e,t,1)}function xn(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),In(e,t,a,l)}function Vn(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return In(e,t,n,new Date)}function An(e,t,n){return In(e,t,n,n)}function Dn(e,t,n,a){return Rn(e=fn(e,t),t,n,a)}function In(e,t,n,a){return e=Rn(e=fn(e,t),t,b.GREATER_THAN_OR_EQUALS,n),e=Rn(e,t,b.LESS_THAN_OR_EQUALS,a)}function Rn(e,t,n,a){return yn(e,t,n,a.toISOString())}function Pn(e,t,n=!0){return yn(e,t,b.MISSING,n.toString())}function Fn(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function Ln(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Mn(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 Ln(e,Math.max(r,0))}function qn(e,t,n){return t===_n(e)&&void 0!==n&&n===Un(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function $n(e,t){let n=!1;return _n(e)===t&&(n=!Un(e)),qn(e,t,n)}function _n(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Un(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Qn(e){return vn[e.type]}function Hn(e){var t;return null!==(t=hn[e])&&void 0!==t?t:""}function Kn(e){let t=e;return t.includes(".")&&(t=t.split(".").pop()),"id"===t?"ID":"versionId"===t?"Version ID":(t=t.replace("[x]",""),t=t.replace(/([A-Z])/g," $1"),t=t.replace(/[-_]/g," "),t=t.replace(/\s+/g," "),t=t.trim(),t.split(/\s/).map(a).join(" "))}function zn(e,t){var n,a;const l=t.name;return"id"===l?e.id:"meta.versionId"===l?null===(n=e.meta)||void 0===n?void 0:n.versionId:"_lastUpdated"===l?d(null===(a=e.meta)||void 0===a?void 0:a.lastUpdated):t.elementDefinition&&`${e.resourceType}.${t.name}`===t.elementDefinition.path?function(e,t){var n,a,l;const r=(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]=Xe({type:e.resourceType,value:e},r);if(!o)return null;return N.createElement(Je,{property:t,propertyType:i,value:o,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,t.elementDefinition):t.searchParams&&1===t.searchParams.length&&t.name===t.searchParams[0].code?function(e,t,n){const a=C(t.expression,[{type:e.resourceType,value:e}]);if(!a||0===a.length)return null;if(n)return N.createElement(Je,{propertyType:a[0].type,value:a[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return N.createElement(N.Fragment,null,a.map(((e,t)=>N.createElement("span",{key:`${t}-${a.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function Wn(e){var t;const[n,a]=x({search:JSON.parse(i(e.search))}),l=V(null),r=V(null);function o(){var e,t;const r=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=l.current)||void 0===t?void 0:t.value;if(o){const e=[...r,o];a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function c(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=r.current)||void 0===t?void 0:t.value;if(o){const e=[...l];e.splice(e.indexOf(o),1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function u(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(D((()=>{a({search:e.search})}),[e.search]),!e.visible)return null;const s=e.search.resourceType,m=e.schema.types[s],d=null!==(t=n.search.fields)&&void 0!==t?t:[],p=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(Kn(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=Kn(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(Kn(l)))}return t}(m).filter((e=>!(null==d?void 0:d.includes(e)))).sort();return N.createElement(St,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(n.search),onCancel:e.onCancel},N.createElement("div",null,N.createElement("table",{style:{margin:"auto"}},N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",{colSpan:2,align:"center"},"Available"),N.createElement("th",{colSpan:2,align:"center"},"Selected"))),N.createElement("tbody",null,N.createElement("tr",null,N.createElement("td",{colSpan:2,align:"center"},N.createElement("select",{ref:l,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&o()}(e),onDoubleClick:()=>{o()},"data-testid":"available"},p.map((e=>N.createElement("option",{key:e,value:e},Kn(e)))))),N.createElement("td",{colSpan:2,align:"center"},N.createElement("select",{ref:r,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"selected"},d.map((e=>N.createElement("option",{key:e,value:e},Kn(e)))))))),N.createElement("tfoot",null,N.createElement("tr",null,N.createElement("td",{align:"center"},N.createElement(G,{size:"small",onClick:o},"Add")),N.createElement("td",{align:"center"},N.createElement(G,{size:"small",onClick:c},"Remove")),N.createElement("td",{align:"center"},N.createElement(G,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=r.current)||void 0===t?void 0:t.value;if(o){const e=[...l],t=e.indexOf(o);u(e,t,t-1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Up")),N.createElement("td",{align:"center"},N.createElement(G,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=r.current)||void 0===t?void 0:t.value;if(o){const e=[...l],t=e.indexOf(o);u(e,t,t+1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Down")))))))}function Bn(e){var t,n;const a=null===(n=null===(t=Z().getSchema().types[e.resourceType])||void 0===t?void 0:t.searchParams)||void 0===n?void 0:n[e.filter.code],l=e.filter;return"reference"===(null==a?void 0:a.type)?N.createElement(Ot,{value:{reference:l.value}}):"_lastUpdated"===e.filter.code||"datetime"===(null==a?void 0:a.type)?N.createElement(N.Fragment,null,d(l.value)):N.createElement(N.Fragment,null,l.value)}function Gn(e){var t;const n="filter-value";switch(y(e.schema,e.resourceType,e.searchParam).type){case k.REFERENCE:return N.createElement(jt,{name:n,defaultValue:{reference:e.defaultValue},targetTypes:null===(t=e.searchParam)||void 0===t?void 0:t.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case k.BOOLEAN:return N.createElement(et,{name:n,testid:n,defaultValue:"true"===e.defaultValue,onChange:t=>e.onChange(t.toString())});case k.DATE:return N.createElement($,{type:"date",testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.DATETIME:return N.createElement(mt,{testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.NUMBER:return N.createElement($,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case k.QUANTITY:return N.createElement(yt,{name:n,defaultValue:Yn(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return N.createElement($,{testid:n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function Yn(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function Jn(e){const[t,n]=x(JSON.parse(i(e.search))),[a,l]=x(-1),r=V(t);if(r.current=t,D((()=>{n(JSON.parse(i(e.search)))}),[e.search]),!e.visible)return null;const o=e.schema,c=e.search.resourceType,u=o.types[c].searchParams,s=t.filters||[];return N.createElement(St,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(r.current),onCancel:e.onCancel},N.createElement("div",{className:"medplum-filter-editor"},N.createElement("table",{className:"medplum-filter-editor-table"},N.createElement("colgroup",null,N.createElement("col",{style:{width:200}}),N.createElement("col",{style:{width:200}}),N.createElement("col",{style:{width:380}}),N.createElement("col",{style:{width:120}})),N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"Field"),N.createElement("th",null,"Operation"),N.createElement("th",null,"Value"),N.createElement("th",null,"Actions"))),N.createElement("tbody",null,s.map(((e,t)=>t===a?N.createElement(Zn,{key:`filter-${t}-${s.length}-input`,schema:o,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const a=[...s];a[t]=e,n(En(r.current,a)),l(-1)},onCancel:()=>l(-1)}):N.createElement(Xn,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>l(t),onDelete:()=>n(Cn(r.current,t))}))),N.createElement(Zn,{schema:o,resourceType:c,searchParams:u,okText:"Add",onOk:function(e){n(yn(r.current,e.code,e.operator,e.value))}})))))}function Xn(e){const{filter:t}=e;return N.createElement("tr",null,N.createElement("td",null,Kn(t.code)),N.createElement("td",null,Hn(t.operator)),N.createElement("td",null,N.createElement(Bn,{resourceType:e.resourceType,filter:t})),N.createElement("td",null,N.createElement(G,{size:"small",onClick:e.onEdit},"Edit"),N.createElement(G,{size:"small",onClick:e.onDelete},"Delete")))}function Zn(e){var t;const[n,a]=x(null!==(t=e.defaultValue)&&void 0!==t?t:{}),l=V(n);l.current=n;const r=e.searchParams[n.code],o=r&&Qn(r);return N.createElement("tr",null,N.createElement("td",null,N.createElement(Q,{testid:"filter-field",defaultValue:l.current.code,onChange:function(e){a(Object.assign(Object.assign({},l.current),{code:e}))}},N.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>N.createElement("option",{key:e,value:e},Kn(e)))))),N.createElement("td",null,o&&N.createElement(Q,{testid:"filter-operation",defaultValue:n.operator,onChange:function(e){a(Object.assign(Object.assign({},l.current),{operator:e}))}},N.createElement("option",{value:""}),o.map((e=>N.createElement("option",{key:e,value:e},Hn(e)))))),N.createElement("td",null,r&&n.operator&&N.createElement(Gn,{schema:e.schema,resourceType:e.resourceType,searchParam:r,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},l.current),{value:e}))}})),N.createElement("td",null,n.code&&n.operator&&n.value&&N.createElement(G,{size:"small",onClick:()=>{e.onOk(l.current),a({})}},e.okText),e.onCancel&&N.createElement(G,{size:"small",onClick:e.onCancel},"Cancel")))}function ea(e){var t;const[n,a]=x(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function l(){e.onOk(Object.assign(Object.assign({},e.filter),{value:n}))}return N.createElement(St,{title:e.title,visible:e.visible,onOk:l,onCancel:e.onCancel},N.createElement("div",{style:{width:500}},N.createElement(de,{onSubmit:l},N.createElement(Gn,{schema:e.schema,resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))))}function ta(){return N.createElement("div",{className:"medplum-menu-separator"})}function na(e){const[t,n]=x(!1),[a,l]=x(!1),[r,o]=x(void 0),i=V(null),c=V(!1);c.current=t;const u=V(!1);function s(){const e=i.current;e&&(o(e.getBoundingClientRect()),l(!0))}return u.current=a,D((()=>{const e=window.setInterval((()=>{!u.current&&c.current?s():u.current&&!c.current&&l(!1)}),150);return()=>window.clearInterval(e)}),[]),N.createElement("div",{ref:i,className:"medplum-menu-item medplum-submenu-item",onClick:()=>s(),onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1)},e.title,N.createElement("span",{className:"medplum-submenu-arrow"},"►"),N.createElement(Gt,{visible:a,anchor:r,autoClose:!0,onClose:()=>l(!1)},e.children))}function aa(e){if(!e.searchParams)return null;function t(t,n){l(qn(e.search,t.code,n))}function n(t){l(fn(e.search,t.code))}function a(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})}function l(t){e.onChange(t)}const r={left:e.x,right:e.x,top:e.y,bottom:e.y};return 1===e.searchParams.length?N.createElement(Gt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},N.createElement(la,{search:e.search,searchParam:e.searchParams[0],onSort:t,onPrompt:a,onChange:l,onClear:n})):N.createElement(Gt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},e.searchParams.map((r=>N.createElement(na,{key:r.code,title:Kn(r.code)},N.createElement(la,{search:e.search,searchParam:r,onSort:t,onPrompt:a,onChange:l,onClear:n})))))}function la(e){switch(e.searchParam.type){case"date":return N.createElement(ra,Object.assign({},e));case"number":case"quantity":return N.createElement(oa,Object.assign({},e));case"reference":return N.createElement(ia,Object.assign({},e));case"string":case"token":case"uri":return N.createElement(ca,Object.assign({},e));default:return N.createElement(N.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function ra(e){const{searchParam:t}=e,n=t.code;return N.createElement(N.Fragment,null,N.createElement(Qt,{onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),N.createElement(Qt,{onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.ENDS_BEFORE)},"Before..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.STARTS_AFTER)},"After..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Between..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Tn(e.search,n))},"Tomorrow"),N.createElement(Qt,{onClick:()=>e.onChange(On(e.search,n))},"Today"),N.createElement(Qt,{onClick:()=>e.onChange(kn(e.search,n))},"Yesterday"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Nn(e.search,n))},"Next Month"),N.createElement(Qt,{onClick:()=>e.onChange(Sn(e.search,n))},"This Month"),N.createElement(Qt,{onClick:()=>e.onChange(wn(e.search,n))},"Last Month"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Vn(e.search,n))},"Year to date"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n))},"Missing"),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n,!1))},"Not missing"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onClear(t)},"Clear filters"))}function oa(e){const{searchParam:t}=e,n=t.code;return N.createElement(N.Fragment,null,N.createElement(Qt,{onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),N.createElement(Qt,{onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.GREATER_THAN)},"Greater than..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.LESS_THAN)},"Less than..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n))},"Missing"),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n,!1))},"Not missing"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ia(e){const{searchParam:t}=e,n=t.code;return N.createElement(N.Fragment,null,N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n))},"Missing"),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n,!1))},"Not missing"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ca(e){const{searchParam:t}=e,n=t.code;return N.createElement(N.Fragment,null,N.createElement(Qt,{onClick:()=>e.onSort(t,!1)},"Sort A to Z"),N.createElement(Qt,{onClick:()=>e.onSort(t,!0)},"Sort Z to A"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.CONTAINS)},"Contains..."),N.createElement(Qt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Does not contain..."),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n))},"Missing"),N.createElement(Qt,{onClick:()=>e.onChange(Pn(e.search,n,!1))},"Not missing"),N.createElement(ta,null),N.createElement(Qt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ua(e){return N.createElement("div",{className:"medplum-title-bar"},e.children)}class sa extends Event{constructor(e){super("change"),this.definition=e}}class ma extends Event{constructor(e){super("load"),this.response=e}}class da extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function pa(e){var t,n,a,l;const r=Z(),[o,i]=x(),[c,u]=x(),{search:s,onLoad:m}=e,[d,p]=x({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParams:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),v=V(d);function h(t){e.onChange&&e.onChange(new sa(t))}function E(t,n){ne(t.target)||(te(t),1!==t.button&&e.onClick&&e.onClick(new da(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new da(n,t)))}v.current=d,D((()=>{u(void 0),r.search(s.resourceType,O(Object.assign(Object.assign({},s),{total:"accurate"}))).then((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:e})),m&&m(new ma(e))})).catch((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:void 0})),u(e)}))}),[r,s,m]),D((()=>{r.requestSchema(e.search.resourceType).then((e=>{i(Object.assign({},e))})).catch(console.log)}),[r,e.search.resourceType]);if(!(null===(t=null==o?void 0:o.types)||void 0===t?void 0:t[e.search.resourceType]))return N.createElement(Ut,null);const g=e.checkboxesEnabled,f=function(e,t){const n=t.resourceType,a=[];for(const l of t.fields||["id","_lastUpdated"])a.push(pn(e,n,l));return a}(o,s),y=s.resourceType,b=d.searchResponse,C=null==b?void 0:b.entry,k=null==C?void 0:C.map((e=>e.resource)),w=null===(a=null===(n=e.userConfig)||void 0===n?void 0:n.search)||void 0===a?void 0:a.filter((e=>{var t;return null===(t=e.criteria)||void 0===t?void 0:t.startsWith(y)}));return N.createElement("div",{className:"medplum-search-control",onContextMenu:e=>te(e),"data-testid":"search-control"},!e.hideToolbar&&N.createElement(ua,null,N.createElement("div",null,N.createElement("h1",null,N.createElement("a",{href:`https://www.hl7.org/fhir/${y.toLowerCase()}.html`,target:"_blank",rel:"noopener"},y)),w&&N.createElement(Q,{testid:"saved-search-select",style:{width:80},onChange:e=>{h(T(e))}},N.createElement("option",null),w.map(((e,t)=>N.createElement("option",{key:`${t}-${w.length}`,value:e.criteria},e.name)))),N.createElement(G,{testid:"fields-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!0}))},"Fields"),N.createElement(G,{testid:"filters-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&N.createElement(G,{size:"small",onClick:e.onNew},"New..."),e.onExport&&N.createElement(G,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&N.createElement(G,{size:"small",onClick:()=>e.onDelete(Object.keys(d.selected))},"Delete..."),e.onBulk&&N.createElement(G,{size:"small",onClick:()=>e.onBulk(Object.keys(d.selected))},"Bulk...")),b&&N.createElement("div",null,N.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)}(s,b.total),"-",function(e,t){var n,a;return Math.min(t,((null!==(n=e.offset)&&void 0!==n?n:0)+1)*(null!==(a=e.count)&&void 0!==a?a:j))}(s,b.total)," of"," ",null===(l=b.total)||void 0===l?void 0:l.toLocaleString()),N.createElement(G,{testid:"prev-page-button",size:"small",onClick:()=>h(Mn(s,-1))},"<<"),N.createElement(G,{testid:"next-page-button",size:"small",onClick:()=>h(Mn(s,1))},">>"))),N.createElement("table",null,N.createElement("thead",null,N.createElement("tr",null,g&&N.createElement("th",{className:"medplum-search-icon-cell"},N.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=v.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=v.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)})),p(Object.assign(Object.assign({},v.current),{selected:a}))}(e)})),f.map((e=>N.createElement("th",{key:e.name,onClick:t=>function(e,t){p(Object.assign(Object.assign({},v.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParams:t}))}(t,e.searchParams)},Kn(e.name),e.searchParams&&N.createElement(Ea,null))))),!e.hideFilters&&N.createElement("tr",null,g&&N.createElement("th",{className:"filters medplum-search-icon-cell"}),f.map((t=>N.createElement("th",{key:t.name,className:"filters"},t.searchParams&&N.createElement(ha,{resourceType:y,searchParams:t.searchParams,filters:e.search.filters})))))),N.createElement("tbody",null,null==k?void 0:k.map((e=>e&&N.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>E(t,e),onAuxClick:t=>E(t,e)},g&&N.createElement("td",{className:"medplum-search-icon-cell"},N.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!d.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},v.current.selected);n?a[t]=!0:delete a[t],p(Object.assign(Object.assign({},v.current),{selected:a}))}(t,e.id)})),f.map((t=>N.createElement("td",{key:t.name},zn(e,t))))))))),0===(null==k?void 0:k.length)&&N.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),c&&N.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},N.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),N.createElement(aa,{schema:o,search:e.search,visible:d.popupVisible,x:d.popupX,y:d.popupY,searchParams:d.popupSearchParams,onPrompt:(e,t)=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{h(e),p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))},onClose:()=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))}}),N.createElement(Wn,{schema:o,search:e.search,visible:v.current.fieldEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))}}),N.createElement(Jn,{schema:o,search:e.search,visible:v.current.filterEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))}}),N.createElement(ea,{visible:v.current.filterDialogVisible,title:"Input",schema:o,resourceType:y,searchParam:d.filterDialogSearchParam,filter:d.filterDialogFilter,defaultValue:"",onOk:t=>{h(yn(e.search,t.code,t.operator,t.value)),p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))}}))}const va=N.memo(pa);function ha(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?N.createElement("span",null,"no filters"):N.createElement(N.Fragment,null,n.map(((t,a)=>N.createElement("div",{key:`filter-${a}-${n.length}`},Hn(t.operator)," ",N.createElement(Bn,{resourceType:e.resourceType,filter:t})))))}function Ea(){return N.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},N.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function ga(e){var t,n,a,l,r;const o=Z(),[i,c]=x(),[u,s]=x(),{query:m,fields:d}=e,[p,v]=x(),[h,E]=x({}),g=V();g.current=p;const f=V({});function y(t,n){ne(t.target)||(te(t),1!==t.button&&e.onClick&&e.onClick(new da(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new da(n,t)))}f.current=h,D((()=>{s(void 0),o.graphql(m).then(v).catch(s)}),[o,m]),D((()=>{o.requestSchema(e.resourceType).then((e=>{c(Object.assign({},e))})).catch(console.log)}),[o,e.resourceType]);if(!(null===(t=null==i?void 0:i.types)||void 0===t?void 0:t[e.resourceType]))return N.createElement(Ut,null);const b=e.checkboxesEnabled;return N.createElement("div",{className:"medplum-search-control",onContextMenu:e=>te(e),"data-testid":"search-control"},N.createElement("table",null,N.createElement("thead",null,N.createElement("tr",null,b&&N.createElement("th",{className:"medplum-search-icon-cell"},N.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=g.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)&&!f.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=g.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)})),E(l)}(e)})),d.map((e=>N.createElement("th",{key:e.name},e.name))))),N.createElement("tbody",null,null===(a=null===(n=null==p?void 0:p.data)||void 0===n?void 0:n.ResourceList)||void 0===a?void 0:a.map((e=>e&&N.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},b&&N.createElement("td",{className:"medplum-search-icon-cell"},N.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!h[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},f.current);n?a[t]=!0:delete a[t],E(a)}(t,e.id)})),d.map((t=>N.createElement("td",{key:t.name},N.createElement(dn,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(r=null===(l=null==p?void 0:p.data)||void 0===l?void 0:l.ResourceList)||void 0===r?void 0:r.length)&&N.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&N.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},N.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&N.createElement(G,{size:"small",onClick:()=>e.onBulk(Object.keys(f.current))},"Bulk..."))}const fa=N.memo(ga);function ya(e){return N.createElement("div",{className:"medplum-footer"},e.children)}function ba(e){const t=Z();return N.createElement(Ve,{loadOptions:(e,n)=>ce(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)=>Ca(n,t)-Ca(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 t.graphql(function(e){const t=JSON.stringify(e);if(w(e))return`{\n Patients1: PatientList(_id: ${t}, _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: ${t}, _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: ${t}, _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: ${t}, _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: ${t}, _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:n}),e)})),getId:e=>e.id,getIcon:e=>N.createElement(Se,{value:e}),getDisplay:e=>N.createElement(Ot,{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 Ca(e,t){let n=0;if(e.identifier)for(const a of e.identifier)n=Math.max(n,ka(a.value,t));if("Patient"===e.resourceType&&e.name)for(const a of e.name)n=Math.max(n,ka(o(a),t));return n}function ka(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}function Oa(e){var t,n,a,l,r,o;const i=F(),c=L(),u=X(),s=u.medplum,m=s.getLogins(),[d,p]=x(!1),[v,h]=x(!1);return N.createElement(N.Fragment,null,N.createElement("header",{role:"banner","data-testid":"header",style:{background:e.bgColor}},N.createElement("div",null,N.createElement(Oe,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>h(!v)},N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},N.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"}))),N.createElement(Oe,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},e.title||"Medplum"),u.profile&&N.createElement(ba,{key:`header-input-${c.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>i(`/${e.resourceType}/${e.id}`)})),u.profile&&N.createElement("div",{className:"medplum-nav-menu-container"},N.createElement(Oe,{testid:"header-profile-menu-button",onClick:()=>p(!0)},N.createElement(Se,{size:"small",color:"#f68d42",value:u.profile})),N.createElement(Gt,{visible:d,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>p(!1)},N.createElement("div",{className:"medplum-nav-menu"},N.createElement("div",{style:{margin:"auto",padding:"8px"}},N.createElement(Se,{size:"large",value:u.profile})),N.createElement("div",{style:{margin:"auto",padding:"8px"}},N.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},N.createElement(Ue,{value:null===(n=null===(t=u.profile)||void 0===t?void 0:t.name)||void 0===n?void 0:n[0]})),N.createElement("div",{style:{margin:"4px auto 4px auto"}},null===(l=null===(a=s.getActiveLogin())||void 0===a?void 0:a.project)||void 0===l?void 0:l.display),N.createElement(G,{testid:"header-profile-link",onClick:()=>{p(!1),e.onProfile&&e.onProfile()}},"Manage your account")),m.length>1&&N.createElement("div",null,N.createElement("hr",null),m.map((e=>{var t,n,a,l;return(null===(t=e.profile)||void 0===t?void 0:t.reference)!==g(u.profile)&&N.createElement("div",{className:"medplum-nav-menu-profile",key:null===(n=e.profile)||void 0===n?void 0:n.reference,onClick:()=>{s.setActiveLogin(e).then((()=>{p(!1),window.location.reload()})).catch(console.log)}},N.createElement("div",{className:"medplum-nav-menu-profile-icon"},N.createElement(Se,null)),N.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(a=e.profile)||void 0===a?void 0:a.display,N.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(l=e.project)||void 0===l?void 0:l.display)))}))),N.createElement("hr",null),N.createElement("div",{style:{margin:"auto",padding:"8px"}},N.createElement(G,{testid:"header-add-account-button",onClick:()=>{i("/signin")}},"Add another account")),N.createElement("hr",null),N.createElement("div",{style:{margin:"auto",padding:"8px"}},N.createElement(G,{testid:"header-signout-button",onClick:()=>{p(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),N.createElement("hr",null),N.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},N.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),N.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),N.createElement(Gt,{modal:!0,autoClose:!0,visible:v,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>h(!1)},null===(o=null===(r=e.config)||void 0===r?void 0:r.menu)||void 0===o?void 0:o.map(((t,n)=>{var a,l,r;return N.createElement(N.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},N.createElement("h5",null,t.title),N.createElement("ul",null,null===(r=t.link)||void 0===r?void 0:r.map((e=>N.createElement("li",{key:e.target},N.createElement(Oe,{to:e.target},e.name))))))})),N.createElement("h5",null,"Settings"),N.createElement("ul",null,N.createElement("li",null,N.createElement(Oe,{to:u.profile},"Profile")),N.createElement("li",null,N.createElement(Oe,{to:"/changepassword"},"Change password")))))}const Ta=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function ja(e){return N.createElement(nn,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:Ta.map((t=>({request:{method:"GET",url:t.replaceAll("$",g(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",subject:v(e),sender:v(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",subject:v(e),operator:v(t),issued:(new Date).toISOString(),content:n})})}function wa(e){const t=Z(),n=we(e.value),[a,l]=x(void 0),[r,o]=x(),[i,c]=x(),[u,s]=x();function m(){c(void 0)}function d(){o(void 0)}const p=V();if(p.current=u,D((()=>{t.requestSchema("PlanDefinition").then(l).catch(console.log)}),[t]),D((()=>{var e;return s((e=null!=n?n:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:La(e.action)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),!a||!u)return null;function v(e,t){s(Object.assign(Object.assign({},p.current),{[e]:t}))}return N.createElement("div",{className:"medplum-questionnaire-builder"},N.createElement(de,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(u)},N.createElement(pe,{title:"Plan Title",htmlFor:"title"},N.createElement($,{defaultValue:u.title,onChange:e=>v("title",e)})),N.createElement(Sa,{actions:u.action||[],selectedKey:r,setSelectedKey:o,hoverKey:i,setHoverKey:c,onChange:e=>v("action",e)}),N.createElement(G,{type:"submit",size:"large"},"Save")))}function Sa(e){const t=V();function n(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,N.createElement("div",{className:"section"},e.actions.map((a=>N.createElement("div",{key:a.id},N.createElement(Na,{action:a,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n,onRemove:()=>{return n=a,void e.onChange(t.current.filter((e=>e!==n)));var n}})))),N.createElement("div",{className:"bottom-actions"},N.createElement("a",{href:"#",onClick:n=>{var a;te(n),a={id:Fa()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function Na(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 r=a?"section editing":l?"section hovering":"section";return N.createElement("div",{"data-testid":t.id,className:r,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){te(t),e.setHoverKey(e.action.id)}},a?N.createElement(Aa,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):N.createElement(Va,{action:t,actionType:n}),N.createElement("div",{className:"bottom-actions"},N.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const xa={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Va(e){const{action:t,actionType:n}=e,[a,l]=Ra(t);return N.createElement("div",null,N.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&N.createElement("div",null,N.createElement(Ge,{value:{reference:t.definitionCanonical}})),a&&N.createElement("div",null,N.createElement(Je,{property:xa,propertyType:l,value:a})))}function Aa(e){const{action:t}=e,[n,a]=x(e.actionType);function l(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return N.createElement(N.Fragment,null,N.createElement(pe,{title:"Title",htmlFor:`actionTitle-${t.id}`},N.createElement($,{name:`actionTitle-${t.id}`,defaultValue:t.title,onChange:e=>l("title",e)})),N.createElement(pe,{title:"Type of Action",description:"The type of the action to be performed.",htmlFor:`actionType-${t.id}`},N.createElement(Q,{name:`actionType-${t.id}`,defaultValue:n,onChange:a},N.createElement("option",null),N.createElement("option",{value:"appointment"},"Appointment"),N.createElement("option",{value:"lab"},"Lab"),N.createElement("option",{value:"questionnaire"},"Questionnaire"),N.createElement("option",{value:"task"},"Task"))),t.action&&t.action.length>0&&N.createElement(Sa,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>l("action",e)}),(()=>{switch(n){case"appointment":return N.createElement(Da,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return N.createElement(Da,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return N.createElement(Da,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return N.createElement(Da,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),N.createElement(pe,{title:"Timing",description:"When the action should take place.",htmlFor:"timing-"+t.id},N.createElement(Ia,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function Da(e){const{id:t,definitionCanonical:n}=e.action,a=(null==n?void 0:n.startsWith(e.resourceType+"/"))?{reference:n}:void 0;return N.createElement(pe,{title:e.title,description:e.description,htmlFor:t},N.createElement(Tt,{name:t,resourceType:e.resourceType,defaultValue:a,loadOnFocus:!0,onChange:t=>{t?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:g(t)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}}))}function Ia(e){const t=e.action,n="timing",[a,l]=Ra(t);return N.createElement(At,{property:xa,name:"timing[x]",defaultValue:a,defaultPropertyType:l,onChange:(a,l)=>{e.onChange(Re(t,n,null!=l?l:n,xa,a))}})}function Ra(e){return Xe({type:"PlanDefinitionAction",value:e},"timing")}let Pa=1;function Fa(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(Pa=Math.max(Pa,t+1))}return e}return"id-"+Pa++}function La(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:Fa(e.id),action:La(e.action)})))}var Ma;function qa(e,t){return Object.assign(Object.assign({},e),{item:$a(e.item,t)})}function $a(e,t){if(e)return e.map((e=>function(e,t){const{linkId:n,type:a}=e;if(!n||!a)return e;if("group"===a)return Object.assign(Object.assign({},e),{item:$a(e.item,t)});const l=t[n];if(!l)return e;let r;switch(a){case u.boolean:r={valueBoolean:"true"===l};break;case u.code:case u.Coding:r={valueCoding:{code:l}};break;case u.date:r={valueDate:l};break;case u.dateTime:case u.instant:r={valueDateTime:l};break;case u.decimal:r={valueDecimal:parseFloat(l)};break;case u.integer:case u.positiveInt:case u.unsignedInt:r={valueInteger:parseInt(l)};break;case u.SystemString:case u.string:case u.markdown:r={valueString:l};break;case u.time:r={valueTime:l};break;case u.uri:case u.url:r={valueUri:l};break;case u.canonical:case u.Reference:r={valueReference:{reference:l}}}if(!r)return e;return Object.assign(Object.assign({},e),{initial:[r]})}(e,t)))}function _a(e){return"choice"===e.type||"open-choice"===e.type}function Ua(e){const t=Z(),n=t.getProfile(),[a,l]=x(),r=we(e.questionnaire),[o,i]=x();return D((()=>{t.requestSchema("Questionnaire").then(l).catch(console.log)}),[t]),D((()=>{i(r?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:g(e),item:Wa(e.item)}}(r):void 0)}),[r]),a&&r?N.createElement(de,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:g(r),subject:e.subject,source:v(n),authored:(new Date).toISOString()}))}},r.title&&N.createElement("h1",null,r.title),r.item&&N.createElement(Qa,{items:r.item,onChange:function(e){i({resourceType:"QuestionnaireResponse",item:e})}}),N.createElement(G,{type:"submit",size:"large"},"OK")):null}function Qa(e){const[t,n]=x(Wa(e.items));function a(a,l){const r=t.slice();r[a]=l,n(r),e.onChange(r)}return N.createElement(N.Fragment,null,e.items.map(((e,t)=>{if(e.type===Ma.display)return N.createElement("p",{key:e.linkId},e.text);if(e.type===Ma.group)return N.createElement(Ha,{key:e.linkId,item:e,onChange:e=>a(t,e)});if(e.type===Ma.boolean){const n=e.initial&&e.initial.length>0?e.initial[0]:void 0;return N.createElement(Ae,{key:e.linkId,title:e.text,htmlFor:e.linkId},N.createElement(et,{name:e.linkId,defaultValue:null==n?void 0:n.valueBoolean,onChange:n=>a(t,{linkId:e.linkId,text:e.text,answer:[{valueBoolean:n}]})}))}return N.createElement(pe,{key:e.linkId,htmlFor:e.linkId,title:e.text||""},N.createElement(Ha,{item:e,onChange:e=>a(t,e)}))})))}function Ha(e){const t=e.item,n=t.type;if(!n)return null;const a=t.linkId;if(!a)return null;const l=t.initial&&t.initial.length>0?t.initial[0]:void 0;function r(n){e.onChange({linkId:t.linkId,text:t.text,answer:[n]})}switch(n){case Ma.group:return N.createElement("div",null,N.createElement("h3",null,t.text),t.item&&N.createElement(Qa,{items:t.item,onChange:function(n){e.onChange({linkId:t.linkId,text:t.text,item:n})}}));case Ma.boolean:return N.createElement(et,{name:a,defaultValue:null==l?void 0:l.valueBoolean,onChange:e=>r({valueBoolean:e})});case Ma.decimal:return N.createElement($,{type:"number",step:"any",name:a,defaultValue:null==l?void 0:l.valueDecimal,onChange:e=>r({valueDecimal:parseFloat(e)})});case Ma.integer:return N.createElement($,{type:"number",step:1,name:a,defaultValue:null==l?void 0:l.valueInteger,onChange:e=>r({valueInteger:parseInt(e)})});case Ma.date:return N.createElement($,{type:"date",name:a,defaultValue:null==l?void 0:l.valueDate,onChange:e=>r({valueDate:e})});case Ma.dateTime:return N.createElement(mt,{type:"datetime-local",name:a,defaultValue:null==l?void 0:l.valueDateTime,onChange:e=>r({valueDateTime:e})});case Ma.time:return N.createElement($,{type:"time",name:a,defaultValue:null==l?void 0:l.valueTime,onChange:e=>r({valueTime:e})});case Ma.string:return N.createElement($,{type:"text",name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case Ma.text:return N.createElement(vt,{name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case Ma.url:return N.createElement($,{type:"url",name:a,defaultValue:null==l?void 0:l.valueUri,onChange:e=>r({valueUri:e})});case Ma.attachment:return N.createElement(oe,{name:a,defaultValue:null==l?void 0:l.valueAttachment,onChange:e=>r({valueAttachment:e})});case Ma.reference:return N.createElement(jt,{name:a,defaultValue:null==l?void 0:l.valueReference,onChange:e=>r({valueReference:e})});case Ma.quantity:return N.createElement(yt,{name:a,defaultValue:null==l?void 0:l.valueQuantity,onChange:e=>r({valueQuantity:e})});case Ma.choice:case Ma.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)})))}(t)?N.createElement(Ka,{name:a,item:t,initial:l,onChangeAnswer:r}):N.createElement(za,{name:a,item:t,initial:l,onChangeAnswer:r})}return null}function Ka(e){const{name:t,item:n,initial:r}=e,o=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],c=p({type:"QuestionnaireItemInitial",value:r},"value");return N.createElement("select",{id:t,name:t,className:"medplum-select",onChange:t=>{const l=t.currentTarget.selectedIndex;if(0===l)return void e.onChangeAnswer({});const r=n.answerOption[l-1],o=p({type:"QuestionnaireItemAnswerOption",value:r},"value"),i="value"+a(o.type);e.onChangeAnswer({[i]:o.value})}},N.createElement("option",null),n.answerOption&&n.answerOption.map(((e,n)=>{const a=p({type:"QuestionnaireItemAnswerOption",value:e},"value"),l=`${t}-option-${n}`;return N.createElement("option",{key:l,value:a.value,selected:c&&i(a)===i(c)},N.createElement(Je,{property:o,propertyType:a.type,value:a.value}))})))}function za(e){const{name:t,item:n,initial:r,onChangeAnswer:o}=e,c=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],u=p({type:"QuestionnaireItemInitial",value:r},"value");return N.createElement(N.Fragment,null,n.answerOption&&n.answerOption.map(((e,n)=>{const l=p({type:"QuestionnaireItemAnswerOption",value:e},"value"),r="value"+a(l.type),s=`${t}-option-${n}`;return N.createElement("div",{key:s,className:"medplum-questionnaire-option-row"},N.createElement("div",{className:"medplum-questionnaire-option-checkbox"},N.createElement("input",{type:"radio",id:s,name:t,value:l.value,defaultChecked:u&&i(l)===i(u),onChange:()=>o({[r]:l.value})})),N.createElement("div",null,N.createElement("label",{htmlFor:s},N.createElement(Je,{property:c,propertyType:l.type,value:l.value}))))})))}function Wa(e){var t;return null!==(t=null==e?void 0:e.map(Ba))&&void 0!==t?t:[]}function Ba(e){var t,n;return{linkId:e.linkId,text:e.text,item:Wa(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Ga))&&void 0!==n?n:[]}}function Ga(e){return Object.assign({},e)}function Ya(e){const t=Z(),n=we(e.questionnaire),[a,l]=x(),[r,o]=x(),[i,c]=x(),[u,s]=x();function m(){s(void 0)}function d(){c(void 0)}return D((()=>{t.requestSchema("Questionnaire").then(l).catch(console.log)}),[t]),D((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||nl(),item:al(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&r?N.createElement("div",{className:"medplum-questionnaire-builder"},N.createElement(de,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(r)},N.createElement(Ja,{item:r,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),N.createElement(G,{type:"submit",size:"large"},"Save"))):null}function Ja(e){var t;const n=e.item,a=e.item,l="resourceType"in e.item,r=l||a.type===Ma.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=V();function s(t){var n;const a=u.current;e.onChange(Object.assign(Object.assign({},a),{item:null===(n=a.item)||void 0===n?void 0:n.map((e=>e.id===t.id?t:e))}))}function m(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:[...null!==(a=null===(n=e.item)||void 0===n?void 0:n.item)&&void 0!==a?a:[],t]}))}function d(t,n){e.onChange(Object.assign(Object.assign({},u.current),{[t]:n}))}u.current=e.item;const p=i?"section editing":c?"section hovering":"section";return N.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){te(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){te(t),e.setHoverKey(e.item.id)}},i?N.createElement(N.Fragment,null,l&&N.createElement("div",null,N.createElement($,{defaultValue:n.title,onChange:e=>d("title",e)})),!r&&N.createElement("div",null,N.createElement(Q,{defaultValue:a.type,onChange:e=>d("type",e)},N.createElement("option",{value:"display"},"Display"),N.createElement("optgroup",{label:"Question"},N.createElement("option",{value:"boolean"},"Boolean"),N.createElement("option",{value:"decimal"},"Decimal"),N.createElement("option",{value:"integer"},"Integer"),N.createElement("option",{value:"date"},"Date"),N.createElement("option",{value:"dateTime"},"Date/Time"),N.createElement("option",{value:"time"},"Time"),N.createElement("option",{value:"string"},"String"),N.createElement("option",{value:"text"},"Text"),N.createElement("option",{value:"url"},"URL"),N.createElement("option",{value:"choice"},"Choice"),N.createElement("option",{value:"open-choice"},"Open Choice"),N.createElement("option",{value:"attachment"},"Attachment"),N.createElement("option",{value:"reference"},"Reference"),N.createElement("option",{value:"quantity"},"Quantity")))),!l&&N.createElement(vt,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e)}),_a(a)&&N.createElement(Xa,{options:a.answerOption,onChange:e=>d("answerOption",e)})):N.createElement(N.Fragment,null,n.title&&N.createElement("h1",null,n.title),a.text&&N.createElement("p",null,a.text),!r&&N.createElement(Ha,{item:a,onChange:()=>{}})),a.item&&a.item.map((t=>N.createElement("div",{key:t.id},N.createElement(Ja,{item:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:s,onRemove:()=>function(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:null===(a=null===(n=e.item)||void 0===n?void 0:n.item)||void 0===a?void 0:a.filter((e=>e!==t))}))}(t)})))),!r&&N.createElement("div",{className:"top-actions"},i?N.createElement($,{defaultValue:a.linkId,onChange:e=>d("linkId",e),size:4}):N.createElement("div",null,o)),N.createElement("div",{className:"bottom-actions"},r&&N.createElement(N.Fragment,null,N.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:nl(),linkId:tl("q"),type:"string",text:"Question"})}},"Add item"),N.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:nl(),linkId:tl("g"),type:"group",text:"Group"})}},"Add group")),!l&&N.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Xa(e){var t;const n=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],a=null!==(t=e.options)&&void 0!==t?t:[];return N.createElement("div",null,a.map((t=>{const[l,r]=Xe({type:"QuestionnaireItemAnswerOption",value:t},"value");return N.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},N.createElement("div",null,N.createElement(At,{key:t.id,name:"value[x]",property:n,defaultPropertyType:r,defaultValue:l,onChange:(n,l)=>{const r=[...a],o=r.findIndex((e=>e.id===t.id));r[o]={id:t.id,[l]:n},e.onChange(r)}})),N.createElement("div",null,N.createElement("a",{href:"#",onClick:n=>{te(n),e.onChange(a.filter((e=>e.id!==t.id)))}},"Remove")))})),N.createElement("a",{href:"#",onClick:t=>{te(t),e.onChange([...a,{id:nl()}])}},"Add choice"))}!function(e){e.group="group",e.display="display",e.question="question",e.boolean="boolean",e.decimal="decimal",e.integer="integer",e.date="date",e.dateTime="dateTime",e.time="time",e.string="string",e.text="text",e.url="url",e.choice="choice",e.openChoice="open-choice",e.attachment="attachment",e.reference="reference",e.quantity="quantity"}(Ma||(Ma={}));let Za=1,el=1;function tl(e){return e+Za++}function nl(){return"id-"+el++}function al(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||nl(),item:al(e.item),answerOption:ll(e.answerOption)})))}function ll(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||nl()})))}function rl(e){return N.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function ol(e){var t;const n=Z(),a=we(e.value),[l,r]=x(!1),[o,i]=x();return D((()=>{a&&!l&&(n.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}}(a)).then(i).catch(console.log),r(!0))}),[n,a,l]),a&&o?N.createElement("div",{className:"medplum-request-group"},null===(t=a.action)||void 0===t?void 0:t.map(((t,n)=>{var a,l,r,i,c,u;const s=t.resource&&function(e){for(const t of null==o?void 0:o.entry)if(t.resource&&e.reference===g(t.resource))return t.resource;return}(t.resource),m=null===(l=null===(a=null==s?void 0:s.input)||void 0===a?void 0:a[0])||void 0===l?void 0:l.valueReference,p=null===(i=null===(r=null==s?void 0:s.output)||void 0===r?void 0:r[0])||void 0===i?void 0:i.valueReference;return N.createElement("div",{className:"medplum-request-group-task",key:`action-${n}`},N.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==s?void 0:s.status)?"🗹":"☐"),N.createElement("div",{className:"medplum-request-group-task-details"},N.createElement("div",{className:"medplum-request-group-task-title"},t.title),N.createElement("div",null,"Last edited by ",N.createElement(Ot,{value:null===(c=null==s?void 0:s.meta)||void 0===c?void 0:c.author})," on ",d(null===(u=null==s?void 0:s.meta)||void 0===u?void 0:u.lastUpdated)),N.createElement("div",null,"Status: ",N.createElement(rl,{status:(null==s?void 0:s.status)||"unknown"}))),N.createElement("div",{className:"medplum-request-group-task-actions"},m&&!p&&N.createElement(G,{onClick:()=>e.onStart(s,m)},"Start"),m&&p&&N.createElement(G,{onClick:()=>e.onEdit(s,m,p)},"Edit")))}))):null}function il(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 o=l.i,i=l.j,c={position:o,lines:t.slice(o,e)},u={position:i,lines:n.slice(i,r)};let s;s=0===c.lines.length&&u.lines.length>0?"insert":c.lines.length>0&&0===u.lines.length?"delete":"change",a.push({original:c,revised:u,type:s}),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,o=r/2|0,i=new Array(r);i[o+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 c=o+l,u=c-1,s=i[c+1],m=i[u];let d,p=0;l===-r||l!==r&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),i[u]=void 0;let v=p-l,h={i:p,j:v,prev:cl(d),snake:!1};for(;p<n&&v<a&&e[p]===t[v];)p++,v++;if(p>h.i&&(h={i:p,j:v,prev:h,snake:!0}),i[c]=h,p>=n&&v>=a)return i[c]}i[o+r-1]=void 0}return}(e,t),e,t)}function cl(e){return e&&!e.snake&&e.prev?e.prev:e}function ul(e){const t=e.entry.map((e=>{var t;return{meta:null===(t=e.resource)||void 0===t?void 0:t.meta,lines:i(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),n=t[0].lines.map((e=>({id:t[0].meta.versionId,meta:t[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const a=il(t[n-1].lines,t[n].lines);for(const l of a){const a=l.original.position,r=l.original.lines,o=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:o[r],span:1})}}}(n,t),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}}(n),n}function sl(e){var t,n;const a=Z(),[l,r]=x(e.history);if(D((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then(r).catch(console.log)}),[a,e.history,e.resourceType,e.id]),!l)return N.createElement("div",null,"Loading...");const o=null===(n=null===(t=l.entry)||void 0===t?void 0:t[0])||void 0===n?void 0:n.resource,i=ul(l);return N.createElement("div",{className:"medplum-blame-container"},N.createElement("table",{className:"medplum-blame"},N.createElement("tbody",null,i.map(((e,t)=>N.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&N.createElement("td",{className:"details",rowSpan:e.span},N.createElement(U,{justifyContent:"space-between"},N.createElement(Ft,{value:e.meta.author,size:"xsmall",link:!0}),N.createElement(Oe,{to:ml(o,e.meta.versionId)},dl(e.meta.lastUpdated)))),N.createElement("td",{className:"line-number"},t+1),N.createElement("td",{className:"line"},N.createElement("pre",{className:"line-pre"},e.value))))))))}function ml(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function dl(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return pl(n,"year");const a=Math.floor(t/2592e3);if(a>0)return pl(a,"month");const l=Math.floor(t/86400);if(l>0)return pl(l,"day");const r=Math.floor(t/3600);if(r>0)return pl(r,"hour");const o=Math.floor(t/60);return o>0?pl(o,"minute"):pl(t,"second")}function pl(e,t){return`${e} ${1===e?t:t+"s"} ago`}function vl(e){let t=e.original,n=e.revised;e.ignoreMeta&&(t=Object.assign(Object.assign({},t),{meta:void 0}),n=Object.assign(Object.assign({},n),{meta:void 0}));const a=il(i(t,!0).match(/[^\r\n]+/g),i(n,!0).match(/[^\r\n]+/g));return N.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>N.createElement(hl,{key:"delta"+t,delta:e}))))}function hl(e){return N.createElement(N.Fragment,null,"...",N.createElement("br",null),e.delta.original.lines.length>0&&N.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&N.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",N.createElement("br",null))}function El(e){var t;const n=Z(),[a,l]=x(e.history);return D((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then(l).catch(console.log)}),[n,e.history,e.resourceType,e.id]),a?N.createElement("table",{className:"medplum-table"},N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"Author"),N.createElement("th",null,"Date"),N.createElement("th",null,"Version"))),N.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map(((e,t)=>N.createElement(gl,{key:"entry-"+t,entry:e}))))):N.createElement("div",null,"Loading...")}function gl(e){var t,n,a;const{response:l,resource:r}=e.entry;return r?N.createElement("tr",null,N.createElement("td",null,N.createElement(Ft,{value:null===(t=r.meta)||void 0===t?void 0:t.author,link:!0})),N.createElement("td",null,d(null===(n=r.meta)||void 0===n?void 0:n.lastUpdated)),N.createElement("td",null,N.createElement(Oe,{to:fl(r)},null===(a=r.meta)||void 0===a?void 0:a.versionId))):N.createElement("tr",null,N.createElement("td",{colSpan:3},S(null==l?void 0:l.outcome)))}function fl(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function yl(e){const{onChangeMonth:t,onClick:n}=e,[a,l]=x(bl);function r(e){l((n=>{const a=new Date(n.getTime());return a.setMonth(n.getMonth()+e),t(a),a}))}const o=P((()=>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:Cl(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}(a,e.slots)),[a,e.slots]);return N.createElement("div",null,N.createElement(U,null,N.createElement("p",{style:{flex:1}},(i=a).toLocaleString("default",{month:"long"})+" "+i.getFullYear()),N.createElement("p",null,N.createElement(G,{label:"Previous month",onClick:()=>r(-1)},"<"),N.createElement(G,{label:"Next month",onClick:()=>r(1)},">"))),N.createElement("table",{className:"medplum-calendar-table"},N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"SUN"),N.createElement("th",null,"MON"),N.createElement("th",null,"TUE"),N.createElement("th",null,"WED"),N.createElement("th",null,"THU"),N.createElement("th",null,"FRI"),N.createElement("th",null,"SAT"))),N.createElement("tbody",null,o.map(((e,t)=>N.createElement("tr",{key:"week-"+t},e.map(((e,t)=>N.createElement("td",{key:"day-"+t},e&&N.createElement("button",{disabled:!e.available,onClick:()=>n(e.date)},e.date.getDate()))))))))));var i}function bl(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Cl(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 kl(e){var t;const n=Z(),a=we(e.schedule),[l,r]=x();V().current=l;const[o,i]=x(bl()),[c,u]=x(),[s,m]=x(),[d,p]=x(),[v,h]=x();if(D((()=>{a?(r([]),n.searchResources("Slot",new URLSearchParams([["schedule",g(a)],["start","gt"+o.toISOString()],["start","lt"+new Date(o.getTime()+26784e5).toISOString()]])).then(r).catch(console.log)):r(void 0)}),[n,a,o]),!a||!l)return null;const E=null===(t=a.actor)||void 0===t?void 0:t[0];return N.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},N.createElement("div",{className:"medplum-calendar-info-pane"},E&&N.createElement(Se,{value:E,size:"large"}),E&&N.createElement("h1",null,N.createElement(Ot,{value:E})),N.createElement("p",null,"1 hour"),c&&N.createElement("p",null,c.toLocaleDateString()),s&&N.createElement("p",null,Ol(new Date(s.start)))),N.createElement("div",{className:"medplum-calendar-selection-pane"},!c&&N.createElement("div",null,N.createElement("h3",null,"Select date"),N.createElement(yl,{slots:l,onChangeMonth:i,onClick:u})),c&&!s&&N.createElement("div",null,N.createElement("h3",null,"Select time"),l.map((e=>{const t=new Date(e.start);return t.getTime()>c.getTime()&&t.getTime()<c.getTime()+864e5&&N.createElement("div",{key:e.id},N.createElement(G,{style:{width:150},onClick:()=>m(e)},Ol(t)))}))),c&&s&&!d&&N.createElement("div",null,N.createElement("h3",null,"Enter your info"),N.createElement(pe,{title:"Name",htmlFor:"name"},N.createElement($,{name:"name"})),N.createElement(pe,{title:"Email",htmlFor:"email"},N.createElement($,{name:"email"})),N.createElement(G,{primary:!0,onClick:()=>p("info")},"Next")),c&&s&&d&&!v&&N.createElement("div",null,N.createElement("h3",null,"Custom questions"),N.createElement(pe,{title:"Question 1",htmlFor:"q1"},N.createElement($,{name:"q1"})),N.createElement(pe,{title:"Question 2",htmlFor:"q2"},N.createElement($,{name:"email"})),N.createElement(pe,{title:"Question 3",htmlFor:"q3"},N.createElement($,{name:"email"})),N.createElement(G,{primary:!0,onClick:()=>h("form")},"Next")),c&&s&&d&&v&&N.createElement("div",null,N.createElement("h3",null,"You're all set!"),N.createElement("p",null,"Check your email for a calendar invite."))))}function Ol(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function Tl(e){return N.createElement(nn,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${g(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${g(e)}`}},{request:{method:"GET",url:`Media?_count=100&based-on=${g(e)}`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${g(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",basedOn:[v(e)],subject:e.subject,sender:v(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",basedOn:[v(e)],subject:e.subject,operator:v(t),issued:(new Date).toISOString(),content:n})})}function jl(e){let t="medplum-tab";function n(t){te(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),N.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function wl(e){return N.createElement(Wt,{className:"medplum-surface",height:50},N.createElement("div",{role:"tablist",className:"medplum-tablist"},N.createElement("div",{className:"medplum-tablist-foreground"},N.Children.map(e.children,((t,n)=>N.isValidElement(t)&&t.type===jl?N.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function Sl(e){return N.createElement("div",{role:"tabpanel"},e.children)}function Nl(e){return N.createElement(N.Fragment,null,N.Children.map(e.children,(t=>N.isValidElement(t)&&t.type===Sl&&t.props.name===e.value?t:null)))}export{M as AddressDisplay,z as AddressInput,B as AttachmentArrayDisplay,re as AttachmentArrayInput,oe as AttachmentInput,Ve as Autocomplete,Se as Avatar,Pt as BackboneElementInput,G as Button,et as Checkbox,Ae as CheckboxFormSection,it as CodeInput,qe as CodeableConceptDisplay,tt as CodeableConceptInput,_e as ContactDetailDisplay,st as ContactDetailInput,$e as ContactPointDisplay,ut as ContactPointInput,mt as DateTimeInput,sn as DefaultResourceTimeline,Pe as DescriptionList,Fe as DescriptionListEntry,Lt as DiagnosticReportDisplay,ie as Document,Dt as ElementDefinitionInputSelector,It as ElementDefinitionTypeInput,mn as EncounterTimeline,Bt as ErrorBoundary,ga as FhirPathTable,ya as FooterLinks,de as Form,pe as FormSection,Oa as Header,Ue as HumanNameDisplay,Et as HumanNameInput,gt as IdentifierInput,$ as Input,U as InputRow,Ut as Loading,ve as Logo,Oe as MedplumLink,J as MedplumProvider,fa as MemoizedFhirPathTable,va as MemoizedSearchControl,Qt as MenuItem,Mt as ObservationTable,ja as PatientTimeline,wa as PlanDefinitionBuilder,Gt as Popup,Ya as QuestionnaireBuilder,Ua as QuestionnaireForm,Ha as QuestionnaireFormItem,Ma as QuestionnaireItemType,ze as RangeDisplay,Ct as RangeInput,jt as ReferenceInput,ke as RegisterForm,ol as RequestGroupDisplay,Ye as ResourceArrayDisplay,wt as ResourceArrayInput,Ft as ResourceBadge,sl as ResourceBlame,vl as ResourceDiff,Ie as ResourceForm,El as ResourceHistoryTable,Tt as ResourceInput,Ot as ResourceName,Je as ResourcePropertyDisplay,At as ResourcePropertyInput,zt as ResourceTable,nn as ResourceTimeline,kl as Scheduler,Wt as Scrollable,sa as SearchChangeEvent,da as SearchClickEvent,pa as SearchControl,Wn as SearchFieldEditor,Jn as SearchFilterEditor,ma as SearchLoadEvent,Q as Select,Tl as ServiceRequestTimeline,xe as SignInForm,rl as StatusBadge,jl as Tab,wl as TabList,Sl as TabPanel,Nl as TabSwitch,vt as TextArea,Yt as Timeline,Jt as TimelineItem,ua as TitleBar,le as UploadButton,An as addDateEqualsFilter,Dn as addDateFilter,In as addDateFilterBetween,bn as addField,yn as addFilter,wn as addLastMonthFilter,Pn as addMissingFilter,Nn as addNextMonthFilter,qa as addQuestionnaireInitialValues,Sn as addThisMonthFilter,On as addTodayFilter,Tn as addTomorrowFilter,Vn as addYearToDateFilter,kn as addYesterdayFilter,Kn as buildFieldNameString,gn as clearFilters,fn as clearFiltersOnField,dt as convertIsoToLocal,pt as convertLocalToIso,Ee as createScriptTag,Cn as deleteFilter,We as formatRangeString,Hn as getOpString,be as getRecaptcha,Qn as getSearchOperators,_n as getSortField,dl as getTimeString,Xe as getValueAndType,Fn as hasFilterOnField,ye as initRecaptcha,_a as isChoiceQuestion,Un as isSortDescending,Mn as movePage,ue as parseForm,zn as renderValue,En as setFilters,Ln as setOffset,Re as setPropertyValue,qn as setSort,Xt as sortByDateAndPriority,$n as toggleSort,Z as useMedplum,X as useMedplumContext,ee as useMedplumProfile,we as useResource};
2
2
  //# sourceMappingURL=index.min.js.map