@medplum/react 0.9.34 → 0.9.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/SearchControlField.d.ts +2 -3
- package/dist/cjs/SearchFieldEditor.d.ts +1 -2
- package/dist/cjs/SearchFilterEditor.d.ts +1 -2
- package/dist/cjs/SearchFilterValueDialog.d.ts +1 -2
- package/dist/cjs/SearchFilterValueInput.d.ts +0 -2
- package/dist/cjs/SearchPopupMenu.d.ts +1 -2
- package/dist/cjs/index.js +46 -31
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +1 -1
- package/dist/cjs/index.min.js.map +1 -1
- package/dist/cjs/styles.css +51 -51
- package/dist/esm/GoogleButton.js +1 -1
- package/dist/esm/GoogleButton.js.map +1 -1
- package/dist/esm/Popup.js +5 -1
- package/dist/esm/Popup.js.map +1 -1
- package/dist/esm/SearchControl.js +10 -14
- package/dist/esm/SearchControl.js.map +1 -1
- package/dist/esm/SearchControlField.d.ts +2 -3
- package/dist/esm/SearchControlField.js +6 -8
- package/dist/esm/SearchControlField.js.map +1 -1
- package/dist/esm/SearchFieldEditor.d.ts +1 -2
- package/dist/esm/SearchFieldEditor.js +2 -2
- package/dist/esm/SearchFieldEditor.js.map +1 -1
- package/dist/esm/SearchFilterEditor.d.ts +1 -2
- package/dist/esm/SearchFilterEditor.js +5 -6
- package/dist/esm/SearchFilterEditor.js.map +1 -1
- package/dist/esm/SearchFilterValueDialog.d.ts +1 -2
- package/dist/esm/SearchFilterValueDialog.js +1 -1
- package/dist/esm/SearchFilterValueDialog.js.map +1 -1
- package/dist/esm/SearchFilterValueInput.d.ts +0 -2
- package/dist/esm/SearchFilterValueInput.js +1 -1
- package/dist/esm/SearchFilterValueInput.js.map +1 -1
- package/dist/esm/SearchPopupMenu.d.ts +1 -2
- package/dist/esm/SearchPopupMenu.js.map +1 -1
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/styles.css +51 -51
- package/dist/esm/utils/blame.js +1 -0
- package/dist/esm/utils/blame.js.map +1 -1
- package/dist/esm/utils/outcomes.js +19 -1
- package/dist/esm/utils/outcomes.js.map +1 -1
- package/package.json +11 -11
package/dist/esm/index.min.js
CHANGED
|
@@ -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 h,isValidDate as v,toTypedValue as g,getReferenceString as E,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 w,isUUID as j,deepEquals as S,getQuestionnaireAnswers as x,normalizeErrorString as N}from"@medplum/core";import V,{useState as A,useRef as D,createContext as I,useEffect as R,useContext as P,useCallback as F,useMemo as L}from"react";import{useNavigate as M,useLocation as $}from"react-router-dom";function q(t){const n=t.value;return n?V.createElement(V.Fragment,null,e(n)):null}function _(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 U(e){const t=_(e.outcome,e.name),n=t&&t.length>0;return V.createElement("input",{id:e.name,name:e.name,type:Q(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 Q(e){return e||"text"}function H(e){return V.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function K(e){const t=_(e.outcome,e.name),n=t&&t.length>0;return V.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 z(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function W(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 B(e){const[t,n]=A(e.defaultValue||{}),a=D();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,V.createElement(H,null,V.createElement(K,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e}))}},V.createElement("option",null),V.createElement("option",null,"home"),V.createElement("option",null,"mobile"),V.createElement("option",null,"old"),V.createElement("option",null,"temp"),V.createElement("option",null,"work")),V.createElement(K,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){l(Object.assign(Object.assign({},a.current),{type:e}))}},V.createElement("option",null),V.createElement("option",null,"postal"),V.createElement("option",null,"physical"),V.createElement("option",null,"both")),V.createElement(U,{placeholder:"Line 1",defaultValue:z(t,0),onChange:function(e){l(W(a.current||{},0,e))}}),V.createElement(U,{placeholder:"Line 2",defaultValue:z(t,1),onChange:function(e){l(W(a.current||{},1,e))}}),V.createElement(U,{placeholder:"City",defaultValue:t.city,onChange:function(e){l(Object.assign(Object.assign({},a.current),{city:e}))}}),V.createElement(U,{placeholder:"State",defaultValue:t.state,onChange:function(e){l(Object.assign(Object.assign({},a.current),{state:e}))}}),V.createElement(U,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){l(Object.assign(Object.assign({},a.current),{postalCode:e}))}}))}function G(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?V.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&V.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/"))&&V.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},V.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&V.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},V.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),V.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},V.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 Y(e){return V.createElement("div",null,e.values&&e.values.map(((t,n)=>V.createElement("div",{key:"attatchment-"+n},V.createElement(G,{value:t,maxWidth:e.maxWidth})))))}function J(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 V.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 X=I(void 0);function Z(e){const t=e.medplum,[n,a]=A({profile:t.getProfile(),loading:!1});R((()=>{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 V.createElement(X.Provider,{value:l},e.children)}function ee(){return P(X)}function te(){return ee().medplum}function ne(){return ee().profile}function ae(e){e.preventDefault(),e.stopPropagation()}function le(e){if(re(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&re(t[0]))return!0}return!1}function re(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function oe(e){const t=te(),n=D(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 V.createElement(V.Fragment,null,V.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){ae(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),V.createElement(J,{testid:"upload-button",onClick:e=>{var t;ae(e),null===(t=n.current)||void 0===t||t.click()}},e.children||"Upload..."))}function ie(e){var t;const[n,a]=A(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=D();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,V.createElement("table",{style:{width:"100%"}},V.createElement("colgroup",null,V.createElement("col",{width:"90%"}),V.createElement("col",{width:"10%"})),V.createElement("tbody",null,n.map(((e,t)=>V.createElement("tr",{key:`${t}-${n.length}`},V.createElement("td",null,V.createElement(G,{value:e,maxWidth:200})),V.createElement("td",{className:"medplum-right"},V.createElement(J,{onClick:e=>{ae(e);const a=n.slice();a.splice(t,1),r(a)}},"Remove"))))),V.createElement("tr",null,V.createElement("td",null),V.createElement("td",{className:"medplum-right"},V.createElement(oe,{onUpload:e=>{r([...l.current,e])}})))))}function ce(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?V.createElement(V.Fragment,null,V.createElement(G,{value:t,maxWidth:200}),V.createElement(J,{onClick:e=>{ae(e),a(void 0)}},"Remove")):V.createElement(oe,{onUpload:a})}function ue(e){return V.createElement("main",{className:"medplum-document"},V.createElement("article",{style:{maxWidth:e.width}},e.children))}function se(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 me(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?de(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&pe(t,n);return t}function de(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function pe(e,t){e[t.name]=t.value}function he(e){return V.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=me(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function ve(e){const t=_(e.outcome,e.htmlFor),n=t&&t.length>0;return V.createElement("fieldset",{className:"medplum-form-section"},e.title&&V.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&V.createElement("p",null,e.description),e.children,n&&V.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return V.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 ge(e){return V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},V.createElement("title",null,"Medplum Logo"),V.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),V.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"}),V.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"}),V.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),V.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function Ee(e){const t=te(),[n,a]=A();return V.createElement(he,{style:{maxWidth:400},onSubmit:n=>se(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){a(e)}}))},V.createElement("div",{className:"medplum-center"},V.createElement(ge,{size:32}),V.createElement("h1",null,"Create project")),V.createElement(ve,{title:"Project Name",htmlFor:"projectName",outcome:n},V.createElement(U,{name:"projectName",type:"text",testid:"projectName",placeholder:"My Project",required:!0,outcome:n})),V.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",V.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",V.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),V.createElement("div",{className:"medplum-signin-buttons"},V.createElement("div",null),V.createElement("div",null,V.createElement(J,{type:"submit",testid:"submit"},"Create project"))))}function fe(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 ye(e){const t=te(),{googleClientId:n,handleGoogleCredential:a}=e,l=D(null),[r,o]=A("undefined"!=typeof google),[i,c]=A(!1),[u,s]=A(!1);return R((()=>{"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))):fe("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,i,r,l,u,a]),n?V.createElement("div",{ref:l}):null}function be(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 Ce(e){"undefined"==typeof grecaptcha&&fe("https://www.google.com/recaptcha/api.js?render="+e)}function ke(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>se(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function Oe(e){const t=be(e.googleClientId),n=e.recaptchaSiteKey,a=te(),[l,r]=A(),o=_(l,void 0);return R((()=>Ce(n)),[n]),V.createElement(he,{style:{maxWidth:400},onSubmit:t=>se(this,void 0,void 0,(function*(){try{const l=yield ke(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)}}))},V.createElement("div",{className:"medplum-center"},e.children),o&&V.createElement("div",{className:"medplum-input-error"},o.map((e=>{var t,n;return V.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&&V.createElement(V.Fragment,null,V.createElement("div",{className:"medplum-signin-google-container"},V.createElement(ye,{googleClientId:t,handleGoogleCredential:t=>se(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield a.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){r(e)}}))})),V.createElement("div",{className:"medplum-signin-separator"},"or")),V.createElement(ve,{title:"First Name",htmlFor:"firstName",outcome:l},V.createElement(U,{name:"firstName",type:"text",testid:"firstName",placeholder:"First name",required:!0,autoFocus:!0,outcome:l})),V.createElement(ve,{title:"Last Name",htmlFor:"lastName",outcome:l},V.createElement(U,{name:"lastName",type:"text",testid:"lastName",placeholder:"Last name",required:!0,outcome:l})),V.createElement(ve,{title:"Email",htmlFor:"email",outcome:l},V.createElement(U,{name:"email",type:"email",testid:"email",placeholder:"name@domain.com",required:!0,outcome:l})),V.createElement(ve,{title:"Password",htmlFor:"password",outcome:l},V.createElement(U,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:l})),V.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",V.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",V.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),V.createElement("p",{style:{fontSize:"12px",color:"#888"}},"This site is protected by reCAPTCHA and the Google"," ",V.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",V.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply."),V.createElement("div",{className:"medplum-signin-buttons"},V.createElement("div",null,V.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),V.createElement("label",{htmlFor:"remember"},"Remember me")),V.createElement("div",null,V.createElement(J,{type:"submit",testid:"submit"},"Create account"))))}function Te(e){const{type:t,projectId:n,googleClientId:a,recaptchaSiteKey:l,onSuccess:r}=e,o=te(),[i,c]=A(void 0),[u,s]=A();function m(e){e.code?o.processCode(e.code).then((()=>r())).catch(console.log):e.login&&c(e.login)}return R((()=>{"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]),V.createElement(ue,{width:450},u&&V.createElement("pre",null,JSON.stringify(u,null,2)),!i&&V.createElement(Oe,{projectId:n,googleClientId:a,recaptchaSiteKey:l,handleAuthResponse:m},e.children),i&&"project"===t&&V.createElement(Ee,{login:i,handleAuthResponse:m}))}function we(e){const t=M();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),V.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{ae(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function je(e){const t=te(),n=be(e.googleClientId),[a,l]=A(),r=_(a,void 0);return V.createElement(he,{style:{maxWidth:400},onSubmit:n=>{t.startLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,email:n.email,password:n.password,remember:"true"===n.remember}).then(e.handleAuthResponse).catch(l)}},V.createElement("div",{className:"medplum-center"},e.children),r&&V.createElement("div",{className:"medplum-input-error"},r.map((e=>{var t,n;return V.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&&V.createElement(V.Fragment,null,V.createElement("div",{className:"medplum-signin-google-container"},V.createElement(ye,{googleClientId:n,handleGoogleCredential:n=>{t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,googleClientId:n.clientId,googleCredential:n.credential}).then(e.handleAuthResponse).catch(l)}})),V.createElement("div",{className:"medplum-signin-separator"},"or")),V.createElement(ve,{title:"Email",htmlFor:"email",outcome:a},V.createElement(U,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:a})),V.createElement(ve,{title:"Password",htmlFor:"password",outcome:a},V.createElement(U,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:a})),V.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&V.createElement("div",null,e.onForgotPassword&&V.createElement(we,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&V.createElement(we,{testid:"register",onClick:e.onRegister},"Register")),V.createElement("div",null,V.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),V.createElement("label",{htmlFor:"remember"},"Remember me")),V.createElement("div",null,V.createElement(J,{type:"submit",testid:"submit"},"Sign in"))))}const Se={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function xe(e){const t=te(),[n,a]=A(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?Se:e.getCachedReference(t);return}(t,e));return R((()=>{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 Ne(e){var a,l;const r=xe(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?V.createElement("img",{src:u,alt:i}):c;return V.createElement("div",{className:o,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&r?V.createElement(we,{to:r},s):s)}function Ve(e){const t=te();return V.createElement("div",null,V.createElement("div",{className:"medplum-center"},V.createElement(ge,{size:32}),V.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,r;return V.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)}},V.createElement("div",{className:"medplum-nav-menu-profile-icon"},V.createElement(Ne,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),V.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,V.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(r=n.project)||void 0===r?void 0:r.display)))})))}function Ae(e){const t=te(),[n,a]=A(void 0),[l,r]=A(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 V.createElement(ue,{width:450},n?l?V.createElement(Ve,{login:n,memberships:l,handleAuthResponse:o}):"new"===e.projectId?V.createElement(Ee,{login:n,handleAuthResponse:o}):V.createElement("div",null,"Success"):V.createElement(je,{projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function De(e){var t,n;const a=D(null),[l,r]=A(!1),[o,i]=A(void 0),[c,u]=A(),[s,m]=A(!1),[d,p]=A(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[h,v]=A([]),[g,E]=A(-1),[f,y]=A(),[b,C]=A(),k=D();k.current=o;const O=D();O.current=c;const T=D();T.current=f;const w=D();function j(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(""),v([]),E(-1),j(n)}function x(){var e;null===(e=a.current)||void 0===e||e.focus()}function N(){F(),r(!1),window.setTimeout((()=>{m(!1)}),200)}function I(){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),v(e),y(void 0),w.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):(ae(e),null===(t=a.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":L(-1),ae(e);break;case"ArrowDown":L(1),ae(e);break;case"Backspace":!function(e){var t;if(null===(t=a.current)||void 0===t?void 0:t.value)return;d.length>0&&(ae(e),j(d.slice(0,d.length-1)))}(e);break;case",":case";":!function(e){var t;F(),ae(e),null===(t=a.current)||void 0===t||t.focus()}(e)}}function F(){var t;let n;return g>=0&&g<h.length?n=h[g]:-1===g&&h.length>0?n=h[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=g+e;t<0?t=0:t>=h.length&&(t=h.length-1),E(t)}w.current=b,R((()=>()=>{T.current&&T.current.abort()}),[]),R((()=>{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 V.createElement("div",{"data-testid":"autocomplete",className:M+(l?" focused":""),onClick:()=>x()},V.createElement("ul",{onClick:()=>x()},d.map((t=>V.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),V.createElement("li",{className:"medplum-autocomplete-item"},V.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&&I())),onBlur:()=>N(),onChange:()=>I(),onInput:()=>I(),onKeyDown:e=>P(e),ref:a,"data-testid":"input-element"}))),s&&V.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},h.map(((t,n)=>V.createElement("div",{key:e.getId(t),className:n===g?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){E(t)}(0,n),onClick:e=>function(e,t){ae(e),S(t)}(e,t)},e.getIcon&&V.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),V.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&V.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&V.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},V.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function Ie(e){return V.createElement("div",{className:"medplum-checkbox-form-section"},V.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),V.createElement("div",{className:"medplum-checkbox-form-section-details-container"},V.createElement("label",{htmlFor:e.htmlFor},e.title),V.createElement("p",null,e.description)))}const Re=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function Pe(e){const t=te(),n=xe(e.defaultValue),[a,l]=A(),[r,o]=A();return R((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(l).catch(console.log))}),[t,n]),a&&r?V.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(r)}},V.createElement(ve,{title:"Resource Type"},V.createElement(U,{name:"resourceType",defaultValue:r.resourceType,disabled:!0})),V.createElement(ve,{title:"ID"},V.createElement(U,{name:"id",defaultValue:r.id,disabled:!0})),V.createElement(Lt,{typeName:r.resourceType,defaultValue:r,outcome:e.outcome,onChange:o}),V.createElement(J,{type:"submit",size:"large"},"OK"),e.onDelete&&V.createElement(J,{type:"button",size:"large",onClick:()=>{e.onDelete(r)}},"Delete")):V.createElement("div",null,"Loading...")}function Fe(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 Le(e){return V.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function Me(e){return V.createElement(V.Fragment,null,V.createElement("dt",null,e.term),V.createElement("dd",null,e.children))}function $e(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?V.createElement("div",null,n.name):V.createElement(Le,{compact:e.compact},Object.entries(o.properties).map((n=>{const a=n[0];if(Re.indexOf(a)>=0)return null;const l=n[1],[o,i]=et(t,a);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:V.createElement(Me,{key:a,term:r(a)},V.createElement(Ze,{property:l,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):V.createElement("div",null,a," not implemented")}function qe(e){var t,n;return V.createElement(V.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 _e(e){const t=e.value;return t?t.text?V.createElement(V.Fragment,null,t.text):t.coding?V.createElement(V.Fragment,null,t.coding.map(((e,t)=>V.createElement(V.Fragment,{key:"coding-"+t},t>0&&V.createElement(V.Fragment,null,", "),V.createElement(qe,{value:e}))))):null:null}function Ue(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("]")),V.createElement(V.Fragment,null,n.join("").trim())}function Qe(e){var t;const n=e.value;return n?V.createElement(V.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>V.createElement(Ue,{key:"telecom-"+t,value:e})))):null}function He(e){const t=e.value;return t?V.createElement(V.Fragment,null,o(t,e.options)):null}function Ke(e){var t,n;return V.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 ze(e){return V.createElement(V.Fragment,null,We(e.value))}function We(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 Be(e){return V.createElement(V.Fragment,null,Ge(e.value))}function Ge(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${We(e.low)}`:!e.low&&e.high?`<= ${We(e.high)}`:`${We(e.low)} - ${We(e.high)}`:""}function Ye(e){const t=e.value;return t?V.createElement(V.Fragment,null,V.createElement(ze,{value:t.numerator})," / ",V.createElement(ze,{value:t.denominator})):null}function Je(e){if(!e.value)return null;const t=e.value.display||e.value.reference||i(e.value);return!1!==e.link&&e.value.reference?V.createElement(we,{to:e.value},t):V.createElement(V.Fragment,null,t)}function Xe(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 V.createElement(V.Fragment,null,r.map(((t,n)=>V.createElement("div",{key:`${n}-${r.length}`},V.createElement(Ze,{arrayElement:!0,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function Ze(e){var t;const{property:n,propertyType:a,value:l}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===a?V.createElement(Y,{values:l,maxWidth:e.maxWidth}):V.createElement(Xe,{property:n,values:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(a){case u.boolean:return V.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 V.createElement("div",null,l);case u.canonical:return V.createElement(Je,{value:{reference:l},link:e.link});case u.dateTime:case u.instant:return V.createElement("div",null,d(l));case u.markdown:return V.createElement("pre",null,l);case u.Address:return V.createElement(q,{value:l});case u.Annotation:return V.createElement("div",null,null==l?void 0:l.text);case u.Attachment:return V.createElement(G,{value:l,maxWidth:e.maxWidth});case u.CodeableConcept:return V.createElement(_e,{value:l});case u.Coding:return V.createElement(qe,{value:l});case u.ContactDetail:return V.createElement(Qe,{value:l});case u.ContactPoint:return V.createElement(Ue,{value:l});case u.HumanName:return V.createElement(He,{value:l});case u.Identifier:return V.createElement(Ke,{value:l});case u.Period:return V.createElement("div",null,m(l));case u.Quantity:return V.createElement(ze,{value:l});case u.Range:return V.createElement(Be,{value:l});case u.Ratio:return V.createElement(Ye,{value:l});case u.Reference:return V.createElement(Je,{value:l,link:e.link});case u.Timing:return V.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 V.createElement($e,{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 et(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 tt(e){const t=ne(),[n,a]=A(e.defaultValue||{});return D().current=n,V.createElement(U,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:n.text,onChange:function(n){const l=n?{text:n,authorReference:t&&h(t),time:(new Date).toISOString()}:{};a(l),e.onChange&&e.onChange(l)}})}function nt(e){return V.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 at(e){const t=te();let n;return e.defaultValue&&(n=[e.defaultValue]),V.createElement(De,{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(lt)))},buildUnstructured:rt,getId:ot,getDisplay:it,name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function lt(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function rt(e){return{text:e}}function ot(e){return e.coding&&e.coding.length>0?e.coding[0].code:i(e)}function it(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 V.createElement(V.Fragment,null,i)}const ct={};function ut(e){const t=te();let n;return e.defaultValue&&(n=[e.defaultValue]),V.createElement(De,{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=>ct[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>V.createElement(V.Fragment,null,ct[e]||e),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function st(e){const t=te();let n;return e.defaultValue&&(n=[e.defaultValue]),V.createElement(De,{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=>V.createElement(qe,{value:e}),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function mt(e){const[t,n]=A(e.defaultValue),a=D();function l(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return a.current=t,V.createElement(H,null,V.createElement(K,{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"},V.createElement("option",null),V.createElement("option",null,"email"),V.createElement("option",null,"fax"),V.createElement("option",null,"pager"),V.createElement("option",null,"phone"),V.createElement("option",null,"other"),V.createElement("option",null,"sms")),V.createElement(K,{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"},V.createElement("option",null),V.createElement("option",null,"home"),V.createElement("option",null,"mobile"),V.createElement("option",null,"old"),V.createElement("option",null,"temp"),V.createElement("option",null,"work")),V.createElement(U,{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 dt(e){var t;const[n,a]=A(e.defaultValue),l=D();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,V.createElement(H,null,V.createElement(U,{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)}}),V.createElement(mt,{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 pt(e){return V.createElement(U,Object.assign({},e,{type:"datetime-local",defaultValue:ht(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(vt(t))}}))}function ht(e){if(!e)return"";const t=new Date(e);return v(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function vt(e){if(!e)return"";const t=new Date(e);return v(t)?t.toISOString():""}function gt(e){const t="medplum-textarea"+(e.monospace?" monospace":""),n=_(e.outcome,e.name),a=n&&n.length>0;return V.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 Et(e){return V.createElement(gt,{testid:"extension-input",name:e.name,defaultValue:i(e.defaultValue),monospace:!0,onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function ft(e){var t,n,a;const[l,r]=A(e.defaultValue),o=D();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=l,V.createElement(H,null,V.createElement(K,{defaultValue:null==l?void 0:l.use,onChange:function(e){i(Object.assign(Object.assign({},o.current),{use:e||void 0}))},testid:"use"},V.createElement("option",null),V.createElement("option",null,"usual"),V.createElement("option",null,"official"),V.createElement("option",null,"temp"),V.createElement("option",null,"nickname"),V.createElement("option",null,"anonymous"),V.createElement("option",null,"old"),V.createElement("option",null,"maiden")),V.createElement(U,{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}))}}),V.createElement(U,{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}))}}),V.createElement(U,{placeholder:"Family",defaultValue:null==l?void 0:l.family,onChange:function(e){i(Object.assign(Object.assign({},o.current),{family:e||void 0}))}}),V.createElement(U,{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 yt(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(U,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e}))}),V.createElement(U,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e}))}))}function bt(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(U,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),V.createElement(U,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function Ct(e){var t;const[n,a]=A(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(K,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,onChange:e=>l(Object.assign(Object.assign({},n),{comparator:e}))},V.createElement("option",null),V.createElement("option",null,"<"),V.createElement("option",null,"<="),V.createElement("option",null,">="),V.createElement("option",null,">")),V.createElement(U,{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:kt(e)}))}),V.createElement(U,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>l(Object.assign(Object.assign({},n),{unit:e}))}))}function kt(e){if(e)return parseFloat(e)}function Ot(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(Ct,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),V.createElement(Ct,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function Tt(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(Ct,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),V.createElement(Ct,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function wt(e){const n=xe(e.value);if(!n)return null;const a=t(n);return e.link?V.createElement(we,{to:n},a):V.createElement("span",null,a)}function jt(e){const t=te(),n=xe(e.defaultValue),[a,l]=A(),r=D(e.resourceType);return r.current=e.resourceType,R((()=>{l(n)}),[n]),V.createElement(De,{loadOptions:e=>se(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=>V.createElement(Ne,{value:e}),getDisplay:e=>V.createElement(wt,{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 St(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]=A(e.defaultValue),[r,o]=A(n);D().current=a;return D().current=r,V.createElement(H,null,t?V.createElement(K,{testid:"reference-input-resource-type-select",defaultValue:r,onChange:o},t.map((e=>V.createElement("option",{key:e,value:e},e)))):V.createElement(U,{testid:"reference-input-resource-type-input",defaultValue:r,onChange:o}),V.createElement(jt,{resourceType:r,name:e.name+"-id",defaultValue:a,onChange:t=>{var n;n=t?h(t):void 0,l(n),e.onChange&&e.onChange(n)}}))}function xt(e){const[t,n]=A(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),a=D();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,V.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},V.createElement("colgroup",null,V.createElement("col",{width:"90%"}),V.createElement("col",{width:"10%"})),V.createElement("tbody",null,t.map(((n,r)=>V.createElement("tr",{key:`${r}-${t.length}`},V.createElement("td",null,V.createElement(It,{arrayElement:!0,property:e.property,name:e.name+"."+r,defaultValue:n,onChange:e=>{const t=[...a.current];t[r]=e,l(t)}})),V.createElement("td",{style:{textAlign:"right"}},V.createElement(J,{onClick:e=>{ae(e);const t=[...a.current];t.splice(r,1),l(t)}},"Remove"))))),V.createElement("tr",null,V.createElement("td",null),V.createElement("td",{style:{textAlign:"right"}},V.createElement(J,{onClick:e=>{ae(e);const t=[...a.current];t.push(void 0),l(t)}},"Add")))))}function Nt(e){const[t,n]=A(100),[a,l]=A(100);if(!e.visible)return null;return V.createElement(V.Fragment,null,V.createElement("div",{className:"modal-dialog-bg"}),V.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:a+"px"}},V.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){ae(e);const r=e.clientX-t,o=e.clientY-a;function i(e){ae(e),n(e.clientX-r),l(e.clientY-o)}document.addEventListener("mouseup",(function e(t){ae(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",i,!0)}),!0),document.addEventListener("mousemove",i,!0)}(e)},V.createElement("span",{className:"modal-dialog-title-text"},e.title),V.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},V.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),V.createElement("div",{className:"modal-dialog-content"},e.children),V.createElement("div",{className:"modal-dialog-buttons"},V.createElement(J,{testid:"dialog-ok",onClick:e.onOk},"OK"),V.createElement(J,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Vt=["sun","mon","tue","wed","thu","fri","sat"];function At(e){const[t,n]=A(e.defaultValue||{}),[a,l]=A(!1),r=D();return r.current=t,V.createElement(V.Fragment,null,V.createElement(H,null,V.createElement("span",null,s(r.current)||"No repeat"),V.createElement(J,{onClick:()=>l(!0)},"Edit")),V.createElement(Dt,{visible:a,defaultValue:r.current,onOk:t=>{e.onChange&&e.onChange(t),n(t),l(!1)},onCancel:()=>l(!1)}))}function Dt(e){var t,n;const[a,l]=A(e.defaultValue||{}),r=D();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,V.createElement(Nt,{title:"Timing",visible:e.visible,onOk:()=>e.onOk(a),onCancel:()=>e.onCancel()},V.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},V.createElement(ve,{title:"Starts on",htmlFor:"timing-dialog-start"},V.createElement(pt,{name:"timing-dialog-start",onChange:e=>{return t=e,void l(Object.assign(Object.assign({},r.current),{event:[t]}));var t}})),V.createElement(ve,{title:"Repeat every",htmlFor:"timing-dialog-period"},V.createElement(H,null,V.createElement(U,{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))}),V.createElement(K,{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)},V.createElement("option",{value:"d"},"day"),V.createElement("option",{value:"wk"},"week"),V.createElement("option",{value:"mo"},"month"),V.createElement("option",{value:"a"},"year")))),V.createElement(ve,{title:"Repeat on"},V.createElement(H,null,Vt.map((e=>V.createElement(V.Fragment,{key:e},V.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),V.createElement(nt,{name:"timing-dialog-repeat-"+e,onChange:t=>i(e,t)}))))))))}function It(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?V.createElement(ie,{name:o,defaultValue:i,onChange:e.onChange}):V.createElement(xt,{property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?V.createElement(Rt,Object.assign({elementDefinitionTypes:c},e)):V.createElement(Pt,Object.assign({elementDefinitionType:c[0]},e))}function Rt(e){const t=e.elementDefinitionTypes;let n;e.defaultPropertyType&&(n=t.find((t=>t.code===e.defaultPropertyType))),n||(n=t[0]);const[l,r]=A(n);return V.createElement(H,null,V.createElement(K,{style:{width:"200px"},defaultValue:null==l?void 0:l.code,onChange:e=>{r(t.find((t=>t.code===e)))}},t.map((e=>V.createElement("option",{key:e.code,value:e.code},e.code)))),V.createElement(Pt,Object.assign({},e,{elementDefinitionType:l,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",a(l.code)))}})))}function Pt(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 V.createElement(U,{type:"text",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.date:return V.createElement(U,{type:"date",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.dateTime:case u.instant:return V.createElement(pt,{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 V.createElement(U,{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 V.createElement(ut,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.boolean:return V.createElement(nt,{name:l,testid:l,defaultValue:!!r,onChange:t=>{e.onChange&&e.onChange(t)}});case u.markdown:return V.createElement(gt,{name:l,testid:l,defaultValue:r,onChange:e.onChange});case u.Address:return V.createElement(B,{name:l,defaultValue:r,onChange:e.onChange});case u.Annotation:return V.createElement(tt,{name:l,defaultValue:r,onChange:e.onChange});case u.Attachment:return V.createElement(ce,{name:l,defaultValue:r,onChange:e.onChange});case u.CodeableConcept:return V.createElement(at,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.Coding:return V.createElement(st,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.ContactDetail:return V.createElement(dt,{name:l,defaultValue:r,onChange:e.onChange});case u.ContactPoint:return V.createElement(mt,{name:l,defaultValue:r,onChange:e.onChange});case u.Extension:return V.createElement(Et,{name:l,defaultValue:r,onChange:e.onChange});case u.HumanName:return V.createElement(ft,{name:l,defaultValue:r,onChange:e.onChange});case u.Identifier:return V.createElement(yt,{name:l,defaultValue:r,onChange:e.onChange});case u.Period:return V.createElement(bt,{name:l,defaultValue:r,onChange:e.onChange});case u.Quantity:return V.createElement(Ct,{name:l,defaultValue:r,onChange:e.onChange});case u.Range:return V.createElement(Ot,{name:l,defaultValue:r,onChange:e.onChange});case u.Ratio:return V.createElement(Tt,{name:l,defaultValue:r,onChange:e.onChange});case u.Reference:return V.createElement(St,{name:l,defaultValue:r,targetTypes:Ft(n),onChange:e.onChange});case u.Timing:return V.createElement(At,{name:l,defaultValue:r,onChange:e.onChange});default:return V.createElement(Lt,{typeName:c(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:r,onChange:e.onChange,outcome:e.outcome})}}function Ft(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 Lt(e){var t;const[n,a]=A(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 V.createElement("div",null,i," not implemented");const u={type:i,value:n};return V.createElement(V.Fragment,null,Object.entries(c.properties).map((t=>{const a=t[0];if("id"===a||Re.indexOf(a)>=0)return null;const l=t[1];if(!l.type)return null;const[i,c]=et(u,a);return 1===l.type.length&&"boolean"===l.type[0].code?V.createElement(Ie,{key:a,title:r(a),description:l.definition,htmlFor:a},V.createElement(It,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(Fe(n,a,null!=l?l:a,t[1],e))}})):V.createElement(ve,{key:a,title:r(a),description:l.definition,htmlFor:a,outcome:e.outcome},V.createElement(It,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(Fe(n,a,null!=l?l:a,t[1],e))}}))})))}function Mt(e){var t;return V.createElement("div",{className:"medplum-resource-badge"},V.createElement(Ne,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),V.createElement(wt,{value:e.value,link:e.link}))}function $t(e){var t,n;const l=xe(e.value),r=xe(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 V.createElement("div",{className:"medplum-diagnostic-report"},V.createElement("h1",null,"Diagnostic Report"),V.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&V.createElement("dl",null,V.createElement("dt",null,"Subject"),V.createElement("dd",null,V.createElement(Mt,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>V.createElement("dl",{key:e.reference},V.createElement("dt",null,"Interpreter"),V.createElement("dd",null,V.createElement(Mt,{value:e,link:!0}))))),l.issued&&V.createElement("dl",null,V.createElement("dt",null,"Issued"),V.createElement("dd",null,d(l.issued))),l.status&&V.createElement("dl",null,V.createElement("dt",null,"Status"),V.createElement("dd",null,a(l.status)))),l.result&&V.createElement(qt,{value:l.result}),o&&V.createElement("pre",null,o.trim()))}function qt(e){var t;return V.createElement("table",{className:"medplum-table"},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Test"),V.createElement("th",null,"Value"),V.createElement("th",null,"Reference Range"),V.createElement("th",null,"Interpretation"))),V.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>V.createElement(_t,{key:"obs-"+t,value:e})))))}function _t(e){const t=xe(e.value);return t?V.createElement("tr",null,V.createElement("td",null,V.createElement(we,{to:t},V.createElement(_e,{value:t.code}))),V.createElement("td",null,V.createElement(Ut,{value:t})),V.createElement("td",null,V.createElement(Qt,{value:t.referenceRange})),V.createElement("td",null,t.interpretation&&t.interpretation.length>0&&V.createElement(_e,{value:t.interpretation[0]}))):null}function Ut(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?V.createElement(ze,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?V.createElement(V.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?V.createElement(V.Fragment,null,n.component.map(((e,t)=>V.createElement(Ut,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function Qt(e){const t=e.value&&e.value.length>0&&e.value[0];return t?V.createElement(Be,{value:t}):null}function Ht(){return V.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},V.createElement("div",{className:"medplum-loading-container"},V.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},V.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function Kt(e){return V.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function zt(e){const t=te(),[n,a]=A();if(R((()=>{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?V.createElement("table",{className:"medplum-diff-table"},V.createElement("colgroup",null,V.createElement("col",{style:{width:"30%"}}),V.createElement("col",{style:{width:"35%"}}),V.createElement("col",{style:{width:"35%"}})),V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Property"),V.createElement("th",null,"Before"),V.createElement("th",null,"After"))),V.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]=et(g(e.original),n),[c,u]=et(g(e.revised),n);return Wt(l)&&Wt(c)||i(l)===i(c)?null:V.createElement("tr",{key:n},V.createElement("td",null,r(n)),V.createElement("td",{className:"medplum-diff-removed"},V.createElement(Ze,{property:a,propertyType:o,value:l,ignoreMissingValues:!0})),V.createElement("td",{className:"medplum-diff-added"},V.createElement(Ze,{property:a,propertyType:u,value:c,ignoreMissingValues:!0})))})))):null}function Wt(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function Bt(e){const t=te(),n=xe(e.value),[a,l]=A();return R((()=>{n&&t.requestSchema(n.resourceType).then(l).catch(console.log)}),[t,n]),a&&n?V.createElement($e,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}function Gt(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return V.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},V.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class Yt extends V.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?V.createElement("h1",null,"Something went wrong."):this.props.children}}function Jt(e){const t=D(null),n=$(),a=D();e.visible?void 0===a.current&&(a.current=n):a.current=void 0;const l=D();l.current=e,R((()=>{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]),R((()=>{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"),V.createElement(V.Fragment,null,e.modal&&V.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),V.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:r,"data-testid":"popup"},e.children))}function Xt(e){return V.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function Zt(e){var t,n,a;const[l,r]=A(),o=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return V.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},V.createElement("div",{className:"medplum-timeline-item-header"},V.createElement("div",{className:"medplum-timeline-item-avatar"},V.createElement(Ne,{value:o,link:!0,size:"medium"})),V.createElement("div",{className:"medplum-timeline-item-title"},V.createElement(wt,{value:o,link:!0}),V.createElement("div",{className:"medplum-timeline-item-subtitle"},V.createElement(we,{to:e.resource},d(null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated)),V.createElement("span",null,"·"),V.createElement(we,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&V.createElement("div",{className:"medplum-timeline-item-actions"},V.createElement("a",{href:"#","aria-label":`Actions for ${E(e.resource)}`,onClick:e=>{ae(e);const t=e.currentTarget.getBoundingClientRect();r(t)}},V.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},V.createElement("g",{transform:"translate(-446 -350)"},V.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"})))))),V.createElement(Yt,null,e.padding&&V.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&V.createElement(V.Fragment,null,e.children)),e.socialEnabled&&V.createElement("div",{className:"medplum-timeline-item-footer"},V.createElement(J,{borderless:!0},"Like"),V.createElement(J,{borderless:!0},"Comment")),e.popupMenuItems&&V.createElement(Jt,{visible:!!l,anchor:l,autoClose:!0,onClose:()=>r(void 0)},e.popupMenuItems))}function en(e){e.sort(tn)}function tn(e,t){const n=nn(e),a=nn(t);return n>a?1:n<a?-1:an(e)-an(t)}function nn(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function an(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 ln(e){const t=M(),n=te(),a=n.getProfile(),l=D(null),r=xe(e.value),[o,i]=A(),[c,u]=A([]),s=e.buildSearchRequests,m=D(c);m.current=c;const d=F((()=>{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)}en(t),t.reverse()}u(t)}function h(e){const t=[...m.current,...e];en(t),t.reverse(),u(t)}function v(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function g(e){v(e,"stat").then(d).catch(console.log)}function E(e){v(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 R((()=>{d()}),[d]),r&&o?V.createElement(Xt,null,e.createCommunication&&V.createElement("article",{className:"medplum-timeline-item"},V.createElement("div",{className:"medplum-timeline-item-header"},V.createElement(he,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,r&&e.createCommunication&&n.createResource(e.createCommunication(r,a,o)).then((e=>{h([e])})).catch(console.log);const i=l.current;i&&(i.value="",i.focus())}},V.createElement(U,{name:"text",testid:"timeline-input",inputRef:l}),V.createElement(J,{type:"submit"},"Comment"),V.createElement(oe,{onUpload:function(t){r&&e.createMedia&&n.createResource(e.createMedia(r,a,t)).then((e=>{h([e])})).catch(console.log)}})))),c.map((e=>{var t;if(e.resourceType===r.resourceType&&e.id===r.id)return V.createElement(on,{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 V.createElement(sn,{key:n,resource:e,onDetails:f});case"Communication":return V.createElement(cn,{key:n,resource:e,onPin:"stat"!==e.priority?g:void 0,onUnpin:"stat"===e.priority?E:void 0,onDetails:f,onEdit:y,onDelete:b});case"DiagnosticReport":return V.createElement(mn,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});case"Media":return V.createElement(un,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});default:return V.createElement(Zt,{key:n,resource:e,padding:!0},V.createElement(Bt,{value:e,ignoreMissingValues:!0}))}}))):V.createElement(Ht,null)}function rn(e){return V.createElement(V.Fragment,null,e.onPin&&V.createElement(Kt,{onClick:()=>e.onPin(e.resource),label:`Pin ${E(e.resource)}`},"Pin"),e.onUnpin&&V.createElement(Kt,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${E(e.resource)}`},"Unpin"),e.onDetails&&V.createElement(Kt,{onClick:()=>e.onDetails(e.resource),label:`Details ${E(e.resource)}`},"Details"),e.onEdit&&V.createElement(Kt,{onClick:()=>e.onEdit(e.resource),label:`Edit ${E(e.resource)}`},"Edit"),e.onDelete&&V.createElement(Kt,{onClick:()=>e.onDelete(e.resource),label:`Delete ${E(e.resource)}`},"Delete"))}function on(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?V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(zt,{original:t,revised:e.resource})):V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement("h3",null,"Created"),V.createElement(Bt,{value:e.resource,ignoreMissingValues:!0}))}function cn(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return V.createElement(Zt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.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 un(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 V.createElement(Zt,{resource:e.resource,padding:!!a,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(G,{value:e.resource.content}))}function sn(e){return V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(Gt,null,V.createElement("pre",null,e.resource.outcomeDesc)))}function mn(e){return V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement($t,{value:e.resource}))}function dn(e){return V.createElement(ln,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${E(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${E(e)}&_sort=-_lastUpdated`}}]})})}function pn(e){return V.createElement(ln,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${E(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${E(e)}`}},{request:{method:"GET",url:`Media?encounter=${E(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",encounter:h(e),subject:e.subject,sender:h(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",encounter:h(e),subject:e.subject,operator:h(t),issued:(new Date).toISOString(),content:n})})}function hn(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 V.createElement(Ze,{value:t[0]||"",propertyType:e.propertyType})}function vn(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 gn={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]},En={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 fn(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function yn(e){return fn(e,[])}function bn(e,t){return fn(e,(e.filters||[]).filter((e=>e.code!==t)))}function Cn(e,t,n,a,l){l&&(e=bn(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),fn(e,r)}function kn(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 On(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 Tn(e,t){return Sn(e,t,-1)}function wn(e,t){return Sn(e,t,0)}function jn(e,t){return Sn(e,t,1)}function Sn(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),Pn(e,t,a,l)}function xn(e,t){return An(e,t,-1)}function Nn(e,t){return An(e,t,0)}function Vn(e,t){return An(e,t,1)}function An(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),Pn(e,t,a,l)}function Dn(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return Pn(e,t,n,new Date)}function In(e,t,n){return Pn(e,t,n,n)}function Rn(e,t,n,a){return Fn(e=bn(e,t),t,n,a)}function Pn(e,t,n,a){return e=Fn(e=bn(e,t),t,b.GREATER_THAN_OR_EQUALS,n),e=Fn(e,t,b.LESS_THAN_OR_EQUALS,a)}function Fn(e,t,n,a){return Cn(e,t,n,a.toISOString())}function Ln(e,t,n=!0){return Cn(e,t,b.MISSING,n.toString())}function Mn(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function $n(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function qn(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 $n(e,Math.max(r,0))}function _n(e,t,n){return t===Qn(e)&&void 0!==n&&n===Hn(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Un(e,t){let n=!1;return Qn(e)===t&&(n=!Hn(e)),_n(e,t,n)}function Qn(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Hn(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Kn(e){return gn[e.type]}function zn(e){var t;return null!==(t=En[e])&&void 0!==t?t:""}function Wn(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 Bn(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]=et({type:e.resourceType,value:e},r);if(!o)return null;return V.createElement(Ze,{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 V.createElement(Ze,{propertyType:a[0].type,value:a[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return V.createElement(V.Fragment,null,a.map(((e,t)=>V.createElement("span",{key:`${t}-${a.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function Gn(e){var t;const[n,a]=A({search:JSON.parse(i(e.search))}),l=D(null),r=D(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(R((()=>{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(Wn(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=Wn(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(Wn(l)))}return t}(m).filter((e=>!(null==d?void 0:d.includes(e)))).sort();return V.createElement(Nt,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(n.search),onCancel:e.onCancel},V.createElement("div",null,V.createElement("table",{style:{margin:"auto"}},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",{colSpan:2,align:"center"},"Available"),V.createElement("th",{colSpan:2,align:"center"},"Selected"))),V.createElement("tbody",null,V.createElement("tr",null,V.createElement("td",{colSpan:2,align:"center"},V.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=>V.createElement("option",{key:e,value:e},Wn(e)))))),V.createElement("td",{colSpan:2,align:"center"},V.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=>V.createElement("option",{key:e,value:e},Wn(e)))))))),V.createElement("tfoot",null,V.createElement("tr",null,V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:o},"Add")),V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:c},"Remove")),V.createElement("td",{align:"center"},V.createElement(J,{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")),V.createElement("td",{align:"center"},V.createElement(J,{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 Yn(e){var t,n;const a=null===(n=null===(t=te().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)?V.createElement(wt,{value:{reference:l.value}}):"_lastUpdated"===e.filter.code||"datetime"===(null==a?void 0:a.type)?V.createElement(V.Fragment,null,d(l.value)):V.createElement(V.Fragment,null,l.value)}function Jn(e){var t;const n="filter-value";switch(y(e.schema,e.resourceType,e.searchParam).type){case k.REFERENCE:return V.createElement(St,{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 V.createElement(nt,{name:n,testid:n,defaultValue:"true"===e.defaultValue,onChange:t=>e.onChange(t.toString())});case k.DATE:return V.createElement(U,{type:"date",testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.DATETIME:return V.createElement(pt,{testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.NUMBER:return V.createElement(U,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case k.QUANTITY:return V.createElement(Ct,{name:n,defaultValue:Xn(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return V.createElement(U,{testid:n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function Xn(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function Zn(e){const[t,n]=A(JSON.parse(i(e.search))),[a,l]=A(-1),r=D(t);if(r.current=t,R((()=>{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 V.createElement(Nt,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(r.current),onCancel:e.onCancel},V.createElement("div",{className:"medplum-filter-editor"},V.createElement("table",{className:"medplum-filter-editor-table"},V.createElement("colgroup",null,V.createElement("col",{style:{width:200}}),V.createElement("col",{style:{width:200}}),V.createElement("col",{style:{width:380}}),V.createElement("col",{style:{width:120}})),V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Field"),V.createElement("th",null,"Operation"),V.createElement("th",null,"Value"),V.createElement("th",null,"Actions"))),V.createElement("tbody",null,s.map(((e,t)=>t===a?V.createElement(ta,{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(fn(r.current,a)),l(-1)},onCancel:()=>l(-1)}):V.createElement(ea,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>l(t),onDelete:()=>n(On(r.current,t))}))),V.createElement(ta,{schema:o,resourceType:c,searchParams:u,okText:"Add",onOk:function(e){n(Cn(r.current,e.code,e.operator,e.value))}})))))}function ea(e){const{filter:t}=e;return V.createElement("tr",null,V.createElement("td",null,Wn(t.code)),V.createElement("td",null,zn(t.operator)),V.createElement("td",null,V.createElement(Yn,{resourceType:e.resourceType,filter:t})),V.createElement("td",null,V.createElement(J,{size:"small",onClick:e.onEdit},"Edit"),V.createElement(J,{size:"small",onClick:e.onDelete},"Delete")))}function ta(e){var t;const[n,a]=A(null!==(t=e.defaultValue)&&void 0!==t?t:{}),l=D(n);l.current=n;const r=e.searchParams[n.code],o=r&&Kn(r);return V.createElement("tr",null,V.createElement("td",null,V.createElement(K,{testid:"filter-field",defaultValue:l.current.code,onChange:function(e){a(Object.assign(Object.assign({},l.current),{code:e}))}},V.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>V.createElement("option",{key:e,value:e},Wn(e)))))),V.createElement("td",null,o&&V.createElement(K,{testid:"filter-operation",defaultValue:n.operator,onChange:function(e){a(Object.assign(Object.assign({},l.current),{operator:e}))}},V.createElement("option",{value:""}),o.map((e=>V.createElement("option",{key:e,value:e},zn(e)))))),V.createElement("td",null,r&&n.operator&&V.createElement(Jn,{schema:e.schema,resourceType:e.resourceType,searchParam:r,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},l.current),{value:e}))}})),V.createElement("td",null,n.code&&n.operator&&n.value&&V.createElement(J,{size:"small",onClick:()=>{e.onOk(l.current),a({})}},e.okText),e.onCancel&&V.createElement(J,{size:"small",onClick:e.onCancel},"Cancel")))}function na(e){var t;const[n,a]=A(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 V.createElement(Nt,{title:e.title,visible:e.visible,onOk:l,onCancel:e.onCancel},V.createElement("div",{style:{width:500}},V.createElement(he,{onSubmit:l},V.createElement(Jn,{schema:e.schema,resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))))}function aa(){return V.createElement("div",{className:"medplum-menu-separator"})}function la(e){const[t,n]=A(!1),[a,l]=A(!1),[r,o]=A(void 0),i=D(null),c=D(!1);c.current=t;const u=D(!1);function s(){const e=i.current;e&&(o(e.getBoundingClientRect()),l(!0))}return u.current=a,R((()=>{const e=window.setInterval((()=>{!u.current&&c.current?s():u.current&&!c.current&&l(!1)}),150);return()=>window.clearInterval(e)}),[]),V.createElement("div",{ref:i,className:"medplum-menu-item medplum-submenu-item",onClick:()=>s(),onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1)},e.title,V.createElement("span",{className:"medplum-submenu-arrow"},"►"),V.createElement(Jt,{visible:a,anchor:r,autoClose:!0,onClose:()=>l(!1)},e.children))}function ra(e){if(!e.searchParams)return null;function t(t,n){l(_n(e.search,t.code,n))}function n(t){l(bn(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?V.createElement(Jt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},V.createElement(oa,{search:e.search,searchParam:e.searchParams[0],onSort:t,onPrompt:a,onChange:l,onClear:n})):V.createElement(Jt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},e.searchParams.map((r=>V.createElement(la,{key:r.code,title:Wn(r.code)},V.createElement(oa,{search:e.search,searchParam:r,onSort:t,onPrompt:a,onChange:l,onClear:n})))))}function oa(e){switch(e.searchParam.type){case"date":return V.createElement(ia,Object.assign({},e));case"number":case"quantity":return V.createElement(ca,Object.assign({},e));case"reference":return V.createElement(ua,Object.assign({},e));case"string":case"token":case"uri":return V.createElement(sa,Object.assign({},e));default:return V.createElement(V.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function ia(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),V.createElement(Kt,{onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.ENDS_BEFORE)},"Before..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.STARTS_AFTER)},"After..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Between..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(jn(e.search,n))},"Tomorrow"),V.createElement(Kt,{onClick:()=>e.onChange(wn(e.search,n))},"Today"),V.createElement(Kt,{onClick:()=>e.onChange(Tn(e.search,n))},"Yesterday"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Vn(e.search,n))},"Next Month"),V.createElement(Kt,{onClick:()=>e.onChange(Nn(e.search,n))},"This Month"),V.createElement(Kt,{onClick:()=>e.onChange(xn(e.search,n))},"Last Month"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Dn(e.search,n))},"Year to date"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ca(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),V.createElement(Kt,{onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.GREATER_THAN)},"Greater than..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.LESS_THAN)},"Less than..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ua(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function sa(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onSort(t,!1)},"Sort A to Z"),V.createElement(Kt,{onClick:()=>e.onSort(t,!0)},"Sort Z to A"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.CONTAINS)},"Contains..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Does not contain..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ma(e){return V.createElement("div",{className:"medplum-title-bar"},e.children)}class da extends Event{constructor(e){super("change"),this.definition=e}}class pa extends Event{constructor(e){super("load"),this.response=e}}class ha extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function va(e){var t,n,a,l;const r=te(),[o,i]=A(),[c,u]=A(),{search:s,onLoad:m}=e,[d,p]=A({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParams:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),h=D(d);function v(t){e.onChange&&e.onChange(new da(t))}function g(t,n){le(t.target)||(ae(t),1!==t.button&&e.onClick&&e.onClick(new ha(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new ha(n,t)))}h.current=d,R((()=>{u(void 0),r.search(s.resourceType,O(Object.assign(Object.assign({},s),{total:"accurate"}))).then((e=>{p(Object.assign(Object.assign({},h.current),{searchResponse:e})),m&&m(new pa(e))})).catch((e=>{p(Object.assign(Object.assign({},h.current),{searchResponse:void 0})),u(e)}))}),[r,s,m]),R((()=>{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 V.createElement(Ht,null);const E=e.checkboxesEnabled,f=function(e,t){const n=t.resourceType,a=[];for(const l of t.fields||["id","_lastUpdated"])a.push(vn(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)),j=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 V.createElement("div",{className:"medplum-search-control",onContextMenu:e=>ae(e),"data-testid":"search-control"},!e.hideToolbar&&V.createElement(ma,null,V.createElement("div",null,V.createElement("h1",null,V.createElement("a",{href:`https://www.hl7.org/fhir/${y.toLowerCase()}.html`,target:"_blank",rel:"noopener"},y)),j&&V.createElement(K,{testid:"saved-search-select",style:{width:80},onChange:e=>{v(T(e))}},V.createElement("option",null),j.map(((e,t)=>V.createElement("option",{key:`${t}-${j.length}`,value:e.criteria},e.name)))),V.createElement(J,{testid:"fields-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},h.current),{fieldEditorVisible:!0}))},"Fields"),V.createElement(J,{testid:"filters-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},h.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&V.createElement(J,{size:"small",onClick:e.onNew},"New..."),e.onExport&&V.createElement(J,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&V.createElement(J,{size:"small",onClick:()=>e.onDelete(Object.keys(d.selected))},"Delete..."),e.onBulk&&V.createElement(J,{size:"small",onClick:()=>e.onBulk(Object.keys(d.selected))},"Bulk...")),b&&V.createElement("div",null,V.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:w))}(s,b.total)," of"," ",null===(l=b.total)||void 0===l?void 0:l.toLocaleString()),V.createElement(J,{testid:"prev-page-button",size:"small",onClick:()=>v(qn(s,-1))},"<<"),V.createElement(J,{testid:"next-page-button",size:"small",onClick:()=>v(qn(s,1))},">>"))),V.createElement("table",null,V.createElement("thead",null,V.createElement("tr",null,E&&V.createElement("th",{className:"medplum-search-icon-cell"},V.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=h.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=h.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({},h.current),{selected:a}))}(e)})),f.map((e=>V.createElement("th",{key:e.name,onClick:t=>function(e,t){p(Object.assign(Object.assign({},h.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParams:t}))}(t,e.searchParams)},Wn(e.name),e.searchParams&&V.createElement(fa,null))))),!e.hideFilters&&V.createElement("tr",null,E&&V.createElement("th",{className:"filters medplum-search-icon-cell"}),f.map((t=>V.createElement("th",{key:t.name,className:"filters"},t.searchParams&&V.createElement(Ea,{resourceType:y,searchParams:t.searchParams,filters:e.search.filters})))))),V.createElement("tbody",null,null==k?void 0:k.map((e=>e&&V.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>g(t,e),onAuxClick:t=>g(t,e)},E&&V.createElement("td",{className:"medplum-search-icon-cell"},V.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({},h.current.selected);n?a[t]=!0:delete a[t],p(Object.assign(Object.assign({},h.current),{selected:a}))}(t,e.id)})),f.map((t=>V.createElement("td",{key:t.name},Bn(e,t))))))))),0===(null==k?void 0:k.length)&&V.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),c&&V.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},V.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),V.createElement(ra,{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({},h.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{v(e),p(Object.assign(Object.assign({},h.current),{popupVisible:!1,popupSearchParams:void 0}))},onClose:()=>{p(Object.assign(Object.assign({},h.current),{popupVisible:!1,popupSearchParams:void 0}))}}),V.createElement(Gn,{schema:o,search:e.search,visible:h.current.fieldEditorVisible,onOk:e=>{v(e),p(Object.assign(Object.assign({},h.current),{fieldEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},h.current),{fieldEditorVisible:!1}))}}),V.createElement(Zn,{schema:o,search:e.search,visible:h.current.filterEditorVisible,onOk:e=>{v(e),p(Object.assign(Object.assign({},h.current),{filterEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},h.current),{filterEditorVisible:!1}))}}),V.createElement(na,{visible:h.current.filterDialogVisible,title:"Input",schema:o,resourceType:y,searchParam:d.filterDialogSearchParam,filter:d.filterDialogFilter,defaultValue:"",onOk:t=>{v(Cn(e.search,t.code,t.operator,t.value)),p(Object.assign(Object.assign({},h.current),{filterDialogVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},h.current),{filterDialogVisible:!1}))}}))}const ga=V.memo(va);function Ea(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?V.createElement("span",null,"no filters"):V.createElement(V.Fragment,null,n.map(((t,a)=>V.createElement("div",{key:`filter-${a}-${n.length}`},zn(t.operator)," ",V.createElement(Yn,{resourceType:e.resourceType,filter:t})))))}function fa(){return V.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},V.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function ya(e){var t,n,a,l,r;const o=te(),[i,c]=A(),[u,s]=A(),{query:m,fields:d}=e,[p,h]=A(),[v,g]=A({}),E=D();E.current=p;const f=D({});function y(t,n){le(t.target)||(ae(t),1!==t.button&&e.onClick&&e.onClick(new ha(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new ha(n,t)))}f.current=v,R((()=>{s(void 0),o.graphql(m).then(h).catch(s)}),[o,m]),R((()=>{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 V.createElement(Ht,null);const b=e.checkboxesEnabled;return V.createElement("div",{className:"medplum-search-control",onContextMenu:e=>ae(e),"data-testid":"search-control"},V.createElement("table",null,V.createElement("thead",null,V.createElement("tr",null,b&&V.createElement("th",{className:"medplum-search-icon-cell"},V.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=E.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=E.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)})),g(l)}(e)})),d.map((e=>V.createElement("th",{key:e.name},e.name))))),V.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&&V.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},b&&V.createElement("td",{className:"medplum-search-icon-cell"},V.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!v[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],g(a)}(t,e.id)})),d.map((t=>V.createElement("td",{key:t.name},V.createElement(hn,{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)&&V.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&V.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},V.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&V.createElement(J,{size:"small",onClick:()=>e.onBulk(Object.keys(f.current))},"Bulk..."))}const ba=V.memo(ya);function Ca(e){return V.createElement("div",{className:"medplum-footer"},e.children)}function ka(e){const t=te();return V.createElement(De,{loadOptions:(e,n)=>se(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)=>Oa(n,t)-Oa(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(j(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=>V.createElement(Ne,{value:e}),getDisplay:e=>V.createElement(wt,{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 Oa(e,t){let n=0;if(e.identifier)for(const a of e.identifier)n=Math.max(n,Ta(a.value,t));if("Patient"===e.resourceType&&e.name)for(const a of e.name)n=Math.max(n,Ta(o(a),t));return n}function Ta(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}function wa(e){var t,n,a,l,r,o;const i=M(),c=$(),u=ee(),s=u.medplum,m=s.getLogins(),[d,p]=A(!1),[h,v]=A(!1);return V.createElement(V.Fragment,null,V.createElement("header",{role:"banner","data-testid":"header",style:{background:e.bgColor}},V.createElement("div",null,V.createElement(we,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>v(!h)},V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},V.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"}))),V.createElement(we,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},e.title||"Medplum"),u.profile&&V.createElement(ka,{key:`header-input-${c.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>i(`/${e.resourceType}/${e.id}`)})),u.profile&&V.createElement("div",{className:"medplum-nav-menu-container"},V.createElement(we,{testid:"header-profile-menu-button",onClick:()=>p(!0)},V.createElement(Ne,{size:"small",color:"#f68d42",value:u.profile})),V.createElement(Jt,{visible:d,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>p(!1)},V.createElement("div",{className:"medplum-nav-menu"},V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement(Ne,{size:"large",value:u.profile})),V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},V.createElement(He,{value:null===(n=null===(t=u.profile)||void 0===t?void 0:t.name)||void 0===n?void 0:n[0]})),V.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),V.createElement(J,{testid:"header-profile-link",onClick:()=>{p(!1),e.onProfile&&e.onProfile()}},"Manage your account")),m.length>1&&V.createElement("div",null,V.createElement("hr",null),m.map((e=>{var t,n,a,l;return(null===(t=e.profile)||void 0===t?void 0:t.reference)!==E(u.profile)&&V.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)}},V.createElement("div",{className:"medplum-nav-menu-profile-icon"},V.createElement(Ne,null)),V.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(a=e.profile)||void 0===a?void 0:a.display,V.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(l=e.project)||void 0===l?void 0:l.display)))}))),V.createElement("hr",null),V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement(J,{testid:"header-add-account-button",onClick:()=>{i("/signin")}},"Add another account")),V.createElement("hr",null),V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement(J,{testid:"header-signout-button",onClick:()=>{p(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),V.createElement("hr",null),V.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},V.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),V.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),V.createElement(Jt,{modal:!0,autoClose:!0,visible:h,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>v(!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 V.createElement(V.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},V.createElement("h5",null,t.title),V.createElement("ul",null,null===(r=t.link)||void 0===r?void 0:r.map((e=>V.createElement("li",{key:e.target},V.createElement(we,{to:e.target},e.name))))))})),V.createElement("h5",null,"Settings"),V.createElement("ul",null,V.createElement("li",null,V.createElement(we,{to:u.profile},"Profile")),V.createElement("li",null,V.createElement(we,{to:"/changepassword"},"Change password")))))}const ja=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function Sa(e){return V.createElement(ln,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:ja.map((t=>({request:{method:"GET",url:t.replaceAll("$",E(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",subject:h(e),sender:h(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",subject:h(e),operator:h(t),issued:(new Date).toISOString(),content:n})})}function xa(e){const t=te(),n=xe(e.value),[a,l]=A(void 0),[r,o]=A(),[i,c]=A(),[u,s]=A();function m(){c(void 0)}function d(){o(void 0)}const p=D();if(p.current=u,R((()=>{t.requestSchema("PlanDefinition").then(l).catch(console.log)}),[t]),R((()=>{var e;return s((e=null!=n?n:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:$a(e.action)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),!a||!u)return null;function h(e,t){s(Object.assign(Object.assign({},p.current),{[e]:t}))}return V.createElement("div",{className:"medplum-questionnaire-builder"},V.createElement(he,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(u)},V.createElement(ve,{title:"Plan Title",htmlFor:"title"},V.createElement(U,{defaultValue:u.title,onChange:e=>h("title",e)})),V.createElement(Na,{actions:u.action||[],selectedKey:r,setSelectedKey:o,hoverKey:i,setHoverKey:c,onChange:e=>h("action",e)}),V.createElement(J,{type:"submit",size:"large"},"Save")))}function Na(e){const t=D();function n(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,V.createElement("div",{className:"section"},e.actions.map((a=>V.createElement("div",{key:a.id},V.createElement(Va,{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}})))),V.createElement("div",{className:"bottom-actions"},V.createElement("a",{href:"#",onClick:n=>{var a;ae(n),a={id:Ma()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function Va(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 V.createElement("div",{"data-testid":t.id,className:r,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){ae(t),e.setHoverKey(e.action.id)}},a?V.createElement(Ia,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):V.createElement(Da,{action:t,actionType:n}),V.createElement("div",{className:"bottom-actions"},V.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const Aa={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Da(e){const{action:t,actionType:n}=e,[a,l]=Fa(t);return V.createElement("div",null,V.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&V.createElement("div",null,V.createElement(Je,{value:{reference:t.definitionCanonical}})),a&&V.createElement("div",null,V.createElement(Ze,{property:Aa,propertyType:l,value:a})))}function Ia(e){const{action:t}=e,[n,a]=A(e.actionType);function l(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return V.createElement(V.Fragment,null,V.createElement(ve,{title:"Title",htmlFor:`actionTitle-${t.id}`},V.createElement(U,{name:`actionTitle-${t.id}`,defaultValue:t.title,onChange:e=>l("title",e)})),V.createElement(ve,{title:"Type of Action",description:"The type of the action to be performed.",htmlFor:`actionType-${t.id}`},V.createElement(K,{name:`actionType-${t.id}`,defaultValue:n,onChange:a},V.createElement("option",null),V.createElement("option",{value:"appointment"},"Appointment"),V.createElement("option",{value:"lab"},"Lab"),V.createElement("option",{value:"questionnaire"},"Questionnaire"),V.createElement("option",{value:"task"},"Task"))),t.action&&t.action.length>0&&V.createElement(Na,{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 V.createElement(Ra,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return V.createElement(Ra,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return V.createElement(Ra,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return V.createElement(Ra,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),V.createElement(ve,{title:"Timing",description:"When the action should take place.",htmlFor:"timing-"+t.id},V.createElement(Pa,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function Ra(e){const{id:t,definitionCanonical:n}=e.action,a=(null==n?void 0:n.startsWith(e.resourceType+"/"))?{reference:n}:void 0;return V.createElement(ve,{title:e.title,description:e.description,htmlFor:t},V.createElement(jt,{name:t,resourceType:e.resourceType,defaultValue:a,loadOnFocus:!0,onChange:t=>{t?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:E(t)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}}))}function Pa(e){const t=e.action,n="timing",[a,l]=Fa(t);return V.createElement(It,{property:Aa,name:"timing[x]",defaultValue:a,defaultPropertyType:l,onChange:(a,l)=>{e.onChange(Fe(t,n,null!=l?l:n,Aa,a))}})}function Fa(e){return et({type:"PlanDefinitionAction",value:e},"timing")}let La=1;function Ma(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(La=Math.max(La,t+1))}return e}return"id-"+La++}function $a(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:Ma(e.id),action:$a(e.action)})))}var qa;function _a(e,t){return Object.assign(Object.assign({},e),{item:Ua(e.item,t)})}function Ua(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:Ua(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 Qa(e){return"choice"===e.type||"open-choice"===e.type}function Ha(e){const t=te(),n=t.getProfile(),[a,l]=A(),r=xe(e.questionnaire),[o,i]=A(),[c,u]=A({});return R((()=>{t.requestSchema("Questionnaire").then((()=>t.requestSchema("QuestionnaireResponse"))).then(l).catch(console.log)}),[t]),R((()=>{i(r?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:E(e),item:Ga(e.item)}}(r):void 0)}),[r]),a&&r?V.createElement(he,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:E(r),subject:e.subject,source:h(n),authored:(new Date).toISOString()}))}},r.title&&V.createElement("h1",null,r.title),r.item&&V.createElement(Ka,{items:r.item,answers:c,onChange:function(e){const t={resourceType:"QuestionnaireResponse",item:e};i(t),u(x(t))}}),V.createElement(J,{type:"submit",size:"large"},e.submitButtonText||"OK")):null}function Ka(e){const[t,n]=A(Ga(e.items));function a(a,l){const r=t.slice();r[a]=l,n(r),e.onChange(r)}return V.createElement(V.Fragment,null,e.items.map(((t,n)=>{if(!Xa(t,e.answers))return null;if(t.type===qa.display)return V.createElement("p",{key:t.linkId},t.text);if(t.type===qa.group)return V.createElement(za,{key:t.linkId,item:t,answers:e.answers,onChange:e=>a(n,e)});if(t.type===qa.boolean){const e=t.initial&&t.initial.length>0?t.initial[0]:void 0;return V.createElement(Ie,{key:t.linkId,title:t.text,htmlFor:t.linkId},V.createElement(nt,{name:t.linkId,defaultValue:null==e?void 0:e.valueBoolean,onChange:e=>a(n,{linkId:t.linkId,text:t.text,answer:[{valueBoolean:e}]})}))}return V.createElement(ve,{key:t.linkId,htmlFor:t.linkId,title:t.text||""},V.createElement(za,{item:t,answers:e.answers,onChange:e=>a(n,e)}))})))}function za(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 qa.group:return V.createElement("div",null,V.createElement("h3",null,t.text),t.item&&V.createElement(Ka,{items:t.item,answers:e.answers,onChange:function(n){e.onChange({linkId:t.linkId,text:t.text,item:n})}}));case qa.boolean:return V.createElement(nt,{name:a,defaultValue:null==l?void 0:l.valueBoolean,onChange:e=>r({valueBoolean:e})});case qa.decimal:return V.createElement(U,{type:"number",step:"any",name:a,defaultValue:null==l?void 0:l.valueDecimal,onChange:e=>r({valueDecimal:parseFloat(e)})});case qa.integer:return V.createElement(U,{type:"number",step:1,name:a,defaultValue:null==l?void 0:l.valueInteger,onChange:e=>r({valueInteger:parseInt(e)})});case qa.date:return V.createElement(U,{type:"date",name:a,defaultValue:null==l?void 0:l.valueDate,onChange:e=>r({valueDate:e})});case qa.dateTime:return V.createElement(pt,{type:"datetime-local",name:a,defaultValue:null==l?void 0:l.valueDateTime,onChange:e=>r({valueDateTime:e})});case qa.time:return V.createElement(U,{type:"time",name:a,defaultValue:null==l?void 0:l.valueTime,onChange:e=>r({valueTime:e})});case qa.string:return V.createElement(U,{type:"text",name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case qa.text:return V.createElement(gt,{name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case qa.url:return V.createElement(U,{type:"url",name:a,defaultValue:null==l?void 0:l.valueUri,onChange:e=>r({valueUri:e})});case qa.attachment:return V.createElement(ce,{name:a,defaultValue:null==l?void 0:l.valueAttachment,onChange:e=>r({valueAttachment:e})});case qa.reference:return V.createElement(St,{name:a,defaultValue:null==l?void 0:l.valueReference,onChange:e=>r({valueReference:e})});case qa.quantity:return V.createElement(Ct,{name:a,defaultValue:null==l?void 0:l.valueQuantity,onChange:e=>r({valueQuantity:e})});case qa.choice:case qa.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)?V.createElement(Wa,{name:a,item:t,initial:l,onChangeAnswer:r}):V.createElement(Ba,{name:a,item:t,initial:l,onChangeAnswer:r})}return null}function Wa(e){const{name:t,item:n,initial:r}=e,o=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],c=p({type:"QuestionnaireItemInitial",value:r},"value");return V.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})}},V.createElement("option",null),n.answerOption&&n.answerOption.map(((e,n)=>{const a=p({type:"QuestionnaireItemAnswerOption",value:e},"value"),l=`${t}-option-${n}`;return V.createElement("option",{key:l,value:a.value,selected:c&&i(a)===i(c)},V.createElement(Ze,{property:o,propertyType:a.type,value:a.value}))})))}function Ba(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 V.createElement(V.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 V.createElement("div",{key:s,className:"medplum-questionnaire-option-row"},V.createElement("div",{className:"medplum-questionnaire-option-checkbox"},V.createElement("input",{type:"radio",id:s,name:t,value:l.value,defaultChecked:u&&i(l)===i(u),onChange:()=>o({[r]:l.value})})),V.createElement("div",null,V.createElement("label",{htmlFor:s},V.createElement(Ze,{property:c,propertyType:l.type,value:l.value}))))})))}function Ga(e){var t;return null!==(t=null==e?void 0:e.map(Ya))&&void 0!==t?t:[]}function Ya(e){var t,n;return{linkId:e.linkId,text:e.text,item:Ga(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Ja))&&void 0!==n?n:[]}}function Ja(e){return Object.assign({},e)}function Xa(e,t){if(!e.enableWhen)return!0;const n=e.enableBehavior||"any";for(const a of e.enableWhen){const e=p({type:"QuestionnaireItemEnableWhen",value:a},"answer[x]"),l=p({type:"QuestionnaireResponseItemAnswer",value:t[a.question]},"value[x]"),r=S(e,l);if("any"===n&&r)return!0;if("all"===n&&!r)return!1}return"any"!==n}function Za(e){const t=te(),n=xe(e.questionnaire),[a,l]=A(),[r,o]=A(),[i,c]=A(),[u,s]=A();function m(){s(void 0)}function d(){c(void 0)}return R((()=>{t.requestSchema("Questionnaire").then(l).catch(console.log)}),[t]),R((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||rl(),item:ol(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&r?V.createElement("div",{className:"medplum-questionnaire-builder"},V.createElement(he,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(r)},V.createElement(el,{item:r,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),V.createElement(J,{type:"submit",size:"large"},"Save"))):null}function el(e){var t;const n=e.item,a=e.item,l="resourceType"in e.item,r=l||a.type===qa.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=D();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 V.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){ae(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){ae(t),e.setHoverKey(e.item.id)}},i?V.createElement(V.Fragment,null,l&&V.createElement("div",null,V.createElement(U,{defaultValue:n.title,onChange:e=>d("title",e)})),!r&&V.createElement("div",null,V.createElement(K,{defaultValue:a.type,onChange:e=>d("type",e)},V.createElement("option",{value:"display"},"Display"),V.createElement("optgroup",{label:"Question"},V.createElement("option",{value:"boolean"},"Boolean"),V.createElement("option",{value:"decimal"},"Decimal"),V.createElement("option",{value:"integer"},"Integer"),V.createElement("option",{value:"date"},"Date"),V.createElement("option",{value:"dateTime"},"Date/Time"),V.createElement("option",{value:"time"},"Time"),V.createElement("option",{value:"string"},"String"),V.createElement("option",{value:"text"},"Text"),V.createElement("option",{value:"url"},"URL"),V.createElement("option",{value:"choice"},"Choice"),V.createElement("option",{value:"open-choice"},"Open Choice"),V.createElement("option",{value:"attachment"},"Attachment"),V.createElement("option",{value:"reference"},"Reference"),V.createElement("option",{value:"quantity"},"Quantity")))),!l&&V.createElement(gt,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e)}),Qa(a)&&V.createElement(tl,{options:a.answerOption,onChange:e=>d("answerOption",e)})):V.createElement(V.Fragment,null,n.title&&V.createElement("h1",null,n.title),a.text&&V.createElement("p",null,a.text),!r&&V.createElement(za,{item:a,answers:{},onChange:()=>{}})),a.item&&a.item.map((t=>V.createElement("div",{key:t.id},V.createElement(el,{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&&V.createElement("div",{className:"top-actions"},i?V.createElement(U,{defaultValue:a.linkId,onChange:e=>d("linkId",e),size:4}):V.createElement("div",null,o)),V.createElement("div",{className:"bottom-actions"},r&&V.createElement(V.Fragment,null,V.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:rl(),linkId:ll("q"),type:"string",text:"Question"})}},"Add item"),V.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:rl(),linkId:ll("g"),type:"group",text:"Group"})}},"Add group")),!l&&V.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function tl(e){var t;const n=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],a=null!==(t=e.options)&&void 0!==t?t:[];return V.createElement("div",null,a.map((t=>{const[l,r]=et({type:"QuestionnaireItemAnswerOption",value:t},"value");return V.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},V.createElement("div",null,V.createElement(It,{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)}})),V.createElement("div",null,V.createElement("a",{href:"#",onClick:n=>{ae(n),e.onChange(a.filter((e=>e.id!==t.id)))}},"Remove")))})),V.createElement("a",{href:"#",onClick:t=>{ae(t),e.onChange([...a,{id:rl()}])}},"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"}(qa||(qa={}));let nl=1,al=1;function ll(e){return e+nl++}function rl(){return"id-"+al++}function ol(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||rl(),item:ol(e.item),answerOption:il(e.answerOption)})))}function il(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||rl()})))}function cl(e){return V.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function ul(e){var t;const n=te(),a=xe(e.value),[l,r]=A(!1),[o,i]=A();return R((()=>{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?V.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===E(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 V.createElement("div",{className:"medplum-request-group-task",key:`action-${n}`},V.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==s?void 0:s.status)?"🗹":"☐"),V.createElement("div",{className:"medplum-request-group-task-details"},V.createElement("div",{className:"medplum-request-group-task-title"},t.title),V.createElement("div",null,"Last edited by ",V.createElement(wt,{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)),V.createElement("div",null,"Status: ",V.createElement(cl,{status:(null==s?void 0:s.status)||"unknown"}))),V.createElement("div",{className:"medplum-request-group-task-actions"},m&&!p&&V.createElement(J,{onClick:()=>e.onStart(s,m)},"Start"),m&&p&&V.createElement(J,{onClick:()=>e.onEdit(s,m,p)},"Edit")))}))):null}function sl(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 h=p-l,v={i:p,j:h,prev:ml(d),snake:!1};for(;p<n&&h<a&&e[p]===t[h];)p++,h++;if(p>v.i&&(v={i:p,j:h,prev:v,snake:!0}),i[c]=v,p>=n&&h>=a)return i[c]}i[o+r-1]=void 0}return}(e,t),e,t)}function ml(e){return e&&!e.snake&&e.prev?e.prev:e}function dl(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=sl(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 pl(e){var t,n;const a=te(),[l,r]=A(e.history);if(R((()=>{!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 V.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=dl(l);return V.createElement("div",{className:"medplum-blame-container"},V.createElement("table",{className:"medplum-blame"},V.createElement("tbody",null,i.map(((e,t)=>V.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&V.createElement("td",{className:"details",rowSpan:e.span},V.createElement(H,{justifyContent:"space-between"},V.createElement(Mt,{value:e.meta.author,size:"xsmall",link:!0}),V.createElement(we,{to:hl(o,e.meta.versionId)},vl(e.meta.lastUpdated)))),V.createElement("td",{className:"line-number"},t+1),V.createElement("td",{className:"line"},V.createElement("pre",{className:"line-pre"},e.value))))))))}function hl(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function vl(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return gl(n,"year");const a=Math.floor(t/2592e3);if(a>0)return gl(a,"month");const l=Math.floor(t/86400);if(l>0)return gl(l,"day");const r=Math.floor(t/3600);if(r>0)return gl(r,"hour");const o=Math.floor(t/60);return o>0?gl(o,"minute"):gl(t,"second")}function gl(e,t){return`${e} ${1===e?t:t+"s"} ago`}function El(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=sl(i(t,!0).match(/[^\r\n]+/g),i(n,!0).match(/[^\r\n]+/g));return V.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>V.createElement(fl,{key:"delta"+t,delta:e}))))}function fl(e){return V.createElement(V.Fragment,null,"...",V.createElement("br",null),e.delta.original.lines.length>0&&V.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&V.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",V.createElement("br",null))}function yl(e){var t;const n=te(),[a,l]=A(e.history);return R((()=>{!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?V.createElement("table",{className:"medplum-table"},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Author"),V.createElement("th",null,"Date"),V.createElement("th",null,"Version"))),V.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map(((e,t)=>V.createElement(bl,{key:"entry-"+t,entry:e}))))):V.createElement("div",null,"Loading...")}function bl(e){var t,n,a;const{response:l,resource:r}=e.entry;return r?V.createElement("tr",null,V.createElement("td",null,V.createElement(Mt,{value:null===(t=r.meta)||void 0===t?void 0:t.author,link:!0})),V.createElement("td",null,d(null===(n=r.meta)||void 0===n?void 0:n.lastUpdated)),V.createElement("td",null,V.createElement(we,{to:Cl(r)},null===(a=r.meta)||void 0===a?void 0:a.versionId))):V.createElement("tr",null,V.createElement("td",{colSpan:3},N(null==l?void 0:l.outcome)))}function Cl(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function kl(e){const{onChangeMonth:t,onClick:n}=e,[a,l]=A(Ol);function r(e){l((n=>{const a=new Date(n.getTime());return a.setMonth(n.getMonth()+e),t(a),a}))}const o=L((()=>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:Tl(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 V.createElement("div",null,V.createElement(H,null,V.createElement("p",{style:{flex:1}},(i=a).toLocaleString("default",{month:"long"})+" "+i.getFullYear()),V.createElement("p",null,V.createElement(J,{label:"Previous month",onClick:()=>r(-1)},"<"),V.createElement(J,{label:"Next month",onClick:()=>r(1)},">"))),V.createElement("table",{className:"medplum-calendar-table"},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"SUN"),V.createElement("th",null,"MON"),V.createElement("th",null,"TUE"),V.createElement("th",null,"WED"),V.createElement("th",null,"THU"),V.createElement("th",null,"FRI"),V.createElement("th",null,"SAT"))),V.createElement("tbody",null,o.map(((e,t)=>V.createElement("tr",{key:"week-"+t},e.map(((e,t)=>V.createElement("td",{key:"day-"+t},e&&V.createElement("button",{disabled:!e.available,onClick:()=>n(e.date)},e.date.getDate()))))))))));var i}function Ol(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Tl(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 wl(e){var t;const n=te(),a=xe(e.schedule),l=xe(e.questionnaire),[r,o]=A();D().current=r;const[i,c]=A(Ol()),[u,s]=A(),[m,d]=A(),[p,h]=A();if(R((()=>{a?(o([]),n.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",E(a)],["start","gt"+jl(i)],["start","lt"+Sl(i)]])).then(o).catch(console.log)):o(void 0)}),[n,a,i]),!a||!r||!l)return null;const v=null===(t=a.actor)||void 0===t?void 0:t[0];return V.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},V.createElement("div",{className:"medplum-calendar-info-pane"},v&&V.createElement(Ne,{value:v,size:"large"}),v&&V.createElement("h1",null,V.createElement(wt,{value:v})),V.createElement("p",null,"1 hour"),u&&V.createElement("p",null,u.toLocaleDateString()),m&&V.createElement("p",null,Nl(new Date(m.start)))),V.createElement("div",{className:"medplum-calendar-selection-pane"},!u&&V.createElement("div",null,V.createElement("h3",null,"Select date"),V.createElement(kl,{slots:r,onChangeMonth:c,onClick:s})),u&&!m&&V.createElement("div",null,V.createElement("h3",null,"Select time"),r.map((e=>{const t=new Date(e.start);return t.getTime()>u.getTime()&&t.getTime()<u.getTime()+864e5&&V.createElement("div",{key:e.id},V.createElement(J,{style:{width:150},onClick:()=>d(e)},Nl(t)))}))),u&&m&&!p&&V.createElement(Ha,{questionnaire:l,submitButtonText:"Next",onSubmit:h}),u&&m&&p&&V.createElement("div",null,V.createElement("h3",null,"You're all set!"),V.createElement("p",null,"Check your email for a calendar invite."))))}function jl(e){return xl(e.getTime())}function Sl(e){return xl(e.getTime()+26784e5)}function xl(e){return new Date(Math.max(Date.now(),e)).toISOString()}function Nl(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function Vl(e){return V.createElement(ln,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${E(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${E(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${E(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${E(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",basedOn:[h(e)],subject:e.subject,sender:h(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",basedOn:[h(e)],subject:e.subject,operator:h(t),issued:(new Date).toISOString(),content:n})})}function Al(e){let t="medplum-tab";function n(t){ae(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),V.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function Dl(e){return V.createElement(Gt,{className:"medplum-surface",height:50},V.createElement("div",{role:"tablist",className:"medplum-tablist"},V.createElement("div",{className:"medplum-tablist-foreground"},V.Children.map(e.children,((t,n)=>V.isValidElement(t)&&t.type===Al?V.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function Il(e){return V.createElement("div",{role:"tabpanel"},e.children)}function Rl(e){return V.createElement(V.Fragment,null,V.Children.map(e.children,(t=>V.isValidElement(t)&&t.type===Il&&t.props.name===e.value?t:null)))}export{q as AddressDisplay,B as AddressInput,Y as AttachmentArrayDisplay,ie as AttachmentArrayInput,ce as AttachmentInput,De as Autocomplete,Ne as Avatar,Lt as BackboneElementInput,J as Button,nt as Checkbox,Ie as CheckboxFormSection,ut as CodeInput,_e as CodeableConceptDisplay,at as CodeableConceptInput,Qe as ContactDetailDisplay,dt as ContactDetailInput,Ue as ContactPointDisplay,mt as ContactPointInput,pt as DateTimeInput,dn as DefaultResourceTimeline,Le as DescriptionList,Me as DescriptionListEntry,$t as DiagnosticReportDisplay,ue as Document,Rt as ElementDefinitionInputSelector,Pt as ElementDefinitionTypeInput,pn as EncounterTimeline,Yt as ErrorBoundary,ya as FhirPathTable,Ca as FooterLinks,he as Form,ve as FormSection,wa as Header,He as HumanNameDisplay,ft as HumanNameInput,yt as IdentifierInput,U as Input,H as InputRow,Ht as Loading,ge as Logo,we as MedplumLink,Z as MedplumProvider,ba as MemoizedFhirPathTable,ga as MemoizedSearchControl,Kt as MenuItem,qt as ObservationTable,Sa as PatientTimeline,xa as PlanDefinitionBuilder,Jt as Popup,Za as QuestionnaireBuilder,Ha as QuestionnaireForm,za as QuestionnaireFormItem,qa as QuestionnaireItemType,Be as RangeDisplay,Ot as RangeInput,St as ReferenceInput,Te as RegisterForm,ul as RequestGroupDisplay,Xe as ResourceArrayDisplay,xt as ResourceArrayInput,Mt as ResourceBadge,pl as ResourceBlame,El as ResourceDiff,Pe as ResourceForm,yl as ResourceHistoryTable,jt as ResourceInput,wt as ResourceName,Ze as ResourcePropertyDisplay,It as ResourcePropertyInput,Bt as ResourceTable,ln as ResourceTimeline,wl as Scheduler,Gt as Scrollable,da as SearchChangeEvent,ha as SearchClickEvent,va as SearchControl,Gn as SearchFieldEditor,Zn as SearchFilterEditor,pa as SearchLoadEvent,K as Select,Vl as ServiceRequestTimeline,Ae as SignInForm,cl as StatusBadge,Al as Tab,Dl as TabList,Il as TabPanel,Rl as TabSwitch,gt as TextArea,Xt as Timeline,Zt as TimelineItem,ma as TitleBar,oe as UploadButton,In as addDateEqualsFilter,Rn as addDateFilter,Pn as addDateFilterBetween,kn as addField,Cn as addFilter,xn as addLastMonthFilter,Ln as addMissingFilter,Vn as addNextMonthFilter,_a as addQuestionnaireInitialValues,Nn as addThisMonthFilter,wn as addTodayFilter,jn as addTomorrowFilter,Dn as addYearToDateFilter,Tn as addYesterdayFilter,Wn as buildFieldNameString,yn as clearFilters,bn as clearFiltersOnField,ht as convertIsoToLocal,vt as convertLocalToIso,fe as createScriptTag,On as deleteFilter,Ge as formatRangeString,zn as getOpString,ke as getRecaptcha,Kn as getSearchOperators,Qn as getSortField,vl as getTimeString,et as getValueAndType,Mn as hasFilterOnField,Ce as initRecaptcha,Qa as isChoiceQuestion,Xa as isQuestionEnabled,Hn as isSortDescending,qn as movePage,me as parseForm,Bn as renderValue,fn as setFilters,$n as setOffset,Fe as setPropertyValue,_n as setSort,en as sortByDateAndPriority,Un as toggleSort,te as useMedplum,ee as useMedplumContext,ne as useMedplumProfile,xe 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 g,getReferenceString as f,evalFhirPath as E,getSearchParameterDetails as y,Operator as b,evalFhirPathTyped as C,SearchParameterType as k,formatSearchQuery as O,parseSearchDefinition as T,DEFAULT_SEARCH_COUNT as w,isUUID as j,deepEquals as S,getQuestionnaireAnswers as x,normalizeErrorString as N}from"@medplum/core";import V,{useState as A,useRef as D,createContext as I,useEffect as R,useContext as P,useCallback as F,useMemo as L}from"react";import{useNavigate as M,useLocation as q}from"react-router-dom";function $(t){const n=t.value;return n?V.createElement(V.Fragment,null,e(n)):null}function _(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return function(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=e.indexOf(".");if(n>=0&&e.substring(n+1)===t)return!0;const a=t.indexOf(".");if(a>=0&&t.substring(a+1)===e)return!0;return!1}(null===(n=e.expression)||void 0===n?void 0:n[0],t)}))}function U(e){const t=_(e.outcome,e.name),n=t&&t.length>0;return V.createElement("input",{id:e.name,name:e.name,type:Q(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 Q(e){return e||"text"}function H(e){return V.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function K(e){const t=_(e.outcome,e.name),n=t&&t.length>0;return V.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 z(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function W(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 B(e){const[t,n]=A(e.defaultValue||{}),a=D();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,V.createElement(H,null,V.createElement(K,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e}))}},V.createElement("option",null),V.createElement("option",null,"home"),V.createElement("option",null,"mobile"),V.createElement("option",null,"old"),V.createElement("option",null,"temp"),V.createElement("option",null,"work")),V.createElement(K,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){l(Object.assign(Object.assign({},a.current),{type:e}))}},V.createElement("option",null),V.createElement("option",null,"postal"),V.createElement("option",null,"physical"),V.createElement("option",null,"both")),V.createElement(U,{placeholder:"Line 1",defaultValue:z(t,0),onChange:function(e){l(W(a.current||{},0,e))}}),V.createElement(U,{placeholder:"Line 2",defaultValue:z(t,1),onChange:function(e){l(W(a.current||{},1,e))}}),V.createElement(U,{placeholder:"City",defaultValue:t.city,onChange:function(e){l(Object.assign(Object.assign({},a.current),{city:e}))}}),V.createElement(U,{placeholder:"State",defaultValue:t.state,onChange:function(e){l(Object.assign(Object.assign({},a.current),{state:e}))}}),V.createElement(U,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){l(Object.assign(Object.assign({},a.current),{postalCode:e}))}}))}function G(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?V.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&V.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/"))&&V.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},V.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&V.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},V.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),V.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},V.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 Y(e){return V.createElement("div",null,e.values&&e.values.map(((t,n)=>V.createElement("div",{key:"attatchment-"+n},V.createElement(G,{value:t,maxWidth:e.maxWidth})))))}function J(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 V.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 X=I(void 0);function Z(e){const t=e.medplum,[n,a]=A({profile:t.getProfile(),loading:!1});R((()=>{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 V.createElement(X.Provider,{value:l},e.children)}function ee(){return P(X)}function te(){return ee().medplum}function ne(){return ee().profile}function ae(e){e.preventDefault(),e.stopPropagation()}function le(e){if(re(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&re(t[0]))return!0}return!1}function re(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function oe(e){const t=te(),n=D(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 V.createElement(V.Fragment,null,V.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){ae(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),V.createElement(J,{testid:"upload-button",onClick:e=>{var t;ae(e),null===(t=n.current)||void 0===t||t.click()}},e.children||"Upload..."))}function ie(e){var t;const[n,a]=A(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=D();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,V.createElement("table",{style:{width:"100%"}},V.createElement("colgroup",null,V.createElement("col",{width:"90%"}),V.createElement("col",{width:"10%"})),V.createElement("tbody",null,n.map(((e,t)=>V.createElement("tr",{key:`${t}-${n.length}`},V.createElement("td",null,V.createElement(G,{value:e,maxWidth:200})),V.createElement("td",{className:"medplum-right"},V.createElement(J,{onClick:e=>{ae(e);const a=n.slice();a.splice(t,1),r(a)}},"Remove"))))),V.createElement("tr",null,V.createElement("td",null),V.createElement("td",{className:"medplum-right"},V.createElement(oe,{onUpload:e=>{r([...l.current,e])}})))))}function ce(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?V.createElement(V.Fragment,null,V.createElement(G,{value:t,maxWidth:200}),V.createElement(J,{onClick:e=>{ae(e),a(void 0)}},"Remove")):V.createElement(oe,{onUpload:a})}function ue(e){return V.createElement("main",{className:"medplum-document"},V.createElement("article",{style:{maxWidth:e.width}},e.children))}function se(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 me(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?de(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&pe(t,n);return t}function de(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function pe(e,t){e[t.name]=t.value}function ve(e){return V.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=me(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function he(e){const t=_(e.outcome,e.htmlFor),n=t&&t.length>0;return V.createElement("fieldset",{className:"medplum-form-section"},e.title&&V.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&V.createElement("p",null,e.description),e.children,n&&V.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return V.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 ge(e){return V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},V.createElement("title",null,"Medplum Logo"),V.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),V.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"}),V.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"}),V.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),V.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function fe(e){const t=te(),[n,a]=A();return V.createElement(ve,{style:{maxWidth:400},onSubmit:n=>se(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){a(e)}}))},V.createElement("div",{className:"medplum-center"},V.createElement(ge,{size:32}),V.createElement("h1",null,"Create project")),V.createElement(he,{title:"Project Name",htmlFor:"projectName",outcome:n},V.createElement(U,{name:"projectName",type:"text",testid:"projectName",placeholder:"My Project",required:!0,outcome:n})),V.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",V.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",V.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),V.createElement("div",{className:"medplum-signin-buttons"},V.createElement("div",null),V.createElement("div",null,V.createElement(J,{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 ye(e){const t=te(),{googleClientId:n,handleGoogleCredential:a}=e,l=D(null),[r,o]=A("undefined"!=typeof google),[i,c]=A(!1),[u,s]=A(!1);return R((()=>{"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?V.createElement("div",{ref:l}):null}function be(e){var t,n;if(e)return e;const a=window.location.protocol+"//"+window.location.host;return(null!==(n=null===(t="http://localhost:3000,http://127.0.0.1:3000,http://localhost:6006,http://127.0.0.1:6006,https://app.medplum.com,https://docs.medplum.com,https://storybook.medplum.com,https://graphiql.medplum.com,https://www.medplum.com")?void 0:t.split(","))&&void 0!==n?n:[]).includes(a)?"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com":void 0}function Ce(e){"undefined"==typeof grecaptcha&&Ee("https://www.google.com/recaptcha/api.js?render="+e)}function ke(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>se(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function Oe(e){const t=be(e.googleClientId),n=e.recaptchaSiteKey,a=te(),[l,r]=A(),o=_(l,void 0);return R((()=>Ce(n)),[n]),V.createElement(ve,{style:{maxWidth:400},onSubmit:t=>se(this,void 0,void 0,(function*(){try{const l=yield ke(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)}}))},V.createElement("div",{className:"medplum-center"},e.children),o&&V.createElement("div",{className:"medplum-input-error"},o.map((e=>{var t,n;return V.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&&V.createElement(V.Fragment,null,V.createElement("div",{className:"medplum-signin-google-container"},V.createElement(ye,{googleClientId:t,handleGoogleCredential:t=>se(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield a.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){r(e)}}))})),V.createElement("div",{className:"medplum-signin-separator"},"or")),V.createElement(he,{title:"First Name",htmlFor:"firstName",outcome:l},V.createElement(U,{name:"firstName",type:"text",testid:"firstName",placeholder:"First name",required:!0,autoFocus:!0,outcome:l})),V.createElement(he,{title:"Last Name",htmlFor:"lastName",outcome:l},V.createElement(U,{name:"lastName",type:"text",testid:"lastName",placeholder:"Last name",required:!0,outcome:l})),V.createElement(he,{title:"Email",htmlFor:"email",outcome:l},V.createElement(U,{name:"email",type:"email",testid:"email",placeholder:"name@domain.com",required:!0,outcome:l})),V.createElement(he,{title:"Password",htmlFor:"password",outcome:l},V.createElement(U,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:l})),V.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",V.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",V.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),V.createElement("p",{style:{fontSize:"12px",color:"#888"}},"This site is protected by reCAPTCHA and the Google"," ",V.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",V.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply."),V.createElement("div",{className:"medplum-signin-buttons"},V.createElement("div",null,V.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),V.createElement("label",{htmlFor:"remember"},"Remember me")),V.createElement("div",null,V.createElement(J,{type:"submit",testid:"submit"},"Create account"))))}function Te(e){const{type:t,projectId:n,googleClientId:a,recaptchaSiteKey:l,onSuccess:r}=e,o=te(),[i,c]=A(void 0),[u,s]=A();function m(e){e.code?o.processCode(e.code).then((()=>r())).catch(console.log):e.login&&c(e.login)}return R((()=>{"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]),V.createElement(ue,{width:450},u&&V.createElement("pre",null,JSON.stringify(u,null,2)),!i&&V.createElement(Oe,{projectId:n,googleClientId:a,recaptchaSiteKey:l,handleAuthResponse:m},e.children),i&&"project"===t&&V.createElement(fe,{login:i,handleAuthResponse:m}))}function we(e){const t=M();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),V.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{ae(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function je(e){const t=te(),n=be(e.googleClientId),[a,l]=A(),r=_(a,void 0);return V.createElement(ve,{style:{maxWidth:400},onSubmit:n=>{t.startLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,email:n.email,password:n.password,remember:"true"===n.remember}).then(e.handleAuthResponse).catch(l)}},V.createElement("div",{className:"medplum-center"},e.children),r&&V.createElement("div",{className:"medplum-input-error"},r.map((e=>{var t,n;return V.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&&V.createElement(V.Fragment,null,V.createElement("div",{className:"medplum-signin-google-container"},V.createElement(ye,{googleClientId:n,handleGoogleCredential:n=>{t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,googleClientId:n.clientId,googleCredential:n.credential}).then(e.handleAuthResponse).catch(l)}})),V.createElement("div",{className:"medplum-signin-separator"},"or")),V.createElement(he,{title:"Email",htmlFor:"email",outcome:a},V.createElement(U,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:a})),V.createElement(he,{title:"Password",htmlFor:"password",outcome:a},V.createElement(U,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:a})),V.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&V.createElement("div",null,e.onForgotPassword&&V.createElement(we,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&V.createElement(we,{testid:"register",onClick:e.onRegister},"Register")),V.createElement("div",null,V.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),V.createElement("label",{htmlFor:"remember"},"Remember me")),V.createElement("div",null,V.createElement(J,{type:"submit",testid:"submit"},"Sign in"))))}const Se={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function xe(e){const t=te(),[n,a]=A(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?Se:e.getCachedReference(t);return}(t,e));return R((()=>{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 Ne(e){var a,l;const r=xe(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?V.createElement("img",{src:u,alt:i}):c;return V.createElement("div",{className:o,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&r?V.createElement(we,{to:r},s):s)}function Ve(e){const t=te();return V.createElement("div",null,V.createElement("div",{className:"medplum-center"},V.createElement(ge,{size:32}),V.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,r;return V.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)}},V.createElement("div",{className:"medplum-nav-menu-profile-icon"},V.createElement(Ne,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),V.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,V.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(r=n.project)||void 0===r?void 0:r.display)))})))}function Ae(e){const t=te(),[n,a]=A(void 0),[l,r]=A(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 V.createElement(ue,{width:450},n?l?V.createElement(Ve,{login:n,memberships:l,handleAuthResponse:o}):"new"===e.projectId?V.createElement(fe,{login:n,handleAuthResponse:o}):V.createElement("div",null,"Success"):V.createElement(je,{projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function De(e){var t,n;const a=D(null),[l,r]=A(!1),[o,i]=A(void 0),[c,u]=A(),[s,m]=A(!1),[d,p]=A(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[v,h]=A([]),[g,f]=A(-1),[E,y]=A(),[b,C]=A(),k=D();k.current=o;const O=D();O.current=c;const T=D();T.current=E;const w=D();function j(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([]),f(-1),j(n)}function x(){var e;null===(e=a.current)||void 0===e||e.focus()}function N(){F(),r(!1),window.setTimeout((()=>{m(!1)}),200)}function I(){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),w.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):(ae(e),null===(t=a.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":L(-1),ae(e);break;case"ArrowDown":L(1),ae(e);break;case"Backspace":!function(e){var t;if(null===(t=a.current)||void 0===t?void 0:t.value)return;d.length>0&&(ae(e),j(d.slice(0,d.length-1)))}(e);break;case",":case";":!function(e){var t;F(),ae(e),null===(t=a.current)||void 0===t||t.focus()}(e)}}function F(){var t;let n;return g>=0&&g<v.length?n=v[g]:-1===g&&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=g+e;t<0?t=0:t>=v.length&&(t=v.length-1),f(t)}w.current=b,R((()=>()=>{T.current&&T.current.abort()}),[]),R((()=>{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 V.createElement("div",{"data-testid":"autocomplete",className:M+(l?" focused":""),onClick:()=>x()},V.createElement("ul",{onClick:()=>x()},d.map((t=>V.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),V.createElement("li",{className:"medplum-autocomplete-item"},V.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&&I())),onBlur:()=>N(),onChange:()=>I(),onInput:()=>I(),onKeyDown:e=>P(e),ref:a,"data-testid":"input-element"}))),s&&V.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},v.map(((t,n)=>V.createElement("div",{key:e.getId(t),className:n===g?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){f(t)}(0,n),onClick:e=>function(e,t){ae(e),S(t)}(e,t)},e.getIcon&&V.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),V.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&V.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&V.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},V.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function Ie(e){return V.createElement("div",{className:"medplum-checkbox-form-section"},V.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),V.createElement("div",{className:"medplum-checkbox-form-section-details-container"},V.createElement("label",{htmlFor:e.htmlFor},e.title),V.createElement("p",null,e.description)))}const Re=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function Pe(e){const t=te(),n=xe(e.defaultValue),[a,l]=A(),[r,o]=A();return R((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(l).catch(console.log))}),[t,n]),a&&r?V.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(r)}},V.createElement(he,{title:"Resource Type"},V.createElement(U,{name:"resourceType",defaultValue:r.resourceType,disabled:!0})),V.createElement(he,{title:"ID"},V.createElement(U,{name:"id",defaultValue:r.id,disabled:!0})),V.createElement(Lt,{typeName:r.resourceType,defaultValue:r,outcome:e.outcome,onChange:o}),V.createElement(J,{type:"submit",size:"large"},"OK"),e.onDelete&&V.createElement(J,{type:"button",size:"large",onClick:()=>{e.onDelete(r)}},"Delete")):V.createElement("div",null,"Loading...")}function Fe(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 Le(e){return V.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function Me(e){return V.createElement(V.Fragment,null,V.createElement("dt",null,e.term),V.createElement("dd",null,e.children))}function qe(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?V.createElement("div",null,n.name):V.createElement(Le,{compact:e.compact},Object.entries(o.properties).map((n=>{const a=n[0];if(Re.indexOf(a)>=0)return null;const l=n[1],[o,i]=et(t,a);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:V.createElement(Me,{key:a,term:r(a)},V.createElement(Ze,{property:l,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):V.createElement("div",null,a," not implemented")}function $e(e){var t,n;return V.createElement(V.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 _e(e){const t=e.value;return t?t.text?V.createElement(V.Fragment,null,t.text):t.coding?V.createElement(V.Fragment,null,t.coding.map(((e,t)=>V.createElement(V.Fragment,{key:"coding-"+t},t>0&&V.createElement(V.Fragment,null,", "),V.createElement($e,{value:e}))))):null:null}function Ue(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("]")),V.createElement(V.Fragment,null,n.join("").trim())}function Qe(e){var t;const n=e.value;return n?V.createElement(V.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>V.createElement(Ue,{key:"telecom-"+t,value:e})))):null}function He(e){const t=e.value;return t?V.createElement(V.Fragment,null,o(t,e.options)):null}function Ke(e){var t,n;return V.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 ze(e){return V.createElement(V.Fragment,null,We(e.value))}function We(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 Be(e){return V.createElement(V.Fragment,null,Ge(e.value))}function Ge(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${We(e.low)}`:!e.low&&e.high?`<= ${We(e.high)}`:`${We(e.low)} - ${We(e.high)}`:""}function Ye(e){const t=e.value;return t?V.createElement(V.Fragment,null,V.createElement(ze,{value:t.numerator})," / ",V.createElement(ze,{value:t.denominator})):null}function Je(e){if(!e.value)return null;const t=e.value.display||e.value.reference||i(e.value);return!1!==e.link&&e.value.reference?V.createElement(we,{to:e.value},t):V.createElement(V.Fragment,null,t)}function Xe(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 V.createElement(V.Fragment,null,r.map(((t,n)=>V.createElement("div",{key:`${n}-${r.length}`},V.createElement(Ze,{arrayElement:!0,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function Ze(e){var t;const{property:n,propertyType:a,value:l}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===a?V.createElement(Y,{values:l,maxWidth:e.maxWidth}):V.createElement(Xe,{property:n,values:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(a){case u.boolean:return V.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 V.createElement("div",null,l);case u.canonical:return V.createElement(Je,{value:{reference:l},link:e.link});case u.dateTime:case u.instant:return V.createElement("div",null,d(l));case u.markdown:return V.createElement("pre",null,l);case u.Address:return V.createElement($,{value:l});case u.Annotation:return V.createElement("div",null,null==l?void 0:l.text);case u.Attachment:return V.createElement(G,{value:l,maxWidth:e.maxWidth});case u.CodeableConcept:return V.createElement(_e,{value:l});case u.Coding:return V.createElement($e,{value:l});case u.ContactDetail:return V.createElement(Qe,{value:l});case u.ContactPoint:return V.createElement(Ue,{value:l});case u.HumanName:return V.createElement(He,{value:l});case u.Identifier:return V.createElement(Ke,{value:l});case u.Period:return V.createElement("div",null,m(l));case u.Quantity:return V.createElement(ze,{value:l});case u.Range:return V.createElement(Be,{value:l});case u.Ratio:return V.createElement(Ye,{value:l});case u.Reference:return V.createElement(Je,{value:l,link:e.link});case u.Timing:return V.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 V.createElement(qe,{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 et(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 tt(e){const t=ne(),[n,a]=A(e.defaultValue||{});return D().current=n,V.createElement(U,{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 nt(e){return V.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 at(e){const t=te();let n;return e.defaultValue&&(n=[e.defaultValue]),V.createElement(De,{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(lt)))},buildUnstructured:rt,getId:ot,getDisplay:it,name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function lt(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function rt(e){return{text:e}}function ot(e){return e.coding&&e.coding.length>0?e.coding[0].code:i(e)}function it(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 V.createElement(V.Fragment,null,i)}const ct={};function ut(e){const t=te();let n;return e.defaultValue&&(n=[e.defaultValue]),V.createElement(De,{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=>ct[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>V.createElement(V.Fragment,null,ct[e]||e),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function st(e){const t=te();let n;return e.defaultValue&&(n=[e.defaultValue]),V.createElement(De,{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=>V.createElement($e,{value:e}),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function mt(e){const[t,n]=A(e.defaultValue),a=D();function l(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return a.current=t,V.createElement(H,null,V.createElement(K,{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"},V.createElement("option",null),V.createElement("option",null,"email"),V.createElement("option",null,"fax"),V.createElement("option",null,"pager"),V.createElement("option",null,"phone"),V.createElement("option",null,"other"),V.createElement("option",null,"sms")),V.createElement(K,{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"},V.createElement("option",null),V.createElement("option",null,"home"),V.createElement("option",null,"mobile"),V.createElement("option",null,"old"),V.createElement("option",null,"temp"),V.createElement("option",null,"work")),V.createElement(U,{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 dt(e){var t;const[n,a]=A(e.defaultValue),l=D();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,V.createElement(H,null,V.createElement(U,{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)}}),V.createElement(mt,{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 pt(e){return V.createElement(U,Object.assign({},e,{type:"datetime-local",defaultValue:vt(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(ht(t))}}))}function vt(e){if(!e)return"";const t=new Date(e);return h(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function ht(e){if(!e)return"";const t=new Date(e);return h(t)?t.toISOString():""}function gt(e){const t="medplum-textarea"+(e.monospace?" monospace":""),n=_(e.outcome,e.name),a=n&&n.length>0;return V.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 ft(e){return V.createElement(gt,{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]=A(e.defaultValue),o=D();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=l,V.createElement(H,null,V.createElement(K,{defaultValue:null==l?void 0:l.use,onChange:function(e){i(Object.assign(Object.assign({},o.current),{use:e||void 0}))},testid:"use"},V.createElement("option",null),V.createElement("option",null,"usual"),V.createElement("option",null,"official"),V.createElement("option",null,"temp"),V.createElement("option",null,"nickname"),V.createElement("option",null,"anonymous"),V.createElement("option",null,"old"),V.createElement("option",null,"maiden")),V.createElement(U,{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}))}}),V.createElement(U,{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}))}}),V.createElement(U,{placeholder:"Family",defaultValue:null==l?void 0:l.family,onChange:function(e){i(Object.assign(Object.assign({},o.current),{family:e||void 0}))}}),V.createElement(U,{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 yt(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(U,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e}))}),V.createElement(U,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e}))}))}function bt(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(U,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),V.createElement(U,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function Ct(e){var t;const[n,a]=A(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(K,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,onChange:e=>l(Object.assign(Object.assign({},n),{comparator:e}))},V.createElement("option",null),V.createElement("option",null,"<"),V.createElement("option",null,"<="),V.createElement("option",null,">="),V.createElement("option",null,">")),V.createElement(U,{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:kt(e)}))}),V.createElement(U,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>l(Object.assign(Object.assign({},n),{unit:e}))}))}function kt(e){if(e)return parseFloat(e)}function Ot(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(Ct,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),V.createElement(Ct,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function Tt(e){const[t,n]=A(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(Ct,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),V.createElement(Ct,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function wt(e){const n=xe(e.value);if(!n)return null;const a=t(n);return e.link?V.createElement(we,{to:n},a):V.createElement("span",null,a)}function jt(e){const t=te(),n=xe(e.defaultValue),[a,l]=A(),r=D(e.resourceType);return r.current=e.resourceType,R((()=>{l(n)}),[n]),V.createElement(De,{loadOptions:e=>se(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=>V.createElement(Ne,{value:e}),getDisplay:e=>V.createElement(wt,{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 St(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]=A(e.defaultValue),[r,o]=A(n);D().current=a;return D().current=r,V.createElement(H,null,t?V.createElement(K,{testid:"reference-input-resource-type-select",defaultValue:r,onChange:o},t.map((e=>V.createElement("option",{key:e,value:e},e)))):V.createElement(U,{testid:"reference-input-resource-type-input",defaultValue:r,onChange:o}),V.createElement(jt,{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 xt(e){const[t,n]=A(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),a=D();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,V.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},V.createElement("colgroup",null,V.createElement("col",{width:"90%"}),V.createElement("col",{width:"10%"})),V.createElement("tbody",null,t.map(((n,r)=>V.createElement("tr",{key:`${r}-${t.length}`},V.createElement("td",null,V.createElement(It,{arrayElement:!0,property:e.property,name:e.name+"."+r,defaultValue:n,onChange:e=>{const t=[...a.current];t[r]=e,l(t)}})),V.createElement("td",{style:{textAlign:"right"}},V.createElement(J,{onClick:e=>{ae(e);const t=[...a.current];t.splice(r,1),l(t)}},"Remove"))))),V.createElement("tr",null,V.createElement("td",null),V.createElement("td",{style:{textAlign:"right"}},V.createElement(J,{onClick:e=>{ae(e);const t=[...a.current];t.push(void 0),l(t)}},"Add")))))}function Nt(e){const[t,n]=A(100),[a,l]=A(100);if(!e.visible)return null;return V.createElement(V.Fragment,null,V.createElement("div",{className:"modal-dialog-bg"}),V.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:a+"px"}},V.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){ae(e);const r=e.clientX-t,o=e.clientY-a;function i(e){ae(e),n(e.clientX-r),l(e.clientY-o)}document.addEventListener("mouseup",(function e(t){ae(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",i,!0)}),!0),document.addEventListener("mousemove",i,!0)}(e)},V.createElement("span",{className:"modal-dialog-title-text"},e.title),V.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},V.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),V.createElement("div",{className:"modal-dialog-content"},e.children),V.createElement("div",{className:"modal-dialog-buttons"},V.createElement(J,{testid:"dialog-ok",onClick:e.onOk},"OK"),V.createElement(J,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Vt=["sun","mon","tue","wed","thu","fri","sat"];function At(e){const[t,n]=A(e.defaultValue||{}),[a,l]=A(!1),r=D();return r.current=t,V.createElement(V.Fragment,null,V.createElement(H,null,V.createElement("span",null,s(r.current)||"No repeat"),V.createElement(J,{onClick:()=>l(!0)},"Edit")),V.createElement(Dt,{visible:a,defaultValue:r.current,onOk:t=>{e.onChange&&e.onChange(t),n(t),l(!1)},onCancel:()=>l(!1)}))}function Dt(e){var t,n;const[a,l]=A(e.defaultValue||{}),r=D();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,V.createElement(Nt,{title:"Timing",visible:e.visible,onOk:()=>e.onOk(a),onCancel:()=>e.onCancel()},V.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},V.createElement(he,{title:"Starts on",htmlFor:"timing-dialog-start"},V.createElement(pt,{name:"timing-dialog-start",onChange:e=>{return t=e,void l(Object.assign(Object.assign({},r.current),{event:[t]}));var t}})),V.createElement(he,{title:"Repeat every",htmlFor:"timing-dialog-period"},V.createElement(H,null,V.createElement(U,{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))}),V.createElement(K,{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)},V.createElement("option",{value:"d"},"day"),V.createElement("option",{value:"wk"},"week"),V.createElement("option",{value:"mo"},"month"),V.createElement("option",{value:"a"},"year")))),V.createElement(he,{title:"Repeat on"},V.createElement(H,null,Vt.map((e=>V.createElement(V.Fragment,{key:e},V.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),V.createElement(nt,{name:"timing-dialog-repeat-"+e,onChange:t=>i(e,t)}))))))))}function It(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?V.createElement(ie,{name:o,defaultValue:i,onChange:e.onChange}):V.createElement(xt,{property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?V.createElement(Rt,Object.assign({elementDefinitionTypes:c},e)):V.createElement(Pt,Object.assign({elementDefinitionType:c[0]},e))}function Rt(e){const t=e.elementDefinitionTypes;let n;e.defaultPropertyType&&(n=t.find((t=>t.code===e.defaultPropertyType))),n||(n=t[0]);const[l,r]=A(n);return V.createElement(H,null,V.createElement(K,{style:{width:"200px"},defaultValue:null==l?void 0:l.code,onChange:e=>{r(t.find((t=>t.code===e)))}},t.map((e=>V.createElement("option",{key:e.code,value:e.code},e.code)))),V.createElement(Pt,Object.assign({},e,{elementDefinitionType:l,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",a(l.code)))}})))}function Pt(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 V.createElement(U,{type:"text",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.date:return V.createElement(U,{type:"date",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.dateTime:case u.instant:return V.createElement(pt,{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 V.createElement(U,{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 V.createElement(ut,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.boolean:return V.createElement(nt,{name:l,testid:l,defaultValue:!!r,onChange:t=>{e.onChange&&e.onChange(t)}});case u.markdown:return V.createElement(gt,{name:l,testid:l,defaultValue:r,onChange:e.onChange});case u.Address:return V.createElement(B,{name:l,defaultValue:r,onChange:e.onChange});case u.Annotation:return V.createElement(tt,{name:l,defaultValue:r,onChange:e.onChange});case u.Attachment:return V.createElement(ce,{name:l,defaultValue:r,onChange:e.onChange});case u.CodeableConcept:return V.createElement(at,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.Coding:return V.createElement(st,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.ContactDetail:return V.createElement(dt,{name:l,defaultValue:r,onChange:e.onChange});case u.ContactPoint:return V.createElement(mt,{name:l,defaultValue:r,onChange:e.onChange});case u.Extension:return V.createElement(ft,{name:l,defaultValue:r,onChange:e.onChange});case u.HumanName:return V.createElement(Et,{name:l,defaultValue:r,onChange:e.onChange});case u.Identifier:return V.createElement(yt,{name:l,defaultValue:r,onChange:e.onChange});case u.Period:return V.createElement(bt,{name:l,defaultValue:r,onChange:e.onChange});case u.Quantity:return V.createElement(Ct,{name:l,defaultValue:r,onChange:e.onChange});case u.Range:return V.createElement(Ot,{name:l,defaultValue:r,onChange:e.onChange});case u.Ratio:return V.createElement(Tt,{name:l,defaultValue:r,onChange:e.onChange});case u.Reference:return V.createElement(St,{name:l,defaultValue:r,targetTypes:Ft(n),onChange:e.onChange});case u.Timing:return V.createElement(At,{name:l,defaultValue:r,onChange:e.onChange});default:return V.createElement(Lt,{typeName:c(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:r,onChange:e.onChange,outcome:e.outcome})}}function Ft(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 Lt(e){var t;const[n,a]=A(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 V.createElement("div",null,i," not implemented");const u={type:i,value:n};return V.createElement(V.Fragment,null,Object.entries(c.properties).map((t=>{const a=t[0];if("id"===a||Re.indexOf(a)>=0)return null;const l=t[1];if(!l.type)return null;const[i,c]=et(u,a);return 1===l.type.length&&"boolean"===l.type[0].code?V.createElement(Ie,{key:a,title:r(a),description:l.definition,htmlFor:a},V.createElement(It,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(Fe(n,a,null!=l?l:a,t[1],e))}})):V.createElement(he,{key:a,title:r(a),description:l.definition,htmlFor:a,outcome:e.outcome},V.createElement(It,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(Fe(n,a,null!=l?l:a,t[1],e))}}))})))}function Mt(e){var t;return V.createElement("div",{className:"medplum-resource-badge"},V.createElement(Ne,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),V.createElement(wt,{value:e.value,link:e.link}))}function qt(e){var t,n;const l=xe(e.value),r=xe(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 V.createElement("div",{className:"medplum-diagnostic-report"},V.createElement("h1",null,"Diagnostic Report"),V.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&V.createElement("dl",null,V.createElement("dt",null,"Subject"),V.createElement("dd",null,V.createElement(Mt,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>V.createElement("dl",{key:e.reference},V.createElement("dt",null,"Interpreter"),V.createElement("dd",null,V.createElement(Mt,{value:e,link:!0}))))),l.issued&&V.createElement("dl",null,V.createElement("dt",null,"Issued"),V.createElement("dd",null,d(l.issued))),l.status&&V.createElement("dl",null,V.createElement("dt",null,"Status"),V.createElement("dd",null,a(l.status)))),l.result&&V.createElement($t,{value:l.result}),o&&V.createElement("pre",null,o.trim()))}function $t(e){var t;return V.createElement("table",{className:"medplum-table"},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Test"),V.createElement("th",null,"Value"),V.createElement("th",null,"Reference Range"),V.createElement("th",null,"Interpretation"))),V.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>V.createElement(_t,{key:"obs-"+t,value:e})))))}function _t(e){const t=xe(e.value);return t?V.createElement("tr",null,V.createElement("td",null,V.createElement(we,{to:t},V.createElement(_e,{value:t.code}))),V.createElement("td",null,V.createElement(Ut,{value:t})),V.createElement("td",null,V.createElement(Qt,{value:t.referenceRange})),V.createElement("td",null,t.interpretation&&t.interpretation.length>0&&V.createElement(_e,{value:t.interpretation[0]}))):null}function Ut(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?V.createElement(ze,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?V.createElement(V.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?V.createElement(V.Fragment,null,n.component.map(((e,t)=>V.createElement(Ut,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function Qt(e){const t=e.value&&e.value.length>0&&e.value[0];return t?V.createElement(Be,{value:t}):null}function Ht(){return V.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},V.createElement("div",{className:"medplum-loading-container"},V.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},V.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function Kt(e){return V.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function zt(e){const t=te(),[n,a]=A();if(R((()=>{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?V.createElement("table",{className:"medplum-diff-table"},V.createElement("colgroup",null,V.createElement("col",{style:{width:"30%"}}),V.createElement("col",{style:{width:"35%"}}),V.createElement("col",{style:{width:"35%"}})),V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Property"),V.createElement("th",null,"Before"),V.createElement("th",null,"After"))),V.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]=et(g(e.original),n),[c,u]=et(g(e.revised),n);return Wt(l)&&Wt(c)||i(l)===i(c)?null:V.createElement("tr",{key:n},V.createElement("td",null,r(n)),V.createElement("td",{className:"medplum-diff-removed"},V.createElement(Ze,{property:a,propertyType:o,value:l,ignoreMissingValues:!0})),V.createElement("td",{className:"medplum-diff-added"},V.createElement(Ze,{property:a,propertyType:u,value:c,ignoreMissingValues:!0})))})))):null}function Wt(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function Bt(e){const t=te(),n=xe(e.value),[a,l]=A();return R((()=>{n&&t.requestSchema(n.resourceType).then(l).catch(console.log)}),[t,n]),a&&n?V.createElement(qe,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}function Gt(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return V.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},V.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class Yt extends V.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?V.createElement("h1",null,"Something went wrong."):this.props.children}}function Jt(e){const t=D(null),n=q(),a=D();e.visible?void 0===a.current&&(a.current=n):a.current=void 0;const l=D();l.current=e,R((()=>{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)&&(ae(n),e.onClose())}return document.addEventListener("click",n,!0),()=>{document.removeEventListener("click",n,!0)}}),[e]),R((()=>{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"),V.createElement(V.Fragment,null,e.modal&&V.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),V.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:r,"data-testid":"popup"},e.children))}function Xt(e){return V.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function Zt(e){var t,n,a;const[l,r]=A(),o=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return V.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},V.createElement("div",{className:"medplum-timeline-item-header"},V.createElement("div",{className:"medplum-timeline-item-avatar"},V.createElement(Ne,{value:o,link:!0,size:"medium"})),V.createElement("div",{className:"medplum-timeline-item-title"},V.createElement(wt,{value:o,link:!0}),V.createElement("div",{className:"medplum-timeline-item-subtitle"},V.createElement(we,{to:e.resource},d(null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated)),V.createElement("span",null,"·"),V.createElement(we,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&V.createElement("div",{className:"medplum-timeline-item-actions"},V.createElement("a",{href:"#","aria-label":`Actions for ${f(e.resource)}`,onClick:e=>{ae(e);const t=e.currentTarget.getBoundingClientRect();r(t)}},V.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},V.createElement("g",{transform:"translate(-446 -350)"},V.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"})))))),V.createElement(Yt,null,e.padding&&V.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&V.createElement(V.Fragment,null,e.children)),e.socialEnabled&&V.createElement("div",{className:"medplum-timeline-item-footer"},V.createElement(J,{borderless:!0},"Like"),V.createElement(J,{borderless:!0},"Comment")),e.popupMenuItems&&V.createElement(Jt,{visible:!!l,anchor:l,autoClose:!0,onClose:()=>r(void 0)},e.popupMenuItems))}function en(e){e.sort(tn)}function tn(e,t){const n=nn(e),a=nn(t);return n>a?1:n<a?-1:an(e)-an(t)}function nn(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function an(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 ln(e){const t=M(),n=te(),a=n.getProfile(),l=D(null),r=xe(e.value),[o,i]=A(),[c,u]=A([]),s=e.buildSearchRequests,m=D(c);m.current=c;const d=F((()=>{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)}en(t),t.reverse()}u(t)}function v(e){const t=[...m.current,...e];en(t),t.reverse(),u(t)}function h(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function g(e){h(e,"stat").then(d).catch(console.log)}function f(e){h(e,"routine").then(d).catch(console.log)}function E(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 R((()=>{d()}),[d]),r&&o?V.createElement(Xt,null,e.createCommunication&&V.createElement("article",{className:"medplum-timeline-item"},V.createElement("div",{className:"medplum-timeline-item-header"},V.createElement(ve,{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())}},V.createElement(U,{name:"text",testid:"timeline-input",inputRef:l}),V.createElement(J,{type:"submit"},"Comment"),V.createElement(oe,{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 V.createElement(on,{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 V.createElement(sn,{key:n,resource:e,onDetails:E});case"Communication":return V.createElement(cn,{key:n,resource:e,onPin:"stat"!==e.priority?g:void 0,onUnpin:"stat"===e.priority?f:void 0,onDetails:E,onEdit:y,onDelete:b});case"DiagnosticReport":return V.createElement(mn,{key:n,resource:e,onDetails:E,onEdit:y,onDelete:b});case"Media":return V.createElement(un,{key:n,resource:e,onDetails:E,onEdit:y,onDelete:b});default:return V.createElement(Zt,{key:n,resource:e,padding:!0},V.createElement(Bt,{value:e,ignoreMissingValues:!0}))}}))):V.createElement(Ht,null)}function rn(e){return V.createElement(V.Fragment,null,e.onPin&&V.createElement(Kt,{onClick:()=>e.onPin(e.resource),label:`Pin ${f(e.resource)}`},"Pin"),e.onUnpin&&V.createElement(Kt,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${f(e.resource)}`},"Unpin"),e.onDetails&&V.createElement(Kt,{onClick:()=>e.onDetails(e.resource),label:`Details ${f(e.resource)}`},"Details"),e.onEdit&&V.createElement(Kt,{onClick:()=>e.onEdit(e.resource),label:`Edit ${f(e.resource)}`},"Edit"),e.onDelete&&V.createElement(Kt,{onClick:()=>e.onDelete(e.resource),label:`Delete ${f(e.resource)}`},"Delete"))}function on(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?V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(zt,{original:t,revised:e.resource})):V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement("h3",null,"Created"),V.createElement(Bt,{value:e.resource,ignoreMissingValues:!0}))}function cn(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return V.createElement(Zt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.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 un(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 V.createElement(Zt,{resource:e.resource,padding:!!a,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(G,{value:e.resource.content}))}function sn(e){return V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(Gt,null,V.createElement("pre",null,e.resource.outcomeDesc)))}function mn(e){return V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(qt,{value:e.resource}))}function dn(e){return V.createElement(ln,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${f(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${f(e)}&_sort=-_lastUpdated`}}]})})}function pn(e){return V.createElement(ln,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${f(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${f(e)}`}},{request:{method:"GET",url:`Media?encounter=${f(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 vn(e){let t;try{t=E(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 V.createElement(Ze,{value:t[0]||"",propertyType:e.propertyType})}function hn(e,t){var n;if("_lastUpdated"===t)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===t)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const a=l.types[e],r=a.properties[t],o=null===(n=a.searchParams)||void 0===n?void 0:n[t.toLowerCase()];if(r&&o)return{name:t,elementDefinition:r,searchParams:[o]};if(r){let n;if(a.searchParams){const l=`${e}.${t.replaceAll("[x]","")}`;n=Object.values(a.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(l)})),0===n.length&&(n=void 0)}return{name:t,elementDefinition:r,searchParams:n}}if(o){return{name:t,elementDefinition:y(e,o).elementDefinition,searchParams:[o]}}return{name:t}}const gn={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]},fn={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 yn(e){return En(e,[])}function bn(e,t){return En(e,(e.filters||[]).filter((e=>e.code!==t)))}function Cn(e,t,n,a,l){l&&(e=bn(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),En(e,r)}function kn(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 On(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 Tn(e,t){return Sn(e,t,-1)}function wn(e,t){return Sn(e,t,0)}function jn(e,t){return Sn(e,t,1)}function Sn(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),Pn(e,t,a,l)}function xn(e,t){return An(e,t,-1)}function Nn(e,t){return An(e,t,0)}function Vn(e,t){return An(e,t,1)}function An(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),Pn(e,t,a,l)}function Dn(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return Pn(e,t,n,new Date)}function In(e,t,n){return Pn(e,t,n,n)}function Rn(e,t,n,a){return Fn(e=bn(e,t),t,n,a)}function Pn(e,t,n,a){return e=Fn(e=bn(e,t),t,b.GREATER_THAN_OR_EQUALS,n),e=Fn(e,t,b.LESS_THAN_OR_EQUALS,a)}function Fn(e,t,n,a){return Cn(e,t,n,a.toISOString())}function Ln(e,t,n=!0){return Cn(e,t,b.MISSING,n.toString())}function Mn(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function qn(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function $n(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 qn(e,Math.max(r,0))}function _n(e,t,n){return t===Qn(e)&&void 0!==n&&n===Hn(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Un(e,t){let n=!1;return Qn(e)===t&&(n=!Hn(e)),_n(e,t,n)}function Qn(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Hn(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Kn(e){return gn[e.type]}function zn(e){var t;return null!==(t=fn[e])&&void 0!==t?t:""}function Wn(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 Bn(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]=et({type:e.resourceType,value:e},r);if(!o)return null;return V.createElement(Ze,{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 V.createElement(Ze,{propertyType:a[0].type,value:a[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return V.createElement(V.Fragment,null,a.map(((e,t)=>V.createElement("span",{key:`${t}-${a.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function Gn(e){var t;const[n,a]=A({search:JSON.parse(i(e.search))}),r=D(null),o=D(null);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,o];a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function u(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...l];e.splice(e.indexOf(r),1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function s(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(R((()=>{a({search:e.search})}),[e.search]),!e.visible)return null;const m=e.search.resourceType,d=l.types[m],p=null!==(t=n.search.fields)&&void 0!==t?t:[],v=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(Wn(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=Wn(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(Wn(l)))}return t}(d).filter((e=>!(null==p?void 0:p.includes(e)))).sort();return V.createElement(Nt,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(n.search),onCancel:e.onCancel},V.createElement("div",null,V.createElement("table",{style:{margin:"auto"}},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",{colSpan:2,align:"center"},"Available"),V.createElement("th",{colSpan:2,align:"center"},"Selected"))),V.createElement("tbody",null,V.createElement("tr",null,V.createElement("td",{colSpan:2,align:"center"},V.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"available"},v.map((e=>V.createElement("option",{key:e,value:e},Wn(e)))))),V.createElement("td",{colSpan:2,align:"center"},V.createElement("select",{ref:o,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&u()}(e),onDoubleClick:()=>{u()},"data-testid":"selected"},p.map((e=>V.createElement("option",{key:e,value:e},Wn(e)))))))),V.createElement("tfoot",null,V.createElement("tr",null,V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:c},"Add")),V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:u},"Remove")),V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...l],t=e.indexOf(r);s(e,t,t-1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Up")),V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...l],t=e.indexOf(r);s(e,t,t+1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Down")))))))}function Yn(e){var t,n;const a=null===(n=null===(t=te().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)?V.createElement(wt,{value:{reference:l.value}}):"_lastUpdated"===e.filter.code||"datetime"===(null==a?void 0:a.type)?V.createElement(V.Fragment,null,d(l.value)):V.createElement(V.Fragment,null,l.value)}function Jn(e){var t;const n="filter-value";switch(y(e.resourceType,e.searchParam).type){case k.REFERENCE:return V.createElement(St,{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 V.createElement(nt,{name:n,testid:n,defaultValue:"true"===e.defaultValue,onChange:t=>e.onChange(t.toString())});case k.DATE:return V.createElement(U,{type:"date",testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.DATETIME:return V.createElement(pt,{testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.NUMBER:return V.createElement(U,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case k.QUANTITY:return V.createElement(Ct,{name:n,defaultValue:Xn(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return V.createElement(U,{testid:n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function Xn(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function Zn(e){const[t,n]=A(JSON.parse(i(e.search))),[a,r]=A(-1),o=D(t);if(o.current=t,R((()=>{n(JSON.parse(i(e.search)))}),[e.search]),!e.visible)return null;const c=e.search.resourceType,u=l.types[c].searchParams,s=t.filters||[];return V.createElement(Nt,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(o.current),onCancel:e.onCancel},V.createElement("div",{className:"medplum-filter-editor"},V.createElement("table",{className:"medplum-filter-editor-table"},V.createElement("colgroup",null,V.createElement("col",{style:{width:200}}),V.createElement("col",{style:{width:200}}),V.createElement("col",{style:{width:380}}),V.createElement("col",{style:{width:120}})),V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Field"),V.createElement("th",null,"Operation"),V.createElement("th",null,"Value"),V.createElement("th",null,"Actions"))),V.createElement("tbody",null,s.map(((e,t)=>t===a?V.createElement(ta,{key:`filter-${t}-${s.length}-input`,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const a=[...s];a[t]=e,n(En(o.current,a)),r(-1)},onCancel:()=>r(-1)}):V.createElement(ea,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>r(t),onDelete:()=>n(On(o.current,t))}))),V.createElement(ta,{resourceType:c,searchParams:u,okText:"Add",onOk:function(e){n(Cn(o.current,e.code,e.operator,e.value))}})))))}function ea(e){const{filter:t}=e;return V.createElement("tr",null,V.createElement("td",null,Wn(t.code)),V.createElement("td",null,zn(t.operator)),V.createElement("td",null,V.createElement(Yn,{resourceType:e.resourceType,filter:t})),V.createElement("td",null,V.createElement(J,{size:"small",onClick:e.onEdit},"Edit"),V.createElement(J,{size:"small",onClick:e.onDelete},"Delete")))}function ta(e){var t;const[n,a]=A(null!==(t=e.defaultValue)&&void 0!==t?t:{}),l=D(n);l.current=n;const r=e.searchParams[n.code],o=r&&Kn(r);return V.createElement("tr",null,V.createElement("td",null,V.createElement(K,{testid:"filter-field",defaultValue:l.current.code,onChange:function(e){a(Object.assign(Object.assign({},l.current),{code:e}))}},V.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>V.createElement("option",{key:e,value:e},Wn(e)))))),V.createElement("td",null,o&&V.createElement(K,{testid:"filter-operation",defaultValue:n.operator,onChange:function(e){a(Object.assign(Object.assign({},l.current),{operator:e}))}},V.createElement("option",{value:""}),o.map((e=>V.createElement("option",{key:e,value:e},zn(e)))))),V.createElement("td",null,r&&n.operator&&V.createElement(Jn,{resourceType:e.resourceType,searchParam:r,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},l.current),{value:e}))}})),V.createElement("td",null,n.code&&n.operator&&n.value&&V.createElement(J,{size:"small",onClick:()=>{e.onOk(l.current),a({})}},e.okText),e.onCancel&&V.createElement(J,{size:"small",onClick:e.onCancel},"Cancel")))}function na(e){var t;const[n,a]=A(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 V.createElement(Nt,{title:e.title,visible:e.visible,onOk:l,onCancel:e.onCancel},V.createElement("div",{style:{width:500}},V.createElement(ve,{onSubmit:l},V.createElement(Jn,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))))}function aa(){return V.createElement("div",{className:"medplum-menu-separator"})}function la(e){const[t,n]=A(!1),[a,l]=A(!1),[r,o]=A(void 0),i=D(null),c=D(!1);c.current=t;const u=D(!1);function s(){const e=i.current;e&&(o(e.getBoundingClientRect()),l(!0))}return u.current=a,R((()=>{const e=window.setInterval((()=>{!u.current&&c.current?s():u.current&&!c.current&&l(!1)}),150);return()=>window.clearInterval(e)}),[]),V.createElement("div",{ref:i,className:"medplum-menu-item medplum-submenu-item",onClick:()=>s(),onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1)},e.title,V.createElement("span",{className:"medplum-submenu-arrow"},"►"),V.createElement(Jt,{visible:a,anchor:r,autoClose:!0,onClose:()=>l(!1)},e.children))}function ra(e){if(!e.searchParams)return null;function t(t,n){l(_n(e.search,t.code,n))}function n(t){l(bn(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?V.createElement(Jt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},V.createElement(oa,{search:e.search,searchParam:e.searchParams[0],onSort:t,onPrompt:a,onChange:l,onClear:n})):V.createElement(Jt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},e.searchParams.map((r=>V.createElement(la,{key:r.code,title:Wn(r.code)},V.createElement(oa,{search:e.search,searchParam:r,onSort:t,onPrompt:a,onChange:l,onClear:n})))))}function oa(e){switch(e.searchParam.type){case"date":return V.createElement(ia,Object.assign({},e));case"number":case"quantity":return V.createElement(ca,Object.assign({},e));case"reference":return V.createElement(ua,Object.assign({},e));case"string":case"token":case"uri":return V.createElement(sa,Object.assign({},e));default:return V.createElement(V.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function ia(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),V.createElement(Kt,{onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.ENDS_BEFORE)},"Before..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.STARTS_AFTER)},"After..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Between..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(jn(e.search,n))},"Tomorrow"),V.createElement(Kt,{onClick:()=>e.onChange(wn(e.search,n))},"Today"),V.createElement(Kt,{onClick:()=>e.onChange(Tn(e.search,n))},"Yesterday"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Vn(e.search,n))},"Next Month"),V.createElement(Kt,{onClick:()=>e.onChange(Nn(e.search,n))},"This Month"),V.createElement(Kt,{onClick:()=>e.onChange(xn(e.search,n))},"Last Month"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Dn(e.search,n))},"Year to date"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ca(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),V.createElement(Kt,{onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.GREATER_THAN)},"Greater than..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.LESS_THAN)},"Less than..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ua(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function sa(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onSort(t,!1)},"Sort A to Z"),V.createElement(Kt,{onClick:()=>e.onSort(t,!0)},"Sort Z to A"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.CONTAINS)},"Contains..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,b.EQUALS)},"Does not contain..."),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(aa,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ma(e){return V.createElement("div",{className:"medplum-title-bar"},e.children)}class da extends Event{constructor(e){super("change"),this.definition=e}}class pa extends Event{constructor(e){super("load"),this.response=e}}class va extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function ha(e){var t,n,a,r;const o=te(),[i,c]=A(!1),[u,s]=A(),{search:m,onLoad:d}=e,[p,v]=A({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParams:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),h=D(p);function g(t){e.onChange&&e.onChange(new da(t))}function f(t,n){le(t.target)||(ae(t),1!==t.button&&e.onClick&&e.onClick(new va(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new va(n,t)))}h.current=p,R((()=>{s(void 0),o.search(m.resourceType,O(Object.assign(Object.assign({},m),{total:"accurate",fields:void 0}))).then((e=>{v(Object.assign(Object.assign({},h.current),{searchResponse:e})),d&&d(new pa(e))})).catch((e=>{v(Object.assign(Object.assign({},h.current),{searchResponse:void 0})),s(e)}))}),[o,m,d]),R((()=>{o.requestSchema(e.search.resourceType).then((()=>c(!0))).catch(console.log)}),[o,e.search.resourceType]);if(!(i&&(null===(t=null==l?void 0:l.types)||void 0===t?void 0:t[e.search.resourceType])))return V.createElement(Ht,null);const E=e.checkboxesEnabled,y=function(e){const t=e.resourceType,n=[];for(const a of e.fields||["id","_lastUpdated"])n.push(hn(t,a));return n}(m),b=m.resourceType,C=p.searchResponse,k=null==C?void 0:C.entry,j=null==k?void 0:k.map((e=>e.resource)),S=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(b)}));return V.createElement("div",{className:"medplum-search-control",onContextMenu:e=>ae(e),"data-testid":"search-control"},!e.hideToolbar&&V.createElement(ma,null,V.createElement("div",null,V.createElement("h1",null,V.createElement("a",{href:`https://www.hl7.org/fhir/${b.toLowerCase()}.html`,target:"_blank",rel:"noopener"},b)),S&&V.createElement(K,{testid:"saved-search-select",style:{width:80},onChange:e=>{g(T(e))}},V.createElement("option",null),S.map(((e,t)=>V.createElement("option",{key:`${t}-${S.length}`,value:e.criteria},e.name)))),V.createElement(J,{testid:"fields-button",size:"small",onClick:()=>v(Object.assign(Object.assign({},h.current),{fieldEditorVisible:!0}))},"Fields"),V.createElement(J,{testid:"filters-button",size:"small",onClick:()=>v(Object.assign(Object.assign({},h.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&V.createElement(J,{size:"small",onClick:e.onNew},"New..."),e.onExport&&V.createElement(J,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&V.createElement(J,{size:"small",onClick:()=>e.onDelete(Object.keys(p.selected))},"Delete..."),e.onBulk&&V.createElement(J,{size:"small",onClick:()=>e.onBulk(Object.keys(p.selected))},"Bulk...")),C&&V.createElement("div",null,V.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)}(m,C.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:w))}(m,C.total)," of"," ",null===(r=C.total)||void 0===r?void 0:r.toLocaleString()),V.createElement(J,{testid:"prev-page-button",size:"small",onClick:()=>g($n(m,-1))},"<<"),V.createElement(J,{testid:"next-page-button",size:"small",onClick:()=>g($n(m,1))},">>"))),V.createElement("table",null,V.createElement("thead",null,V.createElement("tr",null,E&&V.createElement("th",{className:"medplum-search-icon-cell"},V.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=h.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=h.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)})),v(Object.assign(Object.assign({},h.current),{selected:a}))}(e)})),y.map((e=>V.createElement("th",{key:e.name,onClick:t=>function(e,t){v(Object.assign(Object.assign({},h.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParams:t}))}(t,e.searchParams)},Wn(e.name),e.searchParams&&V.createElement(Ea,null))))),!e.hideFilters&&V.createElement("tr",null,E&&V.createElement("th",{className:"filters medplum-search-icon-cell"}),y.map((t=>V.createElement("th",{key:t.name,className:"filters"},t.searchParams&&V.createElement(fa,{resourceType:b,searchParams:t.searchParams,filters:e.search.filters})))))),V.createElement("tbody",null,null==j?void 0:j.map((e=>e&&V.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>f(t,e),onAuxClick:t=>f(t,e)},E&&V.createElement("td",{className:"medplum-search-icon-cell"},V.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!p.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},h.current.selected);n?a[t]=!0:delete a[t],v(Object.assign(Object.assign({},h.current),{selected:a}))}(t,e.id)})),y.map((t=>V.createElement("td",{key:t.name},Bn(e,t))))))))),0===(null==j?void 0:j.length)&&V.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&V.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},V.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),V.createElement(ra,{search:e.search,visible:p.popupVisible,x:p.popupX,y:p.popupY,searchParams:p.popupSearchParams,onPrompt:(e,t)=>{v(Object.assign(Object.assign({},h.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{g(e),v(Object.assign(Object.assign({},h.current),{popupVisible:!1,popupSearchParams:void 0}))},onClose:()=>{v(Object.assign(Object.assign({},h.current),{popupVisible:!1,popupSearchParams:void 0}))}}),V.createElement(Gn,{search:e.search,visible:h.current.fieldEditorVisible,onOk:e=>{g(e),v(Object.assign(Object.assign({},h.current),{fieldEditorVisible:!1}))},onCancel:()=>{v(Object.assign(Object.assign({},h.current),{fieldEditorVisible:!1}))}}),V.createElement(Zn,{search:e.search,visible:h.current.filterEditorVisible,onOk:e=>{g(e),v(Object.assign(Object.assign({},h.current),{filterEditorVisible:!1}))},onCancel:()=>{v(Object.assign(Object.assign({},h.current),{filterEditorVisible:!1}))}}),V.createElement(na,{visible:h.current.filterDialogVisible,title:"Input",resourceType:b,searchParam:p.filterDialogSearchParam,filter:p.filterDialogFilter,defaultValue:"",onOk:t=>{g(Cn(e.search,t.code,t.operator,t.value)),v(Object.assign(Object.assign({},h.current),{filterDialogVisible:!1}))},onCancel:()=>{v(Object.assign(Object.assign({},h.current),{filterDialogVisible:!1}))}}))}const ga=V.memo(ha);function fa(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?V.createElement("span",null,"no filters"):V.createElement(V.Fragment,null,n.map(((t,a)=>V.createElement("div",{key:`filter-${a}-${n.length}`},zn(t.operator)," ",V.createElement(Yn,{resourceType:e.resourceType,filter:t})))))}function Ea(){return V.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},V.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function ya(e){var t,n,a,l,r;const o=te(),[i,c]=A(),[u,s]=A(),{query:m,fields:d}=e,[p,v]=A(),[h,g]=A({}),f=D();f.current=p;const E=D({});function y(t,n){le(t.target)||(ae(t),1!==t.button&&e.onClick&&e.onClick(new va(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new va(n,t)))}E.current=h,R((()=>{s(void 0),o.graphql(m).then(v).catch(s)}),[o,m]),R((()=>{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 V.createElement(Ht,null);const b=e.checkboxesEnabled;return V.createElement("div",{className:"medplum-search-control",onContextMenu:e=>ae(e),"data-testid":"search-control"},V.createElement("table",null,V.createElement("thead",null,V.createElement("tr",null,b&&V.createElement("th",{className:"medplum-search-icon-cell"},V.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=f.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)&&!E.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=f.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)})),g(l)}(e)})),d.map((e=>V.createElement("th",{key:e.name},e.name))))),V.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&&V.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},b&&V.createElement("td",{className:"medplum-search-icon-cell"},V.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({},E.current);n?a[t]=!0:delete a[t],g(a)}(t,e.id)})),d.map((t=>V.createElement("td",{key:t.name},V.createElement(vn,{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)&&V.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&V.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},V.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&V.createElement(J,{size:"small",onClick:()=>e.onBulk(Object.keys(E.current))},"Bulk..."))}const ba=V.memo(ya);function Ca(e){return V.createElement("div",{className:"medplum-footer"},e.children)}function ka(e){const t=te();return V.createElement(De,{loadOptions:(e,n)=>se(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)=>Oa(n,t)-Oa(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(j(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=>V.createElement(Ne,{value:e}),getDisplay:e=>V.createElement(wt,{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 Oa(e,t){let n=0;if(e.identifier)for(const a of e.identifier)n=Math.max(n,Ta(a.value,t));if("Patient"===e.resourceType&&e.name)for(const a of e.name)n=Math.max(n,Ta(o(a),t));return n}function Ta(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}function wa(e){var t,n,a,l,r,o;const i=M(),c=q(),u=ee(),s=u.medplum,m=s.getLogins(),[d,p]=A(!1),[v,h]=A(!1);return V.createElement(V.Fragment,null,V.createElement("header",{role:"banner","data-testid":"header",style:{background:e.bgColor}},V.createElement("div",null,V.createElement(we,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>h(!v)},V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},V.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"}))),V.createElement(we,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},e.title||"Medplum"),u.profile&&V.createElement(ka,{key:`header-input-${c.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>i(`/${e.resourceType}/${e.id}`)})),u.profile&&V.createElement("div",{className:"medplum-nav-menu-container"},V.createElement(we,{testid:"header-profile-menu-button",onClick:()=>p(!0)},V.createElement(Ne,{size:"small",color:"#f68d42",value:u.profile})),V.createElement(Jt,{visible:d,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>p(!1)},V.createElement("div",{className:"medplum-nav-menu"},V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement(Ne,{size:"large",value:u.profile})),V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},V.createElement(He,{value:null===(n=null===(t=u.profile)||void 0===t?void 0:t.name)||void 0===n?void 0:n[0]})),V.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),V.createElement(J,{testid:"header-profile-link",onClick:()=>{p(!1),e.onProfile&&e.onProfile()}},"Manage your account")),m.length>1&&V.createElement("div",null,V.createElement("hr",null),m.map((e=>{var t,n,a,l;return(null===(t=e.profile)||void 0===t?void 0:t.reference)!==f(u.profile)&&V.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)}},V.createElement("div",{className:"medplum-nav-menu-profile-icon"},V.createElement(Ne,null)),V.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(a=e.profile)||void 0===a?void 0:a.display,V.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(l=e.project)||void 0===l?void 0:l.display)))}))),V.createElement("hr",null),V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement(J,{testid:"header-add-account-button",onClick:()=>{i("/signin")}},"Add another account")),V.createElement("hr",null),V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement(J,{testid:"header-signout-button",onClick:()=>{p(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),V.createElement("hr",null),V.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},V.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),V.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),V.createElement(Jt,{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 V.createElement(V.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},V.createElement("h5",null,t.title),V.createElement("ul",null,null===(r=t.link)||void 0===r?void 0:r.map((e=>V.createElement("li",{key:e.target},V.createElement(we,{to:e.target},e.name))))))})),V.createElement("h5",null,"Settings"),V.createElement("ul",null,V.createElement("li",null,V.createElement(we,{to:u.profile},"Profile")),V.createElement("li",null,V.createElement(we,{to:"/changepassword"},"Change password")))))}const ja=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function Sa(e){return V.createElement(ln,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:ja.map((t=>({request:{method:"GET",url:t.replaceAll("$",f(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 xa(e){const t=te(),n=xe(e.value),[a,l]=A(void 0),[r,o]=A(),[i,c]=A(),[u,s]=A();function m(){c(void 0)}function d(){o(void 0)}const p=D();if(p.current=u,R((()=>{t.requestSchema("PlanDefinition").then(l).catch(console.log)}),[t]),R((()=>{var e;return s((e=null!=n?n:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:qa(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 V.createElement("div",{className:"medplum-questionnaire-builder"},V.createElement(ve,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(u)},V.createElement(he,{title:"Plan Title",htmlFor:"title"},V.createElement(U,{defaultValue:u.title,onChange:e=>v("title",e)})),V.createElement(Na,{actions:u.action||[],selectedKey:r,setSelectedKey:o,hoverKey:i,setHoverKey:c,onChange:e=>v("action",e)}),V.createElement(J,{type:"submit",size:"large"},"Save")))}function Na(e){const t=D();function n(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,V.createElement("div",{className:"section"},e.actions.map((a=>V.createElement("div",{key:a.id},V.createElement(Va,{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}})))),V.createElement("div",{className:"bottom-actions"},V.createElement("a",{href:"#",onClick:n=>{var a;ae(n),a={id:Ma()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function Va(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 V.createElement("div",{"data-testid":t.id,className:r,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){ae(t),e.setHoverKey(e.action.id)}},a?V.createElement(Ia,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):V.createElement(Da,{action:t,actionType:n}),V.createElement("div",{className:"bottom-actions"},V.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const Aa={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Da(e){const{action:t,actionType:n}=e,[a,l]=Fa(t);return V.createElement("div",null,V.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&V.createElement("div",null,V.createElement(Je,{value:{reference:t.definitionCanonical}})),a&&V.createElement("div",null,V.createElement(Ze,{property:Aa,propertyType:l,value:a})))}function Ia(e){const{action:t}=e,[n,a]=A(e.actionType);function l(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return V.createElement(V.Fragment,null,V.createElement(he,{title:"Title",htmlFor:`actionTitle-${t.id}`},V.createElement(U,{name:`actionTitle-${t.id}`,defaultValue:t.title,onChange:e=>l("title",e)})),V.createElement(he,{title:"Type of Action",description:"The type of the action to be performed.",htmlFor:`actionType-${t.id}`},V.createElement(K,{name:`actionType-${t.id}`,defaultValue:n,onChange:a},V.createElement("option",null),V.createElement("option",{value:"appointment"},"Appointment"),V.createElement("option",{value:"lab"},"Lab"),V.createElement("option",{value:"questionnaire"},"Questionnaire"),V.createElement("option",{value:"task"},"Task"))),t.action&&t.action.length>0&&V.createElement(Na,{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 V.createElement(Ra,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return V.createElement(Ra,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return V.createElement(Ra,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return V.createElement(Ra,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),V.createElement(he,{title:"Timing",description:"When the action should take place.",htmlFor:"timing-"+t.id},V.createElement(Pa,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function Ra(e){const{id:t,definitionCanonical:n}=e.action,a=(null==n?void 0:n.startsWith(e.resourceType+"/"))?{reference:n}:void 0;return V.createElement(he,{title:e.title,description:e.description,htmlFor:t},V.createElement(jt,{name:t,resourceType:e.resourceType,defaultValue:a,loadOnFocus:!0,onChange:t=>{t?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:f(t)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}}))}function Pa(e){const t=e.action,n="timing",[a,l]=Fa(t);return V.createElement(It,{property:Aa,name:"timing[x]",defaultValue:a,defaultPropertyType:l,onChange:(a,l)=>{e.onChange(Fe(t,n,null!=l?l:n,Aa,a))}})}function Fa(e){return et({type:"PlanDefinitionAction",value:e},"timing")}let La=1;function Ma(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(La=Math.max(La,t+1))}return e}return"id-"+La++}function qa(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:Ma(e.id),action:qa(e.action)})))}var $a;function _a(e,t){return Object.assign(Object.assign({},e),{item:Ua(e.item,t)})}function Ua(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:Ua(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 Qa(e){return"choice"===e.type||"open-choice"===e.type}function Ha(e){const t=te(),n=t.getProfile(),[a,l]=A(),r=xe(e.questionnaire),[o,i]=A(),[c,u]=A({});return R((()=>{t.requestSchema("Questionnaire").then((()=>t.requestSchema("QuestionnaireResponse"))).then(l).catch(console.log)}),[t]),R((()=>{i(r?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:f(e),item:Ga(e.item)}}(r):void 0)}),[r]),a&&r?V.createElement(ve,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:f(r),subject:e.subject,source:v(n),authored:(new Date).toISOString()}))}},r.title&&V.createElement("h1",null,r.title),r.item&&V.createElement(Ka,{items:r.item,answers:c,onChange:function(e){const t={resourceType:"QuestionnaireResponse",item:e};i(t),u(x(t))}}),V.createElement(J,{type:"submit",size:"large"},e.submitButtonText||"OK")):null}function Ka(e){const[t,n]=A(Ga(e.items));function a(a,l){const r=t.slice();r[a]=l,n(r),e.onChange(r)}return V.createElement(V.Fragment,null,e.items.map(((t,n)=>{if(!Xa(t,e.answers))return null;if(t.type===$a.display)return V.createElement("p",{key:t.linkId},t.text);if(t.type===$a.group)return V.createElement(za,{key:t.linkId,item:t,answers:e.answers,onChange:e=>a(n,e)});if(t.type===$a.boolean){const e=t.initial&&t.initial.length>0?t.initial[0]:void 0;return V.createElement(Ie,{key:t.linkId,title:t.text,htmlFor:t.linkId},V.createElement(nt,{name:t.linkId,defaultValue:null==e?void 0:e.valueBoolean,onChange:e=>a(n,{linkId:t.linkId,text:t.text,answer:[{valueBoolean:e}]})}))}return V.createElement(he,{key:t.linkId,htmlFor:t.linkId,title:t.text||""},V.createElement(za,{item:t,answers:e.answers,onChange:e=>a(n,e)}))})))}function za(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 $a.group:return V.createElement("div",null,V.createElement("h3",null,t.text),t.item&&V.createElement(Ka,{items:t.item,answers:e.answers,onChange:function(n){e.onChange({linkId:t.linkId,text:t.text,item:n})}}));case $a.boolean:return V.createElement(nt,{name:a,defaultValue:null==l?void 0:l.valueBoolean,onChange:e=>r({valueBoolean:e})});case $a.decimal:return V.createElement(U,{type:"number",step:"any",name:a,defaultValue:null==l?void 0:l.valueDecimal,onChange:e=>r({valueDecimal:parseFloat(e)})});case $a.integer:return V.createElement(U,{type:"number",step:1,name:a,defaultValue:null==l?void 0:l.valueInteger,onChange:e=>r({valueInteger:parseInt(e)})});case $a.date:return V.createElement(U,{type:"date",name:a,defaultValue:null==l?void 0:l.valueDate,onChange:e=>r({valueDate:e})});case $a.dateTime:return V.createElement(pt,{type:"datetime-local",name:a,defaultValue:null==l?void 0:l.valueDateTime,onChange:e=>r({valueDateTime:e})});case $a.time:return V.createElement(U,{type:"time",name:a,defaultValue:null==l?void 0:l.valueTime,onChange:e=>r({valueTime:e})});case $a.string:return V.createElement(U,{type:"text",name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case $a.text:return V.createElement(gt,{name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case $a.url:return V.createElement(U,{type:"url",name:a,defaultValue:null==l?void 0:l.valueUri,onChange:e=>r({valueUri:e})});case $a.attachment:return V.createElement(ce,{name:a,defaultValue:null==l?void 0:l.valueAttachment,onChange:e=>r({valueAttachment:e})});case $a.reference:return V.createElement(St,{name:a,defaultValue:null==l?void 0:l.valueReference,onChange:e=>r({valueReference:e})});case $a.quantity:return V.createElement(Ct,{name:a,defaultValue:null==l?void 0:l.valueQuantity,onChange:e=>r({valueQuantity:e})});case $a.choice:case $a.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)?V.createElement(Wa,{name:a,item:t,initial:l,onChangeAnswer:r}):V.createElement(Ba,{name:a,item:t,initial:l,onChangeAnswer:r})}return null}function Wa(e){const{name:t,item:n,initial:r}=e,o=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],c=p({type:"QuestionnaireItemInitial",value:r},"value");return V.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})}},V.createElement("option",null),n.answerOption&&n.answerOption.map(((e,n)=>{const a=p({type:"QuestionnaireItemAnswerOption",value:e},"value"),l=`${t}-option-${n}`;return V.createElement("option",{key:l,value:a.value,selected:c&&i(a)===i(c)},V.createElement(Ze,{property:o,propertyType:a.type,value:a.value}))})))}function Ba(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 V.createElement(V.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 V.createElement("div",{key:s,className:"medplum-questionnaire-option-row"},V.createElement("div",{className:"medplum-questionnaire-option-checkbox"},V.createElement("input",{type:"radio",id:s,name:t,value:l.value,defaultChecked:u&&i(l)===i(u),onChange:()=>o({[r]:l.value})})),V.createElement("div",null,V.createElement("label",{htmlFor:s},V.createElement(Ze,{property:c,propertyType:l.type,value:l.value}))))})))}function Ga(e){var t;return null!==(t=null==e?void 0:e.map(Ya))&&void 0!==t?t:[]}function Ya(e){var t,n;return{linkId:e.linkId,text:e.text,item:Ga(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Ja))&&void 0!==n?n:[]}}function Ja(e){return Object.assign({},e)}function Xa(e,t){if(!e.enableWhen)return!0;const n=e.enableBehavior||"any";for(const a of e.enableWhen){const e=p({type:"QuestionnaireItemEnableWhen",value:a},"answer[x]"),l=p({type:"QuestionnaireResponseItemAnswer",value:t[a.question]},"value[x]"),r=S(e,l);if("any"===n&&r)return!0;if("all"===n&&!r)return!1}return"any"!==n}function Za(e){const t=te(),n=xe(e.questionnaire),[a,l]=A(),[r,o]=A(),[i,c]=A(),[u,s]=A();function m(){s(void 0)}function d(){c(void 0)}return R((()=>{t.requestSchema("Questionnaire").then(l).catch(console.log)}),[t]),R((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||rl(),item:ol(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&r?V.createElement("div",{className:"medplum-questionnaire-builder"},V.createElement(ve,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(r)},V.createElement(el,{item:r,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),V.createElement(J,{type:"submit",size:"large"},"Save"))):null}function el(e){var t;const n=e.item,a=e.item,l="resourceType"in e.item,r=l||a.type===$a.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=D();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 V.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){ae(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){ae(t),e.setHoverKey(e.item.id)}},i?V.createElement(V.Fragment,null,l&&V.createElement("div",null,V.createElement(U,{defaultValue:n.title,onChange:e=>d("title",e)})),!r&&V.createElement("div",null,V.createElement(K,{defaultValue:a.type,onChange:e=>d("type",e)},V.createElement("option",{value:"display"},"Display"),V.createElement("optgroup",{label:"Question"},V.createElement("option",{value:"boolean"},"Boolean"),V.createElement("option",{value:"decimal"},"Decimal"),V.createElement("option",{value:"integer"},"Integer"),V.createElement("option",{value:"date"},"Date"),V.createElement("option",{value:"dateTime"},"Date/Time"),V.createElement("option",{value:"time"},"Time"),V.createElement("option",{value:"string"},"String"),V.createElement("option",{value:"text"},"Text"),V.createElement("option",{value:"url"},"URL"),V.createElement("option",{value:"choice"},"Choice"),V.createElement("option",{value:"open-choice"},"Open Choice"),V.createElement("option",{value:"attachment"},"Attachment"),V.createElement("option",{value:"reference"},"Reference"),V.createElement("option",{value:"quantity"},"Quantity")))),!l&&V.createElement(gt,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e)}),Qa(a)&&V.createElement(tl,{options:a.answerOption,onChange:e=>d("answerOption",e)})):V.createElement(V.Fragment,null,n.title&&V.createElement("h1",null,n.title),a.text&&V.createElement("p",null,a.text),!r&&V.createElement(za,{item:a,answers:{},onChange:()=>{}})),a.item&&a.item.map((t=>V.createElement("div",{key:t.id},V.createElement(el,{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&&V.createElement("div",{className:"top-actions"},i?V.createElement(U,{defaultValue:a.linkId,onChange:e=>d("linkId",e),size:4}):V.createElement("div",null,o)),V.createElement("div",{className:"bottom-actions"},r&&V.createElement(V.Fragment,null,V.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:rl(),linkId:ll("q"),type:"string",text:"Question"})}},"Add item"),V.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:rl(),linkId:ll("g"),type:"group",text:"Group"})}},"Add group")),!l&&V.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function tl(e){var t;const n=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],a=null!==(t=e.options)&&void 0!==t?t:[];return V.createElement("div",null,a.map((t=>{const[l,r]=et({type:"QuestionnaireItemAnswerOption",value:t},"value");return V.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},V.createElement("div",null,V.createElement(It,{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)}})),V.createElement("div",null,V.createElement("a",{href:"#",onClick:n=>{ae(n),e.onChange(a.filter((e=>e.id!==t.id)))}},"Remove")))})),V.createElement("a",{href:"#",onClick:t=>{ae(t),e.onChange([...a,{id:rl()}])}},"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"}($a||($a={}));let nl=1,al=1;function ll(e){return e+nl++}function rl(){return"id-"+al++}function ol(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||rl(),item:ol(e.item),answerOption:il(e.answerOption)})))}function il(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||rl()})))}function cl(e){return V.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function ul(e){var t;const n=te(),a=xe(e.value),[l,r]=A(!1),[o,i]=A();return R((()=>{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?V.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===f(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 V.createElement("div",{className:"medplum-request-group-task",key:`action-${n}`},V.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==s?void 0:s.status)?"🗹":"☐"),V.createElement("div",{className:"medplum-request-group-task-details"},V.createElement("div",{className:"medplum-request-group-task-title"},t.title),V.createElement("div",null,"Last edited by ",V.createElement(wt,{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)),V.createElement("div",null,"Status: ",V.createElement(cl,{status:(null==s?void 0:s.status)||"unknown"}))),V.createElement("div",{className:"medplum-request-group-task-actions"},m&&!p&&V.createElement(J,{onClick:()=>e.onStart(s,m)},"Start"),m&&p&&V.createElement(J,{onClick:()=>e.onEdit(s,m,p)},"Edit")))}))):null}function sl(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:ml(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 ml(e){return e&&!e.snake&&e.prev?e.prev:e}function dl(e){const t=e.entry.filter((e=>!!e.resource)).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=sl(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 pl(e){var t,n;const a=te(),[l,r]=A(e.history);if(R((()=>{!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 V.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=dl(l);return V.createElement("div",{className:"medplum-blame-container"},V.createElement("table",{className:"medplum-blame"},V.createElement("tbody",null,i.map(((e,t)=>V.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&V.createElement("td",{className:"details",rowSpan:e.span},V.createElement(H,{justifyContent:"space-between"},V.createElement(Mt,{value:e.meta.author,size:"xsmall",link:!0}),V.createElement(we,{to:vl(o,e.meta.versionId)},hl(e.meta.lastUpdated)))),V.createElement("td",{className:"line-number"},t+1),V.createElement("td",{className:"line"},V.createElement("pre",{className:"line-pre"},e.value))))))))}function vl(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function hl(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return gl(n,"year");const a=Math.floor(t/2592e3);if(a>0)return gl(a,"month");const l=Math.floor(t/86400);if(l>0)return gl(l,"day");const r=Math.floor(t/3600);if(r>0)return gl(r,"hour");const o=Math.floor(t/60);return o>0?gl(o,"minute"):gl(t,"second")}function gl(e,t){return`${e} ${1===e?t:t+"s"} ago`}function fl(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=sl(i(t,!0).match(/[^\r\n]+/g),i(n,!0).match(/[^\r\n]+/g));return V.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>V.createElement(El,{key:"delta"+t,delta:e}))))}function El(e){return V.createElement(V.Fragment,null,"...",V.createElement("br",null),e.delta.original.lines.length>0&&V.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&V.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",V.createElement("br",null))}function yl(e){var t;const n=te(),[a,l]=A(e.history);return R((()=>{!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?V.createElement("table",{className:"medplum-table"},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Author"),V.createElement("th",null,"Date"),V.createElement("th",null,"Version"))),V.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map(((e,t)=>V.createElement(bl,{key:"entry-"+t,entry:e}))))):V.createElement("div",null,"Loading...")}function bl(e){var t,n,a;const{response:l,resource:r}=e.entry;return r?V.createElement("tr",null,V.createElement("td",null,V.createElement(Mt,{value:null===(t=r.meta)||void 0===t?void 0:t.author,link:!0})),V.createElement("td",null,d(null===(n=r.meta)||void 0===n?void 0:n.lastUpdated)),V.createElement("td",null,V.createElement(we,{to:Cl(r)},null===(a=r.meta)||void 0===a?void 0:a.versionId))):V.createElement("tr",null,V.createElement("td",{colSpan:3},N(null==l?void 0:l.outcome)))}function Cl(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function kl(e){const{onChangeMonth:t,onClick:n}=e,[a,l]=A(Ol);function r(e){l((n=>{const a=new Date(n.getTime());return a.setMonth(n.getMonth()+e),t(a),a}))}const o=L((()=>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:Tl(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 V.createElement("div",null,V.createElement(H,null,V.createElement("p",{style:{flex:1}},(i=a).toLocaleString("default",{month:"long"})+" "+i.getFullYear()),V.createElement("p",null,V.createElement(J,{label:"Previous month",onClick:()=>r(-1)},"<"),V.createElement(J,{label:"Next month",onClick:()=>r(1)},">"))),V.createElement("table",{className:"medplum-calendar-table"},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"SUN"),V.createElement("th",null,"MON"),V.createElement("th",null,"TUE"),V.createElement("th",null,"WED"),V.createElement("th",null,"THU"),V.createElement("th",null,"FRI"),V.createElement("th",null,"SAT"))),V.createElement("tbody",null,o.map(((e,t)=>V.createElement("tr",{key:"week-"+t},e.map(((e,t)=>V.createElement("td",{key:"day-"+t},e&&V.createElement("button",{disabled:!e.available,onClick:()=>n(e.date)},e.date.getDate()))))))))));var i}function Ol(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Tl(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 wl(e){var t;const n=te(),a=xe(e.schedule),l=xe(e.questionnaire),[r,o]=A();D().current=r;const[i,c]=A(Ol()),[u,s]=A(),[m,d]=A(),[p,v]=A();if(R((()=>{a?(o([]),n.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",f(a)],["start","gt"+jl(i)],["start","lt"+Sl(i)]])).then(o).catch(console.log)):o(void 0)}),[n,a,i]),!a||!r||!l)return null;const h=null===(t=a.actor)||void 0===t?void 0:t[0];return V.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},V.createElement("div",{className:"medplum-calendar-info-pane"},h&&V.createElement(Ne,{value:h,size:"large"}),h&&V.createElement("h1",null,V.createElement(wt,{value:h})),V.createElement("p",null,"1 hour"),u&&V.createElement("p",null,u.toLocaleDateString()),m&&V.createElement("p",null,Nl(new Date(m.start)))),V.createElement("div",{className:"medplum-calendar-selection-pane"},!u&&V.createElement("div",null,V.createElement("h3",null,"Select date"),V.createElement(kl,{slots:r,onChangeMonth:c,onClick:s})),u&&!m&&V.createElement("div",null,V.createElement("h3",null,"Select time"),r.map((e=>{const t=new Date(e.start);return t.getTime()>u.getTime()&&t.getTime()<u.getTime()+864e5&&V.createElement("div",{key:e.id},V.createElement(J,{style:{width:150},onClick:()=>d(e)},Nl(t)))}))),u&&m&&!p&&V.createElement(Ha,{questionnaire:l,submitButtonText:"Next",onSubmit:v}),u&&m&&p&&V.createElement("div",null,V.createElement("h3",null,"You're all set!"),V.createElement("p",null,"Check your email for a calendar invite."))))}function jl(e){return xl(e.getTime())}function Sl(e){return xl(e.getTime()+26784e5)}function xl(e){return new Date(Math.max(Date.now(),e)).toISOString()}function Nl(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function Vl(e){return V.createElement(ln,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${f(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${f(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${f(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${f(e)}&_sort=-_lastUpdated`}}]}),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 Al(e){let t="medplum-tab";function n(t){ae(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),V.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function Dl(e){return V.createElement(Gt,{className:"medplum-surface",height:50},V.createElement("div",{role:"tablist",className:"medplum-tablist"},V.createElement("div",{className:"medplum-tablist-foreground"},V.Children.map(e.children,((t,n)=>V.isValidElement(t)&&t.type===Al?V.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function Il(e){return V.createElement("div",{role:"tabpanel"},e.children)}function Rl(e){return V.createElement(V.Fragment,null,V.Children.map(e.children,(t=>V.isValidElement(t)&&t.type===Il&&t.props.name===e.value?t:null)))}export{$ as AddressDisplay,B as AddressInput,Y as AttachmentArrayDisplay,ie as AttachmentArrayInput,ce as AttachmentInput,De as Autocomplete,Ne as Avatar,Lt as BackboneElementInput,J as Button,nt as Checkbox,Ie as CheckboxFormSection,ut as CodeInput,_e as CodeableConceptDisplay,at as CodeableConceptInput,Qe as ContactDetailDisplay,dt as ContactDetailInput,Ue as ContactPointDisplay,mt as ContactPointInput,pt as DateTimeInput,dn as DefaultResourceTimeline,Le as DescriptionList,Me as DescriptionListEntry,qt as DiagnosticReportDisplay,ue as Document,Rt as ElementDefinitionInputSelector,Pt as ElementDefinitionTypeInput,pn as EncounterTimeline,Yt as ErrorBoundary,ya as FhirPathTable,Ca as FooterLinks,ve as Form,he as FormSection,wa as Header,He as HumanNameDisplay,Et as HumanNameInput,yt as IdentifierInput,U as Input,H as InputRow,Ht as Loading,ge as Logo,we as MedplumLink,Z as MedplumProvider,ba as MemoizedFhirPathTable,ga as MemoizedSearchControl,Kt as MenuItem,$t as ObservationTable,Sa as PatientTimeline,xa as PlanDefinitionBuilder,Jt as Popup,Za as QuestionnaireBuilder,Ha as QuestionnaireForm,za as QuestionnaireFormItem,$a as QuestionnaireItemType,Be as RangeDisplay,Ot as RangeInput,St as ReferenceInput,Te as RegisterForm,ul as RequestGroupDisplay,Xe as ResourceArrayDisplay,xt as ResourceArrayInput,Mt as ResourceBadge,pl as ResourceBlame,fl as ResourceDiff,Pe as ResourceForm,yl as ResourceHistoryTable,jt as ResourceInput,wt as ResourceName,Ze as ResourcePropertyDisplay,It as ResourcePropertyInput,Bt as ResourceTable,ln as ResourceTimeline,wl as Scheduler,Gt as Scrollable,da as SearchChangeEvent,va as SearchClickEvent,ha as SearchControl,Gn as SearchFieldEditor,Zn as SearchFilterEditor,pa as SearchLoadEvent,K as Select,Vl as ServiceRequestTimeline,Ae as SignInForm,cl as StatusBadge,Al as Tab,Dl as TabList,Il as TabPanel,Rl as TabSwitch,gt as TextArea,Xt as Timeline,Zt as TimelineItem,ma as TitleBar,oe as UploadButton,In as addDateEqualsFilter,Rn as addDateFilter,Pn as addDateFilterBetween,kn as addField,Cn as addFilter,xn as addLastMonthFilter,Ln as addMissingFilter,Vn as addNextMonthFilter,_a as addQuestionnaireInitialValues,Nn as addThisMonthFilter,wn as addTodayFilter,jn as addTomorrowFilter,Dn as addYearToDateFilter,Tn as addYesterdayFilter,Wn as buildFieldNameString,yn as clearFilters,bn as clearFiltersOnField,vt as convertIsoToLocal,ht as convertLocalToIso,Ee as createScriptTag,On as deleteFilter,Ge as formatRangeString,zn as getOpString,ke as getRecaptcha,Kn as getSearchOperators,Qn as getSortField,hl as getTimeString,et as getValueAndType,Mn as hasFilterOnField,Ce as initRecaptcha,Qa as isChoiceQuestion,Xa as isQuestionEnabled,Hn as isSortDescending,$n as movePage,me as parseForm,Bn as renderValue,En as setFilters,qn as setOffset,Fe as setPropertyValue,_n as setSort,en as sortByDateAndPriority,Un as toggleSort,te as useMedplum,ee as useMedplumContext,ne as useMedplumProfile,xe as useResource};
|
|
2
2
|
//# sourceMappingURL=index.min.js.map
|