@medplum/react 0.10.0 → 0.10.1

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.
Files changed (75) hide show
  1. package/dist/cjs/CodeableConceptInput.d.ts +1 -1
  2. package/dist/cjs/CodingInput.d.ts +1 -1
  3. package/dist/cjs/DiagnosticReportDisplay.d.ts +0 -1
  4. package/dist/cjs/ResourceHistoryTable.d.ts +0 -1
  5. package/dist/cjs/StatusBadge.d.ts +0 -1
  6. package/dist/cjs/ValueSetAutocomplete.d.ts +1 -1
  7. package/dist/cjs/index.d.ts +0 -7
  8. package/dist/cjs/index.js +120 -121
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/index.min.js +1 -1
  11. package/dist/cjs/index.min.js.map +1 -1
  12. package/dist/cjs/stories/{Tabs.stories.d.ts → CodeInput.stories.d.ts} +1 -1
  13. package/dist/{esm/stories/Tabs.stories.d.ts → cjs/stories/CodeableConceptInput.stories.d.ts} +1 -1
  14. package/dist/cjs/styles.css +7 -195
  15. package/dist/esm/CodeInput.js +2 -2
  16. package/dist/esm/CodeInput.js.map +1 -1
  17. package/dist/esm/CodeableConceptInput.d.ts +1 -1
  18. package/dist/esm/CodeableConceptInput.js +1 -1
  19. package/dist/esm/CodeableConceptInput.js.map +1 -1
  20. package/dist/esm/CodingInput.d.ts +1 -1
  21. package/dist/esm/CodingInput.js +1 -1
  22. package/dist/esm/CodingInput.js.map +1 -1
  23. package/dist/esm/DiagnosticReportDisplay.d.ts +0 -1
  24. package/dist/esm/DiagnosticReportDisplay.js +6 -2
  25. package/dist/esm/DiagnosticReportDisplay.js.map +1 -1
  26. package/dist/esm/ResourceHistoryTable.d.ts +0 -1
  27. package/dist/esm/ResourceHistoryTable.js +2 -1
  28. package/dist/esm/ResourceHistoryTable.js.map +1 -1
  29. package/dist/esm/ResourceTimeline.js +11 -9
  30. package/dist/esm/ResourceTimeline.js.map +1 -1
  31. package/dist/esm/SearchFilterEditor.js +4 -3
  32. package/dist/esm/SearchFilterEditor.js.map +1 -1
  33. package/dist/esm/StatusBadge.d.ts +0 -1
  34. package/dist/esm/StatusBadge.js +55 -1
  35. package/dist/esm/StatusBadge.js.map +1 -1
  36. package/dist/esm/ValueSetAutocomplete.d.ts +1 -1
  37. package/dist/esm/ValueSetAutocomplete.js +48 -40
  38. package/dist/esm/ValueSetAutocomplete.js.map +1 -1
  39. package/dist/esm/index.d.ts +0 -7
  40. package/dist/esm/index.js +0 -7
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/index.min.js +1 -1
  43. package/dist/esm/index.min.js.map +1 -1
  44. package/dist/esm/stories/CodeInput.stories.d.ts +6 -0
  45. package/dist/esm/stories/CodeableConceptInput.stories.d.ts +6 -0
  46. package/dist/esm/styles.css +7 -195
  47. package/package.json +5 -5
  48. package/dist/cjs/FooterLinks.d.ts +0 -6
  49. package/dist/cjs/Scrollable.d.ts +0 -9
  50. package/dist/cjs/Tab.d.ts +0 -12
  51. package/dist/cjs/TabList.d.ts +0 -10
  52. package/dist/cjs/TabPanel.d.ts +0 -6
  53. package/dist/cjs/TabSwitch.d.ts +0 -6
  54. package/dist/cjs/TitleBar.d.ts +0 -6
  55. package/dist/esm/FooterLinks.d.ts +0 -6
  56. package/dist/esm/FooterLinks.js +0 -8
  57. package/dist/esm/FooterLinks.js.map +0 -1
  58. package/dist/esm/Scrollable.d.ts +0 -9
  59. package/dist/esm/Scrollable.js +0 -12
  60. package/dist/esm/Scrollable.js.map +0 -1
  61. package/dist/esm/Tab.d.ts +0 -12
  62. package/dist/esm/Tab.js +0 -19
  63. package/dist/esm/Tab.js.map +0 -1
  64. package/dist/esm/TabList.d.ts +0 -10
  65. package/dist/esm/TabList.js +0 -23
  66. package/dist/esm/TabList.js.map +0 -1
  67. package/dist/esm/TabPanel.d.ts +0 -6
  68. package/dist/esm/TabPanel.js +0 -8
  69. package/dist/esm/TabPanel.js.map +0 -1
  70. package/dist/esm/TabSwitch.d.ts +0 -6
  71. package/dist/esm/TabSwitch.js +0 -16
  72. package/dist/esm/TabSwitch.js.map +0 -1
  73. package/dist/esm/TitleBar.d.ts +0 -6
  74. package/dist/esm/TitleBar.js +0 -8
  75. package/dist/esm/TitleBar.js.map +0 -1
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@medplum/core"),require("react"),require("@mantine/core"),require("@tabler/icons"),require("react-router-dom")):"function"==typeof define&&define.amd?define(["exports","@medplum/core","react","@mantine/core","@tabler/icons","react-router-dom"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).medplum=e.medplum||{},e.medplum.ui={}),e.medplum.core,e.React,e.mantine.core,e.tabler.icons,e.ReactRouterDOM)}(this,(function(e,t,n,a,l,r){"use strict";function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=u(n);function i(e){const n=e.value;return n?o.default.createElement(o.default.Fragment,null,t.formatAddress(n)):null}function c(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function d(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 s(e){const[t,l]=n.useState(e.defaultValue||{}),r=n.useRef();function u(t){l(t),e.onChange&&e.onChange(t)}return r.current=t,o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(a.NativeSelect,{"data-testid":"address-use",defaultValue:null==t?void 0:t.use,onChange:e=>{return t=e.currentTarget.value,void u(Object.assign(Object.assign({},r.current),{use:t}));var t},data:["","home","work","temp","old","billing"]}),o.default.createElement(a.NativeSelect,{"data-testid":"address-type",defaultValue:null==t?void 0:t.type,onChange:e=>{return t=e.currentTarget.value,void u(Object.assign(Object.assign({},r.current),{type:t}));var t},data:["","postal","physical","both"]}),o.default.createElement(a.TextInput,{placeholder:"Line 1",defaultValue:c(t,0),onChange:e=>{return t=e.currentTarget.value,void u(d(r.current||{},0,t));var t}}),o.default.createElement(a.TextInput,{placeholder:"Line 2",defaultValue:c(t,1),onChange:e=>{return t=e.currentTarget.value,void u(d(r.current||{},1,t));var t}}),o.default.createElement(a.TextInput,{placeholder:"City",defaultValue:t.city,onChange:e=>{return t=e.currentTarget.value,void u(Object.assign(Object.assign({},r.current),{city:t}));var t}}),o.default.createElement(a.TextInput,{placeholder:"State",defaultValue:t.state,onChange:e=>{return t=e.currentTarget.value,void u(Object.assign(Object.assign({},r.current),{state:t}));var t}}),o.default.createElement(a.TextInput,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:e=>{return t=e.currentTarget.value,void u(Object.assign(Object.assign({},r.current),{postalCode:t}));var t}}))}function m(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?o.default.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&o.default.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:a,alt:null==t?void 0:t.title}),(null==n?void 0:n.startsWith("video/"))&&o.default.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},o.default.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&o.default.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},o.default.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),o.default.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},o.default.createElement("a",{href:null==t?void 0:t.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},(null==t?void 0:t.title)||"Download"))):null}function f(e){return o.default.createElement("div",null,e.values&&e.values.map(((t,n)=>o.default.createElement("div",{key:"attatchment-"+n},o.default.createElement(m,{value:t,maxWidth:e.maxWidth})))))}const p=n.createContext(void 0);function g(){return n.useContext(p)}function h(){return g().medplum}function v(){return g().profile}function E(e){e.preventDefault(),e.stopPropagation()}function y(e){if(b(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&b(t[0]))return!0}return!1}function b(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function C(e){const t=h(),a=n.useRef(null);function l(n){if(!n)return;if(!n.name)return;const a=n.name,l=n.type||"application/octet-stream";t.createBinary(n,a,l).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:a})})).catch((e=>{var t,n,a;alert(null===(a=null===(n=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0])||void 0===n?void 0:n.details)||void 0===a?void 0:a.text)}))}return o.default.createElement(o.default.Fragment,null,o.default.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:a,onChange:e=>function(e){E(e);const t=e.target.files;t&&Array.from(t).forEach(l)}(e)}),e.children({onClick:function(e){var t;E(e),null===(t=a.current)||void 0===t||t.click()}}))}function T(e){var t;const[r,u]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:[]),i=n.useRef();function c(t){u(t),e.onChange&&e.onChange(t)}return i.current=r,o.default.createElement("table",{style:{width:"100%"}},o.default.createElement("colgroup",null,o.default.createElement("col",{width:"97%"}),o.default.createElement("col",{width:"3%"})),o.default.createElement("tbody",null,r.map(((e,t)=>o.default.createElement("tr",{key:`${t}-${r.length}`},o.default.createElement("td",null,o.default.createElement(m,{value:e,maxWidth:200})),o.default.createElement("td",{className:"medplum-right"},o.default.createElement(a.ActionIcon,{title:"Remove",size:"sm",onClick:e=>{E(e);const n=r.slice();n.splice(t,1),c(n)}},o.default.createElement(l.IconCircleMinus,null)))))),o.default.createElement("tr",null,o.default.createElement("td",null),o.default.createElement("td",{className:"medplum-right"},o.default.createElement(C,{onUpload:e=>{c([...i.current,e])}},(e=>o.default.createElement(a.ActionIcon,Object.assign({},e,{title:"Add",size:"sm",color:"green"}),o.default.createElement(l.IconCloudUpload,{size:16}))))))))}function S(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return t?o.default.createElement(o.default.Fragment,null,o.default.createElement(m,{value:t,maxWidth:200}),o.default.createElement(a.Button,{onClick:e=>{E(e),r(void 0)}},"Remove")):o.default.createElement(C,{onUpload:r},(e=>o.default.createElement(a.Button,Object.assign({},e),"Upload...")))}function O(e){return o.default.createElement("main",{className:"medplum-document"},o.default.createElement("article",{style:{maxWidth:e.width}},e.children))}function k(e,t,n,a){return new(n||(n=Promise))((function(l,r){function u(e){try{i(a.next(e))}catch(e){r(e)}}function o(e){try{i(a.throw(e))}catch(e){r(e)}}function i(e){var t;e.done?l(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(u,o)}i((a=a.apply(e,t||[])).next())}))}function I(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?x(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&j(t,n);return t}function x(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function j(e,t){e[t.name]=t.value}function w(e){return o.default.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=I(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function P(e){return o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},o.default.createElement("title",null,"Medplum Logo"),o.default.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),o.default.createElement("path",{fill:e.fill||"#946af9",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"}),o.default.createElement("path",{fill:e.fill||"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),o.default.createElement("path",{fill:e.fill||"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),o.default.createElement("path",{fill:e.fill||"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function R(e,t){var n,a,l;return null===(l=null===(a=null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return N(null===(n=e.expression)||void 0===n?void 0:n[0],t)})))||void 0===a?void 0:a.map((e=>{var t;return null===(t=e.details)||void 0===t?void 0:t.text})))||void 0===l?void 0:l.join("\n")}function D(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return N(null===(n=e.expression)||void 0===n?void 0:n[0],t)}))}function N(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(".");return a>=0&&t.substring(a+1)===e}function A(e){const t=h(),[l,r]=n.useState();return o.default.createElement(w,{style:{maxWidth:400},onSubmit:n=>k(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){r(e)}}))},o.default.createElement("div",{className:"medplum-center"},o.default.createElement(P,{size:32}),o.default.createElement("h1",null,"Create project")),o.default.createElement(a.Stack,{spacing:"xl"},o.default.createElement(a.TextInput,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:R(l,"firstName")}),o.default.createElement(a.Text,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",o.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",o.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),".")),o.default.createElement(a.Group,{position:"right",mt:"xl",noWrap:!0},o.default.createElement(a.Button,{type:"submit"},"Create project")))}function V(e,t){const n=document.getElementsByTagName("head")[0],a=document.createElement("script");a.async=!0,a.src=e,a.onload=t||null,n.appendChild(a)}function M(e){const t=h(),{googleClientId:a,handleGoogleCredential:l}=e,r=n.useRef(null),[u,i]=n.useState("undefined"!=typeof google),[c,d]=n.useState(!1),[s,m]=n.useState(!1);return n.useEffect((()=>{"undefined"!=typeof google?(c||(google.accounts.id.initialize({client_id:a,callback:l}),d(!0)),r.current&&!s&&(google.accounts.id.renderButton(r.current,{}),m(!0))):V("https://accounts.google.com/gsi/client",(()=>i(!0)))}),[t,a,c,u,r,s,l]),a?o.default.createElement("div",{ref:r}):null}function F(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 L(e){"undefined"==typeof grecaptcha&&V("https://www.google.com/recaptcha/api.js?render="+e)}function q(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>k(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function B(e){const t=F(e.googleClientId),l=e.recaptchaSiteKey,r=h(),[u,i]=n.useState(),c=D(u,void 0);return n.useEffect((()=>L(l)),[l]),o.default.createElement(w,{style:{maxWidth:400},onSubmit:t=>k(this,void 0,void 0,(function*(){try{const n=yield q(l);e.handleAuthResponse(yield r.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:l,recaptchaToken:n}))}catch(e){i(e)}}))},o.default.createElement("div",{className:"medplum-center"},e.children),c&&o.default.createElement("div",{className:"medplum-input-error"},c.map((e=>{var t,n;return o.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),t&&o.default.createElement(o.default.Fragment,null,o.default.createElement(a.Group,{position:"center",p:"xl",style:{height:70}},o.default.createElement(M,{googleClientId:t,handleGoogleCredential:t=>k(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield r.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){i(e)}}))})),o.default.createElement(a.Divider,{label:"or",labelPosition:"center",my:"lg"})),o.default.createElement(a.Stack,{spacing:"xl"},o.default.createElement(a.TextInput,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:R(u,"firstName")}),o.default.createElement(a.TextInput,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:R(u,"lastName")}),o.default.createElement(a.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:R(u,"email")}),o.default.createElement(a.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,error:R(u,"password")}),o.default.createElement(a.Text,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",o.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",o.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),o.default.createElement(a.Text,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",o.default.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",o.default.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply.")),o.default.createElement(a.Group,{position:"apart",mt:"xl",noWrap:!0},o.default.createElement(a.Checkbox,{name:"remember",label:"Remember me",size:"xs"}),o.default.createElement(a.Button,{type:"submit"},"Create account")))}function _(e){const t=h(),l=F(e.googleClientId),[r,u]=n.useState(),i=D(r,void 0);function c(){return k(this,void 0,void 0,(function*(){e.generatePkce&&(yield t.startPkce())}))}return o.default.createElement(w,{style:{maxWidth:400},onSubmit:n=>{c().then((()=>t.startLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,email:n.email,password:n.password,remember:"true"===n.remember}))).then(e.handleAuthResponse).catch(u)}},o.default.createElement("div",{className:"medplum-center"},e.children),i&&o.default.createElement("div",{className:"medplum-input-error"},i.map((e=>{var t,n;return o.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),l&&o.default.createElement(o.default.Fragment,null,o.default.createElement(a.Group,{position:"center",p:"xl",style:{height:70}},o.default.createElement(M,{googleClientId:l,handleGoogleCredential:n=>{c().then((()=>t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,googleClientId:n.clientId,googleCredential:n.credential}))).then(e.handleAuthResponse).catch(u)}})),o.default.createElement(a.Divider,{label:"or",labelPosition:"center",my:"lg"})),o.default.createElement(a.Stack,{spacing:"xl"},o.default.createElement(a.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0,error:R(r,"email")}),o.default.createElement(a.PasswordInput,{name:"password",type:"password",label:"Password",autoComplete:"off",required:!0,error:R(r,"password")})),o.default.createElement(a.Group,{position:"apart",mt:"xl",noWrap:!0},e.onForgotPassword&&o.default.createElement(a.Anchor,{component:"button",type:"button",color:"dimmed",onClick:e.onForgotPassword,size:"xs"},"Forgot password"),e.onRegister&&o.default.createElement(a.Anchor,{component:"button",type:"button",color:"dimmed",onClick:e.onRegister,size:"xs"},"Register"),o.default.createElement(a.Checkbox,{name:"remember",label:"Remember me",size:"xs"}),o.default.createElement(a.Button,{type:"submit"},"Sign in")))}function z(e){const t=h();return o.default.createElement(a.Stack,null,o.default.createElement("div",{className:"medplum-center"},o.default.createElement(P,{size:32}),o.default.createElement(a.Text,{size:"lg",weight:500},"Choose profile")),e.memberships.map((n=>{var l,r;return o.default.createElement(a.UnstyledButton,{key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse).catch(console.log)}},o.default.createElement(a.Group,null,o.default.createElement(a.Avatar,{radius:"xl"}),o.default.createElement("div",{style:{flex:1}},o.default.createElement(a.Text,{size:"sm",weight:500},null===(l=n.profile)||void 0===l?void 0:l.display),o.default.createElement(a.Text,{color:"dimmed",size:"xs"},null===(r=n.project)||void 0===r?void 0:r.display))))})))}function U(e){return o.default.createElement("div",{className:"medplum-checkbox-form-section"},o.default.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),o.default.createElement("div",{className:"medplum-checkbox-form-section-details-container"},o.default.createElement("label",{htmlFor:e.htmlFor},e.title),o.default.createElement("p",null,e.description)))}const Q=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function $(e){const t=D(e.outcome,e.htmlFor),n=t&&t.length>0;return o.default.createElement("fieldset",{className:"medplum-form-section"},e.title&&o.default.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&o.default.createElement("p",null,e.description),e.children,n&&o.default.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return o.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))))}const W={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function G(e){const t=h(),[a,l]=n.useState(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?W:e.getCachedReference(t);return}(t,e));return n.useEffect((()=>{let n=!0;return!a&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{n&&l(e)})).catch((()=>l(void 0))),()=>n=!1}),[t,a,e]),a}function H(e,n,a,l,r){const u=l.type;if(u.length>1)for(const a of u){const l=n.replace("[x]",t.capitalize(a.code));l in e&&delete e[l]}return e[a]=r,e}function K(e){return o.default.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function J(e){return o.default.createElement(o.default.Fragment,null,o.default.createElement("dt",null,e.term),o.default.createElement("dd",null,e.children))}function Y(e){const n=e.value,a=n.value;if(!a)return null;const l=n.type,r=t.globalSchema.types[l];return r?"object"==typeof a&&"name"in a&&1===Object.keys(a).length?o.default.createElement("div",null,a.name):o.default.createElement(K,{compact:e.compact},Object.entries(r.properties).map((a=>{const l=a[0];if(Q.indexOf(l)>=0)return null;const r=a[1],[u,i]=fe(n,l);return e.ignoreMissingValues&&(!u||Array.isArray(u)&&0===u.length)?null:o.default.createElement(J,{key:l,term:t.getPropertyDisplayName(l)},o.default.createElement(me,{property:r,propertyType:i,value:u,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):o.default.createElement("div",null,l," not implemented")}function X(e){var t,n;return o.default.createElement(o.default.Fragment,null,(null===(t=e.value)||void 0===t?void 0:t.display)||(null===(n=e.value)||void 0===n?void 0:n.code))}function Z(e){const t=e.value;return t?t.text?o.default.createElement(o.default.Fragment,null,t.text):t.coding?o.default.createElement(o.default.Fragment,null,t.coding.map(((e,t)=>o.default.createElement(o.default.Fragment,{key:"coding-"+t},t>0&&o.default.createElement(o.default.Fragment,null,", "),o.default.createElement(X,{value:e}))))):null:null}function ee(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("]")),o.default.createElement(o.default.Fragment,null,n.join("").trim())}function te(e){var t;const n=e.value;return n?o.default.createElement(o.default.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>o.default.createElement(ee,{key:"telecom-"+t,value:e})))):null}function ne(e){const n=e.value;return n?o.default.createElement(o.default.Fragment,null,t.formatHumanName(n,e.options)):null}function ae(e){var t,n;return o.default.createElement("div",null,null===(t=e.value)||void 0===t?void 0:t.system,": ",null===(n=e.value)||void 0===n?void 0:n.value)}function le(e){return o.default.createElement(o.default.Fragment,null,re(e.value))}function re(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 ue(e){return o.default.createElement(o.default.Fragment,null,oe(e.value))}function oe(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${re(e.low)}`:!e.low&&e.high?`<= ${re(e.high)}`:`${re(e.low)} - ${re(e.high)}`:""}function ie(e){const t=e.value;return t?o.default.createElement(o.default.Fragment,null,o.default.createElement(le,{value:t.numerator})," / ",o.default.createElement(le,{value:t.denominator})):null}function ce(e){const t=r.useNavigate();let n=function(e){if(e){if("string"==typeof e)return function(e){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/"))return e;return"/"+e}(e);if("resourceType"in e)return function(e){return`/${e.resourceType}/${e.id}`}(e);if("reference"in e)return function(e){return`/${e.reference}`}(e)}return"#"}(e.to);return e.suffix&&(n+="/"+e.suffix),o.default.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{E(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function de(e){if(!e.value)return null;const n=e.value.display||e.value.reference||t.stringify(e.value);return!1!==e.link&&e.value.reference?o.default.createElement(ce,{to:e.value},n):o.default.createElement(o.default.Fragment,null,n)}function se(e){var t,n,a;const l=e.property,r=null!==(t=e.values)&&void 0!==t?t:[],u=null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code;return o.default.createElement(o.default.Fragment,null,r.map(((t,n)=>o.default.createElement("div",{key:`${n}-${r.length}`},o.default.createElement(me,{arrayElement:!0,property:l,propertyType:u,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function me(e){var n;const{property:a,propertyType:l,value:r}=e;if("*"===(null==a?void 0:a.max)&&!e.arrayElement)return"Attachment"===l?o.default.createElement(f,{values:r,maxWidth:e.maxWidth}):o.default.createElement(se,{property:a,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(l){case t.PropertyType.boolean:return o.default.createElement("div",null,void 0===r?"":Boolean(r).toString());case t.PropertyType.SystemString:case t.PropertyType.code:case t.PropertyType.date:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.string:case t.PropertyType.unsignedInt:case t.PropertyType.uri:case t.PropertyType.url:return o.default.createElement("div",null,r);case t.PropertyType.canonical:return o.default.createElement(de,{value:{reference:r},link:e.link});case t.PropertyType.dateTime:case t.PropertyType.instant:return o.default.createElement("div",null,t.formatDateTime(r));case t.PropertyType.markdown:return o.default.createElement("pre",null,r);case t.PropertyType.Address:return o.default.createElement(i,{value:r});case t.PropertyType.Annotation:return o.default.createElement("div",null,null==r?void 0:r.text);case t.PropertyType.Attachment:return o.default.createElement(m,{value:r,maxWidth:e.maxWidth});case t.PropertyType.CodeableConcept:return o.default.createElement(Z,{value:r});case t.PropertyType.Coding:return o.default.createElement(X,{value:r});case t.PropertyType.ContactDetail:return o.default.createElement(te,{value:r});case t.PropertyType.ContactPoint:return o.default.createElement(ee,{value:r});case t.PropertyType.HumanName:return o.default.createElement(ne,{value:r});case t.PropertyType.Identifier:return o.default.createElement(ae,{value:r});case t.PropertyType.Period:return o.default.createElement("div",null,t.formatPeriod(r));case t.PropertyType.Quantity:return o.default.createElement(le,{value:r});case t.PropertyType.Range:return o.default.createElement(ue,{value:r});case t.PropertyType.Ratio:return o.default.createElement(ie,{value:r});case t.PropertyType.Reference:return o.default.createElement(de,{value:r,link:e.link});case t.PropertyType.Timing:return o.default.createElement("div",null,t.formatTiming(r));default:if(!(null==a?void 0:a.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return o.default.createElement(Y,{value:{type:t.buildTypeName(null===(n=null==a?void 0:a.path)||void 0===n?void 0:n.split(".")),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function fe(e,n){const a=t.getTypedPropertyValue(e,n);return a?Array.isArray(a)?[a.map((e=>e.value)),a[0].type]:[a.value,a.type]:[void 0,"undefined"]}function pe(e){const l=v(),[r,u]=n.useState(e.defaultValue||{});return n.useRef().current=r,o.default.createElement(a.TextInput,{name:e.name,placeholder:"Annotation text",defaultValue:r.text,onChange:n=>function(n){const a=n?{text:n,authorReference:l&&t.createReference(l),time:(new Date).toISOString()}:{};u(a),e.onChange&&e.onChange(a)}(n.currentTarget.value)})}function ge(e){const t=h(),l=e.defaultValue,[r,u]=n.useState(l),[i,c]=n.useState(l?he(l):""),[d,s]=n.useState(!1),[m,f]=n.useState([]);function p(n){var a,l;return k(this,void 0,void 0,(function*(){s(!0);const r=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet,u=yield t.searchValueSet(r,n),o=null===(l=u.expansion)||void 0===l?void 0:l.contains;f(o.map((e=>({value:he(e),element:e})))),s(!1)}))}return o.default.createElement(a.Autocomplete,{value:i,data:m,placeholder:e.placeholder,onFocus:()=>p(i),onBlur:()=>function(t){if(!r){const n={display:t,code:t};u(n),e.onChange&&e.onChange(n)}}(i),onChange:function(e){return k(this,void 0,void 0,(function*(){return c(e),p(e)}))},onItemSubmit:function(t){u(t.element),c(t.value),f([]),e.onChange&&e.onChange(t.element)},rightSection:d?o.default.createElement(a.Loader,{size:16}):null})}function he(e){return e.display||e.code||""}function ve(e){const[t,a]=n.useState(e.defaultValue);return o.default.createElement(ge,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(l=t,{system:null===(u=null===(r=l.coding)||void 0===r?void 0:r[0])||void 0===u?void 0:u.system,code:null===(c=null===(i=l.coding)||void 0===i?void 0:i[0])||void 0===c?void 0:c.code,display:null===(s=null===(d=l.coding)||void 0===d?void 0:d[0])||void 0===s?void 0:s.display}),onChange:function(t){const n={text:(l=t).display,coding:[{system:l.system,code:l.code,display:l.display}]};var l;a(n),e.onChange&&e.onChange(n)}});var l,r,u,i,c,d,s}function Ee(e){const[t,a]=n.useState(e.defaultValue);return o.default.createElement(ge,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:(l=t,{code:l}),onChange:function(t){const n=t.code;a(n),e.onChange&&e.onChange(n)}});var l}function ye(e){const[t,a]=n.useState(e.defaultValue);return o.default.createElement(ge,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(l=t,{system:l.system,code:l.code,display:l.display}),onChange:function(t){const n={system:(l=t).system,code:l.code,display:l.display};var l;a(n),e.onChange&&e.onChange(n)}});var l}function be(e){const[t,l]=n.useState(e.defaultValue),r=n.useRef();function u(t){t&&0===Object.keys(t).length&&(t=void 0),l(t),e.onChange&&e.onChange(t)}return r.current=t,o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(a.NativeSelect,{"data-testid":"system",defaultValue:null==t?void 0:t.system,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{system:e});e||delete t.system,u(t)}(e.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),o.default.createElement(a.NativeSelect,{"data-testid":"use",defaultValue:null==t?void 0:t.use,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{use:e});e||delete t.use,u(t)}(e.currentTarget.value),data:["","home","work","temp","old","mobile"]}),o.default.createElement(a.TextInput,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{value:e});e||delete t.value,u(t)}(e.currentTarget.value)}))}function Ce(e){var t;const[l,r]=n.useState(e.defaultValue),u=n.useRef();function i(t){r(t),e.onChange&&e.onChange(t)}return u.current=l,o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(a.TextInput,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:null==l?void 0:l.name,onChange:e=>function(e){const t=Object.assign(Object.assign({},u.current),{name:e});e||delete t.name,i(t)}(e.currentTarget.value)}),o.default.createElement(be,{name:e.name+"-telecom",defaultValue:null===(t=null==l?void 0:l.telecom)||void 0===t?void 0:t[0],onChange:function(e){const t=Object.assign(Object.assign({},u.current),{telecom:e&&[e]});e||delete t.telecom,i(t)}}))}function Te(e){return o.default.createElement(a.TextInput,{id:e.name,name:e.name,"data-testid":e.name,placeholder:e.placeholder,type:"datetime-local",defaultValue:Se(e.defaultValue),error:R(e.outcome,e.name),onChange:t=>{if(e.onChange){const n=t.currentTarget.value;e.onChange(Oe(n))}}})}function Se(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toLocaleDateString("sv")+"T"+n.toLocaleTimeString("sv"):""}function Oe(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toISOString():""}function ke(e){return o.default.createElement(a.JsonInput,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:t.stringify(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Ie(e){var t,l,r;const[u,i]=n.useState(e.defaultValue),c=n.useRef();function d(t){i(t),e.onChange&&e.onChange(t)}return c.current=u,o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(a.NativeSelect,{defaultValue:null==u?void 0:u.use,"data-testid":"use",onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{use:t||void 0}));var t},data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),o.default.createElement(a.TextInput,{placeholder:"Prefix",defaultValue:null===(t=null==u?void 0:u.prefix)||void 0===t?void 0:t.join(" "),onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{prefix:t?t.split(" "):void 0}));var t}}),o.default.createElement(a.TextInput,{placeholder:"Given",defaultValue:null===(l=null==u?void 0:u.given)||void 0===l?void 0:l.join(" "),onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{given:t?t.split(" "):void 0}));var t}}),o.default.createElement(a.TextInput,{placeholder:"Family",defaultValue:null==u?void 0:u.family,onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{family:t||void 0}));var t}}),o.default.createElement(a.TextInput,{placeholder:"Suffix",defaultValue:null===(r=null==u?void 0:u.suffix)||void 0===r?void 0:r.join(" "),onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{suffix:t?t.split(" "):void 0}));var t}}))}function xe(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(a.TextInput,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>r(Object.assign(Object.assign({},t),{system:e.currentTarget.value}))}),o.default.createElement(a.TextInput,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>r(Object.assign(Object.assign({},t),{value:e.currentTarget.value}))}))}function je(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(Te,{name:e.name+".start",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>r(Object.assign(Object.assign({},t),{start:e}))}),o.default.createElement(Te,{name:e.name+".end",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>r(Object.assign(Object.assign({},t),{end:e}))}))}function we(e){var t;const[l,r]=n.useState(e.defaultValue);function u(t){r(t),e.onChange&&e.onChange(t)}return o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(a.NativeSelect,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:null==l?void 0:l.comparator,data:["","<","<=",">=",">"],onChange:e=>u(Object.assign(Object.assign({},l),{comparator:e.currentTarget.value}))}),o.default.createElement(a.TextInput,{id:e.name,name:e.name,"data-testid":e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==l?void 0:l.value)||void 0===t?void 0:t.toString(),onChange:e=>u(Object.assign(Object.assign({},l),{value:Pe(e.currentTarget.value)}))}),o.default.createElement(a.TextInput,{placeholder:"Unit",defaultValue:null==l?void 0:l.unit,onChange:e=>u(Object.assign(Object.assign({},l),{unit:e.currentTarget.value}))}))}function Pe(e){if(e)return parseFloat(e)}function Re(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(we,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>r(Object.assign(Object.assign({},t),{low:e}))}),o.default.createElement(we,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>r(Object.assign(Object.assign({},t),{high:e}))}))}function De(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(we,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>r(Object.assign(Object.assign({},t),{numerator:e}))}),o.default.createElement(we,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>r(Object.assign(Object.assign({},t),{denominator:e}))}))}function Ne(e){var n,l,r;const u=G(e.value),i=u?t.getDisplayString(u):null!==(n=e.alt)&&void 0!==n?n:"",c=null!==(l=u&&t.getImageSrc(u))&&void 0!==l?l:e.src,d=null!==(r=e.radius)&&void 0!==r?r:"xl",s=Object.assign({},e);return delete s.value,delete s.link,e.link?o.default.createElement(ce,{to:u},o.default.createElement(a.Avatar,Object.assign({src:c,alt:i,radius:d},s))):o.default.createElement(a.Avatar,Object.assign({src:c,alt:i,radius:d},s))}function Ae(e){const l=h(),r=G(e.defaultValue),[u,i]=n.useState(r?t.getDisplayString(r):""),[c,d]=n.useState(!1),[s,m]=n.useState([]);function f(n){return k(this,void 0,void 0,(function*(){d(!0);const a=yield l.searchResources(e.resourceType,"name="+encodeURIComponent(n)+"&_count=10");m(a.map((e=>({value:t.getDisplayString(e),resource:e})))),d(!1)}))}return o.default.createElement(a.Autocomplete,{itemComponent:Ve,value:u,data:s,placeholder:e.placeholder,onFocus:()=>f(u),onChange:function(e){return k(this,void 0,void 0,(function*(){return i(e),f(e)}))},onItemSubmit:function(t){i(t.value),m([]),e.onChange&&e.onChange(t.resource)},rightSection:c?o.default.createElement(a.Loader,{size:16}):null})}const Ve=n.forwardRef(((e,t)=>{var{value:n,resource:l}=e,r=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var l=0;for(a=Object.getOwnPropertySymbols(e);l<a.length;l++)t.indexOf(a[l])<0&&Object.prototype.propertyIsEnumerable.call(e,a[l])&&(n[a[l]]=e[a[l]])}return n}(e,["value","resource"]);return o.default.createElement("div",Object.assign({ref:t},r),o.default.createElement(a.Group,{noWrap:!0},o.default.createElement(Ne,{value:l}),o.default.createElement("div",null,o.default.createElement(a.Text,null,n),o.default.createElement(a.Text,{size:"xs",color:"dimmed"},l.birthDate))))}));function Me(e){const l=e.targetTypes,r=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,l),[u,i]=n.useState(e.defaultValue),[c,d]=n.useState(r);n.useRef().current=u;return n.useRef().current=c,o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},l?o.default.createElement(a.NativeSelect,{"data-testid":"reference-input-resource-type-select",defaultValue:c,onChange:e=>d(e.currentTarget.value),data:l}):o.default.createElement(a.TextInput,{"data-testid":"reference-input-resource-type-input",defaultValue:c,onChange:e=>d(e.currentTarget.value)}),o.default.createElement(Ae,{resourceType:c,name:e.name+"-id",placeholder:e.placeholder,defaultValue:u,onChange:n=>{var a;a=n?t.createReference(n):void 0,i(a),e.onChange&&e.onChange(a)}}))}function Fe(e){const[t,r]=n.useState(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),u=n.useRef();function i(t){r(t),e.onChange&&e.onChange(t)}return u.current=t,o.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},o.default.createElement("colgroup",null,o.default.createElement("col",{width:"97%"}),o.default.createElement("col",{width:"3%"})),o.default.createElement("tbody",null,t.map(((n,r)=>o.default.createElement("tr",{key:`${r}-${t.length}`},o.default.createElement("td",null,o.default.createElement(_e,{arrayElement:!0,property:e.property,name:e.name+"."+r,defaultValue:n,onChange:e=>{const t=[...u.current];t[r]=e,i(t)}})),o.default.createElement("td",{style:{textAlign:"right"}},o.default.createElement(a.ActionIcon,{title:"Remove",size:"sm",onClick:e=>{E(e);const t=[...u.current];t.splice(r,1),i(t)}},o.default.createElement(l.IconCircleMinus,null)))))),o.default.createElement("tr",null,o.default.createElement("td",null),o.default.createElement("td",{style:{textAlign:"right"}},o.default.createElement(a.ActionIcon,{title:"Add",size:"sm",color:"green",onClick:e=>{E(e);const t=[...u.current];t.push(void 0),i(t)}},o.default.createElement(l.IconCirclePlus,null))))))}const Le=["sun","mon","tue","wed","thu","fri","sat"];function qe(e){const[l,r]=n.useState(e.defaultValue||{}),[u,i]=n.useState(!1),c=n.useRef();return c.current=l,o.default.createElement(o.default.Fragment,null,o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement("span",null,t.formatTiming(c.current)||"No repeat"),o.default.createElement(a.Button,{onClick:()=>i(!0)},"Edit")),o.default.createElement(Be,{visible:u,defaultValue:c.current,onOk:t=>{e.onChange&&e.onChange(t),r(t),i(!1)},onCancel:()=>i(!1)}))}function Be(e){var t,l;const[r,u]=n.useState(e.defaultValue||{}),i=n.useRef();function c(e){u(Object.assign(Object.assign({},i.current),{repeat:e}))}function d(e,t){t?function(e){var t,n,a;const l=(null===(n=null===(t=i.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)||c(Object.assign(Object.assign({},null===(a=i.current)||void 0===a?void 0:a.repeat),{dayOfWeek:[...l,e]}))}(e):function(e){var t,n,a;const l=(null===(n=null===(t=i.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)&&c(Object.assign(Object.assign({},null===(a=i.current)||void 0===a?void 0:a.repeat),{dayOfWeek:l.filter((t=>t!==e))}))}(e)}return i.current=r,o.default.createElement(a.Modal,{title:"Timing",closeButtonLabel:"Close",opened:e.visible,onClose:()=>e.onCancel()},o.default.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},o.default.createElement($,{title:"Starts on",htmlFor:"timing-dialog-start"},o.default.createElement(Te,{name:"timing-dialog-start",onChange:e=>{return t=e,void u(Object.assign(Object.assign({},i.current),{event:[t]}));var t}})),o.default.createElement($,{title:"Repeat every",htmlFor:"timing-dialog-period"},o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(a.TextInput,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:null===(t=null==r?void 0:r.repeat)||void 0===t?void 0:t.period,onChange:e=>function(e){var t;c(Object.assign(Object.assign({},null===(t=i.current)||void 0===t?void 0:t.repeat),{period:e}))}(parseInt(e.currentTarget.value))}),o.default.createElement(a.NativeSelect,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:null===(l=null==r?void 0:r.repeat)||void 0===l?void 0:l.periodUnit,onChange:e=>function(e){var t;c(Object.assign(Object.assign({},null===(t=i.current)||void 0===t?void 0:t.repeat),{periodUnit:e}))}(e.currentTarget.value),data:[{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.default.createElement($,{title:"Repeat on"},o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},Le.map((e=>o.default.createElement(o.default.Fragment,{key:e},o.default.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),o.default.createElement(a.Checkbox,{id:"timing-dialog-repeat-"+e,name:"timing-dialog-repeat-"+e,onChange:t=>d(e,t.currentTarget.checked)}))))))),o.default.createElement(a.Button,{onClick:()=>e.onOk(r)},"OK"))}function _e(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,u=e.name,i=e.defaultValue;if("*"===l.max&&!e.arrayElement)return"Attachment"===r?o.default.createElement(T,{name:u,defaultValue:i,onChange:e.onChange}):o.default.createElement(Fe,{property:l,name:u,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?o.default.createElement(ze,Object.assign({elementDefinitionTypes:c},e)):o.default.createElement(Ue,Object.assign({elementDefinitionType:c[0]},e))}function ze(e){const l=e.elementDefinitionTypes;let r;e.defaultPropertyType&&(r=l.find((t=>t.code===e.defaultPropertyType))),r||(r=l[0]);const[u,i]=n.useState(r);return o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(a.NativeSelect,{style:{width:"200px"},defaultValue:null==u?void 0:u.code,onChange:e=>{i(l.find((t=>t.code===e.currentTarget.value)))},data:l.map((e=>({value:e.code,label:e.code})))}),o.default.createElement(Ue,Object.assign({},e,{elementDefinitionType:u,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",t.capitalize(u.code)))}})))}function Ue(e){var n;const l=e.property,r=e.elementDefinitionType.code,u=e.name,i=e.defaultValue;switch(r){case t.PropertyType.SystemString:case t.PropertyType.canonical:case t.PropertyType.string:case t.PropertyType.time:case t.PropertyType.uri:case t.PropertyType.url:return o.default.createElement(a.TextInput,{id:u,name:u,"data-testid":u,defaultValue:i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:R(e.outcome,u)});case t.PropertyType.date:return o.default.createElement(a.TextInput,{type:"date",id:u,name:u,"data-testid":u,defaultValue:i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:R(e.outcome,u)});case t.PropertyType.dateTime:case t.PropertyType.instant:return o.default.createElement(Te,{name:u,defaultValue:i,onChange:e.onChange,outcome:e.outcome});case t.PropertyType.decimal:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.unsignedInt:return o.default.createElement(a.TextInput,{type:"number",step:r===t.PropertyType.decimal?"any":"1",id:u,name:u,"data-testid":u,defaultValue:i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.valueAsNumber)}});case t.PropertyType.code:return o.default.createElement(Ee,{property:l,name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.boolean:return o.default.createElement(a.Checkbox,{id:u,name:u,"data-testid":u,defaultChecked:!!i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}});case t.PropertyType.markdown:return o.default.createElement(a.Textarea,{id:u,name:u,"data-testid":u,defaultValue:i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}});case t.PropertyType.Address:return o.default.createElement(s,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Annotation:return o.default.createElement(pe,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Attachment:return o.default.createElement(S,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.CodeableConcept:return o.default.createElement(ve,{property:l,name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Coding:return o.default.createElement(ye,{property:l,name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.ContactDetail:return o.default.createElement(Ce,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.ContactPoint:return o.default.createElement(be,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Extension:return o.default.createElement(ke,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.HumanName:return o.default.createElement(Ie,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Identifier:return o.default.createElement(xe,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Period:return o.default.createElement(je,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Quantity:return o.default.createElement(we,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Range:return o.default.createElement(Re,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Ratio:return o.default.createElement(De,{name:u,defaultValue:i,onChange:e.onChange});case t.PropertyType.Reference:return o.default.createElement(Me,{name:u,defaultValue:i,targetTypes:Qe(l),onChange:e.onChange});case t.PropertyType.Timing:return o.default.createElement(qe,{name:u,defaultValue:i,onChange:e.onChange});default:return o.default.createElement($e,{typeName:t.buildTypeName(null===(n=l.path)||void 0===n?void 0:n.split(".")),defaultValue:i,onChange:e.onChange,outcome:e.outcome})}}function Qe(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 $e(e){var a;const[l,r]=n.useState(null!==(a=e.defaultValue)&&void 0!==a?a:{});function u(t){r(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=t.globalSchema.types[i];if(!c)return o.default.createElement("div",null,i," not implemented");const d={type:i,value:l};return o.default.createElement(o.default.Fragment,null,Object.entries(c.properties).map((n=>{const a=n[0];if("id"===a||Q.indexOf(a)>=0)return null;const r=n[1];if(!r.type)return null;const[i,c]=fe(d,a);return 1===r.type.length&&"boolean"===r.type[0].code?o.default.createElement(U,{key:a,title:t.getPropertyDisplayName(a),description:r.definition,htmlFor:a},o.default.createElement(_e,{property:r,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,t)=>{u(H(l,a,null!=t?t:a,n[1],e))}})):o.default.createElement($,{key:a,title:t.getPropertyDisplayName(a),description:r.definition,htmlFor:a,outcome:e.outcome},o.default.createElement(_e,{property:r,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,t)=>{u(H(l,a,null!=t?t:a,n[1],e))}}))})))}function We(e){const n=G(e.value);if(!n)return null;const a=t.getDisplayString(n);return e.link?o.default.createElement(ce,{to:n},a):o.default.createElement("span",null,a)}function Ge(e){return o.default.createElement("div",{className:"medplum-resource-badge"},o.default.createElement(Ne,{size:24,radius:12,value:e.value,link:e.link}),o.default.createElement(We,{value:e.value,link:e.link}))}function He(e){var n,a;const l=G(e.value),r=G(null===(n=null==l?void 0:l.specimen)||void 0===n?void 0:n[0]);if(!l)return null;let u="";if(l.presentedForm&&l.presentedForm.length>0){const e=l.presentedForm[0];(null===(a=e.contentType)||void 0===a?void 0:a.startsWith("text/plain"))&&e.data&&(u=window.atob(e.data))}if(null==r?void 0:r.note)for(const e of r.note)u+=e.text+"\n\n";return o.default.createElement("div",{className:"medplum-diagnostic-report"},o.default.createElement("h1",null,"Diagnostic Report"),o.default.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&o.default.createElement("dl",null,o.default.createElement("dt",null,"Subject"),o.default.createElement("dd",null,o.default.createElement(Ge,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>o.default.createElement("dl",{key:e.reference},o.default.createElement("dt",null,"Interpreter"),o.default.createElement("dd",null,o.default.createElement(Ge,{value:e,link:!0}))))),l.issued&&o.default.createElement("dl",null,o.default.createElement("dt",null,"Issued"),o.default.createElement("dd",null,t.formatDateTime(l.issued))),l.status&&o.default.createElement("dl",null,o.default.createElement("dt",null,"Status"),o.default.createElement("dd",null,t.capitalize(l.status)))),l.result&&o.default.createElement(Ke,{value:l.result}),u&&o.default.createElement("pre",null,u.trim()))}function Ke(e){var t;return o.default.createElement("table",{className:"medplum-table"},o.default.createElement("thead",null,o.default.createElement("tr",null,o.default.createElement("th",null,"Test"),o.default.createElement("th",null,"Value"),o.default.createElement("th",null,"Reference Range"),o.default.createElement("th",null,"Interpretation"))),o.default.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>o.default.createElement(Je,{key:"obs-"+t,value:e})))))}function Je(e){const t=G(e.value);if(!t)return null;let n;return function(e){var t,n,a,l;const r=null===(l=null===(a=null===(n=null===(t=e.interpretation)||void 0===t?void 0:t[0])||void 0===n?void 0:n.coding)||void 0===a?void 0:a[0])||void 0===l?void 0:l.code;return"AA"===r||"LL"===r||"HH"===r}(t)&&(n="medplum-critical"),o.default.createElement("tr",{className:n},o.default.createElement("td",null,o.default.createElement(ce,{to:t},o.default.createElement(Z,{value:t.code}))),o.default.createElement("td",null,o.default.createElement(Ye,{value:t})),o.default.createElement("td",null,o.default.createElement(Xe,{value:t.referenceRange})),o.default.createElement("td",null,t.interpretation&&t.interpretation.length>0&&o.default.createElement(Z,{value:t.interpretation[0]})))}function Ye(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?o.default.createElement(le,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?o.default.createElement(o.default.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?o.default.createElement(o.default.Fragment,null,n.component.map(((e,t)=>o.default.createElement(Ye,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function Xe(e){const t=e.value&&e.value.length>0&&e.value[0];return t?o.default.createElement(ue,{value:t}):null}function Ze(e){const a=h(),[l,r]=n.useState();if(n.useEffect((()=>{a.requestSchema(e.original.resourceType).then(r).catch(console.log)}),[a,e.original.resourceType]),!l)return null;const u=l.types[e.original.resourceType];return u?o.default.createElement("table",{className:"medplum-diff-table"},o.default.createElement("colgroup",null,o.default.createElement("col",{style:{width:"30%"}}),o.default.createElement("col",{style:{width:"35%"}}),o.default.createElement("col",{style:{width:"35%"}})),o.default.createElement("thead",null,o.default.createElement("tr",null,o.default.createElement("th",null,"Property"),o.default.createElement("th",null,"Before"),o.default.createElement("th",null,"After"))),o.default.createElement("tbody",null,Object.entries(u.properties).map((n=>{const a=n[0];if("id"===a||"meta"===a)return null;const l=n[1],[r,u]=fe(t.toTypedValue(e.original),a),[i,c]=fe(t.toTypedValue(e.revised),a);return et(r)&&et(i)||t.stringify(r)===t.stringify(i)?null:o.default.createElement("tr",{key:a},o.default.createElement("td",null,t.getPropertyDisplayName(a)),o.default.createElement("td",{className:"medplum-diff-removed"},o.default.createElement(me,{property:l,propertyType:u,value:r,ignoreMissingValues:!0})),o.default.createElement("td",{className:"medplum-diff-added"},o.default.createElement(me,{property:l,propertyType:c,value:i,ignoreMissingValues:!0})))})))):null}function et(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function tt(e){const t=h(),a=G(e.value),[l,r]=n.useState();return n.useEffect((()=>{a&&t.requestSchema(a.resourceType).then(r).catch(console.log)}),[t,a]),l&&a?o.default.createElement(Y,{value:{type:a.resourceType,value:a},ignoreMissingValues:e.ignoreMissingValues}):null}function nt(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return o.default.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},o.default.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class at extends o.default.Component{constructor(e){super(e),this.state={}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("Uncaught error:",e,t)}render(){return this.state.error?o.default.createElement("h1",null,"Something went wrong."):this.props.children}}function lt(e){return o.default.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function rt(e){var n,r,u;const i=null!==(n=e.profile)&&void 0!==n?n:null===(r=e.resource.meta)||void 0===r?void 0:r.author;return o.default.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},o.default.createElement("div",{className:"medplum-timeline-item-header"},o.default.createElement("div",{className:"medplum-timeline-item-avatar"},o.default.createElement(Ne,{value:i,link:!0,size:"md"})),o.default.createElement("div",{className:"medplum-timeline-item-title"},o.default.createElement(We,{value:i,link:!0}),o.default.createElement("div",{className:"medplum-timeline-item-subtitle"},o.default.createElement(ce,{to:e.resource},t.formatDateTime(null===(u=e.resource.meta)||void 0===u?void 0:u.lastUpdated)),o.default.createElement("span",null,"·"),o.default.createElement(ce,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&o.default.createElement(a.Menu,{position:"bottom-end",shadow:"md",width:200},o.default.createElement(a.Menu.Target,null,o.default.createElement(a.ActionIcon,{radius:"xl","aria-label":`Actions for ${t.getReferenceString(e.resource)}`},o.default.createElement(l.IconDots,null))),e.popupMenuItems)),o.default.createElement(at,null,e.padding&&o.default.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&o.default.createElement(o.default.Fragment,null,e.children)),e.socialEnabled&&o.default.createElement("div",{className:"medplum-timeline-item-footer"},o.default.createElement(a.Button,{variant:"subtle"},"Like"),o.default.createElement(a.Button,{variant:"subtle"},"Comment")))}function ut(e){e.sort(ot)}function ot(e,t){const n=it(e),a=it(t);return n>a?1:n<a?-1:ct(e)-ct(t)}function it(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function ct(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 dt(e){const t=r.useNavigate(),u=h(),i=u.getProfile(),c=n.useRef(null),d=G(e.value),[s,m]=n.useState(),[f,p]=n.useState([]),g=e.buildSearchRequests,v=n.useRef(f);v.current=f;const E=n.useCallback((()=>{if(!d)return p([]),void m({});u.executeBatch(g(d)).then(y).catch(console.log)}),[u,d,g]);function y(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&m(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}ut(t),t.reverse()}p(t)}function b(e){const t=[...v.current,...e];ut(t),t.reverse(),p(t)}function T(e,t){return u.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function S(e){T(e,"stat").then(E).catch(console.log)}function O(e){T(e,"routine").then(E).catch(console.log)}function k(e){t(`/${e.resourceType}/${e.id}`)}function I(e){t(`/${e.resourceType}/${e.id}/edit`)}function x(e){t(`/${e.resourceType}/${e.id}/delete`)}function j(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return n.useEffect((()=>{E()}),[E]),d&&s?o.default.createElement(lt,null,e.createCommunication&&o.default.createElement("article",{className:"medplum-timeline-item"},o.default.createElement("div",{className:"medplum-timeline-item-header"},o.default.createElement(w,{testid:"timeline-form",onSubmit:t=>{var n;n=t.text,d&&e.createCommunication&&u.createResource(e.createCommunication(d,i,n)).then((e=>{b([e])})).catch(console.log);const a=c.current;a&&(a.value="",a.focus())}},o.default.createElement(a.Group,{noWrap:!0},o.default.createElement(Ne,{value:i}),o.default.createElement(a.TextInput,{name:"text","data-testid":"timeline-input",ref:c,size:"md",radius:"xl",rightSectionWidth:40,rightSection:o.default.createElement(C,{onUpload:function(t){d&&e.createMedia&&u.createResource(e.createMedia(d,i,t)).then((e=>{b([e])})).catch(console.log)}},(e=>o.default.createElement(a.ActionIcon,Object.assign({},e,{size:24,radius:"xl",color:"blue",variant:"filled"}),o.default.createElement(l.IconCloudUpload,{size:16})))),placeholder:"Add comment"}))))),f.map((e=>{var t;if(e.resourceType===d.resourceType&&e.id===d.id)return o.default.createElement(mt,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:s,resource:e,onDetails:j});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return o.default.createElement(gt,{key:n,resource:e,onDetails:k});case"Communication":return o.default.createElement(ft,{key:n,resource:e,onPin:"stat"!==e.priority?S:void 0,onUnpin:"stat"===e.priority?O:void 0,onDetails:k,onEdit:I,onDelete:x});case"DiagnosticReport":return o.default.createElement(ht,{key:n,resource:e,onDetails:k,onEdit:I,onDelete:x});case"Media":return o.default.createElement(pt,{key:n,resource:e,onDetails:k,onEdit:I,onDelete:x});default:return o.default.createElement(rt,{key:n,resource:e,padding:!0},o.default.createElement(tt,{value:e,ignoreMissingValues:!0}))}}))):o.default.createElement(a.Loader,null)}function st(e){return o.default.createElement(a.Menu.Dropdown,null,o.default.createElement(a.Menu.Label,null,"Resource"),e.onPin&&o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconPin,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${t.getReferenceString(e.resource)}`},"Pin"),e.onUnpin&&o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconPinnedOff,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${t.getReferenceString(e.resource)}`},"Unpin"),e.onDetails&&o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconListDetails,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${t.getReferenceString(e.resource)}`},"Details"),e.onEdit&&o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconEdit,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${t.getReferenceString(e.resource)}`},"Edit"),e.onDelete&&o.default.createElement(o.default.Fragment,null,o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Label,null,"Danger zone"),o.default.createElement(a.Menu.Item,{color:"red",icon:o.default.createElement(l.IconTrash,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${t.getReferenceString(e.resource)}`},"Delete")))}function mt(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?o.default.createElement(rt,{resource:e.resource,padding:!0,popupMenuItems:o.default.createElement(st,Object.assign({},e))},o.default.createElement(Ze,{original:t,revised:e.resource})):o.default.createElement(rt,{resource:e.resource,padding:!0,popupMenuItems:o.default.createElement(st,Object.assign({},e))},o.default.createElement("h3",null,"Created"),o.default.createElement(tt,{value:e.resource,ignoreMissingValues:!0}))}function ft(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return o.default.createElement(rt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:o.default.createElement(st,Object.assign({},e))},o.default.createElement("p",null,null===(n=null===(t=e.resource.payload)||void 0===t?void 0:t[0])||void 0===n?void 0:n.contentString))}function pt(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 o.default.createElement(rt,{resource:e.resource,padding:!!a,popupMenuItems:o.default.createElement(st,Object.assign({},e))},o.default.createElement(m,{value:e.resource.content}))}function gt(e){return o.default.createElement(rt,{resource:e.resource,padding:!0,popupMenuItems:o.default.createElement(st,Object.assign({},e))},o.default.createElement(nt,null,o.default.createElement("pre",null,e.resource.outcomeDesc)))}function ht(e){return o.default.createElement(rt,{resource:e.resource,padding:!0,popupMenuItems:o.default.createElement(st,Object.assign({},e))},o.default.createElement(He,{value:e.resource}))}function vt(e){let n;try{n=t.evalFhirPath(e.path,e.resource)}catch(e){return console.warn("FhirPathDisplay:",e),null}if(n.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${n.length} elements [${JSON.stringify(n,null,2)}]`);return o.default.createElement(me,{value:n[0]||"",propertyType:e.propertyType})}function Et(e,n){var a;if("_lastUpdated"===n)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===n)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const l=t.globalSchema.types[e],r=l.properties[n],u=null===(a=l.searchParams)||void 0===a?void 0:a[n.toLowerCase()];if(r&&u)return{name:n,elementDefinition:r,searchParams:[u]};if(r){let t;if(l.searchParams){const a=`${e}.${n.replaceAll("[x]","")}`;t=Object.values(l.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(a)})),0===t.length&&(t=void 0)}return{name:n,elementDefinition:r,searchParams:t}}if(u){return{name:n,elementDefinition:t.getSearchParameterDetails(e,u).elementDefinition,searchParams:[u]}}return{name:n}}const yt={string:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],fulltext:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],token:[t.Operator.EQUALS,t.Operator.NOT],reference:[t.Operator.EQUALS,t.Operator.NOT],numeric:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],quantity:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],date:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY],datetime:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY]},bt={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 Ct(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function Tt(e,t){return Ct(e,(e.filters||[]).filter((e=>e.code!==t)))}function St(e,t,n,a,l){l&&(e=Tt(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),Ct(e,r)}function Ot(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 kt(e,t){return jt(e,t,-1)}function It(e,t){return jt(e,t,0)}function xt(e,t){return jt(e,t,1)}function jt(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),At(e,t,a,l)}function wt(e,t){return Dt(e,t,-1)}function Pt(e,t){return Dt(e,t,0)}function Rt(e,t){return Dt(e,t,1)}function Dt(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),At(e,t,a,l)}function Nt(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return At(e,t,n,new Date)}function At(e,n,a,l){return e=Vt(e=Tt(e,n),n,t.Operator.GREATER_THAN_OR_EQUALS,a),e=Vt(e,n,t.Operator.LESS_THAN_OR_EQUALS,l)}function Vt(e,t,n,a){return St(e,t,n,a.toISOString())}function Mt(e,n,a=!0){return St(e,n,t.Operator.MISSING,a.toString())}function Ft(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Lt(e,n){var a;return Ft(e,(n-1)*(null!==(a=e.count)&&void 0!==a?a:t.DEFAULT_SEARCH_COUNT))}function qt(e,t,n){return t===Bt(e)&&void 0!==n&&n===_t(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Bt(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function _t(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function zt(e){return yt[e.type]}function Ut(e){var t;return null!==(t=bt[e])&&void 0!==t?t:""}function Qt(e){let n=e;return n.includes(".")&&(n=n.split(".").pop()),"id"===n?"ID":"versionId"===n?"Version ID":(n=n.replace("[x]",""),n=n.replace(/([A-Z])/g," $1"),n=n.replace(/[-_]/g," "),n=n.replace(/\s+/g," "),n=n.trim(),n.split(/\s/).map(t.capitalize).join(" "))}function $t(e,n){var a,l;const r=n.name;return"id"===r?e.id:"meta.versionId"===r?null===(a=e.meta)||void 0===a?void 0:a.versionId:"_lastUpdated"===r?t.formatDateTime(null===(l=e.meta)||void 0===l?void 0:l.lastUpdated):n.elementDefinition&&`${e.resourceType}.${n.name}`===n.elementDefinition.path?function(e,t){var n,a,l;const 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]",""))||"",[u,i]=fe({type:e.resourceType,value:e},r);if(!u)return null;return o.default.createElement(me,{property:t,propertyType:i,value:u,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,n.elementDefinition):n.searchParams&&1===n.searchParams.length&&n.name===n.searchParams[0].code?function(e,n,a){const l=t.evalFhirPathTyped(n.expression,[{type:e.resourceType,value:e}]);if(!l||0===l.length)return null;if(a)return o.default.createElement(me,{propertyType:l[0].type,value:l[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return o.default.createElement(o.default.Fragment,null,l.map(((e,t)=>o.default.createElement("span",{key:`${t}-${l.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,n.searchParams[0],n.elementDefinition):null}function Wt(e){var l;const[r,u]=n.useState({search:JSON.parse(t.stringify(e.search))}),i=n.useRef(null),c=n.useRef(null);function d(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],a=null===(t=i.current)||void 0===t?void 0:t.value;if(a){const e=[...n,a];u({search:Object.assign(Object.assign({},r.search),{fields:e})})}}function s(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],a=null===(t=c.current)||void 0===t?void 0:t.value;if(a){const e=[...n];e.splice(e.indexOf(a),1),u({search:Object.assign(Object.assign({},r.search),{fields:e})})}}function m(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(n.useEffect((()=>{u({search:e.search})}),[e.search]),!e.visible)return null;const f=e.search.resourceType,p=t.globalSchema.types[f],g=null!==(l=r.search.fields)&&void 0!==l?l:[],h=function(e){const t=[],n=new Set,a=new Set;for(const l of Object.keys(e.properties))t.push(l),n.add(l.toLowerCase()),a.add(Qt(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=Qt(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(Qt(l)))}return t}(p).filter((e=>!(null==g?void 0:g.includes(e)))).sort();return o.default.createElement(a.Modal,{title:"Fields",closeButtonLabel:"Close",opened:e.visible,onClose:e.onCancel},o.default.createElement("div",null,o.default.createElement("table",{style:{margin:"auto"}},o.default.createElement("thead",null,o.default.createElement("tr",null,o.default.createElement("th",{colSpan:2,align:"center"},"Available"),o.default.createElement("th",{colSpan:2,align:"center"},"Selected"))),o.default.createElement("tbody",null,o.default.createElement("tr",null,o.default.createElement("td",{colSpan:2,align:"center"},o.default.createElement("select",{ref:i,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&d()}(e),onDoubleClick:()=>{d()},"data-testid":"available"},h.map((e=>o.default.createElement("option",{key:e,value:e},Qt(e)))))),o.default.createElement("td",{colSpan:2,align:"center"},o.default.createElement("select",{ref:c,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&s()}(e),onDoubleClick:()=>{s()},"data-testid":"selected"},g.map((e=>o.default.createElement("option",{key:e,value:e},Qt(e)))))))),o.default.createElement("tfoot",null,o.default.createElement("tr",null,o.default.createElement("td",{align:"center"},o.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:d},"Add")),o.default.createElement("td",{align:"center"},o.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:s},"Remove")),o.default.createElement("td",{align:"center"},o.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:function(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],a=null===(t=c.current)||void 0===t?void 0:t.value;if(a){const e=[...n],t=e.indexOf(a);m(e,t,t-1),u({search:Object.assign(Object.assign({},r.search),{fields:e})})}}},"Up")),o.default.createElement("td",{align:"center"},o.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:function(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],a=null===(t=c.current)||void 0===t?void 0:t.value;if(a){const e=[...n],t=e.indexOf(a);m(e,t,t+1),u({search:Object.assign(Object.assign({},r.search),{fields:e})})}}},"Down")))))),o.default.createElement(a.Button,{onClick:()=>e.onOk(r.search)},"OK"))}function Gt(e){var n,a;const{resourceType:l,filter:r}=e,u=null===(a=null===(n=t.globalSchema.types[l])||void 0===n?void 0:n.searchParams)||void 0===a?void 0:a[r.code];if(u){if("reference"===u.type)return o.default.createElement(We,{value:{reference:r.value}});const e=t.getSearchParameterDetails(l,u);if("_lastUpdated"===r.code||e.type===t.SearchParameterType.DATETIME)return o.default.createElement(o.default.Fragment,null,t.formatDateTime(r.value))}return o.default.createElement(o.default.Fragment,null,r.value)}function Ht(e){var n;const l="filter-value";switch(t.getSearchParameterDetails(e.resourceType,e.searchParam).type){case t.SearchParameterType.REFERENCE:return o.default.createElement(Me,{name:l,defaultValue:{reference:e.defaultValue},targetTypes:null===(n=e.searchParam)||void 0===n?void 0:n.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case t.SearchParameterType.BOOLEAN:return o.default.createElement(a.Checkbox,{name:l,"data-testid":l,defaultChecked:"true"===e.defaultValue,onChange:t=>e.onChange(t.currentTarget.checked.toString())});case t.SearchParameterType.DATE:return o.default.createElement(a.TextInput,{type:"date",name:l,"data-testid":l,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case t.SearchParameterType.DATETIME:return o.default.createElement(Te,{name:l,defaultValue:e.defaultValue,onChange:e.onChange});case t.SearchParameterType.NUMBER:return o.default.createElement(a.TextInput,{type:"number",name:l,"data-testid":l,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case t.SearchParameterType.QUANTITY:return o.default.createElement(we,{name:l,defaultValue:Kt(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return o.default.createElement(a.TextInput,{name:l,"data-testid":l,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:t=>e.onChange(t.currentTarget.value),placeholder:"Search value"})}}function Kt(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function Jt(e){const[l,r]=n.useState(JSON.parse(t.stringify(e.search))),[u,i]=n.useState(-1),c=n.useRef(l);if(c.current=l,n.useEffect((()=>{r(JSON.parse(t.stringify(e.search)))}),[e.search]),!e.visible)return null;const d=e.search.resourceType,s=t.globalSchema.types[d].searchParams,m=l.filters||[];return o.default.createElement(a.Modal,{title:"Filters",closeButtonLabel:"Close",size:900,opened:e.visible,onClose:e.onCancel},o.default.createElement("div",{className:"medplum-filter-editor"},o.default.createElement("table",{className:"medplum-filter-editor-table"},o.default.createElement("colgroup",null,o.default.createElement("col",{style:{width:200}}),o.default.createElement("col",{style:{width:200}}),o.default.createElement("col",{style:{width:380}}),o.default.createElement("col",{style:{width:120}})),o.default.createElement("thead",null,o.default.createElement("tr",null,o.default.createElement("th",null,"Field"),o.default.createElement("th",null,"Operation"),o.default.createElement("th",null,"Value"),o.default.createElement("th",null,"Actions"))),o.default.createElement("tbody",null,m.map(((e,t)=>t===u?o.default.createElement(Xt,{key:`filter-${t}-${m.length}-input`,resourceType:d,searchParams:s,defaultValue:e,okText:"Save",onOk:e=>{const n=[...m];n[t]=e,r(Ct(c.current,n)),i(-1)},onCancel:()=>i(-1)}):o.default.createElement(Yt,{key:`filter-${t}-${m.length}-display`,resourceType:d,searchParams:s,filter:e,onEdit:()=>i(t),onDelete:()=>r(Ot(c.current,t))}))),o.default.createElement(Xt,{resourceType:d,searchParams:s,okText:"Add",onOk:function(e){r(St(c.current,e.code,e.operator,e.value))}})))),o.default.createElement(a.Button,{onClick:()=>e.onOk(c.current)},"OK"))}function Yt(e){const{filter:t}=e;return o.default.createElement("tr",null,o.default.createElement("td",null,Qt(t.code)),o.default.createElement("td",null,Ut(t.operator)),o.default.createElement("td",null,o.default.createElement(Gt,{resourceType:e.resourceType,filter:t})),o.default.createElement("td",null,o.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),o.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Xt(e){var t;const[l,r]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:{}),u=n.useRef(l);u.current=l;const i=e.searchParams[l.code],c=i&&zt(i);return o.default.createElement("tr",null,o.default.createElement("td",null,o.default.createElement(a.NativeSelect,{"data-testid":"filter-field",defaultValue:u.current.code,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},u.current),{code:t}));var t},data:Object.keys(e.searchParams).map((e=>({value:e,label:Qt(e)})))})),o.default.createElement("td",null,c&&o.default.createElement(a.NativeSelect,{"data-testid":"filter-operation",defaultValue:l.operator,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},u.current),{operator:t}));var t},data:c.map((e=>({value:e,label:Ut(e)})))})),o.default.createElement("td",null,i&&l.operator&&o.default.createElement(Ht,{resourceType:e.resourceType,searchParam:i,defaultValue:l.value,onChange:function(e){r(Object.assign(Object.assign({},u.current),{value:e}))}})),o.default.createElement("td",null,l.code&&l.operator&&l.value&&o.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:()=>{e.onOk(u.current),r({})}},e.okText),e.onCancel&&o.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}function Zt(e){var t;const[l,r]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function u(){e.onOk(Object.assign(Object.assign({},e.filter),{value:l}))}return o.default.createElement(a.Modal,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},o.default.createElement("div",{style:{width:500}},o.default.createElement(w,{onSubmit:u},o.default.createElement(Ht,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:l,autoFocus:!0,onChange:r}))),o.default.createElement(a.Button,{onClick:u},"OK"))}function en(e){if(!e.searchParams)return null;function t(t){e.onChange(t)}return 1===e.searchParams.length?o.default.createElement(tn,{search:e.search,searchParam:e.searchParams[0],onSort:function(n,a){t(qt(e.search,n.code,a))},onPrompt:function(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})},onChange:t,onClear:function(n){t(Tt(e.search,n.code))}}):o.default.createElement(a.Menu.Dropdown,null,e.searchParams.map((e=>o.default.createElement(a.Menu.Item,{key:e.code},Qt(e.code)))))}function tn(e){switch(e.searchParam.type){case"date":return o.default.createElement(nn,Object.assign({},e));case"number":case"quantity":return o.default.createElement(an,Object.assign({},e));case"reference":return o.default.createElement(ln,Object.assign({},e));case"string":case"token":case"uri":return o.default.createElement(rn,Object.assign({},e));default:return o.default.createElement(o.default.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function nn(e){const{searchParam:n}=e,r=n.code;return o.default.createElement(a.Menu.Dropdown,null,o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconSortAscending,{size:14}),onClick:()=>e.onSort(n,!1)},"Sort Oldest to Newest"),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconSortDescending,{size:14}),onClick:()=>e.onSort(n,!0)},"Sort Newest to Oldest"),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconEqual,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.NOT_EQUALS)},"Does not equal..."),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconMathLower,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.ENDS_BEFORE)},"Before..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconMathGreater,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.STARTS_AFTER)},"After..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconBracketsContain,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Between..."),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(xt(e.search,r))},"Tomorrow"),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(It(e.search,r))},"Today"),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(kt(e.search,r))},"Yesterday"),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(Rt(e.search,r))},"Next Month"),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(Pt(e.search,r))},"This Month"),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(wt(e.search,r))},"Last Month"),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(Nt(e.search,r))},"Year to date"),o.default.createElement(un,Object.assign({},e)))}function an(e){const{searchParam:n}=e;return o.default.createElement(a.Menu.Dropdown,null,o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconSortAscending,{size:14}),onClick:()=>e.onSort(n,!1)},"Sort Smallest to Largest"),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconSortDescending,{size:14}),onClick:()=>e.onSort(n,!0)},"Sort Largest to Smallest"),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconEqual,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.NOT_EQUALS)},"Does not equal..."),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconMathGreater,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.GREATER_THAN)},"Greater than..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconSettings,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconMathLower,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.LESS_THAN)},"Less than..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconSettings,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),o.default.createElement(un,Object.assign({},e)))}function ln(e){const{searchParam:n}=e;return o.default.createElement(a.Menu.Dropdown,null,o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconEqual,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.NOT)},"Does not equal..."),o.default.createElement(un,Object.assign({},e)))}function rn(e){const{searchParam:n}=e;return o.default.createElement(a.Menu.Dropdown,null,o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconSortAscending,{size:14}),onClick:()=>e.onSort(n,!1)},"Sort A to Z"),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconSortDescending,{size:14}),onClick:()=>e.onSort(n,!0)},"Sort Z to A"),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconEqual,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.NOT)},"Does not equal..."),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconBucket,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.CONTAINS)},"Contains..."),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconBucketOff,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Does not contain..."),o.default.createElement(un,Object.assign({},e)))}function un(e){const{searchParam:t}=e,n=t.code;return o.default.createElement(o.default.Fragment,null,o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconBleach,{size:14}),onClick:()=>e.onChange(Mt(e.search,n))},"Missing"),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconBleachOff,{size:14}),onClick:()=>e.onChange(Mt(e.search,n,!1))},"Not missing"),o.default.createElement(a.Menu.Divider,null),o.default.createElement(a.Menu.Item,{icon:o.default.createElement(l.IconX,{size:14}),onClick:()=>e.onClear(t)},"Clear filters"))}class on extends Event{constructor(e){super("change"),this.definition=e}}class cn extends Event{constructor(e){super("load"),this.response=e}}class dn extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}const sn=a.createStyles((e=>({th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs}px ${e.spacing.md}px`,"&:hover":{backgroundColor:"dark"===e.colorScheme?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}})));function mn(e){var r,u;const{classes:i}=sn(),c=h(),[d,s]=n.useState(!1),[m,f]=n.useState(),{search:p,onLoad:g}=e,[v,b]=n.useState({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),C=n.useRef(v);function T(t){e.onChange&&e.onChange(new on(t))}function S(t,n){y(t.target)||2!==t.button&&(E(t),1!==t.button&&e.onClick&&e.onClick(new dn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new dn(n,t)))}C.current=v,n.useEffect((()=>{f(void 0),c.search(p.resourceType,t.formatSearchQuery(Object.assign(Object.assign({},p),{total:"accurate",fields:void 0}))).then((e=>{b(Object.assign(Object.assign({},C.current),{searchResponse:e})),g&&g(new cn(e))})).catch((e=>{b(Object.assign(Object.assign({},C.current),{searchResponse:void 0})),f(e)}))}),[c,p,g]),n.useEffect((()=>{s(!1),c.requestSchema(e.search.resourceType).then((()=>s(!0))).catch(console.log)}),[c,e.search.resourceType]);if(!(d&&(null===(r=null===t.globalSchema||void 0===t.globalSchema?void 0:t.globalSchema.types)||void 0===r?void 0:r[e.search.resourceType])))return o.default.createElement(a.Loader,null);const O=e.checkboxesEnabled,k=function(e){const t=e.resourceType,n=[];for(const a of e.fields||["id","_lastUpdated"])n.push(Et(t,a));return n}(p),I=p.resourceType,x=v.searchResponse,j=null==x?void 0:x.entry,w=null==j?void 0:j.map((e=>e.resource)),P="subtle",R="gray",D=16,N=window.innerWidth<768;return o.default.createElement("div",{className:"medplum-search-control","data-testid":"search-control"},!e.hideToolbar&&o.default.createElement(a.Group,{position:"apart",mb:"xl"},o.default.createElement(a.Group,{spacing:2},o.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:o.default.createElement(l.IconFilter,{size:D}),onClick:()=>b(Object.assign(Object.assign({},C.current),{fieldEditorVisible:!0}))},"Fields"),o.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:o.default.createElement(l.IconColumns,{size:D}),onClick:()=>b(Object.assign(Object.assign({},C.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&o.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:o.default.createElement(l.IconFilePlus,{size:D}),onClick:e.onNew},"New..."),!N&&e.onExport&&o.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:o.default.createElement(l.IconTableExport,{size:D}),onClick:e.onExport},"Export..."),!N&&e.onDelete&&o.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:o.default.createElement(l.IconTrash,{size:D}),onClick:()=>e.onDelete(Object.keys(v.selected))},"Delete..."),!N&&e.onBulk&&o.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:o.default.createElement(l.IconBoxMultiple,{size:D}),onClick:()=>e.onBulk(Object.keys(v.selected))},"Bulk...")),x&&o.default.createElement(a.Group,{spacing:2},o.default.createElement("span",{className:"medplum-search-summary"},function(e,t){var n;return Math.min(t,(null!==(n=e.offset)&&void 0!==n?n:0)+1)}(p,x.total),"-",function(e,n){var a,l;return Math.min(n,((null!==(a=e.offset)&&void 0!==a?a:0)+1)*(null!==(l=e.count)&&void 0!==l?l:t.DEFAULT_SEARCH_COUNT))}(p,x.total)," of"," ",null===(u=x.total)||void 0===u?void 0:u.toLocaleString()))),o.default.createElement(a.Table,null,o.default.createElement("thead",null,o.default.createElement("tr",null,O&&o.default.createElement("th",{className:"medplum-search-icon-cell"},o.default.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=C.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=C.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)})),b(Object.assign(Object.assign({},C.current),{selected:a}))}(e)})),k.map((t=>o.default.createElement("th",{key:t.name},o.default.createElement(a.Menu,{shadow:"md",width:240,position:"bottom-end"},o.default.createElement(a.Menu.Target,null,o.default.createElement(a.UnstyledButton,{className:i.control},o.default.createElement(a.Group,{position:"apart",noWrap:!0},o.default.createElement(a.Text,{weight:500,size:"sm"},Qt(t.name)),o.default.createElement(a.Center,{className:i.icon},o.default.createElement(l.IconAdjustmentsHorizontal,{size:14,stroke:1.5}))))),o.default.createElement(en,{search:e.search,searchParams:t.searchParams,onPrompt:(e,t)=>{b(Object.assign(Object.assign({},C.current),{filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{T(e)}})))))),!e.hideFilters&&o.default.createElement("tr",null,O&&o.default.createElement("th",{className:"filters medplum-search-icon-cell"}),k.map((t=>o.default.createElement("th",{key:t.name,className:"filters"},t.searchParams&&o.default.createElement(pn,{resourceType:I,searchParams:t.searchParams,filters:e.search.filters})))))),o.default.createElement("tbody",null,null==w?void 0:w.map((e=>e&&o.default.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>S(t,e),onAuxClick:t=>S(t,e)},O&&o.default.createElement("td",{className:"medplum-search-icon-cell"},o.default.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!v.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},C.current.selected);n?a[t]=!0:delete a[t],b(Object.assign(Object.assign({},C.current),{selected:a}))}(t,e.id)})),k.map((t=>o.default.createElement("td",{key:t.name},$t(e,t))))))))),0===(null==w?void 0:w.length)&&o.default.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),void 0!==(null==x?void 0:x.total)&&x.total>0&&o.default.createElement(a.Center,{m:"md",p:"md"},o.default.createElement(a.Pagination,{page:gn(p),total:hn(p,x.total),onChange:e=>T(Lt(p,e)),getItemAriaLabel:e=>{switch(e){case"prev":return"Previous page";case"next":return"Next page";default:return}}})),m&&o.default.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},o.default.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(m,void 0,2))),o.default.createElement(Wt,{search:e.search,visible:C.current.fieldEditorVisible,onOk:e=>{T(e),b(Object.assign(Object.assign({},C.current),{fieldEditorVisible:!1}))},onCancel:()=>{b(Object.assign(Object.assign({},C.current),{fieldEditorVisible:!1}))}}),o.default.createElement(Jt,{search:e.search,visible:C.current.filterEditorVisible,onOk:e=>{T(e),b(Object.assign(Object.assign({},C.current),{filterEditorVisible:!1}))},onCancel:()=>{b(Object.assign(Object.assign({},C.current),{filterEditorVisible:!1}))}}),o.default.createElement(Zt,{visible:C.current.filterDialogVisible,title:"Input",resourceType:I,searchParam:v.filterDialogSearchParam,filter:v.filterDialogFilter,defaultValue:"",onOk:t=>{T(St(e.search,t.code,t.operator,t.value)),b(Object.assign(Object.assign({},C.current),{filterDialogVisible:!1}))},onCancel:()=>{b(Object.assign(Object.assign({},C.current),{filterDialogVisible:!1}))}}))}const fn=o.default.memo(mn);function pn(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?o.default.createElement("span",null,"no filters"):o.default.createElement(o.default.Fragment,null,n.map(((t,a)=>o.default.createElement("div",{key:`filter-${a}-${n.length}`},Ut(t.operator)," ",o.default.createElement(Gt,{resourceType:e.resourceType,filter:t})))))}function gn(e){return Math.floor((e.offset||0)/(e.count||t.DEFAULT_SEARCH_COUNT))+1}function hn(e,n){const a=e.count||t.DEFAULT_SEARCH_COUNT;return Math.ceil(n/a)}function vn(e){var t,l,r,u,i;const c=h(),[d,s]=n.useState(),[m,f]=n.useState(),{query:p,fields:g}=e,[v,b]=n.useState(),[C,T]=n.useState({}),S=n.useRef();S.current=v;const O=n.useRef({});function k(t,n){y(t.target)||(E(t),1!==t.button&&e.onClick&&e.onClick(new dn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new dn(n,t)))}O.current=C,n.useEffect((()=>{f(void 0),c.graphql(p).then(b).catch(f)}),[c,p]),n.useEffect((()=>{c.requestSchema(e.resourceType).then((e=>{s(Object.assign({},e))})).catch(console.log)}),[c,e.resourceType]);if(!(null===(t=null==d?void 0:d.types)||void 0===t?void 0:t[e.resourceType]))return o.default.createElement(a.Loader,null);const I=e.checkboxesEnabled;return o.default.createElement("div",{className:"medplum-search-control",onContextMenu:e=>E(e),"data-testid":"search-control"},o.default.createElement(a.Table,null,o.default.createElement("thead",null,o.default.createElement("tr",null,I&&o.default.createElement("th",{className:"medplum-search-icon-cell"},o.default.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=S.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)&&!O.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=S.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)})),T(l)}(e)})),g.map((e=>o.default.createElement("th",{key:e.name},e.name))))),o.default.createElement("tbody",null,null===(r=null===(l=null==v?void 0:v.data)||void 0===l?void 0:l.ResourceList)||void 0===r?void 0:r.map((e=>e&&o.default.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>k(t,e),onAuxClick:t=>k(t,e)},I&&o.default.createElement("td",{className:"medplum-search-icon-cell"},o.default.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!C[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},O.current);n?a[t]=!0:delete a[t],T(a)}(t,e.id)})),g.map((t=>o.default.createElement("td",{key:t.name},o.default.createElement(vt,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(i=null===(u=null==v?void 0:v.data)||void 0===u?void 0:u.ResourceList)||void 0===i?void 0:i.length)&&o.default.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),m&&o.default.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},o.default.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(m,void 0,2))),e.onBulk&&o.default.createElement(a.Button,{onClick:()=>e.onBulk(Object.keys(O.current))},"Bulk..."))}const En=o.default.memo(vn);const yn=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function bn(e){const t=n.useRef();function a(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,o.default.createElement("div",{className:"section"},e.actions.map((n=>o.default.createElement("div",{key:n.id},o.default.createElement(Cn,{action:n,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:a,onRemove:()=>{return a=n,void e.onChange(t.current.filter((e=>e!==a)));var a}})))),o.default.createElement("div",{className:"bottom-actions"},o.default.createElement("a",{href:"#",onClick:n=>{var a;E(n),a={id:wn()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function Cn(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 o.default.createElement("div",{"data-testid":t.id,className:r,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){E(t),e.setHoverKey(e.action.id)}},a?o.default.createElement(On,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):o.default.createElement(Sn,{action:t,actionType:n}),o.default.createElement("div",{className:"bottom-actions"},o.default.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const Tn={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Sn(e){const{action:t,actionType:n}=e,[a,l]=xn(t);return o.default.createElement("div",null,o.default.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&o.default.createElement("div",null,o.default.createElement(de,{value:{reference:t.definitionCanonical}})),a&&o.default.createElement("div",null,o.default.createElement(me,{property:Tn,propertyType:l,value:a})))}function On(e){const{action:t}=e,[l,r]=n.useState(e.actionType);function u(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return o.default.createElement(o.default.Fragment,null,o.default.createElement(a.TextInput,{name:`actionTitle-${t.id}`,label:"Title",defaultValue:t.title,onChange:e=>u("title",e.currentTarget.value)}),o.default.createElement(a.TextInput,{name:`actionDescription-${t.id}`,label:"Description",defaultValue:t.description,onChange:e=>u("description",e.currentTarget.value)}),o.default.createElement(a.NativeSelect,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${t.id}`,defaultValue:l,onChange:e=>r(e.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),t.action&&t.action.length>0&&o.default.createElement(bn,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>u("action",e)}),(()=>{switch(l){case"appointment":return o.default.createElement(kn,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return o.default.createElement(kn,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return o.default.createElement(kn,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return o.default.createElement(kn,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),o.default.createElement("p",null,"Timing"),o.default.createElement("p",null,"When the action should take place."),o.default.createElement(In,{name:"timing-"+t.id,action:t,onChange:e.onChange}))}function kn(e){const{id:n,definitionCanonical:a}=e.action,l=(null==a?void 0:a.startsWith(e.resourceType+"/"))?{reference:a}:void 0;return o.default.createElement(Ae,{name:n,resourceType:e.resourceType,defaultValue:l,loadOnFocus:!0,onChange:n=>{n?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:t.getReferenceString(n)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}})}function In(e){const t=e.action,n="timing",[a,l]=xn(t);return o.default.createElement(_e,{property:Tn,name:"timing[x]",defaultValue:a,defaultPropertyType:l,onChange:(a,l)=>{e.onChange(H(t,n,null!=l?l:n,Tn,a))}})}function xn(e){return fe({type:"PlanDefinitionAction",value:e},"timing")}let jn=1;function wn(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(jn=Math.max(jn,t+1))}return e}return"id-"+jn++}function Pn(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:wn(e.id),action:Pn(e.action)})))}var Rn;function Dn(e){return"choice"===e.type||"open-choice"===e.type}function Nn(e){const l=h(),r=l.getProfile(),[u,i]=n.useState(),c=G(e.questionnaire),[d,s]=n.useState(),[m,f]=n.useState({});return n.useEffect((()=>{l.requestSchema("Questionnaire").then((()=>l.requestSchema("QuestionnaireResponse"))).then(i).catch(console.log)}),[l]),n.useEffect((()=>{s(c?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:t.getReferenceString(e),item:qn(e.item)}}(c):void 0)}),[c]),u&&c?o.default.createElement(w,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&d&&e.onSubmit(Object.assign(Object.assign({},d),{questionnaire:t.getReferenceString(c),subject:e.subject,source:t.createReference(r),authored:(new Date).toISOString()}))}},c.title&&o.default.createElement("h1",null,c.title),c.item&&o.default.createElement(An,{items:c.item,answers:m,onChange:function(e){const n={resourceType:"QuestionnaireResponse",item:e};s(n),f(t.getQuestionnaireAnswers(n))}}),o.default.createElement(a.Button,{type:"submit"},e.submitButtonText||"OK")):null}function An(t){const[l,r]=n.useState(qn(t.items));function u(e,n){const a=l.slice();a[e]=n,r(a),t.onChange(a)}return o.default.createElement(o.default.Fragment,null,t.items.map(((n,l)=>{if(!zn(n,t.answers))return null;if(n.type===e.QuestionnaireItemType.display)return o.default.createElement("p",{key:n.linkId},n.text);if(n.type===e.QuestionnaireItemType.group)return o.default.createElement(Vn,{key:n.linkId,item:n,answers:t.answers,onChange:e=>u(l,e)});if(n.type===e.QuestionnaireItemType.boolean){const e=n.initial&&n.initial.length>0?n.initial[0]:void 0;return o.default.createElement(U,{key:n.linkId,title:n.text,htmlFor:n.linkId},o.default.createElement(a.Checkbox,{id:n.linkId,name:n.linkId,defaultChecked:null==e?void 0:e.valueBoolean,onChange:e=>u(l,{linkId:n.linkId,text:n.text,answer:[{valueBoolean:e.currentTarget.checked}]})}))}return o.default.createElement($,{key:n.linkId,htmlFor:n.linkId,title:n.text||""},o.default.createElement(Vn,{item:n,answers:t.answers,onChange:e=>u(l,e)}))})))}function Vn(t){const n=t.item,l=n.type;if(!l)return null;const r=n.linkId;if(!r)return null;const u=n.initial&&n.initial.length>0?n.initial[0]:void 0;function i(e){t.onChange({linkId:n.linkId,text:n.text,answer:[e]})}switch(l){case e.QuestionnaireItemType.group:return o.default.createElement("div",null,o.default.createElement("h3",null,n.text),n.item&&o.default.createElement(An,{items:n.item,answers:t.answers,onChange:function(e){t.onChange({linkId:n.linkId,text:n.text,item:e})}}));case e.QuestionnaireItemType.boolean:return o.default.createElement(a.Checkbox,{id:r,name:r,defaultChecked:null==u?void 0:u.valueBoolean,onChange:e=>i({valueBoolean:e.currentTarget.checked})});case e.QuestionnaireItemType.decimal:return o.default.createElement(a.TextInput,{type:"number",step:"any",id:r,name:r,defaultValue:null==u?void 0:u.valueDecimal,onChange:e=>i({valueDecimal:e.currentTarget.valueAsNumber})});case e.QuestionnaireItemType.integer:return o.default.createElement(a.TextInput,{type:"number",step:1,id:r,name:r,defaultValue:null==u?void 0:u.valueInteger,onChange:e=>i({valueInteger:e.currentTarget.valueAsNumber})});case e.QuestionnaireItemType.date:return o.default.createElement(a.TextInput,{type:"date",id:r,name:r,defaultValue:null==u?void 0:u.valueDate,onChange:e=>i({valueDate:e.currentTarget.value})});case e.QuestionnaireItemType.dateTime:return o.default.createElement(Te,{name:r,defaultValue:null==u?void 0:u.valueDateTime,onChange:e=>i({valueDateTime:e})});case e.QuestionnaireItemType.time:return o.default.createElement(a.TextInput,{type:"time",id:r,name:r,defaultValue:null==u?void 0:u.valueTime,onChange:e=>i({valueTime:e.currentTarget.value})});case e.QuestionnaireItemType.string:case e.QuestionnaireItemType.url:return o.default.createElement(a.TextInput,{id:r,name:r,defaultValue:null==u?void 0:u.valueString,onChange:e=>i({valueString:e.currentTarget.value})});case e.QuestionnaireItemType.text:return o.default.createElement(a.Textarea,{id:r,name:r,defaultValue:null==u?void 0:u.valueString,onChange:e=>i({valueString:e.currentTarget.value})});case e.QuestionnaireItemType.attachment:return o.default.createElement(S,{name:r,defaultValue:null==u?void 0:u.valueAttachment,onChange:e=>i({valueAttachment:e})});case e.QuestionnaireItemType.reference:return o.default.createElement(Me,{name:r,defaultValue:null==u?void 0:u.valueReference,onChange:e=>i({valueReference:e})});case e.QuestionnaireItemType.quantity:return o.default.createElement(we,{name:r,defaultValue:null==u?void 0:u.valueQuantity,onChange:e=>i({valueQuantity:e})});case e.QuestionnaireItemType.choice:case e.QuestionnaireItemType.openChoice:return function(e){var t;return!!(null===(t=e.extension)||void 0===t?void 0:t.some((e=>{var t,n,a;return"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"===e.url&&"drop-down"===(null===(a=null===(n=null===(t=e.valueCodeableConcept)||void 0===t?void 0:t.coding)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code)})))}(n)?o.default.createElement(Mn,{name:r,item:n,initial:u,onChangeAnswer:i}):o.default.createElement(Ln,{name:r,item:n,initial:u,onChangeAnswer:i})}return null}function Mn(e){const{name:n,item:l,initial:r}=e,u=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:r},"value"),i=[""];if(l.answerOption)for(const e of l.answerOption){const n=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:e},"value");i.push(Fn(n))}return o.default.createElement(a.NativeSelect,{id:n,name:n,className:"medplum-select",onChange:n=>{const a=n.currentTarget.selectedIndex;if(0===a)return void e.onChangeAnswer({});const r=l.answerOption[a-1],u=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:r},"value"),o="value"+t.capitalize(u.type);e.onChangeAnswer({[o]:u.value})},defaultValue:Fn(u),data:i})}function Fn(e){if(e)return"CodeableConcept"===e.type?e.value.coding[0].display:"Coding"===e.type?e.value.display:e.value.toString()}function Ln(e){const{name:n,item:a,initial:l,onChangeAnswer:r}=e,u=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],i=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:l},"value");return o.default.createElement(o.default.Fragment,null,a.answerOption&&a.answerOption.map(((e,a)=>{const l=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:e},"value"),c="value"+t.capitalize(l.type),d=`${n}-option-${a}`;return o.default.createElement("div",{key:d,className:"medplum-questionnaire-option-row"},o.default.createElement("div",{className:"medplum-questionnaire-option-checkbox"},o.default.createElement("input",{type:"radio",id:d,name:n,value:l.value,defaultChecked:i&&t.stringify(l)===t.stringify(i),onChange:()=>r({[c]:l.value})})),o.default.createElement("div",null,o.default.createElement("label",{htmlFor:d},o.default.createElement(me,{property:u,propertyType:l.type,value:l.value}))))})))}function qn(e){var t;return null!==(t=null==e?void 0:e.map(Bn))&&void 0!==t?t:[]}function Bn(e){var t,n;return{linkId:e.linkId,text:e.text,item:qn(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(_n))&&void 0!==n?n:[]}}function _n(e){return Object.assign({},e)}function zn(e,n){if(!e.enableWhen)return!0;const a=e.enableBehavior||"any";for(const l of e.enableWhen){const e=t.getTypedPropertyValue({type:"QuestionnaireItemEnableWhen",value:l},"answer[x]"),r=t.getTypedPropertyValue({type:"QuestionnaireResponseItemAnswer",value:n[l.question]},"value[x]"),u=t.deepEquals(e,r);if("any"===a&&u)return!0;if("all"===a&&!u)return!1}return"any"!==a}function Un(t){var l;const r=t.item,u=t.item,i="resourceType"in t.item,c=i||u.type===e.QuestionnaireItemType.group,d=null!==(l=u.linkId)&&void 0!==l?l:"[untitled]",s=t.selectedKey===t.item.id,m=t.hoverKey===t.item.id,f=n.useRef();function p(e){var n;const a=f.current;t.onChange(Object.assign(Object.assign({},a),{item:null===(n=a.item)||void 0===n?void 0:n.map((t=>t.id===e.id?e:t))}))}function g(e){var n,a;t.onChange(Object.assign(Object.assign({},t.item),{item:[...null!==(a=null===(n=t.item)||void 0===n?void 0:n.item)&&void 0!==a?a:[],e]}))}function h(e,n){t.onChange(Object.assign(Object.assign({},f.current),{[e]:n}))}f.current=t.item;const v=s?"section editing":m?"section hovering":"section";return o.default.createElement("div",{"data-testid":u.linkId,className:v,onClick:function(e){E(e),t.setSelectedKey(t.item.id)},onMouseOver:function(e){E(e),t.setHoverKey(t.item.id)}},s?o.default.createElement(o.default.Fragment,null,i&&o.default.createElement("div",null,o.default.createElement(a.TextInput,{defaultValue:r.title,onChange:e=>h("title",e.currentTarget.value)})),!c&&o.default.createElement("div",null,o.default.createElement(a.NativeSelect,{defaultValue:u.type,onChange:e=>h("type",e.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})),!i&&o.default.createElement(a.Textarea,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:u.text,onChange:e=>h("text",e.currentTarget.value)}),Dn(u)&&o.default.createElement(Qn,{options:u.answerOption,onChange:e=>h("answerOption",e)})):o.default.createElement(o.default.Fragment,null,r.title&&o.default.createElement("h1",null,r.title),u.text&&o.default.createElement("p",null,u.text),!c&&o.default.createElement(Vn,{item:u,answers:{},onChange:()=>{}})),u.item&&u.item.map((e=>o.default.createElement("div",{key:e.id},o.default.createElement(Un,{item:e,selectedKey:t.selectedKey,setSelectedKey:t.setSelectedKey,hoverKey:t.hoverKey,setHoverKey:t.setHoverKey,onChange:p,onRemove:()=>function(e){var n,a;t.onChange(Object.assign(Object.assign({},t.item),{item:null===(a=null===(n=t.item)||void 0===n?void 0:n.item)||void 0===a?void 0:a.filter((t=>t!==e))}))}(e)})))),!c&&o.default.createElement("div",{className:"top-actions"},s?o.default.createElement(a.TextInput,{defaultValue:u.linkId,onChange:e=>h("linkId",e.currentTarget.value)}):o.default.createElement("div",null,d)),o.default.createElement("div",{className:"bottom-actions"},c&&o.default.createElement(o.default.Fragment,null,o.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),g({id:Hn(),linkId:Gn("q"),type:"string",text:"Question"})}},"Add item"),o.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),g({id:Hn(),linkId:Gn("g"),type:"group",text:"Group"})}},"Add group")),!i&&o.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),t.onRemove&&t.onRemove()}},"Remove")))}function Qn(e){var n;const a=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],l=null!==(n=e.options)&&void 0!==n?n:[];return o.default.createElement("div",null,l.map((t=>{const[n,r]=fe({type:"QuestionnaireItemAnswerOption",value:t},"value");return o.default.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},o.default.createElement("div",null,o.default.createElement(_e,{key:t.id,name:"value[x]",property:a,defaultPropertyType:r,defaultValue:n,onChange:(n,a)=>{const r=[...l],u=r.findIndex((e=>e.id===t.id));r[u]={id:t.id,[a]:n},e.onChange(r)}})),o.default.createElement("div",null,o.default.createElement("a",{href:"#",onClick:n=>{E(n),e.onChange(l.filter((e=>e.id!==t.id)))}},"Remove")))})),o.default.createElement("a",{href:"#",onClick:t=>{E(t),e.onChange([...l,{id:Hn()}])}},"Add choice"))}e.QuestionnaireItemType=void 0,(Rn=e.QuestionnaireItemType||(e.QuestionnaireItemType={})).group="group",Rn.display="display",Rn.question="question",Rn.boolean="boolean",Rn.decimal="decimal",Rn.integer="integer",Rn.date="date",Rn.dateTime="dateTime",Rn.time="time",Rn.string="string",Rn.text="text",Rn.url="url",Rn.choice="choice",Rn.openChoice="open-choice",Rn.attachment="attachment",Rn.reference="reference",Rn.quantity="quantity";let $n=1,Wn=1;function Gn(e){return e+$n++}function Hn(){return"id-"+Wn++}function Kn(e){if(e)return e.forEach((e=>{var t,n;(null===(t=e.id)||void 0===t?void 0:t.match(/^id-\d+$/))&&(Wn=Math.max(Wn,parseInt(e.id.substring(3))+1)),(null===(n=e.linkId)||void 0===n?void 0:n.match(/^q\d+$/))&&($n=Math.max($n,parseInt(e.linkId.substring(1))+1))})),e.map((e=>Object.assign(Object.assign({},e),{id:e.id||Hn(),item:Kn(e.item),answerOption:Jn(e.answerOption)})))}function Jn(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||Hn()})))}function Yn(e){return o.default.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function Xn(e,t){return function(e,t,n){const a=[];let l=e;l.snake&&(l=l.prev);for(;l&&l.prev&&l.prev.j>=0;){const e=l.i,r=l.j;l=l.prev;const u=l.i,o=l.j,i={position:u,lines:t.slice(u,e)},c={position:o,lines:n.slice(o,r)};let d;d=0===i.lines.length&&c.lines.length>0?"insert":i.lines.length>0&&0===c.lines.length?"delete":"change",a.push({original:i,revised:c,type:d}),l.snake&&(l=l.prev)}return a}(function(e,t){const n=e.length,a=t.length,l=n+a+1,r=1+2*l,u=r/2|0,o=new Array(r);o[u+1]={i:0,j:-1,prev:void 0,snake:!0};for(let r=0;r<l;r++){for(let l=-r;l<=r;l+=2){const i=u+l,c=i-1,d=o[i+1],s=o[c];let m,f=0;l===-r||l!==r&&s.i<d.i?(f=d.i,m=d):(f=s.i+1,m=s),o[c]=void 0;let p=f-l,g={i:f,j:p,prev:Zn(m),snake:!1};for(;f<n&&p<a&&e[f]===t[p];)f++,p++;if(f>g.i&&(g={i:f,j:p,prev:g,snake:!0}),o[i]=g,f>=n&&p>=a)return o[i]}o[u+r-1]=void 0}return}(e,t),e,t)}function Zn(e){return e&&!e.snake&&e.prev?e.prev:e}function ea(e){const n=e.entry.filter((e=>!!e.resource)).map((e=>{var n;return{meta:null===(n=e.resource)||void 0===n?void 0:n.meta,lines:t.stringify(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),a=n[0].lines.map((e=>({id:n[0].meta.versionId,meta:n[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const a=Xn(t[n-1].lines,t[n].lines);for(const l of a){const a=l.original.position,r=l.original.lines,u=l.revised.lines;if("delete"!==l.type&&"change"!==l.type||e.splice(a,r.length),"insert"===l.type||"change"===l.type)for(let r=0;r<l.revised.lines.length;r++)e.splice(a+r,0,{id:t[n].meta.versionId,meta:t[n].meta,value:u[r],span:1})}}}(a,n),function(e){let t=0;for(;t<e.length;){let n=t;for(;n<e.length&&e[n].id===e[t].id;)e[n].span=-1,n++;e[t].span=n-t,t=n}}(a),a}function ta(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function na(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return aa(n,"year");const a=Math.floor(t/2592e3);if(a>0)return aa(a,"month");const l=Math.floor(t/86400);if(l>0)return aa(l,"day");const r=Math.floor(t/3600);if(r>0)return aa(r,"hour");const u=Math.floor(t/60);return u>0?aa(u,"minute"):aa(t,"second")}function aa(e,t){return`${e} ${1===e?t:t+"s"} ago`}function la(e){return o.default.createElement(o.default.Fragment,null,"...",o.default.createElement("br",null),e.delta.original.lines.length>0&&o.default.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&o.default.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",o.default.createElement("br",null))}function ra(e){var n,a,l;const{response:r,resource:u}=e.entry;return u?o.default.createElement("tr",null,o.default.createElement("td",null,o.default.createElement(Ge,{value:null===(n=u.meta)||void 0===n?void 0:n.author,link:!0})),o.default.createElement("td",null,t.formatDateTime(null===(a=u.meta)||void 0===a?void 0:a.lastUpdated)),o.default.createElement("td",null,o.default.createElement(ce,{to:ua(u)},null===(l=u.meta)||void 0===l?void 0:l.versionId))):o.default.createElement("tr",null,o.default.createElement("td",{colSpan:3},t.normalizeErrorString(null==r?void 0:r.outcome)))}function ua(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function oa(e){const{onChangeMonth:t,onClick:l}=e,[r,u]=n.useState(ia);function i(e){u((n=>{const a=new Date(n.getTime());return a.setMonth(n.getMonth()+e),t(a),a}))}const c=n.useMemo((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),a=[];let l=[];for(let e=0;e<n.getDay();e++)l.push(void 0);for(;n.getMonth()===e.getMonth();)l.push({date:new Date(n.getTime()),available:ca(n,t)}),6===n.getDay()&&(a.push(l),l=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)l.push(void 0);a.push(l)}return a}(r,e.slots)),[r,e.slots]);return o.default.createElement("div",null,o.default.createElement(a.Group,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},o.default.createElement("p",{style:{flex:1}},(d=r).toLocaleString("default",{month:"long"})+" "+d.getFullYear()),o.default.createElement(a.Group,{position:"right",spacing:"xs"},o.default.createElement(a.Button,{variant:"outline","aria-label":"Previous month",onClick:()=>i(-1)},"<"),o.default.createElement(a.Button,{variant:"outline","aria-label":"Next month",onClick:()=>i(1)},">"))),o.default.createElement("table",{className:"medplum-calendar-table"},o.default.createElement("thead",null,o.default.createElement("tr",null,o.default.createElement("th",null,"SUN"),o.default.createElement("th",null,"MON"),o.default.createElement("th",null,"TUE"),o.default.createElement("th",null,"WED"),o.default.createElement("th",null,"THU"),o.default.createElement("th",null,"FRI"),o.default.createElement("th",null,"SAT"))),o.default.createElement("tbody",null,c.map(((e,t)=>o.default.createElement("tr",{key:"week-"+t},e.map(((e,t)=>o.default.createElement("td",{key:"day-"+t},e&&o.default.createElement(a.Button,{disabled:!e.available,onClick:()=>l(e.date)},e.date.getDate()))))))))));var d}function ia(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function ca(e,t){for(const n of t){const t=new Date(n.start);if(t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate())return!0}return!1}function da(e){return ma(e.getTime())}function sa(e){return ma(e.getTime()+26784e5)}function ma(e){return new Date(Math.max(Date.now(),e)).toISOString()}function fa(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function pa(e){let t="medplum-tab";function n(t){E(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),o.default.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function ga(e){return o.default.createElement("div",{role:"tabpanel"},e.children)}e.AddressDisplay=i,e.AddressInput=s,e.AttachmentArrayDisplay=f,e.AttachmentArrayInput=T,e.AttachmentButton=C,e.AttachmentInput=S,e.BackboneElementInput=$e,e.CheckboxFormSection=U,e.CodeInput=Ee,e.CodeableConceptDisplay=Z,e.CodeableConceptInput=ve,e.ContactDetailDisplay=te,e.ContactDetailInput=Ce,e.ContactPointDisplay=ee,e.ContactPointInput=be,e.DateTimeInput=Te,e.DefaultResourceTimeline=function(e){return o.default.createElement(dt,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]})})},e.DescriptionList=K,e.DescriptionListEntry=J,e.DiagnosticReportDisplay=He,e.Document=O,e.ElementDefinitionInputSelector=ze,e.ElementDefinitionTypeInput=Ue,e.EncounterTimeline=function(e){return o.default.createElement(dt,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${t.getReferenceString(e)}`}},{request:{method:"GET",url:`Media?encounter=${t.getReferenceString(e)}`}}]}),createCommunication:(e,n,a)=>({resourceType:"Communication",status:"completed",encounter:t.createReference(e),subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",status:"completed",encounter:t.createReference(e),subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.ErrorBoundary=at,e.FhirPathTable=vn,e.FooterLinks=function(e){return o.default.createElement("div",{className:"medplum-footer"},e.children)},e.Form=w,e.FormSection=$,e.HumanNameDisplay=ne,e.HumanNameInput=Ie,e.IdentifierInput=xe,e.Logo=P,e.MedplumLink=ce,e.MedplumProvider=function(e){const t=e.medplum,[a,l]=n.useState({profile:t.getProfile(),loading:!1});n.useEffect((()=>{function e(){l(Object.assign(Object.assign({},a),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,a]);const r=Object.assign(Object.assign({},a),{medplum:t});return o.default.createElement(p.Provider,{value:r},e.children)},e.MemoizedFhirPathTable=En,e.MemoizedSearchControl=fn,e.ObservationTable=Ke,e.PatientTimeline=function(e){return o.default.createElement(dt,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:yn.map((n=>({request:{method:"GET",url:n.replaceAll("$",t.getReferenceString(e))}})))}),createCommunication:(e,n,a)=>({resourceType:"Communication",status:"completed",subject:t.createReference(e),sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",status:"completed",subject:t.createReference(e),operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.PlanDefinitionBuilder=function(e){const t=h(),l=G(e.value),[r,u]=n.useState(void 0),[i,c]=n.useState(),[d,s]=n.useState(),[m,f]=n.useState();function p(){s(void 0)}function g(){c(void 0)}const v=n.useRef();if(v.current=m,n.useEffect((()=>{t.requestSchema("PlanDefinition").then(u).catch(console.log)}),[t]),n.useEffect((()=>{var e;return f((e=null!=l?l:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:Pn(e.action)}))),document.addEventListener("mouseover",p),document.addEventListener("click",g),()=>{document.removeEventListener("mouseover",p),document.removeEventListener("click",g)}}),[l]),!r||!m)return null;function E(e,t){f(Object.assign(Object.assign({},v.current),{[e]:t}))}return o.default.createElement("div",{className:"medplum-questionnaire-builder"},o.default.createElement(w,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(m)},o.default.createElement(a.TextInput,{label:"Plan Title",defaultValue:m.title,onChange:e=>E("title",e.currentTarget.value)}),o.default.createElement(bn,{actions:m.action||[],selectedKey:i,setSelectedKey:c,hoverKey:d,setHoverKey:s,onChange:e=>E("action",e)}),o.default.createElement(a.Button,{type:"submit"},"Save")))},e.QuestionnaireBuilder=function(e){const t=h(),l=G(e.questionnaire),[r,u]=n.useState(),[i,c]=n.useState(),[d,s]=n.useState(),[m,f]=n.useState();function p(){f(void 0)}function g(){s(void 0)}return n.useEffect((()=>{t.requestSchema("Questionnaire").then(u).catch(console.log)}),[t]),n.useEffect((()=>{var e;return c((e=null!=l?l:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||Hn(),item:Kn(e.item)}))),document.addEventListener("mouseover",p),document.addEventListener("click",g),()=>{document.removeEventListener("mouseover",p),document.removeEventListener("click",g)}}),[l]),r&&i?o.default.createElement("div",{className:"medplum-questionnaire-builder"},o.default.createElement(w,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},o.default.createElement(Un,{item:i,selectedKey:d,setSelectedKey:s,hoverKey:m,setHoverKey:f,onChange:c}),o.default.createElement(a.Button,{type:"submit"},"Save"))):null},e.QuestionnaireForm=Nn,e.QuestionnaireFormItem=Vn,e.RangeDisplay=ue,e.RangeInput=Re,e.ReferenceInput=Me,e.RegisterForm=function(e){const{type:t,projectId:a,googleClientId:l,recaptchaSiteKey:r,onSuccess:u}=e,i=h(),[c,d]=n.useState(void 0),[s,m]=n.useState();function f(e){e.code?i.processCode(e.code).then((()=>u())).catch(console.log):e.login&&d(e.login)}return n.useEffect((()=>{"patient"===t&&c&&i.startNewPatient({login:c,projectId:a}).then((e=>i.processCode(e.code))).then((()=>u())).catch((e=>m(e)))}),[i,t,a,c,u]),o.default.createElement(O,{width:450},s&&o.default.createElement("pre",null,JSON.stringify(s,null,2)),!c&&o.default.createElement(B,{projectId:a,googleClientId:l,recaptchaSiteKey:r,handleAuthResponse:f},e.children),c&&"project"===t&&o.default.createElement(A,{login:c,handleAuthResponse:f}))},e.RequestGroupDisplay=function(e){var l;const r=h(),u=G(e.value),[i,c]=n.useState(!1),[d,s]=n.useState();return n.useEffect((()=>{u&&!i&&(r.executeBatch(function(e){var t;const n=[];if(e.action)for(const a of e.action)(null===(t=a.resource)||void 0===t?void 0:t.reference)&&n.push({request:{method:"GET",url:a.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:n}}(u)).then(s).catch(console.log),c(!0))}),[r,u,i]),u&&d?o.default.createElement("div",{className:"medplum-request-group"},null===(l=u.action)||void 0===l?void 0:l.map(((n,l)=>{var r,u,i,c,s,m;const f=n.resource&&function(e){for(const n of null==d?void 0:d.entry)if(n.resource&&e.reference===t.getReferenceString(n.resource))return n.resource;return}(n.resource),p=null===(u=null===(r=null==f?void 0:f.input)||void 0===r?void 0:r[0])||void 0===u?void 0:u.valueReference,g=null===(c=null===(i=null==f?void 0:f.output)||void 0===i?void 0:i[0])||void 0===c?void 0:c.valueReference;return o.default.createElement("div",{className:"medplum-request-group-task",key:`action-${l}`},o.default.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==f?void 0:f.status)?"🗹":"☐"),o.default.createElement("div",{className:"medplum-request-group-task-details"},o.default.createElement("div",{className:"medplum-request-group-task-title"},n.title),n.description&&o.default.createElement("div",null,n.description),o.default.createElement("div",null,"Last edited by ",o.default.createElement(We,{value:null===(s=null==f?void 0:f.meta)||void 0===s?void 0:s.author})," on ",t.formatDateTime(null===(m=null==f?void 0:f.meta)||void 0===m?void 0:m.lastUpdated)),o.default.createElement("div",null,"Status: ",o.default.createElement(Yn,{status:(null==f?void 0:f.status)||"unknown"}))),o.default.createElement("div",{className:"medplum-request-group-task-actions"},p&&!g&&o.default.createElement(a.Button,{onClick:()=>e.onStart(f,p)},"Start"),p&&g&&o.default.createElement(a.Button,{onClick:()=>e.onEdit(f,p,g)},"Edit")))}))):null},e.ResourceArrayDisplay=se,e.ResourceArrayInput=Fe,e.ResourceAvatar=Ne,e.ResourceBadge=Ge,e.ResourceBlame=function(e){var t,l;const r=h(),[u,i]=n.useState(e.history);if(n.useEffect((()=>{!e.history&&e.resourceType&&e.id&&r.readHistory(e.resourceType,e.id).then(i).catch(console.log)}),[r,e.history,e.resourceType,e.id]),!u)return o.default.createElement("div",null,"Loading...");const c=null===(l=null===(t=u.entry)||void 0===t?void 0:t[0])||void 0===l?void 0:l.resource,d=ea(u);return o.default.createElement("div",{className:"medplum-blame-container"},o.default.createElement("table",{className:"medplum-blame"},o.default.createElement("tbody",null,d.map(((e,t)=>o.default.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&o.default.createElement("td",{className:"details",rowSpan:e.span},o.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},o.default.createElement(Ge,{value:e.meta.author,link:!0}),o.default.createElement(ce,{to:ta(c,e.meta.versionId)},na(e.meta.lastUpdated)))),o.default.createElement("td",{className:"line-number"},t+1),o.default.createElement("td",{className:"line"},o.default.createElement("pre",{className:"line-pre"},e.value))))))))},e.ResourceDiff=function(e){let n=e.original,a=e.revised;e.ignoreMeta&&(n=Object.assign(Object.assign({},n),{meta:void 0}),a=Object.assign(Object.assign({},a),{meta:void 0}));const l=Xn(t.stringify(n,!0).match(/[^\r\n]+/g),t.stringify(a,!0).match(/[^\r\n]+/g));return o.default.createElement("pre",{style:{color:"gray"}},l.map(((e,t)=>o.default.createElement(la,{key:"delta"+t,delta:e}))))},e.ResourceForm=function(e){const t=h(),l=G(e.defaultValue),[r,u]=n.useState(),[i,c]=n.useState();return n.useEffect((()=>{l&&(c(JSON.parse(JSON.stringify(l))),t.requestSchema(l.resourceType).then(u).catch(console.log))}),[t,l]),r&&i?o.default.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(i)}},o.default.createElement($,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},o.default.createElement(a.TextInput,{name:"resourceType",defaultValue:i.resourceType,disabled:!0})),o.default.createElement($,{title:"ID",htmlFor:"id",outcome:e.outcome},o.default.createElement(a.TextInput,{name:"id",defaultValue:i.id,disabled:!0})),o.default.createElement($e,{typeName:i.resourceType,defaultValue:i,outcome:e.outcome,onChange:c}),o.default.createElement(a.Group,null,o.default.createElement(a.Button,{type:"submit"},"OK"),e.onDelete&&o.default.createElement(a.Button,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(i)}},"Delete"))):o.default.createElement("div",null,"Loading...")},e.ResourceHistoryTable=function(e){var t;const a=h(),[l,r]=n.useState(e.history);return n.useEffect((()=>{!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?o.default.createElement("table",{className:"medplum-table"},o.default.createElement("thead",null,o.default.createElement("tr",null,o.default.createElement("th",null,"Author"),o.default.createElement("th",null,"Date"),o.default.createElement("th",null,"Version"))),o.default.createElement("tbody",null,null===(t=l.entry)||void 0===t?void 0:t.map(((e,t)=>o.default.createElement(ra,{key:"entry-"+t,entry:e}))))):o.default.createElement("div",null,"Loading...")},e.ResourceInput=Ae,e.ResourceName=We,e.ResourcePropertyDisplay=me,e.ResourcePropertyInput=_e,e.ResourceTable=tt,e.ResourceTimeline=dt,e.Scheduler=function(e){var l;const r=h(),u=G(e.schedule),i=G(e.questionnaire),[c,d]=n.useState();n.useRef().current=c;const[s,m]=n.useState(ia()),[f,p]=n.useState(),[g,v]=n.useState(),[E,y]=n.useState();if(n.useEffect((()=>{u?(d([]),r.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",t.getReferenceString(u)],["start","gt"+da(s)],["start","lt"+sa(s)]])).then(d).catch(console.log)):d(void 0)}),[r,u,s]),!u||!c||!i)return null;const b=null===(l=u.actor)||void 0===l?void 0:l[0];return o.default.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},o.default.createElement("div",{className:"medplum-calendar-info-pane"},b&&o.default.createElement(Ne,{value:b,size:"xl"}),b&&o.default.createElement(a.Text,{size:"xl",weight:500},o.default.createElement(We,{value:b})),o.default.createElement("p",null,"1 hour"),f&&o.default.createElement("p",null,f.toLocaleDateString()),g&&o.default.createElement("p",null,fa(new Date(g.start)))),o.default.createElement("div",{className:"medplum-calendar-selection-pane"},!f&&o.default.createElement("div",null,o.default.createElement("h3",null,"Select date"),o.default.createElement(oa,{slots:c,onChangeMonth:m,onClick:p})),f&&!g&&o.default.createElement("div",null,o.default.createElement("h3",null,"Select time"),o.default.createElement(a.Stack,null,c.map((e=>{const t=new Date(e.start);return t.getTime()>f.getTime()&&t.getTime()<f.getTime()+864e5&&o.default.createElement("div",{key:e.id},o.default.createElement(a.Button,{variant:"outline",style:{width:150},onClick:()=>v(e)},fa(t)))})))),f&&g&&!E&&o.default.createElement(Nn,{questionnaire:i,submitButtonText:"Next",onSubmit:y}),f&&g&&E&&o.default.createElement("div",null,o.default.createElement("h3",null,"You're all set!"),o.default.createElement("p",null,"Check your email for a calendar invite."))))},e.Scrollable=nt,e.SearchChangeEvent=on,e.SearchClickEvent=dn,e.SearchControl=mn,e.SearchFieldEditor=Wt,e.SearchFilterEditor=Jt,e.SearchLoadEvent=cn,e.ServiceRequestTimeline=function(e){return o.default.createElement(dt,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,n,a)=>({resourceType:"Communication",status:"completed",basedOn:[t.createReference(e)],subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",status:"completed",basedOn:[t.createReference(e)],subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.SignInForm=function(e){const t=h(),[a,l]=n.useState(void 0),[r,u]=n.useState(void 0);function i(n){n.login&&l(n.login),n.memberships&&u(n.memberships),n.code&&(e.onCode?e.onCode(n.code):t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log))}return o.default.createElement(O,{width:450},a?r?o.default.createElement(z,{login:a,memberships:r,handleAuthResponse:i}):"new"===e.projectId?o.default.createElement(A,{login:a,handleAuthResponse:i}):o.default.createElement("div",null,"Success"):o.default.createElement(_,{projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,generatePkce:!e.onCode,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:i},e.children))},e.StatusBadge=Yn,e.Tab=pa,e.TabList=function(e){return o.default.createElement(nt,{className:"medplum-surface",height:50},o.default.createElement("div",{role:"tablist",className:"medplum-tablist"},o.default.createElement("div",{className:"medplum-tablist-foreground"},o.default.Children.map(e.children,((t,n)=>o.default.isValidElement(t)&&t.type===pa?o.default.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))},e.TabPanel=ga,e.TabSwitch=function(e){return o.default.createElement(o.default.Fragment,null,o.default.Children.map(e.children,(t=>o.default.isValidElement(t)&&t.type===ga&&t.props.name===e.value?t:null)))},e.Timeline=lt,e.TimelineItem=rt,e.TitleBar=function(e){return o.default.createElement("div",{className:"medplum-title-bar"},e.children)},e.addDateEqualsFilter=function(e,t,n){return At(e,t,n,n)},e.addDateFilter=function(e,t,n,a){return Vt(e=Tt(e,t),t,n,a)},e.addDateFilterBetween=At,e.addField=function(e,t){if(e.fields&&e.fields.includes(t))return e;const n=[];return e.fields&&n.push(...e.fields),n.push(t),Object.assign(Object.assign({},e),{fields:n,name:void 0})},e.addFilter=St,e.addLastMonthFilter=wt,e.addMissingFilter=Mt,e.addNextMonthFilter=Rt,e.addThisMonthFilter=Pt,e.addTodayFilter=It,e.addTomorrowFilter=xt,e.addYearToDateFilter=Nt,e.addYesterdayFilter=kt,e.buildFieldNameString=Qt,e.clearFilters=function(e){return Ct(e,[])},e.clearFiltersOnField=Tt,e.convertIsoToLocal=Se,e.convertLocalToIso=Oe,e.createScriptTag=V,e.deleteFilter=Ot,e.formatRangeString=oe,e.getErrorsForInput=R,e.getIssuesForExpression=D,e.getOpString=Ut,e.getRecaptcha=q,e.getSearchOperators=zt,e.getSortField=Bt,e.getTimeString=na,e.getValueAndType=fe,e.hasFilterOnField=function(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))},e.initRecaptcha=L,e.isChoiceQuestion=Dn,e.isQuestionEnabled=zn,e.isSortDescending=_t,e.parseForm=I,e.renderValue=$t,e.setFilters=Ct,e.setOffset=Ft,e.setPage=Lt,e.setPropertyValue=H,e.setSort=qt,e.sortByDateAndPriority=ut,e.toggleSort=function(e,t){let n=!1;return Bt(e)===t&&(n=!_t(e)),qt(e,t,n)},e.useMedplum=h,e.useMedplumContext=g,e.useMedplumProfile=v,e.useResource=G,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@medplum/core"),require("react"),require("@mantine/core"),require("@tabler/icons"),require("react-router-dom")):"function"==typeof define&&define.amd?define(["exports","@medplum/core","react","@mantine/core","@tabler/icons","react-router-dom"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).medplum=e.medplum||{},e.medplum.ui={}),e.medplum.core,e.React,e.mantine.core,e.tabler.icons,e.ReactRouterDOM)}(this,(function(e,t,n,a,l,r){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=o(n);function i(e){const n=e.value;return n?u.default.createElement(u.default.Fragment,null,t.formatAddress(n)):null}function c(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function d(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 s(e){const[t,l]=n.useState(e.defaultValue||{}),r=n.useRef();function o(t){l(t),e.onChange&&e.onChange(t)}return r.current=t,u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(a.NativeSelect,{"data-testid":"address-use",defaultValue:null==t?void 0:t.use,onChange:e=>{return t=e.currentTarget.value,void o(Object.assign(Object.assign({},r.current),{use:t}));var t},data:["","home","work","temp","old","billing"]}),u.default.createElement(a.NativeSelect,{"data-testid":"address-type",defaultValue:null==t?void 0:t.type,onChange:e=>{return t=e.currentTarget.value,void o(Object.assign(Object.assign({},r.current),{type:t}));var t},data:["","postal","physical","both"]}),u.default.createElement(a.TextInput,{placeholder:"Line 1",defaultValue:c(t,0),onChange:e=>{return t=e.currentTarget.value,void o(d(r.current||{},0,t));var t}}),u.default.createElement(a.TextInput,{placeholder:"Line 2",defaultValue:c(t,1),onChange:e=>{return t=e.currentTarget.value,void o(d(r.current||{},1,t));var t}}),u.default.createElement(a.TextInput,{placeholder:"City",defaultValue:t.city,onChange:e=>{return t=e.currentTarget.value,void o(Object.assign(Object.assign({},r.current),{city:t}));var t}}),u.default.createElement(a.TextInput,{placeholder:"State",defaultValue:t.state,onChange:e=>{return t=e.currentTarget.value,void o(Object.assign(Object.assign({},r.current),{state:t}));var t}}),u.default.createElement(a.TextInput,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:e=>{return t=e.currentTarget.value,void o(Object.assign(Object.assign({},r.current),{postalCode:t}));var t}}))}function m(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?u.default.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&u.default.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:a,alt:null==t?void 0:t.title}),(null==n?void 0:n.startsWith("video/"))&&u.default.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},u.default.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&u.default.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},u.default.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),u.default.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},u.default.createElement("a",{href:null==t?void 0:t.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},(null==t?void 0:t.title)||"Download"))):null}function f(e){return u.default.createElement("div",null,e.values&&e.values.map(((t,n)=>u.default.createElement("div",{key:"attatchment-"+n},u.default.createElement(m,{value:t,maxWidth:e.maxWidth})))))}const p=n.createContext(void 0);function g(){return n.useContext(p)}function h(){return g().medplum}function v(){return g().profile}function E(e){e.preventDefault(),e.stopPropagation()}function y(e){if(b(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&b(t[0]))return!0}return!1}function b(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function C(e){const t=h(),a=n.useRef(null);function l(n){if(!n)return;if(!n.name)return;const a=n.name,l=n.type||"application/octet-stream";t.createBinary(n,a,l).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:a})})).catch((e=>{var t,n,a;alert(null===(a=null===(n=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0])||void 0===n?void 0:n.details)||void 0===a?void 0:a.text)}))}return u.default.createElement(u.default.Fragment,null,u.default.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:a,onChange:e=>function(e){E(e);const t=e.target.files;t&&Array.from(t).forEach(l)}(e)}),e.children({onClick:function(e){var t;E(e),null===(t=a.current)||void 0===t||t.click()}}))}function T(e){var t;const[r,o]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:[]),i=n.useRef();function c(t){o(t),e.onChange&&e.onChange(t)}return i.current=r,u.default.createElement("table",{style:{width:"100%"}},u.default.createElement("colgroup",null,u.default.createElement("col",{width:"97%"}),u.default.createElement("col",{width:"3%"})),u.default.createElement("tbody",null,r.map(((e,t)=>u.default.createElement("tr",{key:`${t}-${r.length}`},u.default.createElement("td",null,u.default.createElement(m,{value:e,maxWidth:200})),u.default.createElement("td",{className:"medplum-right"},u.default.createElement(a.ActionIcon,{title:"Remove",size:"sm",onClick:e=>{E(e);const n=r.slice();n.splice(t,1),c(n)}},u.default.createElement(l.IconCircleMinus,null)))))),u.default.createElement("tr",null,u.default.createElement("td",null),u.default.createElement("td",{className:"medplum-right"},u.default.createElement(C,{onUpload:e=>{c([...i.current,e])}},(e=>u.default.createElement(a.ActionIcon,Object.assign({},e,{title:"Add",size:"sm",color:"green"}),u.default.createElement(l.IconCloudUpload,{size:16}))))))))}function S(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return t?u.default.createElement(u.default.Fragment,null,u.default.createElement(m,{value:t,maxWidth:200}),u.default.createElement(a.Button,{onClick:e=>{E(e),r(void 0)}},"Remove")):u.default.createElement(C,{onUpload:r},(e=>u.default.createElement(a.Button,Object.assign({},e),"Upload...")))}function O(e){return u.default.createElement("main",{className:"medplum-document"},u.default.createElement("article",{style:{maxWidth:e.width}},e.children))}function k(e,t,n,a){return new(n||(n=Promise))((function(l,r){function o(e){try{i(a.next(e))}catch(e){r(e)}}function u(e){try{i(a.throw(e))}catch(e){r(e)}}function i(e){var t;e.done?l(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,u)}i((a=a.apply(e,t||[])).next())}))}function I(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?x(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&w(t,n);return t}function x(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function w(e,t){e[t.name]=t.value}function j(e){return u.default.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=I(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function P(e){return u.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},u.default.createElement("title",null,"Medplum Logo"),u.default.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),u.default.createElement("path",{fill:e.fill||"#946af9",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"}),u.default.createElement("path",{fill:e.fill||"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),u.default.createElement("path",{fill:e.fill||"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),u.default.createElement("path",{fill:e.fill||"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function R(e,t){var n,a,l;return null===(l=null===(a=null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return A(null===(n=e.expression)||void 0===n?void 0:n[0],t)})))||void 0===a?void 0:a.map((e=>{var t;return null===(t=e.details)||void 0===t?void 0:t.text})))||void 0===l?void 0:l.join("\n")}function D(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return A(null===(n=e.expression)||void 0===n?void 0:n[0],t)}))}function A(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(".");return a>=0&&t.substring(a+1)===e}function N(e){const t=h(),[l,r]=n.useState();return u.default.createElement(j,{style:{maxWidth:400},onSubmit:n=>k(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){r(e)}}))},u.default.createElement("div",{className:"medplum-center"},u.default.createElement(P,{size:32}),u.default.createElement("h1",null,"Create project")),u.default.createElement(a.Stack,{spacing:"xl"},u.default.createElement(a.TextInput,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:R(l,"firstName")}),u.default.createElement(a.Text,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",u.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",u.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),".")),u.default.createElement(a.Group,{position:"right",mt:"xl",noWrap:!0},u.default.createElement(a.Button,{type:"submit"},"Create project")))}function V(e,t){const n=document.getElementsByTagName("head")[0],a=document.createElement("script");a.async=!0,a.src=e,a.onload=t||null,n.appendChild(a)}function M(e){const t=h(),{googleClientId:a,handleGoogleCredential:l}=e,r=n.useRef(null),[o,i]=n.useState("undefined"!=typeof google),[c,d]=n.useState(!1),[s,m]=n.useState(!1);return n.useEffect((()=>{"undefined"!=typeof google?(c||(google.accounts.id.initialize({client_id:a,callback:l}),d(!0)),r.current&&!s&&(google.accounts.id.renderButton(r.current,{}),m(!0))):V("https://accounts.google.com/gsi/client",(()=>i(!0)))}),[t,a,c,o,r,s,l]),a?u.default.createElement("div",{ref:r}):null}function F(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 L(e){"undefined"==typeof grecaptcha&&V("https://www.google.com/recaptcha/api.js?render="+e)}function q(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>k(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function B(e){const t=F(e.googleClientId),l=e.recaptchaSiteKey,r=h(),[o,i]=n.useState(),c=D(o,void 0);return n.useEffect((()=>L(l)),[l]),u.default.createElement(j,{style:{maxWidth:400},onSubmit:t=>k(this,void 0,void 0,(function*(){try{const n=yield q(l);e.handleAuthResponse(yield r.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:l,recaptchaToken:n}))}catch(e){i(e)}}))},u.default.createElement("div",{className:"medplum-center"},e.children),c&&u.default.createElement("div",{className:"medplum-input-error"},c.map((e=>{var t,n;return u.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),t&&u.default.createElement(u.default.Fragment,null,u.default.createElement(a.Group,{position:"center",p:"xl",style:{height:70}},u.default.createElement(M,{googleClientId:t,handleGoogleCredential:t=>k(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield r.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){i(e)}}))})),u.default.createElement(a.Divider,{label:"or",labelPosition:"center",my:"lg"})),u.default.createElement(a.Stack,{spacing:"xl"},u.default.createElement(a.TextInput,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:R(o,"firstName")}),u.default.createElement(a.TextInput,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:R(o,"lastName")}),u.default.createElement(a.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:R(o,"email")}),u.default.createElement(a.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,error:R(o,"password")}),u.default.createElement(a.Text,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",u.default.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",u.default.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),u.default.createElement(a.Text,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",u.default.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",u.default.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply.")),u.default.createElement(a.Group,{position:"apart",mt:"xl",noWrap:!0},u.default.createElement(a.Checkbox,{name:"remember",label:"Remember me",size:"xs"}),u.default.createElement(a.Button,{type:"submit"},"Create account")))}function _(e){const t=h(),l=F(e.googleClientId),[r,o]=n.useState(),i=D(r,void 0);function c(){return k(this,void 0,void 0,(function*(){e.generatePkce&&(yield t.startPkce())}))}return u.default.createElement(j,{style:{maxWidth:400},onSubmit:n=>{c().then((()=>t.startLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,email:n.email,password:n.password,remember:"true"===n.remember}))).then(e.handleAuthResponse).catch(o)}},u.default.createElement("div",{className:"medplum-center"},e.children),i&&u.default.createElement("div",{className:"medplum-input-error"},i.map((e=>{var t,n;return u.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),l&&u.default.createElement(u.default.Fragment,null,u.default.createElement(a.Group,{position:"center",p:"xl",style:{height:70}},u.default.createElement(M,{googleClientId:l,handleGoogleCredential:n=>{c().then((()=>t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,googleClientId:n.clientId,googleCredential:n.credential}))).then(e.handleAuthResponse).catch(o)}})),u.default.createElement(a.Divider,{label:"or",labelPosition:"center",my:"lg"})),u.default.createElement(a.Stack,{spacing:"xl"},u.default.createElement(a.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0,error:R(r,"email")}),u.default.createElement(a.PasswordInput,{name:"password",type:"password",label:"Password",autoComplete:"off",required:!0,error:R(r,"password")})),u.default.createElement(a.Group,{position:"apart",mt:"xl",noWrap:!0},e.onForgotPassword&&u.default.createElement(a.Anchor,{component:"button",type:"button",color:"dimmed",onClick:e.onForgotPassword,size:"xs"},"Forgot password"),e.onRegister&&u.default.createElement(a.Anchor,{component:"button",type:"button",color:"dimmed",onClick:e.onRegister,size:"xs"},"Register"),u.default.createElement(a.Checkbox,{name:"remember",label:"Remember me",size:"xs"}),u.default.createElement(a.Button,{type:"submit"},"Sign in")))}function z(e){const t=h();return u.default.createElement(a.Stack,null,u.default.createElement("div",{className:"medplum-center"},u.default.createElement(P,{size:32}),u.default.createElement(a.Text,{size:"lg",weight:500},"Choose profile")),e.memberships.map((n=>{var l,r;return u.default.createElement(a.UnstyledButton,{key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse).catch(console.log)}},u.default.createElement(a.Group,null,u.default.createElement(a.Avatar,{radius:"xl"}),u.default.createElement("div",{style:{flex:1}},u.default.createElement(a.Text,{size:"sm",weight:500},null===(l=n.profile)||void 0===l?void 0:l.display),u.default.createElement(a.Text,{color:"dimmed",size:"xs"},null===(r=n.project)||void 0===r?void 0:r.display))))})))}function U(e){return u.default.createElement("div",{className:"medplum-checkbox-form-section"},u.default.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),u.default.createElement("div",{className:"medplum-checkbox-form-section-details-container"},u.default.createElement("label",{htmlFor:e.htmlFor},e.title),u.default.createElement("p",null,e.description)))}const Q=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function $(e){const t=D(e.outcome,e.htmlFor),n=t&&t.length>0;return u.default.createElement("fieldset",{className:"medplum-form-section"},e.title&&u.default.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&u.default.createElement("p",null,e.description),e.children,n&&u.default.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return u.default.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))))}const W={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function G(e){const t=h(),[a,l]=n.useState(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?W:e.getCachedReference(t);return}(t,e));return n.useEffect((()=>{let n=!0;return!a&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{n&&l(e)})).catch((()=>l(void 0))),()=>n=!1}),[t,a,e]),a}function H(e,n,a,l,r){const o=l.type;if(o.length>1)for(const a of o){const l=n.replace("[x]",t.capitalize(a.code));l in e&&delete e[l]}return e[a]=r,e}function K(e){return u.default.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function J(e){return u.default.createElement(u.default.Fragment,null,u.default.createElement("dt",null,e.term),u.default.createElement("dd",null,e.children))}function Y(e){const n=e.value,a=n.value;if(!a)return null;const l=n.type,r=t.globalSchema.types[l];return r?"object"==typeof a&&"name"in a&&1===Object.keys(a).length?u.default.createElement("div",null,a.name):u.default.createElement(K,{compact:e.compact},Object.entries(r.properties).map((a=>{const l=a[0];if(Q.indexOf(l)>=0)return null;const r=a[1],[o,i]=fe(n,l);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:u.default.createElement(J,{key:l,term:t.getPropertyDisplayName(l)},u.default.createElement(me,{property:r,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):u.default.createElement("div",null,l," not implemented")}function X(e){var t,n;return u.default.createElement(u.default.Fragment,null,(null===(t=e.value)||void 0===t?void 0:t.display)||(null===(n=e.value)||void 0===n?void 0:n.code))}function Z(e){const t=e.value;return t?t.text?u.default.createElement(u.default.Fragment,null,t.text):t.coding?u.default.createElement(u.default.Fragment,null,t.coding.map(((e,t)=>u.default.createElement(u.default.Fragment,{key:"coding-"+t},t>0&&u.default.createElement(u.default.Fragment,null,", "),u.default.createElement(X,{value:e}))))):null:null}function ee(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("]")),u.default.createElement(u.default.Fragment,null,n.join("").trim())}function te(e){var t;const n=e.value;return n?u.default.createElement(u.default.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>u.default.createElement(ee,{key:"telecom-"+t,value:e})))):null}function ne(e){const n=e.value;return n?u.default.createElement(u.default.Fragment,null,t.formatHumanName(n,e.options)):null}function ae(e){var t,n;return u.default.createElement("div",null,null===(t=e.value)||void 0===t?void 0:t.system,": ",null===(n=e.value)||void 0===n?void 0:n.value)}function le(e){return u.default.createElement(u.default.Fragment,null,re(e.value))}function re(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 oe(e){return u.default.createElement(u.default.Fragment,null,ue(e.value))}function ue(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${re(e.low)}`:!e.low&&e.high?`<= ${re(e.high)}`:`${re(e.low)} - ${re(e.high)}`:""}function ie(e){const t=e.value;return t?u.default.createElement(u.default.Fragment,null,u.default.createElement(le,{value:t.numerator})," / ",u.default.createElement(le,{value:t.denominator})):null}function ce(e){const t=r.useNavigate();let n=function(e){if(e){if("string"==typeof e)return function(e){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/"))return e;return"/"+e}(e);if("resourceType"in e)return function(e){return`/${e.resourceType}/${e.id}`}(e);if("reference"in e)return function(e){return`/${e.reference}`}(e)}return"#"}(e.to);return e.suffix&&(n+="/"+e.suffix),u.default.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{E(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function de(e){if(!e.value)return null;const n=e.value.display||e.value.reference||t.stringify(e.value);return!1!==e.link&&e.value.reference?u.default.createElement(ce,{to:e.value},n):u.default.createElement(u.default.Fragment,null,n)}function se(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 u.default.createElement(u.default.Fragment,null,r.map(((t,n)=>u.default.createElement("div",{key:`${n}-${r.length}`},u.default.createElement(me,{arrayElement:!0,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function me(e){var n;const{property:a,propertyType:l,value:r}=e;if("*"===(null==a?void 0:a.max)&&!e.arrayElement)return"Attachment"===l?u.default.createElement(f,{values:r,maxWidth:e.maxWidth}):u.default.createElement(se,{property:a,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(l){case t.PropertyType.boolean:return u.default.createElement("div",null,void 0===r?"":Boolean(r).toString());case t.PropertyType.SystemString:case t.PropertyType.code:case t.PropertyType.date:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.string:case t.PropertyType.unsignedInt:case t.PropertyType.uri:case t.PropertyType.url:return u.default.createElement("div",null,r);case t.PropertyType.canonical:return u.default.createElement(de,{value:{reference:r},link:e.link});case t.PropertyType.dateTime:case t.PropertyType.instant:return u.default.createElement("div",null,t.formatDateTime(r));case t.PropertyType.markdown:return u.default.createElement("pre",null,r);case t.PropertyType.Address:return u.default.createElement(i,{value:r});case t.PropertyType.Annotation:return u.default.createElement("div",null,null==r?void 0:r.text);case t.PropertyType.Attachment:return u.default.createElement(m,{value:r,maxWidth:e.maxWidth});case t.PropertyType.CodeableConcept:return u.default.createElement(Z,{value:r});case t.PropertyType.Coding:return u.default.createElement(X,{value:r});case t.PropertyType.ContactDetail:return u.default.createElement(te,{value:r});case t.PropertyType.ContactPoint:return u.default.createElement(ee,{value:r});case t.PropertyType.HumanName:return u.default.createElement(ne,{value:r});case t.PropertyType.Identifier:return u.default.createElement(ae,{value:r});case t.PropertyType.Period:return u.default.createElement("div",null,t.formatPeriod(r));case t.PropertyType.Quantity:return u.default.createElement(le,{value:r});case t.PropertyType.Range:return u.default.createElement(oe,{value:r});case t.PropertyType.Ratio:return u.default.createElement(ie,{value:r});case t.PropertyType.Reference:return u.default.createElement(de,{value:r,link:e.link});case t.PropertyType.Timing:return u.default.createElement("div",null,t.formatTiming(r));default:if(!(null==a?void 0:a.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return u.default.createElement(Y,{value:{type:t.buildTypeName(null===(n=null==a?void 0:a.path)||void 0===n?void 0:n.split(".")),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function fe(e,n){const a=t.getTypedPropertyValue(e,n);return a?Array.isArray(a)?[a.map((e=>e.value)),a[0].type]:[a.value,a.type]:[void 0,"undefined"]}function pe(e){const l=v(),[r,o]=n.useState(e.defaultValue||{});return n.useRef().current=r,u.default.createElement(a.TextInput,{name:e.name,placeholder:"Annotation text",defaultValue:r.text,onChange:n=>function(n){const a=n?{text:n,authorReference:l&&t.createReference(l),time:(new Date).toISOString()}:{};o(a),e.onChange&&e.onChange(a)}(n.currentTarget.value)})}function ge(e){return{value:e.code,label:(t=e,t.display||t.code||""),element:e};var t}function he(e){const t=h(),{property:l,defaultValue:r}=e,[o,i]=n.useState(r?[r.code]:[]),[c,d]=n.useState(r?[ge(r)]:[]),s=n.useRef();s.current=c;const m=n.useCallback((e=>k(this,void 0,void 0,(function*(){var n,a;const r=null===(n=l.binding)||void 0===n?void 0:n.valueSet,o=null===(a=(yield t.searchValueSet(r,e)).expansion)||void 0===a?void 0:a.contains,u=[...s.current];for(const e of o)u.some((t=>t.value===e.code))||u.push(ge(e));d(u)}))),[t,l,s]);return n.useEffect((()=>{m("").catch(console.log)}),[m]),u.default.createElement(a.MultiSelect,{data:c,placeholder:e.placeholder,searchable:!0,creatable:!0,clearable:!0,value:o,filter:(e,t,n)=>{var a,l;return!(0!==o.length||t||!(null===(a=n.element.display)||void 0===a?void 0:a.toLowerCase().includes(e.toLowerCase().trim()))&&!(null===(l=n.element.code)||void 0===l?void 0:l.toLowerCase().includes(e.toLowerCase().trim())))},onChange:function(t){i(t);const n=t[0];let a;if(n&&(a=s.current.find((e=>e.value===t[0])),!a)){a=ge({code:n,display:n}),d([...s.current,a])}e.onChange&&e.onChange(null==a?void 0:a.element)},getCreateLabel:e=>`+ Create ${e}`,onCreate:e=>ge({code:e,display:e})})}function ve(e){const[t,a]=n.useState(e.defaultValue);return u.default.createElement(he,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(l=t,{system:null===(o=null===(r=l.coding)||void 0===r?void 0:r[0])||void 0===o?void 0:o.system,code:null===(c=null===(i=l.coding)||void 0===i?void 0:i[0])||void 0===c?void 0:c.code,display:null===(s=null===(d=l.coding)||void 0===d?void 0:d[0])||void 0===s?void 0:s.display}),onChange:function(t){const n=t&&{text:(l=t).display,coding:[{system:l.system,code:l.code,display:l.display}]};var l;a(n),e.onChange&&e.onChange(n)}});var l,r,o,i,c,d,s}function Ee(e){const[t,a]=n.useState(e.defaultValue);return u.default.createElement(he,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:(l=t,l?{code:l}:void 0),onChange:function(t){const n=null==(l=t)?void 0:l.code;var l;a(n),e.onChange&&e.onChange(n)}});var l}function ye(e){const[t,a]=n.useState(e.defaultValue);return u.default.createElement(he,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(l=t,{system:l.system,code:l.code,display:l.display}),onChange:function(t){const n=t&&{system:(l=t).system,code:l.code,display:l.display};var l;a(n),e.onChange&&e.onChange(n)}});var l}function be(e){const[t,l]=n.useState(e.defaultValue),r=n.useRef();function o(t){t&&0===Object.keys(t).length&&(t=void 0),l(t),e.onChange&&e.onChange(t)}return r.current=t,u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(a.NativeSelect,{"data-testid":"system",defaultValue:null==t?void 0:t.system,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{system:e});e||delete t.system,o(t)}(e.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),u.default.createElement(a.NativeSelect,{"data-testid":"use",defaultValue:null==t?void 0:t.use,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{use:e});e||delete t.use,o(t)}(e.currentTarget.value),data:["","home","work","temp","old","mobile"]}),u.default.createElement(a.TextInput,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{value:e});e||delete t.value,o(t)}(e.currentTarget.value)}))}function Ce(e){var t;const[l,r]=n.useState(e.defaultValue),o=n.useRef();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=l,u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(a.TextInput,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:null==l?void 0:l.name,onChange:e=>function(e){const t=Object.assign(Object.assign({},o.current),{name:e});e||delete t.name,i(t)}(e.currentTarget.value)}),u.default.createElement(be,{name:e.name+"-telecom",defaultValue:null===(t=null==l?void 0:l.telecom)||void 0===t?void 0:t[0],onChange:function(e){const t=Object.assign(Object.assign({},o.current),{telecom:e&&[e]});e||delete t.telecom,i(t)}}))}function Te(e){return u.default.createElement(a.TextInput,{id:e.name,name:e.name,"data-testid":e.name,placeholder:e.placeholder,type:"datetime-local",defaultValue:Se(e.defaultValue),error:R(e.outcome,e.name),onChange:t=>{if(e.onChange){const n=t.currentTarget.value;e.onChange(Oe(n))}}})}function Se(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toLocaleDateString("sv")+"T"+n.toLocaleTimeString("sv"):""}function Oe(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toISOString():""}function ke(e){return u.default.createElement(a.JsonInput,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:t.stringify(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Ie(e){var t,l,r;const[o,i]=n.useState(e.defaultValue),c=n.useRef();function d(t){i(t),e.onChange&&e.onChange(t)}return c.current=o,u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(a.NativeSelect,{defaultValue:null==o?void 0:o.use,"data-testid":"use",onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{use:t||void 0}));var t},data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),u.default.createElement(a.TextInput,{placeholder:"Prefix",defaultValue:null===(t=null==o?void 0:o.prefix)||void 0===t?void 0:t.join(" "),onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{prefix:t?t.split(" "):void 0}));var t}}),u.default.createElement(a.TextInput,{placeholder:"Given",defaultValue:null===(l=null==o?void 0:o.given)||void 0===l?void 0:l.join(" "),onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{given:t?t.split(" "):void 0}));var t}}),u.default.createElement(a.TextInput,{placeholder:"Family",defaultValue:null==o?void 0:o.family,onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{family:t||void 0}));var t}}),u.default.createElement(a.TextInput,{placeholder:"Suffix",defaultValue:null===(r=null==o?void 0:o.suffix)||void 0===r?void 0:r.join(" "),onChange:e=>{return t=e.currentTarget.value,void d(Object.assign(Object.assign({},c.current),{suffix:t?t.split(" "):void 0}));var t}}))}function xe(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(a.TextInput,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>r(Object.assign(Object.assign({},t),{system:e.currentTarget.value}))}),u.default.createElement(a.TextInput,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>r(Object.assign(Object.assign({},t),{value:e.currentTarget.value}))}))}function we(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(Te,{name:e.name+".start",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>r(Object.assign(Object.assign({},t),{start:e}))}),u.default.createElement(Te,{name:e.name+".end",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>r(Object.assign(Object.assign({},t),{end:e}))}))}function je(e){var t;const[l,r]=n.useState(e.defaultValue);function o(t){r(t),e.onChange&&e.onChange(t)}return u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(a.NativeSelect,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:null==l?void 0:l.comparator,data:["","<","<=",">=",">"],onChange:e=>o(Object.assign(Object.assign({},l),{comparator:e.currentTarget.value}))}),u.default.createElement(a.TextInput,{id:e.name,name:e.name,"data-testid":e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==l?void 0:l.value)||void 0===t?void 0:t.toString(),onChange:e=>o(Object.assign(Object.assign({},l),{value:Pe(e.currentTarget.value)}))}),u.default.createElement(a.TextInput,{placeholder:"Unit",defaultValue:null==l?void 0:l.unit,onChange:e=>o(Object.assign(Object.assign({},l),{unit:e.currentTarget.value}))}))}function Pe(e){if(e)return parseFloat(e)}function Re(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(je,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>r(Object.assign(Object.assign({},t),{low:e}))}),u.default.createElement(je,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>r(Object.assign(Object.assign({},t),{high:e}))}))}function De(e){const[t,l]=n.useState(e.defaultValue);function r(t){l(t),e.onChange&&e.onChange(t)}return u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(je,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>r(Object.assign(Object.assign({},t),{numerator:e}))}),u.default.createElement(je,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>r(Object.assign(Object.assign({},t),{denominator:e}))}))}function Ae(e){var n,l,r;const o=G(e.value),i=o?t.getDisplayString(o):null!==(n=e.alt)&&void 0!==n?n:"",c=null!==(l=o&&t.getImageSrc(o))&&void 0!==l?l:e.src,d=null!==(r=e.radius)&&void 0!==r?r:"xl",s=Object.assign({},e);return delete s.value,delete s.link,e.link?u.default.createElement(ce,{to:o},u.default.createElement(a.Avatar,Object.assign({src:c,alt:i,radius:d},s))):u.default.createElement(a.Avatar,Object.assign({src:c,alt:i,radius:d},s))}function Ne(e){const l=h(),r=G(e.defaultValue),[o,i]=n.useState(r?t.getDisplayString(r):""),[c,d]=n.useState(!1),[s,m]=n.useState([]);function f(n){return k(this,void 0,void 0,(function*(){d(!0);const a=yield l.searchResources(e.resourceType,"name="+encodeURIComponent(n)+"&_count=10");m(a.map((e=>({value:t.getDisplayString(e),resource:e})))),d(!1)}))}return u.default.createElement(a.Autocomplete,{itemComponent:Ve,value:o,data:s,placeholder:e.placeholder,onFocus:()=>f(o),onChange:function(e){return k(this,void 0,void 0,(function*(){return i(e),f(e)}))},onItemSubmit:function(t){i(t.value),m([]),e.onChange&&e.onChange(t.resource)},rightSection:c?u.default.createElement(a.Loader,{size:16}):null})}const Ve=n.forwardRef(((e,t)=>{var{value:n,resource:l}=e,r=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var l=0;for(a=Object.getOwnPropertySymbols(e);l<a.length;l++)t.indexOf(a[l])<0&&Object.prototype.propertyIsEnumerable.call(e,a[l])&&(n[a[l]]=e[a[l]])}return n}(e,["value","resource"]);return u.default.createElement("div",Object.assign({ref:t},r),u.default.createElement(a.Group,{noWrap:!0},u.default.createElement(Ae,{value:l}),u.default.createElement("div",null,u.default.createElement(a.Text,null,n),u.default.createElement(a.Text,{size:"xs",color:"dimmed"},l.birthDate))))}));function Me(e){const l=e.targetTypes,r=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,l),[o,i]=n.useState(e.defaultValue),[c,d]=n.useState(r);n.useRef().current=o;return n.useRef().current=c,u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},l?u.default.createElement(a.NativeSelect,{"data-testid":"reference-input-resource-type-select",defaultValue:c,onChange:e=>d(e.currentTarget.value),data:l}):u.default.createElement(a.TextInput,{"data-testid":"reference-input-resource-type-input",defaultValue:c,onChange:e=>d(e.currentTarget.value)}),u.default.createElement(Ne,{resourceType:c,name:e.name+"-id",placeholder:e.placeholder,defaultValue:o,onChange:n=>{var a;a=n?t.createReference(n):void 0,i(a),e.onChange&&e.onChange(a)}}))}function Fe(e){const[t,r]=n.useState(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),o=n.useRef();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=t,u.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},u.default.createElement("colgroup",null,u.default.createElement("col",{width:"97%"}),u.default.createElement("col",{width:"3%"})),u.default.createElement("tbody",null,t.map(((n,r)=>u.default.createElement("tr",{key:`${r}-${t.length}`},u.default.createElement("td",null,u.default.createElement(_e,{arrayElement:!0,property:e.property,name:e.name+"."+r,defaultValue:n,onChange:e=>{const t=[...o.current];t[r]=e,i(t)}})),u.default.createElement("td",{style:{textAlign:"right"}},u.default.createElement(a.ActionIcon,{title:"Remove",size:"sm",onClick:e=>{E(e);const t=[...o.current];t.splice(r,1),i(t)}},u.default.createElement(l.IconCircleMinus,null)))))),u.default.createElement("tr",null,u.default.createElement("td",null),u.default.createElement("td",{style:{textAlign:"right"}},u.default.createElement(a.ActionIcon,{title:"Add",size:"sm",color:"green",onClick:e=>{E(e);const t=[...o.current];t.push(void 0),i(t)}},u.default.createElement(l.IconCirclePlus,null))))))}const Le=["sun","mon","tue","wed","thu","fri","sat"];function qe(e){const[l,r]=n.useState(e.defaultValue||{}),[o,i]=n.useState(!1),c=n.useRef();return c.current=l,u.default.createElement(u.default.Fragment,null,u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement("span",null,t.formatTiming(c.current)||"No repeat"),u.default.createElement(a.Button,{onClick:()=>i(!0)},"Edit")),u.default.createElement(Be,{visible:o,defaultValue:c.current,onOk:t=>{e.onChange&&e.onChange(t),r(t),i(!1)},onCancel:()=>i(!1)}))}function Be(e){var t,l;const[r,o]=n.useState(e.defaultValue||{}),i=n.useRef();function c(e){o(Object.assign(Object.assign({},i.current),{repeat:e}))}function d(e,t){t?function(e){var t,n,a;const l=(null===(n=null===(t=i.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)||c(Object.assign(Object.assign({},null===(a=i.current)||void 0===a?void 0:a.repeat),{dayOfWeek:[...l,e]}))}(e):function(e){var t,n,a;const l=(null===(n=null===(t=i.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];l.includes(e)&&c(Object.assign(Object.assign({},null===(a=i.current)||void 0===a?void 0:a.repeat),{dayOfWeek:l.filter((t=>t!==e))}))}(e)}return i.current=r,u.default.createElement(a.Modal,{title:"Timing",closeButtonLabel:"Close",opened:e.visible,onClose:()=>e.onCancel()},u.default.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},u.default.createElement($,{title:"Starts on",htmlFor:"timing-dialog-start"},u.default.createElement(Te,{name:"timing-dialog-start",onChange:e=>{return t=e,void o(Object.assign(Object.assign({},i.current),{event:[t]}));var t}})),u.default.createElement($,{title:"Repeat every",htmlFor:"timing-dialog-period"},u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(a.TextInput,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:null===(t=null==r?void 0:r.repeat)||void 0===t?void 0:t.period,onChange:e=>function(e){var t;c(Object.assign(Object.assign({},null===(t=i.current)||void 0===t?void 0:t.repeat),{period:e}))}(parseInt(e.currentTarget.value))}),u.default.createElement(a.NativeSelect,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:null===(l=null==r?void 0:r.repeat)||void 0===l?void 0:l.periodUnit,onChange:e=>function(e){var t;c(Object.assign(Object.assign({},null===(t=i.current)||void 0===t?void 0:t.repeat),{periodUnit:e}))}(e.currentTarget.value),data:[{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),u.default.createElement($,{title:"Repeat on"},u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},Le.map((e=>u.default.createElement(u.default.Fragment,{key:e},u.default.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),u.default.createElement(a.Checkbox,{id:"timing-dialog-repeat-"+e,name:"timing-dialog-repeat-"+e,onChange:t=>d(e,t.currentTarget.checked)}))))))),u.default.createElement(a.Button,{onClick:()=>e.onOk(r)},"OK"))}function _e(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?u.default.createElement(T,{name:o,defaultValue:i,onChange:e.onChange}):u.default.createElement(Fe,{property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?u.default.createElement(ze,Object.assign({elementDefinitionTypes:c},e)):u.default.createElement(Ue,Object.assign({elementDefinitionType:c[0]},e))}function ze(e){const l=e.elementDefinitionTypes;let r;e.defaultPropertyType&&(r=l.find((t=>t.code===e.defaultPropertyType))),r||(r=l[0]);const[o,i]=n.useState(r);return u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(a.NativeSelect,{style:{width:"200px"},defaultValue:null==o?void 0:o.code,onChange:e=>{i(l.find((t=>t.code===e.currentTarget.value)))},data:l.map((e=>({value:e.code,label:e.code})))}),u.default.createElement(Ue,Object.assign({},e,{elementDefinitionType:o,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",t.capitalize(o.code)))}})))}function Ue(e){var n;const l=e.property,r=e.elementDefinitionType.code,o=e.name,i=e.defaultValue;switch(r){case t.PropertyType.SystemString:case t.PropertyType.canonical:case t.PropertyType.string:case t.PropertyType.time:case t.PropertyType.uri:case t.PropertyType.url:return u.default.createElement(a.TextInput,{id:o,name:o,"data-testid":o,defaultValue:i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:R(e.outcome,o)});case t.PropertyType.date:return u.default.createElement(a.TextInput,{type:"date",id:o,name:o,"data-testid":o,defaultValue:i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:R(e.outcome,o)});case t.PropertyType.dateTime:case t.PropertyType.instant:return u.default.createElement(Te,{name:o,defaultValue:i,onChange:e.onChange,outcome:e.outcome});case t.PropertyType.decimal:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.unsignedInt:return u.default.createElement(a.TextInput,{type:"number",step:r===t.PropertyType.decimal?"any":"1",id:o,name:o,"data-testid":o,defaultValue:i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.valueAsNumber)}});case t.PropertyType.code:return u.default.createElement(Ee,{property:l,name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.boolean:return u.default.createElement(a.Checkbox,{id:o,name:o,"data-testid":o,defaultChecked:!!i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}});case t.PropertyType.markdown:return u.default.createElement(a.Textarea,{id:o,name:o,"data-testid":o,defaultValue:i,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}});case t.PropertyType.Address:return u.default.createElement(s,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Annotation:return u.default.createElement(pe,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Attachment:return u.default.createElement(S,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.CodeableConcept:return u.default.createElement(ve,{property:l,name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Coding:return u.default.createElement(ye,{property:l,name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.ContactDetail:return u.default.createElement(Ce,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.ContactPoint:return u.default.createElement(be,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Extension:return u.default.createElement(ke,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.HumanName:return u.default.createElement(Ie,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Identifier:return u.default.createElement(xe,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Period:return u.default.createElement(we,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Quantity:return u.default.createElement(je,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Range:return u.default.createElement(Re,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Ratio:return u.default.createElement(De,{name:o,defaultValue:i,onChange:e.onChange});case t.PropertyType.Reference:return u.default.createElement(Me,{name:o,defaultValue:i,targetTypes:Qe(l),onChange:e.onChange});case t.PropertyType.Timing:return u.default.createElement(qe,{name:o,defaultValue:i,onChange:e.onChange});default:return u.default.createElement($e,{typeName:t.buildTypeName(null===(n=l.path)||void 0===n?void 0:n.split(".")),defaultValue:i,onChange:e.onChange,outcome:e.outcome})}}function Qe(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 $e(e){var a;const[l,r]=n.useState(null!==(a=e.defaultValue)&&void 0!==a?a:{});function o(t){r(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=t.globalSchema.types[i];if(!c)return u.default.createElement("div",null,i," not implemented");const d={type:i,value:l};return u.default.createElement(u.default.Fragment,null,Object.entries(c.properties).map((n=>{const a=n[0];if("id"===a||Q.indexOf(a)>=0)return null;const r=n[1];if(!r.type)return null;const[i,c]=fe(d,a);return 1===r.type.length&&"boolean"===r.type[0].code?u.default.createElement(U,{key:a,title:t.getPropertyDisplayName(a),description:r.definition,htmlFor:a},u.default.createElement(_e,{property:r,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,t)=>{o(H(l,a,null!=t?t:a,n[1],e))}})):u.default.createElement($,{key:a,title:t.getPropertyDisplayName(a),description:r.definition,htmlFor:a,outcome:e.outcome},u.default.createElement(_e,{property:r,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,t)=>{o(H(l,a,null!=t?t:a,n[1],e))}}))})))}function We(e){const n=G(e.value);if(!n)return null;const a=t.getDisplayString(n);return e.link?u.default.createElement(ce,{to:n},a):u.default.createElement("span",null,a)}function Ge(e){return u.default.createElement("div",{className:"medplum-resource-badge"},u.default.createElement(Ae,{size:24,radius:12,value:e.value,link:e.link}),u.default.createElement(We,{value:e.value,link:e.link}))}function He(e){var n,a;const l=G(e.value),r=G(null===(n=null==l?void 0:l.specimen)||void 0===n?void 0:n[0]);if(!l)return null;let o="";if(l.presentedForm&&l.presentedForm.length>0){const e=l.presentedForm[0];(null===(a=e.contentType)||void 0===a?void 0:a.startsWith("text/plain"))&&e.data&&(o=window.atob(e.data))}if(null==r?void 0:r.note)for(const e of r.note)o+=e.text+"\n\n";return u.default.createElement("div",{className:"medplum-diagnostic-report"},u.default.createElement("h1",null,"Diagnostic Report"),u.default.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&u.default.createElement("dl",null,u.default.createElement("dt",null,"Subject"),u.default.createElement("dd",null,u.default.createElement(Ge,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>u.default.createElement("dl",{key:e.reference},u.default.createElement("dt",null,"Interpreter"),u.default.createElement("dd",null,u.default.createElement(Ge,{value:e,link:!0}))))),l.issued&&u.default.createElement("dl",null,u.default.createElement("dt",null,"Issued"),u.default.createElement("dd",null,t.formatDateTime(l.issued))),l.status&&u.default.createElement("dl",null,u.default.createElement("dt",null,"Status"),u.default.createElement("dd",null,t.capitalize(l.status)))),l.result&&u.default.createElement(Ke,{value:l.result}),o&&u.default.createElement("pre",null,o.trim()))}function Ke(e){var t;return u.default.createElement(a.Table,{withBorder:!0,withColumnBorders:!0},u.default.createElement("thead",null,u.default.createElement("tr",null,u.default.createElement("th",null,"Test"),u.default.createElement("th",null,"Value"),u.default.createElement("th",null,"Reference Range"),u.default.createElement("th",null,"Interpretation"))),u.default.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>u.default.createElement(Je,{key:"obs-"+t,value:e})))))}function Je(e){const t=G(e.value);if(!t)return null;let n;return function(e){var t,n,a,l;const r=null===(l=null===(a=null===(n=null===(t=e.interpretation)||void 0===t?void 0:t[0])||void 0===n?void 0:n.coding)||void 0===a?void 0:a[0])||void 0===l?void 0:l.code;return"AA"===r||"LL"===r||"HH"===r||"RR"===r}(t)&&(n="medplum-critical"),u.default.createElement("tr",{className:n},u.default.createElement("td",null,u.default.createElement(ce,{to:t},u.default.createElement(Z,{value:t.code}))),u.default.createElement("td",null,u.default.createElement(Ye,{value:t})),u.default.createElement("td",null,u.default.createElement(Xe,{value:t.referenceRange})),u.default.createElement("td",null,t.interpretation&&t.interpretation.length>0&&u.default.createElement(Z,{value:t.interpretation[0]})))}function Ye(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?u.default.createElement(le,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?u.default.createElement(u.default.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?u.default.createElement(u.default.Fragment,null,n.component.map(((e,t)=>u.default.createElement(Ye,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function Xe(e){const t=e.value&&e.value.length>0&&e.value[0];return t?t.text?u.default.createElement(u.default.Fragment,null,t.text):u.default.createElement(oe,{value:t}):null}function Ze(e){const a=h(),[l,r]=n.useState();if(n.useEffect((()=>{a.requestSchema(e.original.resourceType).then(r).catch(console.log)}),[a,e.original.resourceType]),!l)return null;const o=l.types[e.original.resourceType];return o?u.default.createElement("table",{className:"medplum-diff-table"},u.default.createElement("colgroup",null,u.default.createElement("col",{style:{width:"30%"}}),u.default.createElement("col",{style:{width:"35%"}}),u.default.createElement("col",{style:{width:"35%"}})),u.default.createElement("thead",null,u.default.createElement("tr",null,u.default.createElement("th",null,"Property"),u.default.createElement("th",null,"Before"),u.default.createElement("th",null,"After"))),u.default.createElement("tbody",null,Object.entries(o.properties).map((n=>{const a=n[0];if("id"===a||"meta"===a)return null;const l=n[1],[r,o]=fe(t.toTypedValue(e.original),a),[i,c]=fe(t.toTypedValue(e.revised),a);return et(r)&&et(i)||t.stringify(r)===t.stringify(i)?null:u.default.createElement("tr",{key:a},u.default.createElement("td",null,t.getPropertyDisplayName(a)),u.default.createElement("td",{className:"medplum-diff-removed"},u.default.createElement(me,{property:l,propertyType:o,value:r,ignoreMissingValues:!0})),u.default.createElement("td",{className:"medplum-diff-added"},u.default.createElement(me,{property:l,propertyType:c,value:i,ignoreMissingValues:!0})))})))):null}function et(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function tt(e){const t=h(),a=G(e.value),[l,r]=n.useState();return n.useEffect((()=>{a&&t.requestSchema(a.resourceType).then(r).catch(console.log)}),[t,a]),l&&a?u.default.createElement(Y,{value:{type:a.resourceType,value:a},ignoreMissingValues:e.ignoreMissingValues}):null}class nt extends u.default.Component{constructor(e){super(e),this.state={}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("Uncaught error:",e,t)}render(){return this.state.error?u.default.createElement("h1",null,"Something went wrong."):this.props.children}}function at(e){return u.default.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function lt(e){var n,r,o;const i=null!==(n=e.profile)&&void 0!==n?n:null===(r=e.resource.meta)||void 0===r?void 0:r.author;return u.default.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},u.default.createElement("div",{className:"medplum-timeline-item-header"},u.default.createElement("div",{className:"medplum-timeline-item-avatar"},u.default.createElement(Ae,{value:i,link:!0,size:"md"})),u.default.createElement("div",{className:"medplum-timeline-item-title"},u.default.createElement(We,{value:i,link:!0}),u.default.createElement("div",{className:"medplum-timeline-item-subtitle"},u.default.createElement(ce,{to:e.resource},t.formatDateTime(null===(o=e.resource.meta)||void 0===o?void 0:o.lastUpdated)),u.default.createElement("span",null,"·"),u.default.createElement(ce,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&u.default.createElement(a.Menu,{position:"bottom-end",shadow:"md",width:200},u.default.createElement(a.Menu.Target,null,u.default.createElement(a.ActionIcon,{radius:"xl","aria-label":`Actions for ${t.getReferenceString(e.resource)}`},u.default.createElement(l.IconDots,null))),e.popupMenuItems)),u.default.createElement(nt,null,e.padding&&u.default.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&u.default.createElement(u.default.Fragment,null,e.children)),e.socialEnabled&&u.default.createElement("div",{className:"medplum-timeline-item-footer"},u.default.createElement(a.Button,{variant:"subtle"},"Like"),u.default.createElement(a.Button,{variant:"subtle"},"Comment")))}function rt(e){e.sort(ot)}function ot(e,t){const n=ut(e),a=ut(t);return n>a?1:n<a?-1:it(e)-it(t)}function ut(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function it(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 ct(e){const t=r.useNavigate(),o=h(),i=o.getProfile(),c=n.useRef(null),d=G(e.value),[s,m]=n.useState(),[f,p]=n.useState([]),g=e.buildSearchRequests,v=n.useRef(f);v.current=f;const E=n.useCallback((()=>{if(!d)return p([]),void m({});o.executeBatch(g(d)).then(y).catch(console.log)}),[o,d,g]);function y(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&m(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}rt(t),t.reverse()}p(t)}function b(e){const t=[...v.current,...e];rt(t),t.reverse(),p(t)}function T(e,t){return o.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function S(e){T(e,"stat").then(E).catch(console.log)}function O(e){T(e,"routine").then(E).catch(console.log)}function k(e){t(`/${e.resourceType}/${e.id}`)}function I(e){t(`/${e.resourceType}/${e.id}/edit`)}function x(e){t(`/${e.resourceType}/${e.id}/delete`)}function w(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return n.useEffect((()=>{E()}),[E]),d&&s?u.default.createElement(at,null,e.createCommunication&&u.default.createElement("article",{className:"medplum-timeline-item"},u.default.createElement("div",{className:"medplum-timeline-item-header"},u.default.createElement(j,{testid:"timeline-form",onSubmit:t=>{var n;n=t.text,d&&e.createCommunication&&o.createResource(e.createCommunication(d,i,n)).then((e=>{b([e])})).catch(console.log);const a=c.current;a&&(a.value="",a.focus())}},u.default.createElement(a.Group,{spacing:"xs",noWrap:!0,style:{width:"100%"}},u.default.createElement(Ae,{value:i}),u.default.createElement(a.TextInput,{name:"text",ref:c,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),u.default.createElement(a.ActionIcon,{type:"submit",radius:"xl",color:"blue",variant:"filled"},u.default.createElement(l.IconMessage,{size:16})),u.default.createElement(C,{onUpload:function(t){d&&e.createMedia&&o.createResource(e.createMedia(d,i,t)).then((e=>{b([e])})).catch(console.log)}},(e=>u.default.createElement(a.ActionIcon,Object.assign({},e,{radius:"xl",color:"blue",variant:"filled"}),u.default.createElement(l.IconCloudUpload,{size:16})))))))),f.map((e=>{var t;if(e.resourceType===d.resourceType&&e.id===d.id)return u.default.createElement(st,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:s,resource:e,onDetails:w});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return u.default.createElement(pt,{key:n,resource:e,onDetails:k});case"Communication":return u.default.createElement(mt,{key:n,resource:e,onPin:"stat"!==e.priority?S:void 0,onUnpin:"stat"===e.priority?O:void 0,onDetails:k,onEdit:I,onDelete:x});case"DiagnosticReport":return u.default.createElement(gt,{key:n,resource:e,onDetails:k,onEdit:I,onDelete:x});case"Media":return u.default.createElement(ft,{key:n,resource:e,onDetails:k,onEdit:I,onDelete:x});default:return u.default.createElement(lt,{key:n,resource:e,padding:!0},u.default.createElement(tt,{value:e,ignoreMissingValues:!0}))}}))):u.default.createElement(a.Loader,null)}function dt(e){return u.default.createElement(a.Menu.Dropdown,null,u.default.createElement(a.Menu.Label,null,"Resource"),e.onPin&&u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconPin,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${t.getReferenceString(e.resource)}`},"Pin"),e.onUnpin&&u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconPinnedOff,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${t.getReferenceString(e.resource)}`},"Unpin"),e.onDetails&&u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconListDetails,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${t.getReferenceString(e.resource)}`},"Details"),e.onEdit&&u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconEdit,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${t.getReferenceString(e.resource)}`},"Edit"),e.onDelete&&u.default.createElement(u.default.Fragment,null,u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Label,null,"Danger zone"),u.default.createElement(a.Menu.Item,{color:"red",icon:u.default.createElement(l.IconTrash,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${t.getReferenceString(e.resource)}`},"Delete")))}function st(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?u.default.createElement(lt,{resource:e.resource,padding:!0,popupMenuItems:u.default.createElement(dt,Object.assign({},e))},u.default.createElement(Ze,{original:t,revised:e.resource})):u.default.createElement(lt,{resource:e.resource,padding:!0,popupMenuItems:u.default.createElement(dt,Object.assign({},e))},u.default.createElement("h3",null,"Created"),u.default.createElement(tt,{value:e.resource,ignoreMissingValues:!0}))}function mt(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return u.default.createElement(lt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:u.default.createElement(dt,Object.assign({},e))},u.default.createElement("p",null,null===(n=null===(t=e.resource.payload)||void 0===t?void 0:t[0])||void 0===n?void 0:n.contentString))}function ft(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 u.default.createElement(lt,{resource:e.resource,padding:!!a,popupMenuItems:u.default.createElement(dt,Object.assign({},e))},u.default.createElement(m,{value:e.resource.content}))}function pt(e){return u.default.createElement(lt,{resource:e.resource,padding:!0,popupMenuItems:u.default.createElement(dt,Object.assign({},e))},u.default.createElement(a.ScrollArea,null,u.default.createElement("pre",null,e.resource.outcomeDesc)))}function gt(e){return u.default.createElement(lt,{resource:e.resource,padding:!0,popupMenuItems:u.default.createElement(dt,Object.assign({},e))},u.default.createElement(He,{value:e.resource}))}function ht(e){let n;try{n=t.evalFhirPath(e.path,e.resource)}catch(e){return console.warn("FhirPathDisplay:",e),null}if(n.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${n.length} elements [${JSON.stringify(n,null,2)}]`);return u.default.createElement(me,{value:n[0]||"",propertyType:e.propertyType})}function vt(e,n){var a;if("_lastUpdated"===n)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===n)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const l=t.globalSchema.types[e],r=l.properties[n],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 t;if(l.searchParams){const a=`${e}.${n.replaceAll("[x]","")}`;t=Object.values(l.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(a)})),0===t.length&&(t=void 0)}return{name:n,elementDefinition:r,searchParams:t}}if(o){return{name:n,elementDefinition:t.getSearchParameterDetails(e,o).elementDefinition,searchParams:[o]}}return{name:n}}const Et={string:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],fulltext:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],token:[t.Operator.EQUALS,t.Operator.NOT],reference:[t.Operator.EQUALS,t.Operator.NOT],numeric:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],quantity:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],date:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY],datetime:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY]},yt={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 bt(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function Ct(e,t){return bt(e,(e.filters||[]).filter((e=>e.code!==t)))}function Tt(e,t,n,a,l){l&&(e=Ct(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),bt(e,r)}function St(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 Ot(e,t){return xt(e,t,-1)}function kt(e,t){return xt(e,t,0)}function It(e,t){return xt(e,t,1)}function xt(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),At(e,t,a,l)}function wt(e,t){return Rt(e,t,-1)}function jt(e,t){return Rt(e,t,0)}function Pt(e,t){return Rt(e,t,1)}function Rt(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),At(e,t,a,l)}function Dt(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return At(e,t,n,new Date)}function At(e,n,a,l){return e=Nt(e=Ct(e,n),n,t.Operator.GREATER_THAN_OR_EQUALS,a),e=Nt(e,n,t.Operator.LESS_THAN_OR_EQUALS,l)}function Nt(e,t,n,a){return Tt(e,t,n,a.toISOString())}function Vt(e,n,a=!0){return Tt(e,n,t.Operator.MISSING,a.toString())}function Mt(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Ft(e,n){var a;return Mt(e,(n-1)*(null!==(a=e.count)&&void 0!==a?a:t.DEFAULT_SEARCH_COUNT))}function Lt(e,t,n){return t===qt(e)&&void 0!==n&&n===Bt(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function qt(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Bt(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function _t(e){return Et[e.type]}function zt(e){var t;return null!==(t=yt[e])&&void 0!==t?t:""}function Ut(e){let n=e;return n.includes(".")&&(n=n.split(".").pop()),"id"===n?"ID":"versionId"===n?"Version ID":(n=n.replace("[x]",""),n=n.replace(/([A-Z])/g," $1"),n=n.replace(/[-_]/g," "),n=n.replace(/\s+/g," "),n=n.trim(),n.split(/\s/).map(t.capitalize).join(" "))}function Qt(e,n){var a,l;const r=n.name;return"id"===r?e.id:"meta.versionId"===r?null===(a=e.meta)||void 0===a?void 0:a.versionId:"_lastUpdated"===r?t.formatDateTime(null===(l=e.meta)||void 0===l?void 0:l.lastUpdated):n.elementDefinition&&`${e.resourceType}.${n.name}`===n.elementDefinition.path?function(e,t){var n,a,l;const 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]=fe({type:e.resourceType,value:e},r);if(!o)return null;return u.default.createElement(me,{property:t,propertyType:i,value:o,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,n.elementDefinition):n.searchParams&&1===n.searchParams.length&&n.name===n.searchParams[0].code?function(e,n,a){const l=t.evalFhirPathTyped(n.expression,[{type:e.resourceType,value:e}]);if(!l||0===l.length)return null;if(a)return u.default.createElement(me,{propertyType:l[0].type,value:l[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return u.default.createElement(u.default.Fragment,null,l.map(((e,t)=>u.default.createElement("span",{key:`${t}-${l.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,n.searchParams[0],n.elementDefinition):null}function $t(e){var l;const[r,o]=n.useState({search:JSON.parse(t.stringify(e.search))}),i=n.useRef(null),c=n.useRef(null);function d(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],a=null===(t=i.current)||void 0===t?void 0:t.value;if(a){const e=[...n,a];o({search:Object.assign(Object.assign({},r.search),{fields:e})})}}function s(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],a=null===(t=c.current)||void 0===t?void 0:t.value;if(a){const e=[...n];e.splice(e.indexOf(a),1),o({search:Object.assign(Object.assign({},r.search),{fields:e})})}}function m(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(n.useEffect((()=>{o({search:e.search})}),[e.search]),!e.visible)return null;const f=e.search.resourceType,p=t.globalSchema.types[f],g=null!==(l=r.search.fields)&&void 0!==l?l:[],h=function(e){const t=[],n=new Set,a=new Set;for(const l of Object.keys(e.properties))t.push(l),n.add(l.toLowerCase()),a.add(Ut(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=Ut(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(Ut(l)))}return t}(p).filter((e=>!(null==g?void 0:g.includes(e)))).sort();return u.default.createElement(a.Modal,{title:"Fields",closeButtonLabel:"Close",opened:e.visible,onClose:e.onCancel},u.default.createElement("div",null,u.default.createElement("table",{style:{margin:"auto"}},u.default.createElement("thead",null,u.default.createElement("tr",null,u.default.createElement("th",{colSpan:2,align:"center"},"Available"),u.default.createElement("th",{colSpan:2,align:"center"},"Selected"))),u.default.createElement("tbody",null,u.default.createElement("tr",null,u.default.createElement("td",{colSpan:2,align:"center"},u.default.createElement("select",{ref:i,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&d()}(e),onDoubleClick:()=>{d()},"data-testid":"available"},h.map((e=>u.default.createElement("option",{key:e,value:e},Ut(e)))))),u.default.createElement("td",{colSpan:2,align:"center"},u.default.createElement("select",{ref:c,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&s()}(e),onDoubleClick:()=>{s()},"data-testid":"selected"},g.map((e=>u.default.createElement("option",{key:e,value:e},Ut(e)))))))),u.default.createElement("tfoot",null,u.default.createElement("tr",null,u.default.createElement("td",{align:"center"},u.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:d},"Add")),u.default.createElement("td",{align:"center"},u.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:s},"Remove")),u.default.createElement("td",{align:"center"},u.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:function(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],a=null===(t=c.current)||void 0===t?void 0:t.value;if(a){const e=[...n],t=e.indexOf(a);m(e,t,t-1),o({search:Object.assign(Object.assign({},r.search),{fields:e})})}}},"Up")),u.default.createElement("td",{align:"center"},u.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:function(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],a=null===(t=c.current)||void 0===t?void 0:t.value;if(a){const e=[...n],t=e.indexOf(a);m(e,t,t+1),o({search:Object.assign(Object.assign({},r.search),{fields:e})})}}},"Down")))))),u.default.createElement(a.Button,{onClick:()=>e.onOk(r.search)},"OK"))}function Wt(e){var n,a;const{resourceType:l,filter:r}=e,o=null===(a=null===(n=t.globalSchema.types[l])||void 0===n?void 0:n.searchParams)||void 0===a?void 0:a[r.code];if(o){if("reference"===o.type)return u.default.createElement(We,{value:{reference:r.value}});const e=t.getSearchParameterDetails(l,o);if("_lastUpdated"===r.code||e.type===t.SearchParameterType.DATETIME)return u.default.createElement(u.default.Fragment,null,t.formatDateTime(r.value))}return u.default.createElement(u.default.Fragment,null,r.value)}function Gt(e){var n;const l="filter-value";switch(t.getSearchParameterDetails(e.resourceType,e.searchParam).type){case t.SearchParameterType.REFERENCE:return u.default.createElement(Me,{name:l,defaultValue:{reference:e.defaultValue},targetTypes:null===(n=e.searchParam)||void 0===n?void 0:n.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case t.SearchParameterType.BOOLEAN:return u.default.createElement(a.Checkbox,{name:l,"data-testid":l,defaultChecked:"true"===e.defaultValue,onChange:t=>e.onChange(t.currentTarget.checked.toString())});case t.SearchParameterType.DATE:return u.default.createElement(a.TextInput,{type:"date",name:l,"data-testid":l,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case t.SearchParameterType.DATETIME:return u.default.createElement(Te,{name:l,defaultValue:e.defaultValue,onChange:e.onChange});case t.SearchParameterType.NUMBER:return u.default.createElement(a.TextInput,{type:"number",name:l,"data-testid":l,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case t.SearchParameterType.QUANTITY:return u.default.createElement(je,{name:l,defaultValue:Ht(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return u.default.createElement(a.TextInput,{name:l,"data-testid":l,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:t=>e.onChange(t.currentTarget.value),placeholder:"Search value"})}}function Ht(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function Kt(e){const[l,r]=n.useState(JSON.parse(t.stringify(e.search))),[o,i]=n.useState(-1),c=n.useRef(l);if(c.current=l,n.useEffect((()=>{r(JSON.parse(t.stringify(e.search)))}),[e.search]),!e.visible)return null;const d=e.search.resourceType,s=t.globalSchema.types[d].searchParams,m=l.filters||[];return u.default.createElement(a.Modal,{title:"Filters",closeButtonLabel:"Close",size:900,opened:e.visible,onClose:e.onCancel},u.default.createElement("div",{className:"medplum-filter-editor"},u.default.createElement("table",{className:"medplum-filter-editor-table"},u.default.createElement("colgroup",null,u.default.createElement("col",{style:{width:200}}),u.default.createElement("col",{style:{width:200}}),u.default.createElement("col",{style:{width:380}}),u.default.createElement("col",{style:{width:120}})),u.default.createElement("thead",null,u.default.createElement("tr",null,u.default.createElement("th",null,"Field"),u.default.createElement("th",null,"Operation"),u.default.createElement("th",null,"Value"),u.default.createElement("th",null,"Actions"))),u.default.createElement("tbody",null,m.map(((e,t)=>t===o?u.default.createElement(Yt,{key:`filter-${t}-${m.length}-input`,resourceType:d,searchParams:s,defaultValue:e,okText:"Save",onOk:e=>{const n=[...m];n[t]=e,r(bt(c.current,n)),i(-1)},onCancel:()=>i(-1)}):u.default.createElement(Jt,{key:`filter-${t}-${m.length}-display`,resourceType:d,searchParams:s,filter:e,onEdit:()=>i(t),onDelete:()=>r(St(c.current,t))}))),u.default.createElement(Yt,{resourceType:d,searchParams:s,okText:"Add",onOk:function(e){r(Tt(c.current,e.code,e.operator,e.value))}})))),u.default.createElement(a.Group,{position:"right",mt:"xl"},u.default.createElement(a.Button,{onClick:()=>e.onOk(c.current)},"OK")))}function Jt(e){const{filter:t}=e;return u.default.createElement("tr",null,u.default.createElement("td",null,Ut(t.code)),u.default.createElement("td",null,zt(t.operator)),u.default.createElement("td",null,u.default.createElement(Wt,{resourceType:e.resourceType,filter:t})),u.default.createElement("td",null,u.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),u.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Yt(e){var t;const[l,r]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:{}),o=n.useRef(l);o.current=l;const i=e.searchParams[l.code],c=i&&_t(i);return u.default.createElement("tr",null,u.default.createElement("td",null,u.default.createElement(a.NativeSelect,{"data-testid":"filter-field",defaultValue:o.current.code,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},o.current),{code:t}));var t},data:Object.keys(e.searchParams).map((e=>({value:e,label:Ut(e)})))})),u.default.createElement("td",null,c&&u.default.createElement(a.NativeSelect,{"data-testid":"filter-operation",defaultValue:l.operator,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},o.current),{operator:t}));var t},data:["",...c.map((e=>({value:e,label:zt(e)})))]})),u.default.createElement("td",null,i&&l.operator&&u.default.createElement(Gt,{resourceType:e.resourceType,searchParam:i,defaultValue:l.value,onChange:function(e){r(Object.assign(Object.assign({},o.current),{value:e}))}})),u.default.createElement("td",null,l.code&&l.operator&&l.value&&u.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:()=>{e.onOk(o.current),r({})}},e.okText),e.onCancel&&u.default.createElement(a.Button,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}function Xt(e){var t;const[l,r]=n.useState(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function o(){e.onOk(Object.assign(Object.assign({},e.filter),{value:l}))}return u.default.createElement(a.Modal,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},u.default.createElement("div",{style:{width:500}},u.default.createElement(j,{onSubmit:o},u.default.createElement(Gt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:l,autoFocus:!0,onChange:r}))),u.default.createElement(a.Button,{onClick:o},"OK"))}function Zt(e){if(!e.searchParams)return null;function t(t){e.onChange(t)}return 1===e.searchParams.length?u.default.createElement(en,{search:e.search,searchParam:e.searchParams[0],onSort:function(n,a){t(Lt(e.search,n.code,a))},onPrompt:function(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})},onChange:t,onClear:function(n){t(Ct(e.search,n.code))}}):u.default.createElement(a.Menu.Dropdown,null,e.searchParams.map((e=>u.default.createElement(a.Menu.Item,{key:e.code},Ut(e.code)))))}function en(e){switch(e.searchParam.type){case"date":return u.default.createElement(tn,Object.assign({},e));case"number":case"quantity":return u.default.createElement(nn,Object.assign({},e));case"reference":return u.default.createElement(an,Object.assign({},e));case"string":case"token":case"uri":return u.default.createElement(ln,Object.assign({},e));default:return u.default.createElement(u.default.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function tn(e){const{searchParam:n}=e,r=n.code;return u.default.createElement(a.Menu.Dropdown,null,u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconSortAscending,{size:14}),onClick:()=>e.onSort(n,!1)},"Sort Oldest to Newest"),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconSortDescending,{size:14}),onClick:()=>e.onSort(n,!0)},"Sort Newest to Oldest"),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconEqual,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.NOT_EQUALS)},"Does not equal..."),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconMathLower,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.ENDS_BEFORE)},"Before..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconMathGreater,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.STARTS_AFTER)},"After..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconBracketsContain,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Between..."),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(It(e.search,r))},"Tomorrow"),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(kt(e.search,r))},"Today"),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(Ot(e.search,r))},"Yesterday"),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(Pt(e.search,r))},"Next Month"),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(jt(e.search,r))},"This Month"),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(wt(e.search,r))},"Last Month"),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconCalendar,{size:14}),onClick:()=>e.onChange(Dt(e.search,r))},"Year to date"),u.default.createElement(rn,Object.assign({},e)))}function nn(e){const{searchParam:n}=e;return u.default.createElement(a.Menu.Dropdown,null,u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconSortAscending,{size:14}),onClick:()=>e.onSort(n,!1)},"Sort Smallest to Largest"),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconSortDescending,{size:14}),onClick:()=>e.onSort(n,!0)},"Sort Largest to Smallest"),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconEqual,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.NOT_EQUALS)},"Does not equal..."),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconMathGreater,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.GREATER_THAN)},"Greater than..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconSettings,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconMathLower,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.LESS_THAN)},"Less than..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconSettings,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),u.default.createElement(rn,Object.assign({},e)))}function an(e){const{searchParam:n}=e;return u.default.createElement(a.Menu.Dropdown,null,u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconEqual,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.NOT)},"Does not equal..."),u.default.createElement(rn,Object.assign({},e)))}function ln(e){const{searchParam:n}=e;return u.default.createElement(a.Menu.Dropdown,null,u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconSortAscending,{size:14}),onClick:()=>e.onSort(n,!1)},"Sort A to Z"),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconSortDescending,{size:14}),onClick:()=>e.onSort(n,!0)},"Sort Z to A"),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconEqual,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Equals..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.NOT)},"Does not equal..."),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconBucket,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.CONTAINS)},"Contains..."),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconBucketOff,{size:14}),onClick:()=>e.onPrompt(n,t.Operator.EQUALS)},"Does not contain..."),u.default.createElement(rn,Object.assign({},e)))}function rn(e){const{searchParam:t}=e,n=t.code;return u.default.createElement(u.default.Fragment,null,u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconBleach,{size:14}),onClick:()=>e.onChange(Vt(e.search,n))},"Missing"),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconBleachOff,{size:14}),onClick:()=>e.onChange(Vt(e.search,n,!1))},"Not missing"),u.default.createElement(a.Menu.Divider,null),u.default.createElement(a.Menu.Item,{icon:u.default.createElement(l.IconX,{size:14}),onClick:()=>e.onClear(t)},"Clear filters"))}class on extends Event{constructor(e){super("change"),this.definition=e}}class un extends Event{constructor(e){super("load"),this.response=e}}class cn extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}const dn=a.createStyles((e=>({th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs}px ${e.spacing.md}px`,"&:hover":{backgroundColor:"dark"===e.colorScheme?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}})));function sn(e){var r,o;const{classes:i}=dn(),c=h(),[d,s]=n.useState(!1),[m,f]=n.useState(),{search:p,onLoad:g}=e,[v,b]=n.useState({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),C=n.useRef(v);function T(t){e.onChange&&e.onChange(new on(t))}function S(t,n){y(t.target)||2!==t.button&&(E(t),1!==t.button&&e.onClick&&e.onClick(new cn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new cn(n,t)))}C.current=v,n.useEffect((()=>{f(void 0),c.search(p.resourceType,t.formatSearchQuery(Object.assign(Object.assign({},p),{total:"accurate",fields:void 0}))).then((e=>{b(Object.assign(Object.assign({},C.current),{searchResponse:e})),g&&g(new un(e))})).catch((e=>{b(Object.assign(Object.assign({},C.current),{searchResponse:void 0})),f(e)}))}),[c,p,g]),n.useEffect((()=>{s(!1),c.requestSchema(e.search.resourceType).then((()=>s(!0))).catch(console.log)}),[c,e.search.resourceType]);if(!(d&&(null===(r=null===t.globalSchema||void 0===t.globalSchema?void 0:t.globalSchema.types)||void 0===r?void 0:r[e.search.resourceType])))return u.default.createElement(a.Loader,null);const O=e.checkboxesEnabled,k=function(e){const t=e.resourceType,n=[];for(const a of e.fields||["id","_lastUpdated"])n.push(vt(t,a));return n}(p),I=p.resourceType,x=v.searchResponse,w=null==x?void 0:x.entry,j=null==w?void 0:w.map((e=>e.resource)),P="subtle",R="gray",D=16,A=window.innerWidth<768;return u.default.createElement("div",{className:"medplum-search-control","data-testid":"search-control"},!e.hideToolbar&&u.default.createElement(a.Group,{position:"apart",mb:"xl"},u.default.createElement(a.Group,{spacing:2},u.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:u.default.createElement(l.IconFilter,{size:D}),onClick:()=>b(Object.assign(Object.assign({},C.current),{fieldEditorVisible:!0}))},"Fields"),u.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:u.default.createElement(l.IconColumns,{size:D}),onClick:()=>b(Object.assign(Object.assign({},C.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&u.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:u.default.createElement(l.IconFilePlus,{size:D}),onClick:e.onNew},"New..."),!A&&e.onExport&&u.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:u.default.createElement(l.IconTableExport,{size:D}),onClick:e.onExport},"Export..."),!A&&e.onDelete&&u.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:u.default.createElement(l.IconTrash,{size:D}),onClick:()=>e.onDelete(Object.keys(v.selected))},"Delete..."),!A&&e.onBulk&&u.default.createElement(a.Button,{compact:!0,variant:P,color:R,leftIcon:u.default.createElement(l.IconBoxMultiple,{size:D}),onClick:()=>e.onBulk(Object.keys(v.selected))},"Bulk...")),x&&u.default.createElement(a.Group,{spacing:2},u.default.createElement("span",{className:"medplum-search-summary"},function(e,t){var n;return Math.min(t,(null!==(n=e.offset)&&void 0!==n?n:0)+1)}(p,x.total),"-",function(e,n){var a,l;return Math.min(n,((null!==(a=e.offset)&&void 0!==a?a:0)+1)*(null!==(l=e.count)&&void 0!==l?l:t.DEFAULT_SEARCH_COUNT))}(p,x.total)," of"," ",null===(o=x.total)||void 0===o?void 0:o.toLocaleString()))),u.default.createElement(a.Table,null,u.default.createElement("thead",null,u.default.createElement("tr",null,O&&u.default.createElement("th",{className:"medplum-search-icon-cell"},u.default.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=C.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=C.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)})),b(Object.assign(Object.assign({},C.current),{selected:a}))}(e)})),k.map((t=>u.default.createElement("th",{key:t.name},u.default.createElement(a.Menu,{shadow:"md",width:240,position:"bottom-end"},u.default.createElement(a.Menu.Target,null,u.default.createElement(a.UnstyledButton,{className:i.control},u.default.createElement(a.Group,{position:"apart",noWrap:!0},u.default.createElement(a.Text,{weight:500,size:"sm"},Ut(t.name)),u.default.createElement(a.Center,{className:i.icon},u.default.createElement(l.IconAdjustmentsHorizontal,{size:14,stroke:1.5}))))),u.default.createElement(Zt,{search:e.search,searchParams:t.searchParams,onPrompt:(e,t)=>{b(Object.assign(Object.assign({},C.current),{filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{T(e)}})))))),!e.hideFilters&&u.default.createElement("tr",null,O&&u.default.createElement("th",{className:"filters medplum-search-icon-cell"}),k.map((t=>u.default.createElement("th",{key:t.name,className:"filters"},t.searchParams&&u.default.createElement(fn,{resourceType:I,searchParams:t.searchParams,filters:e.search.filters})))))),u.default.createElement("tbody",null,null==j?void 0:j.map((e=>e&&u.default.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>S(t,e),onAuxClick:t=>S(t,e)},O&&u.default.createElement("td",{className:"medplum-search-icon-cell"},u.default.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!v.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},C.current.selected);n?a[t]=!0:delete a[t],b(Object.assign(Object.assign({},C.current),{selected:a}))}(t,e.id)})),k.map((t=>u.default.createElement("td",{key:t.name},Qt(e,t))))))))),0===(null==j?void 0:j.length)&&u.default.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),void 0!==(null==x?void 0:x.total)&&x.total>0&&u.default.createElement(a.Center,{m:"md",p:"md"},u.default.createElement(a.Pagination,{page:pn(p),total:gn(p,x.total),onChange:e=>T(Ft(p,e)),getItemAriaLabel:e=>{switch(e){case"prev":return"Previous page";case"next":return"Next page";default:return}}})),m&&u.default.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},u.default.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(m,void 0,2))),u.default.createElement($t,{search:e.search,visible:C.current.fieldEditorVisible,onOk:e=>{T(e),b(Object.assign(Object.assign({},C.current),{fieldEditorVisible:!1}))},onCancel:()=>{b(Object.assign(Object.assign({},C.current),{fieldEditorVisible:!1}))}}),u.default.createElement(Kt,{search:e.search,visible:C.current.filterEditorVisible,onOk:e=>{T(e),b(Object.assign(Object.assign({},C.current),{filterEditorVisible:!1}))},onCancel:()=>{b(Object.assign(Object.assign({},C.current),{filterEditorVisible:!1}))}}),u.default.createElement(Xt,{visible:C.current.filterDialogVisible,title:"Input",resourceType:I,searchParam:v.filterDialogSearchParam,filter:v.filterDialogFilter,defaultValue:"",onOk:t=>{T(Tt(e.search,t.code,t.operator,t.value)),b(Object.assign(Object.assign({},C.current),{filterDialogVisible:!1}))},onCancel:()=>{b(Object.assign(Object.assign({},C.current),{filterDialogVisible:!1}))}}))}const mn=u.default.memo(sn);function fn(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?u.default.createElement("span",null,"no filters"):u.default.createElement(u.default.Fragment,null,n.map(((t,a)=>u.default.createElement("div",{key:`filter-${a}-${n.length}`},zt(t.operator)," ",u.default.createElement(Wt,{resourceType:e.resourceType,filter:t})))))}function pn(e){return Math.floor((e.offset||0)/(e.count||t.DEFAULT_SEARCH_COUNT))+1}function gn(e,n){const a=e.count||t.DEFAULT_SEARCH_COUNT;return Math.ceil(n/a)}function hn(e){var t,l,r,o,i;const c=h(),[d,s]=n.useState(),[m,f]=n.useState(),{query:p,fields:g}=e,[v,b]=n.useState(),[C,T]=n.useState({}),S=n.useRef();S.current=v;const O=n.useRef({});function k(t,n){y(t.target)||(E(t),1!==t.button&&e.onClick&&e.onClick(new cn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new cn(n,t)))}O.current=C,n.useEffect((()=>{f(void 0),c.graphql(p).then(b).catch(f)}),[c,p]),n.useEffect((()=>{c.requestSchema(e.resourceType).then((e=>{s(Object.assign({},e))})).catch(console.log)}),[c,e.resourceType]);if(!(null===(t=null==d?void 0:d.types)||void 0===t?void 0:t[e.resourceType]))return u.default.createElement(a.Loader,null);const I=e.checkboxesEnabled;return u.default.createElement("div",{className:"medplum-search-control",onContextMenu:e=>E(e),"data-testid":"search-control"},u.default.createElement(a.Table,null,u.default.createElement("thead",null,u.default.createElement("tr",null,I&&u.default.createElement("th",{className:"medplum-search-icon-cell"},u.default.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=S.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)&&!O.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=S.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)})),T(l)}(e)})),g.map((e=>u.default.createElement("th",{key:e.name},e.name))))),u.default.createElement("tbody",null,null===(r=null===(l=null==v?void 0:v.data)||void 0===l?void 0:l.ResourceList)||void 0===r?void 0:r.map((e=>e&&u.default.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>k(t,e),onAuxClick:t=>k(t,e)},I&&u.default.createElement("td",{className:"medplum-search-icon-cell"},u.default.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!C[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},O.current);n?a[t]=!0:delete a[t],T(a)}(t,e.id)})),g.map((t=>u.default.createElement("td",{key:t.name},u.default.createElement(ht,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(i=null===(o=null==v?void 0:v.data)||void 0===o?void 0:o.ResourceList)||void 0===i?void 0:i.length)&&u.default.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),m&&u.default.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},u.default.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(m,void 0,2))),e.onBulk&&u.default.createElement(a.Button,{onClick:()=>e.onBulk(Object.keys(O.current))},"Bulk..."))}const vn=u.default.memo(hn),En=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function yn(e){const t=n.useRef();function a(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,u.default.createElement("div",{className:"section"},e.actions.map((n=>u.default.createElement("div",{key:n.id},u.default.createElement(bn,{action:n,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:a,onRemove:()=>{return a=n,void e.onChange(t.current.filter((e=>e!==a)));var a}})))),u.default.createElement("div",{className:"bottom-actions"},u.default.createElement("a",{href:"#",onClick:n=>{var a;E(n),a={id:wn()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function bn(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 u.default.createElement("div",{"data-testid":t.id,className:r,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){E(t),e.setHoverKey(e.action.id)}},a?u.default.createElement(Sn,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):u.default.createElement(Tn,{action:t,actionType:n}),u.default.createElement("div",{className:"bottom-actions"},u.default.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const Cn={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Tn(e){const{action:t,actionType:n}=e,[a,l]=In(t);return u.default.createElement("div",null,u.default.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&u.default.createElement("div",null,u.default.createElement(de,{value:{reference:t.definitionCanonical}})),a&&u.default.createElement("div",null,u.default.createElement(me,{property:Cn,propertyType:l,value:a})))}function Sn(e){const{action:t}=e,[l,r]=n.useState(e.actionType);function o(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return u.default.createElement(u.default.Fragment,null,u.default.createElement(a.TextInput,{name:`actionTitle-${t.id}`,label:"Title",defaultValue:t.title,onChange:e=>o("title",e.currentTarget.value)}),u.default.createElement(a.TextInput,{name:`actionDescription-${t.id}`,label:"Description",defaultValue:t.description,onChange:e=>o("description",e.currentTarget.value)}),u.default.createElement(a.NativeSelect,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${t.id}`,defaultValue:l,onChange:e=>r(e.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),t.action&&t.action.length>0&&u.default.createElement(yn,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>o("action",e)}),(()=>{switch(l){case"appointment":return u.default.createElement(On,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return u.default.createElement(On,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return u.default.createElement(On,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return u.default.createElement(On,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),u.default.createElement("p",null,"Timing"),u.default.createElement("p",null,"When the action should take place."),u.default.createElement(kn,{name:"timing-"+t.id,action:t,onChange:e.onChange}))}function On(e){const{id:n,definitionCanonical:a}=e.action,l=(null==a?void 0:a.startsWith(e.resourceType+"/"))?{reference:a}:void 0;return u.default.createElement(Ne,{name:n,resourceType:e.resourceType,defaultValue:l,loadOnFocus:!0,onChange:n=>{n?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:t.getReferenceString(n)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}})}function kn(e){const t=e.action,n="timing",[a,l]=In(t);return u.default.createElement(_e,{property:Cn,name:"timing[x]",defaultValue:a,defaultPropertyType:l,onChange:(a,l)=>{e.onChange(H(t,n,null!=l?l:n,Cn,a))}})}function In(e){return fe({type:"PlanDefinitionAction",value:e},"timing")}let xn=1;function wn(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(xn=Math.max(xn,t+1))}return e}return"id-"+xn++}function jn(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:wn(e.id),action:jn(e.action)})))}var Pn;function Rn(e){return"choice"===e.type||"open-choice"===e.type}function Dn(e){const l=h(),r=l.getProfile(),[o,i]=n.useState(),c=G(e.questionnaire),[d,s]=n.useState(),[m,f]=n.useState({});return n.useEffect((()=>{l.requestSchema("Questionnaire").then((()=>l.requestSchema("QuestionnaireResponse"))).then(i).catch(console.log)}),[l]),n.useEffect((()=>{s(c?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:t.getReferenceString(e),item:Ln(e.item)}}(c):void 0)}),[c]),o&&c?u.default.createElement(j,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&d&&e.onSubmit(Object.assign(Object.assign({},d),{questionnaire:t.getReferenceString(c),subject:e.subject,source:t.createReference(r),authored:(new Date).toISOString()}))}},c.title&&u.default.createElement("h1",null,c.title),c.item&&u.default.createElement(An,{items:c.item,answers:m,onChange:function(e){const n={resourceType:"QuestionnaireResponse",item:e};s(n),f(t.getQuestionnaireAnswers(n))}}),u.default.createElement(a.Button,{type:"submit"},e.submitButtonText||"OK")):null}function An(t){const[l,r]=n.useState(Ln(t.items));function o(e,n){const a=l.slice();a[e]=n,r(a),t.onChange(a)}return u.default.createElement(u.default.Fragment,null,t.items.map(((n,l)=>{if(!_n(n,t.answers))return null;if(n.type===e.QuestionnaireItemType.display)return u.default.createElement("p",{key:n.linkId},n.text);if(n.type===e.QuestionnaireItemType.group)return u.default.createElement(Nn,{key:n.linkId,item:n,answers:t.answers,onChange:e=>o(l,e)});if(n.type===e.QuestionnaireItemType.boolean){const e=n.initial&&n.initial.length>0?n.initial[0]:void 0;return u.default.createElement(U,{key:n.linkId,title:n.text,htmlFor:n.linkId},u.default.createElement(a.Checkbox,{id:n.linkId,name:n.linkId,defaultChecked:null==e?void 0:e.valueBoolean,onChange:e=>o(l,{linkId:n.linkId,text:n.text,answer:[{valueBoolean:e.currentTarget.checked}]})}))}return u.default.createElement($,{key:n.linkId,htmlFor:n.linkId,title:n.text||""},u.default.createElement(Nn,{item:n,answers:t.answers,onChange:e=>o(l,e)}))})))}function Nn(t){const n=t.item,l=n.type;if(!l)return null;const r=n.linkId;if(!r)return null;const o=n.initial&&n.initial.length>0?n.initial[0]:void 0;function i(e){t.onChange({linkId:n.linkId,text:n.text,answer:[e]})}switch(l){case e.QuestionnaireItemType.group:return u.default.createElement("div",null,u.default.createElement("h3",null,n.text),n.item&&u.default.createElement(An,{items:n.item,answers:t.answers,onChange:function(e){t.onChange({linkId:n.linkId,text:n.text,item:e})}}));case e.QuestionnaireItemType.boolean:return u.default.createElement(a.Checkbox,{id:r,name:r,defaultChecked:null==o?void 0:o.valueBoolean,onChange:e=>i({valueBoolean:e.currentTarget.checked})});case e.QuestionnaireItemType.decimal:return u.default.createElement(a.TextInput,{type:"number",step:"any",id:r,name:r,defaultValue:null==o?void 0:o.valueDecimal,onChange:e=>i({valueDecimal:e.currentTarget.valueAsNumber})});case e.QuestionnaireItemType.integer:return u.default.createElement(a.TextInput,{type:"number",step:1,id:r,name:r,defaultValue:null==o?void 0:o.valueInteger,onChange:e=>i({valueInteger:e.currentTarget.valueAsNumber})});case e.QuestionnaireItemType.date:return u.default.createElement(a.TextInput,{type:"date",id:r,name:r,defaultValue:null==o?void 0:o.valueDate,onChange:e=>i({valueDate:e.currentTarget.value})});case e.QuestionnaireItemType.dateTime:return u.default.createElement(Te,{name:r,defaultValue:null==o?void 0:o.valueDateTime,onChange:e=>i({valueDateTime:e})});case e.QuestionnaireItemType.time:return u.default.createElement(a.TextInput,{type:"time",id:r,name:r,defaultValue:null==o?void 0:o.valueTime,onChange:e=>i({valueTime:e.currentTarget.value})});case e.QuestionnaireItemType.string:case e.QuestionnaireItemType.url:return u.default.createElement(a.TextInput,{id:r,name:r,defaultValue:null==o?void 0:o.valueString,onChange:e=>i({valueString:e.currentTarget.value})});case e.QuestionnaireItemType.text:return u.default.createElement(a.Textarea,{id:r,name:r,defaultValue:null==o?void 0:o.valueString,onChange:e=>i({valueString:e.currentTarget.value})});case e.QuestionnaireItemType.attachment:return u.default.createElement(S,{name:r,defaultValue:null==o?void 0:o.valueAttachment,onChange:e=>i({valueAttachment:e})});case e.QuestionnaireItemType.reference:return u.default.createElement(Me,{name:r,defaultValue:null==o?void 0:o.valueReference,onChange:e=>i({valueReference:e})});case e.QuestionnaireItemType.quantity:return u.default.createElement(je,{name:r,defaultValue:null==o?void 0:o.valueQuantity,onChange:e=>i({valueQuantity:e})});case e.QuestionnaireItemType.choice:case e.QuestionnaireItemType.openChoice:return function(e){var t;return!!(null===(t=e.extension)||void 0===t?void 0:t.some((e=>{var t,n,a;return"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"===e.url&&"drop-down"===(null===(a=null===(n=null===(t=e.valueCodeableConcept)||void 0===t?void 0:t.coding)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code)})))}(n)?u.default.createElement(Vn,{name:r,item:n,initial:o,onChangeAnswer:i}):u.default.createElement(Fn,{name:r,item:n,initial:o,onChangeAnswer:i})}return null}function Vn(e){const{name:n,item:l,initial:r}=e,o=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:r},"value"),i=[""];if(l.answerOption)for(const e of l.answerOption){const n=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:e},"value");i.push(Mn(n))}return u.default.createElement(a.NativeSelect,{id:n,name:n,className:"medplum-select",onChange:n=>{const a=n.currentTarget.selectedIndex;if(0===a)return void e.onChangeAnswer({});const r=l.answerOption[a-1],o=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:r},"value"),u="value"+t.capitalize(o.type);e.onChangeAnswer({[u]:o.value})},defaultValue:Mn(o),data:i})}function Mn(e){if(e)return"CodeableConcept"===e.type?e.value.coding[0].display:"Coding"===e.type?e.value.display:e.value.toString()}function Fn(e){const{name:n,item:a,initial:l,onChangeAnswer:r}=e,o=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],i=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:l},"value");return u.default.createElement(u.default.Fragment,null,a.answerOption&&a.answerOption.map(((e,a)=>{const l=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:e},"value"),c="value"+t.capitalize(l.type),d=`${n}-option-${a}`;return u.default.createElement("div",{key:d,className:"medplum-questionnaire-option-row"},u.default.createElement("div",{className:"medplum-questionnaire-option-checkbox"},u.default.createElement("input",{type:"radio",id:d,name:n,value:l.value,defaultChecked:i&&t.stringify(l)===t.stringify(i),onChange:()=>r({[c]:l.value})})),u.default.createElement("div",null,u.default.createElement("label",{htmlFor:d},u.default.createElement(me,{property:o,propertyType:l.type,value:l.value}))))})))}function Ln(e){var t;return null!==(t=null==e?void 0:e.map(qn))&&void 0!==t?t:[]}function qn(e){var t,n;return{linkId:e.linkId,text:e.text,item:Ln(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Bn))&&void 0!==n?n:[]}}function Bn(e){return Object.assign({},e)}function _n(e,n){if(!e.enableWhen)return!0;const a=e.enableBehavior||"any";for(const l of e.enableWhen){const e=t.getTypedPropertyValue({type:"QuestionnaireItemEnableWhen",value:l},"answer[x]"),r=t.getTypedPropertyValue({type:"QuestionnaireResponseItemAnswer",value:n[l.question]},"value[x]"),o=t.deepEquals(e,r);if("any"===a&&o)return!0;if("all"===a&&!o)return!1}return"any"!==a}function zn(t){var l;const r=t.item,o=t.item,i="resourceType"in t.item,c=i||o.type===e.QuestionnaireItemType.group,d=null!==(l=o.linkId)&&void 0!==l?l:"[untitled]",s=t.selectedKey===t.item.id,m=t.hoverKey===t.item.id,f=n.useRef();function p(e){var n;const a=f.current;t.onChange(Object.assign(Object.assign({},a),{item:null===(n=a.item)||void 0===n?void 0:n.map((t=>t.id===e.id?e:t))}))}function g(e){var n,a;t.onChange(Object.assign(Object.assign({},t.item),{item:[...null!==(a=null===(n=t.item)||void 0===n?void 0:n.item)&&void 0!==a?a:[],e]}))}function h(e,n){t.onChange(Object.assign(Object.assign({},f.current),{[e]:n}))}f.current=t.item;const v=s?"section editing":m?"section hovering":"section";return u.default.createElement("div",{"data-testid":o.linkId,className:v,onClick:function(e){E(e),t.setSelectedKey(t.item.id)},onMouseOver:function(e){E(e),t.setHoverKey(t.item.id)}},s?u.default.createElement(u.default.Fragment,null,i&&u.default.createElement("div",null,u.default.createElement(a.TextInput,{defaultValue:r.title,onChange:e=>h("title",e.currentTarget.value)})),!c&&u.default.createElement("div",null,u.default.createElement(a.NativeSelect,{defaultValue:o.type,onChange:e=>h("type",e.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})),!i&&u.default.createElement(a.Textarea,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:o.text,onChange:e=>h("text",e.currentTarget.value)}),Rn(o)&&u.default.createElement(Un,{options:o.answerOption,onChange:e=>h("answerOption",e)})):u.default.createElement(u.default.Fragment,null,r.title&&u.default.createElement("h1",null,r.title),o.text&&u.default.createElement("p",null,o.text),!c&&u.default.createElement(Nn,{item:o,answers:{},onChange:()=>{}})),o.item&&o.item.map((e=>u.default.createElement("div",{key:e.id},u.default.createElement(zn,{item:e,selectedKey:t.selectedKey,setSelectedKey:t.setSelectedKey,hoverKey:t.hoverKey,setHoverKey:t.setHoverKey,onChange:p,onRemove:()=>function(e){var n,a;t.onChange(Object.assign(Object.assign({},t.item),{item:null===(a=null===(n=t.item)||void 0===n?void 0:n.item)||void 0===a?void 0:a.filter((t=>t!==e))}))}(e)})))),!c&&u.default.createElement("div",{className:"top-actions"},s?u.default.createElement(a.TextInput,{defaultValue:o.linkId,onChange:e=>h("linkId",e.currentTarget.value)}):u.default.createElement("div",null,d)),u.default.createElement("div",{className:"bottom-actions"},c&&u.default.createElement(u.default.Fragment,null,u.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),g({id:Gn(),linkId:Wn("q"),type:"string",text:"Question"})}},"Add item"),u.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),g({id:Gn(),linkId:Wn("g"),type:"group",text:"Group"})}},"Add group")),!i&&u.default.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),t.onRemove&&t.onRemove()}},"Remove")))}function Un(e){var n;const a=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],l=null!==(n=e.options)&&void 0!==n?n:[];return u.default.createElement("div",null,l.map((t=>{const[n,r]=fe({type:"QuestionnaireItemAnswerOption",value:t},"value");return u.default.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},u.default.createElement("div",null,u.default.createElement(_e,{key:t.id,name:"value[x]",property:a,defaultPropertyType:r,defaultValue:n,onChange:(n,a)=>{const r=[...l],o=r.findIndex((e=>e.id===t.id));r[o]={id:t.id,[a]:n},e.onChange(r)}})),u.default.createElement("div",null,u.default.createElement("a",{href:"#",onClick:n=>{E(n),e.onChange(l.filter((e=>e.id!==t.id)))}},"Remove")))})),u.default.createElement("a",{href:"#",onClick:t=>{E(t),e.onChange([...l,{id:Gn()}])}},"Add choice"))}e.QuestionnaireItemType=void 0,(Pn=e.QuestionnaireItemType||(e.QuestionnaireItemType={})).group="group",Pn.display="display",Pn.question="question",Pn.boolean="boolean",Pn.decimal="decimal",Pn.integer="integer",Pn.date="date",Pn.dateTime="dateTime",Pn.time="time",Pn.string="string",Pn.text="text",Pn.url="url",Pn.choice="choice",Pn.openChoice="open-choice",Pn.attachment="attachment",Pn.reference="reference",Pn.quantity="quantity";let Qn=1,$n=1;function Wn(e){return e+Qn++}function Gn(){return"id-"+$n++}function Hn(e){if(e)return e.forEach((e=>{var t,n;(null===(t=e.id)||void 0===t?void 0:t.match(/^id-\d+$/))&&($n=Math.max($n,parseInt(e.id.substring(3))+1)),(null===(n=e.linkId)||void 0===n?void 0:n.match(/^q\d+$/))&&(Qn=Math.max(Qn,parseInt(e.linkId.substring(1))+1))})),e.map((e=>Object.assign(Object.assign({},e),{id:e.id||Gn(),item:Hn(e.item),answerOption:Kn(e.answerOption)})))}function Kn(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||Gn()})))}const Jn={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Yn(e){return u.default.createElement(a.Badge,{color:Jn[e.status]},e.status)}function Xn(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,u=l.j,i={position:o,lines:t.slice(o,e)},c={position:u,lines:n.slice(u,r)};let d;d=0===i.lines.length&&c.lines.length>0?"insert":i.lines.length>0&&0===c.lines.length?"delete":"change",a.push({original:i,revised:c,type:d}),l.snake&&(l=l.prev)}return a}(function(e,t){const n=e.length,a=t.length,l=n+a+1,r=1+2*l,o=r/2|0,u=new Array(r);u[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 i=o+l,c=i-1,d=u[i+1],s=u[c];let m,f=0;l===-r||l!==r&&s.i<d.i?(f=d.i,m=d):(f=s.i+1,m=s),u[c]=void 0;let p=f-l,g={i:f,j:p,prev:Zn(m),snake:!1};for(;f<n&&p<a&&e[f]===t[p];)f++,p++;if(f>g.i&&(g={i:f,j:p,prev:g,snake:!0}),u[i]=g,f>=n&&p>=a)return u[i]}u[o+r-1]=void 0}return}(e,t),e,t)}function Zn(e){return e&&!e.snake&&e.prev?e.prev:e}function ea(e){const n=e.entry.filter((e=>!!e.resource)).map((e=>{var n;return{meta:null===(n=e.resource)||void 0===n?void 0:n.meta,lines:t.stringify(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),a=n[0].lines.map((e=>({id:n[0].meta.versionId,meta:n[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const a=Xn(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})}}}(a,n),function(e){let t=0;for(;t<e.length;){let n=t;for(;n<e.length&&e[n].id===e[t].id;)e[n].span=-1,n++;e[t].span=n-t,t=n}}(a),a}function ta(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function na(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return aa(n,"year");const a=Math.floor(t/2592e3);if(a>0)return aa(a,"month");const l=Math.floor(t/86400);if(l>0)return aa(l,"day");const r=Math.floor(t/3600);if(r>0)return aa(r,"hour");const o=Math.floor(t/60);return o>0?aa(o,"minute"):aa(t,"second")}function aa(e,t){return`${e} ${1===e?t:t+"s"} ago`}function la(e){return u.default.createElement(u.default.Fragment,null,"...",u.default.createElement("br",null),e.delta.original.lines.length>0&&u.default.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&u.default.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",u.default.createElement("br",null))}function ra(e){var n,a,l;const{response:r,resource:o}=e.entry;return o?u.default.createElement("tr",null,u.default.createElement("td",null,u.default.createElement(Ge,{value:null===(n=o.meta)||void 0===n?void 0:n.author,link:!0})),u.default.createElement("td",null,t.formatDateTime(null===(a=o.meta)||void 0===a?void 0:a.lastUpdated)),u.default.createElement("td",null,u.default.createElement(ce,{to:oa(o)},null===(l=o.meta)||void 0===l?void 0:l.versionId))):u.default.createElement("tr",null,u.default.createElement("td",{colSpan:3},t.normalizeErrorString(null==r?void 0:r.outcome)))}function oa(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function ua(e){const{onChangeMonth:t,onClick:l}=e,[r,o]=n.useState(ia);function i(e){o((n=>{const a=new Date(n.getTime());return a.setMonth(n.getMonth()+e),t(a),a}))}const c=n.useMemo((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),a=[];let l=[];for(let e=0;e<n.getDay();e++)l.push(void 0);for(;n.getMonth()===e.getMonth();)l.push({date:new Date(n.getTime()),available:ca(n,t)}),6===n.getDay()&&(a.push(l),l=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)l.push(void 0);a.push(l)}return a}(r,e.slots)),[r,e.slots]);return u.default.createElement("div",null,u.default.createElement(a.Group,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},u.default.createElement("p",{style:{flex:1}},(d=r).toLocaleString("default",{month:"long"})+" "+d.getFullYear()),u.default.createElement(a.Group,{position:"right",spacing:"xs"},u.default.createElement(a.Button,{variant:"outline","aria-label":"Previous month",onClick:()=>i(-1)},"<"),u.default.createElement(a.Button,{variant:"outline","aria-label":"Next month",onClick:()=>i(1)},">"))),u.default.createElement("table",{className:"medplum-calendar-table"},u.default.createElement("thead",null,u.default.createElement("tr",null,u.default.createElement("th",null,"SUN"),u.default.createElement("th",null,"MON"),u.default.createElement("th",null,"TUE"),u.default.createElement("th",null,"WED"),u.default.createElement("th",null,"THU"),u.default.createElement("th",null,"FRI"),u.default.createElement("th",null,"SAT"))),u.default.createElement("tbody",null,c.map(((e,t)=>u.default.createElement("tr",{key:"week-"+t},e.map(((e,t)=>u.default.createElement("td",{key:"day-"+t},e&&u.default.createElement(a.Button,{disabled:!e.available,onClick:()=>l(e.date)},e.date.getDate()))))))))));var d}function ia(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function ca(e,t){for(const n of t){const t=new Date(n.start);if(t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate())return!0}return!1}function da(e){return ma(e.getTime())}function sa(e){return ma(e.getTime()+26784e5)}function ma(e){return new Date(Math.max(Date.now(),e)).toISOString()}function fa(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}e.AddressDisplay=i,e.AddressInput=s,e.AttachmentArrayDisplay=f,e.AttachmentArrayInput=T,e.AttachmentButton=C,e.AttachmentInput=S,e.BackboneElementInput=$e,e.CheckboxFormSection=U,e.CodeInput=Ee,e.CodeableConceptDisplay=Z,e.CodeableConceptInput=ve,e.ContactDetailDisplay=te,e.ContactDetailInput=Ce,e.ContactPointDisplay=ee,e.ContactPointInput=be,e.DateTimeInput=Te,e.DefaultResourceTimeline=function(e){return u.default.createElement(ct,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]})})},e.DescriptionList=K,e.DescriptionListEntry=J,e.DiagnosticReportDisplay=He,e.Document=O,e.ElementDefinitionInputSelector=ze,e.ElementDefinitionTypeInput=Ue,e.EncounterTimeline=function(e){return u.default.createElement(ct,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${t.getReferenceString(e)}`}},{request:{method:"GET",url:`Media?encounter=${t.getReferenceString(e)}`}}]}),createCommunication:(e,n,a)=>({resourceType:"Communication",status:"completed",encounter:t.createReference(e),subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",status:"completed",encounter:t.createReference(e),subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.ErrorBoundary=nt,e.FhirPathTable=hn,e.Form=j,e.FormSection=$,e.HumanNameDisplay=ne,e.HumanNameInput=Ie,e.IdentifierInput=xe,e.Logo=P,e.MedplumLink=ce,e.MedplumProvider=function(e){const t=e.medplum,[a,l]=n.useState({profile:t.getProfile(),loading:!1});n.useEffect((()=>{function e(){l(Object.assign(Object.assign({},a),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,a]);const r=Object.assign(Object.assign({},a),{medplum:t});return u.default.createElement(p.Provider,{value:r},e.children)},e.MemoizedFhirPathTable=vn,e.MemoizedSearchControl=mn,e.ObservationTable=Ke,e.PatientTimeline=function(e){return u.default.createElement(ct,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:En.map((n=>({request:{method:"GET",url:n.replaceAll("$",t.getReferenceString(e))}})))}),createCommunication:(e,n,a)=>({resourceType:"Communication",status:"completed",subject:t.createReference(e),sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",status:"completed",subject:t.createReference(e),operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.PlanDefinitionBuilder=function(e){const t=h(),l=G(e.value),[r,o]=n.useState(void 0),[i,c]=n.useState(),[d,s]=n.useState(),[m,f]=n.useState();function p(){s(void 0)}function g(){c(void 0)}const v=n.useRef();if(v.current=m,n.useEffect((()=>{t.requestSchema("PlanDefinition").then(o).catch(console.log)}),[t]),n.useEffect((()=>{var e;return f((e=null!=l?l:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:jn(e.action)}))),document.addEventListener("mouseover",p),document.addEventListener("click",g),()=>{document.removeEventListener("mouseover",p),document.removeEventListener("click",g)}}),[l]),!r||!m)return null;function E(e,t){f(Object.assign(Object.assign({},v.current),{[e]:t}))}return u.default.createElement("div",{className:"medplum-questionnaire-builder"},u.default.createElement(j,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(m)},u.default.createElement(a.TextInput,{label:"Plan Title",defaultValue:m.title,onChange:e=>E("title",e.currentTarget.value)}),u.default.createElement(yn,{actions:m.action||[],selectedKey:i,setSelectedKey:c,hoverKey:d,setHoverKey:s,onChange:e=>E("action",e)}),u.default.createElement(a.Button,{type:"submit"},"Save")))},e.QuestionnaireBuilder=function(e){const t=h(),l=G(e.questionnaire),[r,o]=n.useState(),[i,c]=n.useState(),[d,s]=n.useState(),[m,f]=n.useState();function p(){f(void 0)}function g(){s(void 0)}return n.useEffect((()=>{t.requestSchema("Questionnaire").then(o).catch(console.log)}),[t]),n.useEffect((()=>{var e;return c((e=null!=l?l:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||Gn(),item:Hn(e.item)}))),document.addEventListener("mouseover",p),document.addEventListener("click",g),()=>{document.removeEventListener("mouseover",p),document.removeEventListener("click",g)}}),[l]),r&&i?u.default.createElement("div",{className:"medplum-questionnaire-builder"},u.default.createElement(j,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},u.default.createElement(zn,{item:i,selectedKey:d,setSelectedKey:s,hoverKey:m,setHoverKey:f,onChange:c}),u.default.createElement(a.Button,{type:"submit"},"Save"))):null},e.QuestionnaireForm=Dn,e.QuestionnaireFormItem=Nn,e.RangeDisplay=oe,e.RangeInput=Re,e.ReferenceInput=Me,e.RegisterForm=function(e){const{type:t,projectId:a,googleClientId:l,recaptchaSiteKey:r,onSuccess:o}=e,i=h(),[c,d]=n.useState(void 0),[s,m]=n.useState();function f(e){e.code?i.processCode(e.code).then((()=>o())).catch(console.log):e.login&&d(e.login)}return n.useEffect((()=>{"patient"===t&&c&&i.startNewPatient({login:c,projectId:a}).then((e=>i.processCode(e.code))).then((()=>o())).catch((e=>m(e)))}),[i,t,a,c,o]),u.default.createElement(O,{width:450},s&&u.default.createElement("pre",null,JSON.stringify(s,null,2)),!c&&u.default.createElement(B,{projectId:a,googleClientId:l,recaptchaSiteKey:r,handleAuthResponse:f},e.children),c&&"project"===t&&u.default.createElement(N,{login:c,handleAuthResponse:f}))},e.RequestGroupDisplay=function(e){var l;const r=h(),o=G(e.value),[i,c]=n.useState(!1),[d,s]=n.useState();return n.useEffect((()=>{o&&!i&&(r.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}}(o)).then(s).catch(console.log),c(!0))}),[r,o,i]),o&&d?u.default.createElement("div",{className:"medplum-request-group"},null===(l=o.action)||void 0===l?void 0:l.map(((n,l)=>{var r,o,i,c,s,m;const f=n.resource&&function(e){for(const n of null==d?void 0:d.entry)if(n.resource&&e.reference===t.getReferenceString(n.resource))return n.resource;return}(n.resource),p=null===(o=null===(r=null==f?void 0:f.input)||void 0===r?void 0:r[0])||void 0===o?void 0:o.valueReference,g=null===(c=null===(i=null==f?void 0:f.output)||void 0===i?void 0:i[0])||void 0===c?void 0:c.valueReference;return u.default.createElement("div",{className:"medplum-request-group-task",key:`action-${l}`},u.default.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==f?void 0:f.status)?"🗹":"☐"),u.default.createElement("div",{className:"medplum-request-group-task-details"},u.default.createElement("div",{className:"medplum-request-group-task-title"},n.title),n.description&&u.default.createElement("div",null,n.description),u.default.createElement("div",null,"Last edited by ",u.default.createElement(We,{value:null===(s=null==f?void 0:f.meta)||void 0===s?void 0:s.author})," on ",t.formatDateTime(null===(m=null==f?void 0:f.meta)||void 0===m?void 0:m.lastUpdated)),u.default.createElement("div",null,"Status: ",u.default.createElement(Yn,{status:(null==f?void 0:f.status)||"unknown"}))),u.default.createElement("div",{className:"medplum-request-group-task-actions"},p&&!g&&u.default.createElement(a.Button,{onClick:()=>e.onStart(f,p)},"Start"),p&&g&&u.default.createElement(a.Button,{onClick:()=>e.onEdit(f,p,g)},"Edit")))}))):null},e.ResourceArrayDisplay=se,e.ResourceArrayInput=Fe,e.ResourceAvatar=Ae,e.ResourceBadge=Ge,e.ResourceBlame=function(e){var t,l;const r=h(),[o,i]=n.useState(e.history);if(n.useEffect((()=>{!e.history&&e.resourceType&&e.id&&r.readHistory(e.resourceType,e.id).then(i).catch(console.log)}),[r,e.history,e.resourceType,e.id]),!o)return u.default.createElement("div",null,"Loading...");const c=null===(l=null===(t=o.entry)||void 0===t?void 0:t[0])||void 0===l?void 0:l.resource,d=ea(o);return u.default.createElement("div",{className:"medplum-blame-container"},u.default.createElement("table",{className:"medplum-blame"},u.default.createElement("tbody",null,d.map(((e,t)=>u.default.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&u.default.createElement("td",{className:"details",rowSpan:e.span},u.default.createElement(a.Group,{spacing:"xs",grow:!0,noWrap:!0},u.default.createElement(Ge,{value:e.meta.author,link:!0}),u.default.createElement(ce,{to:ta(c,e.meta.versionId)},na(e.meta.lastUpdated)))),u.default.createElement("td",{className:"line-number"},t+1),u.default.createElement("td",{className:"line"},u.default.createElement("pre",{className:"line-pre"},e.value))))))))},e.ResourceDiff=function(e){let n=e.original,a=e.revised;e.ignoreMeta&&(n=Object.assign(Object.assign({},n),{meta:void 0}),a=Object.assign(Object.assign({},a),{meta:void 0}));const l=Xn(t.stringify(n,!0).match(/[^\r\n]+/g),t.stringify(a,!0).match(/[^\r\n]+/g));return u.default.createElement("pre",{style:{color:"gray"}},l.map(((e,t)=>u.default.createElement(la,{key:"delta"+t,delta:e}))))},e.ResourceForm=function(e){const t=h(),l=G(e.defaultValue),[r,o]=n.useState(),[i,c]=n.useState();return n.useEffect((()=>{l&&(c(JSON.parse(JSON.stringify(l))),t.requestSchema(l.resourceType).then(o).catch(console.log))}),[t,l]),r&&i?u.default.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(i)}},u.default.createElement($,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},u.default.createElement(a.TextInput,{name:"resourceType",defaultValue:i.resourceType,disabled:!0})),u.default.createElement($,{title:"ID",htmlFor:"id",outcome:e.outcome},u.default.createElement(a.TextInput,{name:"id",defaultValue:i.id,disabled:!0})),u.default.createElement($e,{typeName:i.resourceType,defaultValue:i,outcome:e.outcome,onChange:c}),u.default.createElement(a.Group,null,u.default.createElement(a.Button,{type:"submit"},"OK"),e.onDelete&&u.default.createElement(a.Button,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(i)}},"Delete"))):u.default.createElement("div",null,"Loading...")},e.ResourceHistoryTable=function(e){var t;const l=h(),[r,o]=n.useState(e.history);return n.useEffect((()=>{!e.history&&e.resourceType&&e.id&&l.readHistory(e.resourceType,e.id).then(o).catch(console.log)}),[l,e.history,e.resourceType,e.id]),r?u.default.createElement(a.Table,{withBorder:!0,withColumnBorders:!0},u.default.createElement("thead",null,u.default.createElement("tr",null,u.default.createElement("th",null,"Author"),u.default.createElement("th",null,"Date"),u.default.createElement("th",null,"Version"))),u.default.createElement("tbody",null,null===(t=r.entry)||void 0===t?void 0:t.map(((e,t)=>u.default.createElement(ra,{key:"entry-"+t,entry:e}))))):u.default.createElement("div",null,"Loading...")},e.ResourceInput=Ne,e.ResourceName=We,e.ResourcePropertyDisplay=me,e.ResourcePropertyInput=_e,e.ResourceTable=tt,e.ResourceTimeline=ct,e.Scheduler=function(e){var l;const r=h(),o=G(e.schedule),i=G(e.questionnaire),[c,d]=n.useState();n.useRef().current=c;const[s,m]=n.useState(ia()),[f,p]=n.useState(),[g,v]=n.useState(),[E,y]=n.useState();if(n.useEffect((()=>{o?(d([]),r.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",t.getReferenceString(o)],["start","gt"+da(s)],["start","lt"+sa(s)]])).then(d).catch(console.log)):d(void 0)}),[r,o,s]),!o||!c||!i)return null;const b=null===(l=o.actor)||void 0===l?void 0:l[0];return u.default.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},u.default.createElement("div",{className:"medplum-calendar-info-pane"},b&&u.default.createElement(Ae,{value:b,size:"xl"}),b&&u.default.createElement(a.Text,{size:"xl",weight:500},u.default.createElement(We,{value:b})),u.default.createElement("p",null,"1 hour"),f&&u.default.createElement("p",null,f.toLocaleDateString()),g&&u.default.createElement("p",null,fa(new Date(g.start)))),u.default.createElement("div",{className:"medplum-calendar-selection-pane"},!f&&u.default.createElement("div",null,u.default.createElement("h3",null,"Select date"),u.default.createElement(ua,{slots:c,onChangeMonth:m,onClick:p})),f&&!g&&u.default.createElement("div",null,u.default.createElement("h3",null,"Select time"),u.default.createElement(a.Stack,null,c.map((e=>{const t=new Date(e.start);return t.getTime()>f.getTime()&&t.getTime()<f.getTime()+864e5&&u.default.createElement("div",{key:e.id},u.default.createElement(a.Button,{variant:"outline",style:{width:150},onClick:()=>v(e)},fa(t)))})))),f&&g&&!E&&u.default.createElement(Dn,{questionnaire:i,submitButtonText:"Next",onSubmit:y}),f&&g&&E&&u.default.createElement("div",null,u.default.createElement("h3",null,"You're all set!"),u.default.createElement("p",null,"Check your email for a calendar invite."))))},e.SearchChangeEvent=on,e.SearchClickEvent=cn,e.SearchControl=sn,e.SearchFieldEditor=$t,e.SearchFilterEditor=Kt,e.SearchLoadEvent=un,e.ServiceRequestTimeline=function(e){return u.default.createElement(ct,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,n,a)=>({resourceType:"Communication",status:"completed",basedOn:[t.createReference(e)],subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:a}]}),createMedia:(e,n,a)=>({resourceType:"Media",status:"completed",basedOn:[t.createReference(e)],subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:a})})},e.SignInForm=function(e){const t=h(),[a,l]=n.useState(void 0),[r,o]=n.useState(void 0);function i(n){n.login&&l(n.login),n.memberships&&o(n.memberships),n.code&&(e.onCode?e.onCode(n.code):t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log))}return u.default.createElement(O,{width:450},a?r?u.default.createElement(z,{login:a,memberships:r,handleAuthResponse:i}):"new"===e.projectId?u.default.createElement(N,{login:a,handleAuthResponse:i}):u.default.createElement("div",null,"Success"):u.default.createElement(_,{projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,generatePkce:!e.onCode,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:i},e.children))},e.StatusBadge=Yn,e.Timeline=at,e.TimelineItem=lt,e.addDateEqualsFilter=function(e,t,n){return At(e,t,n,n)},e.addDateFilter=function(e,t,n,a){return Nt(e=Ct(e,t),t,n,a)},e.addDateFilterBetween=At,e.addField=function(e,t){if(e.fields&&e.fields.includes(t))return e;const n=[];return e.fields&&n.push(...e.fields),n.push(t),Object.assign(Object.assign({},e),{fields:n,name:void 0})},e.addFilter=Tt,e.addLastMonthFilter=wt,e.addMissingFilter=Vt,e.addNextMonthFilter=Pt,e.addThisMonthFilter=jt,e.addTodayFilter=kt,e.addTomorrowFilter=It,e.addYearToDateFilter=Dt,e.addYesterdayFilter=Ot,e.buildFieldNameString=Ut,e.clearFilters=function(e){return bt(e,[])},e.clearFiltersOnField=Ct,e.convertIsoToLocal=Se,e.convertLocalToIso=Oe,e.createScriptTag=V,e.deleteFilter=St,e.formatRangeString=ue,e.getErrorsForInput=R,e.getIssuesForExpression=D,e.getOpString=zt,e.getRecaptcha=q,e.getSearchOperators=_t,e.getSortField=qt,e.getTimeString=na,e.getValueAndType=fe,e.hasFilterOnField=function(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))},e.initRecaptcha=L,e.isChoiceQuestion=Rn,e.isQuestionEnabled=_n,e.isSortDescending=Bt,e.parseForm=I,e.renderValue=Qt,e.setFilters=bt,e.setOffset=Mt,e.setPage=Ft,e.setPropertyValue=H,e.setSort=Lt,e.sortByDateAndPriority=rt,e.toggleSort=function(e,t){let n=!1;return qt(e)===t&&(n=!Bt(e)),Lt(e,t,n)},e.useMedplum=h,e.useMedplumContext=g,e.useMedplumProfile=v,e.useResource=G,Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=index.min.js.map