@medplum/react 2.0.29 → 2.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{formatAddress as 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 Cs,NativeSelect as qa,TextInput as No}from"@mantine/core";import Ve,{useRef as ys,useState as vs}from"react";function Ua(e,o){return e.line&&e.line.length>o?e.line[o]:""}function Ga(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=ys();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(Ga(r.current||{},0,m))}function s(m){a(Ga(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(Cs,{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:Ua(o,0),onChange:m=>l(m.currentTarget.value)}),Ve.createElement(No,{placeholder:"Line 2",defaultValue:Ua(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 ws,useState as Os}from"react";import{showNotification as Ss}from"@mantine/notifications";import Ps,{createContext as bs,useContext as Ds,useEffect as Wa,useMemo as Ts,useState as ks}from"react";var Xa=bs(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 Ps.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]=Os(e.defaultValue||{}),a=ws();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 Us}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 Oe=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 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 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 Cr=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 yr=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 Pr=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var br=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var 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 Uo=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 wr=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 Or=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 Go=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"},Us(this.state.error)):this.props.children}};import{Center as Gs,Loader as zs}from"@mantine/core";import Ya from"react";function Nr(){return Ya.createElement(Gs,{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 Ge,{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 Co(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(),[O,y]=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 be=go();be.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(we=>{me.signal.aborted||(xe(we.map(r)),h(void 0),be.current&&(we.length>0&&n(we.slice(0,1)),d(!1)))}).catch(we=>{me.signal.aborted||we.message.includes("aborted")||ii({color:"red",message:ui(we)})})},[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]),C=Io(Y=>{let me=[],we=[];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&&we.push(st)}n(me),y(we)},[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)),C([g.current[0].value]))):d(!0))},[C]),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:[...O,...M],onFocus:L,onChange:C,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 Ci(e){return e.id}function yi(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 Pi(u,f)},[r]),n=sn(f=>{f.length>0&&t(`/${xi(f[0])}`)},[t]);return Ge.createElement(Co,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ge.createElement(Fr,{size:16}),placeholder:"Search",itemComponent:vi,toKey:Ci,toOption:yi,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),Ge.createElement("div",{ref:t,...o},Ge.createElement(mi,{noWrap:!0},Ge.createElement(pe,{value:e}),Ge.createElement("div",null,Ge.createElement(ln,null,cn(e)),Ge.createElement(ln,{size:"xs",color:"dimmed"},r))))});function Si(e){let o=JSON.stringify(e);return Ii(e)?`{
1
+ import{formatAddress as bs}from"@medplum/core";import Wa from"react";function Xa(e){let o=e.value;return o?Wa.createElement(Wa.Fragment,null,bs(o)):null}import{Group as Ds,NativeSelect as Qa,TextInput as qo}from"@mantine/core";import Ve,{useRef as Ts,useState as ks}from"react";function Ja(e,o){return e.line&&e.line.length>o?e.line[o]:""}function $a(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Ka(e){let[o,t]=ks(e.defaultValue||{}),r=Ts();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a($a(r.current||{},0,c))}function s(c){a($a(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function m(c){a({...r.current,postalCode:c})}return Ve.createElement(Ds,{spacing:"xs",grow:!0,noWrap:!0},Ve.createElement(Qa,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ve.createElement(Qa,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ve.createElement(qo,{placeholder:"Line 1",defaultValue:Ja(o,0),onChange:c=>l(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"Line 2",defaultValue:Ja(o,1),onChange:c=>s(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>m(c.currentTarget.value)}))}import{TextInput as Ls}from"@mantine/core";import{createReference as Rs}from"@medplum/core";import Ns,{useRef as Hs,useState as Vs}from"react";import{showNotification as Bs}from"@mantine/notifications";import As,{createContext as Fs,useContext as Ms,useEffect as ja,useMemo as ws,useState as Os}from"react";var _a=Fs(void 0);function nh(e){let o=e.medplum,t=e.navigate??Es,[r,a]=Os({profile:o.getProfile(),loading:!1});ja(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ja(()=>{function f(){Bs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=ws(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return As.createElement(_a.Provider,{value:n},e.children)}function Uo(){return Ms(_a)}function v(){return Uo().medplum}function qe(){return Uo().navigate}function mt(){return Uo().profile}function Es(e){window.location.assign(e)}function Za(e){let o=mt(),[t,r]=Vs(e.defaultValue||{}),a=Hs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Rs(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Ns.createElement(Ls,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Iu,useMantineTheme as gu}from"@mantine/core";import to,{Suspense as hu,useState as Cu}from"react";import{Alert as Qs}from"@mantine/core";import{normalizeErrorString as Js}from"@medplum/core";import{forwardRef as qs,createElement as en}from"react";import eo from"prop-types";var Ya={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Us=Object.defineProperty,Gs=Object.defineProperties,zs=Object.getOwnPropertyDescriptors,pt=Object.getOwnPropertySymbols,rn=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,on=(e,o,t)=>o in e?Us(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,tn=(e,o)=>{for(var t in o||(o={}))rn.call(o,t)&&on(e,t,o[t]);if(pt)for(var t of pt(o))an.call(o,t)&&on(e,t,o[t]);return e},Ws=(e,o)=>Gs(e,zs(o)),Xs=(e,o)=>{var t={};for(var r in e)rn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&pt)for(var r of pt(e))o.indexOf(r)<0&&an.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=qs((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,m=Xs(f,["color","size","stroke","children"]);return en("svg",tn(Ws(tn({ref:n},Ya),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),m),[...t.map(([c,h])=>en(c,h)),...u||[]])});return r.propTypes={color:eo.string,size:eo.oneOfType([eo.string,eo.number]),stroke:eo.oneOfType([eo.string,eo.number])},r.displayName=`${o}`,r};var cr=x("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var oo=x("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var mr=x("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var pr=x("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var xr=x("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var Ir=x("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var gr=x("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var hr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Ee=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var Go=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Cr=x("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var yr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ue=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var co=x("circle-plus","IconCirclePlus",[["path",{d:"M20.987 12.497a9 9 0 1 0 -8.467 8.489",key:"svg-0"}],["path",{d:"M16 19h6",key:"svg-1"}],["path",{d:"M19 16v6",key:"svg-2"}]]);var zo=x("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var vr=x("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Sr=x("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Pr=x("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var br=x("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Dr=x("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var mo=x("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var po=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Tr=x("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var kr=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var Br=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Ar=x("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Fr=x("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var xt=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var It=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Mr=x("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var wr=x("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Or=x("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Er=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Lr=x("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Rr=x("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var xo=x("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Wo=x("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Xo=x("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Nr=x("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Hr=x("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Vr=x("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Qo=x("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var qr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Ur from"react";var Io=class extends Ur.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?Ur.createElement(Qs,{icon:Ur.createElement(oo,{size:16}),title:"Something went wrong",color:"red"},Js(this.state.error)):this.props.children}};import{Center as $s,Loader as Ks}from"@mantine/core";import nn from"react";function Gr(){return nn.createElement($s,{style:{width:"100%",height:"100vh"}},nn.createElement(Ks,null))}import{Avatar as wi,createStyles as Oi,Group as Ct,Header as Ei,Menu as Le,Stack as Li,Text as Jo,UnstyledButton as yn}from"@mantine/core";import{formatHumanName as Ri,getReferenceString as vn}from"@medplum/core";import G,{useState as Ni}from"react";import{formatHumanName as js}from"@medplum/core";import fn from"react";function gt(e){let o=e.value;return o?fn.createElement(fn.Fragment,null,js(o,e.options)):null}import{Avatar as cn}from"@mantine/core";import{getDisplayString as ui,getImageSrc as di}from"@medplum/core";import zr from"react";import{Anchor as _s}from"@mantine/core";import{isReference as Zs,isResource as Ys}from"@medplum/core";import ei from"react";function H(e){e.preventDefault(),e.stopPropagation()}function ht(e){if(ln(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&ln(o[0]))return!0}return!1}function ln(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function ne(e){let o=qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=oi(t);return r&&(s+="/"+r),ei.createElement(_s,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function oi(e){if(e){if(typeof e=="string")return ti(e);if(Ys(e))return ri(e);if(Zs(e))return ai(e)}return"#"}function ti(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ri(e){return`/${e.resourceType}/${e.id}`}function ai(e){return`/${e.reference}`}import{deepEquals as ni,isReference as dn,isResource as fi,normalizeOperationOutcome as li}from"@medplum/core";import{useCallback as si,useEffect as sn,useState as ii}from"react";function X(e,o){let t=v(),[r,a]=ii(un(t,e)),n=si(f=>{ni(f,r)||a(f)},[r,a]);return sn(()=>{n(un(t,e))},[t,e,n]),sn(()=>{let f=!0;return dn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(li(l)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(fi(o))return o;if(dn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?ui(o):e.alt??"",r=(o&&di(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?zr.createElement(ne,{to:o},zr.createElement(cn,{src:r,alt:t,radius:a,...n})):zr.createElement(cn,{src:r,alt:t,radius:a,...n})}import{createStyles as hi,Group as Ci,Text as pn}from"@mantine/core";import{formatHumanName as yi,getDisplayString as hn,getReferenceString as vi,isUUID as Si}from"@medplum/core";import Ge,{forwardRef as Pi,useCallback as xn}from"react";import{Loader as ci,MultiSelect as mi}from"@mantine/core";import mn,{useCallback as go,useEffect as pi,useRef as ho,useState as Co}from"react";import{showNotification as xi}from"@mantine/notifications";import{normalizeErrorString as Ii}from"@medplum/core";function yo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=gi(o),u=ho(null),[m,c]=Co(void 0),[h,P]=Co(),[k,I]=Co(),[b,d]=Co(),[w,y]=Co(i.map(r)),[O,Ie]=Co([]),ge=ho();ge.current=m;let ue=ho();ue.current=h;let Y=ho();Y.current=k;let No=ho();No.current=b;let C=ho();C.current=O;let N=go(()=>{P(void 0);let _=u.current?.value.trim()||"";if(_===ge.current)return;c(_);let ae=new AbortController;I(ae),a(_,ae.signal).then(de=>{ae.signal.aborted||(Ie(de.map(r)),I(void 0),No.current&&(de.length>0&&n(de.slice(0,1)),d(!1)))}).catch(de=>{ae.signal.aborted||de.message.includes("aborted")||xi({color:"red",message:Ii(de)})})},[a,n,r]),Te=go(()=>{Y.current&&(Y.current.abort(),I(void 0)),ue.current!==void 0&&window.clearTimeout(ue.current);let _=window.setTimeout(()=>N(),100);P(_)},[N]),he=go(_=>{let ae=[],de=[];for(let Ho of _){let ct=C.current?.find(Ps=>Ps.value===Ho),Vo=ct?.resource;!Vo&&l!==!1&&f&&(Vo=f(Ho),ct=r(Vo)),Vo&&ae.push(Vo),ct&&de.push(ct)}n(ae),y(de)},[l,n,f,r]),Ye=go(_=>{_.key==="Enter"&&(!ue.current&&!Y.current?(H(_),C.current&&C.current.length>0&&(Ie(C.current.slice(0,1)),he([C.current[0].value]))):d(!0))},[he]),D=go(_=>{let ae=r(f(_));return Ie([...C.current,ae]),ae},[f,Ie,r]),W=go((_,ae)=>!ae,[]);return pi(()=>()=>{Y.current&&Y.current.abort()},[]),mn.createElement(mi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:Ye,onSearchChange:Te,data:[...w,...O],onFocus:N,onChange:he,onCreate:D,rightSectionWidth:40,rightSection:k?mn.createElement(ci,{size:16}):null,filter:W,creatable:!0})}function gi(e){return e?Array.isArray(e)?e:[e]:[]}var bi=hi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Di(e){return e.id}function Ti(e){return{value:e.id,label:hn(e),resource:e}}function Cn(e){let{classes:o}=bi(),t=qe(),r=v(),a=xn(async(f,l)=>{let s=Bi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Ai(u,f)},[r]),n=xn(f=>{f.length>0&&t(`/${vi(f[0])}`)},[t]);return Ge.createElement(yo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ge.createElement(Rr,{size:16}),placeholder:"Search",itemComponent:ki,toKey:Di,toOption:Ti,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var ki=Pi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Ge.createElement("div",{ref:t,...o},Ge.createElement(Ci,{noWrap:!0},Ge.createElement(Ce,{value:e}),Ge.createElement("div",null,Ge.createElement(pn,null,hn(e)),Ge.createElement(pn,{size:"xs",color:"dimmed"},r))))});function Bi(e){let o=JSON.stringify(e);return Si(e)?`{
2
2
  Patients1: PatientList(_id: ${o}, _count: 1) {
3
3
  resourceType
4
4
  id
@@ -61,8 +61,8 @@ import{formatAddress as hs}from"@medplum/core";import Ha from"react";function Va
61
61
  display
62
62
  }
63
63
  }
64
- }`.replace(/\s+/g," ")}function Pi(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(bi(t),o).slice(0,5)}function bi(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 wi=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}=wi(),[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(Or,{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 Ui}from"@mantine/core";import{showNotification as hn}from"@mantine/notifications";import{deepClone as Gi,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?Oi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Ei(o,t);return o}function Oi(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 Cn(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=Gi(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"}),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(Ui,{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 yo(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(Co,{...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(yo,{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 yn=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}=yn(),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(Cn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function fu(e){let{classes:o,cx:t}=yn();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 Ur 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 Ur.createElement("div",null,e.values?.map((o,t)=>Ur.createElement("div",{key:"attatchment-"+t},Ur.createElement(Me,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Pn}from"@mantine/core";import ne,{useRef as Iu,useState as gu}from"react";import Gr,{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 Gr.createElement(Gr.Fragment,null,Gr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function bn(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(Pn,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},ne.createElement(Ue,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(Pn,{...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 Ou,globalSchema as Eu}from"@medplum/core";import Jo from"react";var ht=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Cu}from"@mantine/core";import Wo from"react";var yu=Cu(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}=yu();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 wu,PropertyType as R}from"@medplum/core";import U from"react";import{formatCodeableConcept as vu}from"@medplum/core";import Bn from"react";function Po(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 Ct(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 wn(e){let o=e.value;return o?zr.createElement(zr.Fragment,null,o.name,o.name&&": ",o.telecom?.map((t,r)=>zr.createElement(Ct,{key:"telecom-"+r,value:t}))):null}import Pu from"react";function On(e){return Pu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as bu}from"@medplum/core";import En from"react";function Ln(e){return En.createElement(En.Fragment,null,bu(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 yt(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?U.createElement(Sn,{values:r,maxWidth:e.maxWidth}):U.createElement(Vn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case R.boolean:return U.createElement(U.Fragment,null,r===void 0?"":(!!r).toString());case R.SystemString:case R.string:return U.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 U.createElement(U.Fragment,null,r);case R.canonical:return U.createElement(eo,{value:{reference:r},link:e.link});case R.dateTime:case R.instant:return U.createElement(U.Fragment,null,Bu(r));case R.markdown:return U.createElement("pre",null,r);case R.Address:return U.createElement(Va,{value:r});case R.Annotation:return U.createElement(U.Fragment,null,r?.text);case R.Attachment:return U.createElement(Me,{value:r,maxWidth:e.maxWidth});case R.CodeableConcept:return U.createElement(Po,{value:r});case R.Coding:return U.createElement(Mn,{value:r});case R.ContactDetail:return U.createElement(wn,{value:r});case R.ContactPoint:return U.createElement(Ct,{value:r});case R.HumanName:return U.createElement(mt,{value:r});case R.Identifier:return U.createElement(On,{value:r});case R.Money:return U.createElement(Ln,{value:r});case R.Period:return U.createElement(U.Fragment,null,Au(r));case R.Quantity:case R.Duration:return U.createElement(Xo,{value:r});case R.Range:return U.createElement(yt,{value:r});case R.Ratio:return U.createElement(Hn,{value:r});case R.Reference:return U.createElement(eo,{value:r,link:e.link});case R.Timing:return U.createElement(U.Fragment,null,Mu(r));case R.Dosage:case R.UsageContext:return U.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 U.createElement(Qo,{value:{type:Fu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function ye(e,o){let t=wu(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]=ye(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Jo.createElement(kn,{key:f,term:Ou(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 Pt from"react";function bt(e){return Pt.createElement(Lu,{noWrap:!0},Pt.createElement("div",null,e.children),Pt.createElement("div",null,Pt.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 Un,Group as Vu,Stack as qu,TextInput as Gn}from"@mantine/core";import{capitalize as Uu,deepClone as Gu}from"@medplum/core";import De,{useEffect as zu,useState as zn}from"react";function eb(e){let o=v(),t=X(e.defaultValue),[r,a]=zn(),[n,f]=zn();return zu(()=>{t&&(f(Gu(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(Gn,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),De.createElement(ve,{title:"ID",htmlFor:"id",outcome:e.outcome},De.createElement(Gn,{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(Un,{type:"submit"},"OK"),e.onDelete&&De.createElement(Un,{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]",Uu(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(yo,{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(yo,{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 bo,{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 bo.createElement(pd,{spacing:"xs",grow:!0,noWrap:!0},bo.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"]}),bo.createElement(Bt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),bo.createElement(Bt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),bo.createElement(Bt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),bo.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 Cd}from"react";function Zn(e){let[o,t]=Cd(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 yd,TextInput as vd}from"@mantine/core";import Jr,{useCallback as $r,useState as Sd}from"react";var Pd=["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(yd,{defaultValue:t?.currency,data:Pd,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(Cr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as bd}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(bd,{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 wd}from"@mantine/core";import _r,{useState as Od}from"react";function tf(e){let[o,t]=Od(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return _r.createElement(wd,{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 Gd,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=Ud(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(Co,{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 Ud(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(Gd,{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(Ue,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 wt,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(wt,{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(wt,{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(wt,{position:"apart",mt:"md",spacing:"xs"},tc.map(i=>$.createElement(df,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(wt,{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(bn,{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]=ye(f,s),m=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?To.createElement(bt,{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 Cc=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 yc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Cf(e){let{classes:o}=Cc(),{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}},yc(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 Pc,createStyles as bc}from"@mantine/core";import Dc from"react";var Tc=bc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Tc();return Dc.createElement(Pc,{className:r.root,...t},o)}import Om from"react";import{ActionIcon as Rf,Center as Im,createStyles as gm,Group as hm,Loader as Cm,Menu as Re,ScrollArea as ym,TextInput as vm}from"@mantine/core";import{showNotification as Sm,updateNotification as sa}from"@mantine/notifications";import{getReferenceString as _o,normalizeErrorString as Pm}from"@medplum/core";import P,{useCallback as Lt,useEffect as bm,useRef as Nf,useState as Hf}from"react";import{createStyles as qc,Group as Et,List as Sf,Stack as Pf,Text as Pe,Title as bf}from"@mantine/core";import{capitalize as Uc,formatDateTime as aa,formatObservationValue as Gc}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 yf 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?yf.createElement(Ac,{justify:"flex-start",spacing:"xs"},e.map((t,r)=>t.text&&yf.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 wc,isOk as Oc,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&&!Oc(a))l=`[${Ec(a)}]`;else if(f)l=wc(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 Ot(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(Pf,null,I.createElement(bf,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(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(Pe,null,I.createElement(Qe,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(Pe,null,I.createElement(Qe,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(Pe,null,I.createElement(Qe,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(Pe,null,aa(e.issued))),e.status&&I.createElement("div",null,I.createElement(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(Pe,null,Uc(e.status))))}function Qc(e){return I.createElement(Pf,{spacing:"xs"},I.createElement(bf,{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(Pe,{fw:500},"Collected:")," ",aa(o.collection?.collectedDateTime)),I.createElement(Et,{spacing:5},I.createElement(Pe,{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(Po,{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(Po,{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(Po,{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(Ot,{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,Gc(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(yt,{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]=ye(kf(e.original),l),[c,m]=ye(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(yr,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=wf(t,o),n=wf(r,o);return a>n?1:a<n?-1:Of(t,o)-Of(r,o)})}function wf(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 Of(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 C=He.value;if(C.type==="history"&&l(C),C.entry)for(let W of C.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]);bm(()=>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:P.createElement(xr,{size:16}),autoClose:2e3})).catch(L=>sa({id:"upload-notification",color:"red",title:"Upload error",message:Pm(L),icon:P.createElement(Sr,{size:16}),autoClose:2e3}))}function d(g,L){return o.updateResource({...g,priority:L})}function O(g){d(g,"stat").then(T).catch(console.log)}function y(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 be(g){sa({id:"upload-notification",loading:!0,title:"Uploading...",message:wm(g),autoClose:!1,withCloseButton:!1})}return n?P.createElement(Ff,null,e.createCommunication&&P.createElement(ko,null,P.createElement(J,{testid:"timeline-form",onSubmit:g=>{h(g.text);let L=a.current;L&&(L.value="",L.focus())}},P.createElement(hm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},P.createElement(pe,{value:r}),P.createElement(vm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),P.createElement(Rf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},P.createElement(kr,{size:16})),P.createElement(vo,{onUpload:D,onUploadStart:ge,onUploadProgress:be},g=>P.createElement(Rf,{...g,radius:"xl",color:"blue",variant:"filled"},P.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 P.createElement(Tm,{key:L,history:f,resource:g,onDetails:Ie});switch(g.resourceType){case"AuditEvent":return P.createElement(Mm,{key:L,resource:g,onDetails:M});case"Communication":return P.createElement(Bm,{key:L,resource:g,onPin:g.priority!=="stat"?O:void 0,onUnpin:g.priority==="stat"?y:void 0,onDetails:M,onEdit:xe,onDelete:Z});case"DiagnosticReport":return P.createElement(Fm,{key:L,resource:g,onDetails:M,onEdit:xe,onDelete:Z});case"Media":return P.createElement(Am,{key:L,resource:g,onDetails:M,onEdit:xe,onDelete:Z});default:return P.createElement(Je,{key:L,resource:g,padding:!0},P.createElement(fa,{value:g,ignoreMissingValues:!0}))}})):P.createElement(Im,{style:{width:"100%",height:"100%"}},P.createElement(Cm,null))}function Bo(e){return P.createElement(Re.Dropdown,null,P.createElement(Re.Label,null,"Resource"),e.onPin&&P.createElement(Re.Item,{icon:P.createElement(Br,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${_o(e.resource)}`},"Pin"),e.onUnpin&&P.createElement(Re.Item,{icon:P.createElement(Ar,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${_o(e.resource)}`},"Unpin"),e.onDetails&&P.createElement(Re.Item,{icon:P.createElement(Dr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${_o(e.resource)}`},"Details"),e.onEdit&&P.createElement(Re.Item,{icon:P.createElement(vr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${_o(e.resource)}`},"Edit"),e.onDelete&&P.createElement(P.Fragment,null,P.createElement(Re.Divider,null),P.createElement(Re.Label,null,"Danger zone"),P.createElement(Re.Item,{color:"red",icon:P.createElement(Go,{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?P.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:P.createElement(Bo,{...e})},P.createElement(Af,{original:o,revised:e.resource})):P.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:P.createElement(Bo,{...e})},P.createElement("h3",null,"Created"),P.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 P.createElement(Je,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:P.createElement(Bo,{...e})},P.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 P.createElement(Je,{resource:e.resource,padding:!!t,popupMenuItems:P.createElement(Bo,{...e})},P.createElement(Me,{value:e.resource.content}))}function Mm(e){return P.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:P.createElement(Bo,{...e})},P.createElement(ym,null,P.createElement("pre",null,e.resource.outcomeDesc)))}function Fm(e){return P.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:P.createElement(Bo,{...e})},P.createElement(na,{value:e.resource}))}function wm(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 Uk(e){return Om.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 Up,Table as Gp}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 wo,Center as zt,createStyles as Dp,Group as ha,Loader as Tp,Menu as pl,Pagination as kp,Table as Bp,Text as Ca,UnstyledButton as Ap}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Pa,formatSearchQuery as Mp,globalSchema as Fp}from"@medplum/core";import b,{useEffect as xl,useRef as wp,useState as ya}from"react";import{Box as Nm,Button as Hm,Modal as Vm,Text as qm}from"@mantine/core";import Ao from"react";function Gf(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(Uf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Ao.createElement(Uf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Ao.createElement(qm,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Uf(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 Um,DEFAULT_SEARCH_COUNT as Gm,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??Gm,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(Um).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]=ye({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??[],O=r.current?.value;if(O){let y=[...d,O];t({search:{...o.search,fields:y}})}}function u(){let d=o.search.fields??[],O=a.current?.value;if(O){let y=[...d];y.splice(y.indexOf(O),1),t({search:{...o.search,fields:y}})}}function c(){let d=o.search.fields??[],O=a.current?.value;if(!O)return;let y=[...d],M=y.indexOf(O);M<=0||(S(y,M,M-1),t({search:{...o.search,fields:y}}))}function m(){let d=o.search.fields??[],O=a.current?.value;if(!O)return;let y=[...d],M=y.indexOf(O);M>=y.length-1||(S(y,M,M+1),t({search:{...o.search,fields:y}}))}function S(d,O,y){let M=d[O];d[O]=d[y],d[y]=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,O)=>d.localeCompare(O));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 w,{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 Ut(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 w.createElement(up,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},w.createElement("div",null,w.createElement("table",null,w.createElement("colgroup",null,w.createElement("col",{style:{width:200}}),w.createElement("col",{style:{width:200}}),w.createElement("col",{style:{width:380}}),w.createElement("col",{style:{width:120}})),w.createElement("thead",null,w.createElement("tr",null,w.createElement("th",null,"Field"),w.createElement("th",null,"Operation"),w.createElement("th",null,"Value"),w.createElement("th",null,"Actions"))),w.createElement("tbody",null,i.map((u,c)=>c===r?w.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)}):w.createElement(mp,{key:`filter-${c}-${i.length}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(c),onDelete:()=>t(Wf(n.current,c))})),w.createElement(sl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),w.createElement(ip,{position:"right",mt:"xl"},w.createElement(tt,{onClick:()=>e.onOk(n.current)},"OK")))}function mp(e){let{filter:o}=e;return w.createElement("tr",null,w.createElement("td",null,he(o.code)),w.createElement("td",null,Yo(o.operator)),w.createElement("td",null,w.createElement(qt,{resourceType:e.resourceType,filter:o})),w.createElement("td",null,w.createElement(tt,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),w.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 w.createElement("tr",null,w.createElement("td",null,w.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)}))})),w.createElement("td",null,s&&w.createElement(fl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:Yo(i)}))]})),w.createElement("td",null,l&&o.operator&&w.createElement(Ut,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),w.createElement("td",null,o.code&&o.operator&&o.value&&w.createElement(tt,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&w.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(Ut,{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(Cp,{...e});case"reference":return p.createElement(yp,{...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(Uo,{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(Oe,{size:14}),onClick:()=>e.onChange(Jf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Qf(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Xf(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(jf(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Kf(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange($f(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Year to date"),p.createElement(Gt,{...e}))}function Cp(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(Uo,{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(Gt,{...e}))}function yp(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(Gt,{...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(Uo,{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(Gt,{...e}))}function Gt(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 Pp}from"@medplum/core";function ml(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(bp(o,r));return t}function bp(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=Pp.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}},Op=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}=Op(),t=v(),[r,a]=ya(!1),[n,f]=ya(),{search:l,onLoad:s}=e,[i,u]=ya({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),c=wp(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(C=>{u({...c.current,searchResponse:C}),s&&s(new Sa(C))}).catch(C=>{u({...c.current,searchResponse:void 0}),f(C)})},[t,l,m,s]);function S(C,W){C.stopPropagation();let io=C.target.checked,Y={...c.current.selected};io?Y[W]=!0:delete Y[W],u({...c.current,selected:Y})}function k(C){C.stopPropagation();let so=C.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 C=c.current;if(!C.searchResponse?.entry||C.searchResponse.entry.length===0)return!1;for(let W of C.searchResponse.entry)if(W.resource?.id&&!C.selected[W.resource.id])return!1;return!0}function h(C){e.onChange&&e.onChange(new va(C))}function D(C,W){pt(C.target)||C.button!==2&&(H(C),C.button!==1&&e.onClick&&e.onClick(new ao(W,C)),C.button===1&&e.onAuxClick&&e.onAuxClick(new ao(W,C)))}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 b.createElement(zt,{style:{width:"100%",height:"100%"}},b.createElement(Tp,null));let y=e.checkboxesEnabled,M=ml(l),xe=l.resourceType,Z=i.searchResponse,ge=Z?.entry?.map(C=>C.resource),be="subtle",g="gray",L=16,He=window.innerWidth<768;return b.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&b.createElement(ha,{position:"apart",mb:"xl"},b.createElement(ha,{spacing:2},b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(hr,{size:L}),onClick:()=>u({...c.current,fieldEditorVisible:!0})},"Fields"),b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(br,{size:L}),onClick:()=>u({...c.current,filterEditorVisible:!0})},"Filters"),e.onNew&&b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(Pr,{size:L}),onClick:e.onNew},"New..."),!He&&d()&&b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(Er,{size:L}),onClick:e.onExport?e.onExport:()=>u({...c.current,exportDialogVisible:!0})},"Export..."),!He&&e.onDelete&&b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(Go,{size:L}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!He&&e.onBulk&&b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(dr,{size:L}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),Z&&b.createElement(Ca,{size:"xs",color:"dimmed"},Hp(l,Z.total),"-",Vp(l,Z.total)," of"," ",`${m==="estimate"?"~":""}${Z.total?.toLocaleString()}`)),b.createElement(Bp,{className:o.table},b.createElement("thead",null,b.createElement("tr",null,y&&b.createElement("th",null,b.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:C=>k(C)})),M.map(C=>b.createElement("th",{key:C.name},b.createElement(pl,{shadow:"md",width:240,position:"bottom-end"},b.createElement(pl.Target,null,b.createElement(Ap,{className:o.control},b.createElement(ha,{position:"apart",noWrap:!0},b.createElement(Ca,{weight:500,size:"sm"},he(C.name)),b.createElement(zt,{className:o.icon},b.createElement(sr,{size:14,stroke:1.5}))))),b.createElement(cl,{search:e.search,searchParams:C.searchParams,onPrompt:(W,so)=>{u({...c.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:so})},onChange:W=>{h(W)}}))))),!e.hideFilters&&b.createElement("tr",null,y&&b.createElement("th",null),M.map(C=>b.createElement("th",{key:C.name},C.searchParams&&b.createElement(Lp,{resourceType:xe,searchParams:C.searchParams,filters:e.search.filters}))))),b.createElement("tbody",null,ge?.map(C=>C&&b.createElement("tr",{key:C.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>D(W,C),onAuxClick:W=>D(W,C)},y&&b.createElement("td",null,b.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${C.id}`,checked:!!i.selected[C.id],onChange:W=>S(W,C.id)})),M.map(W=>b.createElement("td",{key:W.name},tl(C,W))))))),ge?.length===0&&b.createElement(Xe,null,b.createElement(zt,{style:{height:150}},b.createElement(Ca,{size:"xl",color:"dimmed"},"No results"))),Z?.total!==void 0&&Z.total>0&&b.createElement(zt,{m:"md",p:"md"},b.createElement(kp,{value:Rp(l),total:Np(l,Z.total),onChange:C=>h(Zf(l,C)),getControlProps:C=>{switch(C){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&b.createElement("div",{"data-testid":"search-error"},b.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),b.createElement(al,{search:e.search,visible:c.current.fieldEditorVisible,onOk:C=>{h(C),u({...c.current,fieldEditorVisible:!1})},onCancel:()=>{u({...c.current,fieldEditorVisible:!1})}}),b.createElement(ul,{search:e.search,visible:c.current.filterEditorVisible,onOk:C=>{h(C),u({...c.current,filterEditorVisible:!1})},onCancel:()=>{u({...c.current,filterEditorVisible:!1})}}),b.createElement(Gf,{visible:c.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...c.current,exportDialogVisible:!1})}}),b.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:C=>{h(Mo(e.search,C.code,C.operator,C.value)),u({...c.current,filterDialogVisible:!1})},onCancel:()=>{u({...c.current,filterDialogVisible:!1})}}))}var kA=b.memo(Ep);function Lp(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?b.createElement("span",null,"no filters"):b.createElement(b.Fragment,null,o.map((t,r)=>b.createElement("div",{key:`filter-${r}-${o.length}`},Yo(t.operator),"\xA0",b.createElement(qt,{resourceType:e.resourceType,filter:t}))))}function Rp(e){return Math.floor((e.offset??0)/(e.count??Pa))+1}function Np(e,o){let t=e.count??Pa;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??Pa))}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(y=>n(zp(y)))},[o,f]);function k(y,M){y.stopPropagation();let Z=y.target.checked,Ie={...S.current};Z?Ie[M]=!0:delete Ie[M],c(Ie)}function T(y){y.stopPropagation();let xe=y.target.checked,Z={},Ie=m.current?.data.ResourceList;xe&&Ie&&Ie.forEach(ge=>{ge.id&&(Z[ge.id]=!0)}),c(Z)}function h(){let y=m.current?.data.ResourceList;if(!y||y.length===0)return!1;for(let M of y)if(M.id&&!S.current[M.id])return!1;return!0}function D(y,M){pt(y.target)||(H(y),y.button!==1&&e.onClick&&e.onClick(new ao(M,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new ao(M,y)))}if(Il(()=>{o.requestSchema(e.resourceType).then(y=>{r({...y})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(Up,null);let O=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:y=>H(y),"data-testid":"search-control"},te.createElement(Gp,null,te.createElement("thead",null,te.createElement("tr",null,O&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:h(),onChange:y=>T(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:M=>D(M,y),onAuxClick:M=>D(M,y)},O&&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:M=>k(M,y.id)})),l.map(M=>te.createElement("td",{key:M.name},te.createElement(qf,{propertyType:M.propertyType,path:M.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(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 ba from"react";function Oo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:ba.createElement(Xp,{icon:ba.createElement(Ze,{size:16}),color:"red"},o.map(t=>ba.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as 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 Cl,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 yl,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=yl();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=yl();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(Cl,{href:"#",onClick:f=>{H(f),a({id:bl()})}},"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(Cl,{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]=Pl(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]=Pl(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 Pl(e){return ye({type:"PlanDefinitionAction",value:e},"timing")}var Da=1;function bl(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:bl(o.id),action:Dl(o.action)}))}import{Anchor as nt,Button as Sx,createStyles as Px,NativeSelect as bx,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 wl,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 Ol,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 G,{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:G.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&&G.createElement(ux,null,n.title),n.item&&G.createElement(Rl,{items:n.item,answers:s,onChange:u}),G.createElement(fx,{position:"right",mt:"xl"},G.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 G.createElement(sx,null,e.items.map((a,n)=>{if(!vx(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(bt,{key:a.linkId,title:a.text,htmlFor:a.linkId},G.createElement(wl,{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(ve,{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(Rl,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return G.createElement(wl,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return G.createElement(at,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return G.createElement(at,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return G.createElement(at,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return G.createElement(Te,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return G.createElement(at,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return G.createElement(at,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return G.createElement(ix,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return G.createElement(gt,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return G.createElement(Do,{name:r,defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return G.createElement(Se,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return yx(o)?G.createElement(xx,{name:r,item:o,initial:a,onChangeAnswer:f}):G.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 G.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"+Ol(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 G.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"+Ol(c.type);a({[m]:c.value})}}},l.map(([i,u])=>G.createElement(Bl,{key:i,id:i,value:i,label:G.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(Cx)??[]}}function Cx(e){return{...e}}function yx(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=Px(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(wx(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 O=u.current;e.onChange({...O,item:O.item?.map(y=>y.id===d.id?d:y)})}function k(d){e.onChange({...e.item,item:[...e.item.item??[],d]})}function T(d){e.onChange({...e.item,item:e.item.item?.filter(O=>O!==d)})}function h(d,O){e.onChange({...u.current,[d]:O})}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(bx,{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]=ye({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 wx(e){return{...e,id:e.id||Eo(),item:Ul(e.item)}}function Ul(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:Ul(o.item),answerOption:Ox(o.answerOption)}))}function Ox(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 Gl,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 Ux=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"}})),Gx=["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(O=>O.id===k),d=D?.intervals.findIndex(O=>O.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}=Ux();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(Ue,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(Ue,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(Gl,{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(Gl,{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(Gx.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(wr,{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(Ot,{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 Ce,{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 Ce.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource,f=Ql(r);return Ce.createElement("div",{className:o.container},Ce.createElement("table",{className:o.root},Ce.createElement("tbody",null,f.map((l,s)=>Ce.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&Ce.createElement(Ce.Fragment,null,Ce.createElement("td",{className:o.author,rowSpan:l.span},Ce.createElement(Qe,{value:l.meta.author,link:!0})),Ce.createElement("td",{className:o.dateTime,rowSpan:l.span},Ce.createElement(ae,{to:dI(n,l.meta.versionId)},cI(l.meta.lastUpdated)))),Ce.createElement("td",{className:o.lineNumber},s+1),Ce.createElement("td",{className:o.line},Ce.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 OF(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(`
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 CI,useState as yI}from"react";function UF(e){let o=v(),[t,r]=yI(e.history);return CI(()=>{!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 PI,createStyles as bI,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=bI(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"+wI(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(Cf,{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(PI,{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 wI(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 OI from"react";function nw(e){return OI.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 UI}from"@medplum/core";import ke,{useState as GI}from"react";function or(e){let o=v(),[t,r]=GI();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(UI(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 Oa}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 wa}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]=wa(typeof google<"u"),[l,s]=wa(!1),[i,u]=wa(!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(Oo,{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(Oa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:ue(a,"firstName")}),j.createElement(Oa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:ue(a,"lastName")}),j.createElement(Oa,{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 Gw(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(Oo,{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(Oo,{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 Cg,Checkbox as yg,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(Cg,{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(yg,{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 Pg,Button as bg,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(Pg,{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(bg,{type:"submit"},"Submit code"))))}function HO(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(O=>xs({color:"red",message:Is(O)}))},[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,Co as AsyncAutocomplete,Sn as AttachmentArrayDisplay,bn as AttachmentArrayInput,vo as AttachmentButton,Me as AttachmentDisplay,gt as AttachmentInput,Qo as BackboneElementDisplay,Ko as BackboneElementInput,Cf as CalendarInput,bt as CheckboxFormSection,It as CodeInput,Po as CodeableConceptDisplay,Wn as CodeableConceptInput,Mn as CodingDisplay,Xn as CodingInput,wn as ContactDetailDisplay,Jn as ContactDetailInput,Ct as ContactPointDisplay,kt as ContactPointInput,Xe as Container,Te as DateTimeInput,Uk 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,On 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,Oo 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,yt as RangeDisplay,jo as RangeInput,eo as ReferenceDisplay,Do as ReferenceInput,aF as ReferenceRangeEditor,Wx as ReferenceRangeGroupEditor,Gw as RegisterForm,pF as RequestGroupDisplay,Vn as ResourceArrayDisplay,uf as ResourceArrayInput,pe as ResourceAvatar,Qe as ResourceBadge,TF as ResourceBlame,OF as ResourceDiff,eb as ResourceForm,UF 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,nw as ServiceRequestTimeline,HO as SignInForm,Ot 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,yc as getMonthString,Yo as getOpString,Zl as getRecaptcha,ol as getSearchOperators,Yf as getSortField,oa as getStartMonth,cI as getTimeString,ye 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};
64
+ }`.replace(/\s+/g," ")}function Ai(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),Mi(Fi(t),o).slice(0,5)}function Fi(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function Mi(e,o){return e.sort((t,r)=>In(r,o)-In(t,o))}function In(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,gn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,gn(yi(r),o));return t}function gn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Hi=Oi(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function Sn(e){let o=Uo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Hi(),[s,i]=Ni(!1);return G.createElement(Ei,{height:60,p:8,style:{zIndex:101}},G.createElement(Ct,{position:"apart"},G.createElement(Ct,{spacing:"xs"},G.createElement(yn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),G.createElement(Cn,{pathname:e.pathname,searchParams:e.searchParams})),G.createElement(Le,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},G.createElement(Le.Target,null,G.createElement(yn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},G.createElement(Ct,{spacing:7},G.createElement(Ce,{value:r,radius:"xl",size:24}),G.createElement(Jo,{size:"sm",className:f.userName},Ri(r?.name?.[0])),G.createElement(yr,{size:12,stroke:1.5})))),G.createElement(Le.Dropdown,null,G.createElement(Li,{align:"center",p:"xl"},G.createElement(Ce,{size:"xl",radius:100,value:o.profile}),G.createElement(gt,{value:o.profile?.name?.[0]}),G.createElement(Jo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&G.createElement(Le.Divider,null),n.map(u=>u.profile.reference!==vn(o.profile)&&G.createElement(Le.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},G.createElement(Ct,null,G.createElement(wi,{radius:"xl"}),G.createElement("div",{style:{flex:1}},G.createElement(Jo,{size:"sm",weight:500},u.profile.display),G.createElement(Jo,{color:"dimmed",size:"xs"},u.project.display))))),G.createElement(Le.Divider,null),G.createElement(Le.Item,{icon:G.createElement(Hr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),G.createElement(Le.Item,{icon:G.createElement(xo,{size:14,stroke:1.5}),onClick:()=>a(`/${vn(r)}`)},"Account settings"),G.createElement(Le.Item,{icon:G.createElement(Fr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),G.createElement(Jo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as fu,createStyles as lu,Navbar as Xr,ScrollArea as su,Space as iu,Text as uu}from"@mantine/core";import re,{useState as du}from"react";import{Button as Gi,Group as zi,Modal as Wi,NativeSelect as Xi,Stack as Qi,TextInput as Ji}from"@mantine/core";import{showNotification as bn}from"@mantine/notifications";import{deepClone as $i,normalizeErrorString as Ki}from"@medplum/core";import ze from"react";import Ui from"react";function Pn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Vi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&qi(o,t);return o}function Vi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function qi(e,o){e[o.name]=o.value}function J(e){return Ui.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Pn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Dn(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=$i(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),bn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{bn({color:"red",message:Ki(u)})})}return ze.createElement(Wi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},ze.createElement(J,{onSubmit:r},ze.createElement(Qi,null,ze.createElement(ji,{config:t}),ze.createElement(Ji,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),ze.createElement(zi,{position:"right"},ze.createElement(Gi,{mt:"sm",type:"submit"},"OK")))))}function ji(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return ze.createElement(Xi,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import tu,{useState as ru}from"react";import _i,{useCallback as Zi}from"react";function Wr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Yi(e){return typeof e.display=="string"?e.display:Wr(e)}function eu(e){return{value:Wr(e),label:Yi(e),resource:e}}function ou(e){return{code:e,display:e}}function vo(e){let o=v(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=Zi(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,m=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let h of m)h.code&&!c.some(P=>P.code===h.code)&&c.push(h);return c},[o,t]);return _i.createElement(yo,{...n,creatable:r??!0,clearable:a??!0,toKey:Wr,toOption:eu,loadOptions:f,onCreate:ou,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function yt(e){let[o,t]=ru(e.defaultValue);function r(a){let n=a[0],f=nu(n);t(f),e.onChange&&e.onChange(f)}return tu.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:au(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function au(e){return e?{code:e}:void 0}function nu(e){return e?.code}var Tn=lu(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function kn(e){let{classes:o}=Tn(),t=qe(),r=pu(e.pathname,e.searchParams,e.menus),[a,n]=du(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return re.createElement(re.Fragment,null,re.createElement(Xr,{width:{sm:250},p:"xs"},re.createElement(su,null,re.createElement(Xr.Section,{mb:"sm"},re.createElement(yt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(Xr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(uu,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(cu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(mu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(fu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Er,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(Dn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function cu(e){let{classes:o,cx:t}=Tn();return re.createElement(ne,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function mu(e){return e.icon?e.icon:re.createElement(iu,{w:30})}function pu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=xu(e,o,f.href);l>a&&(a=l,r=f)}return r}function xu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function AS(e){let o=gu(),[t,r]=Cu(localStorage.navbarOpen==="true"),a=v(),n=mt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?to.createElement(Gr,null):to.createElement(Iu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&to.createElement(Sn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?to.createElement(kn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},to.createElement(Io,{key:`${e.pathname}?${e.searchParams?.toString()}`},to.createElement(hu,{fallback:to.createElement(Gr,null)},e.children)))}import Qr from"react";import{Anchor as yu}from"@mantine/core";import We from"react";function we(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?We.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&We.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&We.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},We.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&We.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},We.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),We.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},We.createElement(yu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Bn(e){return Qr.createElement("div",null,e.values?.map((o,t)=>Qr.createElement("div",{key:"attatchment-"+t},Qr.createElement(we,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as An}from"@mantine/core";import fe,{useRef as Su,useState as Pu}from"react";import Jr,{useRef as vu}from"react";function So(e){let o=v(),t=vu(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Jr.createElement(Jr.Fragment,null,Jr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Fn(e){let[o,t]=Pu(e.defaultValue??[]),r=Su();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return fe.createElement("table",{style:{width:"100%"}},fe.createElement("colgroup",null,fe.createElement("col",{width:"97%"}),fe.createElement("col",{width:"3%"})),fe.createElement("tbody",null,o.map((n,f)=>fe.createElement("tr",{key:`${f}-${o.length}`},fe.createElement("td",null,fe.createElement(we,{value:n,maxWidth:200})),fe.createElement("td",null,fe.createElement(An,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},fe.createElement(Ue,null))))),fe.createElement("tr",null,fe.createElement("td",null),fe.createElement("td",null,fe.createElement(So,{onUpload:n=>{a([...r.current,n])}},n=>fe.createElement(An,{...n,title:"Add",size:"sm",color:"green"},fe.createElement(zo,{size:16})))))))}import{Button as Mn}from"@mantine/core";import Po,{useState as bu}from"react";function vt(e){let[o,t]=bu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Po.createElement(Po.Fragment,null,Po.createElement(we,{value:o,maxWidth:200}),Po.createElement(Mn,{onClick:a=>{H(a),r(void 0)}},"Remove")):Po.createElement(So,{onUpload:r},a=>Po.createElement(Mn,{...a},"Upload..."))}import{getPropertyDisplayName as zu,globalSchema as Wu}from"@medplum/core";import _o from"react";var St=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Du}from"@mantine/core";import $o from"react";var Tu=Du(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function wn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Tu();return $o.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function On(e){return $o.createElement($o.Fragment,null,$o.createElement("dt",null,e.term),$o.createElement("dd",null,e.children))}import{formatDateTime as Eu,formatPeriod as Lu,formatTiming as Ru,getElementDefinitionTypeName as Nu,getTypedPropertyValue as Hu,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as ku}from"@medplum/core";import En from"react";function bo(e){return En.createElement(En.Fragment,null,ku(e.value))}import{formatCoding as Bu}from"@medplum/core";import Ln from"react";function Rn(e){return Ln.createElement(Ln.Fragment,null,Bu(e.value))}import $r from"react";import Nn from"react";function Pt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Nn.createElement(Nn.Fragment,null,t.join("").trim())}function Hn(e){let o=e.value;return o?$r.createElement($r.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>$r.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Au from"react";function Vn(e){return Au.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Fu}from"@medplum/core";import qn from"react";function Un(e){return qn.createElement(qn.Fragment,null,Fu(e.value))}import{formatQuantity as Mu}from"@medplum/core";import Gn from"react";function Ko(e){return Gn.createElement(Gn.Fragment,null,Mu(e.value))}import{formatRange as wu}from"@medplum/core";import zn from"react";function bt(e){return zn.createElement(zn.Fragment,null,wu(e.value))}import Dt from"react";function Wn(e){let o=e.value;return o?Dt.createElement(Dt.Fragment,null,Dt.createElement(Ko,{value:o.numerator}),"\xA0/\xA0",Dt.createElement(Ko,{value:o.denominator})):null}import{stringify as Ou}from"@medplum/core";import Kr from"react";function ro(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Ou(e.value);return e.link!==!1&&e.value.reference?Kr.createElement(ne,{to:e.value},o):Kr.createElement(Kr.Fragment,null,o)}import Tt from"react";function Xn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Tt.createElement(Tt.Fragment,null,t.map((a,n)=>Tt.createElement("div",{key:`${n}-${t.length}`},Tt.createElement(ce,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}import{ActionIcon as Vu,Box as qu,CopyButton as Uu,Tooltip as Gu}from"@mantine/core";function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(qu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Uu,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(Gu,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Vu,{color:n?"teal":"gray",onClick:f},n?E.createElement(Go,{size:"1rem"}):E.createElement(Sr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?E.createElement(Bn,{values:r,maxWidth:e.maxWidth}):E.createElement(Xn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(ro,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,Eu(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(Xa,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(we,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(bo,{value:r});case V.Coding:return E.createElement(Rn,{value:r});case V.ContactDetail:return E.createElement(Hn,{value:r});case V.ContactPoint:return E.createElement(Pt,{value:r});case V.HumanName:return E.createElement(gt,{value:r});case V.Identifier:return E.createElement(Vn,{value:r});case V.Money:return E.createElement(Un,{value:r});case V.Period:return E.createElement(E.Fragment,null,Lu(r));case V.Quantity:case V.Duration:return E.createElement(Ko,{value:r});case V.Range:return E.createElement(bt,{value:r});case V.Ratio:return E.createElement(Wn,{value:r});case V.Reference:return E.createElement(ro,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,Ru(r));case V.Dosage:case V.UsageContext:return E.createElement(jo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return E.createElement(jo,{value:{type:Nu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Se(e,o){let t=Hu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function jo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Wu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?_o.createElement("div",null,t.name):_o.createElement(wn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(St.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Se(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:_o.createElement(On,{key:f,term:zu(f)},_o.createElement(ce,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):_o.createElement("div",null,r,"\xA0not implemented")}import{Stack as bc}from"@mantine/core";import{getPropertyDisplayName as Pf,globalSchema as Dc}from"@medplum/core";import ko,{useState as Tc}from"react";import{Group as Xu,Input as Qu}from"@mantine/core";import kt from"react";function Bt(e){return kt.createElement(Xu,{noWrap:!0},kt.createElement("div",null,e.children),kt.createElement("div",null,kt.createElement(Qu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ju}from"@mantine/core";import $u from"react";function me(e,o){return e?.issue?.filter(t=>Qn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function At(e,o){return e?.issue?.filter(t=>Qn(t.expression?.[0],o))}function Qn(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Pe(e){return $u.createElement(Ju.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{Button as Jn,Group as Ku,Stack as ju,TextInput as $n}from"@mantine/core";import{capitalize as _u,deepClone as Zu}from"@medplum/core";import ke,{useEffect as Yu,useState as Kn}from"react";function kb(e){let o=v(),t=X(e.defaultValue),[r,a]=Kn(),[n,f]=Kn();return Yu(()=>{t&&(f(Zu(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?ke.createElement("div",null,"Loading..."):ke.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},ke.createElement(ju,{mb:"xl"},ke.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},ke.createElement($n,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),ke.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},ke.createElement($n,{name:"id",defaultValue:n.id,disabled:!0}))),ke.createElement(Yo,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),ke.createElement(Ku,{position:"right",mt:"xl"},ke.createElement(Jn,{type:"submit"},"OK"),e.onDelete&&ke.createElement(Jn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function Zo(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",_u(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as xc,Group as Ic,NativeSelect as gc,Textarea as hc,TextInput as aa}from"@mantine/core";import{capitalize as Cc,getElementDefinitionTypeName as yc,PropertyType as L}from"@medplum/core";import U,{useState as vc}from"react";import ed,{useState as od}from"react";function jn(e){let[o,t]=od(e.defaultValue);function r(a){let n=rd(a);t(n),e.onChange&&e.onChange(n)}return ed.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&td(o),maxSelectedValues:1,onChange:r})}function td(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function rd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import ad,{useState as nd}from"react";function _n(e){let[o,t]=nd(e.defaultValue);function r(a){let n=a[0],f=n&&ld(n);t(f),e.onChange&&e.onChange(f)}return ad.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&fd(o),maxSelectedValues:1,onChange:r})}function fd(e){return{system:e.system,code:e.code,display:e.display}}function ld(e){return{system:e.system,code:e.code,display:e.display}}import{Group as cd,TextInput as md}from"@mantine/core";import jr,{useRef as pd,useState as xd}from"react";import{Group as sd,NativeSelect as Zn,TextInput as id}from"@mantine/core";import Ft,{useRef as ud,useState as dd}from"react";function Mt(e){let[o,t]=dd(e.defaultValue),r=ud();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return Ft.createElement(sd,{spacing:"xs",grow:!0,noWrap:!0},Ft.createElement(Zn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ft.createElement(Zn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ft.createElement(id,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Yn(e){let[o,t]=xd(e.defaultValue),r=pd();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return jr.createElement(cd,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(md,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),jr.createElement(Mt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Id}from"@mantine/core";import{isValidDate as ef}from"@medplum/core";import gd from"react";function Be(e){return gd.createElement(Id,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:yd(),defaultValue:hd(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Cd(t))}}})}function hd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Cd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toISOString():""}function yd(){return"datetime-local"}import{JsonInput as vd}from"@mantine/core";import{stringify as Sd}from"@medplum/core";import Pd from"react";function of(e){return Pd.createElement(vd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Sd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as bd,NativeSelect as Dd,TextInput as wt}from"@mantine/core";import Do,{useRef as Td,useState as kd}from"react";function tf(e){let[o,t]=kd(e.defaultValue),r=Td();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Do.createElement(bd,{spacing:"xs",grow:!0,noWrap:!0},Do.createElement(Dd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Do.createElement(wt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Do.createElement(wt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),Do.createElement(wt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),Do.createElement(wt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Bd,TextInput as rf}from"@mantine/core";import _r,{useState as Ad}from"react";function af(e){let[o,t]=Ad(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return _r.createElement(Bd,{spacing:"xs",grow:!0,noWrap:!0},_r.createElement(rf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),_r.createElement(rf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Fd,TextInput as Md}from"@mantine/core";import Zr,{useCallback as Yr,useState as wd}from"react";var Od=["USD","EUR","CAD","GBP","AUD"];function nf(e){let{onChange:o}=e,[t,r]=wd(e.defaultValue),a=Yr(s=>{r(s),o&&o(s)},[o]),n=Yr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Yr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Zr.createElement(Fd,{defaultValue:t?.currency,data:Od,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Zr.createElement(Md,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:Zr.createElement(Pr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Ed}from"@mantine/core";import ea,{useState as Ld}from"react";function ff(e){let[o,t]=Ld(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ea.createElement(Ed,{spacing:"xs",grow:!0,noWrap:!0},ea.createElement(Be,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),ea.createElement(Be,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Rd,NativeSelect as Nd,TextInput as lf}from"@mantine/core";import Ot,{useState as Hd}from"react";function be(e){let[o,t]=Hd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ot.createElement(Rd,{spacing:"xs",grow:!0,noWrap:!0},Ot.createElement(Nd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Ot.createElement(lf,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Vd(a.currentTarget.value)})}}),Ot.createElement(lf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Vd(e){if(e)return parseFloat(e)}import{Group as qd}from"@mantine/core";import oa,{useState as Ud}from"react";function et(e){let[o,t]=Ud(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(qd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(be,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),oa.createElement(be,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Gd}from"@mantine/core";import ta,{useState as zd}from"react";function sf(e){let[o,t]=zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Gd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(be,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ta.createElement(be,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Yd,NativeSelect as ec,TextInput as oc}from"@mantine/core";import{createReference as tc}from"@medplum/core";import Lt,{useRef as mf,useState as pf}from"react";import{Group as Wd,Text as uf}from"@mantine/core";import{getDisplayString as Xd,getReferenceString as cf}from"@medplum/core";import ao,{forwardRef as Qd,useCallback as df,useState as Jd}from"react";var $d={Observation:"code",User:"email:contains"},Kd=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function jd(e){return{value:cf(e),label:Xd(e),resource:e}}function Et(e){let o=v(),t=e.resourceType,[r,a]=Jd(),n=X(e.defaultValue,a),f=e.onChange,l=df(async(i,u)=>{let m=Zd(t),c=new URLSearchParams({[m]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=df(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:ao.createElement(yo,{name:e.name,itemComponent:_d,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:cf,toOption:jd,loadOptions:l,onChange:s,clearable:!0})}var _d=Qd(({label:e,resource:o,...t},r)=>ao.createElement("div",{ref:r,...t},ao.createElement(Wd,{noWrap:!0},ao.createElement(Ce,{value:o}),ao.createElement("div",null,ao.createElement(uf,null,e),ao.createElement(uf,{size:"xs",color:"dimmed"},o.birthDate)))));function Zd(e){return $d[e]??(Kd.includes(e)?"name":"_id")}function To(e){let o=rc(e.targetTypes),t=ac(e.defaultValue,o),[r,a]=pf(e.defaultValue),[n,f]=pf(t),l=mf();l.current=r;let s=mf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Lt.createElement(Yd,{spacing:"xs",grow:!0,noWrap:!0},o?Lt.createElement(ec,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Lt.createElement(oc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Lt.createElement(Et,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?tc(u):void 0)}}))}function rc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function ac(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as xf}from"@mantine/core";import pe,{useRef as nc,useState as fc}from"react";function If(e){let[o,t]=fc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=nc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return pe.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},pe.createElement("colgroup",null,pe.createElement("col",{width:"97%"}),pe.createElement("col",{width:"3%"})),pe.createElement("tbody",null,o.map((n,f)=>pe.createElement("tr",{key:`${f}-${o.length}`},pe.createElement("td",null,pe.createElement(Re,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},pe.createElement(Ue,null))))),pe.createElement("tr",null,pe.createElement("td",null),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},pe.createElement(co,null))))))}import{Button as Cf,Chip as gf,Group as Rt,Modal as lc,NativeSelect as sc,Stack as ic,Switch as uc,TextInput as dc}from"@mantine/core";import{formatTiming as cc}from"@medplum/core";import $,{useRef as yf,useState as ra}from"react";var mc=["sun","mon","tue","wed","thu","fri","sat"];function vf(e){let[o,t]=ra(e.defaultValue),[r,a]=ra(!1),n=yf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,cc(n.current)||"No repeat"),$.createElement(Cf,{onClick:()=>a(!0)},"Edit")),$.createElement(pc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var hf={repeat:{period:1,periodUnit:"d"}};function pc(e){let[o,t]=ra(e.defaultValue||hf),r=yf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return $.createElement(lc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(ic,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Be,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(uc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?hf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(dc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),$.createElement(sc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&$.createElement(Pe,{title:"Repeat on"},$.createElement(gf.Group,{multiple:!0,onChange:s},$.createElement(Rt,{position:"apart",mt:"md",spacing:"xs"},mc.map(i=>$.createElement(gf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Rt,{position:"right"},$.createElement(Cf,{onClick:()=>e.onOk(o)},"OK"))))}function Re(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===L.Attachment?U.createElement(Fn,{name:r,defaultValue:a,onChange:e.onChange}):U.createElement(If,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?U.createElement(Sc,{elementDefinitionTypes:n,...e}):U.createElement(Sf,{elementDefinitionType:n[0],...e})}function Sc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=vc(t);return U.createElement(Ic,{spacing:"xs",grow:!0,noWrap:!0},U.createElement(gc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),U.createElement(Sf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Cc(r.code)))}}))}function Sf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return U.createElement(aa,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.date:return U.createElement(aa,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.dateTime:case L.instant:return U.createElement(Be,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return U.createElement(aa,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return U.createElement(yt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return U.createElement(xc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return U.createElement(hc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return U.createElement(Ka,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return U.createElement(Za,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return U.createElement(vt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return U.createElement(jn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return U.createElement(_n,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return U.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return U.createElement(Mt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return U.createElement(of,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return U.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return U.createElement(af,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return U.createElement(nf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return U.createElement(ff,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return U.createElement(be,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return U.createElement(et,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return U.createElement(sf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return U.createElement(To,{name:r,defaultValue:a,targetTypes:Pc(o),onChange:e.onChange});case L.Timing:return U.createElement(vf,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return U.createElement(Yo,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return U.createElement(Yo,{typeName:yc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Pc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function Yo(e){let[o,t]=Tc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Dc.types[a];if(!n)return ko.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return ko.createElement(bc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||St.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,m]=Se(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?ko.createElement(Bt,{key:s,title:Pf(s),description:i.definition,htmlFor:s},ko.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,outcome:e.outcome,onChange:(h,P)=>{r(Zo(o,s,P??s,l[1],h))}})):ko.createElement(Pe,{key:s,title:Pf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},ko.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,onChange:(h,P)=>{r(Zo(o,s,P??s,l[1],h))}}))}))}import{Button as na,createStyles as kc,Group as bf}from"@mantine/core";import ee,{useMemo as Bc,useState as Ac}from"react";var Fc=kc(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function Mc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Df(e){let{classes:o}=Fc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Ac(fa);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Bc(()=>wc(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(bf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Mc(a)),ee.createElement(bf,{position:"right",spacing:"xs"},ee.createElement(na,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(na,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,l.map((s,i)=>ee.createElement("tr",{key:"week-"+i},s.map((u,m)=>ee.createElement("td",{key:"day-"+m},u&&ee.createElement(na,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function fa(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function wc(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:Oc(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function Oc(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as Ec,createStyles as Lc}from"@mantine/core";import Rc from"react";var Nc=Lc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Nc();return Rc.createElement(Ec,{className:r.root,...t},o)}import Qm from"react";import{ActionIcon as Gf,Center as Am,createStyles as Fm,Group as Mm,Loader as wm,Menu as Ne,ScrollArea as Om,TextInput as Em}from"@mantine/core";import{showNotification as Lm,updateNotification as ma}from"@mantine/notifications";import{getReferenceString as ot,normalizeErrorString as Rm}from"@medplum/core";import T,{useCallback as Vt,useEffect as Nm,useRef as zf,useState as Wf}from"react";import{createStyles as _c,Group as Ht,List as Bf,Stack as Af,Text as De,Title as Ff}from"@mantine/core";import{capitalize as Zc,formatCodeableConcept as Yc,formatDateTime as ia,formatObservationValue as em,isReference as om}from"@medplum/core";import g,{useEffect as tm,useState as rm}from"react";import{Blockquote as Hc,createStyles as Vc,Stack as qc}from"@mantine/core";import Tf from"react";var Uc=Vc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function la({value:e}){let{classes:o}=Uc();return e?Tf.createElement(qc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Tf.createElement(Hc,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Jc}from"@mantine/core";import sa from"react";import{Text as Gc}from"@mantine/core";import{getDisplayString as zc,isOk as Wc,normalizeErrorString as Xc}from"@medplum/core";import kf,{useState as Qc}from"react";function Oe(e){let{value:o,link:t,...r}=e,[a,n]=Qc(),f=X(o,n),l;if(a&&!Wc(a))l=`[${Xc(a)}]`;else if(f)l=zc(f);else return null;return t?kf.createElement(ne,{to:o,...r},l):kf.createElement(Gc,{component:"span",...r},l)}function Qe(e){return sa.createElement(Jc,{spacing:"xs"},sa.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),sa.createElement(Oe,{value:e.value,link:e.link}))}import{Badge as $c}from"@mantine/core";import Kc from"react";var jc={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Nt(e){return Kc.createElement($c,{color:jc[e.status]},e.status)}var Mf=_c(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));ua.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ua(e){let o=v(),t=X(e.value),[r,a]=rm();if(tm(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return g.createElement(Af,null,g.createElement(Ff,null,"Diagnostic Report"),g.createElement(am,{value:t}),!e.hideSpecimenInfo&&nm(r),t.result&&g.createElement(fm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&g.createElement(la,{value:n}))}function am({value:e}){return g.createElement(Ht,{mt:"md",spacing:30},e.subject&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),g.createElement(De,null,g.createElement(Qe,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>g.createElement("div",{key:o.reference},g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),g.createElement(De,null,g.createElement(Qe,{value:o,link:!0})))),e.performer?.map(o=>g.createElement("div",{key:o.reference},g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),g.createElement(De,null,g.createElement(Qe,{value:o,link:!0})))),e.issued&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),g.createElement(De,null,ia(e.issued))),e.status&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),g.createElement(De,null,Zc(e.status))))}function nm(e){return g.createElement(Af,{spacing:"xs"},g.createElement(Ff,{order:2,size:"h6"},"Specimens"),g.createElement(Bf,{type:"ordered"},e?.map(o=>g.createElement(Bf.Item,{ml:"sm",key:`specimen-${o.id}`},g.createElement(Ht,{spacing:20},g.createElement(Ht,{spacing:5},g.createElement(De,{fw:500},"Collected:")," ",ia(o.collection?.collectedDateTime)),g.createElement(Ht,{spacing:5},g.createElement(De,{fw:500},"Received:")," ",ia(o.receivedTime)))))))}function fm(e){let{classes:o}=Mf();return g.createElement("table",{className:o.table},g.createElement("thead",null,g.createElement("tr",null,g.createElement("th",null,"Test"),g.createElement("th",null,"Value"),g.createElement("th",null,"Reference Range"),g.createElement("th",null,"Interpretation"),g.createElement("th",null,"Category"),g.createElement("th",null,"Performer"),g.createElement("th",null,"Status"))),g.createElement("tbody",null,e.value?.map(t=>g.createElement(lm,{key:`obs-${om(t)?t.reference:t.id}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function lm(e){let{classes:o,cx:t}=Mf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=um(r);return g.createElement(g.Fragment,null,g.createElement("tr",{className:t({[o.criticalRow]:n})},g.createElement("td",{rowSpan:a?2:1},g.createElement(ne,{to:r},g.createElement(bo,{value:r.code}))),g.createElement("td",null,g.createElement(sm,{value:r})),g.createElement("td",null,g.createElement(im,{value:r.referenceRange})),g.createElement("td",null,r.interpretation&&r.interpretation.length>0&&g.createElement(bo,{value:r.interpretation[0]})),g.createElement("td",null,r.category&&r.category.length>0&&g.createElement("ul",null,r.category.map(f=>g.createElement("li",{key:`category-${Yc(f)}`},g.createElement(bo,{value:f}))))),g.createElement("td",null,r.performer?.map(f=>g.createElement(ro,{key:f.reference,value:f}))),g.createElement("td",null,r.status&&g.createElement(Nt,{status:r.status}))),a&&g.createElement("tr",null,g.createElement("td",{colSpan:6},g.createElement(la,{value:r.note}))))}function sm(e){let o=e.value;return g.createElement(g.Fragment,null,em(o))}function im(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?g.createElement(g.Fragment,null,o.text):g.createElement(bt,{value:o}):null}function um(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as dm,Paper as cm,useComponentDefaultProps as mm}from"@mantine/core";import pm from"react";var xm=dm((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),Im={shadow:"xs",radius:"md",withBorder:!0};function Bo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=mm("Panel",Im,e),{classes:l,cx:s}=xm({width:r,fill:a},{name:"Panel",unstyled:n});return pm.createElement(cm,{className:s(l.paper,o),...f},t)}import{createStyles as gm}from"@mantine/core";import{getPropertyDisplayName as hm,stringify as wf,toTypedValue as Of}from"@medplum/core";import le,{useEffect as Cm,useState as ym}from"react";var vm=gm(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Lf(e){let{classes:o}=vm(),t=v(),[r,a]=ym();if(Cm(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?le.createElement("table",{className:o.root},le.createElement("colgroup",null,le.createElement("col",{style:{width:"30%"}}),le.createElement("col",{style:{width:"35%"}}),le.createElement("col",{style:{width:"35%"}})),le.createElement("thead",null,le.createElement("tr",null,le.createElement("th",null,"Property"),le.createElement("th",null,"Before"),le.createElement("th",null,"After"))),le.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=Se(Of(e.original),l),[m,c]=Se(Of(e.revised),l);return Ef(i)&&Ef(m)||wf(i)===wf(m)?null:le.createElement("tr",{key:l},le.createElement("td",null,hm(l)),le.createElement("td",{className:o.removed},le.createElement(ce,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),le.createElement("td",{className:o.added},le.createElement(ce,{property:s,propertyType:c,value:m,ignoreMissingValues:!0})))}))):null}function Ef(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Sm,{useEffect as Pm,useState as bm}from"react";function da(e){let o=v(),t=X(e.value),[r,a]=bm();return Pm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Sm.createElement(jo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Dm,Group as Tm,Menu as Rf,Text as ca}from"@mantine/core";import{formatDateTime as km,getReferenceString as Bm}from"@medplum/core";import oe from"react";function Nf(e){return oe.createElement(Xe,null,e.children)}function Je(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return oe.createElement(Bo,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(Tm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ce,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(ca,{size:"sm"},oe.createElement(Oe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(ca,{size:"xs"},oe.createElement(ne,{color:"dimmed",to:e.resource},km(l)),oe.createElement(ca,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(ne,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Rf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Rf.Target,null,oe.createElement(Dm,{radius:"xl","aria-label":`Actions for ${Bm(e.resource)}`},oe.createElement(br,null))),a)),oe.createElement(Io,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function qf(e,o){e.sort((t,r)=>{let a=Hf(t,o),n=Hf(r,o);return a>n?1:a<n?-1:Vf(t,o)-Vf(r,o)})}function Hf(e,o){if(!Uf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Vf(e,o){if(!Uf(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Uf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Hm=Fm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function $e(e){let o=v(),t=qe(),r=o.getProfile(),a=zf(null),n=X(e.value),[f,l]=Wf(),[s,i]=Wf([]),u=e.loadTimelineResources,m=zf(s);m.current=s;let c=Vt(C=>{qf(C,n),C.reverse(),i(C)},[n]),h=Vt(C=>{let N=[];for(let Te of C){if(Te.status!=="fulfilled")continue;let he=Te.value;if(he.type==="history"&&l(he),he.entry)for(let Ye of he.entry)N.push(Ye.resource)}c(N)},[c]),P=Vt(C=>c([...m.current,C]),[c]),k=Vt(()=>{let C,N;"resourceType"in e.value?(C=e.value.resourceType,N=e.value.id):[C,N]=e.value.reference?.split("/"),u(o,C,N).then(h).catch(console.log)},[o,e.value,u,h]);Nm(()=>k(),[k]);function I(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(N=>P(N)).catch(console.log)}function b(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(N=>P(N)).then(()=>ma({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:T.createElement(Go,{size:16}),autoClose:2e3})).catch(N=>ma({id:"upload-notification",color:"red",title:"Upload error",message:Rm(N),icon:T.createElement(Tr,{size:16}),autoClose:2e3}))}function d(C,N){return o.updateResource({...C,priority:N})}function w(C){d(C,"stat").then(k).catch(console.log)}function y(C){d(C,"routine").then(k).catch(console.log)}function O(C){t(`/${C.resourceType}/${C.id}`)}function Ie(C){t(`/${C.resourceType}/${C.id}/edit`)}function ge(C){t(`/${C.resourceType}/${C.id}/delete`)}function ue(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function Y(){Lm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function No(C){ma({id:"upload-notification",loading:!0,title:"Uploading...",message:Xm(C),autoClose:!1,withCloseButton:!1})}return n?T.createElement(Nf,null,e.createCommunication&&T.createElement(Bo,null,T.createElement(J,{testid:"timeline-form",onSubmit:C=>{I(C.text);let N=a.current;N&&(N.value="",N.focus())}},T.createElement(Mm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},T.createElement(Ce,{value:r}),T.createElement(Em,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),T.createElement(Gf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},T.createElement(Mr,{size:16})),T.createElement(So,{onUpload:b,onUploadStart:Y,onUploadProgress:No},C=>T.createElement(Gf,{...C,radius:"xl",color:"blue",variant:"filled"},T.createElement(zo,{size:16})))))),s.map(C=>{if(!C)return null;let N=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return T.createElement(Vm,{key:N,history:f,resource:C,onDetails:ue});switch(C.resourceType){case"AuditEvent":return T.createElement(zm,{key:N,resource:C,onDetails:O});case"Communication":return T.createElement(Um,{key:N,resource:C,onPin:C.priority!=="stat"?w:void 0,onUnpin:C.priority==="stat"?y:void 0,onDetails:O,onEdit:Ie,onDelete:ge});case"DiagnosticReport":return T.createElement(Wm,{key:N,resource:C,onDetails:O,onEdit:Ie,onDelete:ge});case"Media":return T.createElement(Gm,{key:N,resource:C,onDetails:O,onEdit:Ie,onDelete:ge});default:return T.createElement(Je,{key:N,resource:C,padding:!0},T.createElement(da,{value:C,ignoreMissingValues:!0}))}})):T.createElement(Am,{style:{width:"100%",height:"100%"}},T.createElement(wm,null))}function Ao(e){return T.createElement(Ne.Dropdown,null,T.createElement(Ne.Label,null,"Resource"),e.onPin&&T.createElement(Ne.Item,{icon:T.createElement(wr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${ot(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(Ne.Item,{icon:T.createElement(Or,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${ot(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(Ne.Item,{icon:T.createElement(Ar,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${ot(e.resource)}`},"Details"),e.onEdit&&T.createElement(Ne.Item,{icon:T.createElement(Dr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${ot(e.resource)}`},"Edit"),e.onDelete&&T.createElement(T.Fragment,null,T.createElement(Ne.Divider,null),T.createElement(Ne.Label,null,"Danger zone"),T.createElement(Ne.Item,{color:"red",icon:T.createElement(Qo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${ot(e.resource)}`},"Delete")))}function Vm(e){let o=qm(e.history,e.resource);return o?T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(Lf,{original:o,revised:e.resource})):T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement("h3",null,"Created"),T.createElement(da,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function qm(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function Um(e){let{classes:o}=Hm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return T.createElement(Je,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:T.createElement(Ao,{...e})},T.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Gm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return T.createElement(Je,{resource:e.resource,padding:!!t,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(we,{value:e.resource.content}))}function zm(e){return T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(Om,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function Wm(e){return T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(ua,{value:e.resource}))}function Xm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${pa(e.loaded)} / ${pa(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${pa(e.loaded)}`}function pa(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function pB(e){return Qm.createElement($e,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import Xf from"react";function qt(e){let{children:o,...t}=e;return Xf.createElement(Xe,null,Xf.createElement(Bo,{...t},o))}import{createReference as Ut}from"@medplum/core";import Jm from"react";function TB(e){return Jm.createElement($e,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Ut(o),subject:o.subject,sender:Ut(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Ut(o),subject:o.subject,operator:Ut(t),issued:new Date().toISOString(),content:r})})}import{Button as ex,Loader as ox,Table as tx}from"@mantine/core";import{normalizeOperationOutcome as rx}from"@medplum/core";import te,{useEffect as Pl,useRef as bl,useState as Kt}from"react";import{evalFhirPath as $m}from"@medplum/core";import Km from"react";function Qf(e){let o;try{o=$m(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return Km.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Hp,Button as Oo,Center as Jt,createStyles as Vp,Group as $t,Loader as qp,Menu as yl,Pagination as Up,Table as Gp,Text as Pa,UnstyledButton as zp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as ka,formatSearchQuery as Wp,globalSchema as Xp}from"@medplum/core";import S,{useCallback as vl,useEffect as Sl,useRef as Qp,useState as ba}from"react";import{Box as jm,Button as _m,Modal as Zm,Text as Ym}from"@mantine/core";import Fo from"react";function $f(e){return Fo.createElement(Zm,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Fo.createElement(jm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Fo.createElement(Jf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Fo.createElement(Jf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Fo.createElement(Ym,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Jf(e){return Fo.createElement(_m,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as at,Modal as ip}from"@mantine/core";import{globalSchema as up,stringify as dp}from"@medplum/core";import Q,{useEffect as cp,useRef as il,useState as mp}from"react";import{capitalize as ep,DEFAULT_SEARCH_COUNT as op,evalFhirPathTyped as tp,formatDateTime as rp,Operator as M}from"@medplum/core";import Gt from"react";var ap={string:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],fulltext:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],token:[M.EQUALS,M.NOT],reference:[M.EQUALS,M.NOT],numeric:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],quantity:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],date:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY],datetime:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY]},np={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function tt(e,o){return{...e,filters:o,offset:0,name:void 0}}function GB(e){return tt(e,[])}function zt(e,o){return tt(e,(e.filters??[]).filter(t=>t.code!==o))}function Mo(e,o,t,r,a){a&&(e=zt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),tt(e,n)}function zB(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function jf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function _f(e,o){return xa(e,o,-1)}function Zf(e,o){return xa(e,o,0)}function Yf(e,o){return xa(e,o,1)}function xa(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),ga(e,o,r,a)}function el(e,o){return Ia(e,o,-1)}function ol(e,o){return Ia(e,o,0)}function tl(e,o){return Ia(e,o,1)}function Ia(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),ga(e,o,r,a)}function rl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),ga(e,o,t,new Date)}function ga(e,o,t,r){return e=zt(e,o),e=Kf(e,o,M.GREATER_THAN_OR_EQUALS,t),e=Kf(e,o,M.LESS_THAN_OR_EQUALS,r),e}function Kf(e,o,t,r){return Mo(e,o,t,r.toISOString())}function ha(e,o,t=!0){return Mo(e,o,M.MISSING,t.toString())}function fp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function al(e,o){let t=e.count??op,r=(o-1)*t;return fp(e,r)}function Ca(e,o,t){return o===nl(e)&&t!==void 0&&t===fl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function WB(e,o){let t=!1;return nl(e)===o&&(t=!fl(e)),Ca(e,o,t)}function nl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function fl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function ll(e){return ap[e.type]}function rt(e){return np[e]??""}function ye(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(ep).join(" "))}function sl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?rp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?lp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?sp(e,o.searchParams[0]):null}function lp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?Gt.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function sp(e,o){let t=tp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Gt.createElement(Gt.Fragment,null,t.map((r,a)=>Gt.createElement(ce,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function ul(e){let[o,t]=mp({search:JSON.parse(dp(e.search))}),r=il(null),a=il(null);cp(()=>{t({search:e.search})},[e.search]);function n(d){d.key==="Enter"&&i()}function f(){i()}function l(d){d.key==="Enter"&&u()}function s(){u()}function i(){let d=o.search.fields??[],w=r.current?.value;if(w){let y=[...d,w];t({search:{...o.search,fields:y}})}}function u(){let d=o.search.fields??[],w=a.current?.value;if(w){let y=[...d];y.splice(y.indexOf(w),1),t({search:{...o.search,fields:y}})}}function m(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let y=[...d],O=y.indexOf(w);O<=0||(h(y,O,O-1),t({search:{...o.search,fields:y}}))}function c(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let y=[...d],O=y.indexOf(w);O>=y.length-1||(h(y,O,O+1),t({search:{...o.search,fields:y}}))}function h(d,w,y){let O=d[w];d[w]=d[y],d[y]=O}if(!e.visible)return null;let P=e.search.resourceType,k=up.types[P],I=o.search.fields??[],b=pp(k).filter(d=>!I.includes(d)).sort((d,w)=>d.localeCompare(w));return Q.createElement(ip,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Q.createElement("div",null,Q.createElement("table",{style:{margin:"auto"}},Q.createElement("thead",null,Q.createElement("tr",null,Q.createElement("th",{colSpan:2,align:"center"},"Available"),Q.createElement("th",{colSpan:2,align:"center"},"Selected"))),Q.createElement("tbody",null,Q.createElement("tr",null,Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:d=>n(d),onDoubleClick:()=>f(),"data-testid":"available"},b.map(d=>Q.createElement("option",{key:d,value:d},ye(d))))),Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:d=>l(d),onDoubleClick:()=>s(),"data-testid":"selected"},I.map(d=>Q.createElement("option",{key:d,value:d},ye(d))))))),Q.createElement("tfoot",null,Q.createElement("tr",null,Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:i},"Add")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:u},"Remove")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:m},"Up")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:c},"Down")))))),Q.createElement(at,{onClick:()=>e.onOk(o.search)},"OK"))}function pp(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(ye(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ye(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ye(a)))}return o}import{Button as ft,Group as Sp,Modal as Pp,NativeSelect as cl}from"@mantine/core";import{globalSchema as bp,stringify as ml}from"@medplum/core";import R,{useEffect as Dp,useRef as xl,useState as va}from"react";import{formatDateTime as xp,getSearchParameterDetails as Ip,globalSchema as gp,Operator as dl,SearchParameterType as hp}from"@medplum/core";import nt from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=gp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===dl.EQUALS||t.operator===dl.NOT_EQUALS))return nt.createElement(Oe,{value:{reference:t.value}});let a=Ip(o,r);if(t.code==="_lastUpdated"||a.type===hp.DATETIME)return nt.createElement(nt.Fragment,null,xp(t.value))}return nt.createElement(nt.Fragment,null,t.value)}import{Checkbox as Cp,TextInput as ya}from"@mantine/core";import{getSearchParameterDetails as yp,SearchParameterType as wo}from"@medplum/core";import no from"react";function Xt(e){let o=yp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case wo.REFERENCE:return no.createElement(To,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case wo.BOOLEAN:return no.createElement(Cp,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case wo.DATE:return no.createElement(ya,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case wo.DATETIME:return no.createElement(Be,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case wo.NUMBER:return no.createElement(ya,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case wo.QUANTITY:return no.createElement(be,{name:t,defaultValue:vp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return no.createElement(ya,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function vp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Il(e){let[o,t]=va(JSON.parse(ml(e.search))),[r,a]=va(-1),n=xl(o);n.current=o,Dp(()=>{t(JSON.parse(ml(e.search)))},[e.search]);function f(u){t(Mo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=bp.types[l].searchParams??{},i=o.filters||[];return R.createElement(Pp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,m)=>m===r?R.createElement(pl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let h=[...i];h[m]=c,t(tt(n.current,h)),a(-1)},onCancel:()=>a(-1)}):R.createElement(Tp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(m),onDelete:()=>t(jf(n.current,m))})),R.createElement(pl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),R.createElement(Sp,{position:"right",mt:"xl"},R.createElement(ft,{onClick:()=>e.onOk(n.current)},"OK")))}function Tp(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ye(o.code)),R.createElement("td",null,rt(o.operator)),R.createElement("td",null,R.createElement(Wt,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function pl(e){let[o,t]=va(e.defaultValue??{}),r=xl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&ll(l);return R.createElement("tr",null,R.createElement("td",null,R.createElement(cl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ye(i)}))]})),R.createElement("td",null,s&&R.createElement(cl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:rt(i)}))]})),R.createElement("td",null,l&&o.operator&&R.createElement(Xt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(ft,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as kp,Grid as Sa,Modal as Bp}from"@mantine/core";import fo,{useState as Ap}from"react";function gl(e){let[o,t]=Ap(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return fo.createElement(Bp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},fo.createElement(J,{onSubmit:r},fo.createElement(Sa,null,fo.createElement(Sa.Col,{span:10},fo.createElement(Xt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),fo.createElement(Sa.Col,{span:2},fo.createElement(kp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as B}from"@mantine/core";import{Operator as se}from"@medplum/core";import p from"react";function hl(e){if(!e.searchParams)return null;function o(n,f){a(Ca(e.search,n.code,f))}function t(n){a(zt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?p.createElement(Fp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):p.createElement(B.Dropdown,null,e.searchParams.map(n=>p.createElement(B.Item,{key:n.code},ye(n.code))))}function Fp(e){switch(e.searchParam.type){case"date":return p.createElement(Mp,{...e});case"number":case"quantity":return p.createElement(wp,{...e});case"reference":return p.createElement(Op,{...e});case"string":case"token":case"uri":return p.createElement(Ep,{...e});default:return p.createElement(p.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Mp(e){let{searchParam:o}=e,t=o.code;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.ENDS_BEFORE)},"Before..."),p.createElement(B.Item,{icon:p.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.STARTS_AFTER)},"After..."),p.createElement(B.Item,{icon:p.createElement(Ir,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Between..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Yf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Zf(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(tl(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(ol(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(el(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Year to date"),p.createElement(Qt,{...e}))}function wp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN)},"Greater than..."),p.createElement(B.Item,{icon:p.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(B.Item,{icon:p.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN)},"Less than..."),p.createElement(B.Item,{icon:p.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement(Qt,{...e}))}function Op(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(Qt,{...e}))}function Ep(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(hr,{size:14}),onClick:()=>e.onPrompt(o,se.CONTAINS)},"Contains..."),p.createElement(B.Item,{icon:p.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Does not contain..."),p.createElement(Qt,{...e}))}function Qt(e){let{searchParam:o}=e,t=o.code;return p.createElement(p.Fragment,null,p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(pr,{size:14}),onClick:()=>e.onChange(ha(e.search,t))},"Missing"),p.createElement(B.Item,{icon:p.createElement(mr,{size:14}),onClick:()=>e.onChange(ha(e.search,t,!1))},"Not missing"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(qr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Lp,globalSchema as Rp}from"@medplum/core";function Cl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Np(o,r));return t}function Np(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=Rp.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Lp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Da=class extends Event{constructor(t){super("change");this.definition=t}},Ta=class extends Event{constructor(t){super("load");this.response=t}},lo=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Jp=Vp(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function $p(e){let{classes:o}=Jp(),t=v(),[r,a]=ba(!1),[n,f]=ba(),{search:l,onLoad:s}=e,[i,u]=ba({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),m=Qp(i);m.current=i;let c=l.total??"accurate",h=vl(D=>{f(void 0),t.search(l.resourceType,Wp({...l,total:c,fields:void 0}),D).then(W=>{u({...m.current,searchResponse:W}),s&&s(new Ta(W))}).catch(W=>{u({...m.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),P=vl(()=>{u({...m.current,searchResponse:void 0}),h({cache:"reload"})},[h]);Sl(()=>{h()},[h]);function k(D,W){D.stopPropagation();let ae=D.target.checked,de={...m.current.selected};ae?de[W]=!0:delete de[W],u({...m.current,selected:de})}function I(D){D.stopPropagation();let _=D.target.checked,ae={},de=m.current.searchResponse;_&&de?.entry&&de.entry.forEach(Ho=>{Ho.resource?.id&&(ae[Ho.resource.id]=!0)}),u({...m.current,selected:ae})}function b(){let D=m.current;if(!D.searchResponse?.entry||D.searchResponse.entry.length===0)return!1;for(let W of D.searchResponse.entry)if(W.resource?.id&&!D.selected[W.resource.id])return!1;return!0}function d(D){e.onChange&&e.onChange(new Da(D))}function w(D,W){if(ht(D.target)||D.button===2)return;H(D);let _=D.button===1||D.ctrlKey||D.metaKey;!_&&e.onClick&&e.onClick(new lo(W,D)),_&&e.onAuxClick&&e.onAuxClick(new lo(W,D))}function y(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Sl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Xp.types[e.search.resourceType]))return S.createElement(Jt,{style:{width:"100%",height:"100%"}},S.createElement(qp,null));let Ie=e.checkboxesEnabled,ge=Cl(l),ue=l.resourceType,Y=i.searchResponse,C=Y?.entry?.map(D=>D.resource),N="subtle",Te="gray",he=16,Ye=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement($t,{position:"apart",mb:"xl"},S.createElement($t,{spacing:2},S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(vr,{size:he}),onClick:()=>u({...m.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Br,{size:he}),onClick:()=>u({...m.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(kr,{size:he}),onClick:e.onNew},"New..."),!Ye&&y()&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Vr,{size:he}),onClick:e.onExport?e.onExport:()=>u({...m.current,exportDialogVisible:!0})},"Export..."),!Ye&&e.onDelete&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Qo,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Ye&&e.onBulk&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(xr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement($t,{spacing:2},Y&&S.createElement(Pa,{size:"xs",color:"dimmed"},Zp(l,Y.total),"-",Yp(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),S.createElement(Hp,{title:"Refresh",onClick:P},S.createElement(Lr,{size:"1.125rem"})))),S.createElement(Gp,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,Ie&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:b(),onChange:D=>I(D)})),ge.map(D=>S.createElement("th",{key:D.name},S.createElement(yl,{shadow:"md",width:240,position:"bottom-end"},S.createElement(yl.Target,null,S.createElement(zp,{className:o.control},S.createElement($t,{position:"apart",noWrap:!0},S.createElement(Pa,{weight:500,size:"sm"},ye(D.name)),S.createElement(Jt,{className:o.icon},S.createElement(cr,{size:14,stroke:1.5}))))),S.createElement(hl,{search:e.search,searchParams:D.searchParams,onPrompt:(W,_)=>{u({...m.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:_})},onChange:W=>{d(W)}}))))),!e.hideFilters&&S.createElement("tr",null,Ie&&S.createElement("th",null),ge.map(D=>S.createElement("th",{key:D.name},D.searchParams&&S.createElement(Kp,{resourceType:ue,searchParams:D.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,C?.map(D=>D&&S.createElement("tr",{key:D.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>w(W,D),onAuxClick:W=>w(W,D)},Ie&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${D.id}`,checked:!!i.selected[D.id],onChange:W=>k(W,D.id)})),ge.map(W=>S.createElement("td",{key:W.name},sl(D,W))))))),C?.length===0&&S.createElement(Xe,null,S.createElement(Jt,{style:{height:150}},S.createElement(Pa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&S.createElement(Jt,{m:"md",p:"md"},S.createElement(Up,{value:jp(l),total:_p(l,Y.total),onChange:D=>d(al(l,D)),getControlProps:D=>{switch(D){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(ul,{search:e.search,visible:m.current.fieldEditorVisible,onOk:D=>{d(D),u({...m.current,fieldEditorVisible:!1})},onCancel:()=>{u({...m.current,fieldEditorVisible:!1})}}),S.createElement(Il,{search:e.search,visible:m.current.filterEditorVisible,onOk:D=>{d(D),u({...m.current,filterEditorVisible:!1})},onCancel:()=>{u({...m.current,filterEditorVisible:!1})}}),S.createElement($f,{visible:m.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...m.current,exportDialogVisible:!1})}}),S.createElement(gl,{key:i.filterDialogSearchParam?.code,visible:m.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ye(i.filterDialogSearchParam.code):"",resourceType:ue,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:D=>{d(Mo(e.search,D.code,D.operator,D.value)),u({...m.current,filterDialogVisible:!1})},onCancel:()=>{u({...m.current,filterDialogVisible:!1})}}))}var eF=S.memo($p);function Kp(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},rt(t.operator),"\xA0",S.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function jp(e){return Math.floor((e.offset??0)/(e.count??ka))+1}function _p(e,o){let t=e.count??ka;return Math.ceil(o/t)}function Zp(e,o){return Math.min(o,(e.offset??0)+1)}function Yp(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??ka))}function ax(e){let o=v(),[t,r]=Kt(),[a,n]=Kt(),{query:f,fields:l}=e,[s,i]=Kt(),[u,m]=Kt({}),c=bl();c.current=s;let h=bl({});h.current=u,Pl(()=>{n(void 0),o.graphql(f).then(i).catch(y=>n(rx(y)))},[o,f]);function P(y,O){y.stopPropagation();let ge=y.target.checked,ue={...h.current};ge?ue[O]=!0:delete ue[O],m(ue)}function k(y){y.stopPropagation();let Ie=y.target.checked,ge={},ue=c.current?.data.ResourceList;Ie&&ue&&ue.forEach(Y=>{Y.id&&(ge[Y.id]=!0)}),m(ge)}function I(){let y=c.current?.data.ResourceList;if(!y||y.length===0)return!1;for(let O of y)if(O.id&&!h.current[O.id])return!1;return!0}function b(y,O){ht(y.target)||(H(y),y.button!==1&&e.onClick&&e.onClick(new lo(O,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new lo(O,y)))}if(Pl(()=>{o.requestSchema(e.resourceType).then(y=>{r({...y})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(ox,null);let w=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:y=>H(y),"data-testid":"search-control"},te.createElement(tx,null,te.createElement("thead",null,te.createElement("tr",null,w&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:I(),onChange:y=>k(y)})),l.map(y=>te.createElement("th",{key:y.name},y.name)))),te.createElement("tbody",null,s?.data.ResourceList.map(y=>y&&te.createElement("tr",{key:y.id,"data-testid":"search-control-row",onClick:O=>b(O,y),onAuxClick:O=>b(O,y)},w&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${y.id}`,checked:!!u[y.id],onChange:O=>P(O,y.id)})),l.map(O=>te.createElement("td",{key:O.name},te.createElement(Qf,{propertyType:O.propertyType,path:O.fhirPath,resource:y}))))))),s?.data.ResourceList.length===0&&te.createElement("div",{"data-testid":"empty-search"},"No results"),a&&te.createElement("div",{"data-testid":"search-error"},te.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&te.createElement(ex,{onClick:()=>e.onBulk(Object.keys(h.current))},"Bulk..."))}var dF=te.memo(ax);import so from"react";function Ke(e){return so.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},so.createElement("title",null,"Medplum Logo"),so.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),so.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),so.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),so.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),so.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as nx}from"@mantine/core";import Ba from"react";function Eo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Ba.createElement(nx,{icon:Ba.createElement(oo,{size:16}),color:"red"},o.map(t=>Ba.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as jt}from"@medplum/core";import fx,{useCallback as lx}from"react";function bF(e){let o=lx((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return fx.createElement($e,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:jt(t),sender:jt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:jt(t),operator:jt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Tl,Button as sx,createStyles as ix,NativeSelect as ux,Stack as dx,TextInput as Fa}from"@mantine/core";import{getReferenceString as cx}from"@medplum/core";import q,{useEffect as Dl,useRef as kl,useState as lt}from"react";var Bl=ix(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function UF(e){let o=v(),t=X(e.value),[r,a]=lt(void 0),[n,f]=lt(),[l,s]=lt(),[i,u]=lt();function m(){s(void 0)}function c(){f(void 0)}let h=kl();if(h.current=i,Dl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Dl(()=>(u(hx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",m),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function P(k,I){u({...h.current,[k]:I})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Fa,{label:"Plan Title",defaultValue:i.title,onChange:k=>P("title",k.currentTarget.value)}),q.createElement(Al,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:k=>P("action",k)}),q.createElement(sx,{type:"submit"},"Save")))}function Al(e){let{classes:o}=Bl(),t=kl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(mx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:f=>{H(f),a({id:Ml()})}},"Add action")))}function mx(e){let{classes:o,cx:t}=Bl(),{action:r}=e,a=gx(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?q.createElement(xx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(px,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ma={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function px(e){let{action:o,actionType:t}=e,[r,a]=Fl(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(ro,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(ce,{property:Ma,propertyType:a,value:r})))}function xx(e){let{action:o}=e,[t,r]=lt(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(dx,{spacing:"xl"},q.createElement(Fa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Fa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(ux,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&q.createElement(Al,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return q.createElement(_t,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(_t,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(_t,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(_t,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Pe,{title:"Timing",description:"When the action should take place."},q.createElement(Ix,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function _t(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(Et,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:cx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Ix(e){let o=e.action,t="timing",[r,a]=Fl(o);return q.createElement(Re,{property:Ma,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(Zo(o,t,f??t,Ma,n))}})}function gx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Fl(e){return Se({type:"PlanDefinitionAction",value:e},"timing")}var Aa=1;function Ml(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Aa=Math.max(Aa,o+1))}return e}return"id-"+Aa++}function hx(e){return{...e,action:wl(e.action)}}function wl(e){if(e)return e.map(o=>({...o,id:Ml(o.id),action:wl(o.action)}))}import{Anchor as je,Button as Vx,createStyles as qx,NativeSelect as Ux,Textarea as Gx,TextInput as Oa,Title as zx}from"@mantine/core";import{globalSchema as Wx,isResource as Xx}from"@medplum/core";import F,{useEffect as Ql,useRef as Qx,useState as Yt}from"react";import{Button as Lo,Checkbox as Ul,Group as Cx,NativeSelect as yx,Radio as Ll,Stack as vx,Stepper as Rl,Textarea as Sx,TextInput as st,Title as Px}from"@mantine/core";import{capitalize as Gl,createReference as bx,getExtension as Dx,getQuestionnaireAnswers as Tx,getReferenceString as zl,getTypedPropertyValue as io,globalSchema as kx,stringify as Nl,evalFhirPathTyped as Bx}from"@medplum/core";import A,{useEffect as Hl,useState as it}from"react";var Ol=(b=>(b.group="group",b.display="display",b.question="question",b.boolean="boolean",b.decimal="decimal",b.integer="integer",b.date="date",b.dateTime="dateTime",b.time="time",b.string="string",b.text="text",b.url="url",b.choice="choice",b.openChoice="open-choice",b.attachment="attachment",b.reference="reference",b.quantity="quantity",b))(Ol||{});function El(e){return e.type==="choice"||e.type==="open-choice"}function Wl(e){let o=v(),t=o.getProfile(),[r,a]=it(),n=X(e.questionnaire),[f,l]=it(),[s,i]=it({}),[u,m]=it(0),c=Nx(n?.item??[]),h=()=>m(I=>I>=c?I:I+1),P=()=>m(I=>I<=0?I:I-1);Hl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Hl(()=>{l(n?wx(n):void 0)},[n]);function k(I){let b={resourceType:"QuestionnaireResponse",item:I};l(b),i(Tx(b))}return!r||!n?null:A.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:zl(n),subject:e.subject,source:bx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&A.createElement(Px,null,n.title),n.item&&A.createElement(Xl,{items:n.item,answers:s,onChange:k,activePage:u,renderPages:c>0}),A.createElement(Cx,{position:"right",mt:"xl"},A.createElement(Mx,{activePage:u,numberOfPages:c,nextStep:h,prevStep:P,submitButtonText:e.submitButtonText})))}function Xl(e){let[o,t]=it(wa(e.items));function r(n,f){let l=o.slice();l[n]=f,t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?A.createElement(Rl.Step,{label:n.text,key:n.linkId},A.createElement(Vl,{key:n.linkId,item:n,index:f,answers:e.answers,setResponseItem:r})):A.createElement(Vl,{key:n.linkId,item:n,index:f,answers:e.answers,setResponseItem:r}));return e.renderPages?A.createElement(Rl,{active:e.activePage??0,allowNextStepsSelect:!1},a):A.createElement(vx,null,a)}function Vl(e){if(!Rx(e.item,e.answers))return null;if(e.item.type==="display")return A.createElement("p",{key:e.item.linkId},e.item.text);if(e.item.type==="group")return A.createElement(Zt,{key:e.item.linkId,item:e.item,answers:e.answers,onChange:o=>e.setResponseItem(e.index,o)});if(e.item.type==="boolean"){let o=e.item.initial&&e.item.initial.length>0?e.item.initial[0]:void 0;return A.createElement(Bt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},A.createElement(Ul,{id:e.item.linkId,name:e.item.linkId,defaultChecked:o?.valueBoolean,onChange:t=>e.setResponseItem(e.index,{linkId:e.item.linkId,text:e.item.text,answer:[{valueBoolean:t.currentTarget.checked}]})}))}return A.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},A.createElement(Zt,{item:e.item,answers:e.answers,onChange:o=>e.setResponseItem(e.index,o)}))}function Zt(e){let o=e.item,t=o.type;if(!t)return null;let r=o.linkId;if(!r)return null;let a=o.initial&&o.initial.length>0?o.initial[0]:void 0;function n(l){e.onChange({linkId:o.linkId,text:o.text,item:l})}function f(l){e.onChange({linkId:o.linkId,text:o.text,answer:[l]})}switch(t){case"group":return A.createElement("div",null,A.createElement("h3",null,o.text),o.item&&A.createElement(Xl,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return A.createElement(Ul,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return A.createElement(st,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return A.createElement(st,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return A.createElement(st,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return A.createElement(Be,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return A.createElement(st,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return A.createElement(st,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return A.createElement(Sx,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return A.createElement(vt,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return A.createElement(To,{name:r,targetTypes:Hx(o),defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return A.createElement(be,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return Lx(o)?A.createElement(Ax,{name:r,item:o,initial:a,onChangeAnswer:f}):A.createElement(Fx,{name:r,item:o,initial:a,onChangeAnswer:f});default:return null}}function Ax(e){let{name:o,item:t,initial:r}=e,a=io({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=io({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(ql(l))}return A.createElement(yx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=io({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Gl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:ql(a),data:n})}function ql(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Fx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=kx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=io({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],m=`${o}-option-${i}`,c=io({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Nl(c)===Nl(f)&&(s=m),l.push([m,c])}return A.createElement(Ll.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(m=>m[0]===i);if(u){let m=u[1],c="value"+Gl(m.type);a({[c]:m.value})}}},l.map(([i,u])=>A.createElement(Ll,{key:i,id:i,value:i,label:A.createElement(ce,{property:n,propertyType:u.type,value:u.value})})))}function Mx(e){return e.activePage===0&&e.numberOfPages<=0?A.createElement(Lo,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.prevStep},"Back"),A.createElement(Lo,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.nextStep},"Next")):A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.prevStep},"Back"),A.createElement(Lo,{onClick:e.nextStep},"Next"))}function wx(e){return{resourceType:"QuestionnaireResponse",questionnaire:zl(e),item:wa(e.item)}}function wa(e){return e?.map(Ox)??[]}function Ox(e){return{linkId:e.linkId,text:e.text,item:wa(e.item),answer:e.initial?.map(Ex)??[]}}function Ex(e){return{...e}}function Lx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Rx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=io({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),n=io({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),f,{operator:l}=r;if(l==="exists")f=!!a===n.value;else if(a===void 0)f=!1;else{let s=l==="="||l==="!="?l?.replace("=","~"):l,[{value:i}]=Bx(`%actualAnswer ${s} %expectedAnswer`,[a],{actualAnswer:a,expectedAnswer:n});f=i}if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Nx(e){return e.filter(t=>Dx(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function Hx(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}var Jx=qx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function vM(e){let o=v(),t=X(e.questionnaire),[r,a]=Yt(),[n,f]=Yt(),[l,s]=Yt(),[i,u]=Yt();function m(){u(void 0)}function c(){s(void 0)}return Ql(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Ql(()=>(f(jx(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",m),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",c)}),[t]),!r||!n?null:F.createElement("div",null,F.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},F.createElement(Jl,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),F.createElement(Vx,{type:"submit"},"Save")))}function Jl(e){let{classes:o,cx:t}=Jx(),r=e.item,a=e.item,n=Xx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Qx();u.current=e.item;function m(d){H(d),e.setSelectedKey(e.item.id)}function c(d){H(d),e.setHoverKey(e.item.id)}function h(d){let w=u.current;e.onChange({...w,item:w.item?.map(y=>y.id===d.id?d:y)})}function P(d){e.onChange({...e.item,item:[...e.item.item??[],d]})}function k(d){e.onChange({...e.item,item:e.item.item?.filter(w=>w!==d)})}function I(d,w){e.onChange({...u.current,[d]:w})}let b=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return F.createElement("div",{"data-testid":a.linkId,className:b,onClick:m,onMouseOver:c},F.createElement("div",{className:o.questionBody},s?F.createElement(F.Fragment,null,n&&F.createElement(Oa,{size:"xl",defaultValue:r.title,onChange:d=>I("title",d.currentTarget.value)}),!n&&F.createElement(Gx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:d=>I("text",d.currentTarget.value)}),a.type==="reference"&&F.createElement(Kx,{item:a,onChange:d=>I("extension",d)}),El(a)&&F.createElement($x,{options:a.answerOption,onChange:d=>I("answerOption",d)})):F.createElement(F.Fragment,null,r.title&&F.createElement(zx,null,r.title),a.text&&F.createElement("div",null,a.text),!f&&F.createElement(Zt,{item:a,answers:{},onChange:()=>{}}))),a.item?.map(d=>F.createElement("div",{key:d.id},F.createElement(Jl,{item:d,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:h,onRemove:()=>k(d)}))),!f&&F.createElement("div",{className:o.topActions},s?F.createElement(F.Fragment,null,F.createElement(Oa,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:d=>I("linkId",d.currentTarget.value)}),!f&&F.createElement(Ux,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:d=>I("type",d.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):F.createElement("div",null,l)),F.createElement("div",{className:o.bottomActions},f&&F.createElement(F.Fragment,null,F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P({id:_e(),linkId:Ra("q"),type:"string",text:"Question"})}},"Add item"),F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P({id:_e(),linkId:Ra("g"),type:"group",text:"Group"})}},"Add group")),n&&F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P(Zx())}},"Add Page"),s&&!n&&F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function $x(e){let o=Wx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return F.createElement("div",null,t.map(r=>{let[a,n]=Se({type:"QuestionnaireItemAnswerOption",value:r},"value");return F.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Re,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),F.createElement("div",null,F.createElement(je,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),F.createElement(je,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:_e()}])}},"Add choice"))}function Kx(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return F.createElement(F.Fragment,null,t.map(r=>F.createElement("div",{key:r.id},F.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Oa,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(s=>s.id===r.id),l=n[f].valueCodeableConcept?.coding?.[0]??[];l.display=a.target.value,l.code=a.target.value,e.onChange(n)}}))),F.createElement("div",null,F.createElement(je,{href:"#",onClick:a=>{H(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),F.createElement(je,{href:"#",onClick:r=>{H(r),e.onChange([...o,{id:_e(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Ea=1,La=1;function Ra(e){return e+Ea++}function _e(){return"id-"+La++}function jx(e){return{...e,id:e.id||_e(),item:$l(e.item)}}function $l(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(La=Math.max(La,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ea=Math.max(Ea,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||_e(),item:$l(o.item),answerOption:_x(o.answerOption)}))}function _x(e){if(e)return e.map(o=>({...o,id:o.id||_e()}))}function Zx(){return{id:_e(),linkId:Ra("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}import{ActionIcon as er,Button as Yx,createStyles as eI,Divider as oI,Group as ut,NativeSelect as Na,Stack as or,Text as tI,TextInput as rI}from"@mantine/core";import{formatRange as Kl,getCodeBySystem as aI}from"@medplum/core";import z,{useEffect as nI,useState as Ha}from"react";var fI=eI(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),lI=["gender","age","gestationalAge","context","appliesTo","category"],sI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function MM(e){e=Object.assign(sI,e);let o=e.definition,[t,r]=Ha([]),[a,n]=Ha(1),[f,l]=Ha(1);return nI(()=>{let P=dI(o,l);r(cI(P.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(or,null,t.map(P=>z.createElement(iI,{unit:pI(o.quantitativeDetails?.unit),onChange:m,onAdd:c,onRemove:h,onRemoveGroup:u,key:`group-${P.id}`,intervalGroup:P}))),z.createElement(er,{title:"Add Group",size:"sm",onClick:P=>{H(P),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},z.createElement(co,null)),z.createElement(ut,{position:"right"},z.createElement(Yx,{type:"submit"},"Save")));function s(){let P=t.flatMap(k=>k.intervals).filter(k=>!xI(k));e.onSubmit({...o,qualifiedInterval:P})}function i(P){r(k=>[...k,P])}function u(P){r(k=>k.filter(I=>I.id!==P.id))}function m(P,k){r(I=>{I=[...I];let b=I.find(w=>w.id===P),d=b?.intervals.findIndex(w=>w.id===k.id);return d!==void 0&&b?.intervals[d]&&(b.intervals[d]=k),I})}function c(P,k){k.id===void 0&&(k.id=`id-${f}`,l(I=>I+1)),r(I=>{I=[...I];let b=I.findIndex(d=>d.id===P);if(b!==-1){let d={...I[b]};k={...k,...d.filters},d.intervals=[...d.intervals,k],I[b]=d}return I})}function h(P,k){r(I=>{I=[...I];let b=I.find(d=>d.id===P);return b&&(b.intervals=b.intervals.filter(d=>d.id!==k.id)),I})}}function iI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=fI();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(or,{spacing:"lg"},z.createElement(ut,{position:"right"},z.createElement(er,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(Ue,null))),z.createElement(uI,{intervalGroup:o,onChange:e.onChange}),z.createElement(oI,null),o.intervals.map(a=>z.createElement(or,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ut,null,z.createElement(rI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(er,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(Ue,null))),z.createElement(et,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(er,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(co,null))))}function uI(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(or,{style:{maxWidth:"50%"}},z.createElement(ut,null,z.createElement(Na,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(ut,{spacing:"xs"},z.createElement(tI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(et,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Na,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement(Na,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function dI(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function cI(e,o){let t=1,r={};for(let a of e){let n=mI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(lI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function mI(e){return[`gender=${e.gender}`,`age=${Kl(e.age)}`,`gestationalAge=${Kl(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function pI(e){return e&&(aI(e,"http://unitsofmeasure.org")||e.text)}function xI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as jl,Grid as tr,Text as II}from"@mantine/core";import{formatDateTime as gI,getReferenceString as hI}from"@medplum/core";import xe,{useEffect as CI,useState as _l}from"react";function UM(e){let o=v(),t=X(e.value),[r,a]=_l(!1),[n,f]=_l();if(CI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(tr,null,t.action?.map((i,u)=>{let m=i.resource&&s(i.resource),c=m?.input?.[0]?.valueReference,h=m?.output?.[0]?.valueReference;return xe.createElement(xe.Fragment,{key:`action-${u}`},xe.createElement(tr.Col,{span:1,p:"md"},m?.status==="completed"?xe.createElement(Cr,null):xe.createElement(Nr,{color:"gray"})),xe.createElement(tr.Col,{span:9,p:"xs"},xe.createElement(II,{weight:500},i.title),i.description&&xe.createElement("div",null,i.description),xe.createElement("div",null,"Last edited by\xA0",xe.createElement(Oe,{value:m?.meta?.author}),"\xA0on\xA0",gI(m?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Nt,{status:m?.status||"unknown"}))),xe.createElement(tr.Col,{span:2,p:"md"},c&&!h&&xe.createElement(jl,{onClick:()=>e.onStart(m,c)},"Start"),c&&h&&xe.createElement(jl,{onClick:()=>e.onEdit(m,c,h)},"Edit")))}));function l(i){let u=[];if(i.action)for(let m of i.action)m.resource?.reference&&u.push({request:{method:"GET",url:m.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===hI(u.resource))return u.resource}}import{createStyles as TI}from"@mantine/core";import ve,{useEffect as kI,useState as BI}from"react";import{stringify as PI}from"@medplum/core";function rr(e,o){let t=yI(e,o);return vI(t,e,o)}function yI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,m=u+1,c=u-1,h=l[m],P=l[c],k,I=0;i===-s||i!==s&&P.i<h.i?(I=h.i,k=h):(I=P.i+1,k=P),l[c]=void 0;let b=I-i,d={i:I,j:b,prev:SI(k),snake:!1};for(;I<t&&b<r&&e[I]===o[b];)I++,b++;if(I>d.i&&(d={i:I,j:b,prev:d,snake:!0}),l[u]=d,I>=t&&b>=r)return l[u]}l[f+s-1]=void 0}}function vI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},m;i.lines.length===0&&u.lines.length>0?m="insert":i.lines.length>0&&u.lines.length===0?m="delete":m="change",r.push({original:i,revised:u,type:m}),a.snake&&(a=a.prev)}return r}function SI(e){return e&&!e.snake&&e.prev?e.prev:e}function Zl(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:PI(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return bI(t,o),DI(t),t}function bI(e,o){for(let t=1;t<o.length;t++){let r=rr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function DI(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var AI=TI(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function YM(e){let{classes:o}=AI(),t=v(),[r,a]=BI(e.history);if(kI(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ve.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Zl(r);return ve.createElement("div",{className:o.container},ve.createElement("table",{className:o.root},ve.createElement("tbody",null,f.map((l,s)=>ve.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&ve.createElement(ve.Fragment,null,ve.createElement("td",{className:o.author,rowSpan:l.span},ve.createElement(Qe,{value:l.meta.author,link:!0})),ve.createElement("td",{className:o.dateTime,rowSpan:l.span},ve.createElement(ne,{to:FI(n,l.meta.versionId)},MI(l.meta.lastUpdated)))),ve.createElement("td",{className:o.lineNumber},s+1),ve.createElement("td",{className:o.line},ve.createElement("pre",{className:o.pre},l.value)))))))}function FI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function MI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Ro(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Ro(r,"month");let a=Math.floor(o/86400);if(a>0)return Ro(a,"day");let n=Math.floor(o/3600);if(n>0)return Ro(n,"hour");let f=Math.floor(o/60);return f>0?Ro(f,"minute"):Ro(o,"second")}function Ro(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as wI}from"@mantine/core";import{stringify as Yl}from"@medplum/core";import Ze from"react";var OI=wI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function fw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Yl(o,!0).match(/[^\r\n]+/g),a=Yl(t,!0).match(/[^\r\n]+/g),n=rr(r,a);return Ze.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>Ze.createElement(EI,{key:"delta"+l,delta:f})))}function EI(e){let{classes:o}=OI();return Ze.createElement(Ze.Fragment,null,"...",Ze.createElement("br",null),e.delta.original.lines.length>0&&Ze.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
+ `)),e.delta.revised.lines.length>0&&Ze.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
+ `)),"...",Ze.createElement("br",null))}import{Table as LI}from"@mantine/core";import{formatDateTime as RI,normalizeErrorString as NI}from"@medplum/core";import ie,{useEffect as HI,useState as VI}from"react";function pw(e){let o=v(),[t,r]=VI(e.history);return HI(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ie.createElement(LI,{withBorder:!0,withColumnBorders:!0},ie.createElement("thead",null,ie.createElement("tr",null,ie.createElement("th",null,"Author"),ie.createElement("th",null,"Date"),ie.createElement("th",null,"Version"))),ie.createElement("tbody",null,t.entry?.map((a,n)=>ie.createElement(qI,{key:"entry-"+n,entry:a})))):ie.createElement("div",null,"Loading...")}function qI(e){let{response:o,resource:t}=e.entry;return t?ie.createElement("tr",null,ie.createElement("td",null,ie.createElement(Qe,{value:t.meta?.author,link:!0})),ie.createElement("td",null,RI(t.meta?.lastUpdated)),ie.createElement("td",null,ie.createElement(ne,{to:UI(t)},t.meta?.versionId))):ie.createElement("tr",null,ie.createElement("td",{colSpan:3},NI(o?.outcome)))}function UI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as GI,createStyles as zI,Stack as WI,Text as XI}from"@mantine/core";import{getReferenceString as QI}from"@medplum/core";import Z,{useEffect as JI,useRef as $I,useState as dt}from"react";var KI=zI(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function Dw(e){let{classes:o}=KI(),t=v(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=dt(),l=$I();l.current=n;let[s,i]=dt(fa()),[u,m]=dt(),[c,h]=dt(),[P,k]=dt();if(JI(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",QI(r)],["start","gt"+jI(s)],["start","lt"+_I(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let I=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},I&&Z.createElement(Ce,{value:I,size:"xl"}),I&&Z.createElement(XI,{size:"xl",weight:500},Z.createElement(Oe,{value:I})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),c&&Z.createElement("p",null,es(new Date(c.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(Df,{slots:n,onChangeMonth:i,onClick:m})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(WI,null,n.map(b=>{let d=new Date(b.start);return d.getTime()>u.getTime()&&d.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:b.id},Z.createElement(GI,{variant:"outline",style:{width:150},onClick:()=>h(b)},es(d)))}))),u&&c&&!P&&Z.createElement(Wl,{questionnaire:a,submitButtonText:"Next",onSubmit:k}),u&&c&&P&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function jI(e){return os(e.getTime())}function _I(e){return os(e.getTime()+31*24*60*60*1e3)}function os(e){return new Date(Math.max(Date.now(),e)).toISOString()}function es(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as ar}from"@medplum/core";import ZI from"react";function ww(e){return ZI.createElement($e,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[ar(o)],subject:o.subject,sender:ar(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[ar(o)],subject:o.subject,operator:ar(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as Cg}from"@medplum/core";import ur,{useEffect as yg,useState as is}from"react";import{Anchor as ts,Button as YI,Center as eg,Group as og,Stack as tg,Text as rg,TextInput as ag,Title as ng}from"@mantine/core";import{normalizeOperationOutcome as fg}from"@medplum/core";import Ae,{useState as lg}from"react";function nr(e){let o=v(),[t,r]=lg();return Ae.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(fg(n))}}},Ae.createElement(eg,{sx:{flexDirection:"column"}},Ae.createElement(Ke,{size:32}),Ae.createElement(ng,null,"Create project")),Ae.createElement(tg,{spacing:"xl"},Ae.createElement(ag,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Ae.createElement(rg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(ts,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(ts,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(og,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(YI,{type:"submit"},"Create project")))}import{Anchor as ir,Button as dg,Center as cg,Checkbox as mg,Divider as pg,Group as ns,PasswordInput as xg,Stack as Ig,Text as fs,TextInput as qa}from"@mantine/core";import{normalizeOperationOutcome as ls}from"@medplum/core";import j,{useEffect as gg,useState as hg}from"react";import sg,{useEffect as ig,useRef as ug,useState as Va}from"react";function fr(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function lr(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=ug(null),[n,f]=Va(typeof google<"u"),[l,s]=Va(!1),[i,u]=Va(!1);return ig(()=>{if(typeof google>"u"){fr("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?sg.createElement("div",{ref:a}):null}function sr(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function rs(e){typeof grecaptcha>"u"&&fr("https://www.google.com/recaptcha/api.js?render="+e)}function as(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function ss(e){let o=sr(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=hg(),f=At(a,void 0);return gg(()=>{t&&rs(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await as(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(ls(s))}}},j.createElement(cg,{sx:{flexDirection:"column"}},e.children),j.createElement(Eo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ns,{position:"center",p:"xl",style:{height:70}},j.createElement(lr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(ls(s))}}})),j.createElement(pg,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(Ig,{spacing:"xl"},j.createElement(qa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),j.createElement(qa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),j.createElement(qa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),j.createElement(xg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(fs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(ir,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ir,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(fs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(ir,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ir,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ns,{position:"apart",mt:"xl",noWrap:!0},j.createElement(mg,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(dg,{type:"submit"},"Create account")))}function xO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=v(),[s,i]=is(void 0),[u,m]=is();yg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(h=>l.processCode(h.code)).then(()=>f()).catch(h=>m(Cg(h)))},[l,o,t,s,f]);function c(h){h.code?l.processCode(h.code).then(()=>f()).catch(console.log):h.login&&i(h.login)}return ur.createElement(qt,{width:450},u&&ur.createElement("pre",null,JSON.stringify(u,null,2)),!s&&ur.createElement(ss,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&ur.createElement(nr,{login:s,handleAuthResponse:c}))}import{showNotification as vs}from"@mantine/notifications";import{normalizeErrorString as Ss}from"@medplum/core";import uo,{useCallback as Ga,useEffect as jg,useState as za}from"react";import{Anchor as us,Button as ds,Center as cs,Checkbox as vg,Divider as Sg,Group as Ua,PasswordInput as Pg,Stack as bg,TextInput as Dg}from"@mantine/core";import{normalizeOperationOutcome as Tg}from"@medplum/core";import K,{useCallback as dr,useState as ms}from"react";function ps(e){let[o,t]=ms();return o?K.createElement(Bg,{email:o,...e}):K.createElement(kg,{setEmail:t,...e})}function kg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=v(),s=!e.disableGoogleAuth&&sr(e.googleClientId),i=dr(async c=>{if(!c.authorizeUrl)return!1;let h=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),P=new URL(c.authorizeUrl);return P.searchParams.set("state",h),window.location.assign(P.toString()),!0},[l,f]),u=dr(async c=>{let h=await l.post("auth/method",{email:c.email});await i(h)||o(c.email)},[l,i,o]),m=dr(async c=>{let h=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(h)||r(h)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(cs,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Ua,{position:"center",p:"xl",style:{height:70}},K.createElement(lr,{googleClientId:s,handleGoogleCredential:m})),!n&&K.createElement(Sg,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Dg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Ua,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(us,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(ds,{type:"submit"},"Next")))}function Bg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,l]=ms(),s=At(f,void 0),i=dr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(m=>l(Tg(m)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(cs,{sx:{flexDirection:"column"}},r),K.createElement(Eo,{issues:s}),K.createElement(bg,{spacing:"xl"},K.createElement(Pg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(Ua,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(us,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(vg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ds,{type:"submit"},"Sign in")))}import{Avatar as Ag,Center as Fg,Group as Mg,Stack as wg,Text as xs,Title as Og,UnstyledButton as Eg}from"@mantine/core";import{normalizeOperationOutcome as Lg}from"@medplum/core";import Fe,{useState as Rg}from"react";function Is(e){let o=v(),[t,r]=Rg();return Fe.createElement(wg,null,Fe.createElement(Fg,{sx:{flexDirection:"column"}},Fe.createElement(Ke,{size:32}),Fe.createElement(Og,{order:3},"Choose profile")),Fe.createElement(Eo,{outcome:t}),e.memberships.map(a=>Fe.createElement(Eg,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Lg(n)))}},Fe.createElement(Mg,null,Fe.createElement(Ag,{radius:"xl"}),Fe.createElement("div",{style:{flex:1}},Fe.createElement(xs,{size:"sm",weight:500},a.profile?.display),Fe.createElement(xs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Ng,Center as Hg,Checkbox as Vg,Group as qg,Stack as gs,Title as Ug}from"@mantine/core";import He from"react";function hs(e){let o=v();return He.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},He.createElement(gs,null,He.createElement(Hg,{sx:{flexDirection:"column"}},He.createElement(Ke,{size:32}),He.createElement(Ug,null,"Choose scope")),He.createElement(gs,null,(e.scope??"openid").split(" ").map(t=>He.createElement(Vg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),He.createElement(qg,{position:"right",mt:"xl"},He.createElement(Ng,{type:"submit"},"Set scope"))))}import{Alert as Gg,Button as zg,Center as Wg,Group as Xg,Stack as Cs,TextInput as Qg,Title as Jg}from"@mantine/core";import{normalizeErrorString as $g}from"@medplum/core";import Me,{useState as Kg}from"react";function ys(e){let o=v(),[t,r]=Kg(void 0);return Me.createElement(J,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r($g(n)))}},Me.createElement(Cs,null,Me.createElement(Wg,{sx:{flexDirection:"column"}},Me.createElement(Ke,{size:32}),Me.createElement(Jg,null,"Enter MFA code")),t&&Me.createElement(Gg,{icon:Me.createElement(oo,{size:16}),title:"Error",color:"red"},t),Me.createElement(Cs,null,Me.createElement(Qg,{name:"token",label:"MFA code",required:!0})),Me.createElement(Xg,{position:"right",mt:"xl"},Me.createElement(zg,{type:"submit"},"Submit code"))))}function d0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=v(),[i,u]=za(void 0),[m,c]=za(!1),[h,P]=za(void 0),k=Ga(d=>{f?f(d):s.processCode(d).then(()=>{r&&r()}).catch(w=>vs({color:"red",message:Ss(w)}))},[s,f,r]),I=Ga(d=>{c(!!d.mfaRequired),d.login&&u(d.login),d.memberships&&P(d.memberships),d.code&&(t?P(void 0):k(d.code))},[t,k]),b=Ga(d=>{k(d.code)},[k]);return jg(()=>{o&&!i&&s.get("auth/login/"+o).then(I).catch(d=>vs({color:"red",message:Ss(d)}))},[s,o,i,I]),uo.createElement(qt,{width:450},(()=>i?m?uo.createElement(ys,{login:i,handleAuthResponse:I}):h?uo.createElement(Is,{login:i,memberships:h,handleAuthResponse:I}):e.projectId==="new"?uo.createElement(nr,{login:i,handleAuthResponse:I}):e.chooseScopes?uo.createElement(hs,{login:i,scope:e.scope,handleAuthResponse:b}):uo.createElement("div",null,"Success"):uo.createElement(ps,{onForgotPassword:a,onRegister:n,handleAuthResponse:I,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Xa as AddressDisplay,Ka as AddressInput,Za as AnnotationInput,AS as AppShell,yo as AsyncAutocomplete,Bn as AttachmentArrayDisplay,Fn as AttachmentArrayInput,So as AttachmentButton,we as AttachmentDisplay,vt as AttachmentInput,jo as BackboneElementDisplay,Yo as BackboneElementInput,Df as CalendarInput,Bt as CheckboxFormSection,yt as CodeInput,bo as CodeableConceptDisplay,jn as CodeableConceptInput,Rn as CodingDisplay,_n as CodingInput,Hn as ContactDetailDisplay,Yn as ContactDetailInput,Pt as ContactPointDisplay,Mt as ContactPointInput,Xe as Container,Be as DateTimeInput,pB as DefaultResourceTimeline,wn as DescriptionList,On as DescriptionListEntry,ua as DiagnosticReportDisplay,qt as Document,Sc as ElementDefinitionInputSelector,Sf as ElementDefinitionTypeInput,TB as EncounterTimeline,Io as ErrorBoundary,ax as FhirPathTable,J as Form,Pe as FormSection,Sn as Header,gt as HumanNameDisplay,tf as HumanNameInput,Vn as IdentifierDisplay,af as IdentifierInput,Gr as Loading,Ke as Logo,ne as MedplumLink,nh as MedplumProvider,dF as MemoizedFhirPathTable,eF as MemoizedSearchControl,Un as MoneyDisplay,nf as MoneyInput,kn as Navbar,fm as ObservationTable,Eo as OperationOutcomeAlert,Bo as Panel,bF as PatientTimeline,UF as PlanDefinitionBuilder,Ko as QuantityDisplay,be as QuantityInput,vM as QuestionnaireBuilder,Wl as QuestionnaireForm,Zt as QuestionnaireFormItem,Ol as QuestionnaireItemType,bt as RangeDisplay,et as RangeInput,ro as ReferenceDisplay,To as ReferenceInput,MM as ReferenceRangeEditor,iI as ReferenceRangeGroupEditor,xO as RegisterForm,UM as RequestGroupDisplay,Xn as ResourceArrayDisplay,If as ResourceArrayInput,Ce as ResourceAvatar,Qe as ResourceBadge,YM as ResourceBlame,fw as ResourceDiff,kb as ResourceForm,pw as ResourceHistoryTable,Et as ResourceInput,Oe as ResourceName,ce as ResourcePropertyDisplay,Re as ResourcePropertyInput,da as ResourceTable,$e as ResourceTimeline,Dw as Scheduler,Da as SearchChangeEvent,lo as SearchClickEvent,$p as SearchControl,ul as SearchFieldEditor,Il as SearchFilterEditor,Ta as SearchLoadEvent,ww as ServiceRequestTimeline,d0 as SignInForm,Nt as StatusBadge,Nf as Timeline,Je as TimelineItem,vf as TimingInput,ga as addDateFilterBetween,zB as addField,Mo as addFilter,el as addLastMonthFilter,ha as addMissingFilter,tl as addNextMonthFilter,ol as addThisMonthFilter,Zf as addTodayFilter,Yf as addTomorrowFilter,rl as addYearToDateFilter,_f as addYesterdayFilter,ye as buildFieldNameString,GB as clearFilters,zt as clearFiltersOnField,hd as convertIsoToLocal,Cd as convertLocalToIso,fr as createScriptTag,jf as deleteFilter,me as getErrorsForInput,At as getIssuesForExpression,Mc as getMonthString,rt as getOpString,as as getRecaptcha,ll as getSearchOperators,nl as getSortField,fa as getStartMonth,MI as getTimeString,Se as getValueAndType,rs as initRecaptcha,El as isChoiceQuestion,Rx as isQuestionEnabled,fl as isSortDescending,Pn as parseForm,sl as renderValue,tt as setFilters,fp as setOffset,al as setPage,Zo as setPropertyValue,Ca as setSort,qf as sortByDateAndPriority,WB as toggleSort,v as useMedplum,Uo as useMedplumContext,qe as useMedplumNavigate,mt as useMedplumProfile,X as useResource};
68
68
  //# sourceMappingURL=index.mjs.map