@medplum/react 2.0.28 → 2.0.30

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