@medplum/react 2.0.30 → 2.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{formatAddress as vs}from"@medplum/core";import qa from"react";function Ua(e){let o=e.value;return o?qa.createElement(qa.Fragment,null,vs(o)):null}import{Group as Ss,NativeSelect as Ga,TextInput as Ho}from"@mantine/core";import Ve,{useRef as Ps,useState as bs}from"react";function za(e,o){return e.line&&e.line.length>o?e.line[o]:""}function Wa(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Xa(e){let[o,t]=bs(e.defaultValue||{}),r=Ps();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a(Wa(r.current||{},0,c))}function s(c){a(Wa(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function m(c){a({...r.current,postalCode:c})}return Ve.createElement(Ss,{spacing:"xs",grow:!0,noWrap:!0},Ve.createElement(Ga,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ve.createElement(Ga,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ve.createElement(Ho,{placeholder:"Line 1",defaultValue:za(o,0),onChange:c=>l(c.currentTarget.value)}),Ve.createElement(Ho,{placeholder:"Line 2",defaultValue:za(o,1),onChange:c=>s(c.currentTarget.value)}),Ve.createElement(Ho,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ve.createElement(Ho,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ve.createElement(Ho,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>m(c.currentTarget.value)}))}import{TextInput as ws}from"@mantine/core";import{createReference as Os}from"@medplum/core";import Es,{useRef as Ls,useState as Rs}from"react";import{showNotification as Ds}from"@mantine/notifications";import Ts,{createContext as ks,useContext as Bs,useEffect as Qa,useMemo as As,useState as Ms}from"react";var Ja=ks(void 0);function _g(e){let o=e.medplum,t=e.navigate??Fs,[r,a]=Ms({profile:o.getProfile(),loading:!1});Qa(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),Qa(()=>{function f(){Ds({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=As(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ts.createElement(Ja.Provider,{value:n},e.children)}function Vo(){return Bs(Ja)}function v(){return Vo().medplum}function qe(){return Vo().navigate}function dt(){return Vo().profile}function Fs(e){window.location.assign(e)}function $a(e){let o=dt(),[t,r]=Rs(e.defaultValue||{}),a=Ls();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Os(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Es.createElement(ws,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as mu,useMantineTheme as pu}from"@mantine/core";import eo,{Suspense as xu,useState as Iu}from"react";import{Alert as zs}from"@mantine/core";import{normalizeErrorString as Ws}from"@medplum/core";import{forwardRef as Ns,createElement as ja}from"react";import Ze from"prop-types";var Ka={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Hs=Object.defineProperty,Vs=Object.defineProperties,qs=Object.getOwnPropertyDescriptors,ct=Object.getOwnPropertySymbols,Ya=Object.prototype.hasOwnProperty,en=Object.prototype.propertyIsEnumerable,_a=(e,o,t)=>o in e?Hs(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,Za=(e,o)=>{for(var t in o||(o={}))Ya.call(o,t)&&_a(e,t,o[t]);if(ct)for(var t of ct(o))en.call(o,t)&&_a(e,t,o[t]);return e},Us=(e,o)=>Vs(e,qs(o)),Gs=(e,o)=>{var t={};for(var r in e)Ya.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&ct)for(var r of ct(e))o.indexOf(r)<0&&en.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=Ns((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,m=Gs(f,["color","size","stroke","children"]);return ja("svg",Za(Us(Za({ref:n},Ka),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),m),[...t.map(([c,h])=>ja(c,h)),...u||[]])});return r.propTypes={color:Ze.string,size:Ze.oneOfType([Ze.string,Ze.number]),stroke:Ze.oneOfType([Ze.string,Ze.number])},r.displayName=`${o}`,r};var dr=x("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var Ye=x("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var cr=x("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var mr=x("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var pr=x("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var xr=x("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var Ir=x("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var gr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Ee=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var qo=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var hr=x("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var Cr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ue=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var io=x("circle-plus","IconCirclePlus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}],["path",{d:"M12 9l0 6",key:"svg-2"}]]);var Uo=x("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var yr=x("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var vr=x("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Sr=x("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Pr=x("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var br=x("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var uo=x("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var co=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Dr=x("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Tr=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var kr=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Br=x("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Ar=x("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var mt=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var pt=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Mr=x("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Fr=x("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var wr=x("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Or=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Er=x("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Lr=x("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var mo=x("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Go=x("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var zo=x("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Rr=x("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Nr=x("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Hr=x("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Wo=x("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var Vr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import qr from"react";var po=class extends qr.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?qr.createElement(zs,{icon:qr.createElement(Ye,{size:16}),title:"Something went wrong",color:"red"},Ws(this.state.error)):this.props.children}};import{Center as Xs,Loader as Qs}from"@mantine/core";import on from"react";function Ur(){return on.createElement(Xs,{style:{width:"100%",height:"100vh"}},on.createElement(Qs,null))}import{Avatar as Ai,createStyles as Mi,Group as gt,Header as Fi,Menu as Le,Stack as wi,Text as Xo,UnstyledButton as In}from"@mantine/core";import{formatHumanName as Oi,getReferenceString as gn}from"@medplum/core";import U,{useState as Ei}from"react";import{formatHumanName as Js}from"@medplum/core";import tn from"react";function xt(e){let o=e.value;return o?tn.createElement(tn.Fragment,null,Js(o,e.options)):null}import{Avatar as ln}from"@mantine/core";import{getDisplayString as li,getImageSrc as si}from"@medplum/core";import Gr from"react";import{Anchor as $s}from"@mantine/core";import{isReference as Ks,isResource as js}from"@medplum/core";import _s from"react";function V(e){e.preventDefault(),e.stopPropagation()}function It(e){if(rn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&rn(o[0]))return!0}return!1}function rn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function ne(e){let o=qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=Zs(t);return r&&(s+="/"+r),_s.createElement($s,{href:s,"aria-label":a,onClick:i=>{V(i),n?n(i):t&&o(s)},...l},f)}function Zs(e){if(e){if(typeof e=="string")return Ys(e);if(js(e))return ei(e);if(Ks(e))return oi(e)}return"#"}function Ys(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ei(e){return`/${e.resourceType}/${e.id}`}function oi(e){return`/${e.reference}`}import{deepEquals as ti,isReference as fn,isResource as ri,normalizeOperationOutcome as ai}from"@medplum/core";import{useCallback as ni,useEffect as an,useState as fi}from"react";function X(e,o){let t=v(),[r,a]=fi(nn(t,e)),n=ni(f=>{ti(f,r)||a(f)},[r,a]);return an(()=>{n(nn(t,e))},[t,e,n]),an(()=>{let f=!0;return fn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(ai(l)))}),()=>f=!1},[t,r,e,n,o]),r}function nn(e,o){if(o){if(ri(o))return o;if(fn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?li(o):e.alt??"",r=(o&&si(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Gr.createElement(ne,{to:o},Gr.createElement(ln,{src:r,alt:t,radius:a,...n})):Gr.createElement(ln,{src:r,alt:t,radius:a,...n})}import{createStyles as xi,Group as Ii,Text as un}from"@mantine/core";import{formatHumanName as gi,getDisplayString as pn,getReferenceString as hi,isUUID as Ci}from"@medplum/core";import Ge,{forwardRef as yi,useCallback as dn}from"react";import{Loader as ii,MultiSelect as ui}from"@mantine/core";import sn,{useCallback as xo,useEffect as di,useRef as Io,useState as go}from"react";import{showNotification as ci}from"@mantine/notifications";import{normalizeErrorString as mi}from"@medplum/core";function ho(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=pi(o),u=Io(null),[m,c]=go(void 0),[h,D]=go(),[k,C]=go(),[T,d]=go(),[M,y]=go(i.map(r)),[F,Ie]=go([]),ge=Io();ge.current=m;let ue=Io();ue.current=h;let Y=Io();Y.current=k;let Lo=Io();Lo.current=T;let g=Io();g.current=F;let R=xo(()=>{D(void 0);let _=u.current?.value.trim()||"";if(_===ge.current)return;c(_);let ae=new AbortController;C(ae),a(_,ae.signal).then(de=>{ae.signal.aborted||(Ie(de.map(r)),C(void 0),Lo.current&&(de.length>0&&n(de.slice(0,1)),d(!1)))}).catch(de=>{ae.signal.aborted||de.message.includes("aborted")||ci({color:"red",message:mi(de)})})},[a,n,r]),Te=xo(()=>{Y.current&&(Y.current.abort(),C(void 0)),ue.current!==void 0&&window.clearTimeout(ue.current);let _=window.setTimeout(()=>R(),100);D(_)},[R]),he=xo(_=>{let ae=[],de=[];for(let Ro of _){let ut=g.current?.find(ys=>ys.value===Ro),No=ut?.resource;!No&&l!==!1&&f&&(No=f(Ro),ut=r(No)),No&&ae.push(No),ut&&de.push(ut)}n(ae),y(de)},[l,n,f,r]),_e=xo(_=>{_.key==="Enter"&&(!ue.current&&!Y.current?(V(_),g.current&&g.current.length>0&&(Ie(g.current.slice(0,1)),he([g.current[0].value]))):d(!0))},[he]),P=xo(_=>{let ae=r(f(_));return Ie([...g.current,ae]),ae},[f,Ie,r]),W=xo((_,ae)=>!ae,[]);return di(()=>()=>{Y.current&&Y.current.abort()},[]),sn.createElement(ui,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:_e,onSearchChange:Te,data:[...M,...F],onFocus:R,onChange:he,onCreate:P,rightSectionWidth:40,rightSection:k?sn.createElement(ii,{size:16}):null,filter:W,creatable:!0})}function pi(e){return e?Array.isArray(e)?e:[e]:[]}var vi=xi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Si(e){return e.id}function Pi(e){return{value:e.id,label:pn(e),resource:e}}function xn(e){let{classes:o}=vi(),t=qe(),r=v(),a=dn(async(f,l)=>{let s=Di(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Ti(u,f)},[r]),n=dn(f=>{f.length>0&&t(`/${hi(f[0])}`)},[t]);return Ge.createElement(ho,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ge.createElement(Lr,{size:16}),placeholder:"Search",itemComponent:bi,toKey:Si,toOption:Pi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var bi=yi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Ge.createElement("div",{ref:t,...o},Ge.createElement(Ii,{noWrap:!0},Ge.createElement(Ce,{value:e}),Ge.createElement("div",null,Ge.createElement(un,null,pn(e)),Ge.createElement(un,{size:"xs",color:"dimmed"},r))))});function Di(e){let o=JSON.stringify(e);return Ci(e)?`{
1
+ import{formatAddress as Ts}from"@medplum/core";import Wa from"react";function Qa(e){let o=e.value;return o?Wa.createElement(Wa.Fragment,null,Ts(o)):null}import{Group as ks,NativeSelect as Xa,TextInput as Go}from"@mantine/core";import qe,{useRef as Bs,useState as As}from"react";function Ja(e,o){return e.line&&e.line.length>o?e.line[o]:""}function $a(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Ka(e){let[o,t]=As(e.defaultValue||{}),r=Bs();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a($a(r.current||{},0,c))}function s(c){a($a(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return qe.createElement(ks,{spacing:"xs",grow:!0,noWrap:!0},qe.createElement(Xa,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),qe.createElement(Xa,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),qe.createElement(Go,{placeholder:"Line 1",defaultValue:Ja(o,0),onChange:c=>l(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"Line 2",defaultValue:Ja(o,1),onChange:c=>s(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Ns}from"@mantine/core";import{createReference as Hs}from"@medplum/core";import Vs,{useRef as qs,useState as Gs}from"react";import{showNotification as Fs}from"@mantine/notifications";import Ms,{createContext as ws,useContext as Os,useEffect as ja,useMemo as Es,useState as Ls}from"react";var _a=ws(void 0);function mh(e){let o=e.medplum,t=e.navigate??Rs,[r,a]=Ls({profile:o.getProfile(),loading:!1});ja(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ja(()=>{function f(){Fs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Es(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ms.createElement(_a.Provider,{value:n},e.children)}function Uo(){return Os(_a)}function S(){return Uo().medplum}function Ge(){return Uo().navigate}function mt(){return Uo().profile}function Rs(e){window.location.assign(e)}function Za(e){let o=mt(),[t,r]=Gs(e.defaultValue||{}),a=qs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Hs(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Vs.createElement(Ns,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as hu,useMantineTheme as Cu}from"@mantine/core";import to,{Suspense as yu,useState as vu}from"react";import{Alert as $s}from"@mantine/core";import{normalizeErrorString as Ks}from"@medplum/core";import{forwardRef as Us,createElement as en}from"react";import eo from"prop-types";var Ya={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var zs=Object.defineProperty,Ws=Object.defineProperties,Qs=Object.getOwnPropertyDescriptors,pt=Object.getOwnPropertySymbols,rn=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,on=(e,o,t)=>o in e?zs(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,tn=(e,o)=>{for(var t in o||(o={}))rn.call(o,t)&&on(e,t,o[t]);if(pt)for(var t of pt(o))an.call(o,t)&&on(e,t,o[t]);return e},Xs=(e,o)=>Ws(e,Qs(o)),Js=(e,o)=>{var t={};for(var r in e)rn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&pt)for(var r of pt(e))o.indexOf(r)<0&&an.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=Us((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,d=Js(f,["color","size","stroke","children"]);return en("svg",tn(Xs(tn({ref:n},Ya),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,y])=>en(c,y)),...u||[]])});return r.propTypes={color:eo.string,size:eo.oneOfType([eo.string,eo.number]),stroke:eo.oneOfType([eo.string,eo.number])},r.displayName=`${o}`,r};var dr=x("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var oo=x("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var cr=x("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var mr=x("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var pr=x("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var xr=x("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var Ir=x("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var gr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Ee=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var zo=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var hr=x("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var Cr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ue=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var mo=x("circle-plus","IconCirclePlus",[["path",{d:"M20.987 12.497a9 9 0 1 0 -8.467 8.489",key:"svg-0"}],["path",{d:"M16 19h6",key:"svg-1"}],["path",{d:"M19 16v6",key:"svg-2"}]]);var Wo=x("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var yr=x("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var vr=x("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Sr=x("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Pr=x("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var br=x("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var po=x("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var xo=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Dr=x("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Tr=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var kr=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Br=x("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Ar=x("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var xt=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var It=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Fr=x("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Mr=x("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var wr=x("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Or=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Er=x("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Lr=x("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var Io=x("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Qo=x("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Xo=x("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Rr=x("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Nr=x("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Hr=x("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Jo=x("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var Vr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import qr from"react";var go=class extends qr.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?qr.createElement($s,{icon:qr.createElement(oo,{size:16}),title:"Something went wrong",color:"red"},Ks(this.state.error)):this.props.children}};import{Center as js,Loader as _s}from"@mantine/core";import nn from"react";function Gr(){return nn.createElement(js,{style:{width:"100%",height:"100vh"}},nn.createElement(_s,null))}import{Avatar as Ei,createStyles as Li,Group as Ct,Header as Ri,Menu as Le,Stack as Ni,Text as $o,UnstyledButton as yn}from"@mantine/core";import{formatHumanName as Hi,getReferenceString as vn}from"@medplum/core";import U,{useState as Vi}from"react";import{formatHumanName as Zs}from"@medplum/core";import fn from"react";function gt(e){let o=e.value;return o?fn.createElement(fn.Fragment,null,Zs(o,e.options)):null}import{Avatar as cn}from"@mantine/core";import{getDisplayString as ci,getImageSrc as mi}from"@medplum/core";import Ur from"react";import{Anchor as Ys}from"@mantine/core";import{isReference as ei,isResource as oi}from"@medplum/core";import ti from"react";function H(e){e.preventDefault(),e.stopPropagation()}function ht(e){if(ln(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&ln(o[0]))return!0}return!1}function ln(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function ne(e){let o=Ge(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=ri(t);return r&&(s+="/"+r),ti.createElement(Ys,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function ri(e){if(e){if(typeof e=="string")return ai(e);if(oi(e))return ni(e);if(ei(e))return fi(e)}return"#"}function ai(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ni(e){return`/${e.resourceType}/${e.id}`}function fi(e){return`/${e.reference}`}import{deepEquals as li,isReference as dn,isResource as si,normalizeOperationOutcome as ii}from"@medplum/core";import{useCallback as ui,useEffect as sn,useState as di}from"react";function Q(e,o){let t=S(),[r,a]=di(un(t,e)),n=ui(f=>{li(f,r)||a(f)},[r,a]);return sn(()=>{n(un(t,e))},[t,e,n]),sn(()=>{let f=!0;return dn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(ii(l)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(si(o))return o;if(dn(o))return e.getCachedReference(o)}}function Ce(e){let o=Q(e.value),t=o?ci(o):e.alt??"",r=(o&&mi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Ur.createElement(ne,{to:o},Ur.createElement(cn,{src:r,alt:t,radius:a,...n})):Ur.createElement(cn,{src:r,alt:t,radius:a,...n})}import{createStyles as yi,Group as vi,Text as pn}from"@mantine/core";import{formatHumanName as Si,getDisplayString as hn,getReferenceString as Pi,isUUID as bi}from"@medplum/core";import ze,{forwardRef as Di,useCallback as xn}from"react";import{Loader as pi,MultiSelect as xi}from"@mantine/core";import mn,{useCallback as ho,useEffect as Ii,useRef as Co,useState as yo}from"react";import{showNotification as gi}from"@mantine/notifications";import{normalizeErrorString as hi}from"@medplum/core";function vo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=Ci(o),u=Co(null),[d,c]=yo(void 0),[y,b]=yo(),[A,I]=yo(),[D,p]=yo(),[g,C]=yo(i.map(r)),[O,Ie]=yo([]),ge=Co();ge.current=d;let ue=Co();ue.current=y;let Y=Co();Y.current=A;let Ho=Co();Ho.current=D;let v=Co();v.current=O;let N=ho(()=>{b(void 0);let _=u.current?.value.trim()||"";if(_===ge.current)return;c(_);let ae=new AbortController;I(ae),a(_,ae.signal).then(de=>{ae.signal.aborted||(Ie(de.map(r)),I(void 0),Ho.current&&(de.length>0&&n(de.slice(0,1)),p(!1)))}).catch(de=>{ae.signal.aborted||de.message.includes("aborted")||gi({color:"red",message:hi(de)})})},[a,n,r]),Te=ho(()=>{Y.current&&(Y.current.abort(),I(void 0)),ue.current!==void 0&&window.clearTimeout(ue.current);let _=window.setTimeout(()=>N(),100);b(_)},[N]),he=ho(_=>{let ae=[],de=[];for(let Vo of _){let ct=v.current?.find(Ds=>Ds.value===Vo),qo=ct?.resource;!qo&&l!==!1&&f&&(qo=f(Vo),ct=r(qo)),qo&&ae.push(qo),ct&&de.push(ct)}n(ae),C(de)},[l,n,f,r]),Ye=ho(_=>{_.key==="Enter"&&(!ue.current&&!Y.current?(H(_),v.current&&v.current.length>0&&(Ie(v.current.slice(0,1)),he([v.current[0].value]))):p(!0))},[he]),T=ho(_=>{let ae=r(f(_));return Ie([...v.current,ae]),ae},[f,Ie,r]),W=ho((_,ae)=>!ae,[]);return Ii(()=>()=>{Y.current&&Y.current.abort()},[]),mn.createElement(xi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:Ye,onSearchChange:Te,data:[...g,...O],onFocus:N,onChange:he,onCreate:T,rightSectionWidth:40,rightSection:A?mn.createElement(pi,{size:16}):null,filter:W,creatable:!0})}function Ci(e){return e?Array.isArray(e)?e:[e]:[]}var Ti=yi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function ki(e){return e.id}function Bi(e){return{value:e.id,label:hn(e),resource:e}}function Cn(e){let{classes:o}=Ti(),t=Ge(),r=S(),a=xn(async(f,l)=>{let s=Fi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Mi(u,f)},[r]),n=xn(f=>{f.length>0&&t(`/${Pi(f[0])}`)},[t]);return ze.createElement(vo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:ze.createElement(Lr,{size:16}),placeholder:"Search",itemComponent:Ai,toKey:ki,toOption:Bi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Ai=Di(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),ze.createElement("div",{ref:t,...o},ze.createElement(vi,{noWrap:!0},ze.createElement(Ce,{value:e}),ze.createElement("div",null,ze.createElement(pn,null,hn(e)),ze.createElement(pn,{size:"xs",color:"dimmed"},r))))});function Fi(e){let o=JSON.stringify(e);return bi(e)?`{
2
2
  Patients1: PatientList(_id: ${o}, _count: 1) {
3
3
  resourceType
4
4
  id
@@ -61,8 +61,8 @@ import{formatAddress as vs}from"@medplum/core";import qa from"react";function Ua
61
61
  display
62
62
  }
63
63
  }
64
- }`.replace(/\s+/g," ")}function Ti(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),Bi(ki(t),o).slice(0,5)}function ki(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function Bi(e,o){return e.sort((t,r)=>cn(r,o)-cn(t,o))}function cn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,mn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,mn(gi(r),o));return t}function mn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Li=Mi(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function hn(e){let o=Vo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Li(),[s,i]=Ei(!1);return U.createElement(Fi,{height:60,p:8,style:{zIndex:101}},U.createElement(gt,{position:"apart"},U.createElement(gt,{spacing:"xs"},U.createElement(In,{className:f.logoButton,onClick:e.navbarToggle},e.logo),U.createElement(xn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(Le,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},U.createElement(Le.Target,null,U.createElement(In,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},U.createElement(gt,{spacing:7},U.createElement(Ce,{value:r,radius:"xl",size:24}),U.createElement(Xo,{size:"sm",className:f.userName},Oi(r?.name?.[0])),U.createElement(Cr,{size:12,stroke:1.5})))),U.createElement(Le.Dropdown,null,U.createElement(wi,{align:"center",p:"xl"},U.createElement(Ce,{size:"xl",radius:100,value:o.profile}),U.createElement(xt,{value:o.profile?.name?.[0]}),U.createElement(Xo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(Le.Divider,null),n.map(u=>u.profile.reference!==gn(o.profile)&&U.createElement(Le.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(gt,null,U.createElement(Ai,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement(Xo,{size:"sm",weight:500},u.profile.display),U.createElement(Xo,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(Le.Divider,null),U.createElement(Le.Item,{icon:U.createElement(Nr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(Le.Item,{icon:U.createElement(mo,{size:14,stroke:1.5}),onClick:()=>a(`/${gn(r)}`)},"Account settings"),U.createElement(Le.Item,{icon:U.createElement(Ar,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement(Xo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as ru,createStyles as au,Navbar as Wr,ScrollArea as nu,Space as fu,Text as lu}from"@mantine/core";import re,{useState as su}from"react";import{Button as Vi,Group as qi,Modal as Ui,NativeSelect as Gi,Stack as zi,TextInput as Wi}from"@mantine/core";import{showNotification as yn}from"@mantine/notifications";import{deepClone as Xi,normalizeErrorString as Qi}from"@medplum/core";import ze from"react";import Hi from"react";function Cn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Ri(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Ni(o,t);return o}function Ri(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Ni(e,o){e[o.name]=o.value}function J(e){return Hi.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Cn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function vn(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=Xi(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),yn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{yn({color:"red",message:Qi(u)})})}return ze.createElement(Ui,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},ze.createElement(J,{onSubmit:r},ze.createElement(zi,null,ze.createElement(Ji,{config:t}),ze.createElement(Wi,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),ze.createElement(qi,{position:"right"},ze.createElement(Vi,{mt:"sm",type:"submit"},"OK")))))}function Ji(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return ze.createElement(Gi,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Yi,{useState as eu}from"react";import $i,{useCallback as Ki}from"react";function zr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function ji(e){return typeof e.display=="string"?e.display:zr(e)}function _i(e){return{value:zr(e),label:ji(e),resource:e}}function Zi(e){return{code:e,display:e}}function Co(e){let o=v(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=Ki(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,m=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let h of m)h.code&&!c.some(D=>D.code===h.code)&&c.push(h);return c},[o,t]);return $i.createElement(ho,{...n,creatable:r??!0,clearable:a??!0,toKey:zr,toOption:_i,loadOptions:f,onCreate:Zi,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function ht(e){let[o,t]=eu(e.defaultValue);function r(a){let n=a[0],f=tu(n);t(f),e.onChange&&e.onChange(f)}return Yi.createElement(Co,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:ou(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function ou(e){return e?{code:e}:void 0}function tu(e){return e?.code}var Sn=au(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function Pn(e){let{classes:o}=Sn(),t=qe(),r=du(e.pathname,e.searchParams,e.menus),[a,n]=su(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return re.createElement(re.Fragment,null,re.createElement(Wr,{width:{sm:250},p:"xs"},re.createElement(nu,null,re.createElement(Wr.Section,{mb:"sm"},re.createElement(ht,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"http://hl7.org/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(Wr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(lu,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(iu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(uu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(ru,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Or,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(vn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function iu(e){let{classes:o,cx:t}=Sn();return re.createElement(ne,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function uu(e){return e.icon?e.icon:re.createElement(fu,{w:30})}function du(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=cu(e,o,f.href);l>a&&(a=l,r=f)}return r}function cu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function vS(e){let o=pu(),[t,r]=Iu(localStorage.navbarOpen==="true"),a=v(),n=dt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?eo.createElement(Ur,null):eo.createElement(mu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&eo.createElement(hn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?eo.createElement(Pn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},eo.createElement(po,{key:`${e.pathname}?${e.searchParams?.toString()}`},eo.createElement(xu,{fallback:eo.createElement(Ur,null)},e.children)))}import Xr from"react";import{Anchor as gu}from"@mantine/core";import We from"react";function we(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?We.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&We.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&We.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},We.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&We.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},We.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),We.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},We.createElement(gu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function bn(e){return Xr.createElement("div",null,e.values?.map((o,t)=>Xr.createElement("div",{key:"attatchment-"+t},Xr.createElement(we,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Dn}from"@mantine/core";import fe,{useRef as Cu,useState as yu}from"react";import Qr,{useRef as hu}from"react";function yo(e){let o=v(),t=hu(null);function r(f){V(f),t.current?.click()}function a(f){V(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Qr.createElement(Qr.Fragment,null,Qr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Tn(e){let[o,t]=yu(e.defaultValue??[]),r=Cu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return fe.createElement("table",{style:{width:"100%"}},fe.createElement("colgroup",null,fe.createElement("col",{width:"97%"}),fe.createElement("col",{width:"3%"})),fe.createElement("tbody",null,o.map((n,f)=>fe.createElement("tr",{key:`${f}-${o.length}`},fe.createElement("td",null,fe.createElement(we,{value:n,maxWidth:200})),fe.createElement("td",null,fe.createElement(Dn,{title:"Remove",size:"sm",onClick:l=>{V(l);let s=o.slice();s.splice(f,1),a(s)}},fe.createElement(Ue,null))))),fe.createElement("tr",null,fe.createElement("td",null),fe.createElement("td",null,fe.createElement(yo,{onUpload:n=>{a([...r.current,n])}},n=>fe.createElement(Dn,{...n,title:"Add",size:"sm",color:"green"},fe.createElement(Uo,{size:16})))))))}import{Button as kn}from"@mantine/core";import vo,{useState as vu}from"react";function Ct(e){let[o,t]=vu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?vo.createElement(vo.Fragment,null,vo.createElement(we,{value:o,maxWidth:200}),vo.createElement(kn,{onClick:a=>{V(a),r(void 0)}},"Remove")):vo.createElement(yo,{onUpload:r},a=>vo.createElement(kn,{...a},"Upload..."))}import{getPropertyDisplayName as qu,globalSchema as Uu}from"@medplum/core";import Ko from"react";var yt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Su}from"@mantine/core";import Qo from"react";var Pu=Su(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function Bn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Pu();return Qo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function An(e){return Qo.createElement(Qo.Fragment,null,Qo.createElement("dt",null,e.term),Qo.createElement("dd",null,e.children))}import{formatDateTime as Fu,formatPeriod as wu,formatTiming as Ou,getElementDefinitionTypeName as Eu,getTypedPropertyValue as Lu,PropertyType as N}from"@medplum/core";import w from"react";import{formatCodeableConcept as bu}from"@medplum/core";import Mn from"react";function So(e){return Mn.createElement(Mn.Fragment,null,bu(e.value))}import{formatCoding as Du}from"@medplum/core";import Fn from"react";function wn(e){return Fn.createElement(Fn.Fragment,null,Du(e.value))}import Jr from"react";import On from"react";function vt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),On.createElement(On.Fragment,null,t.join("").trim())}function En(e){let o=e.value;return o?Jr.createElement(Jr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Jr.createElement(vt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Tu from"react";function Ln(e){return Tu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as ku}from"@medplum/core";import Rn from"react";function Nn(e){return Rn.createElement(Rn.Fragment,null,ku(e.value))}import{formatQuantity as Bu}from"@medplum/core";import Hn from"react";function Jo(e){return Hn.createElement(Hn.Fragment,null,Bu(e.value))}import{formatRange as Au}from"@medplum/core";import Vn from"react";function St(e){return Vn.createElement(Vn.Fragment,null,Au(e.value))}import Pt from"react";function qn(e){let o=e.value;return o?Pt.createElement(Pt.Fragment,null,Pt.createElement(Jo,{value:o.numerator}),"\xA0/\xA0",Pt.createElement(Jo,{value:o.denominator})):null}import{stringify as Mu}from"@medplum/core";import $r from"react";function oo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Mu(e.value);return e.link!==!1&&e.value.reference?$r.createElement(ne,{to:e.value},o):$r.createElement($r.Fragment,null,o)}import bt from"react";function Un(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return bt.createElement(bt.Fragment,null,t.map((a,n)=>bt.createElement("div",{key:`${n}-${t.length}`},bt.createElement(ce,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}import{ActionIcon as Ru,Box as Nu,CopyButton as Hu,Tooltip as Vu}from"@mantine/core";function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return w.createElement(Nu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,w.createElement(Hu,{value:r,timeout:2e3},({copied:n,copy:f})=>w.createElement(Vu,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},w.createElement(Ru,{color:n?"teal":"gray",onClick:f},n?w.createElement(qo,{size:"1rem"}):w.createElement(vr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===N.Attachment?w.createElement(bn,{values:r,maxWidth:e.maxWidth}):w.createElement(Un,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case N.boolean:return w.createElement(w.Fragment,null,r===void 0?"":(!!r).toString());case N.SystemString:case N.string:return w.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case N.code:case N.date:case N.integer:case N.positiveInt:case N.unsignedInt:case N.uri:case N.url:return w.createElement(w.Fragment,null,r);case N.canonical:return w.createElement(oo,{value:{reference:r},link:e.link});case N.dateTime:case N.instant:return w.createElement(w.Fragment,null,Fu(r));case N.markdown:return w.createElement("pre",null,r);case N.Address:return w.createElement(Ua,{value:r});case N.Annotation:return w.createElement(w.Fragment,null,r?.text);case N.Attachment:return w.createElement(we,{value:r,maxWidth:e.maxWidth});case N.CodeableConcept:return w.createElement(So,{value:r});case N.Coding:return w.createElement(wn,{value:r});case N.ContactDetail:return w.createElement(En,{value:r});case N.ContactPoint:return w.createElement(vt,{value:r});case N.HumanName:return w.createElement(xt,{value:r});case N.Identifier:return w.createElement(Ln,{value:r});case N.Money:return w.createElement(Nn,{value:r});case N.Period:return w.createElement(w.Fragment,null,wu(r));case N.Quantity:case N.Duration:return w.createElement(Jo,{value:r});case N.Range:return w.createElement(St,{value:r});case N.Ratio:return w.createElement(qn,{value:r});case N.Reference:return w.createElement(oo,{value:r,link:e.link});case N.Timing:return w.createElement(w.Fragment,null,Ou(r));case N.Dosage:case N.UsageContext:return w.createElement($o,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return w.createElement($o,{value:{type:Eu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Se(e,o){let t=Lu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function $o(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Uu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Ko.createElement("div",null,t.name):Ko.createElement(Bn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(yt.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Se(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Ko.createElement(An,{key:f,term:qu(f)},Ko.createElement(ce,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Ko.createElement("div",null,r,"\xA0not implemented")}import{Stack as vc}from"@mantine/core";import{getPropertyDisplayName as Cf,globalSchema as Sc}from"@medplum/core";import Do,{useState as Pc}from"react";import{Group as Gu,Input as zu}from"@mantine/core";import Dt from"react";function Tt(e){return Dt.createElement(Gu,{noWrap:!0},Dt.createElement("div",null,e.children),Dt.createElement("div",null,Dt.createElement(zu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Wu}from"@mantine/core";import Xu from"react";function me(e,o){return e?.issue?.filter(t=>Gn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
- `)}function kt(e,o){return e?.issue?.filter(t=>Gn(t.expression?.[0],o))}function Gn(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Pe(e){return Xu.createElement(Wu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{Button as zn,Group as Qu,Stack as Ju,TextInput as Wn}from"@mantine/core";import{capitalize as $u,deepClone as Ku}from"@medplum/core";import ke,{useEffect as ju,useState as Xn}from"react";function Cb(e){let o=v(),t=X(e.defaultValue),[r,a]=Xn(),[n,f]=Xn();return ju(()=>{t&&(f(Ku(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?ke.createElement("div",null,"Loading..."):ke.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},ke.createElement(Ju,{mb:"xl"},ke.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},ke.createElement(Wn,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),ke.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},ke.createElement(Wn,{name:"id",defaultValue:n.id,disabled:!0}))),ke.createElement(_o,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),ke.createElement(Qu,{position:"right",mt:"xl"},ke.createElement(zn,{type:"submit"},"OK"),e.onDelete&&ke.createElement(zn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function jo(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",$u(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as cc,Group as mc,NativeSelect as pc,Textarea as xc,TextInput as ra}from"@mantine/core";import{capitalize as Ic,getElementDefinitionTypeName as gc,PropertyType as O}from"@medplum/core";import q,{useState as hc}from"react";import _u,{useState as Zu}from"react";function Qn(e){let[o,t]=Zu(e.defaultValue);function r(a){let n=ed(a);t(n),e.onChange&&e.onChange(n)}return _u.createElement(Co,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Yu(o),maxSelectedValues:1,onChange:r})}function Yu(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function ed(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import od,{useState as td}from"react";function Jn(e){let[o,t]=td(e.defaultValue);function r(a){let n=a[0],f=n&&ad(n);t(f),e.onChange&&e.onChange(f)}return od.createElement(Co,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&rd(o),maxSelectedValues:1,onChange:r})}function rd(e){return{system:e.system,code:e.code,display:e.display}}function ad(e){return{system:e.system,code:e.code,display:e.display}}import{Group as id,TextInput as ud}from"@mantine/core";import Kr,{useRef as dd,useState as cd}from"react";import{Group as nd,NativeSelect as $n,TextInput as fd}from"@mantine/core";import Bt,{useRef as ld,useState as sd}from"react";function At(e){let[o,t]=sd(e.defaultValue),r=ld();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return Bt.createElement(nd,{spacing:"xs",grow:!0,noWrap:!0},Bt.createElement($n,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Bt.createElement($n,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Bt.createElement(fd,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Kn(e){let[o,t]=cd(e.defaultValue),r=dd();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return Kr.createElement(id,{spacing:"xs",grow:!0,noWrap:!0},Kr.createElement(ud,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),Kr.createElement(At,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as md}from"@mantine/core";import{isValidDate as jn}from"@medplum/core";import pd from"react";function Be(e){return pd.createElement(md,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:gd(),defaultValue:xd(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Id(t))}}})}function xd(e){if(!e)return"";let o=new Date(e);return jn(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Id(e){if(!e)return"";let o=new Date(e);return jn(o)?o.toISOString():""}function gd(){return"datetime-local"}import{JsonInput as hd}from"@mantine/core";import{stringify as Cd}from"@medplum/core";import yd from"react";function _n(e){return yd.createElement(hd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Cd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as vd,NativeSelect as Sd,TextInput as Mt}from"@mantine/core";import Po,{useRef as Pd,useState as bd}from"react";function Zn(e){let[o,t]=bd(e.defaultValue),r=Pd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Po.createElement(vd,{spacing:"xs",grow:!0,noWrap:!0},Po.createElement(Sd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Po.createElement(Mt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Po.createElement(Mt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),Po.createElement(Mt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),Po.createElement(Mt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Dd,TextInput as Yn}from"@mantine/core";import jr,{useState as Td}from"react";function ef(e){let[o,t]=Td(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return jr.createElement(Dd,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(Yn,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),jr.createElement(Yn,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as kd,TextInput as Bd}from"@mantine/core";import _r,{useCallback as Zr,useState as Ad}from"react";var Md=["USD","EUR","CAD","GBP","AUD"];function of(e){let{onChange:o}=e,[t,r]=Ad(e.defaultValue),a=Zr(s=>{r(s),o&&o(s)},[o]),n=Zr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Zr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=_r.createElement(kd,{defaultValue:t?.currency,data:Md,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return _r.createElement(Bd,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:_r.createElement(Sr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Fd}from"@mantine/core";import Yr,{useState as wd}from"react";function tf(e){let[o,t]=wd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Yr.createElement(Fd,{spacing:"xs",grow:!0,noWrap:!0},Yr.createElement(Be,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Yr.createElement(Be,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Od,NativeSelect as Ed,TextInput as rf}from"@mantine/core";import Ft,{useState as Ld}from"react";function be(e){let[o,t]=Ld(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ft.createElement(Od,{spacing:"xs",grow:!0,noWrap:!0},Ft.createElement(Ed,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Ft.createElement(rf,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Rd(a.currentTarget.value)})}}),Ft.createElement(rf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Rd(e){if(e)return parseFloat(e)}import{Group as Nd}from"@mantine/core";import ea,{useState as Hd}from"react";function Zo(e){let[o,t]=Hd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ea.createElement(Nd,{spacing:"xs",grow:!0,noWrap:!0},ea.createElement(be,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ea.createElement(be,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Vd}from"@mantine/core";import oa,{useState as qd}from"react";function af(e){let[o,t]=qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(Vd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(be,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),oa.createElement(be,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as jd,NativeSelect as _d,TextInput as Zd}from"@mantine/core";import{createReference as Yd}from"@medplum/core";import Ot,{useRef as sf,useState as uf}from"react";import{Group as Ud,Text as nf}from"@mantine/core";import{getDisplayString as Gd,getReferenceString as lf}from"@medplum/core";import to,{forwardRef as zd,useCallback as ff,useState as Wd}from"react";var Xd={Observation:"code",User:"email:contains"},Qd=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function Jd(e){return{value:lf(e),label:Gd(e),resource:e}}function wt(e){let o=v(),t=e.resourceType,[r,a]=Wd(),n=X(e.defaultValue,a),f=e.onChange,l=ff(async(i,u)=>{let m=Kd(t),c=new URLSearchParams({[m]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=ff(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:to.createElement(ho,{name:e.name,itemComponent:$d,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:lf,toOption:Jd,loadOptions:l,onChange:s,clearable:!0})}var $d=zd(({label:e,resource:o,...t},r)=>to.createElement("div",{ref:r,...t},to.createElement(Ud,{noWrap:!0},to.createElement(Ce,{value:o}),to.createElement("div",null,to.createElement(nf,null,e),to.createElement(nf,{size:"xs",color:"dimmed"},o.birthDate)))));function Kd(e){return Xd[e]??(Qd.includes(e)?"name":"_id")}function bo(e){let o=ec(e.targetTypes),t=oc(e.defaultValue,o),[r,a]=uf(e.defaultValue),[n,f]=uf(t),l=sf();l.current=r;let s=sf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Ot.createElement(jd,{spacing:"xs",grow:!0,noWrap:!0},o?Ot.createElement(_d,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Ot.createElement(Zd,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Ot.createElement(wt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?Yd(u):void 0)}}))}function ec(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function oc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as df}from"@mantine/core";import pe,{useRef as tc,useState as rc}from"react";function cf(e){let[o,t]=rc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=tc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return pe.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},pe.createElement("colgroup",null,pe.createElement("col",{width:"97%"}),pe.createElement("col",{width:"3%"})),pe.createElement("tbody",null,o.map((n,f)=>pe.createElement("tr",{key:`${f}-${o.length}`},pe.createElement("td",null,pe.createElement(Re,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(df,{title:"Remove",size:"sm",onClick:l=>{V(l);let s=[...r.current];s.splice(f,1),a(s)}},pe.createElement(Ue,null))))),pe.createElement("tr",null,pe.createElement("td",null),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(df,{title:"Add",size:"sm",color:"green",onClick:n=>{V(n);let f=[...r.current];f.push(void 0),a(f)}},pe.createElement(io,null))))))}import{Button as xf,Chip as mf,Group as Et,Modal as ac,NativeSelect as nc,Stack as fc,Switch as lc,TextInput as sc}from"@mantine/core";import{formatTiming as ic}from"@medplum/core";import $,{useRef as If,useState as ta}from"react";var uc=["sun","mon","tue","wed","thu","fri","sat"];function gf(e){let[o,t]=ta(e.defaultValue),[r,a]=ta(!1),n=If();return n.current=o,$.createElement($.Fragment,null,$.createElement(Et,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,ic(n.current)||"No repeat"),$.createElement(xf,{onClick:()=>a(!0)},"Edit")),$.createElement(dc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var pf={repeat:{period:1,periodUnit:"d"}};function dc(e){let[o,t]=ta(e.defaultValue||pf),r=If();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return $.createElement(ac,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(fc,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Be,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(lc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?pf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Et,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(sc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),$.createElement(nc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&$.createElement(Pe,{title:"Repeat on"},$.createElement(mf.Group,{multiple:!0,onChange:s},$.createElement(Et,{position:"apart",mt:"md",spacing:"xs"},uc.map(i=>$.createElement(mf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Et,{position:"right"},$.createElement(xf,{onClick:()=>e.onOk(o)},"OK"))))}function Re(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===O.Attachment?q.createElement(Tn,{name:r,defaultValue:a,onChange:e.onChange}):q.createElement(cf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?q.createElement(Cc,{elementDefinitionTypes:n,...e}):q.createElement(hf,{elementDefinitionType:n[0],...e})}function Cc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=hc(t);return q.createElement(mc,{spacing:"xs",grow:!0,noWrap:!0},q.createElement(pc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),q.createElement(hf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Ic(r.code)))}}))}function hf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case O.SystemString:case O.canonical:case O.string:case O.time:case O.uri:case O.url:return q.createElement(ra,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case O.date:return q.createElement(ra,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case O.dateTime:case O.instant:return q.createElement(Be,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case O.decimal:case O.integer:case O.positiveInt:case O.unsignedInt:return q.createElement(ra,{type:"number",step:t===O.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case O.code:return q.createElement(ht,{property:o,name:r,defaultValue:a,onChange:e.onChange});case O.boolean:return q.createElement(cc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case O.markdown:return q.createElement(xc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case O.Address:return q.createElement(Xa,{name:r,defaultValue:a,onChange:e.onChange});case O.Annotation:return q.createElement($a,{name:r,defaultValue:a,onChange:e.onChange});case O.Attachment:return q.createElement(Ct,{name:r,defaultValue:a,onChange:e.onChange});case O.CodeableConcept:return q.createElement(Qn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case O.Coding:return q.createElement(Jn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case O.ContactDetail:return q.createElement(Kn,{name:r,defaultValue:a,onChange:e.onChange});case O.ContactPoint:return q.createElement(At,{name:r,defaultValue:a,onChange:e.onChange});case O.Extension:return q.createElement(_n,{name:r,defaultValue:a,onChange:e.onChange});case O.HumanName:return q.createElement(Zn,{name:r,defaultValue:a,onChange:e.onChange});case O.Identifier:return q.createElement(ef,{name:r,defaultValue:a,onChange:e.onChange});case O.Money:return q.createElement(of,{name:r,defaultValue:a,onChange:e.onChange});case O.Period:return q.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case O.Duration:case O.Quantity:return q.createElement(be,{name:r,defaultValue:a,onChange:e.onChange});case O.Range:return q.createElement(Zo,{name:r,defaultValue:a,onChange:e.onChange});case O.Ratio:return q.createElement(af,{name:r,defaultValue:a,onChange:e.onChange});case O.Reference:return q.createElement(bo,{name:r,defaultValue:a,targetTypes:yc(o),onChange:e.onChange});case O.Timing:return q.createElement(gf,{name:r,defaultValue:a,onChange:e.onChange});case O.Dosage:case O.UsageContext:return q.createElement(_o,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return q.createElement(_o,{typeName:gc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function yc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function _o(e){let[o,t]=Pc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Sc.types[a];if(!n)return Do.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Do.createElement(vc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||yt.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,m]=Se(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Do.createElement(Tt,{key:s,title:Cf(s),description:i.definition,htmlFor:s},Do.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,outcome:e.outcome,onChange:(h,D)=>{r(jo(o,s,D??s,l[1],h))}})):Do.createElement(Pe,{key:s,title:Cf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},Do.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,onChange:(h,D)=>{r(jo(o,s,D??s,l[1],h))}}))}))}import{Button as aa,createStyles as bc,Group as yf}from"@mantine/core";import ee,{useMemo as Dc,useState as Tc}from"react";var kc=bc(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function Bc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function vf(e){let{classes:o}=kc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Tc(na);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Dc(()=>Ac(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(yf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Bc(a)),ee.createElement(yf,{position:"right",spacing:"xs"},ee.createElement(aa,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(aa,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,l.map((s,i)=>ee.createElement("tr",{key:"week-"+i},s.map((u,m)=>ee.createElement("td",{key:"day-"+m},u&&ee.createElement(aa,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function na(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Ac(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:Mc(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function Mc(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as Fc,createStyles as wc}from"@mantine/core";import Oc from"react";var Ec=wc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Ec();return Oc.createElement(Fc,{className:r.root,...t},o)}import zm from"react";import{ActionIcon as Hf,Center as Tm,createStyles as km,Group as Bm,Loader as Am,Menu as Ne,ScrollArea as Mm,TextInput as Fm}from"@mantine/core";import{showNotification as wm,updateNotification as ca}from"@mantine/notifications";import{getReferenceString as Yo,normalizeErrorString as Om}from"@medplum/core";import b,{useCallback as Nt,useEffect as Em,useRef as Vf,useState as qf}from"react";import{createStyles as $c,Group as Rt,List as bf,Stack as Df,Text as De,Title as Tf}from"@mantine/core";import{capitalize as Kc,formatCodeableConcept as jc,formatDateTime as sa,formatObservationValue as _c,isReference as Zc}from"@medplum/core";import I,{useEffect as Yc,useState as em}from"react";import{Blockquote as Lc,createStyles as Rc,Stack as Nc}from"@mantine/core";import Sf from"react";var Hc=Rc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function fa({value:e}){let{classes:o}=Hc();return e?Sf.createElement(Nc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Sf.createElement(Lc,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Wc}from"@mantine/core";import la from"react";import{Text as Vc}from"@mantine/core";import{getDisplayString as qc,isOk as Uc,normalizeErrorString as Gc}from"@medplum/core";import Pf,{useState as zc}from"react";function Oe(e){let{value:o,link:t,...r}=e,[a,n]=zc(),f=X(o,n),l;if(a&&!Uc(a))l=`[${Gc(a)}]`;else if(f)l=qc(f);else return null;return t?Pf.createElement(ne,{to:o,...r},l):Pf.createElement(Vc,{component:"span",...r},l)}function Qe(e){return la.createElement(Wc,{spacing:"xs"},la.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),la.createElement(Oe,{value:e.value,link:e.link}))}import{Badge as Xc}from"@mantine/core";import Qc from"react";var Jc={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",corrected:"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 Lt(e){return Qc.createElement(Xc,{color:Jc[e.status]},e.status)}var kf=$c(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));ia.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ia(e){let o=v(),t=X(e.value),[r,a]=em();if(Yc(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return I.createElement(Df,null,I.createElement(Tf,null,"Diagnostic Report"),I.createElement(om,{value:t}),!e.hideSpecimenInfo&&tm(r),t.result&&I.createElement(rm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(fa,{value:n}))}function om({value:e}){return I.createElement(Rt,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(De,null,I.createElement(Qe,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(De,null,I.createElement(Qe,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(De,null,I.createElement(Qe,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(De,null,sa(e.issued))),e.status&&I.createElement("div",null,I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(De,null,Kc(e.status))))}function tm(e){return I.createElement(Df,{spacing:"xs"},I.createElement(Tf,{order:2,size:"h6"},"Specimens"),I.createElement(bf,{type:"ordered"},e?.map(o=>I.createElement(bf.Item,{ml:"sm",key:`specimen-${o.id}`},I.createElement(Rt,{spacing:20},I.createElement(Rt,{spacing:5},I.createElement(De,{fw:500},"Collected:")," ",sa(o.collection?.collectedDateTime)),I.createElement(Rt,{spacing:5},I.createElement(De,{fw:500},"Received:")," ",sa(o.receivedTime)))))))}function rm(e){let{classes:o}=kf();return I.createElement("table",{className:o.table},I.createElement("thead",null,I.createElement("tr",null,I.createElement("th",null,"Test"),I.createElement("th",null,"Value"),I.createElement("th",null,"Reference Range"),I.createElement("th",null,"Interpretation"),I.createElement("th",null,"Category"),I.createElement("th",null,"Performer"),I.createElement("th",null,"Status"))),I.createElement("tbody",null,e.value?.map(t=>I.createElement(am,{key:`obs-${Zc(t)?t.reference:t.id}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function am(e){let{classes:o,cx:t}=kf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=lm(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(ne,{to:r},I.createElement(So,{value:r.code}))),I.createElement("td",null,I.createElement(nm,{value:r})),I.createElement("td",null,I.createElement(fm,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(So,{value:r.interpretation[0]})),I.createElement("td",null,r.category&&r.category.length>0&&I.createElement("ul",null,r.category.map(f=>I.createElement("li",{key:`category-${jc(f)}`},I.createElement(So,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(oo,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(Lt,{status:r.status}))),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(fa,{value:r.note}))))}function nm(e){let o=e.value;return I.createElement(I.Fragment,null,_c(o))}function fm(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?I.createElement(I.Fragment,null,o.text):I.createElement(St,{value:o}):null}function lm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as sm,Paper as im,useComponentDefaultProps as um}from"@mantine/core";import dm from"react";var cm=sm((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),mm={shadow:"xs",radius:"md",withBorder:!0};function To(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=um("Panel",mm,e),{classes:l,cx:s}=cm({width:r,fill:a},{name:"Panel",unstyled:n});return dm.createElement(im,{className:s(l.paper,o),...f},t)}import{createStyles as pm}from"@mantine/core";import{getPropertyDisplayName as xm,stringify as Bf,toTypedValue as Af}from"@medplum/core";import le,{useEffect as Im,useState as gm}from"react";var hm=pm(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Ff(e){let{classes:o}=hm(),t=v(),[r,a]=gm();if(Im(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?le.createElement("table",{className:o.root},le.createElement("colgroup",null,le.createElement("col",{style:{width:"30%"}}),le.createElement("col",{style:{width:"35%"}}),le.createElement("col",{style:{width:"35%"}})),le.createElement("thead",null,le.createElement("tr",null,le.createElement("th",null,"Property"),le.createElement("th",null,"Before"),le.createElement("th",null,"After"))),le.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=Se(Af(e.original),l),[m,c]=Se(Af(e.revised),l);return Mf(i)&&Mf(m)||Bf(i)===Bf(m)?null:le.createElement("tr",{key:l},le.createElement("td",null,xm(l)),le.createElement("td",{className:o.removed},le.createElement(ce,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),le.createElement("td",{className:o.added},le.createElement(ce,{property:s,propertyType:c,value:m,ignoreMissingValues:!0})))}))):null}function Mf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Cm,{useEffect as ym,useState as vm}from"react";function ua(e){let o=v(),t=X(e.value),[r,a]=vm();return ym(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Cm.createElement($o,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Sm,Group as Pm,Menu as wf,Text as da}from"@mantine/core";import{formatDateTime as bm,getReferenceString as Dm}from"@medplum/core";import oe from"react";function Of(e){return oe.createElement(Xe,null,e.children)}function Je(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return oe.createElement(To,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(Pm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ce,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(da,{size:"sm"},oe.createElement(Oe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(da,{size:"xs"},oe.createElement(ne,{color:"dimmed",to:e.resource},bm(l)),oe.createElement(da,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(ne,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(wf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(wf.Target,null,oe.createElement(Sm,{radius:"xl","aria-label":`Actions for ${Dm(e.resource)}`},oe.createElement(Pr,null))),a)),oe.createElement(po,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function Rf(e,o){e.sort((t,r)=>{let a=Ef(t,o),n=Ef(r,o);return a>n?1:a<n?-1:Lf(t,o)-Lf(r,o)})}function Ef(e,o){if(!Nf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Lf(e,o){if(!Nf(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Nf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Lm=km(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function $e(e){let o=v(),t=qe(),r=o.getProfile(),a=Vf(null),n=X(e.value),[f,l]=qf(),[s,i]=qf([]),u=e.loadTimelineResources,m=Vf(s);m.current=s;let c=Nt(g=>{Rf(g,n),g.reverse(),i(g)},[n]),h=Nt(g=>{let R=[];for(let Te of g){if(Te.status!=="fulfilled")continue;let he=Te.value;if(he.type==="history"&&l(he),he.entry)for(let _e of he.entry)R.push(_e.resource)}c(R)},[c]),D=Nt(g=>c([...m.current,g]),[c]),k=Nt(()=>{let g,R;"resourceType"in e.value?(g=e.value.resourceType,R=e.value.id):[g,R]=e.value.reference?.split("/"),u(o,g,R).then(h).catch(console.log)},[o,e.value,u,h]);Em(()=>k(),[k]);function C(g){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,g)).then(R=>D(R)).catch(console.log)}function T(g){!n||!e.createMedia||o.createResource(e.createMedia(n,r,g)).then(R=>D(R)).then(()=>ca({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:b.createElement(qo,{size:16}),autoClose:2e3})).catch(R=>ca({id:"upload-notification",color:"red",title:"Upload error",message:Om(R),icon:b.createElement(Dr,{size:16}),autoClose:2e3}))}function d(g,R){return o.updateResource({...g,priority:R})}function M(g){d(g,"stat").then(k).catch(console.log)}function y(g){d(g,"routine").then(k).catch(console.log)}function F(g){t(`/${g.resourceType}/${g.id}`)}function Ie(g){t(`/${g.resourceType}/${g.id}/edit`)}function ge(g){t(`/${g.resourceType}/${g.id}/delete`)}function ue(g){t(`/${g.resourceType}/${g.id}/_history/${g.meta?.versionId}`)}function Y(){wm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Lo(g){ca({id:"upload-notification",loading:!0,title:"Uploading...",message:Gm(g),autoClose:!1,withCloseButton:!1})}return n?b.createElement(Of,null,e.createCommunication&&b.createElement(To,null,b.createElement(J,{testid:"timeline-form",onSubmit:g=>{C(g.text);let R=a.current;R&&(R.value="",R.focus())}},b.createElement(Bm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},b.createElement(Ce,{value:r}),b.createElement(Fm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),b.createElement(Hf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},b.createElement(Mr,{size:16})),b.createElement(yo,{onUpload:T,onUploadStart:Y,onUploadProgress:Lo},g=>b.createElement(Hf,{...g,radius:"xl",color:"blue",variant:"filled"},b.createElement(Uo,{size:16})))))),s.map(g=>{if(!g)return null;let R=`${g.resourceType}/${g.id}/${g.meta?.versionId}`;if(g.resourceType===n.resourceType&&g.id===n.id)return b.createElement(Rm,{key:R,history:f,resource:g,onDetails:ue});switch(g.resourceType){case"AuditEvent":return b.createElement(qm,{key:R,resource:g,onDetails:F});case"Communication":return b.createElement(Hm,{key:R,resource:g,onPin:g.priority!=="stat"?M:void 0,onUnpin:g.priority==="stat"?y:void 0,onDetails:F,onEdit:Ie,onDelete:ge});case"DiagnosticReport":return b.createElement(Um,{key:R,resource:g,onDetails:F,onEdit:Ie,onDelete:ge});case"Media":return b.createElement(Vm,{key:R,resource:g,onDetails:F,onEdit:Ie,onDelete:ge});default:return b.createElement(Je,{key:R,resource:g,padding:!0},b.createElement(ua,{value:g,ignoreMissingValues:!0}))}})):b.createElement(Tm,{style:{width:"100%",height:"100%"}},b.createElement(Am,null))}function ko(e){return b.createElement(Ne.Dropdown,null,b.createElement(Ne.Label,null,"Resource"),e.onPin&&b.createElement(Ne.Item,{icon:b.createElement(Fr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${Yo(e.resource)}`},"Pin"),e.onUnpin&&b.createElement(Ne.Item,{icon:b.createElement(wr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${Yo(e.resource)}`},"Unpin"),e.onDetails&&b.createElement(Ne.Item,{icon:b.createElement(Br,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${Yo(e.resource)}`},"Details"),e.onEdit&&b.createElement(Ne.Item,{icon:b.createElement(br,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${Yo(e.resource)}`},"Edit"),e.onDelete&&b.createElement(b.Fragment,null,b.createElement(Ne.Divider,null),b.createElement(Ne.Label,null,"Danger zone"),b.createElement(Ne.Item,{color:"red",icon:b.createElement(Wo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${Yo(e.resource)}`},"Delete")))}function Rm(e){let o=Nm(e.history,e.resource);return o?b.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(ko,{...e})},b.createElement(Ff,{original:o,revised:e.resource})):b.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(ko,{...e})},b.createElement("h3",null,"Created"),b.createElement(ua,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function Nm(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function Hm(e){let{classes:o}=Lm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return b.createElement(Je,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:b.createElement(ko,{...e})},b.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Vm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return b.createElement(Je,{resource:e.resource,padding:!!t,popupMenuItems:b.createElement(ko,{...e})},b.createElement(we,{value:e.resource.content}))}function qm(e){return b.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(ko,{...e})},b.createElement(Mm,null,b.createElement("pre",null,e.resource.outcomeDesc)))}function Um(e){return b.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(ko,{...e})},b.createElement(ia,{value:e.resource}))}function Gm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ma(e.loaded)} / ${ma(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ma(e.loaded)}`}function ma(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function fB(e){return zm.createElement($e,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import Uf from"react";function Ht(e){let{children:o,...t}=e;return Uf.createElement(Xe,null,Uf.createElement(To,{...t},o))}import{createReference as Vt}from"@medplum/core";import Wm from"react";function hB(e){return Wm.createElement($e,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Vt(o),subject:o.subject,sender:Vt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Vt(o),subject:o.subject,operator:Vt(t),issued:new Date().toISOString(),content:r})})}import{Button as _p,Loader as Zp,Table as Yp}from"@mantine/core";import{normalizeOperationOutcome as ex}from"@medplum/core";import te,{useEffect as Cl,useRef as yl,useState as Jt}from"react";import{evalFhirPath as Xm}from"@medplum/core";import Qm from"react";function Gf(e){let o;try{o=Xm(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return Qm.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Lp,Button as Fo,Center as Xt,createStyles as Rp,Group as Qt,Loader as Np,Menu as Il,Pagination as Hp,Table as Vp,Text as Sa,UnstyledButton as qp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ta,formatSearchQuery as Up,globalSchema as Gp}from"@medplum/core";import S,{useCallback as gl,useEffect as hl,useRef as zp,useState as Pa}from"react";import{Box as Jm,Button as $m,Modal as Km,Text as jm}from"@mantine/core";import Bo from"react";function Wf(e){return Bo.createElement(Km,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Bo.createElement(Jm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Bo.createElement(zf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Bo.createElement(zf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Bo.createElement(jm,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function zf(e){return Bo.createElement($m,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as tt,Modal as fp}from"@mantine/core";import{globalSchema as lp,stringify as sp}from"@medplum/core";import Q,{useEffect as ip,useRef as nl,useState as up}from"react";import{capitalize as _m,DEFAULT_SEARCH_COUNT as Zm,evalFhirPathTyped as Ym,formatDateTime as ep,Operator as A}from"@medplum/core";import qt from"react";var op={string:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],fulltext:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],token:[A.EQUALS,A.NOT],reference:[A.EQUALS,A.NOT],numeric:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],quantity:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],date:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY],datetime:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY]},tp={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",identifier:"identifier",iterate:"iterate"};function et(e,o){return{...e,filters:o,offset:0,name:void 0}}function EB(e){return et(e,[])}function Ut(e,o){return et(e,(e.filters??[]).filter(t=>t.code!==o))}function Ao(e,o,t,r,a){a&&(e=Ut(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),et(e,n)}function LB(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function Qf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function Jf(e,o){return pa(e,o,-1)}function $f(e,o){return pa(e,o,0)}function Kf(e,o){return pa(e,o,1)}function pa(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Ia(e,o,r,a)}function jf(e,o){return xa(e,o,-1)}function _f(e,o){return xa(e,o,0)}function Zf(e,o){return xa(e,o,1)}function xa(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Ia(e,o,r,a)}function Yf(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ia(e,o,t,new Date)}function Ia(e,o,t,r){return e=Ut(e,o),e=Xf(e,o,A.GREATER_THAN_OR_EQUALS,t),e=Xf(e,o,A.LESS_THAN_OR_EQUALS,r),e}function Xf(e,o,t,r){return Ao(e,o,t,r.toISOString())}function ga(e,o,t=!0){return Ao(e,o,A.MISSING,t.toString())}function rp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function el(e,o){let t=e.count??Zm,r=(o-1)*t;return rp(e,r)}function ha(e,o,t){return o===ol(e)&&t!==void 0&&t===tl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function RB(e,o){let t=!1;return ol(e)===o&&(t=!tl(e)),ha(e,o,t)}function ol(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function tl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function rl(e){return op[e.type]}function ot(e){return tp[e]??""}function ye(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(_m).join(" "))}function al(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?ep(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?ap(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?np(e,o.searchParams[0]):null}function ap(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?qt.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function np(e,o){let t=Ym(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:qt.createElement(qt.Fragment,null,t.map((r,a)=>qt.createElement(ce,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function fl(e){let[o,t]=up({search:JSON.parse(sp(e.search))}),r=nl(null),a=nl(null);ip(()=>{t({search:e.search})},[e.search]);function n(d){d.key==="Enter"&&i()}function f(){i()}function l(d){d.key==="Enter"&&u()}function s(){u()}function i(){let d=o.search.fields??[],M=r.current?.value;if(M){let y=[...d,M];t({search:{...o.search,fields:y}})}}function u(){let d=o.search.fields??[],M=a.current?.value;if(M){let y=[...d];y.splice(y.indexOf(M),1),t({search:{...o.search,fields:y}})}}function m(){let d=o.search.fields??[],M=a.current?.value;if(!M)return;let y=[...d],F=y.indexOf(M);F<=0||(h(y,F,F-1),t({search:{...o.search,fields:y}}))}function c(){let d=o.search.fields??[],M=a.current?.value;if(!M)return;let y=[...d],F=y.indexOf(M);F>=y.length-1||(h(y,F,F+1),t({search:{...o.search,fields:y}}))}function h(d,M,y){let F=d[M];d[M]=d[y],d[y]=F}if(!e.visible)return null;let D=e.search.resourceType,k=lp.types[D],C=o.search.fields??[],T=dp(k).filter(d=>!C.includes(d)).sort((d,M)=>d.localeCompare(M));return Q.createElement(fp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Q.createElement("div",null,Q.createElement("table",{style:{margin:"auto"}},Q.createElement("thead",null,Q.createElement("tr",null,Q.createElement("th",{colSpan:2,align:"center"},"Available"),Q.createElement("th",{colSpan:2,align:"center"},"Selected"))),Q.createElement("tbody",null,Q.createElement("tr",null,Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:d=>n(d),onDoubleClick:()=>f(),"data-testid":"available"},T.map(d=>Q.createElement("option",{key:d,value:d},ye(d))))),Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:d=>l(d),onDoubleClick:()=>s(),"data-testid":"selected"},C.map(d=>Q.createElement("option",{key:d,value:d},ye(d))))))),Q.createElement("tfoot",null,Q.createElement("tr",null,Q.createElement("td",{align:"center"},Q.createElement(tt,{compact:!0,variant:"outline",onClick:i},"Add")),Q.createElement("td",{align:"center"},Q.createElement(tt,{compact:!0,variant:"outline",onClick:u},"Remove")),Q.createElement("td",{align:"center"},Q.createElement(tt,{compact:!0,variant:"outline",onClick:m},"Up")),Q.createElement("td",{align:"center"},Q.createElement(tt,{compact:!0,variant:"outline",onClick:c},"Down")))))),Q.createElement(tt,{onClick:()=>e.onOk(o.search)},"OK"))}function dp(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(ye(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ye(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ye(a)))}return o}import{Button as at,Group as Cp,Modal as yp,NativeSelect as sl}from"@mantine/core";import{globalSchema as vp,stringify as il}from"@medplum/core";import E,{useEffect as Sp,useRef as dl,useState as ya}from"react";import{formatDateTime as cp,getSearchParameterDetails as mp,globalSchema as pp,Operator as ll,SearchParameterType as xp}from"@medplum/core";import rt from"react";function Gt(e){let{resourceType:o,filter:t}=e,r=pp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===ll.EQUALS||t.operator===ll.NOT_EQUALS))return rt.createElement(Oe,{value:{reference:t.value}});let a=mp(o,r);if(t.code==="_lastUpdated"||a.type===xp.DATETIME)return rt.createElement(rt.Fragment,null,cp(t.value))}return rt.createElement(rt.Fragment,null,t.value)}import{Checkbox as Ip,TextInput as Ca}from"@mantine/core";import{getSearchParameterDetails as gp,SearchParameterType as Mo}from"@medplum/core";import ro from"react";function zt(e){let o=gp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Mo.REFERENCE:return ro.createElement(bo,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Mo.BOOLEAN:return ro.createElement(Ip,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case Mo.DATE:return ro.createElement(Ca,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Mo.DATETIME:return ro.createElement(Be,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Mo.NUMBER:return ro.createElement(Ca,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Mo.QUANTITY:return ro.createElement(be,{name:t,defaultValue:hp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return ro.createElement(Ca,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function hp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function cl(e){let[o,t]=ya(JSON.parse(il(e.search))),[r,a]=ya(-1),n=dl(o);n.current=o,Sp(()=>{t(JSON.parse(il(e.search)))},[e.search]);function f(u){t(Ao(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=vp.types[l].searchParams??{},i=o.filters||[];return E.createElement(yp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},E.createElement("div",null,E.createElement("table",null,E.createElement("colgroup",null,E.createElement("col",{style:{width:200}}),E.createElement("col",{style:{width:200}}),E.createElement("col",{style:{width:380}}),E.createElement("col",{style:{width:120}})),E.createElement("thead",null,E.createElement("tr",null,E.createElement("th",null,"Field"),E.createElement("th",null,"Operation"),E.createElement("th",null,"Value"),E.createElement("th",null,"Actions"))),E.createElement("tbody",null,i.map((u,m)=>m===r?E.createElement(ul,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let h=[...i];h[m]=c,t(et(n.current,h)),a(-1)},onCancel:()=>a(-1)}):E.createElement(Pp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(m),onDelete:()=>t(Qf(n.current,m))})),E.createElement(ul,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),E.createElement(Cp,{position:"right",mt:"xl"},E.createElement(at,{onClick:()=>e.onOk(n.current)},"OK")))}function Pp(e){let{filter:o}=e;return E.createElement("tr",null,E.createElement("td",null,ye(o.code)),E.createElement("td",null,ot(o.operator)),E.createElement("td",null,E.createElement(Gt,{resourceType:e.resourceType,filter:o})),E.createElement("td",null,E.createElement(at,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),E.createElement(at,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function ul(e){let[o,t]=ya(e.defaultValue??{}),r=dl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&rl(l);return E.createElement("tr",null,E.createElement("td",null,E.createElement(sl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:Object.keys(e.searchParams).map(i=>({value:i,label:ye(i)}))})),E.createElement("td",null,s&&E.createElement(sl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:ot(i)}))]})),E.createElement("td",null,l&&o.operator&&E.createElement(zt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),E.createElement("td",null,o.code&&o.operator&&o.value&&E.createElement(at,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&E.createElement(at,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as bp,Grid as va,Modal as Dp}from"@mantine/core";import ao,{useState as Tp}from"react";function ml(e){let[o,t]=Tp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return ao.createElement(Dp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},ao.createElement(J,{onSubmit:r},ao.createElement(va,null,ao.createElement(va.Col,{span:10},ao.createElement(zt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),ao.createElement(va.Col,{span:2},ao.createElement(bp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as B}from"@mantine/core";import{Operator as se}from"@medplum/core";import p from"react";function pl(e){if(!e.searchParams)return null;function o(n,f){a(ha(e.search,n.code,f))}function t(n){a(Ut(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?p.createElement(kp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):p.createElement(B.Dropdown,null,e.searchParams.map(n=>p.createElement(B.Item,{key:n.code},ye(n.code))))}function kp(e){switch(e.searchParam.type){case"date":return p.createElement(Bp,{...e});case"number":case"quantity":return p.createElement(Ap,{...e});case"reference":return p.createElement(Mp,{...e});case"string":case"token":case"uri":return p.createElement(Fp,{...e});default:return p.createElement(p.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Bp(e){let{searchParam:o}=e,t=o.code;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Go,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(B.Item,{icon:p.createElement(zo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(pt,{size:14}),onClick:()=>e.onPrompt(o,se.ENDS_BEFORE)},"Before..."),p.createElement(B.Item,{icon:p.createElement(mt,{size:14}),onClick:()=>e.onPrompt(o,se.STARTS_AFTER)},"After..."),p.createElement(B.Item,{icon:p.createElement(xr,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Between..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Kf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange($f(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Jf(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Zf(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(jf(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Yf(e.search,t))},"Year to date"),p.createElement(Wt,{...e}))}function Ap(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Go,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(B.Item,{icon:p.createElement(zo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(mt,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN)},"Greater than..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(B.Item,{icon:p.createElement(pt,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN)},"Less than..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement(Wt,{...e}))}function Mp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(Wt,{...e}))}function Fp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Go,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(B.Item,{icon:p.createElement(zo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,se.CONTAINS)},"Contains..."),p.createElement(B.Item,{icon:p.createElement(Ir,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Does not contain..."),p.createElement(Wt,{...e}))}function Wt(e){let{searchParam:o}=e,t=o.code;return p.createElement(p.Fragment,null,p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(mr,{size:14}),onClick:()=>e.onChange(ga(e.search,t))},"Missing"),p.createElement(B.Item,{icon:p.createElement(cr,{size:14}),onClick:()=>e.onChange(ga(e.search,t,!1))},"Not missing"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Vr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as wp,globalSchema as Op}from"@medplum/core";function xl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Ep(o,r));return t}function Ep(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=Op.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=wp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var ba=class extends Event{constructor(t){super("change");this.definition=t}},Da=class extends Event{constructor(t){super("load");this.response=t}},no=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Wp=Rp(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function Xp(e){let{classes:o}=Wp(),t=v(),[r,a]=Pa(!1),[n,f]=Pa(),{search:l,onLoad:s}=e,[i,u]=Pa({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),m=zp(i);m.current=i;let c=l.total??"accurate",h=gl(P=>{f(void 0),t.search(l.resourceType,Up({...l,total:c,fields:void 0}),P).then(W=>{u({...m.current,searchResponse:W}),s&&s(new Da(W))}).catch(W=>{u({...m.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),D=gl(()=>{u({...m.current,searchResponse:void 0}),h({cache:"reload"})},[h]);hl(()=>{h()},[h]);function k(P,W){P.stopPropagation();let ae=P.target.checked,de={...m.current.selected};ae?de[W]=!0:delete de[W],u({...m.current,selected:de})}function C(P){P.stopPropagation();let _=P.target.checked,ae={},de=m.current.searchResponse;_&&de?.entry&&de.entry.forEach(Ro=>{Ro.resource?.id&&(ae[Ro.resource.id]=!0)}),u({...m.current,selected:ae})}function T(){let P=m.current;if(!P.searchResponse?.entry||P.searchResponse.entry.length===0)return!1;for(let W of P.searchResponse.entry)if(W.resource?.id&&!P.selected[W.resource.id])return!1;return!0}function d(P){e.onChange&&e.onChange(new ba(P))}function M(P,W){if(It(P.target)||P.button===2)return;V(P);let _=P.button===1||P.ctrlKey||P.metaKey;!_&&e.onClick&&e.onClick(new no(W,P)),_&&e.onAuxClick&&e.onAuxClick(new no(W,P))}function y(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(hl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Gp.types[e.search.resourceType]))return S.createElement(Xt,{style:{width:"100%",height:"100%"}},S.createElement(Np,null));let Ie=e.checkboxesEnabled,ge=xl(l),ue=l.resourceType,Y=i.searchResponse,g=Y?.entry?.map(P=>P.resource),R="subtle",Te="gray",he=16,_e=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement(Qt,{position:"apart",mb:"xl"},S.createElement(Qt,{spacing:2},S.createElement(Fo,{compact:!0,variant:R,color:Te,leftIcon:S.createElement(yr,{size:he}),onClick:()=>u({...m.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Fo,{compact:!0,variant:R,color:Te,leftIcon:S.createElement(kr,{size:he}),onClick:()=>u({...m.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Fo,{compact:!0,variant:R,color:Te,leftIcon:S.createElement(Tr,{size:he}),onClick:e.onNew},"New..."),!_e&&y()&&S.createElement(Fo,{compact:!0,variant:R,color:Te,leftIcon:S.createElement(Hr,{size:he}),onClick:e.onExport?e.onExport:()=>u({...m.current,exportDialogVisible:!0})},"Export..."),!_e&&e.onDelete&&S.createElement(Fo,{compact:!0,variant:R,color:Te,leftIcon:S.createElement(Wo,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!_e&&e.onBulk&&S.createElement(Fo,{compact:!0,variant:R,color:Te,leftIcon:S.createElement(pr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement(Qt,{spacing:2},Y&&S.createElement(Sa,{size:"xs",color:"dimmed"},Kp(l,Y.total),"-",jp(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),S.createElement(Lp,{title:"Refresh",onClick:D},S.createElement(Er,{size:"1.125rem"})))),S.createElement(Vp,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,Ie&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:P=>C(P)})),ge.map(P=>S.createElement("th",{key:P.name},S.createElement(Il,{shadow:"md",width:240,position:"bottom-end"},S.createElement(Il.Target,null,S.createElement(qp,{className:o.control},S.createElement(Qt,{position:"apart",noWrap:!0},S.createElement(Sa,{weight:500,size:"sm"},ye(P.name)),S.createElement(Xt,{className:o.icon},S.createElement(dr,{size:14,stroke:1.5}))))),S.createElement(pl,{search:e.search,searchParams:P.searchParams,onPrompt:(W,_)=>{u({...m.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:_})},onChange:W=>{d(W)}}))))),!e.hideFilters&&S.createElement("tr",null,Ie&&S.createElement("th",null),ge.map(P=>S.createElement("th",{key:P.name},P.searchParams&&S.createElement(Qp,{resourceType:ue,searchParams:P.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,g?.map(P=>P&&S.createElement("tr",{key:P.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>M(W,P),onAuxClick:W=>M(W,P)},Ie&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${P.id}`,checked:!!i.selected[P.id],onChange:W=>k(W,P.id)})),ge.map(W=>S.createElement("td",{key:W.name},al(P,W))))))),g?.length===0&&S.createElement(Xe,null,S.createElement(Xt,{style:{height:150}},S.createElement(Sa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&S.createElement(Xt,{m:"md",p:"md"},S.createElement(Hp,{value:Jp(l),total:$p(l,Y.total),onChange:P=>d(el(l,P)),getControlProps:P=>{switch(P){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(fl,{search:e.search,visible:m.current.fieldEditorVisible,onOk:P=>{d(P),u({...m.current,fieldEditorVisible:!1})},onCancel:()=>{u({...m.current,fieldEditorVisible:!1})}}),S.createElement(cl,{search:e.search,visible:m.current.filterEditorVisible,onOk:P=>{d(P),u({...m.current,filterEditorVisible:!1})},onCancel:()=>{u({...m.current,filterEditorVisible:!1})}}),S.createElement(Wf,{visible:m.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...m.current,exportDialogVisible:!1})}}),S.createElement(ml,{key:i.filterDialogSearchParam?.code,visible:m.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ye(i.filterDialogSearchParam.code):"",resourceType:ue,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:P=>{d(Ao(e.search,P.code,P.operator,P.value)),u({...m.current,filterDialogVisible:!1})},onCancel:()=>{u({...m.current,filterDialogVisible:!1})}}))}var QA=S.memo(Xp);function Qp(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},ot(t.operator),"\xA0",S.createElement(Gt,{resourceType:e.resourceType,filter:t}))))}function Jp(e){return Math.floor((e.offset??0)/(e.count??Ta))+1}function $p(e,o){let t=e.count??Ta;return Math.ceil(o/t)}function Kp(e,o){return Math.min(o,(e.offset??0)+1)}function jp(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ta))}function ox(e){let o=v(),[t,r]=Jt(),[a,n]=Jt(),{query:f,fields:l}=e,[s,i]=Jt(),[u,m]=Jt({}),c=yl();c.current=s;let h=yl({});h.current=u,Cl(()=>{n(void 0),o.graphql(f).then(i).catch(y=>n(ex(y)))},[o,f]);function D(y,F){y.stopPropagation();let ge=y.target.checked,ue={...h.current};ge?ue[F]=!0:delete ue[F],m(ue)}function k(y){y.stopPropagation();let Ie=y.target.checked,ge={},ue=c.current?.data.ResourceList;Ie&&ue&&ue.forEach(Y=>{Y.id&&(ge[Y.id]=!0)}),m(ge)}function C(){let y=c.current?.data.ResourceList;if(!y||y.length===0)return!1;for(let F of y)if(F.id&&!h.current[F.id])return!1;return!0}function T(y,F){It(y.target)||(V(y),y.button!==1&&e.onClick&&e.onClick(new no(F,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new no(F,y)))}if(Cl(()=>{o.requestSchema(e.resourceType).then(y=>{r({...y})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(Zp,null);let M=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:y=>V(y),"data-testid":"search-control"},te.createElement(Yp,null,te.createElement("thead",null,te.createElement("tr",null,M&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:C(),onChange:y=>k(y)})),l.map(y=>te.createElement("th",{key:y.name},y.name)))),te.createElement("tbody",null,s?.data.ResourceList.map(y=>y&&te.createElement("tr",{key:y.id,"data-testid":"search-control-row",onClick:F=>T(F,y),onAuxClick:F=>T(F,y)},M&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${y.id}`,checked:!!u[y.id],onChange:F=>D(F,y.id)})),l.map(F=>te.createElement("td",{key:F.name},te.createElement(Gf,{propertyType:F.propertyType,path:F.fhirPath,resource:y}))))))),s?.data.ResourceList.length===0&&te.createElement("div",{"data-testid":"empty-search"},"No results"),a&&te.createElement("div",{"data-testid":"search-error"},te.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&te.createElement(_p,{onClick:()=>e.onBulk(Object.keys(h.current))},"Bulk..."))}var rM=te.memo(ox);import fo from"react";function Ke(e){return fo.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},fo.createElement("title",null,"Medplum Logo"),fo.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),fo.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"}),fo.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"}),fo.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),fo.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as tx}from"@mantine/core";import ka from"react";function wo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:ka.createElement(tx,{icon:ka.createElement(Ye,{size:16}),color:"red"},o.map(t=>ka.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as $t}from"@medplum/core";import rx,{useCallback as ax}from"react";function IM(e){let o=ax((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return rx.createElement($e,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:$t(t),sender:$t(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:$t(t),operator:$t(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Sl,Button as nx,createStyles as fx,NativeSelect as lx,Stack as sx,TextInput as Aa}from"@mantine/core";import{getReferenceString as ix}from"@medplum/core";import H,{useEffect as vl,useRef as Pl,useState as nt}from"react";var bl=fx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function OM(e){let o=v(),t=X(e.value),[r,a]=nt(void 0),[n,f]=nt(),[l,s]=nt(),[i,u]=nt();function m(){s(void 0)}function c(){f(void 0)}let h=Pl();if(h.current=i,vl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),vl(()=>(u(xx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",m),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function D(k,C){u({...h.current,[k]:C})}return H.createElement("div",null,H.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},H.createElement(Aa,{label:"Plan Title",defaultValue:i.title,onChange:k=>D("title",k.currentTarget.value)}),H.createElement(Dl,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:k=>D("action",k)}),H.createElement(nx,{type:"submit"},"Save")))}function Dl(e){let{classes:o}=bl(),t=Pl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return H.createElement("div",{className:o.section},e.actions.map(f=>H.createElement("div",{key:f.id},H.createElement(ux,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),H.createElement("div",{className:o.bottomActions},H.createElement(Sl,{href:"#",onClick:f=>{V(f),a({id:kl()})}},"Add action")))}function ux(e){let{classes:o,cx:t}=bl(),{action:r}=e,a=px(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){V(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return H.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?H.createElement(cx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):H.createElement(dx,{action:r,actionType:a}),H.createElement("div",{className:o.bottomActions},H.createElement(Sl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ma={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function dx(e){let{action:o,actionType:t}=e,[r,a]=Tl(o);return H.createElement("div",null,H.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&H.createElement("div",null,H.createElement(oo,{value:{reference:o.definitionCanonical}})),r&&H.createElement("div",null,H.createElement(ce,{property:Ma,propertyType:a,value:r})))}function cx(e){let{action:o}=e,[t,r]=nt(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return H.createElement(sx,{spacing:"xl"},H.createElement(Aa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),H.createElement(Aa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),H.createElement(lx,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&H.createElement(Dl,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return H.createElement(Kt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return H.createElement(Kt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return H.createElement(Kt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return H.createElement(Kt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),H.createElement(Pe,{title:"Timing",description:"When the action should take place."},H.createElement(mx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Kt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return H.createElement(wt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:ix(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function mx(e){let o=e.action,t="timing",[r,a]=Tl(o);return H.createElement(Re,{property:Ma,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(jo(o,t,f??t,Ma,n))}})}function px(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Tl(e){return Se({type:"PlanDefinitionAction",value:e},"timing")}var Ba=1;function kl(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ba=Math.max(Ba,o+1))}return e}return"id-"+Ba++}function xx(e){return{...e,action:Bl(e.action)}}function Bl(e){if(e)return e.map(o=>({...o,id:kl(o.id),action:Bl(o.action)}))}import{Anchor as lt,Button as Ox,createStyles as Ex,NativeSelect as Lx,Textarea as Rx,TextInput as ql,Title as Nx}from"@mantine/core";import{globalSchema as Hx,isResource as Vx}from"@medplum/core";import L,{useEffect as Ul,useRef as qx,useState as Zt}from"react";import{Button as Ix,Checkbox as Ll,Group as gx,NativeSelect as hx,Radio as Fl,Stack as Cx,Textarea as yx,TextInput as ft,Title as vx}from"@mantine/core";import{capitalize as Rl,createReference as Sx,deepEquals as Px,getQuestionnaireAnswers as bx,getReferenceString as Nl,getTypedPropertyValue as lo,globalSchema as Dx,stringify as wl}from"@medplum/core";import G,{useEffect as Ol,useState as jt}from"react";var Al=(T=>(T.group="group",T.display="display",T.question="question",T.boolean="boolean",T.decimal="decimal",T.integer="integer",T.date="date",T.dateTime="dateTime",T.time="time",T.string="string",T.text="text",T.url="url",T.choice="choice",T.openChoice="open-choice",T.attachment="attachment",T.reference="reference",T.quantity="quantity",T))(Al||{});function Ml(e){return e.type==="choice"||e.type==="open-choice"}function Hl(e){let o=v(),t=o.getProfile(),[r,a]=jt(),n=X(e.questionnaire),[f,l]=jt(),[s,i]=jt({});Ol(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Ol(()=>{l(n?Bx(n):void 0)},[n]);function u(m){let c={resourceType:"QuestionnaireResponse",item:m};l(c),i(bx(c))}return!r||!n?null:G.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Nl(n),subject:e.subject,source:Sx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&G.createElement(vx,null,n.title),n.item&&G.createElement(Vl,{items:n.item,answers:s,onChange:u}),G.createElement(gx,{position:"right",mt:"xl"},G.createElement(Ix,{type:"submit"},e.submitButtonText??"OK")))}function Vl(e){let[o,t]=jt(Fa(e.items));function r(a,n){let f=o.slice();f[a]=n,t(f),e.onChange(f)}return G.createElement(Cx,null,e.items.map((a,n)=>{if(!wx(a,e.answers))return null;if(a.type==="display")return G.createElement("p",{key:a.linkId},a.text);if(a.type==="group")return G.createElement(_t,{key:a.linkId,item:a,answers:e.answers,onChange:f=>r(n,f)});if(a.type==="boolean"){let f=a.initial&&a.initial.length>0?a.initial[0]:void 0;return G.createElement(Tt,{key:a.linkId,title:a.text,htmlFor:a.linkId},G.createElement(Ll,{id:a.linkId,name:a.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r(n,{linkId:a.linkId,text:a.text,answer:[{valueBoolean:l.currentTarget.checked}]})}))}return G.createElement(Pe,{key:a.linkId,htmlFor:a.linkId,title:a.text??""},G.createElement(_t,{item:a,answers:e.answers,onChange:f=>r(n,f)}))}))}function _t(e){let o=e.item,t=o.type;if(!t)return null;let r=o.linkId;if(!r)return null;let a=o.initial&&o.initial.length>0?o.initial[0]:void 0;function n(l){e.onChange({linkId:o.linkId,text:o.text,item:l})}function f(l){e.onChange({linkId:o.linkId,text:o.text,answer:[l]})}switch(t){case"group":return G.createElement("div",null,G.createElement("h3",null,o.text),o.item&&G.createElement(Vl,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return G.createElement(Ll,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return G.createElement(ft,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return G.createElement(ft,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return G.createElement(ft,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return G.createElement(Be,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return G.createElement(ft,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return G.createElement(ft,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return G.createElement(yx,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return G.createElement(Ct,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return G.createElement(bo,{name:r,defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return G.createElement(be,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return Fx(o)?G.createElement(Tx,{name:r,item:o,initial:a,onChangeAnswer:f}):G.createElement(kx,{name:r,item:o,initial:a,onChangeAnswer:f});default:return null}}function Tx(e){let{name:o,item:t,initial:r}=e,a=lo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=lo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(El(l))}return G.createElement(hx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=lo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Rl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:El(a),data:n})}function El(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function kx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=Dx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=lo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],m=`${o}-option-${i}`,c=lo({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&wl(c)===wl(f)&&(s=m),l.push([m,c])}return G.createElement(Fl.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(m=>m[0]===i);if(u){let m=u[1],c="value"+Rl(m.type);a({[c]:m.value})}}},l.map(([i,u])=>G.createElement(Fl,{key:i,id:i,value:i,label:G.createElement(ce,{property:n,propertyType:u.type,value:u.value})})))}function Bx(e){return{resourceType:"QuestionnaireResponse",questionnaire:Nl(e),item:Fa(e.item)}}function Fa(e){return e?.map(Ax)??[]}function Ax(e){return{linkId:e.linkId,text:e.text,item:Fa(e.item),answer:e.initial?.map(Mx)??[]}}function Mx(e){return{...e}}function Fx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function wx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=lo({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),n=lo({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),f=Px(a,n);if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}var Ux=Ex(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function mF(e){let o=v(),t=X(e.questionnaire),[r,a]=Zt(),[n,f]=Zt(),[l,s]=Zt(),[i,u]=Zt();function m(){u(void 0)}function c(){s(void 0)}return Ul(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Ul(()=>(f(zx(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",m),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",c)}),[t]),!r||!n?null:L.createElement("div",null,L.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},L.createElement(zl,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),L.createElement(Ox,{type:"submit"},"Save")))}function zl(e){let{classes:o,cx:t}=Ux(),r=e.item,a=e.item,n=Vx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=qx();u.current=e.item;function m(d){V(d),e.setSelectedKey(e.item.id)}function c(d){V(d),e.setHoverKey(e.item.id)}function h(d){let M=u.current;e.onChange({...M,item:M.item?.map(y=>y.id===d.id?d:y)})}function D(d){e.onChange({...e.item,item:[...e.item.item??[],d]})}function k(d){e.onChange({...e.item,item:e.item.item?.filter(M=>M!==d)})}function C(d,M){e.onChange({...u.current,[d]:M})}let T=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return L.createElement("div",{"data-testid":a.linkId,className:T,onClick:m,onMouseOver:c},L.createElement("div",{className:o.questionBody},s?L.createElement(L.Fragment,null,n&&L.createElement(ql,{size:"xl",defaultValue:r.title,onChange:d=>C("title",d.currentTarget.value)}),!n&&L.createElement(Rx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:d=>C("text",d.currentTarget.value)}),Ml(a)&&L.createElement(Gx,{options:a.answerOption,onChange:d=>C("answerOption",d)})):L.createElement(L.Fragment,null,r.title&&L.createElement(Nx,null,r.title),a.text&&L.createElement("div",null,a.text),!f&&L.createElement(_t,{item:a,answers:{},onChange:()=>{}}))),a.item?.map(d=>L.createElement("div",{key:d.id},L.createElement(zl,{item:d,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:h,onRemove:()=>k(d)}))),!f&&L.createElement("div",{className:o.topActions},s?L.createElement(L.Fragment,null,L.createElement(ql,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:d=>C("linkId",d.currentTarget.value)}),!f&&L.createElement(Lx,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:d=>C("type",d.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"}]})):L.createElement("div",null,l)),L.createElement("div",{className:o.bottomActions},f&&L.createElement(L.Fragment,null,L.createElement(lt,{href:"#",onClick:d=>{d.preventDefault(),D({id:Oo(),linkId:Gl("q"),type:"string",text:"Question"})}},"Add item"),L.createElement(lt,{href:"#",onClick:d=>{d.preventDefault(),D({id:Oo(),linkId:Gl("g"),type:"group",text:"Group"})}},"Add group")),s&&!n&&L.createElement(lt,{href:"#",onClick:d=>{d.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Gx(e){let o=Hx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return L.createElement("div",null,t.map(r=>{let[a,n]=Se({type:"QuestionnaireItemAnswerOption",value:r},"value");return L.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},L.createElement("div",null,L.createElement(Re,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),L.createElement("div",null,L.createElement(lt,{href:"#",onClick:f=>{V(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),L.createElement(lt,{href:"#",onClick:r=>{V(r),e.onChange([...t,{id:Oo()}])}},"Add choice"))}var wa=1,Oa=1;function Gl(e){return e+wa++}function Oo(){return"id-"+Oa++}function zx(e){return{...e,id:e.id||Oo(),item:Wl(e.item)}}function Wl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Oa=Math.max(Oa,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(wa=Math.max(wa,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||Oo(),item:Wl(o.item),answerOption:Wx(o.answerOption)}))}function Wx(e){if(e)return e.map(o=>({...o,id:o.id||Oo()}))}import{ActionIcon as Yt,Button as Xx,createStyles as Qx,Divider as Jx,Group as st,NativeSelect as Xl,Stack as er,Text as $x,TextInput as Kx}from"@mantine/core";import{formatRange as Ql,getCodeBySystem as jx}from"@medplum/core";import z,{useEffect as _x,useState as Ea}from"react";var Zx=Qx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),Yx=["gender","age","gestationalAge","context","appliesTo"],eI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function PF(e){e=Object.assign(eI,e);let o=e.definition,[t,r]=Ea([]),[a,n]=Ea(1),[f,l]=Ea(1);return _x(()=>{let D=rI(o,l);r(aI(D.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(er,null,t.map(D=>z.createElement(oI,{unit:fI(o.quantitativeDetails?.unit),onChange:m,onAdd:c,onRemove:h,onRemoveGroup:u,key:`group-${D.id}`,intervalGroup:D}))),z.createElement(Yt,{title:"Add Group",size:"sm",onClick:D=>{V(D),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},z.createElement(io,null)),z.createElement(st,{position:"right"},z.createElement(Xx,{type:"submit"},"Save")));function s(){let D=t.flatMap(k=>k.intervals).filter(k=>!lI(k));e.onSubmit({...o,qualifiedInterval:D})}function i(D){r(k=>[...k,D])}function u(D){r(k=>k.filter(C=>C.id!==D.id))}function m(D,k){r(C=>{C=[...C];let T=C.find(M=>M.id===D),d=T?.intervals.findIndex(M=>M.id===k.id);return d!==void 0&&T?.intervals[d]&&(T.intervals[d]=k),C})}function c(D,k){k.id===void 0&&(k.id=`id-${f}`,l(C=>C+1)),r(C=>{C=[...C];let T=C.findIndex(d=>d.id===D);if(T!==-1){let d={...C[T]};k={...k,...d.filters},d.intervals=[...d.intervals,k],C[T]=d}return C})}function h(D,k){r(C=>{C=[...C];let T=C.find(d=>d.id===D);return T&&(T.intervals=T.intervals.filter(d=>d.id!==k.id)),C})}}function oI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=Zx();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(er,{spacing:"lg"},z.createElement(st,{position:"right"},z.createElement(Yt,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{V(a),e.onRemoveGroup(o)}},z.createElement(Ue,null))),z.createElement(tI,{intervalGroup:o,onChange:e.onChange}),z.createElement(Jx,null),o.intervals.map(a=>z.createElement(er,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(st,null,z.createElement(Kx,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{V(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(Yt,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{V(n),e.onRemove(o.id,a)}},z.createElement(Ue,null))),z.createElement(Zo,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(Yt,{title:"Add Interval",size:"sm",onClick:a=>{V(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(io,null))))}function tI(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(er,{style:{maxWidth:"50%"}},z.createElement(st,null,z.createElement(Xl,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(st,{spacing:"xs"},z.createElement($x,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(Zo,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Xl,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}))}function rI(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function aI(e,o){let t=1,r={};for(let a of e){let n=nI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(Yx.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function nI(e){return[`gender=${e.gender}`,`age=${Ql(e.age)}`,`gestationalAge=${Ql(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`].join(":")}function fI(e){return e&&(jx(e,"http://unitsofmeasure.org")||e.text)}function lI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Jl,Grid as or,Text as sI}from"@mantine/core";import{formatDateTime as iI,getReferenceString as uI}from"@medplum/core";import xe,{useEffect as dI,useState as $l}from"react";function OF(e){let o=v(),t=X(e.value),[r,a]=$l(!1),[n,f]=$l();if(dI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(or,null,t.action?.map((i,u)=>{let m=i.resource&&s(i.resource),c=m?.input?.[0]?.valueReference,h=m?.output?.[0]?.valueReference;return xe.createElement(xe.Fragment,{key:`action-${u}`},xe.createElement(or.Col,{span:1,p:"md"},m?.status==="completed"?xe.createElement(hr,null):xe.createElement(Rr,{color:"gray"})),xe.createElement(or.Col,{span:9,p:"xs"},xe.createElement(sI,{weight:500},i.title),i.description&&xe.createElement("div",null,i.description),xe.createElement("div",null,"Last edited by\xA0",xe.createElement(Oe,{value:m?.meta?.author}),"\xA0on\xA0",iI(m?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Lt,{status:m?.status||"unknown"}))),xe.createElement(or.Col,{span:2,p:"md"},c&&!h&&xe.createElement(Jl,{onClick:()=>e.onStart(m,c)},"Start"),c&&h&&xe.createElement(Jl,{onClick:()=>e.onEdit(m,c,h)},"Edit")))}));function l(i){let u=[];if(i.action)for(let m of i.action)m.resource?.reference&&u.push({request:{method:"GET",url:m.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===uI(u.resource))return u.resource}}import{createStyles as hI}from"@mantine/core";import ve,{useEffect as CI,useState as yI}from"react";import{stringify as xI}from"@medplum/core";function tr(e,o){let t=cI(e,o);return mI(t,e,o)}function cI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,m=u+1,c=u-1,h=l[m],D=l[c],k,C=0;i===-s||i!==s&&D.i<h.i?(C=h.i,k=h):(C=D.i+1,k=D),l[c]=void 0;let T=C-i,d={i:C,j:T,prev:pI(k),snake:!1};for(;C<t&&T<r&&e[C]===o[T];)C++,T++;if(C>d.i&&(d={i:C,j:T,prev:d,snake:!0}),l[u]=d,C>=t&&T>=r)return l[u]}l[f+s-1]=void 0}}function mI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},m;i.lines.length===0&&u.lines.length>0?m="insert":i.lines.length>0&&u.lines.length===0?m="delete":m="change",r.push({original:i,revised:u,type:m}),a.snake&&(a=a.prev)}return r}function pI(e){return e&&!e.snake&&e.prev?e.prev:e}function Kl(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:xI(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return II(t,o),gI(t),t}function II(e,o){for(let t=1;t<o.length;t++){let r=tr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function gI(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var vI=hI(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function XF(e){let{classes:o}=vI(),t=v(),[r,a]=yI(e.history);if(CI(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ve.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource,f=Kl(r);return ve.createElement("div",{className:o.container},ve.createElement("table",{className:o.root},ve.createElement("tbody",null,f.map((l,s)=>ve.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&ve.createElement(ve.Fragment,null,ve.createElement("td",{className:o.author,rowSpan:l.span},ve.createElement(Qe,{value:l.meta.author,link:!0})),ve.createElement("td",{className:o.dateTime,rowSpan:l.span},ve.createElement(ne,{to:SI(n,l.meta.versionId)},PI(l.meta.lastUpdated)))),ve.createElement("td",{className:o.lineNumber},s+1),ve.createElement("td",{className:o.line},ve.createElement("pre",{className:o.pre},l.value)))))))}function SI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function PI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Eo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Eo(r,"month");let a=Math.floor(o/86400);if(a>0)return Eo(a,"day");let n=Math.floor(o/3600);if(n>0)return Eo(n,"hour");let f=Math.floor(o/60);return f>0?Eo(f,"minute"):Eo(o,"second")}function Eo(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as bI}from"@mantine/core";import{stringify as jl}from"@medplum/core";import je from"react";var DI=bI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function ZF(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=jl(o,!0).match(/[^\r\n]+/g),a=jl(t,!0).match(/[^\r\n]+/g),n=tr(r,a);return je.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>je.createElement(TI,{key:"delta"+l,delta:f})))}function TI(e){let{classes:o}=DI();return je.createElement(je.Fragment,null,"...",je.createElement("br",null),e.delta.original.lines.length>0&&je.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
- `)),e.delta.revised.lines.length>0&&je.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
- `)),"...",je.createElement("br",null))}import{Table as kI}from"@mantine/core";import{formatDateTime as BI,normalizeErrorString as AI}from"@medplum/core";import ie,{useEffect as MI,useState as FI}from"react";function fw(e){let o=v(),[t,r]=FI(e.history);return MI(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ie.createElement(kI,{withBorder:!0,withColumnBorders:!0},ie.createElement("thead",null,ie.createElement("tr",null,ie.createElement("th",null,"Author"),ie.createElement("th",null,"Date"),ie.createElement("th",null,"Version"))),ie.createElement("tbody",null,t.entry?.map((a,n)=>ie.createElement(wI,{key:"entry-"+n,entry:a})))):ie.createElement("div",null,"Loading...")}function wI(e){let{response:o,resource:t}=e.entry;return t?ie.createElement("tr",null,ie.createElement("td",null,ie.createElement(Qe,{value:t.meta?.author,link:!0})),ie.createElement("td",null,BI(t.meta?.lastUpdated)),ie.createElement("td",null,ie.createElement(ne,{to:OI(t)},t.meta?.versionId))):ie.createElement("tr",null,ie.createElement("td",{colSpan:3},AI(o?.outcome)))}function OI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as EI,createStyles as LI,Stack as RI,Text as NI}from"@mantine/core";import{getReferenceString as HI}from"@medplum/core";import Z,{useEffect as VI,useRef as qI,useState as it}from"react";var UI=LI(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function gw(e){let{classes:o}=UI(),t=v(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=it(),l=qI();l.current=n;let[s,i]=it(na()),[u,m]=it(),[c,h]=it(),[D,k]=it();if(VI(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",HI(r)],["start","gt"+GI(s)],["start","lt"+zI(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let C=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},C&&Z.createElement(Ce,{value:C,size:"xl"}),C&&Z.createElement(NI,{size:"xl",weight:500},Z.createElement(Oe,{value:C})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),c&&Z.createElement("p",null,_l(new Date(c.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(vf,{slots:n,onChangeMonth:i,onClick:m})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(RI,null,n.map(T=>{let d=new Date(T.start);return d.getTime()>u.getTime()&&d.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:T.id},Z.createElement(EI,{variant:"outline",style:{width:150},onClick:()=>h(T)},_l(d)))}))),u&&c&&!D&&Z.createElement(Hl,{questionnaire:a,submitButtonText:"Next",onSubmit:k}),u&&c&&D&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function GI(e){return Zl(e.getTime())}function zI(e){return Zl(e.getTime()+31*24*60*60*1e3)}function Zl(e){return new Date(Math.max(Date.now(),e)).toISOString()}function _l(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as rr}from"@medplum/core";import WI from"react";function bw(e){return WI.createElement($e,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[rr(o)],subject:o.subject,sender:rr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[rr(o)],subject:o.subject,operator:rr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as dg}from"@medplum/core";import ir,{useEffect as cg,useState as fs}from"react";import{Anchor as Yl,Button as XI,Center as QI,Group as JI,Stack as $I,Text as KI,TextInput as jI,Title as _I}from"@mantine/core";import{normalizeOperationOutcome as ZI}from"@medplum/core";import Ae,{useState as YI}from"react";function ar(e){let o=v(),[t,r]=YI();return Ae.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(ZI(n))}}},Ae.createElement(QI,{sx:{flexDirection:"column"}},Ae.createElement(Ke,{size:32}),Ae.createElement(_I,null,"Create project")),Ae.createElement($I,{spacing:"xl"},Ae.createElement(jI,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Ae.createElement(KI,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(Yl,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(Yl,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(JI,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(XI,{type:"submit"},"Create project")))}import{Anchor as sr,Button as rg,Center as ag,Checkbox as ng,Divider as fg,Group as ts,PasswordInput as lg,Stack as sg,Text as rs,TextInput as Ra}from"@mantine/core";import{normalizeOperationOutcome as as}from"@medplum/core";import j,{useEffect as ig,useState as ug}from"react";import eg,{useEffect as og,useRef as tg,useState as La}from"react";function nr(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function fr(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=tg(null),[n,f]=La(typeof google<"u"),[l,s]=La(!1),[i,u]=La(!1);return og(()=>{if(typeof google>"u"){nr("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?eg.createElement("div",{ref:a}):null}function lr(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function es(e){typeof grecaptcha>"u"&&nr("https://www.google.com/recaptcha/api.js?render="+e)}function os(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function ns(e){let o=lr(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=ug(),f=kt(a,void 0);return ig(()=>{t&&es(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await os(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(as(s))}}},j.createElement(ag,{sx:{flexDirection:"column"}},e.children),j.createElement(wo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ts,{position:"center",p:"xl",style:{height:70}},j.createElement(fr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(as(s))}}})),j.createElement(fg,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(sg,{spacing:"xl"},j.createElement(Ra,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),j.createElement(Ra,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),j.createElement(Ra,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),j.createElement(lg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(rs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(sr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(sr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(rs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(sr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(sr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ts,{position:"apart",mt:"xl",noWrap:!0},j.createElement(ng,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(rg,{type:"submit"},"Create account")))}function lO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=v(),[s,i]=fs(void 0),[u,m]=fs();cg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(h=>l.processCode(h.code)).then(()=>f()).catch(h=>m(dg(h)))},[l,o,t,s,f]);function c(h){h.code?l.processCode(h.code).then(()=>f()).catch(console.log):h.login&&i(h.login)}return ir.createElement(Ht,{width:450},u&&ir.createElement("pre",null,JSON.stringify(u,null,2)),!s&&ir.createElement(ns,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&ir.createElement(ar,{login:s,handleAuthResponse:c}))}import{showNotification as hs}from"@mantine/notifications";import{normalizeErrorString as Cs}from"@medplum/core";import so,{useCallback as Ha,useEffect as Gg,useState as Va}from"react";import{Anchor as ls,Button as ss,Center as is,Checkbox as mg,Divider as pg,Group as Na,PasswordInput as xg,Stack as Ig,TextInput as gg}from"@mantine/core";import{normalizeOperationOutcome as hg}from"@medplum/core";import K,{useCallback as ur,useState as us}from"react";function ds(e){let[o,t]=us();return o?K.createElement(yg,{email:o,...e}):K.createElement(Cg,{setEmail:t,...e})}function Cg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=v(),s=!e.disableGoogleAuth&&lr(e.googleClientId),i=ur(async c=>{if(!c.authorizeUrl)return!1;let h=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),D=new URL(c.authorizeUrl);return D.searchParams.set("state",h),window.location.assign(D.toString()),!0},[l,f]),u=ur(async c=>{let h=await l.post("auth/method",{email:c.email});await i(h)||o(c.email)},[l,i,o]),m=ur(async c=>{let h=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(h)||r(h)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(is,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Na,{position:"center",p:"xl",style:{height:70}},K.createElement(fr,{googleClientId:s,handleGoogleCredential:m})),!n&&K.createElement(pg,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(gg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Na,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(ls,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(ss,{type:"submit"},"Next")))}function yg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,l]=us(),s=kt(f,void 0),i=ur(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(m=>l(hg(m)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(is,{sx:{flexDirection:"column"}},r),K.createElement(wo,{issues:s}),K.createElement(Ig,{spacing:"xl"},K.createElement(xg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(Na,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(ls,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(mg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ss,{type:"submit"},"Sign in")))}import{Avatar as vg,Center as Sg,Group as Pg,Stack as bg,Text as cs,Title as Dg,UnstyledButton as Tg}from"@mantine/core";import{normalizeOperationOutcome as kg}from"@medplum/core";import Me,{useState as Bg}from"react";function ms(e){let o=v(),[t,r]=Bg();return Me.createElement(bg,null,Me.createElement(Sg,{sx:{flexDirection:"column"}},Me.createElement(Ke,{size:32}),Me.createElement(Dg,{order:3},"Choose profile")),Me.createElement(wo,{outcome:t}),e.memberships.map(a=>Me.createElement(Tg,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(kg(n)))}},Me.createElement(Pg,null,Me.createElement(vg,{radius:"xl"}),Me.createElement("div",{style:{flex:1}},Me.createElement(cs,{size:"sm",weight:500},a.profile?.display),Me.createElement(cs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Ag,Center as Mg,Checkbox as Fg,Group as wg,Stack as ps,Title as Og}from"@mantine/core";import He from"react";function xs(e){let o=v();return He.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},He.createElement(ps,null,He.createElement(Mg,{sx:{flexDirection:"column"}},He.createElement(Ke,{size:32}),He.createElement(Og,null,"Choose scope")),He.createElement(ps,null,(e.scope??"openid").split(" ").map(t=>He.createElement(Fg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),He.createElement(wg,{position:"right",mt:"xl"},He.createElement(Ag,{type:"submit"},"Set scope"))))}import{Alert as Eg,Button as Lg,Center as Rg,Group as Ng,Stack as Is,TextInput as Hg,Title as Vg}from"@mantine/core";import{normalizeErrorString as qg}from"@medplum/core";import Fe,{useState as Ug}from"react";function gs(e){let o=v(),[t,r]=Ug(void 0);return Fe.createElement(J,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(qg(n)))}},Fe.createElement(Is,null,Fe.createElement(Rg,{sx:{flexDirection:"column"}},Fe.createElement(Ke,{size:32}),Fe.createElement(Vg,null,"Enter MFA code")),t&&Fe.createElement(Eg,{icon:Fe.createElement(Ye,{size:16}),title:"Error",color:"red"},t),Fe.createElement(Is,null,Fe.createElement(Hg,{name:"token",label:"MFA code",required:!0})),Fe.createElement(Ng,{position:"right",mt:"xl"},Fe.createElement(Lg,{type:"submit"},"Submit code"))))}function r0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=v(),[i,u]=Va(void 0),[m,c]=Va(!1),[h,D]=Va(void 0),k=Ha(d=>{f?f(d):s.processCode(d).then(()=>{r&&r()}).catch(M=>hs({color:"red",message:Cs(M)}))},[s,f,r]),C=Ha(d=>{c(!!d.mfaRequired),d.login&&u(d.login),d.memberships&&D(d.memberships),d.code&&(t?D(void 0):k(d.code))},[t,k]),T=Ha(d=>{k(d.code)},[k]);return Gg(()=>{o&&!i&&s.get("auth/login/"+o).then(C).catch(d=>hs({color:"red",message:Cs(d)}))},[s,o,i,C]),so.createElement(Ht,{width:450},(()=>i?m?so.createElement(gs,{login:i,handleAuthResponse:C}):h?so.createElement(ms,{login:i,memberships:h,handleAuthResponse:C}):e.projectId==="new"?so.createElement(ar,{login:i,handleAuthResponse:C}):e.chooseScopes?so.createElement(xs,{login:i,scope:e.scope,handleAuthResponse:T}):so.createElement("div",null,"Success"):so.createElement(ds,{onForgotPassword:a,onRegister:n,handleAuthResponse:C,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Ua as AddressDisplay,Xa as AddressInput,$a as AnnotationInput,vS as AppShell,ho as AsyncAutocomplete,bn as AttachmentArrayDisplay,Tn as AttachmentArrayInput,yo as AttachmentButton,we as AttachmentDisplay,Ct as AttachmentInput,$o as BackboneElementDisplay,_o as BackboneElementInput,vf as CalendarInput,Tt as CheckboxFormSection,ht as CodeInput,So as CodeableConceptDisplay,Qn as CodeableConceptInput,wn as CodingDisplay,Jn as CodingInput,En as ContactDetailDisplay,Kn as ContactDetailInput,vt as ContactPointDisplay,At as ContactPointInput,Xe as Container,Be as DateTimeInput,fB as DefaultResourceTimeline,Bn as DescriptionList,An as DescriptionListEntry,ia as DiagnosticReportDisplay,Ht as Document,Cc as ElementDefinitionInputSelector,hf as ElementDefinitionTypeInput,hB as EncounterTimeline,po as ErrorBoundary,ox as FhirPathTable,J as Form,Pe as FormSection,hn as Header,xt as HumanNameDisplay,Zn as HumanNameInput,Ln as IdentifierDisplay,ef as IdentifierInput,Ur as Loading,Ke as Logo,ne as MedplumLink,_g as MedplumProvider,rM as MemoizedFhirPathTable,QA as MemoizedSearchControl,Nn as MoneyDisplay,of as MoneyInput,Pn as Navbar,rm as ObservationTable,wo as OperationOutcomeAlert,To as Panel,IM as PatientTimeline,OM as PlanDefinitionBuilder,Jo as QuantityDisplay,be as QuantityInput,mF as QuestionnaireBuilder,Hl as QuestionnaireForm,_t as QuestionnaireFormItem,Al as QuestionnaireItemType,St as RangeDisplay,Zo as RangeInput,oo as ReferenceDisplay,bo as ReferenceInput,PF as ReferenceRangeEditor,oI as ReferenceRangeGroupEditor,lO as RegisterForm,OF as RequestGroupDisplay,Un as ResourceArrayDisplay,cf as ResourceArrayInput,Ce as ResourceAvatar,Qe as ResourceBadge,XF as ResourceBlame,ZF as ResourceDiff,Cb as ResourceForm,fw as ResourceHistoryTable,wt as ResourceInput,Oe as ResourceName,ce as ResourcePropertyDisplay,Re as ResourcePropertyInput,ua as ResourceTable,$e as ResourceTimeline,gw as Scheduler,ba as SearchChangeEvent,no as SearchClickEvent,Xp as SearchControl,fl as SearchFieldEditor,cl as SearchFilterEditor,Da as SearchLoadEvent,bw as ServiceRequestTimeline,r0 as SignInForm,Lt as StatusBadge,Of as Timeline,Je as TimelineItem,gf as TimingInput,Ia as addDateFilterBetween,LB as addField,Ao as addFilter,jf as addLastMonthFilter,ga as addMissingFilter,Zf as addNextMonthFilter,_f as addThisMonthFilter,$f as addTodayFilter,Kf as addTomorrowFilter,Yf as addYearToDateFilter,Jf as addYesterdayFilter,ye as buildFieldNameString,EB as clearFilters,Ut as clearFiltersOnField,xd as convertIsoToLocal,Id as convertLocalToIso,nr as createScriptTag,Qf as deleteFilter,me as getErrorsForInput,kt as getIssuesForExpression,Bc as getMonthString,ot as getOpString,os as getRecaptcha,rl as getSearchOperators,ol as getSortField,na as getStartMonth,PI as getTimeString,Se as getValueAndType,es as initRecaptcha,Ml as isChoiceQuestion,wx as isQuestionEnabled,tl as isSortDescending,Cn as parseForm,al as renderValue,et as setFilters,rp as setOffset,el as setPage,jo as setPropertyValue,ha as setSort,Rf as sortByDateAndPriority,RB as toggleSort,v as useMedplum,Vo as useMedplumContext,qe as useMedplumNavigate,dt as useMedplumProfile,X as useResource};
64
+ }`.replace(/\s+/g," ")}function Mi(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),Oi(wi(t),o).slice(0,5)}function wi(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function Oi(e,o){return e.sort((t,r)=>In(r,o)-In(t,o))}function In(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,gn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,gn(Si(r),o));return t}function gn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var qi=Li(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function Sn(e){let o=Uo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=qi(),[s,i]=Vi(!1);return U.createElement(Ri,{height:60,p:8,style:{zIndex:101}},U.createElement(Ct,{position:"apart"},U.createElement(Ct,{spacing:"xs"},U.createElement(yn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),U.createElement(Cn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(Le,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},U.createElement(Le.Target,null,U.createElement(yn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},U.createElement(Ct,{spacing:7},U.createElement(Ce,{value:r,radius:"xl",size:24}),U.createElement($o,{size:"sm",className:f.userName},Hi(r?.name?.[0])),U.createElement(Cr,{size:12,stroke:1.5})))),U.createElement(Le.Dropdown,null,U.createElement(Ni,{align:"center",p:"xl"},U.createElement(Ce,{size:"xl",radius:100,value:o.profile}),U.createElement(gt,{value:o.profile?.name?.[0]}),U.createElement($o,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(Le.Divider,null),n.map(u=>u.profile.reference!==vn(o.profile)&&U.createElement(Le.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(Ct,null,U.createElement(Ei,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement($o,{size:"sm",weight:500},u.profile.display),U.createElement($o,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(Le.Divider,null),U.createElement(Le.Item,{icon:U.createElement(Nr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(Le.Item,{icon:U.createElement(Io,{size:14,stroke:1.5}),onClick:()=>a(`/${vn(r)}`)},"Account settings"),U.createElement(Le.Item,{icon:U.createElement(Ar,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement($o,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as su,createStyles as iu,Navbar as Wr,ScrollArea as uu,Space as du,Text as cu}from"@mantine/core";import re,{useState as mu}from"react";import{Button as Wi,Group as Qi,Modal as Xi,NativeSelect as Ji,Stack as $i,TextInput as Ki}from"@mantine/core";import{showNotification as bn}from"@mantine/notifications";import{deepClone as ji,normalizeErrorString as _i}from"@medplum/core";import We from"react";import zi from"react";function Pn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Gi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Ui(o,t);return o}function Gi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Ui(e,o){e[o.name]=o.value}function J(e){return zi.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Pn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Dn(e){let o=S(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=ji(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),bn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{bn({color:"red",message:_i(u)})})}return We.createElement(Xi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},We.createElement(J,{onSubmit:r},We.createElement($i,null,We.createElement(Zi,{config:t}),We.createElement(Ki,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),We.createElement(Qi,{position:"right"},We.createElement(Wi,{mt:"sm",type:"submit"},"OK")))))}function Zi(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return We.createElement(Ji,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import au,{useState as nu}from"react";import Yi,{useCallback as eu}from"react";function zr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function ou(e){return typeof e.display=="string"?e.display:zr(e)}function tu(e){return{value:zr(e),label:ou(e),resource:e}}function ru(e){return{code:e,display:e}}function So(e){let o=S(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=eu(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let y of d)y.code&&!c.some(b=>b.code===y.code)&&c.push(y);return c},[o,t]);return Yi.createElement(vo,{...n,creatable:r??!0,clearable:a??!0,toKey:zr,toOption:tu,loadOptions:f,onCreate:ru,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function yt(e){let[o,t]=nu(e.defaultValue);function r(a){let n=a[0],f=lu(n);t(f),e.onChange&&e.onChange(f)}return au.createElement(So,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:fu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function fu(e){return e?{code:e}:void 0}function lu(e){return e?.code}var Tn=iu(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function kn(e){let{classes:o}=Tn(),t=Ge(),r=Iu(e.pathname,e.searchParams,e.menus),[a,n]=mu(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return re.createElement(re.Fragment,null,re.createElement(Wr,{width:{sm:250},p:"xs"},re.createElement(uu,null,re.createElement(Wr.Section,{mb:"sm"},re.createElement(yt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(Wr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(cu,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(pu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(xu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(su,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Or,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(Dn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function pu(e){let{classes:o,cx:t}=Tn();return re.createElement(ne,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function xu(e){return e.icon?e.icon:re.createElement(du,{w:30})}function Iu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=gu(e,o,f.href);l>a&&(a=l,r=f)}return r}function gu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function NS(e){let o=Cu(),[t,r]=vu(localStorage.navbarOpen==="true"),a=S(),n=mt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?to.createElement(Gr,null):to.createElement(hu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&to.createElement(Sn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?to.createElement(kn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},to.createElement(go,{key:`${e.pathname}?${e.searchParams?.toString()}`},to.createElement(yu,{fallback:to.createElement(Gr,null)},e.children)))}import Qr from"react";import{Anchor as Su}from"@mantine/core";import Qe from"react";function we(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?Qe.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&Qe.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&Qe.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},Qe.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&Qe.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},Qe.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),Qe.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},Qe.createElement(Su,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Bn(e){return Qr.createElement("div",null,e.values?.map((o,t)=>Qr.createElement("div",{key:"attatchment-"+t},Qr.createElement(we,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as An}from"@mantine/core";import fe,{useRef as bu,useState as Du}from"react";import Xr,{useRef as Pu}from"react";function Po(e){let o=S(),t=Pu(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Xr.createElement(Xr.Fragment,null,Xr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Fn(e){let[o,t]=Du(e.defaultValue??[]),r=bu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return fe.createElement("table",{style:{width:"100%"}},fe.createElement("colgroup",null,fe.createElement("col",{width:"97%"}),fe.createElement("col",{width:"3%"})),fe.createElement("tbody",null,o.map((n,f)=>fe.createElement("tr",{key:`${f}-${o.length}`},fe.createElement("td",null,fe.createElement(we,{value:n,maxWidth:200})),fe.createElement("td",null,fe.createElement(An,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},fe.createElement(Ue,null))))),fe.createElement("tr",null,fe.createElement("td",null),fe.createElement("td",null,fe.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>fe.createElement(An,{...n,title:"Add",size:"sm",color:"green"},fe.createElement(Wo,{size:16})))))))}import{Button as Mn}from"@mantine/core";import bo,{useState as Tu}from"react";function vt(e){let[o,t]=Tu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?bo.createElement(bo.Fragment,null,bo.createElement(we,{value:o,maxWidth:200}),bo.createElement(Mn,{onClick:a=>{H(a),r(void 0)}},"Remove")):bo.createElement(Po,{onUpload:r},a=>bo.createElement(Mn,{...a},"Upload..."))}import{getPropertyDisplayName as Qu,globalSchema as Xu}from"@medplum/core";import Zo from"react";var St=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as ku}from"@mantine/core";import Ko from"react";var Bu=ku(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function wn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Bu();return Ko.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function On(e){return Ko.createElement(Ko.Fragment,null,Ko.createElement("dt",null,e.term),Ko.createElement("dd",null,e.children))}import{formatDateTime as Ru,formatPeriod as Nu,formatTiming as Hu,getElementDefinitionTypeName as Vu,getTypedPropertyValue as qu,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as Au}from"@medplum/core";import En from"react";function Do(e){return En.createElement(En.Fragment,null,Au(e.value))}import{formatCoding as Fu}from"@medplum/core";import Ln from"react";function Rn(e){return Ln.createElement(Ln.Fragment,null,Fu(e.value))}import Jr from"react";import Nn from"react";function Pt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Nn.createElement(Nn.Fragment,null,t.join("").trim())}function Hn(e){let o=e.value;return o?Jr.createElement(Jr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Jr.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Mu from"react";function Vn(e){return Mu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as wu}from"@medplum/core";import qn from"react";function Gn(e){return qn.createElement(qn.Fragment,null,wu(e.value))}import{formatQuantity as Ou}from"@medplum/core";import Un from"react";function jo(e){return Un.createElement(Un.Fragment,null,Ou(e.value))}import{formatRange as Eu}from"@medplum/core";import zn from"react";function bt(e){return zn.createElement(zn.Fragment,null,Eu(e.value))}import Dt from"react";function Wn(e){let o=e.value;return o?Dt.createElement(Dt.Fragment,null,Dt.createElement(jo,{value:o.numerator}),"\xA0/\xA0",Dt.createElement(jo,{value:o.denominator})):null}import{stringify as Lu}from"@medplum/core";import $r from"react";function ro(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Lu(e.value);return e.link!==!1&&e.value.reference?$r.createElement(ne,{to:e.value},o):$r.createElement($r.Fragment,null,o)}import Tt from"react";function Qn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Tt.createElement(Tt.Fragment,null,t.map((a,n)=>Tt.createElement("div",{key:`${n}-${t.length}`},Tt.createElement(ce,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}import{ActionIcon as Gu,Box as Uu,CopyButton as zu,Tooltip as Wu}from"@mantine/core";function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(Uu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(zu,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(Wu,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Gu,{color:n?"teal":"gray",onClick:f},n?E.createElement(zo,{size:"1rem"}):E.createElement(vr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?E.createElement(Bn,{values:r,maxWidth:e.maxWidth}):E.createElement(Qn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(ro,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,Ru(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(Qa,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(we,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(Do,{value:r});case V.Coding:return E.createElement(Rn,{value:r});case V.ContactDetail:return E.createElement(Hn,{value:r});case V.ContactPoint:return E.createElement(Pt,{value:r});case V.HumanName:return E.createElement(gt,{value:r});case V.Identifier:return E.createElement(Vn,{value:r});case V.Money:return E.createElement(Gn,{value:r});case V.Period:return E.createElement(E.Fragment,null,Nu(r));case V.Quantity:case V.Duration:return E.createElement(jo,{value:r});case V.Range:return E.createElement(bt,{value:r});case V.Ratio:return E.createElement(Wn,{value:r});case V.Reference:return E.createElement(ro,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,Hu(r));case V.Dosage:case V.UsageContext:return E.createElement(_o,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return E.createElement(_o,{value:{type:Vu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Se(e,o){let t=qu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function _o(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Xu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Zo.createElement("div",null,t.name):Zo.createElement(wn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(St.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Se(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Zo.createElement(On,{key:f,term:Qu(f)},Zo.createElement(ce,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Zo.createElement("div",null,r,"\xA0not implemented")}import{Stack as Tc}from"@mantine/core";import{getPropertyDisplayName as Pf,globalSchema as kc}from"@medplum/core";import Bo,{useState as Bc}from"react";import{Group as Ju,Input as $u}from"@mantine/core";import kt from"react";function Bt(e){return kt.createElement(Ju,{noWrap:!0},kt.createElement("div",null,e.children),kt.createElement("div",null,kt.createElement($u.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ku}from"@mantine/core";import ju from"react";function me(e,o){return e?.issue?.filter(t=>Xn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function At(e,o){return e?.issue?.filter(t=>Xn(t.expression?.[0],o))}function Xn(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Pe(e){return ju.createElement(Ku.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{Button as Jn,Group as _u,Stack as Zu,TextInput as $n}from"@mantine/core";import{capitalize as Yu,deepClone as ed}from"@medplum/core";import ke,{useEffect as od,useState as Kn}from"react";function Lb(e){let o=S(),t=Q(e.defaultValue),[r,a]=Kn(),[n,f]=Kn();return od(()=>{t&&(f(ed(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?ke.createElement("div",null,"Loading..."):ke.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},ke.createElement(Zu,{mb:"xl"},ke.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},ke.createElement($n,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),ke.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},ke.createElement($n,{name:"id",defaultValue:n.id,disabled:!0}))),ke.createElement(et,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),ke.createElement(_u,{position:"right",mt:"xl"},ke.createElement(Jn,{type:"submit"},"OK"),e.onDelete&&ke.createElement(Jn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function Yo(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",Yu(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as gc,Group as hc,NativeSelect as Cc,Textarea as yc,TextInput as ra}from"@mantine/core";import{capitalize as vc,getElementDefinitionTypeName as Sc,PropertyType as L}from"@medplum/core";import G,{useState as Pc}from"react";import td,{useState as rd}from"react";function jn(e){let[o,t]=rd(e.defaultValue);function r(a){let n=nd(a);t(n),e.onChange&&e.onChange(n)}return td.createElement(So,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&ad(o),maxSelectedValues:1,onChange:r})}function ad(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function nd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import fd,{useState as ld}from"react";function _n(e){let[o,t]=ld(e.defaultValue);function r(a){let n=a[0],f=n&&id(n);t(f),e.onChange&&e.onChange(f)}return fd.createElement(So,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&sd(o),maxSelectedValues:1,onChange:r})}function sd(e){return{system:e.system,code:e.code,display:e.display}}function id(e){return{system:e.system,code:e.code,display:e.display}}import{Group as pd,TextInput as xd}from"@mantine/core";import Kr,{useRef as Id,useState as gd}from"react";import{Group as ud,NativeSelect as Zn,TextInput as dd}from"@mantine/core";import Ft,{useRef as cd,useState as md}from"react";function Mt(e){let[o,t]=md(e.defaultValue),r=cd();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return Ft.createElement(ud,{spacing:"xs",grow:!0,noWrap:!0},Ft.createElement(Zn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ft.createElement(Zn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ft.createElement(dd,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Yn(e){let[o,t]=gd(e.defaultValue),r=Id();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return Kr.createElement(pd,{spacing:"xs",grow:!0,noWrap:!0},Kr.createElement(xd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),Kr.createElement(Mt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as hd}from"@mantine/core";import{isValidDate as ef}from"@medplum/core";import Cd from"react";function Be(e){return Cd.createElement(hd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Sd(),defaultValue:yd(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(vd(t))}}})}function yd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function vd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toISOString():""}function Sd(){return"datetime-local"}import{JsonInput as Pd}from"@mantine/core";import{stringify as bd}from"@medplum/core";import Dd from"react";function of(e){return Dd.createElement(Pd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:bd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Td,NativeSelect as kd,TextInput as wt}from"@mantine/core";import To,{useRef as Bd,useState as Ad}from"react";function tf(e){let[o,t]=Ad(e.defaultValue),r=Bd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return To.createElement(Td,{spacing:"xs",grow:!0,noWrap:!0},To.createElement(kd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),To.createElement(wt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),To.createElement(wt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),To.createElement(wt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),To.createElement(wt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Fd,TextInput as rf}from"@mantine/core";import jr,{useState as Md}from"react";function af(e){let[o,t]=Md(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return jr.createElement(Fd,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(rf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),jr.createElement(rf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as wd,TextInput as Od}from"@mantine/core";import _r,{useCallback as Zr,useState as Ed}from"react";var Ld=["USD","EUR","CAD","GBP","AUD"];function nf(e){let{onChange:o}=e,[t,r]=Ed(e.defaultValue),a=Zr(s=>{r(s),o&&o(s)},[o]),n=Zr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Zr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=_r.createElement(wd,{defaultValue:t?.currency,data:Ld,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return _r.createElement(Od,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:_r.createElement(Sr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Rd}from"@mantine/core";import Yr,{useState as Nd}from"react";function ff(e){let[o,t]=Nd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Yr.createElement(Rd,{spacing:"xs",grow:!0,noWrap:!0},Yr.createElement(Be,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Yr.createElement(Be,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Hd,NativeSelect as Vd,TextInput as lf}from"@mantine/core";import Ot,{useState as qd}from"react";function be(e){let[o,t]=qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ot.createElement(Hd,{spacing:"xs",grow:!0,noWrap:!0},Ot.createElement(Vd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Ot.createElement(lf,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Gd(a.currentTarget.value)})}}),Ot.createElement(lf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Gd(e){if(e)return parseFloat(e)}import{Group as Ud}from"@mantine/core";import ea,{useState as zd}from"react";function ot(e){let[o,t]=zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ea.createElement(Ud,{spacing:"xs",grow:!0,noWrap:!0},ea.createElement(be,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ea.createElement(be,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Wd}from"@mantine/core";import oa,{useState as Qd}from"react";function sf(e){let[o,t]=Qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(Wd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(be,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),oa.createElement(be,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as oc,NativeSelect as tc,TextInput as rc}from"@mantine/core";import{createReference as ac}from"@medplum/core";import Lt,{useRef as mf,useState as pf}from"react";import{Group as Xd,Text as uf}from"@mantine/core";import{getDisplayString as Jd,getReferenceString as cf}from"@medplum/core";import ao,{forwardRef as $d,useCallback as df,useState as Kd}from"react";var jd={Observation:"code",User:"email:contains"},_d=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function Zd(e){return{value:cf(e),label:Jd(e),resource:e}}function Et(e){let o=S(),t=e.resourceType,[r,a]=Kd(),n=Q(e.defaultValue,a),f=e.onChange,l=df(async(i,u)=>{let d=ec(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=df(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:ao.createElement(vo,{name:e.name,itemComponent:Yd,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:cf,toOption:Zd,loadOptions:l,onChange:s,clearable:!0})}var Yd=$d(({label:e,resource:o,...t},r)=>ao.createElement("div",{ref:r,...t},ao.createElement(Xd,{noWrap:!0},ao.createElement(Ce,{value:o}),ao.createElement("div",null,ao.createElement(uf,null,e),ao.createElement(uf,{size:"xs",color:"dimmed"},o.birthDate)))));function ec(e){return jd[e]??(_d.includes(e)?"name":"_id")}function ko(e){let o=nc(e.targetTypes),t=fc(e.defaultValue,o),[r,a]=pf(e.defaultValue),[n,f]=pf(t),l=mf();l.current=r;let s=mf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Lt.createElement(oc,{spacing:"xs",grow:!0,noWrap:!0},o?Lt.createElement(tc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Lt.createElement(rc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Lt.createElement(Et,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?ac(u):void 0)}}))}function nc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function fc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as xf}from"@mantine/core";import pe,{useRef as lc,useState as sc}from"react";function If(e){let[o,t]=sc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=lc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return pe.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},pe.createElement("colgroup",null,pe.createElement("col",{width:"97%"}),pe.createElement("col",{width:"3%"})),pe.createElement("tbody",null,o.map((n,f)=>pe.createElement("tr",{key:`${f}-${o.length}`},pe.createElement("td",null,pe.createElement(Re,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},pe.createElement(Ue,null))))),pe.createElement("tr",null,pe.createElement("td",null),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},pe.createElement(mo,null))))))}import{Button as Cf,Chip as gf,Group as Rt,Modal as ic,NativeSelect as uc,Stack as dc,Switch as cc,TextInput as mc}from"@mantine/core";import{formatTiming as pc}from"@medplum/core";import $,{useRef as yf,useState as ta}from"react";var xc=["sun","mon","tue","wed","thu","fri","sat"];function vf(e){let[o,t]=ta(e.defaultValue),[r,a]=ta(!1),n=yf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,pc(n.current)||"No repeat"),$.createElement(Cf,{onClick:()=>a(!0)},"Edit")),$.createElement(Ic,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var hf={repeat:{period:1,periodUnit:"d"}};function Ic(e){let[o,t]=ta(e.defaultValue||hf),r=yf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return $.createElement(ic,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(dc,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Be,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(cc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?hf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(mc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),$.createElement(uc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&$.createElement(Pe,{title:"Repeat on"},$.createElement(gf.Group,{multiple:!0,onChange:s},$.createElement(Rt,{position:"apart",mt:"md",spacing:"xs"},xc.map(i=>$.createElement(gf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Rt,{position:"right"},$.createElement(Cf,{onClick:()=>e.onOk(o)},"OK"))))}function Re(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===L.Attachment?G.createElement(Fn,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(If,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(bc,{elementDefinitionTypes:n,...e}):G.createElement(Sf,{elementDefinitionType:n[0],...e})}function bc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Pc(t);return G.createElement(hc,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Cc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),G.createElement(Sf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",vc(r.code)))}}))}function Sf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return G.createElement(ra,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.date:return G.createElement(ra,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.dateTime:case L.instant:return G.createElement(Be,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return G.createElement(ra,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return G.createElement(yt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(gc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(yc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return G.createElement(Ka,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(Za,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(vt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(jn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(_n,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(Mt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(of,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(af,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(nf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(ff,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return G.createElement(be,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return G.createElement(ot,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return G.createElement(sf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(ko,{name:r,defaultValue:a,targetTypes:Dc(o),onChange:e.onChange});case L.Timing:return G.createElement(vf,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(et,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(et,{typeName:Sc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Dc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function et(e){let[o,t]=Bc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=kc.types[a];if(!n)return Bo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Bo.createElement(Tc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||St.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,d]=Se(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Bo.createElement(Bt,{key:s,title:Pf(s),description:i.definition,htmlFor:s},Bo.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(y,b)=>{r(Yo(o,s,b??s,l[1],y))}})):Bo.createElement(Pe,{key:s,title:Pf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},Bo.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:d,onChange:(y,b)=>{r(Yo(o,s,b??s,l[1],y))}}))}))}import{Button as aa,createStyles as Ac,Group as bf}from"@mantine/core";import ee,{useMemo as Fc,useState as Mc}from"react";var wc=Ac(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function Oc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Df(e){let{classes:o}=wc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Mc(na);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Fc(()=>Ec(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(bf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Oc(a)),ee.createElement(bf,{position:"right",spacing:"xs"},ee.createElement(aa,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(aa,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,l.map((s,i)=>ee.createElement("tr",{key:"week-"+i},s.map((u,d)=>ee.createElement("td",{key:"day-"+d},u&&ee.createElement(aa,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function na(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Ec(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:Lc(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function Lc(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as Rc,createStyles as Nc}from"@mantine/core";import Hc from"react";var Vc=Nc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Vc();return Hc.createElement(Rc,{className:r.root,...t},o)}import $m from"react";import{ActionIcon as Uf,Center as Mm,createStyles as wm,Group as Om,Loader as Em,Menu as Ne,ScrollArea as Lm,TextInput as Rm}from"@mantine/core";import{showNotification as Nm,updateNotification as ca}from"@mantine/notifications";import{getReferenceString as tt,normalizeErrorString as Hm}from"@medplum/core";import k,{useCallback as Vt,useEffect as Vm,useRef as zf,useState as Wf}from"react";import{createStyles as Yc,Group as Ht,List as Bf,Stack as Af,Text as De,Title as Ff}from"@mantine/core";import{capitalize as em,formatCodeableConcept as om,formatDateTime as sa,formatObservationValue as tm,isReference as rm}from"@medplum/core";import h,{useEffect as am,useState as nm}from"react";import{Blockquote as qc,createStyles as Gc,Stack as Uc}from"@mantine/core";import Tf from"react";var zc=Gc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function fa({value:e}){let{classes:o}=zc();return e?Tf.createElement(Uc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Tf.createElement(qc,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Kc}from"@mantine/core";import la from"react";import{Text as Wc}from"@mantine/core";import{getDisplayString as Qc,isOk as Xc,normalizeErrorString as Jc}from"@medplum/core";import kf,{useState as $c}from"react";function Oe(e){let{value:o,link:t,...r}=e,[a,n]=$c(),f=Q(o,n),l;if(a&&!Xc(a))l=`[${Jc(a)}]`;else if(f)l=Qc(f);else return null;return t?kf.createElement(ne,{to:o,...r},l):kf.createElement(Wc,{component:"span",...r},l)}function Je(e){return la.createElement(Kc,{spacing:"xs"},la.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),la.createElement(Oe,{value:e.value,link:e.link}))}import{Badge as jc}from"@mantine/core";import _c from"react";var Zc={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",corrected:"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 Nt(e){return _c.createElement(jc,{color:Zc[e.status]},e.status)}var Mf=Yc(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));ia.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ia(e){let o=S(),t=Q(e.value),[r,a]=nm();if(am(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(Af,null,h.createElement(Ff,null,"Diagnostic Report"),h.createElement(fm,{value:t}),!e.hideSpecimenInfo&&lm(r),t.result&&h.createElement(sm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(fa,{value:n}))}function fm({value:e}){return h.createElement(Ht,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(De,null,h.createElement(Je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(De,null,h.createElement(Je,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(De,null,h.createElement(Je,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(De,null,sa(e.issued))),e.status&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(De,null,em(e.status))))}function lm(e){return h.createElement(Af,{spacing:"xs"},h.createElement(Ff,{order:2,size:"h6"},"Specimens"),h.createElement(Bf,{type:"ordered"},e?.map(o=>h.createElement(Bf.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Ht,{spacing:20},h.createElement(Ht,{spacing:5},h.createElement(De,{fw:500},"Collected:")," ",sa(o.collection?.collectedDateTime)),h.createElement(Ht,{spacing:5},h.createElement(De,{fw:500},"Received:")," ",sa(o.receivedTime)))))))}function sm(e){let{classes:o}=Mf();return h.createElement("table",{className:o.table},h.createElement("thead",null,h.createElement("tr",null,h.createElement("th",null,"Test"),h.createElement("th",null,"Value"),h.createElement("th",null,"Reference Range"),h.createElement("th",null,"Interpretation"),h.createElement("th",null,"Category"),h.createElement("th",null,"Performer"),h.createElement("th",null,"Status"))),h.createElement("tbody",null,e.value?.map(t=>h.createElement(im,{key:`obs-${rm(t)?t.reference:t.id}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function im(e){let{classes:o,cx:t}=Mf(),r=Q(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=cm(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(ne,{to:r},h.createElement(Do,{value:r.code}))),h.createElement("td",null,h.createElement(um,{value:r})),h.createElement("td",null,h.createElement(dm,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(Do,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement("ul",null,r.category.map(f=>h.createElement("li",{key:`category-${om(f)}`},h.createElement(Do,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(ro,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement(Nt,{status:r.status}))),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(fa,{value:r.note}))))}function um(e){let o=e.value;return h.createElement(h.Fragment,null,tm(o))}function dm(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?h.createElement(h.Fragment,null,o.text):h.createElement(bt,{value:o}):null}function cm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as mm,Paper as pm,useComponentDefaultProps as xm}from"@mantine/core";import Im from"react";var gm=mm((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),hm={shadow:"xs",radius:"md",withBorder:!0};function Ao(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=xm("Panel",hm,e),{classes:l,cx:s}=gm({width:r,fill:a},{name:"Panel",unstyled:n});return Im.createElement(pm,{className:s(l.paper,o),...f},t)}import{createStyles as Cm}from"@mantine/core";import{getPropertyDisplayName as ym,stringify as wf,toTypedValue as Of}from"@medplum/core";import le,{useEffect as vm,useState as Sm}from"react";var Pm=Cm(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Lf(e){let{classes:o}=Pm(),t=S(),[r,a]=Sm();if(vm(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?le.createElement("table",{className:o.root},le.createElement("colgroup",null,le.createElement("col",{style:{width:"30%"}}),le.createElement("col",{style:{width:"35%"}}),le.createElement("col",{style:{width:"35%"}})),le.createElement("thead",null,le.createElement("tr",null,le.createElement("th",null,"Property"),le.createElement("th",null,"Before"),le.createElement("th",null,"After"))),le.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=Se(Of(e.original),l),[d,c]=Se(Of(e.revised),l);return Ef(i)&&Ef(d)||wf(i)===wf(d)?null:le.createElement("tr",{key:l},le.createElement("td",null,ym(l)),le.createElement("td",{className:o.removed},le.createElement(ce,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),le.createElement("td",{className:o.added},le.createElement(ce,{property:s,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function Ef(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import bm,{useEffect as Dm,useState as Tm}from"react";function ua(e){let o=S(),t=Q(e.value),[r,a]=Tm();return Dm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:bm.createElement(_o,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as km,Group as Bm,Menu as Rf,Text as da}from"@mantine/core";import{formatDateTime as Am,getReferenceString as Fm}from"@medplum/core";import oe from"react";function Nf(e){return oe.createElement(Xe,null,e.children)}function $e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return oe.createElement(Ao,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(Bm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ce,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(da,{size:"sm"},oe.createElement(Oe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(da,{size:"xs"},oe.createElement(ne,{color:"dimmed",to:e.resource},Am(l)),oe.createElement(da,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(ne,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Rf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Rf.Target,null,oe.createElement(km,{radius:"xl","aria-label":`Actions for ${Fm(e.resource)}`},oe.createElement(Pr,null))),a)),oe.createElement(go,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function qf(e,o){e.sort((t,r)=>{let a=Hf(t,o),n=Hf(r,o);return a>n?1:a<n?-1:Vf(t,o)-Vf(r,o)})}function Hf(e,o){if(!Gf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Vf(e,o){if(!Gf(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Gf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var qm=wm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ke(e){let o=S(),t=Ge(),r=o.getProfile(),a=zf(null),n=Q(e.value),[f,l]=Wf(),[s,i]=Wf([]),u=e.loadTimelineResources,d=zf(s);d.current=s;let c=Vt(v=>{qf(v,n),v.reverse(),i(v)},[n]),y=Vt(v=>{let N=[];for(let Te of v){if(Te.status!=="fulfilled")continue;let he=Te.value;if(he.type==="history"&&l(he),he.entry)for(let Ye of he.entry)N.push(Ye.resource)}c(N)},[c]),b=Vt(v=>c([...d.current,v]),[c]),A=Vt(()=>{let v,N;"resourceType"in e.value?(v=e.value.resourceType,N=e.value.id):[v,N]=e.value.reference?.split("/"),u(o,v,N).then(y).catch(console.log)},[o,e.value,u,y]);Vm(()=>A(),[A]);function I(v){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,v)).then(N=>b(N)).catch(console.log)}function D(v){!n||!e.createMedia||o.createResource(e.createMedia(n,r,v)).then(N=>b(N)).then(()=>ca({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:k.createElement(zo,{size:16}),autoClose:2e3})).catch(N=>ca({id:"upload-notification",color:"red",title:"Upload error",message:Hm(N),icon:k.createElement(Dr,{size:16}),autoClose:2e3}))}function p(v,N){return o.updateResource({...v,priority:N})}function g(v){p(v,"stat").then(A).catch(console.log)}function C(v){p(v,"routine").then(A).catch(console.log)}function O(v){t(`/${v.resourceType}/${v.id}`)}function Ie(v){t(`/${v.resourceType}/${v.id}/edit`)}function ge(v){t(`/${v.resourceType}/${v.id}/delete`)}function ue(v){t(`/${v.resourceType}/${v.id}/_history/${v.meta?.versionId}`)}function Y(){Nm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Ho(v){ca({id:"upload-notification",loading:!0,title:"Uploading...",message:Jm(v),autoClose:!1,withCloseButton:!1})}return n?k.createElement(Nf,null,e.createCommunication&&k.createElement(Ao,null,k.createElement(J,{testid:"timeline-form",onSubmit:v=>{I(v.text);let N=a.current;N&&(N.value="",N.focus())}},k.createElement(Om,{spacing:"xs",noWrap:!0,style:{width:"100%"}},k.createElement(Ce,{value:r}),k.createElement(Rm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),k.createElement(Uf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},k.createElement(Fr,{size:16})),k.createElement(Po,{onUpload:D,onUploadStart:Y,onUploadProgress:Ho},v=>k.createElement(Uf,{...v,radius:"xl",color:"blue",variant:"filled"},k.createElement(Wo,{size:16})))))),s.map(v=>{if(!v)return null;let N=`${v.resourceType}/${v.id}/${v.meta?.versionId}`;if(v.resourceType===n.resourceType&&v.id===n.id)return k.createElement(Gm,{key:N,history:f,resource:v,onDetails:ue});switch(v.resourceType){case"AuditEvent":return k.createElement(Qm,{key:N,resource:v,onDetails:O});case"Communication":return k.createElement(zm,{key:N,resource:v,onPin:v.priority!=="stat"?g:void 0,onUnpin:v.priority==="stat"?C:void 0,onDetails:O,onEdit:Ie,onDelete:ge});case"DiagnosticReport":return k.createElement(Xm,{key:N,resource:v,onDetails:O,onEdit:Ie,onDelete:ge});case"Media":return k.createElement(Wm,{key:N,resource:v,onDetails:O,onEdit:Ie,onDelete:ge});default:return k.createElement($e,{key:N,resource:v,padding:!0},k.createElement(ua,{value:v,ignoreMissingValues:!0}))}})):k.createElement(Mm,{style:{width:"100%",height:"100%"}},k.createElement(Em,null))}function Fo(e){return k.createElement(Ne.Dropdown,null,k.createElement(Ne.Label,null,"Resource"),e.onPin&&k.createElement(Ne.Item,{icon:k.createElement(Mr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${tt(e.resource)}`},"Pin"),e.onUnpin&&k.createElement(Ne.Item,{icon:k.createElement(wr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${tt(e.resource)}`},"Unpin"),e.onDetails&&k.createElement(Ne.Item,{icon:k.createElement(Br,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${tt(e.resource)}`},"Details"),e.onEdit&&k.createElement(Ne.Item,{icon:k.createElement(br,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${tt(e.resource)}`},"Edit"),e.onDelete&&k.createElement(k.Fragment,null,k.createElement(Ne.Divider,null),k.createElement(Ne.Label,null,"Danger zone"),k.createElement(Ne.Item,{color:"red",icon:k.createElement(Jo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${tt(e.resource)}`},"Delete")))}function Gm(e){let o=Um(e.history,e.resource);return o?k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(Lf,{original:o,revised:e.resource})):k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement("h3",null,"Created"),k.createElement(ua,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function Um(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function zm(e){let{classes:o}=qm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return k.createElement($e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:k.createElement(Fo,{...e})},k.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Wm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return k.createElement($e,{resource:e.resource,padding:!!t,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(we,{value:e.resource.content}))}function Qm(e){return k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(Lm,null,k.createElement("pre",null,e.resource.outcomeDesc)))}function Xm(e){return k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(ia,{value:e.resource}))}function Jm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ma(e.loaded)} / ${ma(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ma(e.loaded)}`}function ma(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function SB(e){return $m.createElement(Ke,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import Qf from"react";function qt(e){let{children:o,...t}=e;return Qf.createElement(Xe,null,Qf.createElement(Ao,{...t},o))}import{createReference as Gt}from"@medplum/core";import Km from"react";function EB(e){return Km.createElement(Ke,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Gt(o),subject:o.subject,sender:Gt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Gt(o),subject:o.subject,operator:Gt(t),issued:new Date().toISOString(),content:r})})}import{Button as tx,Loader as rx,Table as ax}from"@mantine/core";import{normalizeOperationOutcome as nx}from"@medplum/core";import te,{useEffect as Pl,useRef as bl,useState as Kt}from"react";import{evalFhirPath as jm}from"@medplum/core";import _m from"react";function Xf(e){let o;try{o=jm(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return _m.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as qp,Button as Eo,Center as Jt,createStyles as Gp,Group as $t,Loader as Up,Menu as yl,Pagination as zp,Table as Wp,Text as Sa,UnstyledButton as Qp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ta,formatSearchQuery as Xp,globalSchema as Jp}from"@medplum/core";import P,{useCallback as vl,useEffect as Sl,useRef as $p,useState as Pa}from"react";import{Box as Zm,Button as Ym,Modal as ep,Text as op}from"@mantine/core";import Mo from"react";function $f(e){return Mo.createElement(ep,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Mo.createElement(Zm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Mo.createElement(Jf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Mo.createElement(Jf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Mo.createElement(op,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Jf(e){return Mo.createElement(Ym,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as nt,Modal as dp}from"@mantine/core";import{globalSchema as cp,stringify as mp}from"@medplum/core";import X,{useEffect as pp,useRef as il,useState as xp}from"react";import{capitalize as tp,DEFAULT_SEARCH_COUNT as rp,evalFhirPathTyped as ap,formatDateTime as np,Operator as w}from"@medplum/core";import Ut from"react";var fp={string:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],fulltext:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],token:[w.EQUALS,w.NOT],reference:[w.EQUALS,w.NOT],numeric:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],quantity:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],date:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY],datetime:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY]},lp={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",identifier:"identifier",iterate:"iterate"};function rt(e,o){return{...e,filters:o,offset:0,name:void 0}}function jB(e){return rt(e,[])}function zt(e,o){return rt(e,(e.filters??[]).filter(t=>t.code!==o))}function wo(e,o,t,r,a){a&&(e=zt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),rt(e,n)}function _B(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function jf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function _f(e,o){return pa(e,o,-1)}function Zf(e,o){return pa(e,o,0)}function Yf(e,o){return pa(e,o,1)}function pa(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Ia(e,o,r,a)}function el(e,o){return xa(e,o,-1)}function ol(e,o){return xa(e,o,0)}function tl(e,o){return xa(e,o,1)}function xa(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Ia(e,o,r,a)}function rl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ia(e,o,t,new Date)}function Ia(e,o,t,r){return e=zt(e,o),e=Kf(e,o,w.GREATER_THAN_OR_EQUALS,t),e=Kf(e,o,w.LESS_THAN_OR_EQUALS,r),e}function Kf(e,o,t,r){return wo(e,o,t,r.toISOString())}function ga(e,o,t=!0){return wo(e,o,w.MISSING,t.toString())}function sp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function al(e,o){let t=e.count??rp,r=(o-1)*t;return sp(e,r)}function ha(e,o,t){return o===nl(e)&&t!==void 0&&t===fl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function ZB(e,o){let t=!1;return nl(e)===o&&(t=!fl(e)),ha(e,o,t)}function nl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function fl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function ll(e){return fp[e.type]}function at(e){return lp[e]??""}function ye(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(tp).join(" "))}function sl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?np(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?ip(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?up(e,o.searchParams[0]):null}function ip(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?Ut.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function up(e,o){let t=ap(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Ut.createElement(Ut.Fragment,null,t.map((r,a)=>Ut.createElement(ce,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function ul(e){let[o,t]=xp({search:JSON.parse(mp(e.search))}),r=il(null),a=il(null);pp(()=>{t({search:e.search})},[e.search]);function n(p){p.key==="Enter"&&i()}function f(){i()}function l(p){p.key==="Enter"&&u()}function s(){u()}function i(){let p=o.search.fields??[],g=r.current?.value;if(g){let C=[...p,g];t({search:{...o.search,fields:C}})}}function u(){let p=o.search.fields??[],g=a.current?.value;if(g){let C=[...p];C.splice(C.indexOf(g),1),t({search:{...o.search,fields:C}})}}function d(){let p=o.search.fields??[],g=a.current?.value;if(!g)return;let C=[...p],O=C.indexOf(g);O<=0||(y(C,O,O-1),t({search:{...o.search,fields:C}}))}function c(){let p=o.search.fields??[],g=a.current?.value;if(!g)return;let C=[...p],O=C.indexOf(g);O>=C.length-1||(y(C,O,O+1),t({search:{...o.search,fields:C}}))}function y(p,g,C){let O=p[g];p[g]=p[C],p[C]=O}if(!e.visible)return null;let b=e.search.resourceType,A=cp.types[b],I=o.search.fields??[],D=Ip(A).filter(p=>!I.includes(p)).sort((p,g)=>p.localeCompare(g));return X.createElement(dp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},X.createElement("div",null,X.createElement("table",{style:{margin:"auto"}},X.createElement("thead",null,X.createElement("tr",null,X.createElement("th",{colSpan:2,align:"center"},"Available"),X.createElement("th",{colSpan:2,align:"center"},"Selected"))),X.createElement("tbody",null,X.createElement("tr",null,X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:p=>n(p),onDoubleClick:()=>f(),"data-testid":"available"},D.map(p=>X.createElement("option",{key:p,value:p},ye(p))))),X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:p=>l(p),onDoubleClick:()=>s(),"data-testid":"selected"},I.map(p=>X.createElement("option",{key:p,value:p},ye(p))))))),X.createElement("tfoot",null,X.createElement("tr",null,X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:i},"Add")),X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:u},"Remove")),X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:d},"Up")),X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:c},"Down")))))),X.createElement(nt,{onClick:()=>e.onOk(o.search)},"OK"))}function Ip(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(ye(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ye(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ye(a)))}return o}import{Button as lt,Group as bp,Modal as Dp,NativeSelect as cl}from"@mantine/core";import{globalSchema as Tp,stringify as ml}from"@medplum/core";import R,{useEffect as kp,useRef as xl,useState as ya}from"react";import{formatDateTime as gp,getSearchParameterDetails as hp,globalSchema as Cp,Operator as dl,SearchParameterType as yp}from"@medplum/core";import ft from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=Cp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===dl.EQUALS||t.operator===dl.NOT_EQUALS))return ft.createElement(Oe,{value:{reference:t.value}});let a=hp(o,r);if(t.code==="_lastUpdated"||a.type===yp.DATETIME)return ft.createElement(ft.Fragment,null,gp(t.value))}return ft.createElement(ft.Fragment,null,t.value)}import{Checkbox as vp,TextInput as Ca}from"@mantine/core";import{getSearchParameterDetails as Sp,SearchParameterType as Oo}from"@medplum/core";import no from"react";function Qt(e){let o=Sp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Oo.REFERENCE:return no.createElement(ko,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Oo.BOOLEAN:return no.createElement(vp,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case Oo.DATE:return no.createElement(Ca,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Oo.DATETIME:return no.createElement(Be,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Oo.NUMBER:return no.createElement(Ca,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Oo.QUANTITY:return no.createElement(be,{name:t,defaultValue:Pp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return no.createElement(Ca,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function Pp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Il(e){let[o,t]=ya(JSON.parse(ml(e.search))),[r,a]=ya(-1),n=xl(o);n.current=o,kp(()=>{t(JSON.parse(ml(e.search)))},[e.search]);function f(u){t(wo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=Tp.types[l].searchParams??{},i=o.filters||[];return R.createElement(Dp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,d)=>d===r?R.createElement(pl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let y=[...i];y[d]=c,t(rt(n.current,y)),a(-1)},onCancel:()=>a(-1)}):R.createElement(Bp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(d),onDelete:()=>t(jf(n.current,d))})),R.createElement(pl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),R.createElement(bp,{position:"right",mt:"xl"},R.createElement(lt,{onClick:()=>e.onOk(n.current)},"OK")))}function Bp(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ye(o.code)),R.createElement("td",null,at(o.operator)),R.createElement("td",null,R.createElement(Wt,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(lt,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(lt,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function pl(e){let[o,t]=ya(e.defaultValue??{}),r=xl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&ll(l);return R.createElement("tr",null,R.createElement("td",null,R.createElement(cl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ye(i)}))]})),R.createElement("td",null,s&&R.createElement(cl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:at(i)}))]})),R.createElement("td",null,l&&o.operator&&R.createElement(Qt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(lt,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(lt,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Ap,Grid as va,Modal as Fp}from"@mantine/core";import fo,{useState as Mp}from"react";function gl(e){let[o,t]=Mp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return fo.createElement(Fp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},fo.createElement(J,{onSubmit:r},fo.createElement(va,null,fo.createElement(va.Col,{span:10},fo.createElement(Qt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),fo.createElement(va.Col,{span:2},fo.createElement(Ap,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as M}from"@mantine/core";import{Operator as se}from"@medplum/core";import m from"react";function hl(e){if(!e.searchParams)return null;function o(n,f){a(ha(e.search,n.code,f))}function t(n){a(zt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(wp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(M.Dropdown,null,e.searchParams.map(n=>m.createElement(M.Item,{key:n.code},ye(n.code))))}function wp(e){switch(e.searchParam.type){case"date":return m.createElement(Op,{...e});case"number":case"quantity":return m.createElement(Ep,{...e});case"reference":return m.createElement(Lp,{...e});case"string":case"token":case"uri":return m.createElement(Rp,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Op(e){let{searchParam:o}=e,t=o.code;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.ENDS_BEFORE)},"Before..."),m.createElement(M.Item,{icon:m.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.STARTS_AFTER)},"After..."),m.createElement(M.Item,{icon:m.createElement(xr,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Between..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(Yf(e.search,t))},"Tomorrow"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(Zf(e.search,t))},"Today"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Yesterday"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(tl(e.search,t))},"Next Month"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(ol(e.search,t))},"This Month"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(el(e.search,t))},"Last Month"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Year to date"),m.createElement(Xt,{...e}))}function Ep(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN)},"Greater than..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN)},"Less than..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(Xt,{...e}))}function Lp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),m.createElement(Xt,{...e}))}function Rp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,se.CONTAINS)},"Contains..."),m.createElement(M.Item,{icon:m.createElement(Ir,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Does not contain..."),m.createElement(Xt,{...e}))}function Xt(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(mr,{size:14}),onClick:()=>e.onChange(ga(e.search,t))},"Missing"),m.createElement(M.Item,{icon:m.createElement(cr,{size:14}),onClick:()=>e.onChange(ga(e.search,t,!1))},"Not missing"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Vr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Np,globalSchema as Hp}from"@medplum/core";function Cl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Vp(o,r));return t}function Vp(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=Hp.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Np(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var ba=class extends Event{constructor(t){super("change");this.definition=t}},Da=class extends Event{constructor(t){super("load");this.response=t}},lo=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Kp=Gp(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function jp(e){let{classes:o}=Kp(),t=S(),[r,a]=Pa(!1),[n,f]=Pa(),{search:l,onLoad:s}=e,[i,u]=Pa({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=$p(i);d.current=i;let c=l.total??"accurate",y=vl(T=>{f(void 0),t.search(l.resourceType,Xp({...l,total:c,fields:void 0}),T).then(W=>{u({...d.current,searchResponse:W}),s&&s(new Da(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),b=vl(()=>{u({...d.current,searchResponse:void 0}),y({cache:"reload"})},[y]);Sl(()=>{y()},[y]);function A(T,W){T.stopPropagation();let ae=T.target.checked,de={...d.current.selected};ae?de[W]=!0:delete de[W],u({...d.current,selected:de})}function I(T){T.stopPropagation();let _=T.target.checked,ae={},de=d.current.searchResponse;_&&de?.entry&&de.entry.forEach(Vo=>{Vo.resource?.id&&(ae[Vo.resource.id]=!0)}),u({...d.current,selected:ae})}function D(){let T=d.current;if(!T.searchResponse?.entry||T.searchResponse.entry.length===0)return!1;for(let W of T.searchResponse.entry)if(W.resource?.id&&!T.selected[W.resource.id])return!1;return!0}function p(T){e.onChange&&e.onChange(new ba(T))}function g(T,W){if(ht(T.target)||T.button===2)return;H(T);let _=T.button===1||T.ctrlKey||T.metaKey;!_&&e.onClick&&e.onClick(new lo(W,T)),_&&e.onAuxClick&&e.onAuxClick(new lo(W,T))}function C(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Sl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Jp.types[e.search.resourceType]))return P.createElement(Jt,{style:{width:"100%",height:"100%"}},P.createElement(Up,null));let Ie=e.checkboxesEnabled,ge=Cl(l),ue=l.resourceType,Y=i.searchResponse,v=Y?.entry?.map(T=>T.resource),N="subtle",Te="gray",he=16,Ye=window.innerWidth<768;return P.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&P.createElement($t,{position:"apart",mb:"xl"},P.createElement($t,{spacing:2},P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(yr,{size:he}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(kr,{size:he}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(Tr,{size:he}),onClick:e.onNew},"New..."),!Ye&&C()&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(Hr,{size:he}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!Ye&&e.onDelete&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(Jo,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Ye&&e.onBulk&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(pr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),P.createElement($t,{spacing:2},Y&&P.createElement(Sa,{size:"xs",color:"dimmed"},ex(l,Y.total),"-",ox(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),P.createElement(qp,{title:"Refresh",onClick:b},P.createElement(Er,{size:"1.125rem"})))),P.createElement(Wp,{className:o.table},P.createElement("thead",null,P.createElement("tr",null,Ie&&P.createElement("th",null,P.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:D(),onChange:T=>I(T)})),ge.map(T=>P.createElement("th",{key:T.name},P.createElement(yl,{shadow:"md",width:240,position:"bottom-end"},P.createElement(yl.Target,null,P.createElement(Qp,{className:o.control},P.createElement($t,{position:"apart",noWrap:!0},P.createElement(Sa,{weight:500,size:"sm"},ye(T.name)),P.createElement(Jt,{className:o.icon},P.createElement(dr,{size:14,stroke:1.5}))))),P.createElement(hl,{search:e.search,searchParams:T.searchParams,onPrompt:(W,_)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:_})},onChange:W=>{p(W)}}))))),!e.hideFilters&&P.createElement("tr",null,Ie&&P.createElement("th",null),ge.map(T=>P.createElement("th",{key:T.name},T.searchParams&&P.createElement(_p,{resourceType:ue,searchParams:T.searchParams,filters:e.search.filters}))))),P.createElement("tbody",null,v?.map(T=>T&&P.createElement("tr",{key:T.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>g(W,T),onAuxClick:W=>g(W,T)},Ie&&P.createElement("td",null,P.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${T.id}`,checked:!!i.selected[T.id],onChange:W=>A(W,T.id)})),ge.map(W=>P.createElement("td",{key:W.name},sl(T,W))))))),v?.length===0&&P.createElement(Xe,null,P.createElement(Jt,{style:{height:150}},P.createElement(Sa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&P.createElement(Jt,{m:"md",p:"md"},P.createElement(zp,{value:Zp(l),total:Yp(l,Y.total),onChange:T=>p(al(l,T)),getControlProps:T=>{switch(T){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&P.createElement("div",{"data-testid":"search-error"},P.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),P.createElement(ul,{search:e.search,visible:d.current.fieldEditorVisible,onOk:T=>{p(T),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),P.createElement(Il,{search:e.search,visible:d.current.filterEditorVisible,onOk:T=>{p(T),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),P.createElement($f,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),P.createElement(gl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ye(i.filterDialogSearchParam.code):"",resourceType:ue,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:T=>{p(wo(e.search,T.code,T.operator,T.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var sF=P.memo(jp);function _p(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?P.createElement("span",null,"no filters"):P.createElement(P.Fragment,null,o.map(t=>P.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},at(t.operator),"\xA0",P.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function Zp(e){return Math.floor((e.offset??0)/(e.count??Ta))+1}function Yp(e,o){let t=e.count??Ta;return Math.ceil(o/t)}function ex(e,o){return Math.min(o,(e.offset??0)+1)}function ox(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ta))}function fx(e){let o=S(),[t,r]=Kt(),[a,n]=Kt(),{query:f,fields:l}=e,[s,i]=Kt(),[u,d]=Kt({}),c=bl();c.current=s;let y=bl({});y.current=u,Pl(()=>{n(void 0),o.graphql(f).then(i).catch(C=>n(nx(C)))},[o,f]);function b(C,O){C.stopPropagation();let ge=C.target.checked,ue={...y.current};ge?ue[O]=!0:delete ue[O],d(ue)}function A(C){C.stopPropagation();let Ie=C.target.checked,ge={},ue=c.current?.data.ResourceList;Ie&&ue&&ue.forEach(Y=>{Y.id&&(ge[Y.id]=!0)}),d(ge)}function I(){let C=c.current?.data.ResourceList;if(!C||C.length===0)return!1;for(let O of C)if(O.id&&!y.current[O.id])return!1;return!0}function D(C,O){ht(C.target)||(H(C),C.button!==1&&e.onClick&&e.onClick(new lo(O,C)),C.button===1&&e.onAuxClick&&e.onAuxClick(new lo(O,C)))}if(Pl(()=>{o.requestSchema(e.resourceType).then(C=>{r({...C})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(rx,null);let g=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:C=>H(C),"data-testid":"search-control"},te.createElement(ax,null,te.createElement("thead",null,te.createElement("tr",null,g&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:I(),onChange:C=>A(C)})),l.map(C=>te.createElement("th",{key:C.name},C.name)))),te.createElement("tbody",null,s?.data.ResourceList.map(C=>C&&te.createElement("tr",{key:C.id,"data-testid":"search-control-row",onClick:O=>D(O,C),onAuxClick:O=>D(O,C)},g&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${C.id}`,checked:!!u[C.id],onChange:O=>b(O,C.id)})),l.map(O=>te.createElement("td",{key:O.name},te.createElement(Xf,{propertyType:O.propertyType,path:O.fhirPath,resource:C}))))))),s?.data.ResourceList.length===0&&te.createElement("div",{"data-testid":"empty-search"},"No results"),a&&te.createElement("div",{"data-testid":"search-error"},te.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&te.createElement(tx,{onClick:()=>e.onBulk(Object.keys(y.current))},"Bulk..."))}var CF=te.memo(fx);import so from"react";function je(e){return so.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},so.createElement("title",null,"Medplum Logo"),so.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),so.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"}),so.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"}),so.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),so.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as lx}from"@mantine/core";import ka from"react";function Lo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:ka.createElement(lx,{icon:ka.createElement(oo,{size:16}),color:"red"},o.map(t=>ka.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as jt}from"@medplum/core";import sx,{useCallback as ix}from"react";function wF(e){let o=ix((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return sx.createElement(Ke,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:jt(t),sender:jt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:jt(t),operator:jt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Tl,Button as ux,createStyles as dx,NativeSelect as cx,Stack as mx,TextInput as Aa}from"@mantine/core";import{getReferenceString as px}from"@medplum/core";import q,{useEffect as Dl,useRef as kl,useState as st}from"react";var Bl=dx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function KF(e){let o=S(),t=Q(e.value),[r,a]=st(void 0),[n,f]=st(),[l,s]=st(),[i,u]=st();function d(){s(void 0)}function c(){f(void 0)}let y=kl();if(y.current=i,Dl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Dl(()=>(u(yx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function b(A,I){u({...y.current,[A]:I})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Aa,{label:"Plan Title",defaultValue:i.title,onChange:A=>b("title",A.currentTarget.value)}),q.createElement(Al,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:A=>b("action",A)}),q.createElement(ux,{type:"submit"},"Save")))}function Al(e){let{classes:o}=Bl(),t=kl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(xx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:f=>{H(f),a({id:Ml()})}},"Add action")))}function xx(e){let{classes:o,cx:t}=Bl(),{action:r}=e,a=Cx(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?q.createElement(gx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(Ix,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Fa={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Ix(e){let{action:o,actionType:t}=e,[r,a]=Fl(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(ro,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(ce,{property:Fa,propertyType:a,value:r})))}function gx(e){let{action:o}=e,[t,r]=st(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(mx,{spacing:"xl"},q.createElement(Aa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Aa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(cx,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&q.createElement(Al,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return q.createElement(_t,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(_t,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(_t,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(_t,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Pe,{title:"Timing",description:"When the action should take place."},q.createElement(hx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function _t(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(Et,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:px(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function hx(e){let o=e.action,t="timing",[r,a]=Fl(o);return q.createElement(Re,{property:Fa,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(Yo(o,t,f??t,Fa,n))}})}function Cx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Fl(e){return Se({type:"PlanDefinitionAction",value:e},"timing")}var Ba=1;function Ml(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ba=Math.max(Ba,o+1))}return e}return"id-"+Ba++}function yx(e){return{...e,action:wl(e.action)}}function wl(e){if(e)return e.map(o=>({...o,id:Ml(o.id),action:wl(o.action)}))}import{Anchor as He,Button as Jx,createStyles as $x,NativeSelect as Kx,Textarea as jx,TextInput as Oa,Title as _x}from"@mantine/core";import{globalSchema as Zx,isResource as Yx}from"@medplum/core";import F,{useEffect as $l,useRef as eI,useState as Zt}from"react";import{Anchor as Ul,Button as Ro,Checkbox as vx,Group as Sx,NativeSelect as Px,Radio as Ll,Stack as bx,Stepper as Rl,Textarea as Dx,TextInput as it,Title as Tx}from"@mantine/core";import{capitalize as zl,createReference as kx,getExtension as Bx,getQuestionnaireAnswers as Ax,getReferenceString as Wl,getTypedPropertyValue as uo,globalSchema as Fx,stringify as Nl,evalFhirPathTyped as Mx}from"@medplum/core";import B,{useEffect as Hl,useState as io}from"react";var Ol=(D=>(D.group="group",D.display="display",D.question="question",D.boolean="boolean",D.decimal="decimal",D.integer="integer",D.date="date",D.dateTime="dateTime",D.time="time",D.string="string",D.text="text",D.url="url",D.choice="choice",D.openChoice="open-choice",D.attachment="attachment",D.reference="reference",D.quantity="quantity",D))(Ol||{});function El(e){return e.type==="choice"||e.type==="open-choice"}function Ql(e){let o=S(),t=o.getProfile(),[r,a]=io(),n=Q(e.questionnaire),[f,l]=io(),[s,i]=io({}),[u,d]=io(0),c=Gx(n?.item??[]),y=()=>d(I=>I>=c?I:I+1),b=()=>d(I=>I<=0?I:I-1);Hl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Hl(()=>{l(n?Lx(n):void 0)},[n]);function A(I){let D={resourceType:"QuestionnaireResponse",item:I};l(D),i(Ax(D))}return!r||!n?null:B.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Wl(n),subject:e.subject,source:kx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&B.createElement(Tx,null,n.title),n.item&&B.createElement(Xl,{items:n.item,answers:s,onChange:A,renderPages:c>1,activePage:u}),B.createElement(Sx,{position:"right",mt:"xl"},B.createElement(Ex,{activePage:u,numberOfPages:c,nextStep:y,prevStep:b,submitButtonText:e.submitButtonText})))}function Xl(e){let[o,t]=io(wa(e.items));function r(n,f){let l=o.some(i=>i.id===n),s;l?s=o.map(i=>i.id===n?f:i):s=[...o,f],t(s),e.onChange(s)}let a=e.items.map((n,f)=>e.renderPages?B.createElement(Rl.Step,{label:n.text,key:n.linkId},B.createElement(Vl,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r})):B.createElement(Vl,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r}));return e.renderPages?B.createElement(Rl,{active:e.activePage??0,allowNextStepsSelect:!1},a):B.createElement(bx,null,a)}function Vl(e){return qx(e.item,e.answers)?e.item.type==="display"?B.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?B.createElement(ql,{key:e.item.linkId,item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)}):B.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},B.createElement(ql,{item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)})):null}function ql(e){let o=e.item;function t(r,a){let n=a??0,f=e.responseItems.filter(l=>l.linkId===o.linkId);e.onChange({id:Xx(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?B.createElement(zx,{key:e.item.linkId,text:o.text??"",item:o??[],answers:e.answers,onChange:t}):B.createElement(Wx,{item:e.item,key:e.item.linkId},({index:r})=>B.createElement(Ma,{...e,index:r}))}function Ma(e){let o=e.item,t=e.index;function r(l,s){let i=s??0,u=e.responseItems?.filter(d=>d.linkId===o.linkId)??[];e.onChange({id:u[0].id,linkId:o.linkId,text:o.text,answer:Qx(u[0]?.answer??[],i,l)})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0;switch(a){case"boolean":return B.createElement(Bt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},B.createElement(vx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return B.createElement(it,{type:"number",step:"any",id:n,name:n,defaultValue:f?.valueDecimal,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return B.createElement(it,{type:"number",step:1,id:n,name:n,defaultValue:f?.valueInteger,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return B.createElement(it,{type:"date",id:n,name:n,defaultValue:f?.valueDate,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return B.createElement(Be,{name:n,defaultValue:f?.valueDateTime,onChange:l=>r({valueDateTime:l},t)});case"time":return B.createElement(it,{type:"time",id:n,name:n,defaultValue:f?.valueTime,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return B.createElement(it,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return B.createElement(Dx,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return B.createElement(vt,{name:n,defaultValue:f?.valueAttachment,onChange:l=>r({valueAttachment:l},t)});case"reference":return B.createElement(ko,{name:n,targetTypes:Ux(o),defaultValue:f?.valueReference,onChange:l=>r({valueReference:l},t)});case"quantity":return B.createElement(be,{name:n,defaultValue:f?.valueQuantity,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return Vx(o)?B.createElement(wx,{name:n,item:o,initial:f,onChangeAnswer:l=>r(l,t)}):B.createElement(Ox,{name:n,item:o,initial:f,onChangeAnswer:l=>r(l,t)});default:return null}}function wx(e){let{name:o,item:t,initial:r}=e,a=uo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=uo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Gl(l))}return B.createElement(Px,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=uo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+zl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:Gl(a),data:n})}function Gl(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ox(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=Fx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=uo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],d=`${o}-option-${i}`,c=uo({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Nl(c)===Nl(f)&&(s=d),l.push([d,c])}return B.createElement(Ll.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(d=>d[0]===i);if(u){let d=u[1],c="value"+zl(d.type);a({[c]:d.value})}}},l.map(([i,u])=>B.createElement(Ll,{key:i,id:i,value:i,label:B.createElement(ce,{property:n,propertyType:u.type,value:u.value})})))}function Ex(e){return e.activePage===0&&e.numberOfPages<=0?B.createElement(Ro,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?B.createElement(B.Fragment,null,B.createElement(Ro,{onClick:e.prevStep},"Back"),B.createElement(Ro,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?B.createElement(B.Fragment,null,B.createElement(Ro,{onClick:e.nextStep},"Next")):B.createElement(B.Fragment,null,B.createElement(Ro,{onClick:e.prevStep},"Back"),B.createElement(Ro,{onClick:e.nextStep},"Next"))}function Lx(e){return{resourceType:"QuestionnaireResponse",questionnaire:Wl(e),item:wa(e.item)}}function wa(e){return e?.map(Rx)??[]}function Rx(e){return{id:Jl(),linkId:e.linkId,text:e.text,item:wa(e.item),answer:e.initial?.map(Hx)??[]}}var Nx=1;function Jl(){return"id-"+Nx++}function Hx(e){return{...e}}function Vx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function qx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=uo({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),n=uo({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),f,{operator:l}=r;if(l==="exists")f=!!a===n.value;else if(a===void 0)f=!1;else{let s=l==="="||l==="!="?l?.replace("=","~"):l,[{value:i}]=Mx(`%actualAnswer ${s} %expectedAnswer`,[a],{actualAnswer:a,expectedAnswer:n});f=i}if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Gx(e){return e.filter(t=>Bx(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function Ux(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}function zx(e){let[o,t]=io(1),r=e.item;return B.createElement(B.Fragment,null,[...Array(o)].map((a,n)=>B.createElement("div",{key:n},B.createElement("h3",null,e.text),B.createElement(Xl,{items:r.item??[],answers:e.answers,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&B.createElement(Ul,{onClick:()=>t(a=>a+1)},"Add Group"))}function Wx(e){let[o,t]=io(1);return B.createElement(B.Fragment,null,[...Array(o)].map((r,a)=>B.createElement(B.Fragment,{key:`${e.item.linkId}-${a}`},e.children({index:a}))),e.item?.repeats&&B.createElement(Ul,{onClick:()=>t(r=>r+1)},"Add Item"))}function Qx(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function Xx(e,o){return e.length===0||e.length<o+1?Jl():e[o].id}var oI=$x(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function AM(e){let o=S(),t=Q(e.questionnaire),[r,a]=Zt(),[n,f]=Zt(),[l,s]=Zt(),[i,u]=Zt();function d(){u(void 0)}function c(){s(void 0)}return $l(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),$l(()=>(f(aI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:F.createElement("div",null,F.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},F.createElement(Kl,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),F.createElement(Jx,{type:"submit"},"Save")))}function Kl(e){let{classes:o,cx:t}=oI(),r=e.item,a=e.item,n=Yx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=eI();u.current=e.item;function d(g){H(g),e.setSelectedKey(e.item.id)}function c(g){H(g),e.setHoverKey(e.item.id)}function y(g){let C=u.current;e.onChange({...C,item:C.item?.map(O=>O.id===g.id?g:O)})}function b(g){e.onChange({...e.item,item:[...e.item.item??[],g]})}function A(g){e.onChange({...e.item,item:e.item.item?.filter(C=>C!==g)})}function I(g,C){e.onChange({...u.current,[g]:C})}function D(g){e.onChange({...e.item,item:e.item.item?.map(C=>C===g?{...C,repeats:!C.repeats}:C)})}let p=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return F.createElement("div",{"data-testid":a.linkId,className:p,onClick:d,onMouseOver:c},F.createElement("div",{className:o.questionBody},s?F.createElement(F.Fragment,null,n&&F.createElement(Oa,{size:"xl",defaultValue:r.title,onChange:g=>I("title",g.currentTarget.value)}),!n&&F.createElement(jx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:g=>I("text",g.currentTarget.value)}),a.type==="reference"&&F.createElement(rI,{item:a,onChange:g=>I("extension",g)}),El(a)&&F.createElement(tI,{options:a.answerOption,onChange:g=>I("answerOption",g)})):F.createElement(F.Fragment,null,r.title&&F.createElement(_x,null,r.title),a.text&&F.createElement("div",null,a.text),!f&&F.createElement(Ma,{item:a,index:0,answers:{},onChange:()=>{}}))),a.item?.map(g=>F.createElement("div",{key:g.id},F.createElement(Kl,{item:g,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:y,onRemove:()=>A(g),onRepeatable:D}))),!f&&F.createElement("div",{className:o.topActions},s?F.createElement(F.Fragment,null,F.createElement(Oa,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:g=>I("linkId",g.currentTarget.value)}),!f&&F.createElement(Kx,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:g=>I("type",g.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"}]})):F.createElement("div",null,l)),F.createElement("div",{className:o.bottomActions},f&&F.createElement(F.Fragment,null,F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),b({id:_e(),linkId:Ra("q"),type:"string",text:"Question"})}},"Add item"),F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),b({id:_e(),linkId:Ra("g"),type:"group",text:"Group"})}},"Add group")),n&&F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),b(fI())}},"Add Page"),s&&!n&&F.createElement(F.Fragment,null,F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function tI(e){let o=Zx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return F.createElement("div",null,t.map(r=>{let[a,n]=Se({type:"QuestionnaireItemAnswerOption",value:r},"value");return F.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Re,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),F.createElement("div",null,F.createElement(He,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),F.createElement(He,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:_e()}])}},"Add choice"))}function rI(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return F.createElement(F.Fragment,null,t.map(r=>F.createElement("div",{key:r.id},F.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Oa,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(s=>s.id===r.id),l=n[f].valueCodeableConcept?.coding?.[0]??[];l.display=a.target.value,l.code=a.target.value,e.onChange(n)}}))),F.createElement("div",null,F.createElement(He,{href:"#",onClick:a=>{H(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),F.createElement(He,{href:"#",onClick:r=>{H(r),e.onChange([...o,{id:_e(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Ea=1,La=1;function Ra(e){return e+Ea++}function _e(){return"id-"+La++}function aI(e){return{...e,id:e.id||_e(),item:jl(e.item)}}function jl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(La=Math.max(La,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ea=Math.max(Ea,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||_e(),item:jl(o.item),answerOption:nI(o.answerOption)}))}function nI(e){if(e)return e.map(o=>({...o,id:o.id||_e()}))}function fI(){return{id:_e(),linkId:Ra("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}import{ActionIcon as Yt,Button as lI,createStyles as sI,Divider as iI,Group as ut,NativeSelect as Na,Stack as er,Text as uI,TextInput as dI}from"@mantine/core";import{formatRange as _l,getCodeBySystem as cI}from"@medplum/core";import z,{useEffect as mI,useState as Ha}from"react";var pI=sI(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),xI=["gender","age","gestationalAge","context","appliesTo","category"],II={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function VM(e){e=Object.assign(II,e);let o=e.definition,[t,r]=Ha([]),[a,n]=Ha(1),[f,l]=Ha(1);return mI(()=>{let b=CI(o,l);r(yI(b.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(er,null,t.map(b=>z.createElement(gI,{unit:SI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:y,onRemoveGroup:u,key:`group-${b.id}`,intervalGroup:b}))),z.createElement(Yt,{title:"Add Group",size:"sm",onClick:b=>{H(b),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(A=>A+1)}},z.createElement(mo,null)),z.createElement(ut,{position:"right"},z.createElement(lI,{type:"submit"},"Save")));function s(){let b=t.flatMap(A=>A.intervals).filter(A=>!PI(A));e.onSubmit({...o,qualifiedInterval:b})}function i(b){r(A=>[...A,b])}function u(b){r(A=>A.filter(I=>I.id!==b.id))}function d(b,A){r(I=>{I=[...I];let D=I.find(g=>g.id===b),p=D?.intervals.findIndex(g=>g.id===A.id);return p!==void 0&&D?.intervals[p]&&(D.intervals[p]=A),I})}function c(b,A){A.id===void 0&&(A.id=`id-${f}`,l(I=>I+1)),r(I=>{I=[...I];let D=I.findIndex(p=>p.id===b);if(D!==-1){let p={...I[D]};A={...A,...p.filters},p.intervals=[...p.intervals,A],I[D]=p}return I})}function y(b,A){r(I=>{I=[...I];let D=I.find(p=>p.id===b);return D&&(D.intervals=D.intervals.filter(p=>p.id!==A.id)),I})}}function gI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=pI();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(er,{spacing:"lg"},z.createElement(ut,{position:"right"},z.createElement(Yt,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(Ue,null))),z.createElement(hI,{intervalGroup:o,onChange:e.onChange}),z.createElement(iI,null),o.intervals.map(a=>z.createElement(er,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ut,null,z.createElement(dI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(Yt,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(Ue,null))),z.createElement(ot,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(Yt,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(mo,null))))}function hI(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(er,{style:{maxWidth:"50%"}},z.createElement(ut,null,z.createElement(Na,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(ut,{spacing:"xs"},z.createElement(uI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(ot,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Na,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement(Na,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function CI(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function yI(e,o){let t=1,r={};for(let a of e){let n=vI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(xI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function vI(e){return[`gender=${e.gender}`,`age=${_l(e.age)}`,`gestationalAge=${_l(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function SI(e){return e&&(cI(e,"http://unitsofmeasure.org")||e.text)}function PI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Zl,Grid as or,Text as bI}from"@mantine/core";import{formatDateTime as DI,getReferenceString as TI}from"@medplum/core";import xe,{useEffect as kI,useState as Yl}from"react";function KM(e){let o=S(),t=Q(e.value),[r,a]=Yl(!1),[n,f]=Yl();if(kI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(or,null,t.action?.map((i,u)=>{let d=i.resource&&s(i.resource),c=d?.input?.[0]?.valueReference,y=d?.output?.[0]?.valueReference;return xe.createElement(xe.Fragment,{key:`action-${u}`},xe.createElement(or.Col,{span:1,p:"md"},d?.status==="completed"?xe.createElement(hr,null):xe.createElement(Rr,{color:"gray"})),xe.createElement(or.Col,{span:9,p:"xs"},xe.createElement(bI,{weight:500},i.title),i.description&&xe.createElement("div",null,i.description),xe.createElement("div",null,"Last edited by\xA0",xe.createElement(Oe,{value:d?.meta?.author}),"\xA0on\xA0",DI(d?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Nt,{status:d?.status||"unknown"}))),xe.createElement(or.Col,{span:2,p:"md"},c&&!y&&xe.createElement(Zl,{onClick:()=>e.onStart(d,c)},"Start"),c&&y&&xe.createElement(Zl,{onClick:()=>e.onEdit(d,c,y)},"Edit")))}));function l(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===TI(u.resource))return u.resource}}import{createStyles as EI}from"@mantine/core";import ve,{useEffect as LI,useState as RI}from"react";import{stringify as MI}from"@medplum/core";function tr(e,o){let t=BI(e,o);return AI(t,e,o)}function BI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,d=u+1,c=u-1,y=l[d],b=l[c],A,I=0;i===-s||i!==s&&b.i<y.i?(I=y.i,A=y):(I=b.i+1,A=b),l[c]=void 0;let D=I-i,p={i:I,j:D,prev:FI(A),snake:!1};for(;I<t&&D<r&&e[I]===o[D];)I++,D++;if(I>p.i&&(p={i:I,j:D,prev:p,snake:!0}),l[u]=p,I>=t&&D>=r)return l[u]}l[f+s-1]=void 0}}function AI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function FI(e){return e&&!e.snake&&e.prev?e.prev:e}function es(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:MI(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return wI(t,o),OI(t),t}function wI(e,o){for(let t=1;t<o.length;t++){let r=tr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function OI(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var NI=EI(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function lw(e){let{classes:o}=NI(),t=S(),[r,a]=RI(e.history);if(LI(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ve.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=es(r);return ve.createElement("div",{className:o.container},ve.createElement("table",{className:o.root},ve.createElement("tbody",null,f.map((l,s)=>ve.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&ve.createElement(ve.Fragment,null,ve.createElement("td",{className:o.author,rowSpan:l.span},ve.createElement(Je,{value:l.meta.author,link:!0})),ve.createElement("td",{className:o.dateTime,rowSpan:l.span},ve.createElement(ne,{to:HI(n,l.meta.versionId)},VI(l.meta.lastUpdated)))),ve.createElement("td",{className:o.lineNumber},s+1),ve.createElement("td",{className:o.line},ve.createElement("pre",{className:o.pre},l.value)))))))}function HI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function VI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return No(t,"year");let r=Math.floor(o/2592e3);if(r>0)return No(r,"month");let a=Math.floor(o/86400);if(a>0)return No(a,"day");let n=Math.floor(o/3600);if(n>0)return No(n,"hour");let f=Math.floor(o/60);return f>0?No(f,"minute"):No(o,"second")}function No(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as qI}from"@mantine/core";import{stringify as os}from"@medplum/core";import Ze from"react";var GI=qI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function pw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=os(o,!0).match(/[^\r\n]+/g),a=os(t,!0).match(/[^\r\n]+/g),n=tr(r,a);return Ze.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>Ze.createElement(UI,{key:"delta"+l,delta:f})))}function UI(e){let{classes:o}=GI();return Ze.createElement(Ze.Fragment,null,"...",Ze.createElement("br",null),e.delta.original.lines.length>0&&Ze.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
+ `)),e.delta.revised.lines.length>0&&Ze.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
+ `)),"...",Ze.createElement("br",null))}import{Table as zI}from"@mantine/core";import{formatDateTime as WI,normalizeErrorString as QI}from"@medplum/core";import ie,{useEffect as XI,useState as JI}from"react";function Sw(e){let o=S(),[t,r]=JI(e.history);return XI(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ie.createElement(zI,{withBorder:!0,withColumnBorders:!0},ie.createElement("thead",null,ie.createElement("tr",null,ie.createElement("th",null,"Author"),ie.createElement("th",null,"Date"),ie.createElement("th",null,"Version"))),ie.createElement("tbody",null,t.entry?.map((a,n)=>ie.createElement($I,{key:"entry-"+n,entry:a})))):ie.createElement("div",null,"Loading...")}function $I(e){let{response:o,resource:t}=e.entry;return t?ie.createElement("tr",null,ie.createElement("td",null,ie.createElement(Je,{value:t.meta?.author,link:!0})),ie.createElement("td",null,WI(t.meta?.lastUpdated)),ie.createElement("td",null,ie.createElement(ne,{to:KI(t)},t.meta?.versionId))):ie.createElement("tr",null,ie.createElement("td",{colSpan:3},QI(o?.outcome)))}function KI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as jI,createStyles as _I,Stack as ZI,Text as YI}from"@mantine/core";import{getReferenceString as eg}from"@medplum/core";import Z,{useEffect as og,useRef as tg,useState as dt}from"react";var rg=_I(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function Ow(e){let{classes:o}=rg(),t=S(),r=Q(e.schedule),a=Q(e.questionnaire),[n,f]=dt(),l=tg();l.current=n;let[s,i]=dt(na()),[u,d]=dt(),[c,y]=dt(),[b,A]=dt();if(og(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",eg(r)],["start","gt"+ag(s)],["start","lt"+ng(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let I=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},I&&Z.createElement(Ce,{value:I,size:"xl"}),I&&Z.createElement(YI,{size:"xl",weight:500},Z.createElement(Oe,{value:I})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),c&&Z.createElement("p",null,ts(new Date(c.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(Df,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(ZI,null,n.map(D=>{let p=new Date(D.start);return p.getTime()>u.getTime()&&p.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:D.id},Z.createElement(jI,{variant:"outline",style:{width:150},onClick:()=>y(D)},ts(p)))}))),u&&c&&!b&&Z.createElement(Ql,{questionnaire:a,submitButtonText:"Next",onSubmit:A}),u&&c&&b&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function ag(e){return rs(e.getTime())}function ng(e){return rs(e.getTime()+31*24*60*60*1e3)}function rs(e){return new Date(Math.max(Date.now(),e)).toISOString()}function ts(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as rr}from"@medplum/core";import fg from"react";function qw(e){return fg.createElement(Ke,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[rr(o)],subject:o.subject,sender:rr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[rr(o)],subject:o.subject,operator:rr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as kg}from"@medplum/core";import ir,{useEffect as Bg,useState as ds}from"react";import{Anchor as as,Button as lg,Center as sg,Group as ig,Stack as ug,Text as dg,TextInput as cg,Title as mg}from"@mantine/core";import{normalizeOperationOutcome as pg}from"@medplum/core";import Ae,{useState as xg}from"react";function ar(e){let o=S(),[t,r]=xg();return Ae.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(pg(n))}}},Ae.createElement(sg,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(mg,null,"Create project")),Ae.createElement(ug,{spacing:"xl"},Ae.createElement(cg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Ae.createElement(dg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(as,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(as,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(ig,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(lg,{type:"submit"},"Create project")))}import{Anchor as sr,Button as Cg,Center as yg,Checkbox as vg,Divider as Sg,Group as ls,PasswordInput as Pg,Stack as bg,Text as ss,TextInput as qa}from"@mantine/core";import{normalizeOperationOutcome as is}from"@medplum/core";import j,{useEffect as Dg,useState as Tg}from"react";import Ig,{useEffect as gg,useRef as hg,useState as Va}from"react";function nr(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function fr(e){let o=S(),{googleClientId:t,handleGoogleCredential:r}=e,a=hg(null),[n,f]=Va(typeof google<"u"),[l,s]=Va(!1),[i,u]=Va(!1);return gg(()=>{if(typeof google>"u"){nr("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?Ig.createElement("div",{ref:a}):null}function lr(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function ns(e){typeof grecaptcha>"u"&&nr("https://www.google.com/recaptcha/api.js?render="+e)}function fs(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function us(e){let o=lr(e.googleClientId),t=e.recaptchaSiteKey,r=S(),[a,n]=Tg(),f=At(a,void 0);return Dg(()=>{t&&ns(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await fs(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(is(s))}}},j.createElement(yg,{sx:{flexDirection:"column"}},e.children),j.createElement(Lo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ls,{position:"center",p:"xl",style:{height:70}},j.createElement(fr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(is(s))}}})),j.createElement(Sg,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(bg,{spacing:"xl"},j.createElement(qa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),j.createElement(qa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),j.createElement(qa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),j.createElement(Pg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(ss,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(sr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(sr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(ss,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(sr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(sr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ls,{position:"apart",mt:"xl",noWrap:!0},j.createElement(vg,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(Cg,{type:"submit"},"Create account")))}function PO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=S(),[s,i]=ds(void 0),[u,d]=ds();Bg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(y=>l.processCode(y.code)).then(()=>f()).catch(y=>d(kg(y)))},[l,o,t,s,f]);function c(y){y.code?l.processCode(y.code).then(()=>f()).catch(console.log):y.login&&i(y.login)}return ir.createElement(qt,{width:450},u&&ir.createElement("pre",null,JSON.stringify(u,null,2)),!s&&ir.createElement(us,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&ir.createElement(ar,{login:s,handleAuthResponse:c}))}import{showNotification as Ps}from"@mantine/notifications";import{normalizeErrorString as bs}from"@medplum/core";import co,{useCallback as Ua,useEffect as ah,useState as za}from"react";import{Anchor as cs,Button as ms,Center as ps,Checkbox as Ag,Divider as Fg,Group as Ga,PasswordInput as Mg,Stack as wg,TextInput as Og}from"@mantine/core";import{normalizeOperationOutcome as Eg}from"@medplum/core";import K,{useCallback as ur,useState as xs}from"react";function Is(e){let[o,t]=xs();return o?K.createElement(Rg,{email:o,...e}):K.createElement(Lg,{setEmail:t,...e})}function Lg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=S(),s=!e.disableGoogleAuth&&lr(e.googleClientId),i=ur(async c=>{if(!c.authorizeUrl)return!1;let y=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),b=new URL(c.authorizeUrl);return b.searchParams.set("state",y),window.location.assign(b.toString()),!0},[l,f]),u=ur(async c=>{let y=await l.post("auth/method",{email:c.email});await i(y)||o(c.email)},[l,i,o]),d=ur(async c=>{let y=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(y)||r(y)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(ps,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Ga,{position:"center",p:"xl",style:{height:70}},K.createElement(fr,{googleClientId:s,handleGoogleCredential:d})),!n&&K.createElement(Fg,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Og,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Ga,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(cs,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(ms,{type:"submit"},"Next")))}function Rg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=S(),[f,l]=xs(),s=At(f,void 0),i=ur(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>l(Eg(d)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(ps,{sx:{flexDirection:"column"}},r),K.createElement(Lo,{issues:s}),K.createElement(wg,{spacing:"xl"},K.createElement(Mg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(Ga,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(cs,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(Ag,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ms,{type:"submit"},"Sign in")))}import{Avatar as Ng,Center as Hg,Group as Vg,Stack as qg,Text as gs,Title as Gg,UnstyledButton as Ug}from"@mantine/core";import{normalizeOperationOutcome as zg}from"@medplum/core";import Fe,{useState as Wg}from"react";function hs(e){let o=S(),[t,r]=Wg();return Fe.createElement(qg,null,Fe.createElement(Hg,{sx:{flexDirection:"column"}},Fe.createElement(je,{size:32}),Fe.createElement(Gg,{order:3},"Choose profile")),Fe.createElement(Lo,{outcome:t}),e.memberships.map(a=>Fe.createElement(Ug,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(zg(n)))}},Fe.createElement(Vg,null,Fe.createElement(Ng,{radius:"xl"}),Fe.createElement("div",{style:{flex:1}},Fe.createElement(gs,{size:"sm",weight:500},a.profile?.display),Fe.createElement(gs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Qg,Center as Xg,Checkbox as Jg,Group as $g,Stack as Cs,Title as Kg}from"@mantine/core";import Ve from"react";function ys(e){let o=S();return Ve.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ve.createElement(Cs,null,Ve.createElement(Xg,{sx:{flexDirection:"column"}},Ve.createElement(je,{size:32}),Ve.createElement(Kg,null,"Choose scope")),Ve.createElement(Cs,null,(e.scope??"openid").split(" ").map(t=>Ve.createElement(Jg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ve.createElement($g,{position:"right",mt:"xl"},Ve.createElement(Qg,{type:"submit"},"Set scope"))))}import{Alert as jg,Button as _g,Center as Zg,Group as Yg,Stack as vs,TextInput as eh,Title as oh}from"@mantine/core";import{normalizeErrorString as th}from"@medplum/core";import Me,{useState as rh}from"react";function Ss(e){let o=S(),[t,r]=rh(void 0);return Me.createElement(J,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(th(n)))}},Me.createElement(vs,null,Me.createElement(Zg,{sx:{flexDirection:"column"}},Me.createElement(je,{size:32}),Me.createElement(oh,null,"Enter MFA code")),t&&Me.createElement(jg,{icon:Me.createElement(oo,{size:16}),title:"Error",color:"red"},t),Me.createElement(vs,null,Me.createElement(eh,{name:"token",label:"MFA code",required:!0})),Me.createElement(Yg,{position:"right",mt:"xl"},Me.createElement(_g,{type:"submit"},"Submit code"))))}function C0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=S(),[i,u]=za(void 0),[d,c]=za(!1),[y,b]=za(void 0),A=Ua(p=>{f?f(p):s.processCode(p).then(()=>{r&&r()}).catch(g=>Ps({color:"red",message:bs(g)}))},[s,f,r]),I=Ua(p=>{c(!!p.mfaRequired),p.login&&u(p.login),p.memberships&&b(p.memberships),p.code&&(t?b(void 0):A(p.code))},[t,A]),D=Ua(p=>{A(p.code)},[A]);return ah(()=>{o&&!i&&s.get("auth/login/"+o).then(I).catch(p=>Ps({color:"red",message:bs(p)}))},[s,o,i,I]),co.createElement(qt,{width:450},(()=>i?d?co.createElement(Ss,{login:i,handleAuthResponse:I}):y?co.createElement(hs,{login:i,memberships:y,handleAuthResponse:I}):e.projectId==="new"?co.createElement(ar,{login:i,handleAuthResponse:I}):e.chooseScopes?co.createElement(ys,{login:i,scope:e.scope,handleAuthResponse:D}):co.createElement("div",null,"Success"):co.createElement(Is,{onForgotPassword:a,onRegister:n,handleAuthResponse:I,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Qa as AddressDisplay,Ka as AddressInput,Za as AnnotationInput,NS as AppShell,vo as AsyncAutocomplete,Bn as AttachmentArrayDisplay,Fn as AttachmentArrayInput,Po as AttachmentButton,we as AttachmentDisplay,vt as AttachmentInput,_o as BackboneElementDisplay,et as BackboneElementInput,Df as CalendarInput,Bt as CheckboxFormSection,yt as CodeInput,Do as CodeableConceptDisplay,jn as CodeableConceptInput,Rn as CodingDisplay,_n as CodingInput,Hn as ContactDetailDisplay,Yn as ContactDetailInput,Pt as ContactPointDisplay,Mt as ContactPointInput,Xe as Container,Be as DateTimeInput,SB as DefaultResourceTimeline,wn as DescriptionList,On as DescriptionListEntry,ia as DiagnosticReportDisplay,qt as Document,bc as ElementDefinitionInputSelector,Sf as ElementDefinitionTypeInput,EB as EncounterTimeline,go as ErrorBoundary,fx as FhirPathTable,J as Form,Pe as FormSection,Sn as Header,gt as HumanNameDisplay,tf as HumanNameInput,Vn as IdentifierDisplay,af as IdentifierInput,Gr as Loading,je as Logo,ne as MedplumLink,mh as MedplumProvider,CF as MemoizedFhirPathTable,sF as MemoizedSearchControl,Gn as MoneyDisplay,nf as MoneyInput,kn as Navbar,sm as ObservationTable,Lo as OperationOutcomeAlert,Ao as Panel,wF as PatientTimeline,KF as PlanDefinitionBuilder,jo as QuantityDisplay,be as QuantityInput,AM as QuestionnaireBuilder,Ql as QuestionnaireForm,Ma as QuestionnaireFormItem,Ol as QuestionnaireItemType,ql as QuestionnaireRepeatWrapper,bt as RangeDisplay,ot as RangeInput,ro as ReferenceDisplay,ko as ReferenceInput,VM as ReferenceRangeEditor,gI as ReferenceRangeGroupEditor,PO as RegisterForm,KM as RequestGroupDisplay,Qn as ResourceArrayDisplay,If as ResourceArrayInput,Ce as ResourceAvatar,Je as ResourceBadge,lw as ResourceBlame,pw as ResourceDiff,Lb as ResourceForm,Sw as ResourceHistoryTable,Et as ResourceInput,Oe as ResourceName,ce as ResourcePropertyDisplay,Re as ResourcePropertyInput,ua as ResourceTable,Ke as ResourceTimeline,Ow as Scheduler,ba as SearchChangeEvent,lo as SearchClickEvent,jp as SearchControl,ul as SearchFieldEditor,Il as SearchFilterEditor,Da as SearchLoadEvent,qw as ServiceRequestTimeline,C0 as SignInForm,Nt as StatusBadge,Nf as Timeline,$e as TimelineItem,vf as TimingInput,Ia as addDateFilterBetween,_B as addField,wo as addFilter,el as addLastMonthFilter,ga as addMissingFilter,tl as addNextMonthFilter,ol as addThisMonthFilter,Zf as addTodayFilter,Yf as addTomorrowFilter,rl as addYearToDateFilter,_f as addYesterdayFilter,ye as buildFieldNameString,jB as clearFilters,zt as clearFiltersOnField,yd as convertIsoToLocal,vd as convertLocalToIso,nr as createScriptTag,jf as deleteFilter,me as getErrorsForInput,At as getIssuesForExpression,Oc as getMonthString,at as getOpString,fs as getRecaptcha,ll as getSearchOperators,nl as getSortField,na as getStartMonth,VI as getTimeString,Se as getValueAndType,ns as initRecaptcha,El as isChoiceQuestion,qx as isQuestionEnabled,fl as isSortDescending,Pn as parseForm,sl as renderValue,rt as setFilters,sp as setOffset,al as setPage,Yo as setPropertyValue,ha as setSort,qf as sortByDateAndPriority,ZB as toggleSort,S as useMedplum,Uo as useMedplumContext,Ge as useMedplumNavigate,mt as useMedplumProfile,Q as useResource};
68
68
  //# sourceMappingURL=index.mjs.map