@medplum/react 2.0.30 → 2.0.31

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 bs}from"@medplum/core";import Wa from"react";function Xa(e){let o=e.value;return o?Wa.createElement(Wa.Fragment,null,bs(o)):null}import{Group as Ds,NativeSelect as Qa,TextInput as qo}from"@mantine/core";import Ve,{useRef as Ts,useState as ks}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]=ks(e.defaultValue||{}),r=Ts();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 m(c){a({...r.current,postalCode:c})}return Ve.createElement(Ds,{spacing:"xs",grow:!0,noWrap:!0},Ve.createElement(Qa,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ve.createElement(Qa,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ve.createElement(qo,{placeholder:"Line 1",defaultValue:Ja(o,0),onChange:c=>l(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"Line 2",defaultValue:Ja(o,1),onChange:c=>s(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>m(c.currentTarget.value)}))}import{TextInput as Ls}from"@mantine/core";import{createReference as Rs}from"@medplum/core";import Ns,{useRef as Hs,useState as Vs}from"react";import{showNotification as Bs}from"@mantine/notifications";import As,{createContext as Fs,useContext as Ms,useEffect as ja,useMemo as ws,useState as Os}from"react";var _a=Fs(void 0);function nh(e){let o=e.medplum,t=e.navigate??Es,[r,a]=Os({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(){Bs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=ws(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return As.createElement(_a.Provider,{value:n},e.children)}function Uo(){return Ms(_a)}function v(){return Uo().medplum}function qe(){return Uo().navigate}function mt(){return Uo().profile}function Es(e){window.location.assign(e)}function Za(e){let o=mt(),[t,r]=Vs(e.defaultValue||{}),a=Hs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Rs(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Ns.createElement(Ls,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Iu,useMantineTheme as gu}from"@mantine/core";import to,{Suspense as hu,useState as Cu}from"react";import{Alert as Qs}from"@mantine/core";import{normalizeErrorString as Js}from"@medplum/core";import{forwardRef as qs,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 Us=Object.defineProperty,Gs=Object.defineProperties,zs=Object.getOwnPropertyDescriptors,pt=Object.getOwnPropertySymbols,rn=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,on=(e,o,t)=>o in e?Us(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},Ws=(e,o)=>Gs(e,zs(o)),Xs=(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=qs((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,m=Xs(f,["color","size","stroke","children"]);return en("svg",tn(Ws(tn({ref:n},Ya),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),m),[...t.map(([c,h])=>en(c,h)),...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 cr=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 mr=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 pr=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 xr=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 Ir=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 gr=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 hr=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 Go=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Cr=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 yr=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 co=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 zo=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 vr=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 Sr=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 Pr=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 br=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 Dr=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 mo=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 po=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Tr=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 kr=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 Br=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 Ar=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 Fr=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 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 wr=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 Or=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 Er=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Lr=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 Rr=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 xo=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 Wo=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 Nr=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 Hr=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 Vr=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 Qo=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 qr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Ur from"react";var Io=class extends Ur.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?Ur.createElement(Qs,{icon:Ur.createElement(oo,{size:16}),title:"Something went wrong",color:"red"},Js(this.state.error)):this.props.children}};import{Center as $s,Loader as Ks}from"@mantine/core";import nn from"react";function Gr(){return nn.createElement($s,{style:{width:"100%",height:"100vh"}},nn.createElement(Ks,null))}import{Avatar as wi,createStyles as Oi,Group as Ct,Header as Ei,Menu as Le,Stack as Li,Text as Jo,UnstyledButton as yn}from"@mantine/core";import{formatHumanName as Ri,getReferenceString as vn}from"@medplum/core";import G,{useState as Ni}from"react";import{formatHumanName as js}from"@medplum/core";import fn from"react";function gt(e){let o=e.value;return o?fn.createElement(fn.Fragment,null,js(o,e.options)):null}import{Avatar as cn}from"@mantine/core";import{getDisplayString as ui,getImageSrc as di}from"@medplum/core";import zr from"react";import{Anchor as _s}from"@mantine/core";import{isReference as Zs,isResource as Ys}from"@medplum/core";import ei 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=qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=oi(t);return r&&(s+="/"+r),ei.createElement(_s,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function oi(e){if(e){if(typeof e=="string")return ti(e);if(Ys(e))return ri(e);if(Zs(e))return ai(e)}return"#"}function ti(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ri(e){return`/${e.resourceType}/${e.id}`}function ai(e){return`/${e.reference}`}import{deepEquals as ni,isReference as dn,isResource as fi,normalizeOperationOutcome as li}from"@medplum/core";import{useCallback as si,useEffect as sn,useState as ii}from"react";function X(e,o){let t=v(),[r,a]=ii(un(t,e)),n=si(f=>{ni(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(li(l)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(fi(o))return o;if(dn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?ui(o):e.alt??"",r=(o&&di(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?zr.createElement(ne,{to:o},zr.createElement(cn,{src:r,alt:t,radius:a,...n})):zr.createElement(cn,{src:r,alt:t,radius:a,...n})}import{createStyles as hi,Group as Ci,Text as pn}from"@mantine/core";import{formatHumanName as yi,getDisplayString as hn,getReferenceString as vi,isUUID as Si}from"@medplum/core";import Ge,{forwardRef as Pi,useCallback as xn}from"react";import{Loader as ci,MultiSelect as mi}from"@mantine/core";import mn,{useCallback as go,useEffect as pi,useRef as ho,useState as Co}from"react";import{showNotification as xi}from"@mantine/notifications";import{normalizeErrorString as Ii}from"@medplum/core";function yo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=gi(o),u=ho(null),[m,c]=Co(void 0),[h,P]=Co(),[k,I]=Co(),[b,d]=Co(),[w,y]=Co(i.map(r)),[O,Ie]=Co([]),ge=ho();ge.current=m;let ue=ho();ue.current=h;let Y=ho();Y.current=k;let No=ho();No.current=b;let C=ho();C.current=O;let N=go(()=>{P(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),No.current&&(de.length>0&&n(de.slice(0,1)),d(!1)))}).catch(de=>{ae.signal.aborted||de.message.includes("aborted")||xi({color:"red",message:Ii(de)})})},[a,n,r]),Te=go(()=>{Y.current&&(Y.current.abort(),I(void 0)),ue.current!==void 0&&window.clearTimeout(ue.current);let _=window.setTimeout(()=>N(),100);P(_)},[N]),he=go(_=>{let ae=[],de=[];for(let Ho of _){let ct=C.current?.find(Ps=>Ps.value===Ho),Vo=ct?.resource;!Vo&&l!==!1&&f&&(Vo=f(Ho),ct=r(Vo)),Vo&&ae.push(Vo),ct&&de.push(ct)}n(ae),y(de)},[l,n,f,r]),Ye=go(_=>{_.key==="Enter"&&(!ue.current&&!Y.current?(H(_),C.current&&C.current.length>0&&(Ie(C.current.slice(0,1)),he([C.current[0].value]))):d(!0))},[he]),D=go(_=>{let ae=r(f(_));return Ie([...C.current,ae]),ae},[f,Ie,r]),W=go((_,ae)=>!ae,[]);return pi(()=>()=>{Y.current&&Y.current.abort()},[]),mn.createElement(mi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:Ye,onSearchChange:Te,data:[...w,...O],onFocus:N,onChange:he,onCreate:D,rightSectionWidth:40,rightSection:k?mn.createElement(ci,{size:16}):null,filter:W,creatable:!0})}function gi(e){return e?Array.isArray(e)?e:[e]:[]}var bi=hi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Di(e){return e.id}function Ti(e){return{value:e.id,label:hn(e),resource:e}}function Cn(e){let{classes:o}=bi(),t=qe(),r=v(),a=xn(async(f,l)=>{let s=Bi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Ai(u,f)},[r]),n=xn(f=>{f.length>0&&t(`/${vi(f[0])}`)},[t]);return Ge.createElement(yo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ge.createElement(Rr,{size:16}),placeholder:"Search",itemComponent:ki,toKey:Di,toOption:Ti,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var ki=Pi(({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(Ci,{noWrap:!0},Ge.createElement(Ce,{value:e}),Ge.createElement("div",null,Ge.createElement(pn,null,hn(e)),Ge.createElement(pn,{size:"xs",color:"dimmed"},r))))});function Bi(e){let o=JSON.stringify(e);return Si(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 Ai(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),Mi(Fi(t),o).slice(0,5)}function Fi(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 Mi(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(yi(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 Hi=Oi(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}=Hi(),[s,i]=Ni(!1);return G.createElement(Ei,{height:60,p:8,style:{zIndex:101}},G.createElement(Ct,{position:"apart"},G.createElement(Ct,{spacing:"xs"},G.createElement(yn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),G.createElement(Cn,{pathname:e.pathname,searchParams:e.searchParams})),G.createElement(Le,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},G.createElement(Le.Target,null,G.createElement(yn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},G.createElement(Ct,{spacing:7},G.createElement(Ce,{value:r,radius:"xl",size:24}),G.createElement(Jo,{size:"sm",className:f.userName},Ri(r?.name?.[0])),G.createElement(yr,{size:12,stroke:1.5})))),G.createElement(Le.Dropdown,null,G.createElement(Li,{align:"center",p:"xl"},G.createElement(Ce,{size:"xl",radius:100,value:o.profile}),G.createElement(gt,{value:o.profile?.name?.[0]}),G.createElement(Jo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&G.createElement(Le.Divider,null),n.map(u=>u.profile.reference!==vn(o.profile)&&G.createElement(Le.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},G.createElement(Ct,null,G.createElement(wi,{radius:"xl"}),G.createElement("div",{style:{flex:1}},G.createElement(Jo,{size:"sm",weight:500},u.profile.display),G.createElement(Jo,{color:"dimmed",size:"xs"},u.project.display))))),G.createElement(Le.Divider,null),G.createElement(Le.Item,{icon:G.createElement(Hr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),G.createElement(Le.Item,{icon:G.createElement(xo,{size:14,stroke:1.5}),onClick:()=>a(`/${vn(r)}`)},"Account settings"),G.createElement(Le.Item,{icon:G.createElement(Fr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),G.createElement(Jo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as fu,createStyles as lu,Navbar as Xr,ScrollArea as su,Space as iu,Text as uu}from"@mantine/core";import re,{useState as du}from"react";import{Button as Gi,Group as zi,Modal as Wi,NativeSelect as Xi,Stack as Qi,TextInput as Ji}from"@mantine/core";import{showNotification as bn}from"@mantine/notifications";import{deepClone as $i,normalizeErrorString as Ki}from"@medplum/core";import ze from"react";import Ui from"react";function Pn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Vi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&qi(o,t);return o}function Vi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function qi(e,o){e[o.name]=o.value}function J(e){return Ui.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=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=$i(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:Ki(u)})})}return ze.createElement(Wi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},ze.createElement(J,{onSubmit:r},ze.createElement(Qi,null,ze.createElement(ji,{config:t}),ze.createElement(Ji,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),ze.createElement(zi,{position:"right"},ze.createElement(Gi,{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(Xi,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import tu,{useState as ru}from"react";import _i,{useCallback as Zi}from"react";function Wr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Yi(e){return typeof e.display=="string"?e.display:Wr(e)}function eu(e){return{value:Wr(e),label:Yi(e),resource:e}}function ou(e){return{code:e,display:e}}function vo(e){let o=v(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=Zi(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(P=>P.code===h.code)&&c.push(h);return c},[o,t]);return _i.createElement(yo,{...n,creatable:r??!0,clearable:a??!0,toKey:Wr,toOption:eu,loadOptions:f,onCreate:ou,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function yt(e){let[o,t]=ru(e.defaultValue);function r(a){let n=a[0],f=nu(n);t(f),e.onChange&&e.onChange(f)}return tu.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:au(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function au(e){return e?{code:e}:void 0}function nu(e){return e?.code}var Tn=lu(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=qe(),r=pu(e.pathname,e.searchParams,e.menus),[a,n]=du(!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(Xr,{width:{sm:250},p:"xs"},re.createElement(su,null,re.createElement(Xr.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(Xr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(uu,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(cu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(mu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(fu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Er,{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 cu(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 mu(e){return e.icon?e.icon:re.createElement(iu,{w:30})}function pu(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=xu(e,o,f.href);l>a&&(a=l,r=f)}return r}function xu(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 AS(e){let o=gu(),[t,r]=Cu(localStorage.navbarOpen==="true"),a=v(),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(Iu,{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(Io,{key:`${e.pathname}?${e.searchParams?.toString()}`},to.createElement(hu,{fallback:to.createElement(Gr,null)},e.children)))}import Qr from"react";import{Anchor as yu}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(yu,{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 Su,useState as Pu}from"react";import Jr,{useRef as vu}from"react";function So(e){let o=v(),t=vu(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 Jr.createElement(Jr.Fragment,null,Jr.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]=Pu(e.defaultValue??[]),r=Su();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(So,{onUpload:n=>{a([...r.current,n])}},n=>fe.createElement(An,{...n,title:"Add",size:"sm",color:"green"},fe.createElement(zo,{size:16})))))))}import{Button as Mn}from"@mantine/core";import Po,{useState as bu}from"react";function vt(e){let[o,t]=bu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Po.createElement(Po.Fragment,null,Po.createElement(we,{value:o,maxWidth:200}),Po.createElement(Mn,{onClick:a=>{H(a),r(void 0)}},"Remove")):Po.createElement(So,{onUpload:r},a=>Po.createElement(Mn,{...a},"Upload..."))}import{getPropertyDisplayName as zu,globalSchema as Wu}from"@medplum/core";import _o from"react";var St=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Du}from"@mantine/core";import $o from"react";var Tu=Du(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}=Tu();return $o.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function On(e){return $o.createElement($o.Fragment,null,$o.createElement("dt",null,e.term),$o.createElement("dd",null,e.children))}import{formatDateTime as Eu,formatPeriod as Lu,formatTiming as Ru,getElementDefinitionTypeName as Nu,getTypedPropertyValue as Hu,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as ku}from"@medplum/core";import En from"react";function bo(e){return En.createElement(En.Fragment,null,ku(e.value))}import{formatCoding as Bu}from"@medplum/core";import Ln from"react";function Rn(e){return Ln.createElement(Ln.Fragment,null,Bu(e.value))}import $r 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?$r.createElement($r.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>$r.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Au from"react";function Vn(e){return Au.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Fu}from"@medplum/core";import qn from"react";function Un(e){return qn.createElement(qn.Fragment,null,Fu(e.value))}import{formatQuantity as Mu}from"@medplum/core";import Gn from"react";function Ko(e){return Gn.createElement(Gn.Fragment,null,Mu(e.value))}import{formatRange as wu}from"@medplum/core";import zn from"react";function bt(e){return zn.createElement(zn.Fragment,null,wu(e.value))}import Dt from"react";function Wn(e){let o=e.value;return o?Dt.createElement(Dt.Fragment,null,Dt.createElement(Ko,{value:o.numerator}),"\xA0/\xA0",Dt.createElement(Ko,{value:o.denominator})):null}import{stringify as Ou}from"@medplum/core";import Kr from"react";function ro(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Ou(e.value);return e.link!==!1&&e.value.reference?Kr.createElement(ne,{to:e.value},o):Kr.createElement(Kr.Fragment,null,o)}import Tt from"react";function Xn(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 Vu,Box as qu,CopyButton as Uu,Tooltip as Gu}from"@mantine/core";function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(qu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Uu,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(Gu,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Vu,{color:n?"teal":"gray",onClick:f},n?E.createElement(Go,{size:"1rem"}):E.createElement(Sr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?E.createElement(Bn,{values:r,maxWidth:e.maxWidth}):E.createElement(Xn,{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,Eu(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(Xa,{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(bo,{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(Un,{value:r});case V.Period:return E.createElement(E.Fragment,null,Lu(r));case V.Quantity:case V.Duration:return E.createElement(Ko,{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,Ru(r));case V.Dosage:case V.UsageContext:return E.createElement(jo,{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(jo,{value:{type:Nu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Se(e,o){let t=Hu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function jo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Wu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?_o.createElement("div",null,t.name):_o.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:_o.createElement(On,{key:f,term:zu(f)},_o.createElement(ce,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):_o.createElement("div",null,r,"\xA0not implemented")}import{Stack as bc}from"@mantine/core";import{getPropertyDisplayName as Pf,globalSchema as Dc}from"@medplum/core";import ko,{useState as Tc}from"react";import{Group as Xu,Input as Qu}from"@mantine/core";import kt from"react";function Bt(e){return kt.createElement(Xu,{noWrap:!0},kt.createElement("div",null,e.children),kt.createElement("div",null,kt.createElement(Qu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ju}from"@mantine/core";import $u from"react";function me(e,o){return e?.issue?.filter(t=>Qn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function At(e,o){return e?.issue?.filter(t=>Qn(t.expression?.[0],o))}function Qn(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 $u.createElement(Ju.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 Ku,Stack as ju,TextInput as $n}from"@mantine/core";import{capitalize as _u,deepClone as Zu}from"@medplum/core";import ke,{useEffect as Yu,useState as Kn}from"react";function kb(e){let o=v(),t=X(e.defaultValue),[r,a]=Kn(),[n,f]=Kn();return Yu(()=>{t&&(f(Zu(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($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(Yo,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),ke.createElement(Ku,{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 Zo(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 xc,Group as Ic,NativeSelect as gc,Textarea as hc,TextInput as aa}from"@mantine/core";import{capitalize as Cc,getElementDefinitionTypeName as yc,PropertyType as L}from"@medplum/core";import U,{useState as vc}from"react";import ed,{useState as od}from"react";function jn(e){let[o,t]=od(e.defaultValue);function r(a){let n=rd(a);t(n),e.onChange&&e.onChange(n)}return ed.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&td(o),maxSelectedValues:1,onChange:r})}function td(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function rd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import ad,{useState as nd}from"react";function _n(e){let[o,t]=nd(e.defaultValue);function r(a){let n=a[0],f=n&&ld(n);t(f),e.onChange&&e.onChange(f)}return ad.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&fd(o),maxSelectedValues:1,onChange:r})}function fd(e){return{system:e.system,code:e.code,display:e.display}}function ld(e){return{system:e.system,code:e.code,display:e.display}}import{Group as cd,TextInput as md}from"@mantine/core";import jr,{useRef as pd,useState as xd}from"react";import{Group as sd,NativeSelect as Zn,TextInput as id}from"@mantine/core";import Ft,{useRef as ud,useState as dd}from"react";function Mt(e){let[o,t]=dd(e.defaultValue),r=ud();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(sd,{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(id,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Yn(e){let[o,t]=xd(e.defaultValue),r=pd();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 jr.createElement(cd,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(md,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),jr.createElement(Mt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Id}from"@mantine/core";import{isValidDate as ef}from"@medplum/core";import gd from"react";function Be(e){return gd.createElement(Id,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:yd(),defaultValue:hd(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Cd(t))}}})}function hd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Cd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toISOString():""}function yd(){return"datetime-local"}import{JsonInput as vd}from"@mantine/core";import{stringify as Sd}from"@medplum/core";import Pd from"react";function of(e){return Pd.createElement(vd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Sd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as bd,NativeSelect as Dd,TextInput as wt}from"@mantine/core";import Do,{useRef as Td,useState as kd}from"react";function tf(e){let[o,t]=kd(e.defaultValue),r=Td();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 Do.createElement(bd,{spacing:"xs",grow:!0,noWrap:!0},Do.createElement(Dd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Do.createElement(wt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Do.createElement(wt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),Do.createElement(wt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),Do.createElement(wt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Bd,TextInput as rf}from"@mantine/core";import _r,{useState as Ad}from"react";function af(e){let[o,t]=Ad(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return _r.createElement(Bd,{spacing:"xs",grow:!0,noWrap:!0},_r.createElement(rf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),_r.createElement(rf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Fd,TextInput as Md}from"@mantine/core";import Zr,{useCallback as Yr,useState as wd}from"react";var Od=["USD","EUR","CAD","GBP","AUD"];function nf(e){let{onChange:o}=e,[t,r]=wd(e.defaultValue),a=Yr(s=>{r(s),o&&o(s)},[o]),n=Yr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Yr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Zr.createElement(Fd,{defaultValue:t?.currency,data:Od,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Zr.createElement(Md,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:Zr.createElement(Pr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Ed}from"@mantine/core";import ea,{useState as Ld}from"react";function ff(e){let[o,t]=Ld(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ea.createElement(Ed,{spacing:"xs",grow:!0,noWrap:!0},ea.createElement(Be,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),ea.createElement(Be,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Rd,NativeSelect as Nd,TextInput as lf}from"@mantine/core";import Ot,{useState as Hd}from"react";function be(e){let[o,t]=Hd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ot.createElement(Rd,{spacing:"xs",grow:!0,noWrap:!0},Ot.createElement(Nd,{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:Vd(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 Vd(e){if(e)return parseFloat(e)}import{Group as qd}from"@mantine/core";import oa,{useState as Ud}from"react";function et(e){let[o,t]=Ud(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(qd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(be,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),oa.createElement(be,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Gd}from"@mantine/core";import ta,{useState as zd}from"react";function sf(e){let[o,t]=zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Gd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(be,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ta.createElement(be,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Yd,NativeSelect as ec,TextInput as oc}from"@mantine/core";import{createReference as tc}from"@medplum/core";import Lt,{useRef as mf,useState as pf}from"react";import{Group as Wd,Text as uf}from"@mantine/core";import{getDisplayString as Xd,getReferenceString as cf}from"@medplum/core";import ao,{forwardRef as Qd,useCallback as df,useState as Jd}from"react";var $d={Observation:"code",User:"email:contains"},Kd=["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:cf(e),label:Xd(e),resource:e}}function Et(e){let o=v(),t=e.resourceType,[r,a]=Jd(),n=X(e.defaultValue,a),f=e.onChange,l=df(async(i,u)=>{let m=Zd(t),c=new URLSearchParams({[m]: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(yo,{name:e.name,itemComponent:_d,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:cf,toOption:jd,loadOptions:l,onChange:s,clearable:!0})}var _d=Qd(({label:e,resource:o,...t},r)=>ao.createElement("div",{ref:r,...t},ao.createElement(Wd,{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 Zd(e){return $d[e]??(Kd.includes(e)?"name":"_id")}function To(e){let o=rc(e.targetTypes),t=ac(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(Yd,{spacing:"xs",grow:!0,noWrap:!0},o?Lt.createElement(ec,{"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(oc,{"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?tc(u):void 0)}}))}function rc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function ac(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 nc,useState as fc}from"react";function If(e){let[o,t]=fc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=nc();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(co,null))))))}import{Button as Cf,Chip as gf,Group as Rt,Modal as lc,NativeSelect as sc,Stack as ic,Switch as uc,TextInput as dc}from"@mantine/core";import{formatTiming as cc}from"@medplum/core";import $,{useRef as yf,useState as ra}from"react";var mc=["sun","mon","tue","wed","thu","fri","sat"];function vf(e){let[o,t]=ra(e.defaultValue),[r,a]=ra(!1),n=yf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,cc(n.current)||"No repeat"),$.createElement(Cf,{onClick:()=>a(!0)},"Edit")),$.createElement(pc,{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 pc(e){let[o,t]=ra(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(lc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(ic,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Be,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(uc,{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(dc,{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(sc,{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"},mc.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?U.createElement(Fn,{name:r,defaultValue:a,onChange:e.onChange}):U.createElement(If,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?U.createElement(Sc,{elementDefinitionTypes:n,...e}):U.createElement(Sf,{elementDefinitionType:n[0],...e})}function Sc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=vc(t);return U.createElement(Ic,{spacing:"xs",grow:!0,noWrap:!0},U.createElement(gc,{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}))}),U.createElement(Sf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Cc(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 U.createElement(aa,{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 U.createElement(aa,{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 U.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 U.createElement(aa,{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 U.createElement(yt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return U.createElement(xc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return U.createElement(hc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return U.createElement(Ka,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return U.createElement(Za,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return U.createElement(vt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return U.createElement(jn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return U.createElement(_n,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return U.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return U.createElement(Mt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return U.createElement(of,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return U.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return U.createElement(af,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return U.createElement(nf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return U.createElement(ff,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return U.createElement(be,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return U.createElement(et,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return U.createElement(sf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return U.createElement(To,{name:r,defaultValue:a,targetTypes:Pc(o),onChange:e.onChange});case L.Timing:return U.createElement(vf,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return U.createElement(Yo,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return U.createElement(Yo,{typeName:yc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Pc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function Yo(e){let[o,t]=Tc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Dc.types[a];if(!n)return ko.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return ko.createElement(bc,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,m]=Se(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?ko.createElement(Bt,{key:s,title:Pf(s),description:i.definition,htmlFor:s},ko.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,outcome:e.outcome,onChange:(h,P)=>{r(Zo(o,s,P??s,l[1],h))}})):ko.createElement(Pe,{key:s,title:Pf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},ko.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,onChange:(h,P)=>{r(Zo(o,s,P??s,l[1],h))}}))}))}import{Button as na,createStyles as kc,Group as bf}from"@mantine/core";import ee,{useMemo as Bc,useState as Ac}from"react";var Fc=kc(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 Mc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Df(e){let{classes:o}=Fc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Ac(fa);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Bc(()=>wc(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}},Mc(a)),ee.createElement(bf,{position:"right",spacing:"xs"},ee.createElement(na,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(na,{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(na,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function fa(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function wc(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:Oc(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 Oc(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 Ec,createStyles as Lc}from"@mantine/core";import Rc from"react";var Nc=Lc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Nc();return Rc.createElement(Ec,{className:r.root,...t},o)}import Qm from"react";import{ActionIcon as Gf,Center as Am,createStyles as Fm,Group as Mm,Loader as wm,Menu as Ne,ScrollArea as Om,TextInput as Em}from"@mantine/core";import{showNotification as Lm,updateNotification as ma}from"@mantine/notifications";import{getReferenceString as ot,normalizeErrorString as Rm}from"@medplum/core";import T,{useCallback as Vt,useEffect as Nm,useRef as zf,useState as Wf}from"react";import{createStyles as _c,Group as Ht,List as Bf,Stack as Af,Text as De,Title as Ff}from"@mantine/core";import{capitalize as Zc,formatCodeableConcept as Yc,formatDateTime as ia,formatObservationValue as em,isReference as om}from"@medplum/core";import g,{useEffect as tm,useState as rm}from"react";import{Blockquote as Hc,createStyles as Vc,Stack as qc}from"@mantine/core";import Tf from"react";var Uc=Vc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function la({value:e}){let{classes:o}=Uc();return e?Tf.createElement(qc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Tf.createElement(Hc,{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 Jc}from"@mantine/core";import sa from"react";import{Text as Gc}from"@mantine/core";import{getDisplayString as zc,isOk as Wc,normalizeErrorString as Xc}from"@medplum/core";import kf,{useState as Qc}from"react";function Oe(e){let{value:o,link:t,...r}=e,[a,n]=Qc(),f=X(o,n),l;if(a&&!Wc(a))l=`[${Xc(a)}]`;else if(f)l=zc(f);else return null;return t?kf.createElement(ne,{to:o,...r},l):kf.createElement(Gc,{component:"span",...r},l)}function Qe(e){return sa.createElement(Jc,{spacing:"xs"},sa.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),sa.createElement(Oe,{value:e.value,link:e.link}))}import{Badge as $c}from"@mantine/core";import Kc 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 Nt(e){return Kc.createElement($c,{color:jc[e.status]},e.status)}var Mf=_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}}));ua.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ua(e){let o=v(),t=X(e.value),[r,a]=rm();if(tm(()=>{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 g.createElement(Af,null,g.createElement(Ff,null,"Diagnostic Report"),g.createElement(am,{value:t}),!e.hideSpecimenInfo&&nm(r),t.result&&g.createElement(fm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&g.createElement(la,{value:n}))}function am({value:e}){return g.createElement(Ht,{mt:"md",spacing:30},e.subject&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),g.createElement(De,null,g.createElement(Qe,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>g.createElement("div",{key:o.reference},g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),g.createElement(De,null,g.createElement(Qe,{value:o,link:!0})))),e.performer?.map(o=>g.createElement("div",{key:o.reference},g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),g.createElement(De,null,g.createElement(Qe,{value:o,link:!0})))),e.issued&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),g.createElement(De,null,ia(e.issued))),e.status&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),g.createElement(De,null,Zc(e.status))))}function nm(e){return g.createElement(Af,{spacing:"xs"},g.createElement(Ff,{order:2,size:"h6"},"Specimens"),g.createElement(Bf,{type:"ordered"},e?.map(o=>g.createElement(Bf.Item,{ml:"sm",key:`specimen-${o.id}`},g.createElement(Ht,{spacing:20},g.createElement(Ht,{spacing:5},g.createElement(De,{fw:500},"Collected:")," ",ia(o.collection?.collectedDateTime)),g.createElement(Ht,{spacing:5},g.createElement(De,{fw:500},"Received:")," ",ia(o.receivedTime)))))))}function fm(e){let{classes:o}=Mf();return g.createElement("table",{className:o.table},g.createElement("thead",null,g.createElement("tr",null,g.createElement("th",null,"Test"),g.createElement("th",null,"Value"),g.createElement("th",null,"Reference Range"),g.createElement("th",null,"Interpretation"),g.createElement("th",null,"Category"),g.createElement("th",null,"Performer"),g.createElement("th",null,"Status"))),g.createElement("tbody",null,e.value?.map(t=>g.createElement(lm,{key:`obs-${om(t)?t.reference:t.id}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function lm(e){let{classes:o,cx:t}=Mf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=um(r);return g.createElement(g.Fragment,null,g.createElement("tr",{className:t({[o.criticalRow]:n})},g.createElement("td",{rowSpan:a?2:1},g.createElement(ne,{to:r},g.createElement(bo,{value:r.code}))),g.createElement("td",null,g.createElement(sm,{value:r})),g.createElement("td",null,g.createElement(im,{value:r.referenceRange})),g.createElement("td",null,r.interpretation&&r.interpretation.length>0&&g.createElement(bo,{value:r.interpretation[0]})),g.createElement("td",null,r.category&&r.category.length>0&&g.createElement("ul",null,r.category.map(f=>g.createElement("li",{key:`category-${Yc(f)}`},g.createElement(bo,{value:f}))))),g.createElement("td",null,r.performer?.map(f=>g.createElement(ro,{key:f.reference,value:f}))),g.createElement("td",null,r.status&&g.createElement(Nt,{status:r.status}))),a&&g.createElement("tr",null,g.createElement("td",{colSpan:6},g.createElement(la,{value:r.note}))))}function sm(e){let o=e.value;return g.createElement(g.Fragment,null,em(o))}function im(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?g.createElement(g.Fragment,null,o.text):g.createElement(bt,{value:o}):null}function um(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as dm,Paper as cm,useComponentDefaultProps as mm}from"@mantine/core";import pm from"react";var xm=dm((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%"}}})),Im={shadow:"xs",radius:"md",withBorder:!0};function Bo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=mm("Panel",Im,e),{classes:l,cx:s}=xm({width:r,fill:a},{name:"Panel",unstyled:n});return pm.createElement(cm,{className:s(l.paper,o),...f},t)}import{createStyles as gm}from"@mantine/core";import{getPropertyDisplayName as hm,stringify as wf,toTypedValue as Of}from"@medplum/core";import le,{useEffect as Cm,useState as ym}from"react";var vm=gm(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}=vm(),t=v(),[r,a]=ym();if(Cm(()=>{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),[m,c]=Se(Of(e.revised),l);return Ef(i)&&Ef(m)||wf(i)===wf(m)?null:le.createElement("tr",{key:l},le.createElement("td",null,hm(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 Ef(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Sm,{useEffect as Pm,useState as bm}from"react";function da(e){let o=v(),t=X(e.value),[r,a]=bm();return Pm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Sm.createElement(jo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Dm,Group as Tm,Menu as Rf,Text as ca}from"@mantine/core";import{formatDateTime as km,getReferenceString as Bm}from"@medplum/core";import oe from"react";function Nf(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(Bo,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(Tm,{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(ca,{size:"sm"},oe.createElement(Oe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(ca,{size:"xs"},oe.createElement(ne,{color:"dimmed",to:e.resource},km(l)),oe.createElement(ca,{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(Dm,{radius:"xl","aria-label":`Actions for ${Bm(e.resource)}`},oe.createElement(br,null))),a)),oe.createElement(Io,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(!Uf(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(!Uf(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 Uf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Hm=Fm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function $e(e){let o=v(),t=qe(),r=o.getProfile(),a=zf(null),n=X(e.value),[f,l]=Wf(),[s,i]=Wf([]),u=e.loadTimelineResources,m=zf(s);m.current=s;let c=Vt(C=>{qf(C,n),C.reverse(),i(C)},[n]),h=Vt(C=>{let N=[];for(let Te of C){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]),P=Vt(C=>c([...m.current,C]),[c]),k=Vt(()=>{let C,N;"resourceType"in e.value?(C=e.value.resourceType,N=e.value.id):[C,N]=e.value.reference?.split("/"),u(o,C,N).then(h).catch(console.log)},[o,e.value,u,h]);Nm(()=>k(),[k]);function I(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(N=>P(N)).catch(console.log)}function b(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(N=>P(N)).then(()=>ma({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:T.createElement(Go,{size:16}),autoClose:2e3})).catch(N=>ma({id:"upload-notification",color:"red",title:"Upload error",message:Rm(N),icon:T.createElement(Tr,{size:16}),autoClose:2e3}))}function d(C,N){return o.updateResource({...C,priority:N})}function w(C){d(C,"stat").then(k).catch(console.log)}function y(C){d(C,"routine").then(k).catch(console.log)}function O(C){t(`/${C.resourceType}/${C.id}`)}function Ie(C){t(`/${C.resourceType}/${C.id}/edit`)}function ge(C){t(`/${C.resourceType}/${C.id}/delete`)}function ue(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function Y(){Lm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function No(C){ma({id:"upload-notification",loading:!0,title:"Uploading...",message:Xm(C),autoClose:!1,withCloseButton:!1})}return n?T.createElement(Nf,null,e.createCommunication&&T.createElement(Bo,null,T.createElement(J,{testid:"timeline-form",onSubmit:C=>{I(C.text);let N=a.current;N&&(N.value="",N.focus())}},T.createElement(Mm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},T.createElement(Ce,{value:r}),T.createElement(Em,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),T.createElement(Gf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},T.createElement(Mr,{size:16})),T.createElement(So,{onUpload:b,onUploadStart:Y,onUploadProgress:No},C=>T.createElement(Gf,{...C,radius:"xl",color:"blue",variant:"filled"},T.createElement(zo,{size:16})))))),s.map(C=>{if(!C)return null;let N=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return T.createElement(Vm,{key:N,history:f,resource:C,onDetails:ue});switch(C.resourceType){case"AuditEvent":return T.createElement(zm,{key:N,resource:C,onDetails:O});case"Communication":return T.createElement(Um,{key:N,resource:C,onPin:C.priority!=="stat"?w:void 0,onUnpin:C.priority==="stat"?y:void 0,onDetails:O,onEdit:Ie,onDelete:ge});case"DiagnosticReport":return T.createElement(Wm,{key:N,resource:C,onDetails:O,onEdit:Ie,onDelete:ge});case"Media":return T.createElement(Gm,{key:N,resource:C,onDetails:O,onEdit:Ie,onDelete:ge});default:return T.createElement(Je,{key:N,resource:C,padding:!0},T.createElement(da,{value:C,ignoreMissingValues:!0}))}})):T.createElement(Am,{style:{width:"100%",height:"100%"}},T.createElement(wm,null))}function Ao(e){return T.createElement(Ne.Dropdown,null,T.createElement(Ne.Label,null,"Resource"),e.onPin&&T.createElement(Ne.Item,{icon:T.createElement(wr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${ot(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(Ne.Item,{icon:T.createElement(Or,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${ot(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(Ne.Item,{icon:T.createElement(Ar,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${ot(e.resource)}`},"Details"),e.onEdit&&T.createElement(Ne.Item,{icon:T.createElement(Dr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${ot(e.resource)}`},"Edit"),e.onDelete&&T.createElement(T.Fragment,null,T.createElement(Ne.Divider,null),T.createElement(Ne.Label,null,"Danger zone"),T.createElement(Ne.Item,{color:"red",icon:T.createElement(Qo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${ot(e.resource)}`},"Delete")))}function Vm(e){let o=qm(e.history,e.resource);return o?T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(Lf,{original:o,revised:e.resource})):T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement("h3",null,"Created"),T.createElement(da,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function qm(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 Um(e){let{classes:o}=Hm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return T.createElement(Je,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:T.createElement(Ao,{...e})},T.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Gm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return T.createElement(Je,{resource:e.resource,padding:!!t,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(we,{value:e.resource.content}))}function zm(e){return T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(Om,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function Wm(e){return T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(ua,{value:e.resource}))}function Xm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${pa(e.loaded)} / ${pa(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${pa(e.loaded)}`}function pa(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 pB(e){return Qm.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 Xf from"react";function qt(e){let{children:o,...t}=e;return Xf.createElement(Xe,null,Xf.createElement(Bo,{...t},o))}import{createReference as Ut}from"@medplum/core";import Jm from"react";function TB(e){return Jm.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:Ut(o),subject:o.subject,sender:Ut(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Ut(o),subject:o.subject,operator:Ut(t),issued:new Date().toISOString(),content:r})})}import{Button as ex,Loader as ox,Table as tx}from"@mantine/core";import{normalizeOperationOutcome as rx}from"@medplum/core";import te,{useEffect as Pl,useRef as bl,useState as Kt}from"react";import{evalFhirPath as $m}from"@medplum/core";import Km from"react";function Qf(e){let o;try{o=$m(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 Km.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Hp,Button as Oo,Center as Jt,createStyles as Vp,Group as $t,Loader as qp,Menu as yl,Pagination as Up,Table as Gp,Text as Pa,UnstyledButton as zp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as ka,formatSearchQuery as Wp,globalSchema as Xp}from"@medplum/core";import S,{useCallback as vl,useEffect as Sl,useRef as Qp,useState as ba}from"react";import{Box as jm,Button as _m,Modal as Zm,Text as Ym}from"@mantine/core";import Fo from"react";function $f(e){return Fo.createElement(Zm,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Fo.createElement(jm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Fo.createElement(Jf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Fo.createElement(Jf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Fo.createElement(Ym,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Jf(e){return Fo.createElement(_m,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as at,Modal as ip}from"@mantine/core";import{globalSchema as up,stringify as dp}from"@medplum/core";import Q,{useEffect as cp,useRef as il,useState as mp}from"react";import{capitalize as ep,DEFAULT_SEARCH_COUNT as op,evalFhirPathTyped as tp,formatDateTime as rp,Operator as M}from"@medplum/core";import Gt from"react";var ap={string:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],fulltext:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],token:[M.EQUALS,M.NOT],reference:[M.EQUALS,M.NOT],numeric:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],quantity:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],date:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY],datetime:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY]},np={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 tt(e,o){return{...e,filters:o,offset:0,name:void 0}}function GB(e){return tt(e,[])}function zt(e,o){return tt(e,(e.filters??[]).filter(t=>t.code!==o))}function Mo(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??""}),tt(e,n)}function zB(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 xa(e,o,-1)}function Zf(e,o){return xa(e,o,0)}function Yf(e,o){return xa(e,o,1)}function xa(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),ga(e,o,r,a)}function el(e,o){return Ia(e,o,-1)}function ol(e,o){return Ia(e,o,0)}function tl(e,o){return Ia(e,o,1)}function Ia(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),ga(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),ga(e,o,t,new Date)}function ga(e,o,t,r){return e=zt(e,o),e=Kf(e,o,M.GREATER_THAN_OR_EQUALS,t),e=Kf(e,o,M.LESS_THAN_OR_EQUALS,r),e}function Kf(e,o,t,r){return Mo(e,o,t,r.toISOString())}function ha(e,o,t=!0){return Mo(e,o,M.MISSING,t.toString())}function fp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function al(e,o){let t=e.count??op,r=(o-1)*t;return fp(e,r)}function Ca(e,o,t){return o===nl(e)&&t!==void 0&&t===fl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function WB(e,o){let t=!1;return nl(e)===o&&(t=!fl(e)),Ca(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 ap[e.type]}function rt(e){return np[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(ep).join(" "))}function sl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?rp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?lp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?sp(e,o.searchParams[0]):null}function lp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?Gt.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function sp(e,o){let t=tp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Gt.createElement(Gt.Fragment,null,t.map((r,a)=>Gt.createElement(ce,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function ul(e){let[o,t]=mp({search:JSON.parse(dp(e.search))}),r=il(null),a=il(null);cp(()=>{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??[],w=r.current?.value;if(w){let y=[...d,w];t({search:{...o.search,fields:y}})}}function u(){let d=o.search.fields??[],w=a.current?.value;if(w){let y=[...d];y.splice(y.indexOf(w),1),t({search:{...o.search,fields:y}})}}function m(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let y=[...d],O=y.indexOf(w);O<=0||(h(y,O,O-1),t({search:{...o.search,fields:y}}))}function c(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let y=[...d],O=y.indexOf(w);O>=y.length-1||(h(y,O,O+1),t({search:{...o.search,fields:y}}))}function h(d,w,y){let O=d[w];d[w]=d[y],d[y]=O}if(!e.visible)return null;let P=e.search.resourceType,k=up.types[P],I=o.search.fields??[],b=pp(k).filter(d=>!I.includes(d)).sort((d,w)=>d.localeCompare(w));return Q.createElement(ip,{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"},b.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"},I.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(at,{compact:!0,variant:"outline",onClick:i},"Add")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:u},"Remove")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:m},"Up")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:c},"Down")))))),Q.createElement(at,{onClick:()=>e.onOk(o.search)},"OK"))}function pp(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 ft,Group as Sp,Modal as Pp,NativeSelect as cl}from"@mantine/core";import{globalSchema as bp,stringify as ml}from"@medplum/core";import R,{useEffect as Dp,useRef as xl,useState as va}from"react";import{formatDateTime as xp,getSearchParameterDetails as Ip,globalSchema as gp,Operator as dl,SearchParameterType as hp}from"@medplum/core";import nt from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=gp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===dl.EQUALS||t.operator===dl.NOT_EQUALS))return nt.createElement(Oe,{value:{reference:t.value}});let a=Ip(o,r);if(t.code==="_lastUpdated"||a.type===hp.DATETIME)return nt.createElement(nt.Fragment,null,xp(t.value))}return nt.createElement(nt.Fragment,null,t.value)}import{Checkbox as Cp,TextInput as ya}from"@mantine/core";import{getSearchParameterDetails as yp,SearchParameterType as wo}from"@medplum/core";import no from"react";function Xt(e){let o=yp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case wo.REFERENCE:return no.createElement(To,{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 wo.BOOLEAN:return no.createElement(Cp,{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 wo.DATE:return no.createElement(ya,{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 wo.DATETIME:return no.createElement(Be,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case wo.NUMBER:return no.createElement(ya,{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 wo.QUANTITY:return no.createElement(be,{name:t,defaultValue:vp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return no.createElement(ya,{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 vp(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]=va(JSON.parse(ml(e.search))),[r,a]=va(-1),n=xl(o);n.current=o,Dp(()=>{t(JSON.parse(ml(e.search)))},[e.search]);function f(u){t(Mo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=bp.types[l].searchParams??{},i=o.filters||[];return R.createElement(Pp,{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,m)=>m===r?R.createElement(pl,{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(tt(n.current,h)),a(-1)},onCancel:()=>a(-1)}):R.createElement(Tp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(m),onDelete:()=>t(jf(n.current,m))})),R.createElement(pl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),R.createElement(Sp,{position:"right",mt:"xl"},R.createElement(ft,{onClick:()=>e.onOk(n.current)},"OK")))}function Tp(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ye(o.code)),R.createElement("td",null,rt(o.operator)),R.createElement("td",null,R.createElement(Wt,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function pl(e){let[o,t]=va(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:rt(i)}))]})),R.createElement("td",null,l&&o.operator&&R.createElement(Xt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(ft,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as kp,Grid as Sa,Modal as Bp}from"@mantine/core";import fo,{useState as Ap}from"react";function gl(e){let[o,t]=Ap(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return fo.createElement(Bp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},fo.createElement(J,{onSubmit:r},fo.createElement(Sa,null,fo.createElement(Sa.Col,{span:10},fo.createElement(Xt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),fo.createElement(Sa.Col,{span:2},fo.createElement(kp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as B}from"@mantine/core";import{Operator as se}from"@medplum/core";import p from"react";function hl(e){if(!e.searchParams)return null;function o(n,f){a(Ca(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?p.createElement(Fp,{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 Fp(e){switch(e.searchParam.type){case"date":return p.createElement(Mp,{...e});case"number":case"quantity":return p.createElement(wp,{...e});case"reference":return p.createElement(Op,{...e});case"string":case"token":case"uri":return p.createElement(Ep,{...e});default:return p.createElement(p.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Mp(e){let{searchParam:o}=e,t=o.code;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.ENDS_BEFORE)},"Before..."),p.createElement(B.Item,{icon:p.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.STARTS_AFTER)},"After..."),p.createElement(B.Item,{icon:p.createElement(Ir,{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(Yf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Zf(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(tl(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(ol(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(el(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Year to date"),p.createElement(Qt,{...e}))}function wp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN)},"Greater than..."),p.createElement(B.Item,{icon:p.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(B.Item,{icon:p.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN)},"Less than..."),p.createElement(B.Item,{icon:p.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement(Qt,{...e}))}function Op(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(Qt,{...e}))}function Ep(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(hr,{size:14}),onClick:()=>e.onPrompt(o,se.CONTAINS)},"Contains..."),p.createElement(B.Item,{icon:p.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Does not contain..."),p.createElement(Qt,{...e}))}function Qt(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(pr,{size:14}),onClick:()=>e.onChange(ha(e.search,t))},"Missing"),p.createElement(B.Item,{icon:p.createElement(mr,{size:14}),onClick:()=>e.onChange(ha(e.search,t,!1))},"Not missing"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(qr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Lp,globalSchema as Rp}from"@medplum/core";function Cl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Np(o,r));return t}function Np(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=Rp.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=Lp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Da=class extends Event{constructor(t){super("change");this.definition=t}},Ta=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}},Jp=Vp(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 $p(e){let{classes:o}=Jp(),t=v(),[r,a]=ba(!1),[n,f]=ba(),{search:l,onLoad:s}=e,[i,u]=ba({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),m=Qp(i);m.current=i;let c=l.total??"accurate",h=vl(D=>{f(void 0),t.search(l.resourceType,Wp({...l,total:c,fields:void 0}),D).then(W=>{u({...m.current,searchResponse:W}),s&&s(new Ta(W))}).catch(W=>{u({...m.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),P=vl(()=>{u({...m.current,searchResponse:void 0}),h({cache:"reload"})},[h]);Sl(()=>{h()},[h]);function k(D,W){D.stopPropagation();let ae=D.target.checked,de={...m.current.selected};ae?de[W]=!0:delete de[W],u({...m.current,selected:de})}function I(D){D.stopPropagation();let _=D.target.checked,ae={},de=m.current.searchResponse;_&&de?.entry&&de.entry.forEach(Ho=>{Ho.resource?.id&&(ae[Ho.resource.id]=!0)}),u({...m.current,selected:ae})}function b(){let D=m.current;if(!D.searchResponse?.entry||D.searchResponse.entry.length===0)return!1;for(let W of D.searchResponse.entry)if(W.resource?.id&&!D.selected[W.resource.id])return!1;return!0}function d(D){e.onChange&&e.onChange(new Da(D))}function w(D,W){if(ht(D.target)||D.button===2)return;H(D);let _=D.button===1||D.ctrlKey||D.metaKey;!_&&e.onClick&&e.onClick(new lo(W,D)),_&&e.onAuxClick&&e.onAuxClick(new lo(W,D))}function y(){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&&Xp.types[e.search.resourceType]))return S.createElement(Jt,{style:{width:"100%",height:"100%"}},S.createElement(qp,null));let Ie=e.checkboxesEnabled,ge=Cl(l),ue=l.resourceType,Y=i.searchResponse,C=Y?.entry?.map(D=>D.resource),N="subtle",Te="gray",he=16,Ye=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement($t,{position:"apart",mb:"xl"},S.createElement($t,{spacing:2},S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(vr,{size:he}),onClick:()=>u({...m.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Br,{size:he}),onClick:()=>u({...m.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(kr,{size:he}),onClick:e.onNew},"New..."),!Ye&&y()&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Vr,{size:he}),onClick:e.onExport?e.onExport:()=>u({...m.current,exportDialogVisible:!0})},"Export..."),!Ye&&e.onDelete&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Qo,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Ye&&e.onBulk&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(xr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement($t,{spacing:2},Y&&S.createElement(Pa,{size:"xs",color:"dimmed"},Zp(l,Y.total),"-",Yp(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),S.createElement(Hp,{title:"Refresh",onClick:P},S.createElement(Lr,{size:"1.125rem"})))),S.createElement(Gp,{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:b(),onChange:D=>I(D)})),ge.map(D=>S.createElement("th",{key:D.name},S.createElement(yl,{shadow:"md",width:240,position:"bottom-end"},S.createElement(yl.Target,null,S.createElement(zp,{className:o.control},S.createElement($t,{position:"apart",noWrap:!0},S.createElement(Pa,{weight:500,size:"sm"},ye(D.name)),S.createElement(Jt,{className:o.icon},S.createElement(cr,{size:14,stroke:1.5}))))),S.createElement(hl,{search:e.search,searchParams:D.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(D=>S.createElement("th",{key:D.name},D.searchParams&&S.createElement(Kp,{resourceType:ue,searchParams:D.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,C?.map(D=>D&&S.createElement("tr",{key:D.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>w(W,D),onAuxClick:W=>w(W,D)},Ie&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${D.id}`,checked:!!i.selected[D.id],onChange:W=>k(W,D.id)})),ge.map(W=>S.createElement("td",{key:W.name},sl(D,W))))))),C?.length===0&&S.createElement(Xe,null,S.createElement(Jt,{style:{height:150}},S.createElement(Pa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&S.createElement(Jt,{m:"md",p:"md"},S.createElement(Up,{value:jp(l),total:_p(l,Y.total),onChange:D=>d(al(l,D)),getControlProps:D=>{switch(D){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(ul,{search:e.search,visible:m.current.fieldEditorVisible,onOk:D=>{d(D),u({...m.current,fieldEditorVisible:!1})},onCancel:()=>{u({...m.current,fieldEditorVisible:!1})}}),S.createElement(Il,{search:e.search,visible:m.current.filterEditorVisible,onOk:D=>{d(D),u({...m.current,filterEditorVisible:!1})},onCancel:()=>{u({...m.current,filterEditorVisible:!1})}}),S.createElement($f,{visible:m.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...m.current,exportDialogVisible:!1})}}),S.createElement(gl,{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:D=>{d(Mo(e.search,D.code,D.operator,D.value)),u({...m.current,filterDialogVisible:!1})},onCancel:()=>{u({...m.current,filterDialogVisible:!1})}}))}var eF=S.memo($p);function Kp(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}`},rt(t.operator),"\xA0",S.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function jp(e){return Math.floor((e.offset??0)/(e.count??ka))+1}function _p(e,o){let t=e.count??ka;return Math.ceil(o/t)}function Zp(e,o){return Math.min(o,(e.offset??0)+1)}function Yp(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??ka))}function ax(e){let o=v(),[t,r]=Kt(),[a,n]=Kt(),{query:f,fields:l}=e,[s,i]=Kt(),[u,m]=Kt({}),c=bl();c.current=s;let h=bl({});h.current=u,Pl(()=>{n(void 0),o.graphql(f).then(i).catch(y=>n(rx(y)))},[o,f]);function P(y,O){y.stopPropagation();let ge=y.target.checked,ue={...h.current};ge?ue[O]=!0:delete ue[O],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 I(){let y=c.current?.data.ResourceList;if(!y||y.length===0)return!1;for(let O of y)if(O.id&&!h.current[O.id])return!1;return!0}function b(y,O){ht(y.target)||(H(y),y.button!==1&&e.onClick&&e.onClick(new lo(O,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new lo(O,y)))}if(Pl(()=>{o.requestSchema(e.resourceType).then(y=>{r({...y})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(ox,null);let w=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:y=>H(y),"data-testid":"search-control"},te.createElement(tx,null,te.createElement("thead",null,te.createElement("tr",null,w&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:I(),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:O=>b(O,y),onAuxClick:O=>b(O,y)},w&&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:O=>P(O,y.id)})),l.map(O=>te.createElement("td",{key:O.name},te.createElement(Qf,{propertyType:O.propertyType,path:O.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(ex,{onClick:()=>e.onBulk(Object.keys(h.current))},"Bulk..."))}var dF=te.memo(ax);import so from"react";function Ke(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 nx}from"@mantine/core";import Ba from"react";function Eo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Ba.createElement(nx,{icon:Ba.createElement(oo,{size:16}),color:"red"},o.map(t=>Ba.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as jt}from"@medplum/core";import fx,{useCallback as lx}from"react";function bF(e){let o=lx((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 fx.createElement($e,{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 sx,createStyles as ix,NativeSelect as ux,Stack as dx,TextInput as Fa}from"@mantine/core";import{getReferenceString as cx}from"@medplum/core";import q,{useEffect as Dl,useRef as kl,useState as lt}from"react";var Bl=ix(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 UF(e){let o=v(),t=X(e.value),[r,a]=lt(void 0),[n,f]=lt(),[l,s]=lt(),[i,u]=lt();function m(){s(void 0)}function c(){f(void 0)}let h=kl();if(h.current=i,Dl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Dl(()=>(u(hx(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 P(k,I){u({...h.current,[k]:I})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Fa,{label:"Plan Title",defaultValue:i.title,onChange:k=>P("title",k.currentTarget.value)}),q.createElement(Al,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:k=>P("action",k)}),q.createElement(sx,{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(mx,{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 mx(e){let{classes:o,cx:t}=Bl(),{action:r}=e,a=gx(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(xx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(px,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{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 px(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:Ma,propertyType:a,value:r})))}function xx(e){let{action:o}=e,[t,r]=lt(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(dx,{spacing:"xl"},q.createElement(Fa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Fa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(ux,{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(Ix,{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:cx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Ix(e){let o=e.action,t="timing",[r,a]=Fl(o);return q.createElement(Re,{property:Ma,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(Zo(o,t,f??t,Ma,n))}})}function gx(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 Aa=1;function Ml(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Aa=Math.max(Aa,o+1))}return e}return"id-"+Aa++}function hx(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 je,Button as Vx,createStyles as qx,NativeSelect as Ux,Textarea as Gx,TextInput as Oa,Title as zx}from"@mantine/core";import{globalSchema as Wx,isResource as Xx}from"@medplum/core";import F,{useEffect as Ql,useRef as Qx,useState as Yt}from"react";import{Button as Lo,Checkbox as Ul,Group as Cx,NativeSelect as yx,Radio as Ll,Stack as vx,Stepper as Rl,Textarea as Sx,TextInput as st,Title as Px}from"@mantine/core";import{capitalize as Gl,createReference as bx,getExtension as Dx,getQuestionnaireAnswers as Tx,getReferenceString as zl,getTypedPropertyValue as io,globalSchema as kx,stringify as Nl,evalFhirPathTyped as Bx}from"@medplum/core";import A,{useEffect as Hl,useState as it}from"react";var Ol=(b=>(b.group="group",b.display="display",b.question="question",b.boolean="boolean",b.decimal="decimal",b.integer="integer",b.date="date",b.dateTime="dateTime",b.time="time",b.string="string",b.text="text",b.url="url",b.choice="choice",b.openChoice="open-choice",b.attachment="attachment",b.reference="reference",b.quantity="quantity",b))(Ol||{});function El(e){return e.type==="choice"||e.type==="open-choice"}function Wl(e){let o=v(),t=o.getProfile(),[r,a]=it(),n=X(e.questionnaire),[f,l]=it(),[s,i]=it({}),[u,m]=it(0),c=Nx(n?.item??[]),h=()=>m(I=>I>=c?I:I+1),P=()=>m(I=>I<=0?I:I-1);Hl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Hl(()=>{l(n?wx(n):void 0)},[n]);function k(I){let b={resourceType:"QuestionnaireResponse",item:I};l(b),i(Tx(b))}return!r||!n?null:A.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:zl(n),subject:e.subject,source:bx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&A.createElement(Px,null,n.title),n.item&&A.createElement(Xl,{items:n.item,answers:s,onChange:k,activePage:u,renderPages:c>0}),A.createElement(Cx,{position:"right",mt:"xl"},A.createElement(Mx,{activePage:u,numberOfPages:c,nextStep:h,prevStep:P,submitButtonText:e.submitButtonText})))}function Xl(e){let[o,t]=it(wa(e.items));function r(n,f){let l=o.slice();l[n]=f,t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?A.createElement(Rl.Step,{label:n.text,key:n.linkId},A.createElement(Vl,{key:n.linkId,item:n,index:f,answers:e.answers,setResponseItem:r})):A.createElement(Vl,{key:n.linkId,item:n,index:f,answers:e.answers,setResponseItem:r}));return e.renderPages?A.createElement(Rl,{active:e.activePage??0,allowNextStepsSelect:!1},a):A.createElement(vx,null,a)}function Vl(e){if(!Rx(e.item,e.answers))return null;if(e.item.type==="display")return A.createElement("p",{key:e.item.linkId},e.item.text);if(e.item.type==="group")return A.createElement(Zt,{key:e.item.linkId,item:e.item,answers:e.answers,onChange:o=>e.setResponseItem(e.index,o)});if(e.item.type==="boolean"){let o=e.item.initial&&e.item.initial.length>0?e.item.initial[0]:void 0;return A.createElement(Bt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},A.createElement(Ul,{id:e.item.linkId,name:e.item.linkId,defaultChecked:o?.valueBoolean,onChange:t=>e.setResponseItem(e.index,{linkId:e.item.linkId,text:e.item.text,answer:[{valueBoolean:t.currentTarget.checked}]})}))}return A.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},A.createElement(Zt,{item:e.item,answers:e.answers,onChange:o=>e.setResponseItem(e.index,o)}))}function Zt(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 A.createElement("div",null,A.createElement("h3",null,o.text),o.item&&A.createElement(Xl,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return A.createElement(Ul,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return A.createElement(st,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return A.createElement(st,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return A.createElement(st,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return A.createElement(Be,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return A.createElement(st,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return A.createElement(st,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return A.createElement(Sx,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return A.createElement(vt,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return A.createElement(To,{name:r,targetTypes:Hx(o),defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return A.createElement(be,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return Lx(o)?A.createElement(Ax,{name:r,item:o,initial:a,onChangeAnswer:f}):A.createElement(Fx,{name:r,item:o,initial:a,onChangeAnswer:f});default:return null}}function Ax(e){let{name:o,item:t,initial:r}=e,a=io({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=io({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(ql(l))}return A.createElement(yx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=io({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Gl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:ql(a),data:n})}function ql(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Fx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=kx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=io({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=io({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Nl(c)===Nl(f)&&(s=m),l.push([m,c])}return A.createElement(Ll.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(m=>m[0]===i);if(u){let m=u[1],c="value"+Gl(m.type);a({[c]:m.value})}}},l.map(([i,u])=>A.createElement(Ll,{key:i,id:i,value:i,label:A.createElement(ce,{property:n,propertyType:u.type,value:u.value})})))}function Mx(e){return e.activePage===0&&e.numberOfPages<=0?A.createElement(Lo,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.prevStep},"Back"),A.createElement(Lo,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.nextStep},"Next")):A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.prevStep},"Back"),A.createElement(Lo,{onClick:e.nextStep},"Next"))}function wx(e){return{resourceType:"QuestionnaireResponse",questionnaire:zl(e),item:wa(e.item)}}function wa(e){return e?.map(Ox)??[]}function Ox(e){return{linkId:e.linkId,text:e.text,item:wa(e.item),answer:e.initial?.map(Ex)??[]}}function Ex(e){return{...e}}function Lx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Rx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=io({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),n=io({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}]=Bx(`%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 Nx(e){return e.filter(t=>Dx(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function Hx(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)}var Jx=qx(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 vM(e){let o=v(),t=X(e.questionnaire),[r,a]=Yt(),[n,f]=Yt(),[l,s]=Yt(),[i,u]=Yt();function m(){u(void 0)}function c(){s(void 0)}return Ql(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Ql(()=>(f(jx(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",m),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",c)}),[t]),!r||!n?null:F.createElement("div",null,F.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},F.createElement(Jl,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),F.createElement(Vx,{type:"submit"},"Save")))}function Jl(e){let{classes:o,cx:t}=Jx(),r=e.item,a=e.item,n=Xx(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){H(d),e.setSelectedKey(e.item.id)}function c(d){H(d),e.setHoverKey(e.item.id)}function h(d){let w=u.current;e.onChange({...w,item:w.item?.map(y=>y.id===d.id?d:y)})}function P(d){e.onChange({...e.item,item:[...e.item.item??[],d]})}function k(d){e.onChange({...e.item,item:e.item.item?.filter(w=>w!==d)})}function I(d,w){e.onChange({...u.current,[d]:w})}let b=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return F.createElement("div",{"data-testid":a.linkId,className:b,onClick:m,onMouseOver:c},F.createElement("div",{className:o.questionBody},s?F.createElement(F.Fragment,null,n&&F.createElement(Oa,{size:"xl",defaultValue:r.title,onChange:d=>I("title",d.currentTarget.value)}),!n&&F.createElement(Gx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:d=>I("text",d.currentTarget.value)}),a.type==="reference"&&F.createElement(Kx,{item:a,onChange:d=>I("extension",d)}),El(a)&&F.createElement($x,{options:a.answerOption,onChange:d=>I("answerOption",d)})):F.createElement(F.Fragment,null,r.title&&F.createElement(zx,null,r.title),a.text&&F.createElement("div",null,a.text),!f&&F.createElement(Zt,{item:a,answers:{},onChange:()=>{}}))),a.item?.map(d=>F.createElement("div",{key:d.id},F.createElement(Jl,{item:d,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:h,onRemove:()=>k(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:d=>I("linkId",d.currentTarget.value)}),!f&&F.createElement(Ux,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:d=>I("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"}]})):F.createElement("div",null,l)),F.createElement("div",{className:o.bottomActions},f&&F.createElement(F.Fragment,null,F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P({id:_e(),linkId:Ra("q"),type:"string",text:"Question"})}},"Add item"),F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P({id:_e(),linkId:Ra("g"),type:"group",text:"Group"})}},"Add group")),n&&F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P(Zx())}},"Add Page"),s&&!n&&F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function $x(e){let o=Wx.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(je,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),F.createElement(je,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:_e()}])}},"Add choice"))}function Kx(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(je,{href:"#",onClick:a=>{H(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),F.createElement(je,{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 jx(e){return{...e,id:e.id||_e(),item:$l(e.item)}}function $l(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:$l(o.item),answerOption:_x(o.answerOption)}))}function _x(e){if(e)return e.map(o=>({...o,id:o.id||_e()}))}function Zx(){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 er,Button as Yx,createStyles as eI,Divider as oI,Group as ut,NativeSelect as Na,Stack as or,Text as tI,TextInput as rI}from"@mantine/core";import{formatRange as Kl,getCodeBySystem as aI}from"@medplum/core";import z,{useEffect as nI,useState as Ha}from"react";var fI=eI(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"}})),lI=["gender","age","gestationalAge","context","appliesTo","category"],sI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function MM(e){e=Object.assign(sI,e);let o=e.definition,[t,r]=Ha([]),[a,n]=Ha(1),[f,l]=Ha(1);return nI(()=>{let P=dI(o,l);r(cI(P.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(or,null,t.map(P=>z.createElement(iI,{unit:pI(o.quantitativeDetails?.unit),onChange:m,onAdd:c,onRemove:h,onRemoveGroup:u,key:`group-${P.id}`,intervalGroup:P}))),z.createElement(er,{title:"Add Group",size:"sm",onClick:P=>{H(P),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},z.createElement(co,null)),z.createElement(ut,{position:"right"},z.createElement(Yx,{type:"submit"},"Save")));function s(){let P=t.flatMap(k=>k.intervals).filter(k=>!xI(k));e.onSubmit({...o,qualifiedInterval:P})}function i(P){r(k=>[...k,P])}function u(P){r(k=>k.filter(I=>I.id!==P.id))}function m(P,k){r(I=>{I=[...I];let b=I.find(w=>w.id===P),d=b?.intervals.findIndex(w=>w.id===k.id);return d!==void 0&&b?.intervals[d]&&(b.intervals[d]=k),I})}function c(P,k){k.id===void 0&&(k.id=`id-${f}`,l(I=>I+1)),r(I=>{I=[...I];let b=I.findIndex(d=>d.id===P);if(b!==-1){let d={...I[b]};k={...k,...d.filters},d.intervals=[...d.intervals,k],I[b]=d}return I})}function h(P,k){r(I=>{I=[...I];let b=I.find(d=>d.id===P);return b&&(b.intervals=b.intervals.filter(d=>d.id!==k.id)),I})}}function iI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=fI();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(or,{spacing:"lg"},z.createElement(ut,{position:"right"},z.createElement(er,{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(uI,{intervalGroup:o,onChange:e.onChange}),z.createElement(oI,null),o.intervals.map(a=>z.createElement(or,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ut,null,z.createElement(rI,{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(er,{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(et,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(er,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(co,null))))}function uI(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(or,{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(tI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(et,{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 dI(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 cI(e,o){let t=1,r={};for(let a of e){let n=mI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(lI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function mI(e){return[`gender=${e.gender}`,`age=${Kl(e.age)}`,`gestationalAge=${Kl(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function pI(e){return e&&(aI(e,"http://unitsofmeasure.org")||e.text)}function xI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as jl,Grid as tr,Text as II}from"@mantine/core";import{formatDateTime as gI,getReferenceString as hI}from"@medplum/core";import xe,{useEffect as CI,useState as _l}from"react";function UM(e){let o=v(),t=X(e.value),[r,a]=_l(!1),[n,f]=_l();if(CI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(tr,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(tr.Col,{span:1,p:"md"},m?.status==="completed"?xe.createElement(Cr,null):xe.createElement(Nr,{color:"gray"})),xe.createElement(tr.Col,{span:9,p:"xs"},xe.createElement(II,{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",gI(m?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Nt,{status:m?.status||"unknown"}))),xe.createElement(tr.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===hI(u.resource))return u.resource}}import{createStyles as TI}from"@mantine/core";import ve,{useEffect as kI,useState as BI}from"react";import{stringify as PI}from"@medplum/core";function rr(e,o){let t=yI(e,o);return vI(t,e,o)}function yI(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],P=l[c],k,I=0;i===-s||i!==s&&P.i<h.i?(I=h.i,k=h):(I=P.i+1,k=P),l[c]=void 0;let b=I-i,d={i:I,j:b,prev:SI(k),snake:!1};for(;I<t&&b<r&&e[I]===o[b];)I++,b++;if(I>d.i&&(d={i:I,j:b,prev:d,snake:!0}),l[u]=d,I>=t&&b>=r)return l[u]}l[f+s-1]=void 0}}function vI(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 SI(e){return e&&!e.snake&&e.prev?e.prev:e}function Zl(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:PI(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 bI(t,o),DI(t),t}function bI(e,o){for(let t=1;t<o.length;t++){let r=rr(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 DI(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 AI=TI(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 YM(e){let{classes:o}=AI(),t=v(),[r,a]=BI(e.history);if(kI(()=>{!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=Zl(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:FI(n,l.meta.versionId)},MI(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 FI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function MI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Ro(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Ro(r,"month");let a=Math.floor(o/86400);if(a>0)return Ro(a,"day");let n=Math.floor(o/3600);if(n>0)return Ro(n,"hour");let f=Math.floor(o/60);return f>0?Ro(f,"minute"):Ro(o,"second")}function Ro(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as wI}from"@mantine/core";import{stringify as Yl}from"@medplum/core";import Ze from"react";var OI=wI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function fw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Yl(o,!0).match(/[^\r\n]+/g),a=Yl(t,!0).match(/[^\r\n]+/g),n=rr(r,a);return Ze.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>Ze.createElement(EI,{key:"delta"+l,delta:f})))}function EI(e){let{classes:o}=OI();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 LI}from"@mantine/core";import{formatDateTime as RI,normalizeErrorString as NI}from"@medplum/core";import ie,{useEffect as HI,useState as VI}from"react";function pw(e){let o=v(),[t,r]=VI(e.history);return HI(()=>{!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(LI,{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(qI,{key:"entry-"+n,entry:a})))):ie.createElement("div",null,"Loading...")}function qI(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,RI(t.meta?.lastUpdated)),ie.createElement("td",null,ie.createElement(ne,{to:UI(t)},t.meta?.versionId))):ie.createElement("tr",null,ie.createElement("td",{colSpan:3},NI(o?.outcome)))}function UI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as GI,createStyles as zI,Stack as WI,Text as XI}from"@mantine/core";import{getReferenceString as QI}from"@medplum/core";import Z,{useEffect as JI,useRef as $I,useState as dt}from"react";var KI=zI(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function Dw(e){let{classes:o}=KI(),t=v(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=dt(),l=$I();l.current=n;let[s,i]=dt(fa()),[u,m]=dt(),[c,h]=dt(),[P,k]=dt();if(JI(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",QI(r)],["start","gt"+jI(s)],["start","lt"+_I(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(XI,{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,es(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:m})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(WI,null,n.map(b=>{let d=new Date(b.start);return d.getTime()>u.getTime()&&d.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:b.id},Z.createElement(GI,{variant:"outline",style:{width:150},onClick:()=>h(b)},es(d)))}))),u&&c&&!P&&Z.createElement(Wl,{questionnaire:a,submitButtonText:"Next",onSubmit:k}),u&&c&&P&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function jI(e){return os(e.getTime())}function _I(e){return os(e.getTime()+31*24*60*60*1e3)}function os(e){return new Date(Math.max(Date.now(),e)).toISOString()}function es(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as ar}from"@medplum/core";import ZI from"react";function ww(e){return ZI.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:[ar(o)],subject:o.subject,sender:ar(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[ar(o)],subject:o.subject,operator:ar(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as Cg}from"@medplum/core";import ur,{useEffect as yg,useState as is}from"react";import{Anchor as ts,Button as YI,Center as eg,Group as og,Stack as tg,Text as rg,TextInput as ag,Title as ng}from"@mantine/core";import{normalizeOperationOutcome as fg}from"@medplum/core";import Ae,{useState as lg}from"react";function nr(e){let o=v(),[t,r]=lg();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(fg(n))}}},Ae.createElement(eg,{sx:{flexDirection:"column"}},Ae.createElement(Ke,{size:32}),Ae.createElement(ng,null,"Create project")),Ae.createElement(tg,{spacing:"xl"},Ae.createElement(ag,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Ae.createElement(rg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(ts,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(ts,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(og,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(YI,{type:"submit"},"Create project")))}import{Anchor as ir,Button as dg,Center as cg,Checkbox as mg,Divider as pg,Group as ns,PasswordInput as xg,Stack as Ig,Text as fs,TextInput as qa}from"@mantine/core";import{normalizeOperationOutcome as ls}from"@medplum/core";import j,{useEffect as gg,useState as hg}from"react";import sg,{useEffect as ig,useRef as ug,useState as Va}from"react";function fr(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 lr(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=ug(null),[n,f]=Va(typeof google<"u"),[l,s]=Va(!1),[i,u]=Va(!1);return ig(()=>{if(typeof google>"u"){fr("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?sg.createElement("div",{ref:a}):null}function sr(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 rs(e){typeof grecaptcha>"u"&&fr("https://www.google.com/recaptcha/api.js?render="+e)}function as(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function ss(e){let o=sr(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=hg(),f=At(a,void 0);return gg(()=>{t&&rs(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await as(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(ls(s))}}},j.createElement(cg,{sx:{flexDirection:"column"}},e.children),j.createElement(Eo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ns,{position:"center",p:"xl",style:{height:70}},j.createElement(lr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(ls(s))}}})),j.createElement(pg,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(Ig,{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(xg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(fs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(ir,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ir,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(fs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(ir,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ir,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ns,{position:"apart",mt:"xl",noWrap:!0},j.createElement(mg,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(dg,{type:"submit"},"Create account")))}function xO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=v(),[s,i]=is(void 0),[u,m]=is();yg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(h=>l.processCode(h.code)).then(()=>f()).catch(h=>m(Cg(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 ur.createElement(qt,{width:450},u&&ur.createElement("pre",null,JSON.stringify(u,null,2)),!s&&ur.createElement(ss,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&ur.createElement(nr,{login:s,handleAuthResponse:c}))}import{showNotification as vs}from"@mantine/notifications";import{normalizeErrorString as Ss}from"@medplum/core";import uo,{useCallback as Ga,useEffect as jg,useState as za}from"react";import{Anchor as us,Button as ds,Center as cs,Checkbox as vg,Divider as Sg,Group as Ua,PasswordInput as Pg,Stack as bg,TextInput as Dg}from"@mantine/core";import{normalizeOperationOutcome as Tg}from"@medplum/core";import K,{useCallback as dr,useState as ms}from"react";function ps(e){let[o,t]=ms();return o?K.createElement(Bg,{email:o,...e}):K.createElement(kg,{setEmail:t,...e})}function kg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=v(),s=!e.disableGoogleAuth&&sr(e.googleClientId),i=dr(async c=>{if(!c.authorizeUrl)return!1;let h=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),P=new URL(c.authorizeUrl);return P.searchParams.set("state",h),window.location.assign(P.toString()),!0},[l,f]),u=dr(async c=>{let h=await l.post("auth/method",{email:c.email});await i(h)||o(c.email)},[l,i,o]),m=dr(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(cs,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Ua,{position:"center",p:"xl",style:{height:70}},K.createElement(lr,{googleClientId:s,handleGoogleCredential:m})),!n&&K.createElement(Sg,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Dg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Ua,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(us,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(ds,{type:"submit"},"Next")))}function Bg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,l]=ms(),s=At(f,void 0),i=dr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(m=>l(Tg(m)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(cs,{sx:{flexDirection:"column"}},r),K.createElement(Eo,{issues:s}),K.createElement(bg,{spacing:"xl"},K.createElement(Pg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(Ua,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(us,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(vg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ds,{type:"submit"},"Sign in")))}import{Avatar as Ag,Center as Fg,Group as Mg,Stack as wg,Text as xs,Title as Og,UnstyledButton as Eg}from"@mantine/core";import{normalizeOperationOutcome as Lg}from"@medplum/core";import Fe,{useState as Rg}from"react";function Is(e){let o=v(),[t,r]=Rg();return Fe.createElement(wg,null,Fe.createElement(Fg,{sx:{flexDirection:"column"}},Fe.createElement(Ke,{size:32}),Fe.createElement(Og,{order:3},"Choose profile")),Fe.createElement(Eo,{outcome:t}),e.memberships.map(a=>Fe.createElement(Eg,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Lg(n)))}},Fe.createElement(Mg,null,Fe.createElement(Ag,{radius:"xl"}),Fe.createElement("div",{style:{flex:1}},Fe.createElement(xs,{size:"sm",weight:500},a.profile?.display),Fe.createElement(xs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Ng,Center as Hg,Checkbox as Vg,Group as qg,Stack as gs,Title as Ug}from"@mantine/core";import He from"react";function hs(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(gs,null,He.createElement(Hg,{sx:{flexDirection:"column"}},He.createElement(Ke,{size:32}),He.createElement(Ug,null,"Choose scope")),He.createElement(gs,null,(e.scope??"openid").split(" ").map(t=>He.createElement(Vg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),He.createElement(qg,{position:"right",mt:"xl"},He.createElement(Ng,{type:"submit"},"Set scope"))))}import{Alert as Gg,Button as zg,Center as Wg,Group as Xg,Stack as Cs,TextInput as Qg,Title as Jg}from"@mantine/core";import{normalizeErrorString as $g}from"@medplum/core";import Me,{useState as Kg}from"react";function ys(e){let o=v(),[t,r]=Kg(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($g(n)))}},Me.createElement(Cs,null,Me.createElement(Wg,{sx:{flexDirection:"column"}},Me.createElement(Ke,{size:32}),Me.createElement(Jg,null,"Enter MFA code")),t&&Me.createElement(Gg,{icon:Me.createElement(oo,{size:16}),title:"Error",color:"red"},t),Me.createElement(Cs,null,Me.createElement(Qg,{name:"token",label:"MFA code",required:!0})),Me.createElement(Xg,{position:"right",mt:"xl"},Me.createElement(zg,{type:"submit"},"Submit code"))))}function d0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=v(),[i,u]=za(void 0),[m,c]=za(!1),[h,P]=za(void 0),k=Ga(d=>{f?f(d):s.processCode(d).then(()=>{r&&r()}).catch(w=>vs({color:"red",message:Ss(w)}))},[s,f,r]),I=Ga(d=>{c(!!d.mfaRequired),d.login&&u(d.login),d.memberships&&P(d.memberships),d.code&&(t?P(void 0):k(d.code))},[t,k]),b=Ga(d=>{k(d.code)},[k]);return jg(()=>{o&&!i&&s.get("auth/login/"+o).then(I).catch(d=>vs({color:"red",message:Ss(d)}))},[s,o,i,I]),uo.createElement(qt,{width:450},(()=>i?m?uo.createElement(ys,{login:i,handleAuthResponse:I}):h?uo.createElement(Is,{login:i,memberships:h,handleAuthResponse:I}):e.projectId==="new"?uo.createElement(nr,{login:i,handleAuthResponse:I}):e.chooseScopes?uo.createElement(hs,{login:i,scope:e.scope,handleAuthResponse:b}):uo.createElement("div",null,"Success"):uo.createElement(ps,{onForgotPassword:a,onRegister:n,handleAuthResponse:I,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Xa as AddressDisplay,Ka as AddressInput,Za as AnnotationInput,AS as AppShell,yo as AsyncAutocomplete,Bn as AttachmentArrayDisplay,Fn as AttachmentArrayInput,So as AttachmentButton,we as AttachmentDisplay,vt as AttachmentInput,jo as BackboneElementDisplay,Yo as BackboneElementInput,Df as CalendarInput,Bt as CheckboxFormSection,yt as CodeInput,bo 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,pB as DefaultResourceTimeline,wn as DescriptionList,On as DescriptionListEntry,ua as DiagnosticReportDisplay,qt as Document,Sc as ElementDefinitionInputSelector,Sf as ElementDefinitionTypeInput,TB as EncounterTimeline,Io as ErrorBoundary,ax 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,Ke as Logo,ne as MedplumLink,nh as MedplumProvider,dF as MemoizedFhirPathTable,eF as MemoizedSearchControl,Un as MoneyDisplay,nf as MoneyInput,kn as Navbar,fm as ObservationTable,Eo as OperationOutcomeAlert,Bo as Panel,bF as PatientTimeline,UF as PlanDefinitionBuilder,Ko as QuantityDisplay,be as QuantityInput,vM as QuestionnaireBuilder,Wl as QuestionnaireForm,Zt as QuestionnaireFormItem,Ol as QuestionnaireItemType,bt as RangeDisplay,et as RangeInput,ro as ReferenceDisplay,To as ReferenceInput,MM as ReferenceRangeEditor,iI as ReferenceRangeGroupEditor,xO as RegisterForm,UM as RequestGroupDisplay,Xn as ResourceArrayDisplay,If as ResourceArrayInput,Ce as ResourceAvatar,Qe as ResourceBadge,YM as ResourceBlame,fw as ResourceDiff,kb as ResourceForm,pw as ResourceHistoryTable,Et as ResourceInput,Oe as ResourceName,ce as ResourcePropertyDisplay,Re as ResourcePropertyInput,da as ResourceTable,$e as ResourceTimeline,Dw as Scheduler,Da as SearchChangeEvent,lo as SearchClickEvent,$p as SearchControl,ul as SearchFieldEditor,Il as SearchFilterEditor,Ta as SearchLoadEvent,ww as ServiceRequestTimeline,d0 as SignInForm,Nt as StatusBadge,Nf as Timeline,Je as TimelineItem,vf as TimingInput,ga as addDateFilterBetween,zB as addField,Mo as addFilter,el as addLastMonthFilter,ha as addMissingFilter,tl as addNextMonthFilter,ol as addThisMonthFilter,Zf as addTodayFilter,Yf as addTomorrowFilter,rl as addYearToDateFilter,_f as addYesterdayFilter,ye as buildFieldNameString,GB as clearFilters,zt as clearFiltersOnField,hd as convertIsoToLocal,Cd as convertLocalToIso,fr as createScriptTag,jf as deleteFilter,me as getErrorsForInput,At as getIssuesForExpression,Mc as getMonthString,rt as getOpString,as as getRecaptcha,ll as getSearchOperators,nl as getSortField,fa as getStartMonth,MI as getTimeString,Se as getValueAndType,rs as initRecaptcha,El as isChoiceQuestion,Rx as isQuestionEnabled,fl as isSortDescending,Pn as parseForm,sl as renderValue,tt as setFilters,fp as setOffset,al as setPage,Zo as setPropertyValue,Ca as setSort,qf as sortByDateAndPriority,WB as toggleSort,v as useMedplum,Uo as useMedplumContext,qe as useMedplumNavigate,mt as useMedplumProfile,X as useResource};
68
68
  //# sourceMappingURL=index.mjs.map